ng-cw-v12
Version:
Angular UI component library
792 lines • 187 kB
JavaScript
import { Component, Input } from '@angular/core';
import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
import { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment';
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min';
import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader.js';
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
import * as i0 from "@angular/core";
import * as i1 from "./local.service";
import * as i2 from "@angular/common";
export class ObjViewerComponent {
constructor(eleRef, ls) {
this.eleRef = eleRef;
this.ls = ls;
this.tipsMode = false;
this.controlMode = false;
this.alphaMode = false;
this.parametersOk = true;
this.objInfo = {
objUrl: '',
mtlUrl: '',
};
this.showLoading = false;
this.loadingText = '';
this.loadingText2 = '';
this.domId = '#objViewer';
this.cameraPlacement = 'default';
this.bgUrl = '';
this.size = 0;
this.state = {
toneMapping: THREE.LinearToneMapping,
toneMappingExposure: 0,
background: false,
backgroundColor: '#191919',
useBgUrl: false,
useBgSphere: false,
axesHelper: false,
wireframe: false,
autoRotate: false,
autoRotateSpeed: 0.5,
ambientLight: true,
ambientLightColor: '#FFFFFF',
ambientLightIntensity: 2,
directionalLight: true,
directionalLightColor: '#FFFFFF',
directionalLightIntensity: 2,
directionalLightPosition: {
x: 0,
y: 0,
z: 0
},
directionalLightHelper: false,
directionalLight2: true,
directionalLightColor2: '#FFFFFF',
directionalLightIntensity2: 2,
directionalLightPosition2: {
x: 0,
y: 0,
z: 0
},
directionalLightHelper2: false,
pointLight: false,
pointLightColor: '#FFFFFF',
pointLightIntensity: 1,
pointLightDistance: 0,
pointLightDecay: 0.1,
pointLightPosition: {
x: 0,
y: 0,
z: 0
},
pointLightHelper: false
};
}
//模型地址
set ncObjInfo(value) {
this.objInfo = value;
setTimeout(() => {
//加延迟,防止其他传入参数未获取到
if (this.scene) {
this.updateModel();
}
});
}
//摄像机初始方位default,left,right,top,bottom,back,front
set ncCameraPlacement(value) {
this.cameraPlacement = value;
if (this.scene) {
this.setCameraPlacement();
}
}
;
//是否启用背景
set ncBg(value) {
this.state.background = value !== null && value !== undefined && value !== false && value !== 'false';
if (this.scene) {
this.updateBackground();
}
}
//背景色值
set ncBgColor(value) {
this.state.backgroundColor = value;
if (this.scene) {
this.updateBackground();
}
}
//背景图片URL
set ncBgUrl(value) {
this.bgUrl = value;
this.state.useBgUrl = value ? true : false; //传了值,默认启用背景图
this.state.useBgSphere = value ? true : false; //传了值,默认启用背景球
if (this.scene) {
this.updateBackground();
}
}
//操作提示
set ncTips(value) {
this.tipsMode = value !== null && value !== undefined && value !== false && value !== 'false';
}
//控制面板
set ncControl(value) {
this.controlMode = value !== null && value !== undefined && value !== false && value !== 'false';
}
//背景是否透明
set ncAlpha(value) {
this.alphaMode = value !== null && value !== undefined && value !== false && value !== 'false';
}
//自动旋转
set ncAutoRotate(value) {
this.state.autoRotate = value !== null && value !== undefined && value !== false && value !== 'false';
if (this.scene) {
this.toggleAutoRotate();
}
}
//自动旋转速度
set ncAutoRotateSpeed(value) {
this.state.autoRotateSpeed = value;
if (this.scene) {
this.toggleAutoRotate();
}
}
ngOnInit() {
if (this.objInfo.objUrl == '') {
this.parametersOk = false;
console.error('objUrl为空');
}
if (this.objInfo.mtlUrl == '') {
this.parametersOk = false;
console.error('mtlUrl为空');
}
if (!this.parametersOk) {
return;
}
this.onWindowResize = this.onWindowResize.bind(this);
this.animate = this.animate.bind(this);
if (this.ls.isBrowser) {
window.addEventListener('resize', this.onWindowResize);
}
setTimeout(() => {
this.init();
}, 20);
}
ngOnDestroy() {
if (this.ls.isBrowser) {
window.removeEventListener('resize', this.onWindowResize);
}
this.webglLoseContext();
}
init() {
if (!this.parametersOk) {
return;
}
let objArea = this.eleRef.nativeElement.querySelector(this.domId);
this.domWidth = objArea.offsetWidth;
this.domHeight = objArea.offsetHeight;
this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: this.alphaMode });
this.renderer.setPixelRatio(objArea.devicePixelRatio);
this.renderer.setSize(this.domWidth, this.domHeight);
this.renderer.outputColorSpace = THREE.SRGBColorSpace;
objArea.appendChild(this.renderer.domElement);
this.scene = new THREE.Scene();
const environment = new RoomEnvironment();
const pmremGenerator = new THREE.PMREMGenerator(this.renderer);
this.scene.environment = pmremGenerator.fromScene(environment).texture;
this.updateModel();
requestAnimationFrame(this.animate);
}
render() {
this.renderer.render(this.scene, this.camera);
}
animate() {
requestAnimationFrame(this.animate);
// required if controls.enableDamping or controls.autoRotate are set to true
if (this.controls) {
this.controls.update();
}
if (this.scene && this.camera) {
this.render();
}
}
onWindowResize() {
setTimeout(() => {
let objArea = this.eleRef.nativeElement.querySelector(this.domId);
const width = objArea.offsetWidth;
const height = objArea.offsetHeight;
this.renderer.setPixelRatio(objArea.devicePixelRatio);
this.renderer.setSize(width, height);
this.render();
});
}
//更新模型
updateModel() {
this.showLoading = true;
this.loadingText = '模型加载中...';
this.loadingText2 = '';
if (this.objScene) {
this.scene.remove(this.objScene);
this.objScene = null;
}
let baseUrl = this.objInfo.objUrl.split('/').slice(0, -1).join('/');
// 创建新的LoadingManager来重置进度计数
const manager = new THREE.LoadingManager();
manager.onProgress = (url, loaded, total) => {
this.loadingText = `正在加载资源(${loaded}/${total})`;
if (loaded == total) {
this.showLoading = false;
}
};
new MTLLoader(manager).load(this.objInfo.mtlUrl, (MaterialCreator) => {
// 在preload()之前先处理材质信息,如果有贴图,则替换为obj同目录下的图片
for (let name in MaterialCreator.materialsInfo) {
let materialInfo = MaterialCreator.materialsInfo[name];
// 需要处理的贴图类型
const mapTypes = [
'map_kd',
'map_ks',
'map_ka',
'map_d',
'map_bump',
'bump',
'disp',
'decal' // 贴花贴图
];
mapTypes.map((type) => {
if (materialInfo.hasOwnProperty(type)) {
let map_type_url = materialInfo[type];
let map_type_name = map_type_url.split(/[\/\\]/).pop();
materialInfo[type] = baseUrl + '/' + map_type_name;
}
});
}
MaterialCreator.preload();
new OBJLoader(manager).setMaterials(MaterialCreator).load(this.objInfo.objUrl, (object) => {
this.objScene = object;
const box = new THREE.Box3().setFromObject(this.objScene);
this.size = box.getSize(new THREE.Vector3()).length();
this.center = box.getCenter(new THREE.Vector3());
//将坐标系原点设置在模型中心
this.objScene.position.x -= this.center.x;
this.objScene.position.y -= this.center.y;
this.objScene.position.z -= this.center.z;
//PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )
// fov — 摄像机视锥体垂直视野角度,眼睛张开的角度,0闭眼
// aspect — 摄像机视锥体长宽比
// near — 摄像机视锥体近端面,能看到的最近垂直距离
// far — 摄像机视锥体远端面,能看到的最远垂直距离
this.camera = new THREE.PerspectiveCamera(50, this.domWidth / this.domHeight, this.size / 100, this.size * 100);
this.camera.updateProjectionMatrix();
//position-摄像机位置
//lookAt-摄像机望向位置
this.setCameraPlacement();
//controls
this.controls = new OrbitControls(this.camera, this.renderer.domElement);
//根据模型size初始化state部分参数
this.state.directionalLightPosition.x = this.size;
this.state.directionalLightPosition.y = this.size / 2;
this.state.directionalLightPosition.z = this.size;
this.state.directionalLightPosition2.x = -this.size;
this.state.directionalLightPosition2.y = -this.size / 2;
this.state.directionalLightPosition2.z = -this.size;
this.state.pointLightPosition.x = this.size / 2;
this.state.pointLightPosition.y = 0;
this.state.pointLightPosition.z = 0;
this.state.pointLightDistance = this.size;
//添加默认光源(添加至camera,光源固定位置,不随场景旋转)
// this.scene.add(this.camera);
// let defaultLight = new THREE.DirectionalLight('#FFFFFF', 1.5);
// defaultLight.position.set(0, 0, this.size / 2);
// this.camera.add(defaultLight);
//添加GUI控制面板
if (this.controlMode) {
this.addGUI();
}
else {
if (this.gui) {
this.gui.destroy();
this.gui = null;
}
}
//根据state参数初始化相关设置
this.updateToneMapping();
this.updateToneMappingExposure();
this.updateBackground();
this.toggleAxesHelper();
this.toggleWireframe();
this.toggleAutoRotate();
this.toggleAmbientLight();
// this.updateAmbientLight();
this.toggleDirectionalLight();
// this.updateDirectionalLight();
this.toggleDirectionalLightHelper();
this.toggleDirectionalLight2();
// this.updateDirectionalLight2();
this.toggleDirectionalLightHelper2();
this.togglePointLight();
// this.updatePointLight();
this.togglePointLightHelper();
this.scene.add(this.objScene);
}, xhr => {
if (xhr.loaded != xhr.total) {
this.loadingText2 = '模型下载 ' + (xhr.loaded / xhr.total * 100).toFixed(0) + ' %';
}
else {
this.loadingText2 = '';
}
});
});
}
//设置相机角度和望向位置
setCameraPlacement() {
switch (this.cameraPlacement) {
case 'left': //x-红
this.camera.position.set(-this.size, 0, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'right': //x-红
this.camera.position.set(this.size, 0, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'top': //y-绿
this.camera.position.set(0, this.size, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'bottom': //y-绿
this.camera.position.set(0, -this.size, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'front': //z-蓝
this.camera.position.set(0, 0, this.size);
this.camera.lookAt(0, 0, 0);
break;
case 'back': //z-蓝
this.camera.position.set(0, 0, -this.size);
this.camera.lookAt(0, 0, 0);
break;
default:
this.camera.position.set(this.size / 1.3, this.size / 1.5, this.size / 1.3);
this.camera.lookAt(0, 0, 0);
break;
}
}
//add GUI
addGUI() {
//折叠参数
let closeState = {
gui: false,
displayFolder: false,
ambientLightFolder: true,
directionalLightFolder: true,
directionalLightHelperFolder: false,
directionalLightFolder2: true,
directionalLightHelperFolder2: false,
pointLightFolder: true,
pointlLightHelperFolder: false
};
if (this.gui) {
//记录上个gui的面板折叠值
closeState = {
gui: this.gui._closed,
displayFolder: this.gui.children[0]._closed,
ambientLightFolder: this.gui.children[1]._closed,
directionalLightFolder: this.gui.children[2]._closed,
directionalLightHelperFolder: this.gui.children[2].children[3]._closed,
directionalLightFolder2: this.gui.children[3]._closed,
directionalLightHelperFolder2: this.gui.children[3].children[3]._closed,
pointLightFolder: this.gui.children[4]._closed,
pointlLightHelperFolder: this.gui.children[4].children[5]._closed
};
this.gui.destroy();
this.gui = null;
}
this.gui = new GUI({ title: '控制面板', container: this.eleRef.nativeElement.querySelector('#control') });
if (closeState.gui) {
this.gui.close();
}
const displayFolder = this.gui.addFolder('显示设置');
if (closeState.displayFolder) {
displayFolder.close();
}
displayFolder.add(this.state, 'toneMapping', {
'ACESFilmic': THREE.ACESFilmicToneMapping,
'Linear': THREE.LinearToneMapping,
'Reinhard': THREE.ReinhardToneMapping,
'Cineon': THREE.CineonToneMapping,
'AgX': THREE.AgXToneMapping,
'Neutral': THREE.NeutralToneMapping
}).name('色调').onChange(() => this.updateToneMapping());
displayFolder.add(this.state, 'toneMappingExposure', -10, 5, 0.01).name('曝光').onChange(() => this.updateToneMappingExposure());
displayFolder.add(this.state, 'background').name('启用场景背景').listen().onChange(() => this.updateBackground());
displayFolder.addColor(this.state, 'backgroundColor').name('场景背景色').listen().onChange(() => this.updateBackground());
//传入背景图才显示背景图设置
if (this.bgUrl) {
displayFolder.add(this.state, 'useBgUrl').name('使用背景贴图').listen().onChange(() => this.updateBackground());
displayFolder.add(this.state, 'useBgSphere').name('球形背景贴图').listen().onChange(() => this.updateBackground());
}
displayFolder.add(this.state, 'axesHelper').name('坐标系').onChange(() => this.toggleAxesHelper());
displayFolder.add(this.state, 'wireframe').name('线框模式').onChange(() => this.toggleWireframe());
displayFolder.add(this.state, 'autoRotate').listen().name('自动旋转').onChange(() => this.toggleAutoRotate());
displayFolder.add(this.state, 'autoRotateSpeed', -10.0, 10.0, 0.1).listen().name('旋转速度').onChange(() => this.toggleAutoRotate());
const ambientLightFolder = this.gui.addFolder('环境光');
if (closeState.ambientLightFolder) {
ambientLightFolder.close();
}
ambientLightFolder.add(this.state, 'ambientLight').name('启用').onChange(() => this.toggleAmbientLight());
ambientLightFolder.addColor(this.state, 'ambientLightColor').name('颜色').onChange(() => this.updateAmbientLight());
ambientLightFolder.add(this.state, 'ambientLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updateAmbientLight());
const directionalLightFolder = this.gui.addFolder('定向光1');
if (closeState.directionalLightFolder) {
directionalLightFolder.close();
}
directionalLightFolder.add(this.state, 'directionalLight').name('启用').onChange(() => this.toggleDirectionalLight());
directionalLightFolder.addColor(this.state, 'directionalLightColor').name('颜色').onChange(() => this.updateDirectionalLight());
directionalLightFolder.add(this.state, 'directionalLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updateDirectionalLight());
const directionalLightHelperFolder = directionalLightFolder.addFolder('定向光位置');
if (closeState.directionalLightHelperFolder) {
directionalLightHelperFolder.close();
}
directionalLightHelperFolder.add(this.state, 'directionalLightHelper').listen().name('位置模拟').onChange(() => this.toggleDirectionalLightHelper());
directionalLightHelperFolder.add(this.state.directionalLightPosition, 'x', -this.size, this.size).name('x(坐标系-红)').decimals(2).onChange(() => this.updateDirectionalLight());
directionalLightHelperFolder.add(this.state.directionalLightPosition, 'y', -this.size, this.size).name('y(坐标系-绿)').decimals(2).onChange(() => this.updateDirectionalLight());
directionalLightHelperFolder.add(this.state.directionalLightPosition, 'z', -this.size, this.size).name('z(坐标系-蓝)').decimals(2).onChange(() => this.updateDirectionalLight());
const directionalLightFolder2 = this.gui.addFolder('定向光2');
if (closeState.directionalLightFolder2) {
directionalLightFolder2.close();
}
directionalLightFolder2.add(this.state, 'directionalLight2').name('启用').onChange(() => this.toggleDirectionalLight2());
directionalLightFolder2.addColor(this.state, 'directionalLightColor2').name('颜色').onChange(() => this.updateDirectionalLight2());
directionalLightFolder2.add(this.state, 'directionalLightIntensity2', 0, 10, 0.1).name('强度').onChange(() => this.updateDirectionalLight2());
const directionalLightHelperFolder2 = directionalLightFolder2.addFolder('定向光位置');
if (closeState.directionalLightHelperFolder2) {
directionalLightHelperFolder2.close();
}
directionalLightHelperFolder2.add(this.state, 'directionalLightHelper2').listen().name('位置模拟').onChange(() => this.toggleDirectionalLightHelper2());
directionalLightHelperFolder2.add(this.state.directionalLightPosition2, 'x', -this.size, this.size).name('x(坐标系-红)').decimals(2).onChange(() => this.updateDirectionalLight2());
directionalLightHelperFolder2.add(this.state.directionalLightPosition2, 'y', -this.size, this.size).name('y(坐标系-绿)').decimals(2).onChange(() => this.updateDirectionalLight2());
directionalLightHelperFolder2.add(this.state.directionalLightPosition2, 'z', -this.size, this.size).name('z(坐标系-蓝)').decimals(2).onChange(() => this.updateDirectionalLight2());
const pointLightFolder = this.gui.addFolder('点光源');
if (closeState.pointLightFolder) {
pointLightFolder.close();
}
pointLightFolder.add(this.state, 'pointLight').name('启用').onChange(() => this.togglePointLight());
pointLightFolder.addColor(this.state, 'pointLightColor').name('颜色').onChange(() => this.updatePointLight());
pointLightFolder.add(this.state, 'pointLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updatePointLight());
pointLightFolder.add(this.state, 'pointLightDistance', 0, this.size).name('范围').decimals(2).onChange(() => this.updatePointLight());
pointLightFolder.add(this.state, 'pointLightDecay', 0, 2, 0.1).name('衰减').onChange(() => this.updatePointLight());
const pointlLightHelperFolder = pointLightFolder.addFolder('点光源位置');
if (closeState.pointlLightHelperFolder) {
pointlLightHelperFolder.close();
}
pointlLightHelperFolder.add(this.state, 'pointLightHelper').listen().name('位置模拟').onChange(() => this.togglePointLightHelper());
pointlLightHelperFolder.add(this.state.pointLightPosition, 'x', -this.size, this.size).name('x(坐标系-红)').decimals(2).onChange(() => this.updatePointLight());
pointlLightHelperFolder.add(this.state.pointLightPosition, 'y', -this.size, this.size).name('y(坐标系-绿)').decimals(2).onChange(() => this.updatePointLight());
pointlLightHelperFolder.add(this.state.pointLightPosition, 'z', -this.size, this.size).name('z(坐标系-蓝)').decimals(2).onChange(() => this.updatePointLight());
}
//色调
updateToneMapping() {
this.renderer.toneMapping = this.state.toneMapping;
}
//曝光
updateToneMappingExposure() {
this.renderer.toneMappingExposure = Math.pow(2, this.state.toneMappingExposure);
}
//背景
updateBackground() {
// 移除已存在的背景球体
if (this.backgroundSphere) {
this.scene.remove(this.backgroundSphere);
this.backgroundSphere = null;
}
//启用背景
if (this.state.background) {
//使用背景图
if (this.state.useBgUrl && this.bgUrl) {
//使用球体背景
if (this.state.useBgSphere) {
// 创建球形几何体
const geometry = new THREE.SphereGeometry(this.size * 50, 32, 32);
// 将法线朝内,这样纹理会显示在球体内侧
geometry.scale(-1, 1, 1);
// 加载背景图纹理
new THREE.TextureLoader().load(this.bgUrl, (texture) => {
texture.colorSpace = THREE.SRGBColorSpace;
const material = new THREE.MeshBasicMaterial({
map: texture
});
this.backgroundSphere = new THREE.Mesh(geometry, material);
this.scene.add(this.backgroundSphere);
});
}
else {
//使用平面背景图
new THREE.TextureLoader().load(this.bgUrl, (texture) => {
texture.colorSpace = THREE.SRGBColorSpace;
this.scene.background = texture;
});
}
}
else {
//使用背景色
this.scene.background = new THREE.Color(this.state.backgroundColor);
}
}
else {
//关闭背景
this.scene.background = null;
}
}
toggleAxesHelper() {
//x-红,y-绿,z-蓝
if (this.state.axesHelper) {
if (this.axesHelper) {
this.scene.remove(this.axesHelper);
this.axesHelper = null;
}
this.axesHelper = new THREE.AxesHelper(this.size);
this.scene.add(this.axesHelper);
}
else {
if (this.axesHelper) {
this.scene.remove(this.axesHelper);
this.axesHelper = null;
}
}
}
//线框模式
toggleWireframe() {
this.traverseMaterials(this.objScene, (material) => {
material.wireframe = this.state.wireframe;
if (material instanceof THREE.PointsMaterial) {
material.size = 1;
}
});
}
//遍历材质
traverseMaterials(object, callback) {
object.traverse((node) => {
if (!node.geometry)
return;
const materials = Array.isArray(node.material) ? node.material : [node.material];
materials.forEach(callback);
});
}
//自动旋转
toggleAutoRotate() {
this.controls.autoRotate = this.state.autoRotate;
this.controls.autoRotateSpeed = this.state.autoRotateSpeed;
}
toggleAmbientLight() {
if (this.state.ambientLight) {
if (this.ambientLight) {
this.scene.remove(this.ambientLight);
this.ambientLight = null;
}
this.ambientLight = new THREE.AmbientLight(this.state.ambientLightColor, this.state.ambientLightIntensity);
this.scene.add(this.ambientLight);
}
else {
if (this.ambientLight) {
this.scene.remove(this.ambientLight);
this.ambientLight = null;
}
}
}
//更新环境光
updateAmbientLight() {
if (this.state.ambientLight) {
this.ambientLight.color.set(this.state.ambientLightColor);
this.ambientLight.intensity = this.state.ambientLightIntensity;
}
}
toggleDirectionalLight() {
if (this.state.directionalLight) {
if (this.directionalLight) {
this.scene.remove(this.directionalLight);
this.directionalLight = null;
}
this.directionalLight = new THREE.DirectionalLight(this.state.directionalLightColor, this.state.directionalLightIntensity);
this.directionalLight.position.set(this.state.directionalLightPosition.x, this.state.directionalLightPosition.y, this.state.directionalLightPosition.z);
this.scene.add(this.directionalLight);
}
else {
if (this.directionalLight) {
this.scene.remove(this.directionalLight);
this.directionalLight = null;
}
//关闭位置模拟
this.state.directionalLightHelper = false;
this.toggleDirectionalLightHelper();
}
}
//更新定向光
updateDirectionalLight() {
if (this.state.directionalLight) {
this.directionalLight.color.set(this.state.directionalLightColor);
this.directionalLight.intensity = this.state.directionalLightIntensity;
this.directionalLight.position.set(this.state.directionalLightPosition.x, this.state.directionalLightPosition.y, this.state.directionalLightPosition.z);
if (this.directionalLightHelper) {
this.directionalLightHelper.update();
}
}
}
toggleDirectionalLightHelper() {
if (this.state.directionalLightHelper) {
if (this.directionalLight) { //开启定向光才能开启位置模拟
if (this.directionalLightHelper) {
this.scene.remove(this.directionalLightHelper);
this.directionalLightHelper = null;
}
this.directionalLightHelper = new THREE.DirectionalLightHelper(this.directionalLight, this.size / 20, 0xff0000);
this.scene.add(this.directionalLightHelper);
}
else {
this.state.directionalLightHelper = false;
}
}
else {
if (this.directionalLightHelper) {
this.scene.remove(this.directionalLightHelper);
this.directionalLightHelper = null;
}
}
}
toggleDirectionalLight2() {
if (this.state.directionalLight2) {
if (this.directionalLight2) {
this.scene.remove(this.directionalLight2);
this.directionalLight2 = null;
}
this.directionalLight2 = new THREE.DirectionalLight(this.state.directionalLightColor2, this.state.directionalLightIntensity2);
this.directionalLight2.position.set(this.state.directionalLightPosition2.x, this.state.directionalLightPosition2.y, this.state.directionalLightPosition2.z);
this.scene.add(this.directionalLight2);
}
else {
if (this.directionalLight2) {
this.scene.remove(this.directionalLight2);
this.directionalLight2 = null;
}
//关闭位置模拟
this.state.directionalLightHelper2 = false;
this.toggleDirectionalLightHelper2();
}
}
//更新定向光2
updateDirectionalLight2() {
if (this.state.directionalLight2) {
this.directionalLight2.color.set(this.state.directionalLightColor2);
this.directionalLight2.intensity = this.state.directionalLightIntensity2;
this.directionalLight2.position.set(this.state.directionalLightPosition2.x, this.state.directionalLightPosition2.y, this.state.directionalLightPosition2.z);
if (this.directionalLightHelper2) {
this.directionalLightHelper2.update();
}
}
}
toggleDirectionalLightHelper2() {
if (this.state.directionalLightHelper2) {
if (this.directionalLight2) { //开启定向光才能开启位置模拟
if (this.directionalLightHelper2) {
this.scene.remove(this.directionalLightHelper2);
this.directionalLightHelper2 = null;
}
this.directionalLightHelper2 = new THREE.DirectionalLightHelper(this.directionalLight2, this.size / 20, 0xffff00);
this.scene.add(this.directionalLightHelper2);
}
else {
this.state.directionalLightHelper2 = false;
}
}
else {
if (this.directionalLightHelper2) {
this.scene.remove(this.directionalLightHelper2);
this.directionalLightHelper2 = null;
}
}
}
togglePointLight() {
if (this.state.pointLight) {
if (this.pointLight) {
this.scene.remove(this.pointLight);
this.pointLight = null;
}
//PointLight( color : Integer, intensity : Float, distance : Number, decay : Float )
this.pointLight = new THREE.PointLight(this.state.pointLightColor, this.state.pointLightIntensity, this.state.pointLightDistance, this.state.pointLightDecay);
this.pointLight.position.set(this.state.pointLightPosition.x, this.state.pointLightPosition.y, this.state.pointLightPosition.z);
this.scene.add(this.pointLight);
}
else {
if (this.pointLight) {
this.scene.remove(this.pointLight);
this.pointLight = null;
}
//关闭位置模拟
this.state.pointLightHelper = false;
this.togglePointLightHelper();
}
}
//更新点光源
updatePointLight() {
if (this.state.pointLight) {
this.pointLight.color.set(this.state.pointLightColor);
this.pointLight.intensity = this.state.pointLightIntensity;
this.pointLight.decay = this.state.pointLightDecay;
this.pointLight.distance = this.state.pointLightDistance;
this.pointLight.position.set(this.state.pointLightPosition.x, this.state.pointLightPosition.y, this.state.pointLightPosition.z);
if (this.pointLightHelper) {
this.pointLightHelper.update();
}
}
}
togglePointLightHelper() {
if (this.state.pointLightHelper) {
if (this.pointLight) { //开启点光源才能开启位置模拟
if (this.pointLightHelper) {
this.scene.remove(this.pointLightHelper);
this.pointLightHelper = null;
}
this.pointLightHelper = new THREE.PointLightHelper(this.pointLight, this.size / 20, 0x2bff00);
this.scene.add(this.pointLightHelper);
}
else {
this.state.pointLightHelper = false;
}
}
else {
if (this.pointLightHelper) {
this.scene.remove(this.pointLightHelper);
this.pointLightHelper = null;
}
}
}
//webgl销毁
webglLoseContext() {
let objCanvasDom = this.eleRef.nativeElement.querySelector(`${this.domId} canvas`);
if (objCanvasDom) {
//手动销毁WebGL context对象(最多16个,超出的话最先加载的会被移除)
let gl = objCanvasDom.getContext('webgl2');
gl.getExtension('WEBGL_lose_context').loseContext();
//dom移除
objCanvasDom.remove();
}
}
}
ObjViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ObjViewerComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalService }], target: i0.ɵɵFactoryTarget.Component });
ObjViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: ObjViewerComponent, selector: "nc-obj-viewer", inputs: { ncObjInfo: "ncObjInfo", ncCameraPlacement: "ncCameraPlacement", ncBg: "ncBg", ncBgColor: "ncBgColor", ncBgUrl: "ncBgUrl", ncTips: "ncTips", ncControl: "ncControl", ncAlpha: "ncAlpha", ncAutoRotate: "ncAutoRotate", ncAutoRotateSpeed: "ncAutoRotateSpeed" }, ngImport: i0, template: "<div id=\"objViewer\" *ngIf=\"parametersOk\">\r\n <div class=\"loading\" *ngIf=\"showLoading\">\r\n <div class=\"nc-loading\">\r\n <svg class=\"nc-loading-svg\" version=\"1.1\" viewBox=\"0 0 60 60\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n <clipPath id=\"d-5\">\r\n <use width=\"100%\" height=\"100%\" overflow=\"visible\" xlink:href=\"#c\" />\r\n </clipPath>\r\n </defs>\r\n <g transform=\"translate(4.4 -.117)\">\r\n <defs>\r\n <path id=\"a\" d=\"m-5-1h62v62h-62z\" />\r\n </defs>\r\n <clipPath id=\"b\">\r\n <use width=\"100%\" height=\"100%\" overflow=\"visible\" xlink:href=\"#a\" />\r\n </clipPath>\r\n <g clip-path=\"url(#b)\">\r\n <defs>\r\n <path id=\"c\" d=\"m-5-1h62v62h-62z\" />\r\n </defs>\r\n <clipPath id=\"d\">\r\n <use width=\"100%\" height=\"100%\" overflow=\"visible\" xlink:href=\"#c\" />\r\n </clipPath>\r\n <g style=\"stroke:var(--ov_logo_border_color);\" stroke=\"#000\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" stroke-miterlimit=\"10\">\r\n <path transform=\"translate(.039092 .02257)\"\r\n d=\"m38.361 22.877-12.4-7.3 9.2e-5 -14.177 24.8 14.2v28.8l-12.4-7.3226z\"\r\n clip-path=\"url(#d)\" fill=\"#4688b4\" />\r\n <path transform=\"rotate(120,26,30.082)\"\r\n d=\"m38.4 22.923-12.522-7.0887 0.14178-14.4 24.78 14.166v28.8l-12.522-7.0883z\"\r\n clip-path=\"url(#d-5)\" fill=\"#64c0ff\" />\r\n <path d=\"m26 30v14.4l12.4-7.3v-14.2z\" clip-path=\"url(#d)\" fill=\"#294e67\" />\r\n <path d=\"m13.6 37.1v-14.2l12.4-7.3v-14.177l-24.8 14.177v28.8z\" clip-path=\"url(#d)\"\r\n fill=\"#294e67\" />\r\n <path d=\"m26 15.6-12.4 7.3 12.4 7.1 12.4-7.1z\" clip-path=\"url(#d)\" fill=\"#64c0ff\" />\r\n <path d=\"m13.6 22.9 12.4 7.1v14.4l-12.4-7.3z\" clip-path=\"url(#d)\" fill=\"#4688b4\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n <div class=\"ncTips\">\r\n <div>{{loadingText}}</div>\r\n <div>{{loadingText2}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"tips\" *ngIf=\"tipsMode\">\r\n <div class=\"tip-row\">\r\n <div class=\"row-img\">\r\n <img\r\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VMZWZ0LnN2ZyI+PG1ldGFkYXRhCiAgIGlkPSJtZXRhZGF0YTIxIj48cmRmOlJERj48Y2M6V29yawogICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlIC8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgIGlkPSJkZWZzMTkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxIgogICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICBncmlkdG9sZXJhbmNlPSIxMCIKICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxMjgyIgogICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4ODYiCiAgIGlkPSJuYW1lZHZpZXcxNyIKICAgc2hvd2dyaWQ9ImZhbHNlIgogICBpbmtzY2FwZTp6b29tPSIzLjY4NzUiCiAgIGlua3NjYXBlOmN4PSItMTAuMzA1MDg1IgogICBpbmtzY2FwZTpjeT0iMzIiCiAgIGlua3NjYXBlOndpbmRvdy14PSIxMDQiCiAgIGlua3NjYXBlOndpbmRvdy15PSIxMzYiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0iZmlsbDojNGQ0ZDRkO3N0cm9rZTojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0iZmlsbDojNGQ0ZDRkO3N0cm9rZTojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzEuNDg1MDgxLDM1Ljg0MjE0MyBjIC0wLjEwNDU5MSwtMC4xMDQ1OTEgLTAuMTkwMTY2LC0yLjIzMTM0NyAtMC4xOTAxNjYsLTQuNzI2MTIzIDAsLTMuOTgzOTk0IDAuMDU1MDIsLTQuNTU3MDcxIDAuNDUyMTI3LC00LjcwOTQ1NiAwLjI0ODY3LC0wLjA5NTQyIDAuNTU2ODAyLC0wLjA2ODgyIDAuNjg0NzM4LDAuMDU5MTIgMC4xMjc5MzcsMC4xMjc5MzYgMC4xOTkwNTYsMi4yOTY0ODEgMC4xNTgwNDMsNC44MTg5ODggLTAuMDYzMTksMy44ODY0MDUgLTAuMTM4NjcsNC41OTg2ODMgLTAuNDk0NTcyLDQuNjY3MDA5IC0wLjIzMTAwMywwLjA0NDM1IC0wLjUwNTU3OSwtMC4wMDQ5IC0wLjYxMDE3LC0wLjEwOTUzMyBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMC40NDA0MzMsNTcuOTQ1MzE2IGMgLTMuMDY0MDUzLC0wLjQyMTEzIC02Ljc3NzIzLC0yLjQ3NDk1MyAtOC40NTc2MjEsLTQuNjc4MDYgLTIuMTU4OCwtMi44MzAzMzMgLTMuMTEzOTE4LC02LjczNzcxNiAtMi43Njk1OTIsLTExLjMzMDM4NSBsIDAuMTkzMTIxLC0yLjU3NTg3MiAyLjA3OTg4LDAuNzM1NjI4IGMgMy41MjcwMjYsMS4yNDc0NjYgNi4zMzc3MDEsMS43MTkwNjggMTAuMjE1NDc0LDEuNzE0MDUgNC4xNzE3NzEsLTAuMDA1NCA2LjY0Mjk4MSwtMC4zODg2OCAxMC4yNTgzNiwtMS41OTEwNTggMi4xNzg5NzMsLTAuNzI0NjY4IDIuNjkyMTkzLC0wLjgxNTg1NiAyLjgxMzQ0NCwtMC40OTk4ODMgMC4wODE1NywwLjIxMjU2IDAuMDg2NjQsMi4xMTk4NjQgMC4wMTEyNyw0LjIzODQ1MyAtMC4xMDYyMTcsMi45ODU4MSAtMC4yNjY1MzEsNC4yMTI5MzggLTAuNzEyOTM1LDUuNDU3MjA4IC0xLjQ1MDIxNyw0LjA0MjIwNiAtNC40MDExMTgsNi44NDQxNTYgLTguNDM3OTM4LDguMDEyMDE3IC0yLjMxNDc0NywwLjY2OTY2MSAtMy4zNDMxNCwwLjc3MjIxNSAtNS4xOTM0NjUsMC41MTc5MDIgeiIKICAgaWQ9InBhdGgzNzcyIgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjwvZz4KPHBhdGgKICAgc3R5bGU9ImZpbGw6IzY2Q0NGRjtzdHJva2U6IzY2Q0NGRjtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAyOC43NDA1NTYsNDAuMDYzNjgyIGMgLTIuNDU3Nzk1LC0wLjI4NDk5NSAtNS4yOTE1MjIsLTAuOTc2ODgxIC03LjQ3OTUzOSwtMS44MjYyMTIgLTAuOTY5NDkyLC0wLjM3NjMzMiAtMS43OTI5MzksLTAuNzA0OTYxIC0xLjgyOTg4NCwtMC43MzAyODcgLTAuMTUyNTY0LC0wLjEwNDU4NCAwLjc2NjAxNiwtNi4yNDI1NDEgMS4xNjgwMSwtNy44MDQ2NTYgMS40MjExOTEsLTUuNTIyNjMxIDQuMzA0NDc3LC04LjA2MTg0OSA5LjE1NDI0MSwtOC4wNjE4NDkgbCAxLjU0MTUzMSwwIDAsMS42MjcxMTkgYyAwLDEuMjM3MTI1IC0wLjA5MzgxLDEuNjI3MTE4IC0wLjM5MTQwMiwxLjYyNzExOCAtMC4yMTUyNzEsMCAtMC41ODEzNzMsMC4yNzEyMjEgLTAuODEzNTU5LDAuNjAyNzE0IC0wLjM0NTg4OSwwLjQ5MzgyNiAtMC40MjIxNTcsMS41Mjc1MjQgLTAuNDIyMTU3LDUuNzIxNzA2IGwgMCw1LjExODk5MiAwLjgxMzU1OSwwLjc1OTk3OCBjIDAuNjc1ODQ2LDAuNjMxMzM1IDAuODEzNTU5LDAuOTcxMDgzIDAuODEzNTU5LDIuMDA3MTA4IDAsMC44MzU5MjEgLTAuMTExNzcxLDEuMjM1Mzc4IC0wLjMzODk4MywxLjIxMTQ4OSAtMC4xODY0NCwtMC4wMTk2IC0xLjE4MzM2LC0wLjEzMzU1MSAtMi4yMTUzNzYsLTAuMjUzMjIgbCAwLDAgeiIKICAgaWQ9InBhdGgzNzY2IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjwvc3ZnPg==\">\r\n </div>\r\n <div class=\"row-word\">\u65CB\u8F6C</div>\r\n </div>\r\n <div class=\"tip-row\">\r\n <div class=\"row-img\">\r\n <img\r\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VSaWdodC5zdmciPjxtZXRhZGF0YQogICBpZD0ibWV0YWRhdGEyMSI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjxkYzp0aXRsZSAvPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcwogICBpZD0iZGVmczE5IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTI4MiIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iODg2IgogICBpZD0ibmFtZWR2aWV3MTciCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMy42ODc1IgogICBpbmtzY2FwZTpjeD0iMzIiCiAgIGlua3NjYXBlOmN5PSIzMiIKICAgaW5rc2NhcGU6d2luZG93LXg9IjMxIgogICBpbmtzY2FwZTp3aW5kb3cteT0iMTUiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6IzY1RkQwMDtzdHJva2U6IzY1RkQwMDtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzEuNDg1MDgxLDM1Ljg0MjE0MyBjIC0wLjEwNDU5MSwtMC4xMDQ1OTEgLTAuMTkwMTY2LC0yLjIzMTM0NyAtMC4xOTAxNjYsLTQuNzI2MTIzIDAsLTMuOTgzOTk0IDAuMDU1MDIsLTQuNTU3MDcxIDAuNDUyMTI3LC00LjcwOTQ1NiAwLjI0ODY3LC0wLjA5NTQyIDAuNTU2ODAyLC0wLjA2ODgyIDAuNjg0NzM4LDAuMDU5MTIgMC4xMjc5MzcsMC4xMjc5MzYgMC4xOTkwNTYsMi4yOTY0ODEgMC4xNTgwNDMsNC44MTg5ODggLTAuMDYzMTksMy44ODY0MDUgLTAuMTM4NjcsNC41OTg2ODMgLTAuNDk0NTcyLDQuNjY3MDA5IC0wLjIzMTAwMywwLjA0NDM1IC0wLjUwNTU3OSwtMC4wMDQ5IC0wLjYxMDE3LC0wLjEwOTUzMyBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMC40NDA0MzMsNTcuOTQ1MzE2IGMgLTMuMDY0MDUzLC0wLjQyMTEzIC02Ljc3NzIzLC0yLjQ3NDk1MyAtOC40NTc2MjEsLTQuNjc4MDYgLTIuMTU4OCwtMi44MzAzMzMgLTMuMTEzOTE4LC02LjczNzcxNiAtMi43Njk1OTIsLTExLjMzMDM4NSBsIDAuMTkzMTIxLC0yLjU3NTg3MiAyLjA3OTg4LDAuNzM1NjI4IGMgMy41MjcwMjYsMS4yNDc0NjYgNi4zMzc3MDEsMS43MTkwNjggMTAuMjE1NDc0LDEuNzE0MDUgNC4xNzE3NzEsLTAuMDA1NCA2LjY0Mjk4MSwtMC4zODg2OCAxMC4yNTgzNiwtMS41OTEwNTggMi4xNzg5NzMsLTAuNzI0NjY4IDIuNjkyMTkzLC0wLjgxNTg1NiAyLjgxMzQ0NCwtMC40OTk4ODMgMC4wODE1NywwLjIxMjU2IDAuMDg2NjQsMi4xMTk4NjQgMC4wMTEyNyw0LjIzODQ1MyAtMC4xMDYyMTcsMi45ODU4MSAtMC4yNjY1MzEsNC4yMTI5MzggLTAuNzEyOTM1LDUuNDU3MjA4IC0xLjQ1MDIxNyw0LjA0MjIwNiAtNC40MDExMTgsNi44NDQxNTYgLTguNDM3OTM4LDguMDEyMDE3IC0yLjMxNDc0NywwLjY2OTY2MSAtMy4zNDMxNCwwLjc3MjIxNSAtNS4xOTM0NjUsMC41MTc5MDIgeiIKICAgaWQ9InBhdGgzNzcyIgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMjguNzQwNTU2LDQwLjA2MzY4MiBjIC0yLjQ1Nzc5NSwtMC4yODQ5OTUgLTUuMjkxNTIyLC0wLjk3Njg4MSAtNy40Nzk1MzksLTEuODI2MjEyIC0wLjk2OTQ5MiwtMC4zNzYzMzIgLTEuNzkyOTM5LC0wLjcwNDk2MSAtMS44Mjk4ODQsLTAuNzMwMjg3IC0wLjE1MjU2NCwtMC4xMDQ1ODQgMC43NjYwMTYsLTYuMjQyNTQxIDEuMTY4MDEsLTcuODA0NjU2IDEuNDIxMTkxLC01LjUyMjYzMSA0LjMwNDQ3NywtOC4wNjE4NDkgOS4xNTQyNDEsLTguMDYxODQ5IGwgMS41NDE1MzEsMCAwLDEuNjI3MTE5IGMgMCwxLjIzNzEyNSAtMC4wOTM4MSwxLjYyNzExOCAtMC4zOTE0MDIsMS42MjcxMTggLTAuMjE1MjcxLDAgLTAuNTgxMzczLDAuMjcxMjIxIC0wLjgxMzU1OSwwLjYwMjcxNCAtMC4zNDU4ODksMC40OTM4MjYgLTAuNDIyMTU3LDEuNTI3NTI0IC0wLjQyMjE1Nyw1LjcyMTcwNiBsIDAsNS4xMTg5OTIgMC44MTM1NTksMC43NTk5NzggYyAwLjY3NTg0NiwwLjYzMTMzNSAwLjgxMzU1OSwwLjk3MTA4MyAwLjgxMzU1OSwyLjAwNzEwOCAwLDAuODM1OTIxIC0wLjExMTc3MSwxLjIzNTM3OCAtMC4zMzg5ODMsMS4yMTE0ODkgLTAuMTg2NDQsLTAuMDE5NiAtMS4xODMzNiwtMC4xMzM1NTEgLTIuMjE1Mzc2LC0wLjI1MzIyIGwgMCwwIHoiCiAgIGlkPSJwYXRoMzc3OCIKICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz48L2c+Cjwvc3ZnPg==\">\r\n </div>\r\n <div class=\"row-word\">\u5E73\u79FB</div>\r\n </div>\r\n <div class=\"tip-row\">\r\n <div class=\"row-img\">\r\n <img\r\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VNaWRkbGUuc3ZnIj48bWV0YWRhdGEKICAgaWQ9Im1ldGFkYXRhMjEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48ZGM6dGl0bGUgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgaWQ9ImRlZnMxOSIgLz48c29kaXBvZGk6bmFtZWR2aWV3CiAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgIGdyaWR0b2xlcmFuY2U9IjEwIgogICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyODIiCiAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijg4NiIKICAgaWQ9Im5hbWVkdmlldzE3IgogICBzaG93Z3JpZD0iZmFsc2UiCiAgIGlua3NjYXBlOnpvb209IjMuNjg3NSIKICAgaW5rc2NhcGU6Y3g9Ii0xMC4zMDUwODUiCiAgIGlua3NjYXBlOmN5PSIzMiIKICAgaW5rc2NhcGU6d2luZG93LXg9IjMxIgogICBpbmtzY2FwZTp3aW5kb3cteT0iMTUiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzAuNDQwNDMzLDU3Ljk0NTMxNiBjIC0zLjA2NDA1MywtMC40MjExMyAtNi43NzcyMywtMi40NzQ5NTMgLTguNDU3NjIxLC00LjY3ODA2IC0yLjE1ODgsLTIuODMwMzMzIC0zLjExMzkxOCwtNi43Mzc3MTYgLTIuNzY5NTkyLC0xMS4zMzAzODUgbCAwLjE5MzEyMSwtMi41NzU4NzIgMi4wNzk4OCwwLjczNTYyOCBjIDMuNTI3MDI2LDEuMjQ3NDY2IDYuMzM3NzAxLDEuNzE5MDY4IDEwLjIxNTQ3NCwxLjcxNDA1IDQuMTcxNzcxLC0wLjAwNTQgNi42NDI5ODEsLTAuMzg4NjggMTAuMjU4MzYsLTEuNTkxMDU4IDIuMTc4OTczLC0wLjcyNDY2OCAyLjY5MjE5MywtMC44MTU4NTYgMi44MTM0NDQsLTAuNDk5ODgzIDAuMDgxNTcsMC4yMTI1NiAwLjA4NjY0LDIuMTE5ODY0IDAuMDExMjcsNC4yMzg0NTMgLTAuMTA2MjE3LDIuOTg1ODEgLTAuMjY2NTMxLDQuMjEyOTM4IC0wLjcxMjkzNSw1LjQ1NzIwOCAtMS40NTAyMTcsNC4wNDIyMDYgLTQuNDAxMTE4LDYuODQ0MTU2IC04LjQzNzkzOCw4LjAxMjAxNyAtMi4zMTQ3NDcsMC42Njk2NjEgLTMuMzQzMTQsMC43NzIyMTUgLTUuMTkzNDY1LDAuNTE3OTAyIHoiCiAgIGlkPSJwYXRoMzc3MiIKICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz48cGF0aAogICBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDowLjI3MTE4NjQ0IgogICBkPSJtIDI4Ljc0MDU1Niw0MC4wNjM2ODIgYyAtMi40NTc3OTUsLTAuMjg0OTk1IC01LjI5MTUyMiwtMC45NzY4ODEgLTcuNDc5NTM5LC0xLjgyNjIxMiAtMC45Njk0OTIsLTAuMzc2MzMyIC0xLjc5MjkzOSwtMC43MDQ5NjEgLTEuODI5ODg0LC0wLjczMDI4NyAtMC4xNTI1NjQsLTAuMTA0NTg0IDAuNzY2MDE2LC02LjI0MjU0MSAxLjE2ODAxLC03LjgwNDY1NiAxLjQyMTE5MSwtNS41MjI2MzEgNC4zMDQ0NzcsLTguMDYxODQ5IDkuMTU0MjQxLC04LjA2MTg0OSBsIDEuNTQxNTMxLDAgMCwxLjYyNzExOSBjIDAsMS4yMzcxMjUgLTAuMDkzODEsMS42MjcxMTggLTAuMzkxNDAyLDEuNjI3MTE4IC0wLjIxNTI3MSwwIC0wLjU4MTM3MywwLjI3MTIyMSAtMC44MTM1NTksMC42MDI3MTQgLTAuMzQ1ODg5LDAuNDkzODI2IC0wLjQyMjE1NywxLjUyNzUyNCAtMC40MjIxNTcsNS43MjE3MDYgbCAwLDUuMTE4OTkyIDAuODEzNTU5LDAuNzU5OTc4IGMgMC42NzU4NDYsMC42MzEzMzUgMC44MTM1NTksMC45NzEwODMgMC44MTM1NTksMi4wMDcxMDggMCwwLjgzNTkyMSAtMC4xMTE3NzEsMS4yMzUzNzggLTAuMzM4OTgzLDEuMjExNDg5IC0wLjE4NjQ0LC0wLjAxOTYgLTEuMTgzMzYsLTAuMTMzNTUxIC0yLjIxNTM3NiwtMC4yNTMyMiBsIDAsMCB6IgogICBpZD0icGF0aDM3NzgiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZDgwMDtzdHJva2U6I2ZmZDgwMDtzdHJva2Utd2lkdGg6MC4zMzg3MDk2NSIKICAgZD0ibSAzMS4zNTYyNDMsMzUuODA5MjY0IGMgLTAuMTY0MzE0LC0wLjEwMzg1NiAtMC4yOTg3NTMsLTIuMjE1NjgyIC0wLjI5ODc1MywtNC42OTI5NDUgMCwtMy45NTYwMjYgMC4wODY0NCwtNC41MjUwOCAwLjcxMDI5NiwtNC42NzYzOTUgMC4zOTA2NjMsLTAuMDk0NzUgMC44NzQ3NCwtMC4wNjgzNCAxLjA3NTcyOSwwLjA1ODcgMC4yMDA5OTEsMC4xMjcwMzggMC4zMTI3MTksMi4yODAzNiAwLjI0ODI4OCw0Ljc4NTE1OSAtMC4wOTkyNywzLjg1OTEyMiAtMC4yMTc4NTMsNC41NjY0MDEgLTAuNzc2OTc3LDQuNjM0MjQ3IC0wLjM2MjkwOSwwLjA0NDA0IC0wLjc5NDI3LC0wLjAwNDkgLTAuOTU4NTgzLC0wLjEwODc2NSBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PC9nPgo8L3N2Zz4=\">\r\n </div>\r\n <div class=\"row-word\">\u7F29\u653E</div>\r\n </div>\r\n </div>\r\n <div id=\"control\"></div>\r\n</div>", styles: ["#objViewer{width:100%;height:100%;position:relative;overflow:hidden}#objViewer .loading{position:absolute;left:0;top:0;width:100%;height:100%}#objViewer .loading .nc-loading{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:#fff}#objViewer .loading .nc-loading .nc-loading-svg{width:80px;height:80px;animation:animation 5s infinite linear;--ov_logo_border_color: #000000}#objViewer .loading .nc-loading .ncTips{font-size:18px;margin-top:18px;letter-spacing:2px;color:#d4d4d4;mix-blend-mode:difference;display:flex;flex-direction:column;align-items:center;justify-content:center}@keyframes animation{to{transform:rotate(1turn)}}#objViewer #tips{position:absolute;left:10px;top:10px;border:1px solid #444;background-color:#262626bf;border-radius:10px;padding:0 20px 8px 10px}#objViewer #tips .tip-row{display:flex;align-items:flex-end;color:#fff}#objViewer #tips .tip-row .row-img{width:36px;height:36px}#objViewer #tips .tip-row .row-img img{width:100%;height:100%}#objViewer ::ng-deep #control{position:absolute;right:0;top:0}#objViewer ::ng-deep #control option{color:#000!important}#objViewer ::ng-deep #control .lil-gui.root>.children{max-height:600px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ObjViewerComponent, decorators: [{
type: Component,
args: [{
selector: 'nc-obj-viewer',
templateUrl: './obj-viewer.component.html',
styleUrls: ['./obj-viewer.component.less']
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalService }]; }, propDecorators: { ncObjInfo: [{
type: Input
}], ncCameraPlacement: [{
type: Input
}], ncBg: [{
type: Input
}], ncBgColor: [{
type: Input
}], ncBgUrl: [{
type: Input
}], ncTips: [{
type: Input
}], ncControl: [{
type: Input
}], ncAlpha: [{
type: Input
}], ncAutoRotate: [{
type: Input
}], ncAutoRotateSpeed: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL29iai12aWV3ZXIvb2JqLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL29iai12aWV3ZXIvb2JqLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNsRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQVlwRSxNQUFNLE9BQU8sa0JBQWtCO0lBOEk5QixZQUFvQixNQUFrQixFQUFVLEVBQWdCO1FBQTVDLFdBQU0sR0FBTixNQUFNLENBQVk7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFjO1FBeEVoRSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0IsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsWUFBTyxHQUFjO1lBQ3BCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsTUFBTSxFQUFFLEVBQUU7U0FDVixDQUFDO1FBQ0YsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsaUJBQVksR0FBVyxFQUFFLENBQUM7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QUssQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQzdLLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDN0ssNEJBQTRCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUU3SyxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELElBQUksVUFBVSxDQUFDLHVCQUF1QixFQUFFO1lBQ3ZDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUks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Q0FBQyw2QkFBNkIsQ0FBQztpQkFDMUM7NEhBR2EsU0FBUztzQkFBckIsS0FBSztnQkFVTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBT08sSUFBSTtzQkFBaEIsS0FBSztnQkFPTyxTQUFTO3NCQUFyQixLQUFLO2dCQU9PLE9BQU87c0JBQW5CLEtBQUs7Z0JBU08sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFPTyxpQkFBaUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IE9yYml0Q29udHJvbHMgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vY29udHJvbHMvT3JiaXRDb250cm9scyc7XHJcbmltcG9ydCB7IFJvb21FbnZpcm9ubWVudCB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9lbnZpcm9ubWVudHMvUm9vbUVudmlyb25tZW50JztcclxuaW1wb3J0IHsgR1VJIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xpYnMvbGlsLWd1aS5tb2R1bGUubWluJztcclxuaW1wb3J0IHsgTG9jYWxTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTVRMTG9hZGVyIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvTVRMTG9hZGVyLmpzJztcclxuaW1wb3J0IHsgT0JKTG9hZGVyIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvT0JKTG9hZGVyLmpzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmNPYmpJbmZvIHtcclxuXHRvYmpVcmw6IHN0cmluZztcclxuXHRtdGxVcmw6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICduYy1vYmotdmlld2VyJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vb2JqLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vb2JqLXZpZXdlci5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPYmpWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdC8v5qih5Z6L5Zyw5Z2AXHJcblx0QElucHV0KCkgc2V0IG5jT2JqSW5mbyh2YWx1ZTogTmNPYmpJbmZvKSB7XHJcblx0XHR0aGlzLm9iakluZm8gPSB2YWx1ZTtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHQvL+WKoOW7tui/n++8jOmYsuatouWFtuS7luS8oOWFpeWPguaVsOacquiOt+WPluWIsFxyXG5cdFx0XHRpZiAodGhpcy5zY2VuZSkge1xyXG5cdFx0XHRcdHRoaXMudXBkYXRlTW9kZWwoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9XHJcblx0Ly/mkYTlg4/mnLrliJ3lp4vmlrnkvY1kZWZhdWx0LGxlZnQscmlnaHQsdG9wLGJvdHRvbSxiYWNrLGZyb250XHJcblx0QElucHV0KCkgc2V0IG5jQ2FtZXJhUGxhY2VtZW50KHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuY2FtZXJhUGxhY2VtZW50ID0gdmFsdWU7XHJcblx0XHRpZiAodGhpcy5zY2VuZSkge1xyXG5cdFx0XHR0aGlzLnNldENhbWVyYVBsYWNlbWVudCgpO1xyXG5cdFx0fVxyXG5cdH07XHJcblx0Ly/mmK/lkKblkK/nlKjog4zmma9cclxuXHRASW5wdXQoKSBzZXQgbmNCZyh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG5cdFx0dGhpcy5zdGF0ZS5iYWNrZ3JvdW5kID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09ICdmYWxzZSc7XHJcblx0XHRpZiAodGhpcy5zY2VuZSkge1xyXG5cdFx0XHR0aGlzLnVwZGF0ZUJhY2tncm91bmQoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0Ly/og4zmma/oibLlgLxcclxuXHRASW5wdXQoKSBzZXQgbmNCZ0NvbG9yKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuc3RhdGUuYmFja2dyb3VuZENvbG9yID0gdmFsdWU7XHJcblx0XHRpZiAodGhpcy5zY2VuZSkge1xyXG5cdFx0XHR0aGlzLnVwZGF0ZUJhY2tncm91bmQoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0Ly/og4zmma/lm77niYdVUkxcclxuXHRASW5wdXQoKSBzZXQgbmNCZ1VybCh2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmJnVXJsID0gdmFsdWU7XHJcblx0XHR0aGlzLnN0YXRlLnVzZUJnVXJsID0gdmFsdWUgPyB0cnVlIDogZmFsc2U7Ly/kvKDkuoblgLzvvIzpu5jorqTlkK/nlKjog4zmma/lm75cclxuXHRcdHRoaXMuc3RhdGUudXNlQmdTcGhlcmUgPSB2YWx1ZSA/IHRydWUgOiBmYWxzZTsvL+S8oOS6huWAvO+8jOm7mOiupOWQr+eUqOiDjOaZr+eQg1xyXG5cdFx0aWYgKHRoaXMuc2NlbmUpIHtcclxuXHRcdFx0dGhpcy51cGRhdGVCYWNrZ3JvdW5kKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8v5pON5L2c5o+Q56S6XHJcblx0QElucHV0KCkgc2V0IG5jVGlwcyh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG5cdFx0dGhpcy50aXBzTW9kZSA9IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSAnZmFsc2UnO1xyXG5cdH1cclxuXHQvL+aOp+WItumdouadv1xyXG5cdEBJbnB1dCgpIHNldCBuY0NvbnRyb2wodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuXHRcdHRoaXMuY29udHJvbE1vZGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuXHR9XHJcblx0Ly/og4zmma/mmK/lkKbpgI/mmI5cclxuXHRASW5wdXQoKSBzZXQgbmNBbHBoYSh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG5cdFx0dGhpcy5hbHBoYU1vZGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuXHR9XHJcblx0Ly/oh6rliqjml4vovaxcclxuXHRASW5wdXQoKSBzZXQgbmNBdXRvUm90YXRlKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XHJcblx0XHR0aGlzLnN0YXRlLmF1dG9Sb3RhdGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuXHRcdGlmICh0aGlzLnNjZW5lKSB7XHJcblx0XHRcdHRoaXMudG9nZ2xlQXV0b1JvdGF0ZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+iHquWKqOaXi+i9rOmAn+W6plxyXG5cdEBJbnB1dCgpIHNldCBuY0F1dG9Sb3RhdGVTcGVlZCh2YWx1ZTogbnVtYmVyKSB7XHJcblx0XHR0aGlzLnN0YXRlLmF1dG9Sb3RhdGVTcGVlZCA9IHZhbHVlO1xyXG5cdFx0aWYgKHRoaXMuc2NlbmUpIHtcclxuXHRcdFx0dGhpcy50b2dnbGVBdXRvUm90YXRlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHJcblxyXG5cdHRpcHNNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcblx0Y29udHJvbE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRhbHBoYU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cGFyYW1ldGVyc09rOiBib29sZWFuID0gdHJ1ZTtcclxuXHRvYmpJbmZvOiBOY09iakluZm8gPSB7XHJcblx0XHRvYmpVcmw6ICcnLFxyXG5cdFx0bXRsVXJsOiAnJyxcclxuXHR9O1xyXG5cdHNob3dMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblx0bG9hZGluZ1RleHQ6IHN0cmluZyA9ICcnO1xyXG5cdGxvYWRpbmdUZXh0Mjogc3RyaW5nID0gJyc7XHJcblx0ZG9tSWQgPSAnI29ialZpZXdlcic7XHJcblx0Y2FtZXJhOiBhbnk7XHJcblx0Y2FtZXJhUGxhY2VtZW50OiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblx0YmdVcmw6IHN0cmluZyA9ICcnO1xyXG5cdGJhY2tncm91bmRTcGhlcmU6IGFueTtcclxuXHRzY2VuZTogYW55O1xyXG5cdHJlbmRlcmVyOiBhbnk7XHJcblx0ZG9tV2lkdGg6IGFueTtcclxuXHRkb21IZWlnaHQ6IGFueTtcclxuXHRvYmpTY2VuZTogYW55O1xyXG5cdHNpemU6IG51bWJlciA9IDA7XHJcblx0Y2VudGVyOiBhbnk7XHJcblx0Y29udHJvbHM6IGFueTtcclxuXHJcblx0Z3VpOiBhbnk7XHJcblx0c3RhdGU6IGFueSA9IHtcclxuXHRcdHRvbmVNYXBwaW5nOiBUSFJFRS5MaW5lYXJUb25lTWFwcGluZyxcclxuXHRcdHRvbmVNYXBwaW5nRXhwb3N1cmU6IDAsXHJcblx0XHRiYWNrZ3JvdW5kOiBmYWxzZSxcclxuXHRcdGJhY2tncm91bmRDb2xvcjogJyMxOTE5MTknLFxyXG5cdFx0dXNlQmdVcmw6IGZhbHNlLFxyXG5cdFx0dXNlQmdTcGhlcmU6IGZhbHNlLFxyXG5cdFx0YXhlc0hlbHBlcjogZmFsc2UsXHJcblx0XHR3aXJlZnJhbWU6IGZhbHNlLFxyXG5cdFx0YXV0b1JvdGF0ZTogZmFsc2UsXHJcblx0XHRhdXRvUm90YXRlU3BlZWQ6IDAuNSxcclxuXHRcdGFtYmllbnRMaWdodDogdHJ1ZSxcclxuXHRcdGFtYmllbnRMaWdodENvbG9yOiAnI0ZGRkZGRicsXHJcblx0XHRhbWJpZW50TGlnaHRJbnRlbnNpdHk6IDIsXHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0OiB0cnVlLFxyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodENvbG9yOiAnI0ZGRkZGRicsXHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0SW50ZW5zaXR5OiAyLFxyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uOiB7XHJcblx0XHRcdHg6IDAsXHJcblx0XHRcdHk6IDAsXHJcblx0XHRcdHo6IDBcclxuXHRcdH0sXHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyOiBmYWxzZSxcclxuXHRcdGRpcmVjdGlvbmFsTGlnaHQyOiB0cnVlLFxyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodENvbG9yMjogJyNGRkZGRkYnLFxyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEludGVuc2l0eTI6IDIsXHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24yOiB7XHJcblx0XHRcdHg6IDAsXHJcblx0XHRcdHk6IDAsXHJcblx0XHRcdHo6IDBcclxuXHRcdH0sXHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyMjogZmFsc2UsXHJcblx0XHRwb2ludExpZ2h0OiBmYWxzZSxcclxuXHRcdHBvaW50TGlnaHRDb2xvcjogJyNGRkZGRkYnLFxyXG5cdFx0cG9pbnRMaWdodEludGVuc2l0eTogMSxcclxuXHRcdHBvaW50TGlnaHREaXN0YW5jZTogMCxcclxuXHRcdHBvaW50TGlnaHREZWNheTogMC4xLFxyXG5cdFx0cG9pbnRMaWdodFBvc2l0aW9uOiB7XHJcblx0XHRcdHg6IDAsXHJcblx0XHRcdHk6IDAsXHJcblx0XHRcdHo6IDBcclxuXHRcdH0sXHJcblx0XHRwb2ludExpZ2h0SGVscGVyOiBmYWxzZVxyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgbHM6IExvY2FsU2VydmljZSkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMub2JqSW5mby5vYmpVcmwgPT0gJycpIHtcclxuXHRcdFx0dGhpcy5wYXJhbWV0ZXJzT2sgPSBmYWxzZTtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignb2JqVXJs5Li656m6Jyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMub2JqSW5mby5tdGxVcmwgPT0gJycpIHtcclxuXHRcdFx0dGhpcy5wYXJhbWV0ZXJzT2sgPSBmYWxzZTtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignbXRsVXJs5Li656m6Jyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCF0aGlzLnBhcmFtZXRlcnNPaykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vbldpbmRvd1Jlc2l6ZSA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcclxuXHRcdHRoaXMuYW5pbWF0ZSA9IHRoaXMuYW5pbWF0ZS5iaW5kKHRoaXMpO1xyXG5cdFx0aWYgKHRoaXMubHMuaXNCcm93c2VyKSB7XHJcblx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uV2luZG93UmVzaXplKTtcclxuXHRcdH1cclxuXHRcdHNldFRpbWVvdXQoKCkgPT4gey8vZG9t5Ye6546wXHJcblx0XHRcdHRoaXMuaW5pdCgpO1xyXG5cdFx0fSwgMjApXHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmxzLmlzQnJvd3Nlcikge1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbldpbmRvd1Jlc2l6ZSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLndlYmdsTG9zZUNvbnRleHQoKTtcclxuXHR9XHJcblxyXG5cdGluaXQoKSB7XHJcblx0XHRpZiAoIXRoaXMucGFyYW1ldGVyc09rKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgb2JqQXJlYTogYW55ID0gdGhpcy5lbGVSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZG9tSWQpO1xyXG5cdFx0dGhpcy5kb21XaWR0aCA9IG9iakFyZWEub2Zmc2V0V2lkdGg7XHJcblx0XHR0aGlzLmRvbUhlaWdodCA9IG9iakFyZWEub2Zmc2V0SGVpZ2h0O1xyXG5cclxuXHRcdHRoaXMucmVuZGVyZXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJlcih7IGFudGlhbGlhczogdHJ1ZSwgYWxwaGE6IHRoaXMuYWxwaGFNb2RlIH0pO1xyXG5cdFx0dGhpcy5yZW5kZXJlci5zZXRQaXhlbFJhdGlvKG9iakFyZWEuZGV2aWNlUGl4ZWxSYXRpbyk7XHJcblx0XHR0aGlzLnJlbmRlcmVyLnNldFNpemUodGhpcy5kb21XaWR0aCwgdGhpcy5kb21IZWlnaHQpO1xyXG5cdFx0dGhpcy5yZW5kZXJlci5vdXRwdXRDb2xvclNwYWNlID0gVEhSRUUuU1JHQkNvbG9yU3BhY2U7XHJcblx0XHRvYmpBcmVhLmFwcGVuZENoaWxkKHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudCk7XHJcblxyXG5cdFx0dGhpcy5zY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xyXG5cdFx0Y29uc3QgZW52aXJvbm1lbnQgPSBuZXcgUm9vbUVudmlyb25tZW50KCk7XHJcblx0XHRjb25zdCBwbXJlbUdlbmVyYXRvciA9IG5ldyBUSFJFRS5QTVJFTUdlbmVyYXRvcih0aGlzLnJlbmRlcmVyKTtcclxuXHRcdHRoaXMuc2NlbmUuZW52aXJvbm1lbnQgPSBwbXJlbUdlbmVyYXRvci5mcm9tU2NlbmUoZW52aXJvbm1lbnQpLnRleHR1cmU7XHJcblxyXG5cdFx0dGhpcy51cGRhdGVNb2RlbCgpO1xyXG5cdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZSk7XHJcblx0fVxyXG5cclxuXHRyZW5kZXIoKSB7XHJcblx0XHR0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLmNhbWVyYSk7XHJcblx0fVxyXG5cclxuXHRhbmltYXRlKCkge1xyXG5cdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZSk7XHJcblx0XHQvLyByZXF1aXJlZCBpZiBjb250cm9scy5lbmFibGVEYW1waW5nIG9yIGNvbnRyb2xzLmF1dG9Sb3RhdGUgYXJlIHNldCB0byB0cnVlXHJcblx0XHRpZiAodGhpcy5jb250cm9scykge1xyXG5cdFx0XHR0aGlzLmNvbnRyb2xzLnVwZGF0ZSgpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuc2NlbmUgJiYgdGhpcy5jYW1lcmEpIHtcclxuXHRcdFx0dGhpcy5yZW5kZXIoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uV2luZG93UmVzaXplKCkge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdGxldCBvYmpBcmVhOiBhbnkgPSB0aGlzLmVsZVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5kb21JZCk7XHJcblx0XHRcdGNvbnN0IHdpZHRoID0gb2JqQXJlYS5vZmZzZXRXaWR0aDtcclxuXHRcdFx0Y29uc3QgaGVpZ2h0ID0gb2JqQXJlYS5vZmZzZXRIZWlnaHQ7XHJcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhvYmpBcmVhLmRldmljZVBpeGVsUmF0aW8pO1xyXG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFNpemUod2lkdGgsIGhlaWdodCk7XHJcblx0XHRcdHRoaXMucmVuZGVyKCk7XHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0Ly/mm7TmlrDmqKHlnotcclxuXHR1cGRhdGVNb2RlbCgpIHtcclxuXHRcdHRoaXMuc2hvd0xvYWRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5sb2FkaW5nVGV4dCA9ICfmqKHlnovliqDovb3kuK0uLi4nO1xyXG5cdFx0dGhpcy5sb2FkaW5nVGV4dDIgPSAnJztcclxuXHJcblx0XHRpZiAodGhpcy5vYmpTY2VuZSkge1xyXG5cdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLm9ialNjZW5lKTtcclxuXHRcdFx0dGhpcy5vYmpTY2VuZSA9IG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0bGV0IGJhc2VVcmwgPSB0aGlzLm9iakluZm8ub2JqVXJsLnNwbGl0KCcvJykuc2xpY2UoMCwgLTEpLmpvaW4oJy8nKTtcclxuXHJcblx0XHQvLyDliJvlu7rmlrDnmoRMb2FkaW5nTWFuYWdlcuadpemHjee9rui/m+W6puiuoeaVsFxyXG5cdFx0Y29uc3QgbWFuYWdlciA9IG5ldyBUSFJFRS5Mb2FkaW5nTWFuYWdlcigpO1xyXG5cdFx0bWFuYWdlci5vblByb2dyZXNzID0gKHVybDogc3RyaW5nLCBsb2FkZWQ6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT4ge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmdUZXh0ID0gYOato+WcqOWKoOi9vei1hOa6kO+8iCR7bG9hZGVkfS8ke3RvdGFsfe+8iWA7XHJcblx0XHRcdGlmIChsb2FkZWQgPT0gdG90YWwpIHtcclxuXHRcdFx0XHR0aGlzLnNob3dMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0bmV3IE1UTExvYWRlcihtYW5hZ2VyKS5sb2FkKHRoaXMub2JqSW5mby5tdGxVcmwsIChNYXRlcmlhbENyZWF0b3I6IGFueSkgPT4ge1xyXG5cdFx0XHQvLyDlnKhwcmVsb2FkKCnkuYvliY3lhYjlpITnkIbmnZDotKjkv6Hmga/vvIzlpoLmnpzmnInotLTlm77vvIzliJnmm7/mjaLkuLpvYmrlkIznm67lvZXkuIvnmoTlm77niYdcclxuXHRcdFx0Zm9yIChsZXQgbmFtZSBpbiBNYXRlcmlhbENyZWF0b3IubWF0ZXJpYWxzSW5mbykge1xyXG5cdFx0XHRcdGxldCBtYXRlcmlhbEluZm8gPSBNYXRlcmlhbENyZWF0b3IubWF0ZXJpYWxzSW5mb1tuYW1lXTtcclxuXHRcdFx0XHQvLyDpnIDopoHlpITnkIbnmoTotLTlm77nsbvlnotcclxuXHRcdFx0XHRjb25zdCBtYXBUeXBlcyA9IFtcclxuXHRcdFx0XHRcdCdtYXBfa2QnLCAgICAgLy8g5ryr5Y+N5bCE6LS05Zu+XHJcblx0XHRcdFx0XHQnbWFwX2tzJywgICAgIC8vIOmrmOWFiei0tOWbviAgXHJcblx0XHRcdFx0XHQnbWFwX2thJywgICAgIC8vIOeOr+Wig+WFiei0tOWbvlxyXG5cdFx0XHRcdFx0J21hcF9kJywgICAgICAvLyDpgI/mmI7luqbotLTlm75cclxuXHRcdFx0XHRcdCdtYXBfYnVtcCcsICAgLy8g5Ye55Ye46LS05Zu+XHJcblx0XHRcdFx0XHQnYnVtcCcsICAgICAgIC8vIOWHueWHuOi0tOWbvlxyXG5cdFx0XHRcdFx0J2Rpc3AnLCAgICAgICAvLyDkvY3np7votLTlm75cclxuXHRcdFx0XHRcdCdkZWNhbCcgICAgICAgLy8g6LS06Iqx6LS05Zu+XHJcblx0XHRcdFx0XTtcclxuXHRcdFx0XHRtYXBUeXBlcy5tYXAoKHR5cGU6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKG1hdGVyaWFsSW5mby5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbWFwX3R5cGVfdXJsID0gbWF0ZXJpYWxJbmZvW3R5cGVdO1xyXG5cdFx0XHRcdFx0XHRsZXQgbWFwX3R5cGVfbmFtZSA9IG1hcF90eXBlX3VybC5zcGxpdCgvW1xcL1xcXFxdLykucG9wKCk7XHJcblx0XHRcdFx0XHRcdG1hdGVyaWFsSW5mb1t0eXBlXSA9IGJhc2VVcmwgKyAnLycgKyBtYXBfdHlwZV9uYW1lO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdE1hdGVyaWFsQ3JlYXRvci5wcmVsb2FkKCk7XHJcblxyXG5cdFx0XHRuZXcgT0JKTG9hZGVyKG1hbmFnZXIpLnNldE1hdGVyaWFscyhNYXRlcmlhbENyZWF0b3IpLmxvYWQodGhpcy5vYmpJbmZvLm9ialVybCwgKG9iamVjdDogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5vYmpTY2VuZSA9IG9iamVjdDtcclxuXHJcblx0XHRcdFx0Y29uc3QgYm94ID0gbmV3IFRIUkVFLkJveDMoKS5zZXRGcm9tT2JqZWN0KHRoaXMub2JqU2NlbmUpO1xyXG5cdFx0XHRcdHRoaXMuc2l6ZSA9IGJveC5nZXRTaXplKG5ldyBUSFJFRS5WZWN0b3IzKCkpLmxlbmd0aCgpO1xyXG5cdFx0XHRcdHRoaXMuY2VudGVyID0gYm94LmdldENlbnRlcihuZXcgVEhSRUUuVmVjdG9yMygpKTtcclxuXHJcblx0XHRcdFx0Ly/lsIblnZDmoIfns7vljp/ngrnorr7nva7lnKjmqKHlnovkuK3lv4NcclxuXHRcdFx0XHR0aGlzLm9ialNjZW5lLnBvc2l0aW9uLnggLT0gdGhpcy5jZW50ZXIueDtcclxuXHRcdFx0XHR0aGlzLm9ialNjZW5lLnBvc2l0aW9uLnkgLT0gdGhpcy5jZW50ZXIueTtcclxuXHRcdFx0XHR0aGlzLm9ialNjZW5lLnBvc2l0aW9uLnogLT0gdGhpcy5jZW50ZXIuejtcclxuXHJcblx0XHRcdFx0Ly9QZXJzcGVjdGl2ZUNhbWVyYSggZm92IDogTnVtYmVyLCBhc3BlY3QgOiBOdW1iZXIsIG5lYXIgOiBOdW1iZXIsIGZhciA6IE51bWJlciApXHJcblx0XHRcdFx0Ly8gZm92IOKAlCDmkYTlg4/mnLrop4bplKXkvZPlnoLnm7Top4bph47op5LluqbvvIznnLznnZvlvKDlvIDnmoTop5LluqbvvIww6Zet55y8XHJcblx0XHRcdFx0Ly8gYXNwZWN0IOKAlCDmkYTlg4/mnLrop4bplKXkvZPplb/lrr3mr5RcclxuXHRcdFx0XHQvLyBuZWFyIOKAlCDmkYTlg4/mnLrop4bplKXkvZPov5Hnq6/pnaLvvIzog73nnIvliLDnmoTmnIDov5HlnoLnm7Tot53nprtcclxuXHRcdFx0XHQvLyBmYXIg4oCUIOaRhOWDj+acuuinhumUpeS9k+i/nOerr+mdou+8jOiDveeci+WIsOeahOacgOi/nOWeguebtOi3neemu1xyXG5cdFx0XHRcdHRoaXMuY2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDUwLCB0aGlzLmRvbVdpZHRoIC8gdGhpcy5kb21IZWlnaHQsIHRoaXMuc2l6ZSAvIDEwMCwgdGhpcy5zaXplICogMTAwKTtcclxuXHRcdFx0XHR0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XHJcblx0XHRcdFx0Ly9wb3NpdGlvbi3mkYTlg4/mnLrkvY3nva5cclxuXHRcdFx0XHQvL2xvb2tBdC3mkYTlg4/mnLrmnJvlkJHkvY3nva4gIFxyXG5cdFx0XHRcdHRoaXMuc2V0Q2FtZXJhUGxhY2VtZW50KCk7XHJcblxyXG5cdFx0XHRcdC8vY29udHJvbHNcclxuXHRcdFx0XHR0aGlzLmNvbnRyb2xzID0gbmV3IE9yYml0Q29udHJvbHModGhpcy5jYW1lcmEsIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudCk7XHJcblxyXG5cdFx0XHRcdC8v5qC55o2u5qih5Z6Lc2l6ZeWIneWni+WMlnN0YXRl6YOo5YiG5Y+C5pWwXHJcblx0XHRcdFx0dGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24ueCA9IHRoaXMuc2l6ZTtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbi55ID0gdGhpcy5zaXplIC8gMjtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbi56ID0gdGhpcy5zaXplO1xyXG5cdFx0XHRcdHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uMi54ID0gLXRoaXMuc2l6ZTtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIueSA9IC10aGlzLnNpemUgLyAyO1xyXG5cdFx0XHRcdHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uMi56ID0gLXRoaXMuc2l6ZTtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi54ID0gdGhpcy5zaXplIC8gMjtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi55ID0gMDtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi56ID0gMDtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLnBvaW50TGlnaHREaXN0YW5jZSA9IHRoaXMuc2l6ZTtcclxuXHJcblx0XHRcdFx0Ly/mt7vliqDpu5jorqTlhYnmupAo5re75Yqg6IezY2FtZXJh77yM5YWJ5rqQ5Zu65a6a5L2N572u77yM5LiN6ZqP5Zy65pmv5peL6L2sKVxyXG5cdFx0XHRcdC8vIHRoaXMuc2NlbmUuYWRkKHRoaXMuY2FtZXJhKTtcclxuXHRcdFx0XHQvLyBsZXQgZGVmYXVsdExpZ2h0ID0gbmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQoJyNGRkZGRkYnLCAxLjUpO1xyXG5cdFx0XHRcdC8vIGRlZmF1bHRMaWdodC5wb3NpdGlvbi5zZXQoMCwgMCwgdGhpcy5zaXplIC8gMik7XHJcblx0XHRcdFx0Ly8gdGhpcy5jYW1lcmEuYWRkKGRlZmF1bHRMaWdodCk7XHJcblxyXG5cdFx0XHRcdC8v5re75YqgR1VJ5o6n5Yi26Z2i5p2/XHJcblx0XHRcdFx0aWYgKHRoaXMuY29udHJvbE1vZGUpIHtcclxuXHRcdFx0XHRcdHRoaXMuYWRkR1VJKCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmd1aSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmd1aS5kZXN0cm95KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZ3VpID0gbnVsbDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8v5qC55o2uc3RhdGXlj4LmlbDliJ3lp4vljJbnm7jlhbPorr7nva5cclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVRvbmVNYXBwaW5nKCk7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVUb25lTWFwcGluZ0V4cG9zdXJlKCk7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVCYWNrZ3JvdW5kKCk7XHJcblx0XHRcdFx0dGhpcy50b2dnbGVBeGVzSGVscGVyKCk7XHJcblx0XHRcdFx0dGhpcy50b2dnbGVXaXJlZnJhbWUoKTtcclxuXHRcdFx0XHR0aGlzLnRvZ2dsZUF1dG9Sb3RhdGUoKTtcclxuXHRcdFx0XHR0aGlzLnRvZ2dsZUFtYmllbnRMaWdodCgpO1xyXG5cdFx0XHRcdC8vIHRoaXMudXBkYXRlQW1iaWVudExpZ2h0KCk7XHJcblx0XHRcdFx0dGhpcy50b2dnbGVEaXJlY3Rpb25hbExpZ2h0KCk7XHJcblx0XHRcdFx0Ly8gdGhpcy51cGRhdGVEaXJlY3Rpb25hbExpZ2h0KCk7XHJcblx0XHRcdFx0dGhpcy50b2dnbGVEaXJlY3Rpb25hbExpZ2h0SGVscGVyKCk7XHJcblx0XHRcdFx0dGhpcy50b2dnbGVEaXJlY3Rpb25hbExpZ2h0MigpO1xyXG5cdFx0XHRcdC8vIHRoaXMudXBkYXRlRGlyZWN0aW9uYWxMaWdodDIoKTtcclxuXHRcdFx0XHR0aGlzLnRvZ2dsZURpcmVjdGlvbmFsTGlnaHRIZWxwZXIyKCk7XHJcblx0XHRcdFx0dGhpcy50b2dnbGVQb2ludExpZ2h0KCk7XHJcblx0XHRcdFx0Ly8gdGhpcy51cGRhdGVQb2ludExpZ2h0KCk7XHJcblx0XHRcdFx0dGhpcy50b2dnbGVQb2ludExpZ2h0SGVscGVyKCk7XHJcblxyXG5cdFx0XHRcdHRoaXMuc2NlbmUuYWRkKHRoaXMub2JqU2NlbmUpO1xyXG5cdFx0XHR9LCB4aHIgPT4ge1xyXG5cdFx0XHRcdGlmICh4aHIubG9hZGVkICE9IHhoci50b3RhbCkge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nVGV4dDIgPSAn5qih5Z6L5LiL6L29ICcgKyAoeGhyLmxvYWRlZCAvIHhoci50b3RhbCAqIDEwMCkudG9GaXhlZCgwKSArICcgJSc7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZGluZ1RleHQyID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly/orr7nva7nm7jmnLrop5LluqblkozmnJvlkJHkvY3nva5cclxuXHRzZXRDYW1lcmFQbGFjZW1lbnQoKSB7XHJcblx0XHRzd2l0Y2ggKHRoaXMuY2FtZXJhUGxhY2VtZW50KSB7XHJcblx0XHRcdGNhc2UgJ2xlZnQnOi8veC3nuqJcclxuXHRcdFx0XHR0aGlzLmNhbWVyYS5wb3NpdGlvbi5zZXQoLXRoaXMuc2l6ZSwgMCwgMCk7XHJcblx0XHRcdFx0dGhpcy5jYW1lcmEubG9va0F0KDAsIDAsIDApO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdyaWdodCc6Ly94Lee6olxyXG5cdFx0XHRcdHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCh0aGlzLnNpemUsIDAsIDApO1xyXG5cdFx0XHRcdHRoaXMuY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAndG9wJzovL3kt57u/XHJcblx0XHRcdFx0dGhpcy5jYW1lcmEucG9zaXRpb24uc2V0KDAsIHRoaXMuc2l6ZSwgMCk7XHJcblx0XHRcdFx0dGhpcy5jYW1lcmEubG9va0F0KDAsIDAsIDApO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdib3R0b20nOi8veS3nu79cclxuXHRcdFx0XHR0aGlzLmNhbWVyYS5wb3NpdGlvbi5zZXQoMCwgLXRoaXMuc2l6ZSwgMCk7XHJcblx0XHRcdFx0dGhpcy5jYW1lcmEubG9va0F0KDAsIDAsIDApO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdmcm9udCc6Ly96LeiTnVxyXG5cdFx0XHRcdHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAwLCB0aGlzLnNpemUpO1xyXG5cdFx0XHRcdHRoaXMuY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnYmFjayc6Ly96LeiTnVxyXG5cdFx0XHRcdHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAwLCAtdGhpcy5zaXplKTtcclxuXHRcdFx0XHR0aGlzLmNhbWVyYS5sb29rQXQoMCwgMCwgMCk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0dGhpcy5jYW1lcmEucG9zaXRpb24uc2V0KHRoaXMuc2l6ZSAvIDEuMywgdGhpcy5zaXplIC8gMS41LCB0aGlzLnNpemUgLyAxLjMpO1xyXG5cdFx0XHRcdHRoaXMuY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vYWRkIEdVSVxyXG5cdGFkZEdVSSgpIHtcclxuXHRcdC8v5oqY5Y+g5Y+C5pWwXHJcblx0XHRsZXQgY2xvc2VTdGF0ZTogYW55ID0ge1xyXG5cdFx0XHRndWk6IGZhbHNlLFxyXG5cdFx0XHRkaXNwbGF5Rm9sZGVyOiBmYWxzZSxcclxuXHRcdFx0YW1iaWVudExpZ2h0Rm9sZGVyOiB0cnVlLFxyXG5cdFx0XHRkaXJlY3Rpb25hbExpZ2h0Rm9sZGVyOiB0cnVlLFxyXG5cdFx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyOiBmYWxzZSxcclxuXHRcdFx0ZGlyZWN0aW9uYWxMaWdodEZvbGRlcjI6IHRydWUsXHJcblx0XHRcdGRpcmVjdGlvbmFsTGlnaHRIZWxwZXJGb2xkZXIyOiBmYWxzZSxcclxuXHRcdFx0cG9pbnRMaWdodEZvbGRlcjogdHJ1ZSxcclxuXHRcdFx0cG9pbnRsTGlnaHRIZWxwZXJGb2xkZXI6IGZhbHNlXHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5ndWkpIHtcclxuXHRcdFx0Ly/orrDlvZXkuIrkuKpndWnnmoTpnaLmnb/mipjlj6DlgLxcclxuXHRcdFx0Y2xvc2VTdGF0ZSA9IHtcclxuXHRcdFx0XHRndWk6IHRoaXMuZ3VpLl9jbG9zZWQsXHJcblx0XHRcdFx0ZGlzcGxheUZvbGRlcjogdGhpcy5ndWkuY2hpbGRyZW5bMF0uX2Nsb3NlZCxcclxuXHRcdFx0XHRhbWJpZW50TGlnaHRGb2xkZXI6IHRoaXMuZ3VpLmNoaWxkcmVuWzFdLl9jbG9zZWQsXHJcblx0XHRcdFx0ZGlyZWN0aW9uYWxMaWdodEZvbGRlcjogdGhpcy5ndWkuY2hpbGRyZW5bMl0uX2Nsb3NlZCxcclxuXHRcdFx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyOiB0aGlzLmd1aS5jaGlsZHJlblsyXS5jaGlsZHJlblszXS5fY2xvc2VkLFxyXG5cdFx0XHRcdGRpcmVjdGlvbmFsTGlnaHRGb2xkZXIyOiB0aGlzLmd1aS5jaGlsZHJlblszXS5fY2xvc2VkLFxyXG5cdFx0XHRcdGRpcmVjdGlvbmFsTGlnaHRIZWxwZXJGb2xkZXIyOiB0aGlzLmd1aS5jaGlsZHJlblszXS5jaGlsZHJlblszXS5fY2xvc2VkLFxyXG5cdFx0XHRcdHBvaW50TGlnaHRGb2xkZXI6IHRoaXMuZ3VpLmNoaWxkcmVuWzRdLl9jbG9zZWQsXHJcblx0XHRcdFx0cG9pbnRsTGlnaHRIZWxwZXJGb2xkZXI6IHRoaXMuZ3VpLmNoaWxkcmVuWzRdLmNoaWxkcmVuWzVdLl9jbG9zZWRcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmd1aS5kZXN0cm95KCk7XHJcblx0XHRcdHRoaXMuZ3VpID0gbnVsbDtcclxuXHRcdH1cclxuXHRcdHRoaXMuZ3VpID0gbmV3IEdVSSh7IHRpdGxlOiAn5o6n5Yi26Z2i5p2/JywgY29udGFpbmVyOiB0aGlzLmVsZVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjb250cm9sJykgfSk7XHJcblx0XHRpZiAoY2xvc2VTdGF0ZS5ndWkpIHtcclxuXHRcdFx0dGhpcy5ndWkuY2xvc2UoKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGRpc3BsYXlGb2xkZXIgPSB0aGlzLmd1aS5hZGRGb2xkZXIoJ+aYvuekuuiuvue9ricpO1xyXG5cdFx0aWYgKGNsb3NlU3RhdGUuZGlzcGxheUZvbGRlcikge1xyXG5cdFx0XHRkaXNwbGF5Rm9sZGVyLmNsb3NlKCk7XHJcblx0XHR9XHJcblx0XHRkaXNwbGF5Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAndG9uZU1hcHBpbmcnLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0J0FDRVNGaWxtaWMnOiBUSFJFRS5BQ0VTRmlsbWljVG9uZU1hcHBpbmcsXHJcblx0XHRcdFx0J0xpbmVhcic6IFRIUkVFLkxpbmVhclRvbmVNYXBwaW5nLFxyXG5cdFx0XHRcdCdSZWluaGFyZCc6IFRIUkVFLlJlaW5oYXJkVG9uZU1hcHBpbmcsXHJcblx0XHRcdFx0J0NpbmVvbic6IFRIUkVFLkNpbmVvblRvbmVNYXBwaW5nLFxyXG5cdFx0XHRcdCdBZ1gnOiBUSFJFRS5BZ1hUb25lTWFwcGluZyxcclxuXHRcdFx0XHQnTmV1dHJhbCc6IFRIUkVFLk5ldXRyYWxUb25lTWFwcGluZ1xyXG5cdFx0XHR9XHJcblx0XHQpLm5hbWUoJ+iJsuiwgycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlVG9uZU1hcHBpbmcoKSk7XHJcblx0XHRkaXNwbGF5Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAndG9uZU1hcHBpbmdFeHBvc3VyZScsIC0xMCwgNSwgMC4wMSkubmFtZSgn5pud5YWJJykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVUb25lTWFwcGluZ0V4cG9zdXJlKCkpO1xyXG5cdFx0ZGlzcGxheUZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ2JhY2tncm91bmQnKS5uYW1lKCflkK/nlKjlnLrmma/og4zmma8nKS5saXN0ZW4oKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZUJhY2tncm91bmQoKSk7XHJcblx0XHRkaXNwbGF5Rm9sZGVyLmFkZENvbG9yKHRoaXMuc3RhdGUsICdiYWNrZ3JvdW5kQ29sb3InKS5uYW1lKCflnLrmma/og4zmma/oibInKS5saXN0ZW4oKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZUJhY2tncm91bmQoKSk7XHJcblx0XHQvL+S8oOWFpeiDjOaZr+WbvuaJjeaYvuekuuiDjOaZr+Wbvuiuvue9rlxyXG5cdFx0aWYgKHRoaXMuYmdVcmwpIHtcclxuXHRcdFx0ZGlzcGxheUZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ3VzZUJnVXJsJykubmFtZSgn5L2/55So6IOM5pmv6LS05Zu+JykubGlzdGVuKCkub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVCYWNrZ3JvdW5kKCkpO1xyXG5cdFx0XHRkaXNwbGF5Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAndXNlQmdTcGhlcmUnKS5uYW1lKCfnkIPlvaLog4zmma/otLTlm74nKS5saXN0ZW4oKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZUJhY2tncm91bmQoKSk7XHJcblx0XHR9XHJcblx0XHRkaXNwbGF5Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAnYXhlc0hlbHBlcicpLm5hbWUoJ+WdkOagh+ezuycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlQXhlc0hlbHBlcigpKTtcclxuXHRcdGRpc3BsYXlGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICd3aXJlZnJhbWUnKS5uYW1lKCfnur/moYbmqKHlvI8nKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnRvZ2dsZVdpcmVmcmFtZSgpKTtcclxuXHRcdGRpc3BsYXlGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdhdXRvUm90YXRlJykubGlzdGVuKCkubmFtZSgn6Ieq5Yqo5peL6L2sJykub25DaGFuZ2UoKCkgPT4gdGhpcy50b2dnbGVBdXRvUm90YXRlKCkpO1xyXG5cdFx0ZGlzcGxheUZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ2F1dG9Sb3RhdGVTcGVlZCcsIC0xMC4wLCAxMC4wLCAwLjEpLmxpc3RlbigpLm5hbWUoJ+aXi+i9rOmAn+W6picpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlQXV0b1JvdGF0ZSgpKTtcclxuXHJcblx0XHRjb25zdCBhbWJpZW50TGlnaHRGb2xkZXIgPSB0aGlzLmd1aS5hZGRGb2xkZXIoJ+eOr+Wig+WFiScpO1xyXG5cdFx0aWYgKGNsb3NlU3RhdGUuYW1iaWVudExpZ2h0Rm9sZGVyKSB7XHJcblx0XHRcdGFtYmllbnRMaWdodEZvbGRlci5jbG9zZSgpO1xyXG5cdFx0fVxyXG5cdFx0YW1iaWVudExpZ2h0Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAnYW1iaWVudExpZ2h0JykubmFtZSgn5ZCv55SoJykub25DaGFuZ2UoKCkgPT4gdGhpcy50b2dnbGVBbWJpZW50TGlnaHQoKSk7XHJcblx0XHRhbWJpZW50TGlnaHRGb2xkZXIuYWRkQ29sb3IodGhpcy5zdGF0ZSwgJ2FtYmllbnRMaWdodENvbG9yJykubmFtZSgn6aKc6ImyJykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVBbWJpZW50TGlnaHQoKSk7XHJcblx0XHRhbWJpZW50TGlnaHRGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdhbWJpZW50TGlnaHRJbnRlbnNpdHknLCAwLCAxMCwgMC4xKS5uYW1lKCflvLrluqYnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZUFtYmllbnRMaWdodCgpKTtcclxuXHJcblx0XHRjb25zdCBkaXJlY3Rpb25hbExpZ2h0Rm9sZGVyID0gdGhpcy5ndWkuYWRkRm9sZGVyKCflrprlkJHlhYkxJyk7XHJcblx0XHRpZiAoY2xvc2VTdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Rm9sZGVyKSB7XHJcblx0XHRcdGRpcmVjdGlvbmFsTGlnaHRGb2xkZXIuY2xvc2UoKTtcclxuXHRcdH1cclxuXHRcdGRpcmVjdGlvbmFsTGlnaHRGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdkaXJlY3Rpb25hbExpZ2h0JykubmFtZSgn5ZCv55SoJykub25DaGFuZ2UoKCkgPT4gdGhpcy50b2dnbGVEaXJlY3Rpb25hbExpZ2h0KCkpO1xyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEZvbGRlci5hZGRDb2xvcih0aGlzLnN0YXRlLCAnZGlyZWN0aW9uYWxMaWdodENvbG9yJykubmFtZSgn6aKc6ImyJykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVEaXJlY3Rpb25hbExpZ2h0KCkpO1xyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ2RpcmVjdGlvbmFsTGlnaHRJbnRlbnNpdHknLCAwLCAxMCwgMC4xKS5uYW1lKCflvLrluqYnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZURpcmVjdGlvbmFsTGlnaHQoKSk7XHJcblx0XHRjb25zdCBkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyID0gZGlyZWN0aW9uYWxMaWdodEZvbGRlci5hZGRGb2xkZXIoJ+WumuWQkeWFieS9jee9ricpO1xyXG5cdFx0aWYgKGNsb3NlU3RhdGUuZGlyZWN0aW9uYWxMaWdodEhlbHBlckZvbGRlcikge1xyXG5cdFx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyLmNsb3NlKCk7XHJcblx0XHR9XHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAnZGlyZWN0aW9uYWxMaWdodEhlbHBlcicpLmxpc3RlbigpLm5hbWUoJ+S9jee9ruaooeaLnycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlRGlyZWN0aW9uYWxMaWdodEhlbHBlcigpKTtcclxuXHRcdGRpcmVjdGlvbmFsTGlnaHRIZWxwZXJGb2xkZXIuYWRkKHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uLCAneCcsIC10aGlzLnNpemUsIHRoaXMuc2l6ZSkubmFtZSgneO+8iOWdkOagh+ezuy3nuqLvvIknKS5kZWNpbWFscygyKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZURpcmVjdGlvbmFsTGlnaHQoKSk7XHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyLmFkZCh0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbiwgJ3knLCAtdGhpcy5zaXplLCB0aGlzLnNpemUpLm5hbWUoJ3nvvIjlnZDmoIfns7st57u/77yJJykuZGVjaW1hbHMoMikub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVEaXJlY3Rpb25hbExpZ2h0KCkpO1xyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEhlbHBlckZvbGRlci5hZGQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24sICd6JywgLXRoaXMuc2l6ZSwgdGhpcy5zaXplKS5uYW1lKCd677yI5Z2Q5qCH57O7LeiTne+8iScpLmRlY2ltYWxzKDIpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlRGlyZWN0aW9uYWxMaWdodCgpKTtcclxuXHJcblx0XHRjb25zdCBkaXJlY3Rpb25hbExpZ2h0Rm9sZGVyMiA9IHRoaXMuZ3VpLmFkZEZvbGRlcign5a6a5ZCR5YWJMicpO1xyXG5cdFx0aWYgKGNsb3NlU3RhdGUuZGlyZWN0aW9uYWxMaWdodEZvbGRlcjIpIHtcclxuXHRcdFx0ZGlyZWN0aW9uYWxMaWdodEZvbGRlcjIuY2xvc2UoKTtcclxuXHRcdH1cclxuXHRcdGRpcmVjdGlvbmFsTGlnaHRGb2xkZXIyLmFkZCh0aGlzLnN0YXRlLCAnZGlyZWN0aW9uYWxMaWdodDInKS5uYW1lKCflkK/nlKgnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnRvZ2dsZURpcmVjdGlvbmFsTGlnaHQyKCkpO1xyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEZvbGRlcjIuYWRkQ29sb3IodGhpcy5zdGF0ZSwgJ2RpcmVjdGlvbmFsTGlnaHRDb2xvcjInKS5uYW1lKCfpopzoibInKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZURpcmVjdGlvbmFsTGlnaHQyKCkpO1xyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEZvbGRlcjIuYWRkKHRoaXMuc3RhdGUsICdkaXJlY3Rpb25hbExpZ2h0SW50ZW5zaXR5MicsIDAsIDEwLCAwLjEpLm5hbWUoJ+W8uuW6picpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlRGlyZWN0aW9uYWxMaWdodDIoKSk7XHJcblx0XHRjb25zdCBkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyMiA9IGRpcmVjdGlvbmFsTGlnaHRGb2xkZXIyLmFkZEZvbGRlcign5a6a5ZCR5YWJ5L2N572uJyk7XHJcblx0XHRpZiAoY2xvc2VTdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyMikge1xyXG5cdFx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyMi5jbG9zZSgpO1xyXG5cdFx0fVxyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEhlbHBlckZvbGRlcjIuYWRkKHRoaXMuc3RhdGUsICdkaXJlY3Rpb25hbExpZ2h0SGVscGVyMicpLmxpc3RlbigpLm5hbWUoJ+S9jee9ruaooeaLnycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlRGlyZWN0aW9uYWxMaWdodEhlbHBlcjIoKSk7XHJcblx0XHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyMi5hZGQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24yLCAneCcsIC10aGlzLnNpemUsIHRoaXMuc2l6ZSkubmFtZSgneO+8iOWdkOagh+ezuy3nuqLvvIknKS5kZWNpbWFscygyKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZURpcmVjdGlvbmFsTGlnaHQyKCkpO1xyXG5cdFx0ZGlyZWN0aW9uYWxMaWdodEhlbHBlckZvbGRlcjIuYWRkKHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uMiwgJ3knLCAtdGhpcy5zaXplLCB0aGlzLnNpemUpLm5hbWUoJ3nvvIjlnZDmoIfns7st57u/77yJJykuZGVjaW1hbHMoMikub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVEaXJlY3Rpb25hbExpZ2h0MigpKTtcclxuXHRcdGRpcmVjdGlvbmFsTGlnaHRIZWxwZXJGb2xkZXIyLmFkZCh0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIsICd6JywgLXRoaXMuc2l6ZSwgdGhpcy5zaXplKS5uYW1lKCd677yI5Z2Q5qCH57O7LeiTne+8iScpLmRlY2ltYWxzKDIpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlRGlyZWN0aW9uYWxMaWdodDIoKSk7XHJcblxyXG5cdFx0Y29uc3QgcG9pbnRMaWdodEZvbGRlciA9IHRoaXMuZ3VpLmFkZEZvbGRlcign54K55YWJ5rqQJyk7XHJcblx0XHRpZiAoY2xvc2VTdGF0ZS5wb2ludExpZ2h0Rm9sZGVyKSB7XHJcblx0XHRcdHBvaW50TGlnaHRGb2xkZXIuY2xvc2UoKTtcclxuXHRcdH1cclxuXHRcdHBvaW50TGlnaHRGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdwb2ludExpZ2h0JykubmFtZSgn5ZCv55SoJykub25DaGFuZ2UoKCkgPT4gdGhpcy50b2dnbGVQb2ludExpZ2h0KCkpO1xyXG5cdFx0cG9pbnRMaWdodEZvbGRlci5hZGRDb2xvcih0aGlzLnN0YXRlLCAncG9pbnRMaWdodENvbG9yJykubmFtZSgn6aKc6ImyJykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVQb2ludExpZ2h0KCkpO1xyXG5cdFx0cG9pbnRMaWdodEZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ3BvaW50TGlnaHRJbnRlbnNpdHknLCAwLCAxMCwgMC4xKS5uYW1lKCflvLrluqYnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZVBvaW50TGlnaHQoKSk7XHJcblx0XHRwb2ludExpZ2h0Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAncG9pbnRMaWdodERpc3RhbmNlJywgMCwgdGhpcy5zaXplKS5uYW1lKCfojIPlm7QnKS5kZWNpbWFscygyKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZVBvaW50TGlnaHQoKSk7XHJcblx0XHRwb2ludExpZ2h0Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAncG9pbnRMaWdodERlY2F5JywgMCwgMiwgMC4xKS5uYW1lKCfoobDlh48nKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZVBvaW50TGlnaHQoKSk7XHJcblx0XHRjb25zdCBwb2ludGxMaWdodEhlbHBlckZvbGRlciA9IHBvaW50TGlnaHRGb2xkZXIuYWRkRm9sZGVyKCfngrnlhYnmupDkvY3nva4nKTtcclxuXHRcdGlmIChjbG9zZVN0YXRlLnBvaW50bExpZ2h0SGVscGVyRm9sZGVyKSB7XHJcblx0XHRcdHBvaW50bExpZ2h0SGVscGVyRm9sZGVyLmNsb3NlKCk7XHJcblx0XHR9XHJcblx0XHRwb2ludGxMaWdodEhlbHBlckZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ3BvaW50TGlnaHRIZWxwZXInKS5saXN0ZW4oKS5uYW1lKCfkvY3nva7mqKHmi58nKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnRvZ2dsZVBvaW50TGlnaHRIZWxwZXIoKSk7XHJcblx0XHRwb2ludGxMaWdodEhlbHBlckZvbGRlci5hZGQodGhpcy5zdGF0ZS5wb2ludExpZ2h0UG9zaXRpb24sICd4JywgLXRoaXMuc2l6ZSwgdGhpcy5zaXplKS5uYW1lKCd477yI5Z2Q5qCH57O7Lee6ou+8iScpLmRlY2ltYWxzKDIpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlUG9pbnRMaWdodCgpKTtcclxuXHRcdHBvaW50bExpZ2h0SGVscGVyRm9sZGVyLmFkZCh0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbiwgJ3knLCAtdGhpcy5zaXplLCB0aGlzLnNpemUpLm5hbWUoJ3nvvIjlnZDmoIfns7st57u/77yJJykuZGVjaW1hbHMoMikub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVQb2ludExpZ2h0KCkpO1xyXG5cdFx0cG9pbnRsTGlnaHRIZWxwZXJGb2xkZXIuYWRkKHRoaXMuc3RhdGUucG9pbnRMaWdodFBvc2l0aW9uLCAneicsIC10aGlzLnNpemUsIHRoaXMuc2l6ZSkubmFtZSgneu+8iOWdkOagh+ezuy3ok53vvIknKS5kZWNpbWFscygyKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZVBvaW50TGlnaHQoKSk7XHJcblx0fVxyXG5cclxuXHQvL+iJsuiwg1xyXG5cdHVwZGF0ZVRvbmVNYXBwaW5nKCkge1xyXG5cdFx0dGhpcy5yZW5kZXJlci50b25lTWFwcGluZyA9IHRoaXMuc3RhdGUudG9uZU1hcHBpbmc7XHJcblx0fVxyXG5cclxuXHQvL+abneWFiVxyXG5cdHVwZGF0ZVRvbmVNYXBwaW5nRXhwb3N1cmUoKSB7XHJcblx0XHR0aGlzLnJlbmRlcmVyLnRvbmVNYXBwaW5nRXhwb3N1cmUgPSBNYXRoLnBvdygyLCB0aGlzLnN0YXRlLnRvbmVNYXBwaW5nRXhwb3N1cmUpO1xyXG5cdH1cclxuXHJcblx0Ly/og4zmma9cclxuXHR1cGRhdGVCYWNrZ3JvdW5kKCkge1xyXG5cdFx0Ly8g56e76Zmk5bey5a2Y5Zyo55qE6IOM5pmv55CD5L2TXHJcblx0XHRpZiAodGhpcy5iYWNrZ3JvdW5kU3BoZXJlKSB7XHJcblx0XHRcdHRoaXMuc2NlbmUucmVtb3ZlKHRoaXMuYmFja2dyb3VuZFNwaGVyZSk7XHJcblx0XHRcdHRoaXMuYmFja2dyb3VuZFNwaGVyZSA9IG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly/lkK/nlKjog4zmma9cclxuXHRcdGlmICh0aGlzLnN0YXRlLmJhY2tncm91bmQpIHtcclxuXHRcdFx0Ly/kvb/nlKjog4zmma/lm75cclxuXHRcdFx0aWYgKHRoaXMuc3RhdGUudXNlQmdVcmwgJiYgdGhpcy5iZ1VybCkge1xyXG5cdFx0XHRcdC8v5L2/55So55CD5L2T6IOM5pmvXHJcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUudXNlQmdTcGhlcmUpIHtcclxuXHRcdFx0XHRcdC8vIOWIm+W7uueQg+W9ouWHoOS9leS9k1xyXG5cdFx0XHRcdFx0Y29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuU3BoZXJlR2VvbWV0cnkodGhpcy5zaXplICogNTAsIDMyLCAzMik7XHJcblx0XHRcdFx0XHQvLyDlsIbms5Xnur/mnJ3lhoUs6L+Z5qC357q555CG5Lya5pi+56S65Zyo55CD5L2T5YaF5L6nXHJcblx0XHRcdFx0XHRnZW9tZXRyeS5zY2FsZSgtMSwgMSwgMSk7XHJcblxyXG5cdFx0XHRcdFx0Ly8g5Yqg6L296IOM5pmv5Zu+57q555CGXHJcblx0XHRcdFx0XHRuZXcgVEhSRUUuVGV4dHVyZUxvYWRlcigpLmxvYWQodGhpcy5iZ1VybCwgKHRleHR1cmU6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0ZXh0dXJlLmNvbG9yU3BhY2UgPSBUSFJFRS5TUkdCQ29sb3JTcGFjZTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoe1xyXG5cdFx0XHRcdFx0XHRcdG1hcDogdGV4dHVyZVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kU3BoZXJlID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIG1hdGVyaWFsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5zY2VuZS5hZGQodGhpcy5iYWNrZ3JvdW5kU3BoZXJlKTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvL+S9v+eUqOW5s+mdouiDjOaZr+WbvlxyXG5cdFx0XHRcdFx0bmV3IFRIUkVFLlRleHR1cmVMb2FkZXIoKS5sb2FkKHRoaXMuYmdVcmwsICh0ZXh0dXJlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0dGV4dHVyZS5jb2xvclNwYWNlID0gVEhSRUUuU1JHQkNvbG9yU3BhY2U7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IHRleHR1cmU7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly/kvb/nlKjog4zmma/oibJcclxuXHRcdFx0XHR0aGlzLnNjZW5lLmJhY2tncm91bmQgPSBuZXcgVEhSRUUuQ29sb3IodGhpcy5zdGF0ZS5iYWNrZ3JvdW5kQ29sb3IpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvL+WFs+mXreiDjOaZr1xyXG5cdFx0XHR0aGlzLnNjZW5lLmJhY2tncm91bmQgPSBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly/lvIDlhbPovoXliqnop4Llr5/lnZDmoIfns7tcclxuXHRheGVzSGVscGVyOiBhbnk7XHJcblx0dG9nZ2xlQXhlc0hlbHBlcigpIHtcclxuXHRcdC8veC3nuqLvvIx5Lee7v++8jHot6JOdXHJcblx0XHRpZiAodGhpcy5zdGF0ZS5heGVzSGVscGVyKSB7XHJcblx0XHRcdGlmICh0aGlzLmF4ZXNIZWxwZXIpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmF4ZXNIZWxwZXIpO1xyXG5cdFx0XHRcdHRoaXMuYXhlc0hlbHBlciA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5heGVzSGVscGVyID0gbmV3IFRIUkVFLkF4ZXNIZWxwZXIodGhpcy5zaXplKTtcclxuXHRcdFx0dGhpcy5zY2VuZS5hZGQodGhpcy5heGVzSGVscGVyKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLmF4ZXNIZWxwZXIpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmF4ZXNIZWxwZXIpO1xyXG5cdFx0XHRcdHRoaXMuYXhlc0hlbHBlciA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8v57q/5qGG5qih5byPXHJcblx0dG9nZ2xlV2lyZWZyYW1lKCkge1xyXG5cdFx0dGhpcy50cmF2ZXJzZU1hdGVyaWFscyh0aGlzLm9ialNjZW5lLCAobWF0ZXJpYWw6IGFueSkgPT4ge1xyXG5cdFx0XHRtYXRlcmlhbC53aXJlZnJhbWUgPSB0aGlzLnN0YXRlLndpcmVmcmFtZTtcclxuXHJcblx0XHRcdGlmIChtYXRlcmlhbCBpbnN0YW5jZW9mIFRIUkVFLlBvaW50c01hdGVyaWFsKSB7XHJcblx0XHRcdFx0bWF0ZXJpYWwuc2l6ZSA9IDE7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly/pgY3ljobmnZDotKhcclxuXHR0cmF2ZXJzZU1hdGVyaWFscyhvYmplY3Q6IGFueSwgY2FsbGJhY2s6IGFueSkge1xyXG5cdFx0b2JqZWN0LnRyYXZlcnNlKChub2RlOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKCFub2RlLmdlb21ldHJ5KSByZXR1cm47XHJcblx0XHRcdGNvbnN0IG1hdGVyaWFscyA9IEFycmF5LmlzQXJyYXkobm9kZS5tYXRlcmlhbCkgPyBub2RlLm1hdGVyaWFsIDogW25vZGUubWF0ZXJpYWxdO1xyXG5cdFx0XHRtYXRlcmlhbHMuZm9yRWFjaChjYWxsYmFjayk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8v6Ieq5Yqo5peL6L2sXHJcblx0dG9nZ2xlQXV0b1JvdGF0ZSgpIHtcclxuXHRcdHRoaXMuY29udHJvbHMuYXV0b1JvdGF0ZSA9IHRoaXMuc3RhdGUuYXV0b1JvdGF0ZTtcclxuXHRcdHRoaXMuY29udHJvbHMuYXV0b1JvdGF0ZVNwZWVkID0gdGhpcy5zdGF0ZS5hdXRvUm90YXRlU3BlZWQ7XHJcblx0fVxyXG5cclxuXHQvL+W8gOWFs+eOr+Wig+WFiVxyXG5cdGFtYmllbnRMaWdodDogYW55O1xyXG5cdHRvZ2dsZUFtYmllbnRMaWdodCgpIHtcclxuXHRcdGlmICh0aGlzLnN0YXRlLmFtYmllbnRMaWdodCkge1xyXG5cdFx0XHRpZiAodGhpcy5hbWJpZW50TGlnaHQpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmFtYmllbnRMaWdodCk7XHJcblx0XHRcdFx0dGhpcy5hbWJpZW50TGlnaHQgPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuYW1iaWVudExpZ2h0ID0gbmV3IFRIUkVFLkFtYmllbnRMaWdodCh0aGlzLnN0YXRlLmFtYmllbnRMaWdodENvbG9yLCB0aGlzLnN0YXRlLmFtYmllbnRMaWdodEludGVuc2l0eSk7XHJcblx0XHRcdHRoaXMuc2NlbmUuYWRkKHRoaXMuYW1iaWVudExpZ2h0KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLmFtYmllbnRMaWdodCkge1xyXG5cdFx0XHRcdHRoaXMuc2NlbmUucmVtb3ZlKHRoaXMuYW1iaWVudExpZ2h0KTtcclxuXHRcdFx0XHR0aGlzLmFtYmllbnRMaWdodCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0Ly/mm7TmlrDnjq/looPlhYlcclxuXHR1cGRhdGVBbWJpZW50TGlnaHQoKSB7XHJcblx0XHRpZiAodGhpcy5zdGF0ZS5hbWJpZW50TGlnaHQpIHtcclxuXHRcdFx0dGhpcy5hbWJpZW50TGlnaHQuY29sb3Iuc2V0KHRoaXMuc3RhdGUuYW1iaWVudExpZ2h0Q29sb3IpO1xyXG5cdFx0XHR0aGlzLmFtYmllbnRMaWdodC5pbnRlbnNpdHkgPSB0aGlzLnN0YXRlLmFtYmllbnRMaWdodEludGVuc2l0eTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8v5byA5YWz5a6a5ZCR5YWJXHJcblx0ZGlyZWN0aW9uYWxMaWdodDogYW55O1xyXG5cdHRvZ2dsZURpcmVjdGlvbmFsTGlnaHQoKSB7XHJcblx0XHRpZiAodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0KSB7XHJcblx0XHRcdGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpO1xyXG5cdFx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5kaXJlY3Rpb25hbExpZ2h0ID0gbmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Q29sb3IsIHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodEludGVuc2l0eSk7XHJcblx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodC5wb3NpdGlvbi5zZXQoXHJcblx0XHRcdFx0dGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24ueCxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbi55LFxyXG5cdFx0XHRcdHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uLnpcclxuXHRcdFx0KTtcclxuXHRcdFx0dGhpcy5zY2VuZS5hZGQodGhpcy5kaXJlY3Rpb25hbExpZ2h0KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpO1xyXG5cdFx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly/lhbPpl63kvY3nva7mqKHmi59cclxuXHRcdFx0dGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gZmFsc2U7XHJcblx0XHRcdHRoaXMudG9nZ2xlRGlyZWN0aW9uYWxMaWdodEhlbHBlcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+abtOaWsOWumuWQkeWFiVxyXG5cdHVwZGF0ZURpcmVjdGlvbmFsTGlnaHQoKSB7XHJcblx0XHRpZiAodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0KSB7XHJcblx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodC5jb2xvci5zZXQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Q29sb3IpO1xyXG5cdFx0XHR0aGlzLmRpcmVjdGlvbmFsTGlnaHQuaW50ZW5zaXR5ID0gdGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SW50ZW5zaXR5O1xyXG5cdFx0XHR0aGlzLmRpcmVjdGlvbmFsTGlnaHQucG9zaXRpb24uc2V0KFxyXG5cdFx0XHRcdHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uLngsXHJcblx0XHRcdFx0dGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24ueSxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbi56XHJcblx0XHRcdCk7XHJcblx0XHRcdGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpIHtcclxuXHRcdFx0XHR0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIudXBkYXRlKClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+W8gOWFs+WumuWQkeWFieS9jee9ruaooeaLn1xyXG5cdGRpcmVjdGlvbmFsTGlnaHRIZWxwZXI6IGFueTtcclxuXHR0b2dnbGVEaXJlY3Rpb25hbExpZ2h0SGVscGVyKCkge1xyXG5cdFx0aWYgKHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodEhlbHBlcikge1xyXG5cdFx0XHRpZiAodGhpcy5kaXJlY3Rpb25hbExpZ2h0KSB7Ly/lvIDlkK/lrprlkJHlhYnmiY3og73lvIDlkK/kvY3nva7mqKHmi59cclxuXHRcdFx0XHRpZiAodGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpO1xyXG5cdFx0XHRcdFx0dGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gbmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHRIZWxwZXIodGhpcy5kaXJlY3Rpb25hbExpZ2h0LCB0aGlzLnNpemUgLyAyMCwgMHhmZjAwMDApO1xyXG5cdFx0XHRcdHRoaXMuc2NlbmUuYWRkKHRoaXMuZGlyZWN0aW9uYWxMaWdodEhlbHBlcik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpO1xyXG5cdFx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodEhlbHBlciA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8v5byA5YWz5a6a5ZCR5YWJMlxyXG5cdGRpcmVjdGlvbmFsTGlnaHQyOiBhbnk7XHJcblx0dG9nZ2xlRGlyZWN0aW9uYWxMaWdodDIoKSB7XHJcblx0XHRpZiAodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Mikge1xyXG5cdFx0XHRpZiAodGhpcy5kaXJlY3Rpb25hbExpZ2h0Mikge1xyXG5cdFx0XHRcdHRoaXMuc2NlbmUucmVtb3ZlKHRoaXMuZGlyZWN0aW9uYWxMaWdodDIpO1xyXG5cdFx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodDIgPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodDIgPSBuZXcgVEhSRUUuRGlyZWN0aW9uYWxMaWdodCh0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRDb2xvcjIsIHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodEludGVuc2l0eTIpO1xyXG5cdFx0XHR0aGlzLmRpcmVjdGlvbmFsTGlnaHQyLnBvc2l0aW9uLnNldChcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIueCxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIueSxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIuelxyXG5cdFx0XHQpO1xyXG5cdFx0XHR0aGlzLnNjZW5lLmFkZCh0aGlzLmRpcmVjdGlvbmFsTGlnaHQyKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHQyKSB7XHJcblx0XHRcdFx0dGhpcy5zY2VuZS5yZW1vdmUodGhpcy5kaXJlY3Rpb25hbExpZ2h0Mik7XHJcblx0XHRcdFx0dGhpcy5kaXJlY3Rpb25hbExpZ2h0MiA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly/lhbPpl63kvY3nva7mqKHmi59cclxuXHRcdFx0dGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SGVscGVyMiA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLnRvZ2dsZURpcmVjdGlvbmFsTGlnaHRIZWxwZXIyKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8v5pu05paw5a6a5ZCR5YWJMlxyXG5cdHVwZGF0ZURpcmVjdGlvbmFsTGlnaHQyKCkge1xyXG5cdFx0aWYgKHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodDIpIHtcclxuXHRcdFx0dGhpcy5kaXJlY3Rpb25hbExpZ2h0Mi5jb2xvci5zZXQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Q29sb3IyKTtcclxuXHRcdFx0dGhpcy5kaXJlY3Rpb25hbExpZ2h0Mi5pbnRlbnNpdHkgPSB0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRJbnRlbnNpdHkyO1xyXG5cdFx0XHR0aGlzLmRpcmVjdGlvbmFsTGlnaHQyLnBvc2l0aW9uLnNldChcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIueCxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIueSxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjIuelxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAodGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyMikge1xyXG5cdFx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodEhlbHBlcjIudXBkYXRlKClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+W8gOWFs+WumuWQkeWFiTLkvY3nva7mqKHmi59cclxuXHRkaXJlY3Rpb25hbExpZ2h0SGVscGVyMjogYW55O1xyXG5cdHRvZ2dsZURpcmVjdGlvbmFsTGlnaHRIZWxwZXIyKCkge1xyXG5cdFx0aWYgKHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodEhlbHBlcjIpIHtcclxuXHRcdFx0aWYgKHRoaXMuZGlyZWN0aW9uYWxMaWdodDIpIHsvL+W8gOWQr+WumuWQkeWFieaJjeiDveW8gOWQr+S9jee9ruaooeaLn1xyXG5cdFx0XHRcdGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIyKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIyKTtcclxuXHRcdFx0XHRcdHRoaXMuZGlyZWN0aW9uYWxMaWdodEhlbHBlcjIgPSBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIyID0gbmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHRIZWxwZXIodGhpcy5kaXJlY3Rpb25hbExpZ2h0MiwgdGhpcy5zaXplIC8gMjAsIDB4ZmZmZjAwKTtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLmFkZCh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIyKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIyID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIyKSB7XHJcblx0XHRcdFx0dGhpcy5zY2VuZS5yZW1vdmUodGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyMik7XHJcblx0XHRcdFx0dGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyMiA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8v5byA5YWz54K55YWJ5rqQXHJcblx0cG9pbnRMaWdodDogYW55O1xyXG5cdHRvZ2dsZVBvaW50TGlnaHQoKSB7XHJcblx0XHRpZiAodGhpcy5zdGF0ZS5wb2ludExpZ2h0KSB7XHJcblx0XHRcdGlmICh0aGlzLnBvaW50TGlnaHQpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHQpO1xyXG5cdFx0XHRcdHRoaXMucG9pbnRMaWdodCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly9Qb2ludExpZ2h0KCBjb2xvciA6IEludGVnZXIsIGludGVuc2l0eSA6IEZsb2F0LCBkaXN0YW5jZSA6IE51bWJlciwgZGVjYXkgOiBGbG9hdCApXHJcblx0XHRcdHRoaXMucG9pbnRMaWdodCA9IG5ldyBUSFJFRS5Qb2ludExpZ2h0KHRoaXMuc3RhdGUucG9pbnRMaWdodENvbG9yLCB0aGlzLnN0YXRlLnBvaW50TGlnaHRJbnRlbnNpdHksIHRoaXMuc3RhdGUucG9pbnRMaWdodERpc3RhbmNlLCB0aGlzLnN0YXRlLnBvaW50TGlnaHREZWNheSk7XHJcblx0XHRcdHRoaXMucG9pbnRMaWdodC5wb3NpdGlvbi5zZXQoXHJcblx0XHRcdFx0dGhpcy5zdGF0ZS5wb2ludExpZ2h0UG9zaXRpb24ueCxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi55LFxyXG5cdFx0XHRcdHRoaXMuc3RhdGUucG9pbnRMaWdodFBvc2l0aW9uLnpcclxuXHRcdFx0KTtcclxuXHRcdFx0dGhpcy5zY2VuZS5hZGQodGhpcy5wb2ludExpZ2h0KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLnBvaW50TGlnaHQpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHQpO1xyXG5cdFx0XHRcdHRoaXMucG9pbnRMaWdodCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly/lhbPpl63kvY3nva7mqKHmi59cclxuXHRcdFx0dGhpcy5zdGF0ZS5wb2ludExpZ2h0SGVscGVyID0gZmFsc2U7XHJcblx0XHRcdHRoaXMudG9nZ2xlUG9pbnRMaWdodEhlbHBlcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly/mm7TmlrDngrnlhYnmupBcclxuXHR1cGRhdGVQb2ludExpZ2h0KCkge1xyXG5cdFx0aWYgKHRoaXMuc3RhdGUucG9pbnRMaWdodCkge1xyXG5cdFx0XHR0aGlzLnBvaW50TGlnaHQuY29sb3Iuc2V0KHRoaXMuc3RhdGUucG9pbnRMaWdodENvbG9yKTtcclxuXHRcdFx0dGhpcy5wb2ludExpZ2h0LmludGVuc2l0eSA9IHRoaXMuc3RhdGUucG9pbnRMaWdodEludGVuc2l0eTtcclxuXHRcdFx0dGhpcy5wb2ludExpZ2h0LmRlY2F5ID0gdGhpcy5zdGF0ZS5wb2ludExpZ2h0RGVjYXk7XHJcblx0XHRcdHRoaXMucG9pbnRMaWdodC5kaXN0YW5jZSA9IHRoaXMuc3RhdGUucG9pbnRMaWdodERpc3RhbmNlO1xyXG5cdFx0XHR0aGlzLnBvaW50TGlnaHQucG9zaXRpb24uc2V0KFxyXG5cdFx0XHRcdHRoaXMuc3RhdGUucG9pbnRMaWdodFBvc2l0aW9uLngsXHJcblx0XHRcdFx0dGhpcy5zdGF0ZS5wb2ludExpZ2h0UG9zaXRpb24ueSxcclxuXHRcdFx0XHR0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi56XHJcblx0XHRcdCk7XHJcblx0XHRcdGlmICh0aGlzLnBvaW50TGlnaHRIZWxwZXIpIHtcclxuXHRcdFx0XHR0aGlzLnBvaW50TGlnaHRIZWxwZXIudXBkYXRlKClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+W8gOWFs+eCueWFiea6kOS9jee9ruaooeaLn1xyXG5cdHBvaW50TGlnaHRIZWxwZXI6IGFueTtcclxuXHR0b2dnbGVQb2ludExpZ2h0SGVscGVyKCkge1xyXG5cdFx0aWYgKHRoaXMuc3RhdGUucG9pbnRMaWdodEhlbHBlcikge1xyXG5cdFx0XHRpZiAodGhpcy5wb2ludExpZ2h0KSB7Ly/lvIDlkK/ngrnlhYnmupDmiY3og73lvIDlkK/kvY3nva7mqKHmi59cclxuXHRcdFx0XHRpZiAodGhpcy5wb2ludExpZ2h0SGVscGVyKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHRIZWxwZXIpO1xyXG5cdFx0XHRcdFx0dGhpcy5wb2ludExpZ2h0SGVscGVyID0gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5wb2ludExpZ2h0SGVscGVyID0gbmV3IFRIUkVFLlBvaW50TGlnaHRIZWxwZXIodGhpcy5wb2ludExpZ2h0LCB0aGlzLnNpemUgLyAyMCwgMHgyYmZmMDApO1xyXG5cdFx0XHRcdHRoaXMuc2NlbmUuYWRkKHRoaXMucG9pbnRMaWdodEhlbHBlcik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5zdGF0ZS5wb2ludExpZ2h0SGVscGVyID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLnBvaW50TGlnaHRIZWxwZXIpIHtcclxuXHRcdFx0XHR0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHRIZWxwZXIpO1xyXG5cdFx0XHRcdHRoaXMucG9pbnRMaWdodEhlbHBlciA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vd2ViZ2zplIDmr4FcclxuXHR3ZWJnbExvc2VDb250ZXh0KCkge1xyXG5cdFx0bGV0IG9iakNhbnZhc0RvbTogYW55ID0gdGhpcy5lbGVSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAke3RoaXMuZG9tSWR9IGNhbnZhc2ApO1xyXG5cdFx0aWYgKG9iakNhbnZhc0RvbSkge1xyXG5cdFx0XHQvL+aJi+WKqOmUgOavgVdlYkdMIGNvbnRleHTlr7nosaHvvIjmnIDlpJoxNuS4qu+8jOi2heWHuueahOivneacgOWFiOWKoOi9veeahOS8muiiq+enu+mZpO+8iVxyXG5cdFx0XHRsZXQgZ2wgPSBvYmpDYW52YXNEb20uZ2V0Q29udGV4dCgnd2ViZ2wyJyk7XHJcblx0XHRcdGdsLmdldEV4dGVuc2lvbignV0VCR0xfbG9zZV9jb250ZXh0JykubG9zZUNvbnRleHQoKTtcclxuXHRcdFx0Ly9kb23np7vpmaRcclxuXHRcdFx0b2JqQ2FudmFzRG9tLnJlbW92ZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbn1cclxuIiwiPGRpdiBpZD1cIm9ialZpZXdlclwiICpuZ0lmPVwicGFyYW1ldGVyc09rXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZ1wiICpuZ0lmPVwic2hvd0xvYWRpbmdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmMtbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwibmMtbG9hZGluZy1zdmdcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA2MCA2MFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIj5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBvdmVyZmxvdz1cInZpc2libGVcIiB4bGluazpocmVmPVwiI2NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNC40IC0uMTE3KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cImFcIiBkPVwibS01LTFoNjJ2NjJoLTYyelwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgb3ZlcmZsb3c9XCJ2aXNpYmxlXCIgeGxpbms6aHJlZj1cIiNhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjYilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cImNcIiBkPVwibS01LTFoNjJ2NjJoLTYyelwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgb3ZlcmZsb3c9XCJ2aXNpYmxlXCIgeGxpbms6aHJlZj1cIiNjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgc3R5bGU9XCJzdHJva2U6dmFyKC0tb3ZfbG9nb19ib3JkZXJfY29sb3IpO1wiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggdHJhbnNmb3JtPVwidHJhbnNsYXRlKC4wMzkwOTIgLjAyMjU3KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIm0zOC4zNjEgMjIuODc3LTEyLjQtNy4zIDkuMmUtNSAtMTQuMTc3IDI0LjggMTQuMnYyOC44bC0xMi40LTcuMzIyNnpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcGF0aD1cInVybCgjZClcIiBmaWxsPVwiIzQ2ODhiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCB0cmFuc2Zvcm09XCJyb3RhdGUoMTIwLDI2LDMwLjA4MilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJtMzguNCAyMi45MjMtMTIuNTIyLTcuMDg4NyAwLjE0MTc4LTE0LjQgMjQuNzggMTQuMTY2djI4LjhsLTEyLjUyMi03LjA4ODN6XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXBhdGg9XCJ1cmwoI2QtNSlcIiBmaWxsPVwiIzY0YzBmZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTI2IDMwdjE0LjRsMTIuNC03LjN2LTE0LjJ6XCIgY2xpcC1wYXRoPVwidXJsKCNkKVwiIGZpbGw9XCIjMjk0ZTY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTMuNiAzNy4xdi0xNC4ybDEyLjQtNy4zdi0xNC4xNzdsLTI0LjggMTQuMTc3djI4Ljh6XCIgY2xpcC1wYXRoPVwidXJsKCNkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMyOTRlNjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIm0yNiAxNS42LTEyLjQgNy4zIDEyLjQgNy4xIDEyLjQtNy4xelwiIGNsaXAtcGF0aD1cInVybCgjZClcIiBmaWxsPVwiIzY0YzBmZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTEzLjYgMjIuOSAxMi40IDcuMXYxNC40bC0xMi40LTcuM3pcIiBjbGlwLXBhdGg9XCJ1cmwoI2QpXCIgZmlsbD1cIiM0Njg4YjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5jVGlwc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj57e2xvYWRpbmdUZXh0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3tsb2FkaW5nVGV4dDJ9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBpZD1cInRpcHNcIiAqbmdJZj1cInRpcHNNb2RlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpcC1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pbWdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICBzcmM9XCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaUlITjBZVzVrWVd4dmJtVTlJbTV2SWo4K0Nqd2hMUzBnUjJWdVpYSmhkRzl5T2lCQlpHOWlaU0JKYkd4MWMzUnlZWFJ2Y2lBeE5TNHdMakFzSUZOV1J5QkZlSEJ2Y25RZ1VHeDFaeTFKYmlBdUlGTldSeUJXWlhKemFXOXVPaUEyTGpBd0lFSjFhV3hrSURBcElDQXRMVDRLQ2p4emRtY0tJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJZ29nSUNCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJZ29nSUNCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaUNpQWdJSGh0Ykc1ek9uTjJaejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpQ2lBZ0lIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJS0lDQWdlRzFzYm5NNmMyOWthWEJ2WkdrOUltaDBkSEE2THk5emIyUnBjRzlrYVM1emIzVnlZMlZtYjNKblpTNXVaWFF2UkZSRUwzTnZaR2x3YjJScExUQXVaSFJrSWdvZ0lDQjRiV3h1Y3pwcGJtdHpZMkZ3WlQwaWFIUjBjRG92TDNkM2R5NXBibXR6WTJGd1pTNXZjbWN2Ym1GdFpYTndZV05sY3k5cGJtdHpZMkZ3WlNJS0lDQWdkbVZ5YzJsdmJqMGlNUzR4SWdvZ0lDQnBaRDBpVEdGNVpYSmZNU0lLSUNBZ2VEMGlNSEI0SWdvZ0lDQjVQU0l3Y0hnaUNpQWdJSGRwWkhSb1BTSTJOSEI0SWdvZ0lDQm9aV2xuYUhROUlqWTBjSGdpQ2lBZ0lIWnBaWGRDYjNnOUlqQWdNQ0EyTkNBMk5DSUtJQ0FnWlc1aFlteGxMV0poWTJ0bmNtOTFibVE5SW01bGR5QXdJREFnTmpRZ05qUWlDaUFnSUhodGJEcHpjR0ZqWlQwaWNISmxjMlZ5ZG1VaUNpQWdJR2x1YTNOallYQmxPblpsY25OcGIyNDlJakF1TkRndU5DQnlPVGt6T1NJS0lDQWdjMjlrYVhCdlpHazZaRzlqYm1GdFpUMGlUVzkxYzJWTVpXWjBMbk4yWnlJK1BHMWxkR0ZrWVhSaENpQWdJR2xrUFNKdFpYUmhaR0YwWVRJeElqNDhjbVJtT2xKRVJqNDhZMk02VjI5eWF3b2dJQ0FnSUNBZ2NtUm1PbUZpYjNWMFBTSWlQanhrWXpwbWIzSnRZWFErYVcxaFoyVXZjM1puSzNodGJEd3ZaR002Wm05eWJXRjBQanhrWXpwMGVYQmxDaUFnSUNBZ0lDQWdJSEprWmpweVpYTnZkWEpqWlQwaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyUmpiV2wwZVhCbEwxTjBhV3hzU1cxaFoyVWlJQzgrUEdSak9uUnBkR3hsSUM4K1BDOWpZenBYYjNKclBqd3ZjbVJtT2xKRVJqNDhMMjFsZEdGa1lYUmhQanhrWldaekNpQWdJR2xrUFNKa1pXWnpNVGtpSUM4K1BITnZaR2x3YjJScE9tNWhiV1ZrZG1sbGR3b2dJQ0J3WVdkbFkyOXNiM0k5SWlObVptWm1abVlpQ2lBZ0lHSnZjbVJsY21OdmJHOXlQU0lqTmpZMk5qWTJJZ29nSUNCaWIzSmtaWEp2Y0dGamFYUjVQU0l4SWdvZ0lDQnZZbXBsWTNSMGIyeGxjbUZ1WTJVOUlqRXdJZ29nSUNCbmNtbGtkRzlzWlhKaGJtTmxQU0l4TUNJS0lDQWdaM1ZwWkdWMGIyeGxjbUZ1WTJVOUlqRXdJZ29nSUNCcGJtdHpZMkZ3WlRwd1lXZGxiM0JoWTJsMGVUMGlNQ0lLSUNBZ2FXNXJjMk5oY0dVNmNHRm5aWE5vWVdSdmR6MGlNaUlLSUNBZ2FXNXJjMk5oY0dVNmQybHVaRzkzTFhkcFpIUm9QU0l4TWpneUlnb2dJQ0JwYm10elkyRndaVHAzYVc1a2IzY3RhR1ZwWjJoMFBTSTRPRFlpQ2lBZ0lHbGtQU0p1WVcxbFpIWnBaWGN4TnlJS0lDQWdjMmh2ZDJkeWFXUTlJbVpoYkhObElnb2dJQ0JwYm10elkyRndaVHA2YjI5dFBTSXpMalk0TnpVaUNpQWdJR2x1YTNOallYQmxPbU40UFNJdE1UQXVNekExTURnMUlnb2dJQ0JwYm10elkyRndaVHBqZVQwaU16SWlDaUFnSUdsdWEzTmpZWEJsT25kcGJtUnZkeTE0UFNJeE1EUWlDaUFnSUdsdWEzTmpZWEJsT25kcGJtUnZkeTE1UFNJeE16WWlDaUFnSUdsdWEzTmpZWEJsT25kcGJtUnZkeTF0WVhocGJXbDZaV1E5SWpBaUNpQWdJR2x1YTNOallYQmxPbU4xY25KbGJuUXRiR0Y1WlhJOUltY3pJaUF2UGdvOFp3b2dJQ0JwWkQwaVp6TWlQZ29KUEdjS0lDQWdhV1E5SW1jMUlnb2dJQ0J6ZEhsc1pUMGlabWxzYkRvak5HUTBaRFJrTzNOMGNtOXJaVG9qTkdRMFpEUmtJajRLQ1FrOGNHRjBhQW9nSUNCbWFXeHNQU0lqTURJd01qQXlJZ29nSUNCa1BTSk5Nekl1T0RVMExESXdMakF5T0dNdE1DNHdNVFV0TVM0eU56UXNNQzQxTnpZdE1pNHlOamtzTVM0eE5URXRNeTR5TXpaak1DNDNOVGd0TVM0eU56Z3NNUzQxTkRNdE1pNDJMREF1T1RrM0xUUXVOREUzSUNBZ0lHTXRNQzQxTlRVdE1TNDJOamN0TVM0Mk1EY3RNaTQwT0RVdE1pNDFNemt0TXk0eU1USmpMVEV1TWpVMExUQXVPVGN6TFRJdU1UVTVMVEV1TmpjMkxURXVOamczTFRRdU16UXpiREF1TURReExUQXVNakk1YkMweExqTTFMVEF1TWpNNFRESTVMalF5Tnl3MExqVTRJQ0FnSUdNdE1DNDJNVFVzTXk0ME9EUXNNQzQ0Tnpnc05DNDJORE1zTWk0eE9UVXNOUzQyTmpaak1DNDROU3d3TGpZMk15d3hMalkxTXl3eExqSTRPQ3d5TGpBM01pd3lMalUwTW1Nd0xqTTJOaXd4TGpJeU5DMHdMakU0TERJdU1UUXpMVEF1T0RZNUxETXVNekEySUNBZ0lHTXRNQzQyTkRFc01TNHdPREV0TVM0ek5qWXNNaTR6TFRFdU16UTVMRE11T1RNell5MDJMamd6Tnl3d0xqQXdOeTB4TXk0NE1qTXNNQzR5T1RFdE1UTXVPREl6TERJMExqVTVZekFzTVRBdU9UVXhMRGd1TnprNUxERTFMakF6TWl3eE5DNHpORGNzTVRVdU1ETXlJQ0FnSUdNMUxqVTBOU3d3TERFMExqTTBOeTAwTGpBNE1Td3hOQzR6TkRjdE1UVXVNRE15UXpRMkxqTTBOeXd5TUM0ek5EY3NNemt1TWpJNExESXdMakEwT0N3ek1pNDROVFFzTWpBdU1ESTRlaUJOTXpJdU5qZzFMREl4TGpNNU9TQWdJQ0JqTlM0Mk5ETXNNQzR3TVRJc01UQXVPVEkzTERBdU1qTTJMREV5TGpBMk15d3hOaTR4TlROakxUTXVPRFlzTVM0NE1EVXROeTQ1TVRZc01pNDNOalV0TVRJdU1EWXpMREl1T0RaMkxUSXVPVFkyWXpBdU9EUTFMVEF1TVRZeUxERXVORGd4TFRBdU9UQTVMREV1TkRneExURXVOemd5ZGkwNExqazFOaUFnSUNCak1DMHdMamczTmkwd0xqWXpOeTB4TGpZeU1TMHhMalE0TVMweExqYzRORll5TVM0ek9UbDZJRTB6TVM0Mk5UZ3NNall1TWpVMGFEQXVOamcxWXpBdU1qUTVMREFzTUM0ME5UTXNNQzR5TURVc01DNDBOVE1zTUM0ME5UUjJPQzQ1TlRZZ0lDQWdZekFzTUM0eU5Ea3RNQzR5TURRc01DNDBORGt0TUM0ME5UTXNNQzQwTkRsb0xUQXVOamcxWXkwd0xqSTBPU3d3TFRBdU5EVXlMVEF1TWkwd0xqUTFNaTB3TGpRME9YWXRPQzQ1TlRaRE16RXVNakEyTERJMkxqUTFPU3d6TVM0ME1Ea3NNall1TWpVMExETXhMalkxT0N3eU5pNHlOVFI2SUNBZ0lDQk5NekV1TXpFekxESXhMak01T1hZekxqVXlOV010TUM0NE5EVXNNQzR4TmpNdE1TNDBOemtzTUM0NU1TMHhMalEzT1N3eExqYzROSFk0TGprMU5tTXdMREF1T0RjekxEQXVOak0wTERFdU5qSXNNUzQwTnprc01TNDNPREoyTWk0NU5qWWdJQ0FnWXkwMkxqTXhNUzB3TGpFME9DMHhNQzQ1TURVdE1pNHlOVEl0TVRJdU1EWXpMVEl1T0RNNVF6SXdMak00TVN3eU1TNDJNek1zTWpVdU5qWTRMREl4TGpReE1Td3pNUzR6TVRNc01qRXVNems1ZWlCTk16SXNOVGd1TWpjMElDQWdJR010TlM0d01UWXNNQzB4TWk0NU56WXRNeTQzTURjdE1USXVPVGMyTFRFekxqWTFPR013TFRFdU9UZ3pMREF1TURRMUxUTXVPRFV6TERBdU1UTTBMVFV1TlRZell6SXVNREF6TERBdU9USTVMRFl1TmprMkxESXVOelFzTVRJdU9EWTRMREl1TnpRZ0lDQWdZelF1TXprMExEQXNPQzQzTURRdE1DNDVNelFzTVRJdU9ERXpMVEl1TnpjeFl6QXVNRGc1TERFdU56RTRMREF1TVRNMUxETXVOaXd3TGpFek5TdzFMalU1TlVNME5DNDVOelFzTlRRdU5UWTNMRE0zTGpBeE5pdzFPQzR5TnpRc016SXNOVGd1TWpjMGVpSUtJQ0FnYVdROUluQmhkR2czSWdvZ0lDQnpkSGxzWlQwaVptbHNiRG9qTkdRMFpEUmtPM04wY205clpUb2pOR1EwWkRSa0lpQXZQZ29KUEM5blBnb0pDZ2tLUEhCaGRHZ0tJQ0FnYzNSNWJHVTlJbVpwYkd3NkkyWm1abVptWmp0emRISnZhMlU2STJabVptWm1aanR6ZEhKdmEyVXRkMmxrZEdnNk1DNHlOekV4T0RZME5DSUtJQ0FnWkQwaWJTQXpNaTQ1TWpJd016UXNNemd1T1RVd056a3pJR01nTUN3dE1TNHhNelU0TWpVZ01DNHhNVFE1TVRrc0xURXVORFU0TURRMUlEQXVOamMzT1RZMkxDMHhMamt3TURrek9DQnNJREF1TmpjM09UWTJMQzB3TGpVek16STRPQ0F3TEMwMUxqSTRNRGM0SUdNZ01Dd3ROUzR5TnpFeU5Ea2dMVEF1TURBeE1pd3ROUzR5T0RJd01ETWdMVEF1TmpjM09UWTJMQzAxTGprMU9EYzBOU0F0TUM0MU5UYzBNemtzTFRBdU5UVTNORE01SUMwd0xqWTNOemsyTml3dE1DNDVOREE1TXpVZ0xUQXVOamMzT1RZMkxDMHlMakUxTnpFMk5TQnNJREFzTFRFdU5EYzVNVGs1SURFdU5UTTFORGczTERBZ1l5QTFMalkxTnpVMU5Dd3dJRGd1TlRnME16TTRMRE11TnpJNE5USTVJRGt1TnpFNE5UVXNNVEl1TXpnd056a3hJREF1TkRrNE5ETTBMRE11T0RBeU1qWTFJREF1TlRBek5EZ3NNeTQxTWpVM016RWdMVEF1TURZM05pd3pMamN3TkRVM01pQXRNQzR5TmpFd01UY3NNQzR3T0RFM05DQXRNUzQxTWpnMk9UUXNNQzQxTVRJd01UWWdMVEl1T0RFM01EVTVMREF1T1RVMk1UWTNJQzB5TGpBek56SXdOaXd3TGpjd01qTXdOaUF0TkM0d05EZ3dNeklzTVM0eE1UTXdORFFnTFRjdU5EZzRNREkyTERFdU5USTVOVEk0SUd3Z0xUQXVPRGd4TXpVMkxEQXVNVEEyTnpBM0lEQXNMVEV1TXpZM05qVWdlaUlLSUNBZ2FXUTlJbkJoZEdnek56WTRJZ29nSUNCcGJtdHpZMkZ3WlRwamIyNXVaV04wYjNJdFkzVnlkbUYwZFhKbFBTSXdJaUF2UGp4d1lYUm9DaUFnSUhOMGVXeGxQU0ptYVd4c09pTm1abVptWm1ZN2MzUnliMnRsT2lObVptWm1abVk3YzNSeWIydGxMWGRwWkhSb09qQXVNamN4TVRnMk5EUWlDaUFnSUdROUltMGdNekV1TkRnMU1EZ3hMRE0xTGpnME1qRTBNeUJqSUMwd0xqRXdORFU1TVN3dE1DNHhNRFExT1RFZ0xUQXVNVGt3TVRZMkxDMHlMakl6TVRNME55QXRNQzR4T1RBeE5qWXNMVFF1TnpJMk1USXpJREFzTFRNdU9UZ3pPVGswSURBdU1EVTFNRElzTFRRdU5UVTNNRGN4SURBdU5EVXlNVEkzTEMwMExqY3dPVFExTmlBd0xqSTBPRFkzTEMwd0xqQTVOVFF5SURBdU5UVTJPREF5TEMwd0xqQTJPRGd5SURBdU5qZzBOek00TERBdU1EVTVNVElnTUM0eE1qYzVNemNzTUM0eE1qYzVNellnTUM0eE9Ua3dOVFlzTWk0eU9UWTBPREVnTUM0eE5UZ3dORE1zTkM0NE1UZzVPRGdnTFRBdU1EWXpNVGtzTXk0NE9EWTBNRFVnTFRBdU1UTTROamNzTkM0MU9UZzJPRE1nTFRBdU5EazBOVGN5TERRdU5qWTNNREE1SUMwd0xqSXpNVEF3TXl3d0xqQTBORE0xSUMwd0xqVXdOVFUzT1N3dE1DNHdNRFE1SUMwd0xqWXhNREUzTEMwd0xqRXdPVFV6TXlCc0lEQXNNQ0I2SWdvZ0lDQnBaRDBpY0dGMGFETTNOekFpQ2lBZ0lHbHVhM05qWVhCbE9tTnZibTVsWTNSdmNpMWpkWEoyWVhSMWNtVTlJakFpSUM4K1BIQmhkR2dLSUNBZ2MzUjViR1U5SW1acGJHdzZJMlptWm1abVpqdHpkSEp2YTJVNkkyWm1abVptWmp0emRISnZhMlV0ZDJsa2RHZzZNQzR5TnpFeE9EWTBOQ0lLSUNBZ1pEMGliU0F6TUM0ME5EQTBNek1zTlRjdU9UUTFNekUySUdNZ0xUTXVNRFkwTURVekxDMHdMalF5TVRFeklDMDJMamMzTnpJekxDMHlMalEzTkRrMU15QXRPQzQwTlRjMk1qRXNMVFF1TmpjNE1EWWdMVEl1TVRVNE9Dd3RNaTQ0TXpBek16TWdMVE11TVRFek9URTRMQzAyTGpjek56Y3hOaUF0TWk0M05qazFPVElzTFRFeExqTXpNRE00TlNCc0lEQXVNVGt6TVRJeExDMHlMalUzTlRnM01pQXlMakEzT1RnNExEQXVOek0xTmpJNElHTWdNeTQxTWpjd01qWXNNUzR5TkRjME5qWWdOaTR6TXpjM01ERXNNUzQzTVRrd05qZ2dNVEF1TWpFMU5EYzBMREV1TnpFME1EVWdOQzR4TnpFM056RXNMVEF1TURBMU5DQTJMalkwTWprNE1Td3RNQzR6T0RnMk9DQXhNQzR5TlRnek5pd3RNUzQxT1RFd05UZ2dNaTR4TnpnNU56TXNMVEF1TnpJME5qWTRJREl1TmpreU1Ua3pMQzB3TGpneE5UZzFOaUF5TGpneE16UTBOQ3d0TUM0ME9UazRPRE1nTUM0d09ERTFOeXd3TGpJeE1qVTJJREF1TURnMk5qUXNNaTR4TVRrNE5qUWdNQzR3TVRFeU55dzBMakl6T0RRMU15QXRNQzR4TURZeU1UY3NNaTQ1T0RVNE1TQXRNQzR5TmpZMU16RXNOQzR5TVRJNU16Z2dMVEF1TnpFeU9UTTFMRFV1TkRVM01qQTRJQzB4TGpRMU1ESXhOeXcwTGpBME1qSXdOaUF0TkM0ME1ERXhNVGdzTmk0NE5EUXhOVFlnTFRndU5ETTNPVE00TERndU1ERXlNREUzSUMweUxqTXhORGMwTnl3d0xqWTJPVFkyTVNBdE15NHpORE14TkN3d0xqYzNNakl4TlNBdE5TNHhPVE0wTmpVc01DNDFNVGM1TURJZ2VpSUtJQ0FnYVdROUluQmhkR2d6TnpjeUlnb2dJQ0JwYm10elkyRndaVHBqYjI1dVpXTjBiM0l0WTNWeWRtRjBkWEpsUFNJd0lpQXZQand2Wno0S1BIQmhkR2dLSUNBZ2MzUjViR1U5SW1acGJHdzZJelkyUTBOR1JqdHpkSEp2YTJVNkl6WTJRME5HUmp0emRISnZhMlV0ZDJsa2RHZzZNQzR5TnpFeE9EWTBNems1T1RrNU9UazVOeUlLSUNBZ1pEMGliU0F5T0M0M05EQTFOVFlzTkRBdU1EWXpOamd5SUdNZ0xUSXVORFUzTnprMUxDMHdMakk0TkRrNU5TQXROUzR5T1RFMU1qSXNMVEF1T1RjMk9EZ3hJQzAzTGpRM09UVXpPU3d0TVM0NE1qWXlNVElnTFRBdU9UWTVORGt5TEMwd0xqTTNOak16TWlBdE1TNDNPVEk1TXprc0xUQXVOekEwT1RZeElDMHhMamd5T1RnNE5Dd3RNQzQzTXpBeU9EY2dMVEF1TVRVeU5UWTBMQzB3TGpFd05EVTROQ0F3TGpjMk5qQXhOaXd0Tmk0eU5ESTFOREVnTVM0eE5qZ3dNU3d0Tnk0NE1EUTJOVFlnTVM0ME1qRXhPVEVzTFRVdU5USXlOak14SURRdU16QTBORGMzTEMwNExqQTJNVGcwT1NBNUxqRTFOREkwTVN3dE9DNHdOakU0TkRrZ2JDQXhMalUwTVRVek1Td3dJREFzTVM0Mk1qY3hNVGtnWXlBd0xERXVNak0zTVRJMUlDMHdMakE1TXpneExERXVOakkzTVRFNElDMHdMak01TVRRd01pd3hMall5TnpFeE9DQXRNQzR5TVRVeU56RXNNQ0F0TUM0MU9ERXpOek1zTUM0eU56RXlNakVnTFRBdU9ERXpOVFU1TERBdU5qQXlOekUwSUMwd0xqTTBOVGc0T1N3d0xqUTVNemd5TmlBdE1DNDBNakl4TlRjc01TNDFNamMxTWpRZ0xUQXVOREl5TVRVM0xEVXVOekl4TnpBMklHd2dNQ3cxTGpFeE9EazVNaUF3TGpneE16VTFPU3d3TGpjMU9UazNPQ0JqSURBdU5qYzFPRFEyTERBdU5qTXhNek0xSURBdU9ERXpOVFU1TERBdU9UY3hNRGd6SURBdU9ERXpOVFU1TERJdU1EQTNNVEE0SURBc01DNDRNelU1TWpFZ0xUQXVNVEV4TnpjeExERXVNak0xTXpjNElDMHdMak16T0RrNE15d3hMakl4TVRRNE9TQXRNQzR4T0RZME5Dd3RNQzR3TVRrMklDMHhMakU0TXpNMkxDMHdMakV6TXpVMU1TQXRNaTR5TVRVek56WXNMVEF1TWpVek1qSWdiQ0F3TERBZ2VpSUtJQ0FnYVdROUluQmhkR2d6TnpZMklnb2dJQ0JwYm10elkyRndaVHBqYjI1dVpXTjBiM0l0WTNWeWRtRjBkWEpsUFNJd0lpQXZQand2YzNablBnPT1cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctd29yZFwiPuaXi+i9rDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXAtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lJSE4wWVc1a1lXeHZibVU5SW01dklqOCtDandoTFMwZ1IyVnVaWEpoZEc5eU9pQkJaRzlpWlNCSmJHeDFjM1J5WVhSdmNpQXhOUzR3TGpBc0lGTldSeUJGZUhCdmNuUWdVR3gxWnkxSmJpQXVJRk5XUnlCV1pYSnphVzl1T2lBMkxqQXdJRUoxYVd4a0lEQXBJQ0F0TFQ0S0NqeHpkbWNLSUNBZ2VHMXNibk02WkdNOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWxiR1Z0Wlc1MGN5OHhMakV2SWdvZ0lDQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWdvZ0lDQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlDaUFnSUhodGJHNXpPbk4yWnowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUNpQWdJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SUtJQ0FnZUcxc2JuTTZjMjlrYVhCdlpHazlJbWgwZEhBNkx5OXpiMlJwY0c5a2FTNXpiM1Z5WTJWbWIzSm5aUzV1WlhRdlJGUkVMM052Wkdsd2IyUnBMVEF1WkhSa0lnb2dJQ0I0Yld4dWN6cHBibXR6WTJGd1pUMGlhSFIwY0RvdkwzZDNkeTVwYm10elkyRndaUzV2Y21jdmJtRnRaWE53WVdObGN5OXBibXR6WTJGd1pTSUtJQ0FnZG1WeWMybHZiajBpTVM0eElnb2dJQ0JwWkQwaVRHRjVaWEpmTVNJS0lDQWdlRDBpTUhCNElnb2dJQ0I1UFNJd2NIZ2lDaUFnSUhkcFpIUm9QU0kyTkhCNElnb2dJQ0JvWldsbmFIUTlJalkwY0hnaUNpQWdJSFpwWlhkQ2IzZzlJakFnTUNBMk5DQTJOQ0lLSUNBZ1pXNWhZbXhsTFdKaFkydG5jbTkxYm1ROUltNWxkeUF3SURBZ05qUWdOalFpQ2lBZ0lIaHRiRHB6Y0dGalpUMGljSEpsYzJWeWRtVWlDaUFnSUdsdWEzTmpZWEJsT25abGNuTnBiMjQ5SWpBdU5EZ3VOQ0J5T1Rrek9TSUtJQ0FnYzI5a2FYQnZaR2s2Wkc5amJtRnRaVDBpVFc5MWMyVlNhV2RvZEM1emRtY2lQanh0WlhSaFpHRjBZUW9nSUNCcFpEMGliV1YwWVdSaGRHRXlNU0krUEhKa1pqcFNSRVkrUEdOak9sZHZjbXNLSUNBZ0lDQWdJSEprWmpwaFltOTFkRDBpSWo0OFpHTTZabTl5YldGMFBtbHRZV2RsTDNOMlp5dDRiV3c4TDJSak9tWnZjbTFoZEQ0OFpHTTZkSGx3WlFvZ0lDQWdJQ0FnSUNCeVpHWTZjbVZ6YjNWeVkyVTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlrWTIxcGRIbHdaUzlUZEdsc2JFbHRZV2RsSWlBdlBqeGtZenAwYVhSc1pTQXZQand2WTJNNlYyOXlhejQ4TDNKa1pqcFNSRVkrUEM5dFpYUmhaR0YwWVQ0OFpHVm1jd29nSUNCcFpEMGlaR1ZtY3pFNUlpQXZQanh6YjJScGNHOWthVHB1WVcxbFpIWnBaWGNLSUNBZ2NHRm5aV052Ykc5eVBTSWpabVptWm1abUlnb2dJQ0JpYjNKa1pYSmpiMnh2Y2owaUl6WTJOalkyTmlJS0lDQWdZbTl5WkdWeWIzQmhZMmwwZVQwaU1TSUtJQ0FnYjJKcVpXTjBkRzlzWlhKaGJtTmxQU0l4TUNJS0lDQWdaM0pwWkhSdmJHVnlZVzVqWlQwaU1UQWlDaUFnSUdkMWFXUmxkRzlzWlhKaGJtTmxQU0l4TUNJS0lDQWdhVzVyYzJOaGNHVTZjR0ZuWlc5d1lXTnBkSGs5SWpBaUNpQWdJR2x1YTNOallYQmxPbkJoWjJWemFHRmtiM2M5SWpJaUNpQWdJR2x1YTNOallYQmxPbmRwYm1SdmR5MTNhV1IwYUQwaU1USTRNaUlLSUNBZ2FXNXJjMk5oY0dVNmQybHVaRzkzTFdobGFXZG9kRDBpT0RnMklnb2dJQ0JwWkQwaWJtRnRaV1IyYVdWM01UY2lDaUFnSUhOb2IzZG5jbWxrUFNKbVlXeHpaU0lLSUNBZ2FXNXJjMk5oY0dVNmVtOXZiVDBpTXk0Mk9EYzFJZ29nSUNCcGJtdHpZMkZ3WlRwamVEMGlNeklpQ2lBZ0lHbHVhM05qWVhCbE9tTjVQU0l6TWlJS0lDQWdhVzVyYzJOaGNHVTZkMmx1Wkc5M0xYZzlJak14SWdvZ0lDQnBibXR6WTJGd1pUcDNhVzVrYjNjdGVUMGlNVFVpQ2lBZ0lHbHVhM05qWVhCbE9uZHBibVJ2ZHkxdFlYaHBiV2w2WldROUlqQWlDaUFnSUdsdWEzTmpZWEJsT21OMWNuSmxiblF0YkdGNVpYSTlJbWN6SWlBdlBnbzhad29nSUNCcFpEMGlaek1pUGdvSlBHY0tJQ0FnYVdROUltYzFJZ29nSUNCemRIbHNaVDBpYzNSeWIydGxPaU0wWkRSa05HUTdabWxzYkRvak5HUTBaRFJrSWo0S0NRazhjR0YwYUFvZ0lDQm1hV3hzUFNJak1ESXdNakF5SWdvZ0lDQmtQU0pOTXpJdU9EVTBMREl3TGpBeU9HTXRNQzR3TVRVdE1TNHlOelFzTUM0MU56WXRNaTR5Tmprc01TNHhOVEV0TXk0eU16WmpNQzQzTlRndE1TNHlOemdzTVM0MU5ETXRNaTQyTERBdU9UazNMVFF1TkRFM0lDQWdJR010TUM0MU5UVXRNUzQyTmpjdE1TNDJNRGN0TWk0ME9EVXRNaTQxTXprdE15NHlNVEpqTFRFdU1qVTBMVEF1T1RjekxUSXVNVFU1TFRFdU5qYzJMVEV1TmpnM0xUUXVNelF6YkRBdU1EUXhMVEF1TWpJNWJDMHhMak0xTFRBdU1qTTRUREk1TGpReU55dzBMalU0SUNBZ0lHTXRNQzQyTVRVc015NDBPRFFzTUM0NE56Z3NOQzQyTkRNc01pNHhPVFVzTlM0Mk5qWmpNQzQ0TlN3d0xqWTJNeXd4TGpZMU15d3hMakk0T0N3eUxqQTNNaXd5TGpVME1tTXdMak0yTml3eExqSXlOQzB3TGpFNExESXVNVFF6TFRBdU9EWTVMRE11TXpBMklDQWdJR010TUM0Mk5ERXNNUzR3T0RFdE1TNHpOallzTWk0ekxURXVNelE1TERNdU9UTXpZeTAyTGpnek55d3dMakF3TnkweE15NDRNak1zTUM0eU9URXRNVE11T0RJekxESTBMalU1WXpBc01UQXVPVFV4TERndU56azVMREUxTGpBek1pd3hOQzR6TkRjc01UVXVNRE15SUNBZ0lHTTFMalUwTlN3d0xERTBMak0wTnkwMExqQTRNU3d4TkM0ek5EY3RNVFV1TURNeVF6UTJMak0wTnl3eU1DNHpORGNzTXprdU1qSTRMREl3TGpBME9Dd3pNaTQ0TlRRc01qQXVNREk0ZWlCTk16SXVOamcxTERJeExqTTVPU0FnSUNCak5TNDJORE1zTUM0d01USXNNVEF1T1RJM0xEQXVNak0yTERFeUxqQTJNeXd4Tmk0eE5UTmpMVE11T0RZc01TNDRNRFV0Tnk0NU1UWXNNaTQzTmpVdE1USXVNRFl6TERJdU9EWjJMVEl1T1RZMll6QXVPRFExTFRBdU1UWXlMREV1TkRneExUQXVPVEE1TERFdU5EZ3hMVEV1TnpneWRpMDRMamsxTmlBZ0lDQmpNQzB3TGpnM05pMHdMall6TnkweExqWXlNUzB4TGpRNE1TMHhMamM0TkZZeU1TNHpPVGw2SUUwek1TNDJOVGdzTWpZdU1qVTBhREF1TmpnMVl6QXVNalE1TERBc01DNDBOVE1zTUM0eU1EVXNNQzQwTlRNc01DNDBOVFIyT0M0NU5UWWdJQ0FnWXpBc01DNHlORGt0TUM0eU1EUXNNQzQwTkRrdE1DNDBOVE1zTUM0ME5EbG9MVEF1TmpnMVl5MHdMakkwT1N3d0xUQXVORFV5TFRBdU1pMHdMalExTWkwd0xqUTBPWFl0T0M0NU5UWkRNekV1TWpBMkxESTJMalExT1N3ek1TNDBNRGtzTWpZdU1qVTBMRE14TGpZMU9Dd3lOaTR5TlRSNklDQWdJQ0JOTXpFdU16RXpMREl4TGpNNU9YWXpMalV5TldNdE1DNDRORFVzTUM0eE5qTXRNUzQwTnprc01DNDVNUzB4TGpRM09Td3hMamM0TkhZNExqazFObU13TERBdU9EY3pMREF1TmpNMExERXVOaklzTVM0ME56a3NNUzQzT0RKMk1pNDVOallnSUNBZ1l5MDJMak14TVMwd0xqRTBPQzB4TUM0NU1EVXRNaTR5TlRJdE1USXVNRFl6TFRJdU9ETTVRekl3TGpNNE1Td3lNUzQyTXpNc01qVXVOalk0TERJeExqUXhNU3d6TVM0ek1UTXNNakV1TXprNWVpQk5NeklzTlRndU1qYzBJQ0FnSUdNdE5TNHdNVFlzTUMweE1pNDVOell0TXk0M01EY3RNVEl1T1RjMkxURXpMalkxT0dNd0xURXVPVGd6TERBdU1EUTFMVE11T0RVekxEQXVNVE0wTFRVdU5UWXpZekl1TURBekxEQXVPVEk1TERZdU5qazJMREl1TnpRc01USXVPRFk0TERJdU56UWdJQ0FnWXpRdU16azBMREFzT0M0M01EUXRNQzQ1TXpRc01USXVPREV6TFRJdU56Y3hZekF1TURnNUxERXVOekU0TERBdU1UTTFMRE11Tml3d0xqRXpOU3cxTGpVNU5VTTBOQzQ1TnpRc05UUXVOVFkzTERNM0xqQXhOaXcxT0M0eU56UXNNeklzTlRndU1qYzBlaUlLSUNBZ2FXUTlJbkJoZEdnM0lnb2dJQ0J6ZEhsc1pUMGljM1J5YjJ0bE9pTTBaRFJrTkdRN1ptbHNiRG9qTkdRMFpEUmtJaUF2UGdvSlBDOW5QZ29KQ2drS1BIQmhkR2dLSUNBZ2MzUjViR1U5SW1acGJHdzZJelkxUmtRd01EdHpkSEp2YTJVNkl6WTFSa1F3TUR0emRISnZhMlV0ZDJsa2RHZzZNQzR5TnpFeE9EWTBNems1T1RrNU9UazVOeUlLSUNBZ1pEMGliU0F6TWk0NU1qSXdNelFzTXpndU9UVXdOemt6SUdNZ01Dd3RNUzR4TXpVNE1qVWdNQzR4TVRRNU1Ua3NMVEV1TkRVNE1EUTFJREF1TmpjM09UWTJMQzB4TGprd01Ea3pPQ0JzSURBdU5qYzNPVFkyTEMwd0xqVXpNekk0T0NBd0xDMDFMakk0TURjNElHTWdNQ3d0TlM0eU56RXlORGtnTFRBdU1EQXhNaXd0TlM0eU9ESXdNRE1nTFRBdU5qYzNPVFkyTEMwMUxqazFPRGMwTlNBdE1DNDFOVGMwTXprc0xUQXVOVFUzTkRNNUlDMHdMalkzTnprMk5pd3RNQzQ1TkRBNU16VWdMVEF1TmpjM09UWTJMQzB5TGpFMU56RTJOU0JzSURBc0xURXVORGM1TVRrNUlERXVOVE0xTkRnM0xEQWdZeUExTGpZMU56VTFOQ3d3SURndU5UZzBNek00TERNdU56STROVEk1SURrdU56RTROVFVzTVRJdU16Z3dOemt4SURBdU5EazRORE0wTERNdU9EQXlNalkxSURBdU5UQXpORGdzTXk0MU1qVTNNekVnTFRBdU1EWTNOaXd6TGpjd05EVTNNaUF0TUM0eU5qRXdNVGNzTUM0d09ERTNOQ0F0TVM0MU1qZzJPVFFzTUM0MU1USXdNVFlnTFRJdU9ERTNNRFU1TERBdU9UVTJNVFkzSUMweUxqQXpOekl3Tml3d0xqY3dNak13TmlBdE5DNHdORGd3TXpJc01TNHhNVE13TkRRZ0xUY3VORGc0TURJMkxERXVOVEk1TlRJNElHd2dMVEF1T0RneE16VTJMREF1TVRBMk56QTNJREFzTFRFdU16WTNOalVnZWlJS0lDQWdhV1E5SW5CaGRHZ3pOelk0SWdvZ0lDQnBibXR6WTJGd1pUcGpiMjV1WldOMGIzSXRZM1Z5ZG1GMGRYSmxQU0l3SWlBdlBqeHdZWFJvQ2lBZ0lITjBlV3hsUFNKbWFXeHNPaU5tWm1abVptWTdjM1J5YjJ0bE9pTm1abVptWm1ZN2MzUnliMnRsTFhkcFpIUm9PakF1TWpjeE1UZzJORFFpQ2lBZ0lHUTlJbTBnTXpFdU5EZzFNRGd4TERNMUxqZzBNakUwTXlCaklDMHdMakV3TkRVNU1Td3RNQzR4TURRMU9URWdMVEF1TVRrd01UWTJMQzB5TGpJek1UTTBOeUF0TUM0eE9UQXhOallzTFRRdU56STJNVEl6SURBc0xUTXVPVGd6T1RrMElEQXVNRFUxTURJc0xUUXVOVFUzTURjeElEQXVORFV5TVRJM0xDMDBMamN3T1RRMU5pQXdMakkwT0RZM0xDMHdMakE1TlRReUlEQXVOVFUyT0RBeUxDMHdMakEyT0RneUlEQXVOamcwTnpNNExEQXVNRFU1TVRJZ01DNHhNamM1TXpjc01DNHhNamM1TXpZZ01DNHhPVGt3TlRZc01pNHlPVFkwT0RFZ01DNHhOVGd3TkRNc05DNDRNVGc1T0RnZ0xUQXVNRFl6TVRrc015NDRPRFkwTURVZ0xUQXVNVE00Tmpjc05DNDFPVGcyT0RNZ0xUQXVORGswTlRjeUxEUXVOalkzTURBNUlDMHdMakl6TVRBd015d3dMakEwTkRNMUlDMHdMalV3TlRVM09Td3RNQzR3TURRNUlDMHdMall4TURFM0xDMHdMakV3T1RVek15QnNJREFzTUNCNklnb2dJQ0JwWkQwaWNHRjBhRE0zTnpBaUNpQWdJR2x1YTNOallYQmxPbU52Ym01bFkzUnZjaTFqZFhKMllYUjFjbVU5SWpBaUlDOCtQSEJoZEdnS0lDQWdjM1I1YkdVOUltWnBiR3c2STJabVptWm1aanR6ZEhKdmEyVTZJMlptWm1abVpqdHpkSEp2YTJVdGQybGtkR2c2TUM0eU56RXhPRFkwTkNJS0lDQWdaRDBpYlNBek1DNDBOREEwTXpNc05UY3VPVFExTXpFMklHTWdMVE11TURZME1EVXpMQzB3TGpReU1URXpJQzAyTGpjM056SXpMQzB5TGpRM05EazFNeUF0T0M0ME5UYzJNakVzTFRRdU5qYzRNRFlnTFRJdU1UVTRPQ3d0TWk0NE16QXpNek1nTFRNdU1URXpPVEU0TEMwMkxqY3pOemN4TmlBdE1pNDNOamsxT1RJc0xURXhMak16TURNNE5TQnNJREF1TVRrek1USXhMQzB5TGpVM05UZzNNaUF5TGpBM09UZzRMREF1TnpNMU5qSTRJR01nTXk0MU1qY3dNallzTVM0eU5EYzBOallnTmk0ek16YzNNREVzTVM0M01Ua3dOamdnTVRBdU1qRTFORGMwTERFdU56RTBNRFVnTkM0eE56RTNOekVzTFRBdU1EQTFOQ0EyTGpZME1qazRNU3d0TUM0ek9EZzJPQ0F4TUM0eU5UZ3pOaXd0TVM0MU9URXdOVGdnTWk0eE56ZzVOek1zTFRBdU56STBOalk0SURJdU5qa3lNVGt6TEMwd0xqZ3hOVGcxTmlBeUxqZ3hNelEwTkN3dE1DNDBPVGs0T0RNZ01DNHdPREUxTnl3d0xqSXhNalUySURBdU1EZzJOalFzTWk0eE1UazROalFnTUM0d01URXlOeXcwTGpJek9EUTFNeUF0TUM0eE1EWXlNVGNzTWk0NU9EVTRNU0F0TUM0eU5qWTFNekVzTkM0eU1USTVNemdnTFRBdU56RXlPVE0xTERVdU5EVTNNakE0SUMweExqUTFNREl4Tnl3MExqQTBNakl3TmlBdE5DNDBNREV4TVRnc05pNDRORFF4TlRZZ0xUZ3VORE0zT1RNNExEZ3VNREV5TURFM0lDMHlMak14TkRjME55d3dMalkyT1RZMk1TQXRNeTR6TkRNeE5Dd3dMamMzTWpJeE5TQXROUzR4T1RNME5qVXNNQzQxTVRjNU1ESWdlaUlLSUNBZ2FXUTlJbkJoZEdnek56Y3lJZ29nSUNCcGJtdHpZMkZ3WlRwamIyNXVaV04wYjNJdFkzVnlkbUYwZFhKbFBTSXdJaUF2UGp4d1lYUm9DaUFnSUhOMGVXeGxQU0ptYVd4c09pTm1abVptWm1ZN2MzUnliMnRsT2lObVptWm1abVk3YzNSeWIydGxMWGRwWkhSb09qQXVNamN4TVRnMk5EUWlDaUFnSUdROUltMGdNamd1TnpRd05UVTJMRFF3TGpBMk16WTRNaUJqSUMweUxqUTFOemM1TlN3dE1DNHlPRFE1T1RVZ0xUVXVNamt4TlRJeUxDMHdMamszTmpnNE1TQXROeTQwTnprMU16a3NMVEV1T0RJMk1qRXlJQzB3TGprMk9UUTVNaXd0TUM0ek56WXpNeklnTFRFdU56a3lPVE01TEMwd0xqY3dORGsyTVNBdE1TNDRNams0T0RRc0xUQXVOek13TWpnM0lDMHdMakUxTWpVMk5Dd3RNQzR4TURRMU9EUWdNQzQzTmpZd01UWXNMVFl1TWpReU5UUXhJREV1TVRZNE1ERXNMVGN1T0RBME5qVTJJREV1TkRJeE1Ua3hMQzAxTGpVeU1qWXpNU0EwTGpNd05EUTNOeXd0T0M0d05qRTRORGtnT1M0eE5UUXlOREVzTFRndU1EWXhPRFE1SUd3Z01TNDFOREUxTXpFc01DQXdMREV1TmpJM01URTVJR01nTUN3eExqSXpOekV5TlNBdE1DNHdPVE00TVN3eExqWXlOekV4T0NBdE1DNHpPVEUwTURJc01TNDJNamN4TVRnZ0xUQXVNakUxTWpjeExEQWdMVEF1TlRneE16Y3pMREF1TWpjeE1qSXhJQzB3TGpneE16VTFPU3d3TGpZd01qY3hOQ0F0TUM0ek5EVTRPRGtzTUM0ME9UTTRNallnTFRBdU5ESXlNVFUzTERFdU5USTNOVEkwSUMwd0xqUXlNakUxTnl3MUxqY3lNVGN3TmlCc0lEQXNOUzR4TVRnNU9USWdNQzQ0TVRNMU5Ua3NNQzQzTlRrNU56Z2dZeUF3TGpZM05UZzBOaXd3TGpZek1UTXpOU0F3TGpneE16VTFPU3d3TGprM01UQTRNeUF3TGpneE16VTFPU3d5TGpBd056RXdPQ0F3TERBdU9ETTFPVEl4SUMwd0xqRXhNVGMzTVN3eExqSXpOVE0zT0NBdE1DNHpNemc1T0RNc01TNHlNVEUwT0RrZ0xUQXVNVGcyTkRRc0xUQXVNREU1TmlBdE1TNHhPRE16Tml3dE1DNHhNek0xTlRFZ0xUSXVNakUxTXpjMkxDMHdMakkxTXpJeUlHd2dNQ3d3SUhvaUNpQWdJR2xrUFNKd1lYUm9NemMzT0NJS0lDQWdhVzVyYzJOaGNHVTZZMjl1Ym1WamRHOXlMV04xY25aaGRIVnlaVDBpTUNJZ0x6NDhMMmMrQ2p3dmMzWm5QZz09XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXdvcmRcIj7lubPnp7s8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGlwLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpSUhOMFlXNWtZV3h2Ym1VOUltNXZJajgrQ2p3aExTMGdSMlZ1WlhKaGRHOXlPaUJCWkc5aVpTQkpiR3gxYzNSeVlYUnZjaUF4TlM0d0xqQXNJRk5XUnlCRmVIQnZjblFnVUd4MVp5MUpiaUF1SUZOV1J5QldaWEp6YVc5dU9pQTJMakF3SUVKMWFXeGtJREFwSUNBdExUNEtDanh6ZG1jS0lDQWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklnb2dJQ0I0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5Naklnb2dJQ0I0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pQ2lBZ0lIaHRiRzV6T25OMlp6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lDaUFnSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlLSUNBZ2VHMXNibk02YzI5a2FYQnZaR2s5SW1oMGRIQTZMeTl6YjJScGNHOWthUzV6YjNWeVkyVm1iM0puWlM1dVpYUXZSRlJFTDNOdlpHbHdiMlJwTFRBdVpIUmtJZ29nSUNCNGJXeHVjenBwYm10elkyRndaVDBpYUhSMGNEb3ZMM2QzZHk1cGJtdHpZMkZ3WlM1dmNtY3ZibUZ0WlhOd1lXTmxjeTlwYm10elkyRndaU0lLSUNBZ2RtVnljMmx2YmowaU1TNHhJZ29nSUNCcFpEMGlUR0Y1WlhKZk1TSUtJQ0FnZUQwaU1IQjRJZ29nSUNCNVBTSXdjSGdpQ2lBZ0lIZHBaSFJvUFNJMk5IQjRJZ29nSUNCb1pXbG5hSFE5SWpZMGNIZ2lDaUFnSUhacFpYZENiM2c5SWpBZ01DQTJOQ0EyTkNJS0lDQWdaVzVoWW14bExXSmhZMnRuY205MWJtUTlJbTVsZHlBd0lEQWdOalFnTmpRaUNpQWdJSGh0YkRwemNHRmpaVDBpY0hKbGMyVnlkbVVpQ2lBZ0lHbHVhM05qWVhCbE9uWmxjbk5wYjI0OUlqQXVORGd1TkNCeU9Ua3pPU0lLSUNBZ2MyOWthWEJ2WkdrNlpHOWpibUZ0WlQwaVRXOTFjMlZOYVdSa2JHVXVjM1puSWo0OGJXVjBZV1JoZEdFS0lDQWdhV1E5SW0xbGRHRmtZWFJoTWpFaVBqeHlaR1k2VWtSR1BqeGpZenBYYjNKckNpQWdJQ0FnSUNCeVpHWTZZV0p2ZFhROUlpSStQR1JqT21admNtMWhkRDVwYldGblpTOXpkbWNyZUcxc1BDOWtZenBtYjNKdFlYUStQR1JqT25SNWNHVUtJQ0FnSUNBZ0lDQWdjbVJtT25KbGMyOTFjbU5sUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpHTnRhWFI1Y0dVdlUzUnBiR3hKYldGblpTSWdMejQ4WkdNNmRHbDBiR1VnTHo0OEwyTmpPbGR2Y21zK1BDOXlaR1k2VWtSR1Bqd3ZiV1YwWVdSaGRHRStQR1JsWm5NS0lDQWdhV1E5SW1SbFpuTXhPU0lnTHo0OGMyOWthWEJ2WkdrNmJtRnRaV1IyYVdWM0NpQWdJSEJoWjJWamIyeHZjajBpSTJabVptWm1aaUlLSUNBZ1ltOXlaR1Z5WTI5c2IzSTlJaU0yTmpZMk5qWWlDaUFnSUdKdmNtUmxjbTl3WVdOcGRIazlJakVpQ2lBZ0lHOWlhbVZqZEhSdmJHVnlZVzVqWlQwaU1UQWlDaUFnSUdkeWFXUjBiMnhsY21GdVkyVTlJakV3SWdvZ0lDQm5kV2xrWlhSdmJHVnlZVzVqWlQwaU1UQWlDaUFnSUdsdWEzTmpZWEJsT25CaFoyVnZjR0ZqYVhSNVBTSXdJZ29nSUNCcGJtdHpZMkZ3WlRwd1lXZGxjMmhoWkc5M1BTSXlJZ29nSUNCcGJtdHpZMkZ3WlRwM2FXNWtiM2N0ZDJsa2RHZzlJakV5T0RJaUNpQWdJR2x1YTNOallYQmxPbmRwYm1SdmR5MW9aV2xuYUhROUlqZzROaUlLSUNBZ2FXUTlJbTVoYldWa2RtbGxkekUzSWdvZ0lDQnphRzkzWjNKcFpEMGlabUZzYzJVaUNpQWdJR2x1YTNOallYQmxPbnB2YjIwOUlqTXVOamczTlNJS0lDQWdhVzVyYzJOaGNHVTZZM2c5SWkweE1DNHpNRFV3T0RVaUNpQWdJR2x1YTNOallYQmxPbU41UFNJek1pSUtJQ0FnYVc1cmMyTmhjR1U2ZDJsdVpHOTNMWGc5SWpNeElnb2dJQ0JwYm10elkyRndaVHAzYVc1a2IzY3RlVDBpTVRVaUNpQWdJR2x1YTNOallYQmxPbmRwYm1SdmR5MXRZWGhwYldsNlpXUTlJakFpQ2lBZ0lHbHVhM05qWVhCbE9tTjFjbkpsYm5RdGJHRjVaWEk5SW1jeklpQXZQZ284WndvZ0lDQnBaRDBpWnpNaVBnb0pQR2NLSUNBZ2FXUTlJbWMxSWdvZ0lDQnpkSGxzWlQwaWMzUnliMnRsT2lNMFpEUmtOR1E3Wm1sc2JEb2pOR1EwWkRSa0lqNEtDUWs4Y0dGMGFBb2dJQ0JtYVd4c1BTSWpNREl3TWpBeUlnb2dJQ0JrUFNKTk16SXVPRFUwTERJd0xqQXlPR010TUM0d01UVXRNUzR5TnpRc01DNDFOell0TWk0eU5qa3NNUzR4TlRFdE15NHlNelpqTUM0M05UZ3RNUzR5Tnpnc01TNDFORE10TWk0MkxEQXVPVGszTFRRdU5ERTNJQ0FnSUdNdE1DNDFOVFV0TVM0Mk5qY3RNUzQyTURjdE1pNDBPRFV0TWk0MU16a3RNeTR5TVRKakxURXVNalUwTFRBdU9UY3pMVEl1TVRVNUxURXVOamMyTFRFdU5qZzNMVFF1TXpRemJEQXVNRFF4TFRBdU1qSTViQzB4TGpNMUxUQXVNak00VERJNUxqUXlOeXcwTGpVNElDQWdJR010TUM0Mk1UVXNNeTQwT0RRc01DNDROemdzTkM0Mk5ETXNNaTR4T1RVc05TNDJOalpqTUM0NE5Td3dMalkyTXl3eExqWTFNeXd4TGpJNE9Dd3lMakEzTWl3eUxqVTBNbU13TGpNMk5pd3hMakl5TkMwd0xqRTRMREl1TVRRekxUQXVPRFk1TERNdU16QTJJQ0FnSUdNdE1DNDJOREVzTVM0d09ERXRNUzR6TmpZc01pNHpMVEV1TXpRNUxETXVPVE16WXkwMkxqZ3pOeXd3TGpBd055MHhNeTQ0TWpNc01DNHlPVEV0TVRNdU9ESXpMREkwTGpVNVl6QXNNVEF1T1RVeExEZ3VOems1TERFMUxqQXpNaXd4TkM0ek5EY3NNVFV1TURNeUlDQWdJR00xTGpVME5Td3dMREUwTGpNME55MDBMakE0TVN3eE5DNHpORGN0TVRVdU1ETXlRelEyTGpNME55d3lNQzR6TkRjc016a3VNakk0TERJd0xqQTBPQ3d6TWk0NE5UUXNNakF1TURJNGVpQk5Nekl1TmpnMUxESXhMak01T1NBZ0lDQmpOUzQyTkRNc01DNHdNVElzTVRBdU9USTNMREF1TWpNMkxERXlMakEyTXl3eE5pNHhOVE5qTFRNdU9EWXNNUzQ0TURVdE55NDVNVFlzTWk0M05qVXRNVEl1TURZekxESXVPRFoyTFRJdU9UWTJZekF1T0RRMUxUQXVNVFl5TERFdU5EZ3hMVEF1T1RBNUxERXVORGd4TFRFdU56Z3lkaTA0TGprMU5pQWdJQ0JqTUMwd0xqZzNOaTB3TGpZek55MHhMall5TVMweExqUTRNUzB4TGpjNE5GWXlNUzR6T1RsNklFMHpNUzQyTlRnc01qWXVNalUwYURBdU5qZzFZekF1TWpRNUxEQXNNQzQwTlRNc01DNHlNRFVzTUM0ME5UTXNNQzQwTlRSMk9DNDVOVFlnSUNBZ1l6QXNNQzR5TkRrdE1DNHlNRFFzTUM0ME5Ea3RNQzQwTlRNc01DNDBORGxvTFRBdU5qZzFZeTB3TGpJME9Td3dMVEF1TkRVeUxUQXVNaTB3TGpRMU1pMHdMalEwT1hZdE9DNDVOVFpETXpFdU1qQTJMREkyTGpRMU9Td3pNUzQwTURrc01qWXVNalUwTERNeExqWTFPQ3d5Tmk0eU5UUjZJQ0FnSUNCTk16RXVNekV6TERJeExqTTVPWFl6TGpVeU5XTXRNQzQ0TkRVc01DNHhOak10TVM0ME56a3NNQzQ1TVMweExqUTNPU3d4TGpjNE5IWTRMamsxTm1Nd0xEQXVPRGN6TERBdU5qTTBMREV1TmpJc01TNDBOemtzTVM0M09ESjJNaTQ1TmpZZ0lDQWdZeTAyTGpNeE1TMHdMakUwT0MweE1DNDVNRFV0TWk0eU5USXRNVEl1TURZekxUSXVPRE01UXpJd0xqTTRNU3d5TVM0Mk16TXNNalV1TmpZNExESXhMalF4TVN3ek1TNHpNVE1zTWpFdU16azVlaUJOTXpJc05UZ3VNamMwSUNBZ0lHTXROUzR3TVRZc01DMHhNaTQ1TnpZdE15NDNNRGN0TVRJdU9UYzJMVEV6TGpZMU9HTXdMVEV1T1RnekxEQXVNRFExTFRNdU9EVXpMREF1TVRNMExUVXVOVFl6WXpJdU1EQXpMREF1T1RJNUxEWXVOamsyTERJdU56UXNNVEl1T0RZNExESXVOelFnSUNBZ1l6UXVNemswTERBc09DNDNNRFF0TUM0NU16UXNNVEl1T0RFekxUSXVOemN4WXpBdU1EZzVMREV1TnpFNExEQXVNVE0xTERNdU5pd3dMakV6TlN3MUxqVTVOVU0wTkM0NU56UXNOVFF1TlRZM0xETTNMakF4Tml3MU9DNHlOelFzTXpJc05UZ3VNamMwZWlJS0lDQWdhV1E5SW5CaGRHZzNJZ29nSUNCemRIbHNaVDBpYzNSeWIydGxPaU0wWkRSa05HUTdabWxzYkRvak5HUTBaRFJrSWlBdlBnb0pQQzluUGdvSkNna0tQSEJoZEdnS0lDQWdjM1I1YkdVOUltWnBiR3c2STJabVptWm1aanR6ZEhKdmEyVTZJMlptWm1abVpqdHpkSEp2YTJVdGQybGtkR2c2TUM0eU56RXhPRFkwTXprNU9UazVPVGs1TnlJS0lDQWdaRDBpYlNBek1pNDVNakl3TXpRc016Z3VPVFV3TnpreklHTWdNQ3d0TVM0eE16VTRNalVnTUM0eE1UUTVNVGtzTFRFdU5EVTRNRFExSURBdU5qYzNPVFkyTEMweExqa3dNRGt6T0NCc0lEQXVOamMzT1RZMkxDMHdMalV6TXpJNE9DQXdMQzAxTGpJNE1EYzRJR01nTUN3dE5TNHlOekV5TkRrZ0xUQXVNREF4TWl3dE5TNHlPREl3TURNZ0xUQXVOamMzT1RZMkxDMDFMamsxT0RjME5TQXRNQzQxTlRjME16a3NMVEF1TlRVM05ETTVJQzB3TGpZM056azJOaXd0TUM0NU5EQTVNelVnTFRBdU5qYzNPVFkyTEMweUxqRTFOekUyTlNCc0lEQXNMVEV1TkRjNU1UazVJREV1TlRNMU5EZzNMREFnWXlBMUxqWTFOelUxTkN3d0lEZ3VOVGcwTXpNNExETXVOekk0TlRJNUlEa3VOekU0TlRVc01USXVNemd3TnpreElEQXVORGs0TkRNMExETXVPREF5TWpZMUlEQXVOVEF6TkRnc015NDFNalUzTXpFZ0xUQXVNRFkzTml3ekxqY3dORFUzTWlBdE1DNHlOakV3TVRjc01DNHdPREUzTkNBdE1TNDFNamcyT1RRc01DNDFNVEl3TVRZZ0xUSXVPREUzTURVNUxEQXVPVFUyTVRZM0lDMHlMakF6TnpJd05pd3dMamN3TWpNd05pQXROQzR3TkRnd016SXNNUzR4TVRNd05EUWdMVGN1TkRnNE1ESTJMREV1TlRJNU5USTRJR3dnTFRBdU9EZ3hNelUyTERBdU1UQTJOekEzSURBc0xURXVNelkzTmpVZ2VpSUtJQ0FnYVdROUluQmhkR2d6TnpZNElnb2dJQ0JwYm10elkyRndaVHBqYjI1dVpXTjBiM0l0WTNWeWRtRjBkWEpsUFNJd0lpQXZQanh3WVhSb0NpQWdJSE4wZVd4bFBTSm1hV3hzT2lObVptWm1abVk3YzNSeWIydGxPaU5tWm1abVptWTdjM1J5YjJ0bExYZHBaSFJvT2pBdU1qY3hNVGcyTkRRaUNpQWdJR1E5SW0wZ016QXVORFF3TkRNekxEVTNMamswTlRNeE5pQmpJQzB6TGpBMk5EQTFNeXd0TUM0ME1qRXhNeUF0Tmk0M056Y3lNeXd0TWk0ME56UTVOVE1nTFRndU5EVTNOakl4TEMwMExqWTNPREEySUMweUxqRTFPRGdzTFRJdU9ETXdNek16SUMwekxqRXhNemt4T0N3dE5pNDNNemMzTVRZZ0xUSXVOelk1TlRreUxDMHhNUzR6TXpBek9EVWdiQ0F3TGpFNU16RXlNU3d0TWk0MU56VTROeklnTWk0d056azRPQ3d3TGpjek5UWXlPQ0JqSURNdU5USTNNREkyTERFdU1qUTNORFkySURZdU16TTNOekF4TERFdU56RTVNRFk0SURFd0xqSXhOVFEzTkN3eExqY3hOREExSURRdU1UY3hOemN4TEMwd0xqQXdOVFFnTmk0Mk5ESTVPREVzTFRBdU16ZzROamdnTVRBdU1qVTRNellzTFRFdU5Ua3hNRFU0SURJdU1UYzRPVGN6TEMwd0xqY3lORFkyT0NBeUxqWTVNakU1TXl3dE1DNDRNVFU0TlRZZ01pNDRNVE0wTkRRc0xUQXVORGs1T0RneklEQXVNRGd4TlRjc01DNHlNVEkxTmlBd0xqQTROalkwTERJdU1URTVPRFkwSURBdU1ERXhNamNzTkM0eU16ZzBOVE1nTFRBdU1UQTJNakUzTERJdU9UZzFPREVnTFRBdU1qWTJOVE14TERRdU1qRXlPVE00SUMwd0xqY3hNamt6TlN3MUxqUTFOekl3T0NBdE1TNDBOVEF5TVRjc05DNHdOREl5TURZZ0xUUXVOREF4TVRFNExEWXVPRFEwTVRVMklDMDRMalF6Tnprek9DdzRMakF4TWpBeE55QXRNaTR6TVRRM05EY3NNQzQyTmprMk5qRWdMVE11TXpRek1UUXNNQzQzTnpJeU1UVWdMVFV1TVRrek5EWTFMREF1TlRFM09UQXlJSG9pQ2lBZ0lHbGtQU0p3WVhSb016YzNNaUlLSUNBZ2FXNXJjMk5oY0dVNlkyOXVibVZqZEc5eUxXTjFjblpoZEhWeVpUMGlNQ0lnTHo0OGNHRjBhQW9nSUNCemRIbHNaVDBpWm1sc2JEb2pabVptWm1abU8zTjBjbTlyWlRvalptWm1abVptTzNOMGNtOXJaUzEzYVdSMGFEb3dMakkzTVRFNE5qUTBJZ29nSUNCa1BTSnRJREk0TGpjME1EVTFOaXcwTUM0d05qTTJPRElnWXlBdE1pNDBOVGMzT1RVc0xUQXVNamcwT1RrMUlDMDFMakk1TVRVeU1pd3RNQzQ1TnpZNE9ERWdMVGN1TkRjNU5UTTVMQzB4TGpneU5qSXhNaUF0TUM0NU5qazBPVElzTFRBdU16YzJNek15SUMweExqYzVNamt6T1N3dE1DNDNNRFE1TmpFZ0xURXVPREk1T0RnMExDMHdMamN6TURJNE55QXRNQzR4TlRJMU5qUXNMVEF1TVRBME5UZzBJREF1TnpZMk1ERTJMQzAyTGpJME1qVTBNU0F4TGpFMk9EQXhMQzAzTGpnd05EWTFOaUF4TGpReU1URTVNU3d0TlM0MU1qSTJNekVnTkM0ek1EUTBOemNzTFRndU1EWXhPRFE1SURrdU1UVTBNalF4TEMwNExqQTJNVGcwT1NCc0lERXVOVFF4TlRNeExEQWdNQ3d4TGpZeU56RXhPU0JqSURBc01TNHlNemN4TWpVZ0xUQXVNRGt6T0RFc01TNDJNamN4TVRnZ0xUQXVNemt4TkRBeUxERXVOakkzTVRFNElDMHdMakl4TlRJM01Td3dJQzB3TGpVNE1UTTNNeXd3TGpJM01USXlNU0F0TUM0NE1UTTFOVGtzTUM0Mk1ESTNNVFFnTFRBdU16UTFPRGc1TERBdU5Ea3pPREkySUMwd0xqUXlNakUxTnl3eExqVXlOelV5TkNBdE1DNDBNakl4TlRjc05TNDNNakUzTURZZ2JDQXdMRFV1TVRFNE9Ua3lJREF1T0RFek5UVTVMREF1TnpVNU9UYzRJR01nTUM0Mk56VTRORFlzTUM0Mk16RXpNelVnTUM0NE1UTTFOVGtzTUM0NU56RXdPRE1nTUM0NE1UTTFOVGtzTWk0d01EY3hNRGdnTUN3d0xqZ3pOVGt5TVNBdE1DNHhNVEUzTnpFc01TNHlNelV6TnpnZ0xUQXVNek00T1RnekxERXVNakV4TkRnNUlDMHdMakU0TmpRMExDMHdMakF4T1RZZ0xURXVNVGd6TXpZc0xUQXVNVE16TlRVeElDMHlMakl4TlRNM05pd3RNQzR5TlRNeU1pQnNJREFzTUNCNklnb2dJQ0JwWkQwaWNHRjBhRE0zTnpnaUNpQWdJR2x1YTNOallYQmxPbU52Ym01bFkzUnZjaTFqZFhKMllYUjFjbVU5SWpBaUlDOCtQSEJoZEdnS0lDQWdjM1I1YkdVOUltWnBiR3c2STJabVpEZ3dNRHR6ZEhKdmEyVTZJMlptWkRnd01EdHpkSEp2YTJVdGQybGtkR2c2TUM0ek16ZzNNRGsyTlNJS0lDQWdaRDBpYlNBek1TNHpOVFl5TkRNc016VXVPREE1TWpZMElHTWdMVEF1TVRZME16RTBMQzB3TGpFd016ZzFOaUF0TUM0eU9UZzNOVE1zTFRJdU1qRTFOamd5SUMwd0xqSTVPRGMxTXl3dE5DNDJPVEk1TkRVZ01Dd3RNeTQ1TlRZd01qWWdNQzR3T0RZME5Dd3ROQzQxTWpVd09DQXdMamN4TURJNU5pd3ROQzQyTnpZek9UVWdNQzR6T1RBMk5qTXNMVEF1TURrME56VWdNQzQ0TnpRM05Dd3RNQzR3Tmpnek5DQXhMakEzTlRjeU9Td3dMakExT0RjZ01DNHlNREE1T1RFc01DNHhNamN3TXpnZ01DNHpNVEkzTVRrc01pNHlPREF6TmlBd0xqSTBPREk0T0N3MExqYzROVEUxT1NBdE1DNHdPVGt5Tnl3ekxqZzFPVEV5TWlBdE1DNHlNVGM0TlRNc05DNDFOalkwTURFZ0xUQXVOemMyT1RjM0xEUXVOak0wTWpRM0lDMHdMak0yTWprd09Td3dMakEwTkRBMElDMHdMamM1TkRJM0xDMHdMakF3TkRrZ0xUQXVPVFU0TlRnekxDMHdMakV3T0RjMk5TQnNJREFzTUNCNklnb2dJQ0JwWkQwaWNHRjBhRE0zTnpBaUNpQWdJR2x1YTNOallYQmxPbU52Ym01bFkzUnZjaTFqZFhKMllYUjFjbVU5SWpBaUlDOCtQQzluUGdvOEwzTjJaejQ9XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXdvcmRcIj7nvKnmlL48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBpZD1cImNvbnRyb2xcIj48L2Rpdj5cclxuPC9kaXY+Il19