三维地图

dianlixunjian
徐景良 10 months ago
parent d9fb81fd76
commit 99e6a5fd1e

@ -15,6 +15,9 @@
<link href="/mapboxgl/mapbox-gl.css" rel="stylesheet">
<script src="/mapboxgl/mapbox-gl.js"></script>
<!-- <link href="https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css" rel="stylesheet">
<script src="https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.js"></script> -->
<script src="/public/turf/turf-7.0.0.min.js"></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/@turf/turf@7.0.0/turf.min.js"></script> -->

@ -1,304 +0,0 @@
ICC Demo 使用说明
ICC Demo 使用说明 .............................................................................................................. 1
1 Qt Demo 文件目录说明。 ............................................................................. 2
2 Demo 运行方法及功能说明 .......................................................................... 2
2.1 初始化 .................................................................................................... 4
2.2 登录 ........................................................................................................ 5
2.3 组织树获取 ............................................................................................ 6
2.3.1 切换窗口到组织树 ..................................................................... 6
2.3.2 查询组织信息 ............................................................................. 6
2.3.3 设备/通道状态接收方法 ............................................................8
2.4 实时视频操作 ........................................................................................ 9
2.4.1 播放界面 ..................................................................................... 9
2.4.2 设置码流类型 ............................................................................. 9
2.4.3 实时抓图 ................................................................................... 10
2.4.4 音频音量控制 ........................................................................... 10
2.4.5 录制当前播放的视频到本地 ...................................................11
2.4.6 卡口操作 ................................................................................... 11
2.5 录像回放 .............................................................................................. 13
2.5.1 录像查询 ................................................................................... 13
2.5.2 录像相关操作: ....................................................................... 14
2.5.3 录像下载 ................................................................................... 15
2.5.4 回放抓图 ................................................................................... 16
2.5.5 获取回放时间 ........................................................................... 17
2.5.6 本地回放 ................................................................................... 18
2.6 云台控制 .............................................................................................. 18
2.6.1 云台方向控制 ........................................................................... 19
2.6.2 云台镜头操作 ........................................................................... 19
2.6.3 云台预置点操作 ....................................................................... 20
2.7 报警接收 .............................................................................................. 20
2.8 语音对讲 .............................................................................................. 21
2.9 电视上墙 ............................................................................................. 21
1 Qt Demo 文件目录说明。
打开本文档时,你需要已获取到 ICC SDK 二次开发包如下:
2046311_General_DPSDK_C_Chn_Win64_IS_V1.0.001.210202.zip
解压缩后文件目录如下:
Demo 文件夹下包含有 QtDemo 工程相关文件。
dll 文件夹中 是 demo 运行需要使用的 dll 库文件。
lib 文件夹中是 DPSDK.lib 静态库
ReadMe 文件简单说明开发包文件命名说明、目录主要结构、demo 运行操作步骤以及如何
使用 VS 打开 demo 工程并编译调试。
DSSICCManual.pdf 为 ICC 对接业务调用流程介绍以及接口说明。
2 Demo 运行方法及功能说明
打开 demo 文件夹,文件信息如下:
QtDemo ——该文件夹中包含 demo 工程文件,可以通过 Visual Studio 2005简称 VS2005
打开。Demo 使用 visual studio 2005、Qt4.8.5 qt-vs-addin-1.1.11-opensource.exe 进行编
写。
Copytobin.bat——库文件拷贝脚本用来将 dll 中的库文件拷贝到 demo\bin 中
vs2005_dsl_debug.vsprops——工程属性文件
vs2005_dsl_release.vsprops——工程属性文件
bin ——demo 运行需要依赖的库文件等都在该文件夹下,通过双击运行 Copytobin.bat 脚
本可以将 dll 文件夹中的库文件拷贝到 bin 文件夹中,找到 QtDemo.exe然后双击即可运
行。
Demo 界面如下:
2.1 初始化
Demo 登录之前需要先进行初始化,点击初始化系统按钮。
ICC Demo 默认使用 https 方式跟平台进行交互,需要使用的端口为 https 端口(默认 https
端口为 443需要勾选 HTTPS Mode.
2.2 登录
填写服务 Ip、端口、用户名、密码点击登录按钮登录点击登出登出
2.3 组织树获取
2.3.1 切换窗口到组织树
填入组织编码,根据编码获取组织信息。默认不写即可。
选中压缩后,网络交互中的组织信息是压缩的,通过网络抓包不能看到正常组织信
息。通常需要排查组织信息是否正确时,可以通过去除勾选然后通过网络抓包确认
平台服务是否发送正确数据。
包含设备选项已无效,不需关心。
2.3.2 查询组织信息
点击按钮 查询组织可以获取组织信息demo 接口内部自动请求了设备信息。
组织树相关说明;
<Department coding = 001 name = root sn = >
<Device>1000000</Device>
<Device>1000001</Device>
<Channel>1000000$1$0$0</Channel>
<Channel>1000000$3$0$0</Channel>
<Channel>1000000$4$0$0</Channel>
<Channel>1000001$1$0$0</Channel>
<Channel>1000001$1$0$1</Channel>
<Channel>1000001$1$0$2</Channel>
<Channel>1000001$1$0$3</Channel>
<Channel>1000001$3$0$0</Channel>
<Channel>1000001$4$0$0</Channel>
</Department>
Department 是组织节点字段标识coding 表示当前组织节点编码。name 表
示组织节点名称 sn 是组织节点的 sn 编码
<Device>1000000</Device> 表示当前节点包含的一个设备,设备 ID 为
1000000。
 通道 ID/设备 ID 设备 ID 是 DSS 平台上添加设备后生成的对该设备在该平台的
唯一标识编码。通道 ID(CameraId)形如1000000$1$0$0设备 ID $1$0$通道
号),其中:
1) 1000000 是设备 ID(DeviceId)。该设备 ID 可以在 DSS 平台 web 管理员端“设
备管理”页面的“编码”列查询。
2) 从左往右数,第一个$后的数字代表的是单元类型。1 是编码单元、2 是解码单
元、3 是报警输入单元、4 是报警输出单元5 电视墙输入单元6 电视墙输出
单元7 门禁单元8 对讲单元10 动环单元14 闸道单元15 LED 单元16
周界单元。实时视频都是$11000000$1$0$0 表示设备 1000000 的第一个编
码通道。
3) 中间的$0 默认全写 0代表的是单元类型的序号。
4) 最后一个$后面的数字表示通道号1000000$1$0$0 表示设备 1000000 的第一
个通道。如一个设备有 8 个通道,则通道序号是 0-7.
5) 通过 DPSDK 组织树相关接口可以获取组织信息,组织树信息中包含设
备 ID 和通道 ID 信息。
<Channel>1000000$1$0$0</Channel> 表示设备 1000000 下的一个编码通
道,通常视频播放使用的即为编码通道。
1000000$3$0$0 表示设备 1000000 下的一个报警输入通道。
1000000$4$0$0 表示设备 1000000 下的一个报警输出通道。
2.3.3 设备/通道状态接收方法
ICC 平台通过事件通知上报设备、通道状态信息。
通过接口 DPSDK_SetEventCallBack 设置事件回调函数
设备状态通知事件类型为DPSDK_EVENT_DEVICE_STATUS(值为 7)
通道状态通知事件类型为DPSDK_EVENT_CHANNEL_STATUS(值为 8)
1、登录时的组织信息中的状态信息就是 实时的
2、之后的状态变更会有 设备状态 或者 通道状态事件通知 上报
3、设备状态中 syncChannelStauts 为 1 时 ,需要同步通道状态跟设备状态
一致,其他根据通道状态事件和设备状态信息更新
2.4 实时视频操作
2.4.1 播放界面
界面切换到预览,在通道编码编辑框中填写一个可以播放视频的通道 ID。点
击开始播放按钮即可播放视频。视频播放画面在窗口界面的下方。
2.4.2 设置码流类型
默认值为主码流 1。码流类型1=主码流, 2=辅码流
其他值使用默认值即可,其他字段详细说明可以查看平台 sdk 开发手册,视频预
览相关说明。
2.4.3 实时抓图
视频播放成功后在预览中切换到抓图选项卡。1、填写图片存储位置 2、选择图
片保存格式 3 点击抓图到文件进行抓图,抓图成功后在图路径设置的位置中。
图片保存位置:
2.4.4 音频音量控制
音量控制需要视频播放成功后使用
2.4.5 录制当前播放的视频到本地
录制视频到本地需要先成功播放视频。
录像路径设置文件保存位置以及文件名称,录像文件命名会自动添加后缀,目前视
频录制仅支持将文件保存为 dav 格式。
录像分割长度按钮 设置文件分割大小,单位是 MB设置成功后录制的视频文件
以这个大小进行分割文件保存。
点击开始录制进行开始,点击停止录制停止,停止时会显示录像存储完整位置等信
息。还可以通过按钮判断当前是否正在录制。
2.4.6 卡口操作
卡口操作跟视频播放相互独立,不依赖视频播放
GetBayDict 接口可以获取卡口数据字典相关类型定义DictType 表示字典类型如
车道号、行车方向、车牌颜色车辆类型、车辆颜色等。具体类型定义可以查看平台
sdk 开发手册。
ChannelCode 填写需要卡口设备的通道 ID
DataType 表示卡口图片监控的订阅类型1=车辆信息, 2=车辆信息+图片信息
StreamType 码流类型1=主码流, 2=辅码流
StartBayPic 开启卡口图片监控,开启之后会跟据填写的 DataType 在接口设置的
回调函数中回调对应的数据信息,如设置的是车辆信息,开启卡口监控后会在左侧
列表中显示过车信息如车牌号、车辆速度、车牌颜色等。如果 DataType 设置为 2
除了可以回调车辆信息,还可以回调图片数据,图片数据是以码流的形式回调的,
demo 中有相关处理示例,并将图片默认保存在 D:/temp.jpeg同时在车辆信息列
表左侧展示该图片。具体处理可查看 demo 代码示例。
StopBayPic 停止卡口图片监控。
其他卡口相关数据获取请查看平台 sdk 开发手册卡口相关部分说明。
2.5 录像回放
2.5.1 录像查询
切换到 Playback 界面,填写想要播放的设备的通道 ID,然后根据时间、码流类型、录
像类型、录像来源参数查询录像。
2.5.2 录像相关操作:
Speed 选项卡可以设置录像播放的速率,速率值分别为 1、2、4、8、16、1/2、
1/4、1/8、1/16
Direction 用来设置录像播放方向 默认值为 0 正向播放1 为倒放。
Start by Time 按钮 点击改按钮,根据 Record 界面的时间进行时间回放,视频
画面在窗口右侧位置。在进行时间回放的时候,需要修改 Record 界面中 RecordType 为
1否则会产生播放报错 2060。
Start by File 按钮 点击改按钮,前需要先在 Record 界面中查询录像,并选中一
条想要播放的录像文件
Pause 按钮 该按钮可以暂停\恢复回放
Frame step 是单帧播放
Set Speed 可以在播放过程中调整播放速率
通过设置播放方向 和 播放速率 可以实现快进快退
2.5.3 录像下载
录像下载需要现在 Record 中查询录像,查询到录像的设备可以进行下载。
当 DownLoadFileName 为空时:
ChannelCode 中填写想要下载录像的通道 ID。
ChannelName 填写设备名称,填写 DownLoadPath 时,根据 NameRule 对下载
文件进行命名。
NameRule
FileFormat 可以设置下载录像的保存格式目前支持的格式有AVI、MP4、FLV、
ASF Normal 是保存成大华码流(dav 格式)的文件。
DownLoadPath 中设置想要将录像保存的位置,可以只填写到文件夹路径。填写
了 DownloadPath 的会根据 NameRule 进行命名。
当 DownLoadFileName 不为空时:
DownLoadFileName 填 写 问 文 件 存 储 的 绝 对 路 径 。 下 载 文 件 按 照
DownloadFileName 里的路径进行存储。
2.5.4 回放抓图
切换到 Picture可以进行录像抓图操作参见实时抓图方法。
PicFormat 支持的图片格式 0 bmp 1 jpeg
Path 设置图片保存位置已经文件名称
GetPictureBuf 抓图,并将图片保存在分配的缓存空间中
DPSDK_Get24BitPictureFile 抓图,并将图片保存到 path 设置的路径中
DPSDK_ConvertToBmpFile 将缓存的 图片数据 转 换成 bmp 文件,并 存 储在
szFileName 设置的路径中
DPSDK_ConvertToJpegFile 将缓存的图片数据转换成 Jpeg 文件,并存储在
szFileName 设置的路径中
2.5.5 获取回放时间
可以通过调用接口 DPSDK_GetPlayedTime获取播放的时间demo 界面中目前
隐藏了相关按钮,可以查看平台 sdk 开发手册查看相关说明。
2.5.6 本地回放
本地视频录像回放,点击本地回放,选择回放文件
选择.dav 文件
2.6 云台控制
云台控制相关接口在 DeviceFunction 模块中channelCode 中需要填写想要控制
的云台设备的通道 ID.
2.6.1 云台方向控制
方向包含上、下、左、右、左上、左下、右上、右下 8 个方向
命令 表示停止转动还是开始转动
点击按钮,不切换命令的话,会一直按照之前的方向一直转动。
步长范围 1-8默认为 1 即可。
2.6.2 云台镜头操作
方向 表示增加、减少
命令 表示停止还是开始
操作类型1-变倍2-变焦3-光圈
2.6.3 云台预置点操作
操作类型
1 定位预置点 2 设置预置点 3 删除预置点 4 更新工作时间
填写通道 id查询预置点获取预置点列表
2.7 报警接收
成功登陆平台后,平台 SDK 内部会自动连接平台 MQ,并通过 MQ 接收事件通知。
ICC 平台报警接收方法:
ICC 平台通过事件通知上报报警信息。
通过接口 DPSDK_SetEventCallBack 设置事件回调函数
报警事件类型为DPSDK_EVENT_ALARM_ALARMEVENT(值为 3)
在事件回调中根据事件类型判断是否为报警事件,报警事件对应事件信息中有报警类型
等相关信息,具体请查看 SDK 开发手册 DSSICCManual.pdf。
2.8 语音对讲
切换到对讲页面,对讲选项卡中是语音对讲的接口调用示例。语音对讲分为设备对讲和
通道对讲,请根据实际设备功能选择对应的对讲类型,也可以切换尝试使用。客户端上有语
音对讲功能,可先在客户端上选择相应设备测试成功后再通过 demo 接口调用实现。
填写通道 id->对讲条件填写(对讲类型->语音类别->对讲比特率->采样速率)->开始对讲
设备对讲时可填写设备 ID 或者通道 IDdemo 内部会进行解析),通道对讲仅能填写通道 ID。
对讲失败时,可能是对讲类型以及对讲参数不正确。当接口返回错误码-300 时,表示对讲
参数不正确,接口返回参数结构体会返回正确的对讲参数,修改参数后重新开始对讲。
2.9 电视上墙
切换到电视墙页面即时上墙操作请参考 QtDemo 中即时上墙操作说明.docx 文档说明

@ -1,25 +0,0 @@
费县森林防火2024年9月27日更新内容
一、更新内容
多起点道路导航+漫游功能;
北部山区合并道路图层数据更新和数据替换;(北部山区道路数据2024-09-23
北部山区水源地-点数据 显示问题修复,根据不同类型分类展示图标;
防灭火资源点击路线高亮可同时点击多条路线;
防灭火资源附近最近的一个水源地图标颜色区分,图标动态效果显示(实际路线最近)
防灭火资源点击一个起点,自动生成起点到火点的动态路线,(动态展示:消防车在点击路线上行走,文字标注每段路程、时间)
防灭火资源自动展示最近队伍和物资到火点动态路线
二、功能截图
多起点道路导航+漫游功能;
北部山区合并道路图层数据更新和数据替换;(北部山区道路数据2024-09-23
北部山区水源地-点数据 显示问题修复,根据不同类型分类展示图标;
防灭火资源点击路线高亮可同时点击多条路线;
防灭火资源附近最近的一个水源地图标颜色区分,图标动态效果显示(实际路线最近)
防灭火资源点击一个起点,自动生成起点到火点的动态路线,(动态展示:消防车在点击路线上行走,文字标注每段路程、时间)
防灭火资源自动展示最近队伍和物资到火点动态路线

@ -3,6 +3,12 @@
<div class="search-container-box">
<SearchComponent @toPosition="toPosition" @handlerFilter="handlerFilter"></SearchComponent>
</div>
<div class="map-type-switch-container">
<TableOutlined v-if="mapAngle == '3D'" @click="handlerChangeMapAngle('2D')" />
<GlobalOutlined v-else @click="handlerChangeMapAngle('3D')" />
</div>
</div>
</template>
<script lang="ts" setup>
@ -22,18 +28,22 @@ const VITE_GLOB_API_URL_VAR = ref<String>(VITE_GLOB_API_URL);
import { waiData } from "../LargeScreenMap/linyishi";
const mapContainerName = ref<String>()
mapContainerName.value = "mapContainer-"+generateUUID();
//
import { TableOutlined, GlobalOutlined} from '@ant-design/icons-vue';
const emits = defineEmits(["onload","handlerGetDetails"])
let map:Map;
// init map
const initMap = () => {
return new mapboxgl.Map({
container:mapContainerName.value,
language: 'zh-cmn',
projection: 'equirectangular', // wgs84
projection: 'globe', // wgs84
style: {
glyphs: 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf',
version: 8,
@ -787,10 +797,34 @@ function handlerChangeCounty(county,type=""){
handlerDealCountry(county.name);
}
const mapAngle = ref<String>( "2D")
const handlerChangeMapAngle = (state:String)=>{
if(map){
const currentPitch = map.getPitch();
if (currentPitch === 0) {
map.easeTo({ pitch: 60, bearing: 0, duration: 1000 });
map.dragRotate.enable(); //
map.pitchWithRotate = true; //
} else {
map.easeTo({ pitch: 0, bearing: 0, duration: 1000 });
map.dragRotate.disable(); //
map.pitchWithRotate = false; //
}
mapAngle.value = state;
}
}
onMounted(()=>{
mapboxgl.accessToken = MAPBOX_TOKEN;
map = initMap();
map.on("load",()=>{
// map.addLayer({
// 'id': 'wms-test-layer',
// 'type': 'raster',
@ -821,6 +855,20 @@ onMounted(()=>{
console.log(zoom);
console.log(center);
})
//
map.addSource('mapbox-dem', {
'type': 'raster-dem',
'tiles':[VITE_GLOB_API_URL_VAR.value+'/mapbox_terrain/{z}/{x}/{y}.png'],
'tileSize': 256,
'maxzoom': 13,
'minzoom':10,
});
map.setTerrain({ source: "mapbox-dem", exaggeration: 1 });
// 2D
// handlerChangeMapAngle("3D")
})
map && map.flyTo({
center: [118.30207505530701, 35.30123435040745],
@ -851,6 +899,22 @@ defineExpose({
left:73px;
z-index:9999;
}
.map-type-switch-container{
width:40px;
height:40px;
position:absolute;
top:72px;
right:73px;
z-index:9999;
font-size:22px;
color:#fff;
background:rgba(0,0,0,0.4);
text-align:center;
line-height:40px;
cursor:pointer;
border-radius:8px;
}
::v-deep .mapboxgl-ctrl-logo{
display: none!important;
}

File diff suppressed because it is too large Load Diff

@ -287,7 +287,6 @@ function getMaskData(){
url:`http://120.222.154.7:8090/geoserver/linyishi/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=linyishi%3Ashijie&maxFeatures=50&outputFormat=application%2Fjson`,
}).then(res=>{
let geojson = {DATA:res.data.features[0].geometry.coordinates[0][0]}
handlerLoadMaskLayer(geojson);
});
@ -431,10 +430,12 @@ function handlerLoadHeatLayer(heatdata){
'rgba(178,24,43,1)'
],
// 'heatmap-radius': 8,
// ,
'heatmap-radius': [
'interpolate',['linear'],['zoom'],
9,7,
10,16,
9,4.5,
10,15,
12,24,
14,32,
],
@ -597,12 +598,6 @@ function handlerLoadConvergeLayer(geojson){
'circle-color': [
'step',
['get', 'point_count'],
// '#51bbd6',
// 100,
// '#f1f075',
// 750,
// '#f28cb1'
'rgba(51, 71, 255 ,0.6)',
50,
'rgba(51, 255, 81 ,0.6)',

@ -0,0 +1,66 @@
// vite.config.ts
import { defineApplicationConfig } from "file:///E:/projects/%E8%B4%A2%E6%BA%90%E7%B3%BB%E7%BB%9F/CaiYuanYiTiHua/internal/vite-config/dist/index.mjs";
var vite_config_default = defineApplicationConfig({
overrides: {
optimizeDeps: {
include: [
"echarts/core",
"echarts/charts",
"echarts/components",
"echarts/renderers",
"qrcode",
"@iconify/iconify",
"ant-design-vue/es/locale/zh_CN",
"ant-design-vue/es/locale/en_US",
"@/../lib/vform/designer.umd.js"
]
},
build: {
/* 其他build生产打包配置省略 */
//...
target: "esnext",
commonjsOptions: {
include: /node_modules|lib/
//这里记得把lib目录加进来否则生产打包会报错
}
},
server: {
proxy: {
"/basic-api": {
target: "http://localhost:3000",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/basic-api`), "")
// only https
// secure: false
},
"/upload": {
target: "http://localhost:3300/upload",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/upload`), "")
}
},
warmup: {
clientFiles: ["./index.html", "./src/{views,components}/*"]
}
},
define: {
"process.env": {
BASE_URL: "/"
}
},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true
}
}
},
plugins: []
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxwcm9qZWN0c1xcXFxcdThEMjJcdTZFOTBcdTdDRkJcdTdFREZcXFxcQ2FpWXVhbllpVGlIdWFcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXHByb2plY3RzXFxcXFx1OEQyMlx1NkU5MFx1N0NGQlx1N0VERlxcXFxDYWlZdWFuWWlUaUh1YVxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovcHJvamVjdHMvJUU4JUI0JUEyJUU2JUJBJTkwJUU3JUIzJUJCJUU3JUJCJTlGL0NhaVl1YW5ZaVRpSHVhL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQXBwbGljYXRpb25Db25maWcgfSBmcm9tICdAdmJlbi92aXRlLWNvbmZpZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUFwcGxpY2F0aW9uQ29uZmlnKHtcbiAgb3ZlcnJpZGVzOiB7XG4gICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICBpbmNsdWRlOiBbXG4gICAgICAgICdlY2hhcnRzL2NvcmUnLFxuICAgICAgICAnZWNoYXJ0cy9jaGFydHMnLFxuICAgICAgICAnZWNoYXJ0cy9jb21wb25lbnRzJyxcbiAgICAgICAgJ2VjaGFydHMvcmVuZGVyZXJzJyxcbiAgICAgICAgJ3FyY29kZScsXG4gICAgICAgICdAaWNvbmlmeS9pY29uaWZ5JyxcbiAgICAgICAgJ2FudC1kZXNpZ24tdnVlL2VzL2xvY2FsZS96aF9DTicsXG4gICAgICAgICdhbnQtZGVzaWduLXZ1ZS9lcy9sb2NhbGUvZW5fVVMnLFxuICAgICAgICAnQC8uLi9saWIvdmZvcm0vZGVzaWduZXIudW1kLmpzJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBidWlsZDoge1xuICAgICAgLyogXHU1MTc2XHU0RUQ2YnVpbGRcdTc1MUZcdTRFQTdcdTYyNTNcdTUzMDVcdTkxNERcdTdGNkVcdTc3MDFcdTc1NjUgKi9cbiAgICAgIC8vLi4uXG4gICAgICB0YXJnZXQ6ICdlc25leHQnLFxuICAgICAgY29tbW9uanNPcHRpb25zOiB7XG4gICAgICAgIGluY2x1ZGU6IC9ub2RlX21vZHVsZXN8bGliLywgLy9cdThGRDlcdTkxQ0NcdThCQjBcdTVGOTdcdTYyOEFsaWJcdTc2RUVcdTVGNTVcdTUyQTBcdThGREJcdTY3NjVcdUZGMENcdTU0MjZcdTUyMTlcdTc1MUZcdTRFQTdcdTYyNTNcdTUzMDVcdTRGMUFcdTYyQTVcdTk1MTlcdUZGMDFcdUZGMDFcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIHByb3h5OiB7XG4gICAgICAgICcvYmFzaWMtYXBpJzoge1xuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICAgIHdzOiB0cnVlLFxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXi9iYXNpYy1hcGlgKSwgJycpLFxuICAgICAgICAgIC8vIG9ubHkgaHR0cHNcbiAgICAgICAgICAvLyBzZWN1cmU6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgICcvdXBsb2FkJzoge1xuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzMwMC91cGxvYWQnLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgICB3czogdHJ1ZSxcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoYF4vdXBsb2FkYCksICcnKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB3YXJtdXA6IHtcbiAgICAgICAgY2xpZW50RmlsZXM6IFsnLi9pbmRleC5odG1sJywgJy4vc3JjL3t2aWV3cyxjb21wb25lbnRzfS8qJ10sXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmaW5lOiB7XG4gICAgICAncHJvY2Vzcy5lbnYnOiB7XG4gICAgICAgIEJBU0VfVVJMOiAnLycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY3NzOiB7XG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XG4gICAgICAgIGxlc3M6IHtcbiAgICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwbHVnaW5zOiBbXSxcbiAgfSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUF1VCxTQUFTLCtCQUErQjtBQUUvVixJQUFPLHNCQUFRLHdCQUF3QjtBQUFBLEVBQ3JDLFdBQVc7QUFBQSxJQUNULGNBQWM7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0EsT0FBTztBQUFBO0FBQUE7QUFBQSxNQUdMLFFBQVE7QUFBQSxNQUNSLGlCQUFpQjtBQUFBLFFBQ2YsU0FBUztBQUFBO0FBQUEsTUFDWDtBQUFBLElBQ0Y7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLE9BQU87QUFBQSxRQUNMLGNBQWM7QUFBQSxVQUNaLFFBQVE7QUFBQSxVQUNSLGNBQWM7QUFBQSxVQUNkLElBQUk7QUFBQSxVQUNKLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sYUFBYSxHQUFHLEVBQUU7QUFBQTtBQUFBO0FBQUEsUUFHL0Q7QUFBQSxRQUNBLFdBQVc7QUFBQSxVQUNULFFBQVE7QUFBQSxVQUNSLGNBQWM7QUFBQSxVQUNkLElBQUk7QUFBQSxVQUNKLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sVUFBVSxHQUFHLEVBQUU7QUFBQSxRQUM1RDtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFFBQVE7QUFBQSxRQUNOLGFBQWEsQ0FBQyxnQkFBZ0IsNEJBQTRCO0FBQUEsTUFDNUQ7QUFBQSxJQUNGO0FBQUEsSUFDQSxRQUFRO0FBQUEsTUFDTixlQUFlO0FBQUEsUUFDYixVQUFVO0FBQUEsTUFDWjtBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILHFCQUFxQjtBQUFBLFFBQ25CLE1BQU07QUFBQSxVQUNKLG1CQUFtQjtBQUFBLFFBQ3JCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFNBQVMsQ0FBQztBQUFBLEVBQ1o7QUFDRixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=
Loading…
Cancel
Save