From efe41f68868a8926dfc1a6851a492805b56786db Mon Sep 17 00:00:00 2001 From: gjj <Ganjj@probim.com.cn> Date: Fri, 21 Feb 2025 16:35:52 +0800 Subject: [PATCH] 样式开发 --- src/assets/images/backgrounds/shigongdanwei.png | 0 src/assets/images/titles/shebei.png | 0 src/assets/images/backgrounds/people.png | 0 src/utils/http.js | 280 src/assets/images/backgrounds/daqiwendu.png | 0 src/assets/images/backgrounds/cover_bg.png | 0 src/assets/images/backgrounds/jianshedanwei.png | 0 src/assets/images/backgrounds/zhihui_active.png | 0 src/assets/images/backgrounds/shejidanwei.png | 0 src/assets/images/backgrounds/home.png | 0 src/assets/images/backgrounds/zoomout.png | 0 reg-js-sdjk.reg | 8 public/crypto-js.js | 5736 +++++++++++++++++++ src/assets/images/backgrounds/search.png | 0 src/components/SizeAdapter.vue | 45 .eslintrc.js | 52 src/Dashboard.vue | 188 index.html | 25 src/components/MenuList.vue | 264 src/assets/images/titles/xiangmu_bg.png | 0 src/assets/images/backgrounds/PM10.png | 0 src/components/V2Echarts.vue | 176 vite.config.js | 98 src/components/Collapse.vue | 154 src/components/Divide.vue | 46 src/assets/images/backgrounds/table_bg.png | 0 src/assets/css/self-global.scss | 40 src/components/Login.vue | 171 src/assets/images/backgrounds/jianlidanwei.png | 0 reg-js-sgfa.reg | 8 src/api/app.js | 9 src/store/index.js | 16 src/components/FullScreenButton.vue | 62 src/assets/css/element-ui-override.scss | 140 src/components/Warning.vue | 20 src/assets/css/sass.scss | 3 src/assets/images/backgrounds/fengxiang.png | 0 src/assets/images/backgrounds/shishirenshu.png | 0 src/router/index.js | 45 src/assets/css/tail-wind/index.css | 5 README.md | 14 src/components/TransitionSize.vue | 253 src/components/VideoPlayer.vue | 91 src/main.js | 29 yarn.lock | 1845 ++++++ src/assets/images/backgrounds/PM2.png | 0 src/components/Header.vue | 98 src/assets/images/backgrounds/home_active.png | 0 src/assets/images/backgrounds/logo.png | 0 src/views/Home.vue | 314 + src/assets/images/backgrounds/time.png | 0 src/mixins/index.js | 22 src/assets/images/backgrounds/mubiaowancheng.png | 0 src/components/TimeLine/TimeLineItem.vue | 67 postcss.config.js | 11 src/components/DialogFixed.vue | 108 src/views/EquipmentView.vue | 618 ++ src/assets/images/titles/renyuan.png | 0 src/views/ProjectView.vue | 305 + .gitignore | 26 tailwind.config.js | 23 icon.png | 0 src/assets/images/backgrounds/daqishidu.png | 0 jsconfig.json | 11 src/assets/images/backgrounds/zhihui.png | 0 src/utils/getToken.js | 9 public/base64.js | 316 + src/assets/images/backgrounds/screen.png | 0 src/components/DropDown.vue | 108 public/config.js | 11 src/store/modules/common.js | 20 src/assets/images/titles/title_second.png | 0 src/assets/images/backgrounds/mubiaowanc.png | 0 src/assets/images/backgrounds/fengli.png | 0 src/components/SwitchMap.vue | 46 src/components/TimeLine/TimeLine.vue | 101 src/utils/getUserProfile.js | 9 src/assets/images/backgrounds/jianzhumianji.png | 0 src/assets/images/backgrounds/home_line.png | 0 src/api/home.js | 45 大屏.xmind | 0 src/assets/images/titles/xiangmu.png | 0 public/ref/style/darkblue.json | 2571 ++++++++ src/assets/images/backgrounds/zaigang.png | 0 src/assets/images/titles/shigong.png | 0 src/assets/css/DIN_font.css | 23 package.json | 47 src/assets/images/titles/wendu_bg.png | 0 .prettierrc.json | 19 src/assets/images/backgrounds/shigongjinduchart.png | 0 public/ref/style/satellite.json | 2631 +++++++++ src/sceneJSON.js | 2 src/App.vue | 17 src/assets/images/titles/huanjing.png | 0 src/utils/logout.js | 19 startscg.bat | 3 96 files changed, 17,423 insertions(+), 0 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..5c8a138 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,52 @@ +const { defineConfig } = require("eslint-define-config"); +module.exports = defineConfig({ + root: true, + env: { + browser: true, + node: true, + es6: true, + }, + parser: "vue-eslint-parser", + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + extends: ["plugin:vue/recommended", "plugin:prettier/recommended"], + plugins: ["vue"], + rules: { + "vue/script-setup-uses-vars": "error", + "vue/custom-event-name-casing": "off", + "no-use-before-define": "off", + "no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }, + ], + "space-before-function-paren": "off", + "vue/attributes-order": "off", + "vue/one-component-per-file": "off", + "vue/html-closing-bracket-newline": "off", + "vue/max-attributes-per-line": "off", + "vue/multiline-html-element-content-newline": "off", + "vue/singleline-html-element-content-newline": "off", + "vue/attribute-hyphenation": "off", + "vue/require-default-prop": "off", + "vue/html-self-closing": [ + "error", + { + html: { + void: "always", + normal: "never", + component: "always", + }, + svg: "always", + math: "always", + }, + ], + "vue/multi-word-component-names": "off", + "vue/component-definition-name-casing": "off", + }, + ignorePatterns: ["*.sh", "node_modules", "*.md", "*.woff", "*.ttf", ".vscode", ".idea", "dist", "/public", "/docs", ".husky", ".local", "/bin", "Dockerfile"], +}); diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b51fec --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +.DS_Store +node_modules +/dist +public/scenemanager + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +.eslintcache diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..d6d1d37 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,19 @@ +{ + "printWidth": 160, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "vueIndentScriptAndStyle": true, + "singleQuote": false, + "quoteProps": "as-needed", + "bracketSpacing": true, + "trailingComma": "all", + "jsxBracketSameLine": false, + "jsxSingleQuote": false, + "arrowParens": "always", + "insertPragma": false, + "requirePragma": false, + "proseWrap": "never", + "htmlWhitespaceSensitivity": "strict", + "endOfLine": "auto" +} \ No newline at end of file diff --git a/README.md b/README.md index 5df9ffc..ffaa8cf 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,17 @@ 北京交通大学驾驶舱 + +## Build Setup + +``` bash +# install dependencies +yarn install + +# serve with hot reload at localhost:3000 +yarn run dev + +# build for production with minification +yarn run build + +``` \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..14a16bc --- /dev/null +++ b/icon.png Binary files differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..c87bfdd --- /dev/null +++ b/index.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html lang="zh-CN"> + +<head> + <meta charset="UTF-8" /> + <script src="/config.js"></script> + <link rel="shortcut icon" type="image/x-icon" href="icon.png" /> + <link href="https://multiverse.vothing.com/css/multiverse.css" rel="stylesheet" /> + <link href="https://multiverse.vothing.com/css/mapbox-gl.css" rel="stylesheet" /> + <script src="https://multiverse.vothing.com/js/comlink.min.js"></script> + <script src="https://multiverse.vothing.com/multiverse.js"></script> + <script src="base64.js"></script> + <script src="crypto-js.js"></script> + <script src="iat/index.umd.js"></script> + <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + <title>北京交通大学驾驶舱</title> +</head> + +<body> + <div id="app"></div> + <script type="module" src="./src/main.js"></script> +</body> + +</html> \ No newline at end of file diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..0f5cb53 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,11 @@ +{ + "vueCompilerOptions": { + "target": 2.7 + }, + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..51cad57 --- /dev/null +++ b/package.json @@ -0,0 +1,47 @@ +{ + "name": "shanghaiproject", + "version": "1.0.0", + "description": "Shanghai construction saftey monitor project", + "author": "shanghaiproject", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "lint-fix": "eslint --max-warnings 0 \"src/**/*.{vue,js}\" --fix", + "lint": "eslint --max-warnings 0 \"src/**/*.{vue,js}\"" + }, + "devDependencies": { + "@vitejs/plugin-vue2": "^2.2.0", + "autoprefixer": "^10.4.13", + "eslint": "^8.30.0", + "eslint-config-prettier": "^8.5.0", + "eslint-define-config": "^1.12.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-vue": "^9.8.0", + "postcss-pxtorem": "^6.0.0", + "prettier": "^2.8.1", + "sass": "^1.57.1", + "tailwindcss": "^3.2.7", + "vite": "^4.0.3" + }, + "dependencies": { + "axios": "^1.2.1", + "crypto-js": "^4.1.1", + "dayjs": "^1.11.7", + "echarts": "^5.4.1", + "echarts-gl": "2.0.9", + "element-ui": "^2.15.12", + "jquery": "^3.7.1", + "lodash-es": "^4.17.21", + "nanoid": "^4.0.0", + "nprogress": "^0.2.0", + "video.js": "^7.20.3", + "vue": "^2.7.14", + "vue-router": "^3.6.5", + "vue-seamless-scroll": "^1.1.23", + "vue-template-compiler": "^2.7.14", + "vuex": "^3.6.2", + "worker-loader": "2.0.0" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..9cecbe0 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,11 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + "postcss-pxtorem": { + propList: ["*"], + unitPrecision: 6, + exclude: /node_modules/i, + }, + }, +}; diff --git a/public/base64.js b/public/base64.js new file mode 100644 index 0000000..c44a6c8 --- /dev/null +++ b/public/base64.js @@ -0,0 +1,316 @@ +// +// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND! +// +; +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? module.exports = factory() + : typeof define === 'function' && define.amd + ? define(factory) : + // cf. https://github.com/dankogai/js-base64/issues/119 + (function () { + // existing version for noConflict() + var _Base64 = global.Base64; + var gBase64 = factory(); + gBase64.noConflict = function () { + global.Base64 = _Base64; + return gBase64; + }; + if (global.Meteor) { // Meteor.js + Base64 = gBase64; + } + global.Base64 = gBase64; + })(); +}((typeof self !== 'undefined' ? self + : typeof window !== 'undefined' ? window + : typeof global !== 'undefined' ? global + : this), function () { + 'use strict'; + /** + * base64.ts + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + * + * @author Dan Kogai (https://github.com/dankogai) + */ + var version = '3.7.5'; + /** + * @deprecated use lowercase `version`. + */ + var VERSION = version; + var _hasatob = typeof atob === 'function'; + var _hasbtoa = typeof btoa === 'function'; + var _hasBuffer = typeof Buffer === 'function'; + var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; + var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; + var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var b64chs = Array.prototype.slice.call(b64ch); + var b64tab = (function (a) { + var tab = {}; + a.forEach(function (c, i) { return tab[c] = i; }); + return tab; + })(b64chs); + var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; + var _fromCC = String.fromCharCode.bind(String); + var _U8Afrom = typeof Uint8Array.from === 'function' + ? Uint8Array.from.bind(Uint8Array) + : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); }; + var _mkUriSafe = function (src) { return src + .replace(/=/g, '').replace(/[+\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); }; + var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\+\/]/g, ''); }; + /** + * polyfill version of `btoa` + */ + var btoaPolyfill = function (bin) { + // console.log('polyfilled'); + var u32, c0, c1, c2, asc = ''; + var pad = bin.length % 3; + for (var i = 0; i < bin.length;) { + if ((c0 = bin.charCodeAt(i++)) > 255 || + (c1 = bin.charCodeAt(i++)) > 255 || + (c2 = bin.charCodeAt(i++)) > 255) + throw new TypeError('invalid character found'); + u32 = (c0 << 16) | (c1 << 8) | c2; + asc += b64chs[u32 >> 18 & 63] + + b64chs[u32 >> 12 & 63] + + b64chs[u32 >> 6 & 63] + + b64chs[u32 & 63]; + } + return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; + }; + /** + * does what `window.btoa` of web browsers do. + * @param {String} bin binary string + * @returns {string} Base64-encoded string + */ + var _btoa = _hasbtoa ? function (bin) { return btoa(bin); } + : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); } + : btoaPolyfill; + var _fromUint8Array = _hasBuffer + ? function (u8a) { return Buffer.from(u8a).toString('base64'); } + : function (u8a) { + // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 + var maxargs = 0x1000; + var strs = []; + for (var i = 0, l = u8a.length; i < l; i += maxargs) { + strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); + } + return _btoa(strs.join('')); + }; + /** + * converts a Uint8Array to a Base64 string. + * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 + * @returns {string} Base64 string + */ + var fromUint8Array = function (u8a, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); + }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const utob = (src: string) => unescape(encodeURIComponent(src)); + // reverting good old fationed regexp + var cb_utob = function (c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) + + _fromCC(0x80 | (cc & 0x3f))) + : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) + + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-8 string + * @returns {string} UTF-16 string + */ + var utob = function (u) { return u.replace(re_utob, cb_utob); }; + // + var _encode = _hasBuffer + ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); } + : _TE + ? function (s) { return _fromUint8Array(_TE.encode(s)); } + : function (s) { return _btoa(utob(s)); }; + /** + * converts a UTF-8-encoded string to a Base64 string. + * @param {boolean} [urlsafe] if `true` make the result URL-safe + * @returns {string} Base64 string + */ + var encode = function (src, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe + ? _mkUriSafe(_encode(src)) + : _encode(src); + }; + /** + * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. + * @returns {string} Base64 string + */ + var encodeURI = function (src) { return encode(src, true); }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const btou = (src: string) => decodeURIComponent(escape(src)); + // reverting good old fationed regexp + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function (cccc) { + switch (cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; + return (_fromCC((offset >>> 10) + 0xD800) + + _fromCC((offset & 0x3FF) + 0xDC00)); + case 3: + return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2))); + default: + return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1))); + } + }; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-16 string + * @returns {string} UTF-8 string + */ + var btou = function (b) { return b.replace(re_btou, cb_btou); }; + /** + * polyfill version of `atob` + */ + var atobPolyfill = function (asc) { + // console.log('polyfilled'); + asc = asc.replace(/\s+/g, ''); + if (!b64re.test(asc)) + throw new TypeError('malformed base64.'); + asc += '=='.slice(2 - (asc.length & 3)); + var u24, bin = '', r1, r2; + for (var i = 0; i < asc.length;) { + u24 = b64tab[asc.charAt(i++)] << 18 + | b64tab[asc.charAt(i++)] << 12 + | (r1 = b64tab[asc.charAt(i++)]) << 6 + | (r2 = b64tab[asc.charAt(i++)]); + bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) + : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) + : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); + } + return bin; + }; + /** + * does what `window.atob` of web browsers do. + * @param {String} asc Base64-encoded string + * @returns {string} binary string + */ + var _atob = _hasatob ? function (asc) { return atob(_tidyB64(asc)); } + : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); } + : atobPolyfill; + // + var _toUint8Array = _hasBuffer + ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); } + : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); }; + /** + * converts a Base64 string to a Uint8Array. + */ + var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); }; + // + var _decode = _hasBuffer + ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); } + : _TD + ? function (a) { return _TD.decode(_toUint8Array(a)); } + : function (a) { return btou(_atob(a)); }; + var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); }; + /** + * converts a Base64 string to a UTF-8 string. + * @param {String} src Base64 string. Both normal and URL-safe are supported + * @returns {string} UTF-8 string + */ + var decode = function (src) { return _decode(_unURI(src)); }; + /** + * check if a value is a valid Base64 string + * @param {String} src a value to check + */ + var isValid = function (src) { + if (typeof src !== 'string') + return false; + var s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); + return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); + }; + // + var _noEnum = function (v) { + return { + value: v, enumerable: false, writable: true, configurable: true + }; + }; + /** + * extend String.prototype with relevant methods + */ + var extendString = function () { + var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); }; + _add('fromBase64', function () { return decode(this); }); + _add('toBase64', function (urlsafe) { return encode(this, urlsafe); }); + _add('toBase64URI', function () { return encode(this, true); }); + _add('toBase64URL', function () { return encode(this, true); }); + _add('toUint8Array', function () { return toUint8Array(this); }); + }; + /** + * extend Uint8Array.prototype with relevant methods + */ + var extendUint8Array = function () { + var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); }; + _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); + _add('toBase64URI', function () { return fromUint8Array(this, true); }); + _add('toBase64URL', function () { return fromUint8Array(this, true); }); + }; + /** + * extend Builtin prototypes with relevant methods + */ + var extendBuiltins = function () { + extendString(); + extendUint8Array(); + }; + var gBase64 = { + version: version, + VERSION: VERSION, + atob: _atob, + atobPolyfill: atobPolyfill, + btoa: _btoa, + btoaPolyfill: btoaPolyfill, + fromBase64: decode, + toBase64: encode, + encode: encode, + encodeURI: encodeURI, + encodeURL: encodeURI, + utob: utob, + btou: btou, + decode: decode, + isValid: isValid, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array, + extendString: extendString, + extendUint8Array: extendUint8Array, + extendBuiltins: extendBuiltins + }; + // + // export Base64 to the namespace + // + // ES5 is yet to have Object.assign() that may make transpilers unhappy. + // gBase64.Base64 = Object.assign({}, gBase64); + gBase64.Base64 = {}; + Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; }); + return gBase64; +})); diff --git a/public/config.js b/public/config.js new file mode 100644 index 0000000..0089ef1 --- /dev/null +++ b/public/config.js @@ -0,0 +1,11 @@ +window.ProjectConfig = { + // axiosBaseURL: "http://47.117.124.20:2002/", + axiosBaseURL: "https://www.probim.cn:7707", + axiosTimeout: 1000 * 30, //毫秒 + workflowLoginURL: "http://workflow-newapi.probim.cn/api/User/Home/Login", + workflowWebURL: "http://workflow.probim.cn", + pid: "71f7a5df-a7e3-42f4-bcea-36d7d2924ddd", + mapboxToken: 'pk.eyJ1Ijoiemhlbmd4dWZhbmciLCJhIjoiY2w5ejNiOWJ1MDE0bTN1cnp4MjNmM2dpNCJ9.qy3k-99E6-XSK5ldYUFz-A', + modelUrl: '//multiverse-server.vothing.com', // 模型服务 数据请求地址 + +} \ No newline at end of file diff --git a/public/crypto-js.js b/public/crypto-js.js new file mode 100644 index 0000000..b87a507 --- /dev/null +++ b/public/crypto-js.js @@ -0,0 +1,5736 @@ +(function (global, factory) { + typeof exports === "object" && typeof module !== "undefined" + ? (module.exports = factory(require("crypto"))) + : typeof define === "function" && define.amd + ? define(["crypto"], factory) + : ((global = typeof globalThis !== "undefined" ? globalThis : global || self), + (global.CryptoJS = factory(global.require$$0))); +})(this, function (require$$0) { + "use strict"; + + function _interopDefaultLegacy(e) { + return e && typeof e === "object" && "default" in e ? e : { default: e }; + } + + var require$$0__default = /*#__PURE__*/ _interopDefaultLegacy(require$$0); + + var commonjsGlobal = + typeof globalThis !== "undefined" + ? globalThis + : typeof window !== "undefined" + ? window + : typeof global !== "undefined" + ? global + : typeof self !== "undefined" + ? self + : {}; + + function createCommonjsModule(fn, basedir, module) { + return ( + (module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, base === undefined || base === null ? module.path : base); + }, + }), + fn(module, module.exports), + module.exports + ); + } + + function commonjsRequire() { + throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs"); + } + + var core = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(); + } + })(commonjsGlobal, function () { + /*globals window, global, require*/ /** + * CryptoJS core components. + */ var CryptoJS = + CryptoJS || + (function (Math1, undefined1) { + var crypto; + // Native crypto from window (Browser) + if (typeof window !== "undefined" && window.crypto) { + crypto = window.crypto; + } + // Native crypto in web worker (Browser) + if (typeof self !== "undefined" && self.crypto) { + crypto = self.crypto; + } + // Native crypto from worker + if (typeof globalThis !== "undefined" && globalThis.crypto) { + crypto = globalThis.crypto; + } + // Native (experimental IE 11) crypto from window (Browser) + if (!crypto && typeof window !== "undefined" && window.msCrypto) { + crypto = window.msCrypto; + } + // Native crypto from global (NodeJS) + if (!crypto && typeof commonjsGlobal !== "undefined" && commonjsGlobal.crypto) { + crypto = commonjsGlobal.crypto; + } + // Native crypto import via require (NodeJS) + if (!crypto && typeof commonjsRequire === "function") { + try { + crypto = require$$0__default["default"]; + } catch (err) {} + } + /* + * Cryptographically secure pseudorandom number generator + * + * As Math.random() is cryptographically not safe to use + */ var cryptoSecureRandomInt = function cryptoSecureRandomInt() { + if (crypto) { + // Use getRandomValues method (Browser) + if (typeof crypto.getRandomValues === "function") { + try { + return crypto.getRandomValues(new Uint32Array(1))[0]; + } catch (err) {} + } + // Use randomBytes method (NodeJS) + if (typeof crypto.randomBytes === "function") { + try { + return crypto.randomBytes(4).readInt32LE(); + } catch (err) {} + } + } + throw new Error("Native crypto module could not be used to get secure random number."); + }; + /* + * Local polyfill of Object.create + + */ var create = + Object.create || + (function () { + var F = function F() {}; + return function (obj) { + var subtype; + F.prototype = obj; + subtype = new F(); + F.prototype = null; + return subtype; + }; + })(); + /** + * CryptoJS namespace. + */ var C = {}; + /** + * Library namespace. + */ var C_lib = (C.lib = {}); + /** + * Base object for prototypal inheritance. + */ var Base = (C_lib.Base = (function () { + return { + /** + * Creates a new object that inherits from this object. + * + * @param {Object} overrides Properties to copy into the new object. + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * field: 'value', + * + * method: function () { + * } + * }); + */ extend: function extend(overrides) { + // Spawn + var subtype = create(this); + // Augment + if (overrides) { + subtype.mixIn(overrides); + } + // Create default initializer + if (!subtype.hasOwnProperty("init") || this.init === subtype.init) { + subtype.init = function () { + subtype.$super.init.apply(this, arguments); + }; + } + // Initializer's prototype is the subtype object + subtype.init.prototype = subtype; + // Reference supertype + subtype.$super = this; + return subtype; + }, + /** + * Extends this object and runs the init method. + * Arguments to create() will be passed to init(). + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var instance = MyType.create(); + */ create: function create() { + var instance = this.extend(); + instance.init.apply(instance, arguments); + return instance; + }, + /** + * Initializes a newly created object. + * Override this method to add some logic when your objects are created. + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * init: function () { + * // ... + * } + * }); + */ init: function init() {}, + /** + * Copies properties into this object. + * + * @param {Object} properties The properties to mix in. + * + * @example + * + * MyType.mixIn({ + * field: 'value' + * }); + */ mixIn: function mixIn(properties) { + for (var propertyName in properties) { + if (properties.hasOwnProperty(propertyName)) { + this[propertyName] = properties[propertyName]; + } + } + // IE won't copy toString using the loop above + if (properties.hasOwnProperty("toString")) { + this.toString = properties.toString; + } + }, + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = instance.clone(); + */ clone: function clone() { + return this.init.prototype.extend(this); + }, + }; + })()); + /** + * An array of 32-bit words. + * + * @property {Array} words The array of 32-bit words. + * @property {number} sigBytes The number of significant bytes in this word array. + */ var WordArray = (C_lib.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of 32-bit words. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.create(); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); + */ init: function init(words, sigBytes) { + words = this.words = words || []; + if (sigBytes != undefined1) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 4; + } + }, + /** + * Converts this word array to a string. + * + * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex + * + * @return {string} The stringified word array. + * + * @example + * + * var string = wordArray + ''; + * var string = wordArray.toString(); + * var string = wordArray.toString(CryptoJS.enc.Utf8); + */ toString: function toString(encoder) { + return (encoder || Hex).stringify(this); + }, + /** + * Concatenates a word array to this word array. + * + * @param {WordArray} wordArray The word array to append. + * + * @return {WordArray} This word array. + * + * @example + * + * wordArray1.concat(wordArray2); + */ concat: function concat(wordArray) { + // Shortcuts + var thisWords = this.words; + var thatWords = wordArray.words; + var thisSigBytes = this.sigBytes; + var thatSigBytes = wordArray.sigBytes; + // Clamp excess bits + this.clamp(); + // Concat + if (thisSigBytes % 4) { + // Copy one byte at a time + for (var i = 0; i < thatSigBytes; i++) { + var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + thisWords[(thisSigBytes + i) >>> 2] |= + thatByte << (24 - ((thisSigBytes + i) % 4) * 8); + } + } else { + // Copy one word at a time + for (var j = 0; j < thatSigBytes; j += 4) { + thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2]; + } + } + this.sigBytes += thatSigBytes; + // Chainable + return this; + }, + /** + * Removes insignificant bits. + * + * @example + * + * wordArray.clamp(); + */ clamp: function clamp() { + // Shortcuts + var words = this.words; + var sigBytes = this.sigBytes; + // Clamp + words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); + words.length = Math1.ceil(sigBytes / 4); + }, + /** + * Creates a copy of this word array. + * + * @return {WordArray} The clone. + * + * @example + * + * var clone = wordArray.clone(); + */ clone: function clone() { + var clone = Base.clone.call(this); + clone.words = this.words.slice(0); + return clone; + }, + /** + * Creates a word array filled with random bytes. + * + * @param {number} nBytes The number of random bytes to generate. + * + * @return {WordArray} The random word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.random(16); + */ random: function random(nBytes) { + var words = []; + for (var i = 0; i < nBytes; i += 4) { + words.push(cryptoSecureRandomInt()); + } + return new WordArray.init(words, nBytes); + }, + })); + /** + * Encoder namespace. + */ var C_enc = (C.enc = {}); + /** + * Hex encoding strategy. + */ var Hex = (C_enc.Hex = { + /** + * Converts a word array to a hex string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The hex string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.enc.Hex.stringify(wordArray); + */ stringify: function stringify(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + // Convert + var hexChars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + hexChars.push((bite >>> 4).toString(16)); + hexChars.push((bite & 0x0f).toString(16)); + } + return hexChars.join(""); + }, + /** + * Converts a hex string to a word array. + * + * @param {string} hexStr The hex string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Hex.parse(hexString); + */ parse: function parse(hexStr) { + // Shortcut + var hexStrLength = hexStr.length; + // Convert + var words = []; + for (var i = 0; i < hexStrLength; i += 2) { + words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); + } + return new WordArray.init(words, hexStrLength / 2); + }, + }); + /** + * Latin1 encoding strategy. + */ var Latin1 = (C_enc.Latin1 = { + /** + * Converts a word array to a Latin1 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Latin1 string. + * + * @static + * + * @example + * + * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); + */ stringify: function stringify(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + // Convert + var latin1Chars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + latin1Chars.push(String.fromCharCode(bite)); + } + return latin1Chars.join(""); + }, + /** + * Converts a Latin1 string to a word array. + * + * @param {string} latin1Str The Latin1 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); + */ parse: function parse(latin1Str) { + // Shortcut + var latin1StrLength = latin1Str.length; + // Convert + var words = []; + for (var i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); + } + return new WordArray.init(words, latin1StrLength); + }, + }); + /** + * UTF-8 encoding strategy. + */ var Utf8 = (C_enc.Utf8 = { + /** + * Converts a word array to a UTF-8 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-8 string. + * + * @static + * + * @example + * + * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); + */ stringify: function stringify(wordArray) { + try { + return decodeURIComponent(escape(Latin1.stringify(wordArray))); + } catch (e) { + throw new Error("Malformed UTF-8 data"); + } + }, + /** + * Converts a UTF-8 string to a word array. + * + * @param {string} utf8Str The UTF-8 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); + */ parse: function parse(utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + }, + }); + /** + * Abstract buffered block algorithm template. + * + * The property blockSize must be implemented in a concrete subtype. + * + * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 + */ var BufferedBlockAlgorithm = (C_lib.BufferedBlockAlgorithm = Base.extend({ + /** + * Resets this block algorithm's data buffer to its initial state. + * + * @example + * + * bufferedBlockAlgorithm.reset(); + */ reset: function reset() { + // Initial values + this._data = new WordArray.init(); + this._nDataBytes = 0; + }, + /** + * Adds new data to this block algorithm's buffer. + * + * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. + * + * @example + * + * bufferedBlockAlgorithm._append('data'); + * bufferedBlockAlgorithm._append(wordArray); + */ _append: function _append(data) { + // Convert string to WordArray, else assume WordArray already + if (typeof data == "string") { + data = Utf8.parse(data); + } + // Append + this._data.concat(data); + this._nDataBytes += data.sigBytes; + }, + /** + * Processes available data blocks. + * + * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. + * + * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. + * + * @return {WordArray} The processed data. + * + * @example + * + * var processedData = bufferedBlockAlgorithm._process(); + * var processedData = bufferedBlockAlgorithm._process(!!'flush'); + */ _process: function _process(doFlush) { + var processedWords; + // Shortcuts + var data = this._data; + var dataWords = data.words; + var dataSigBytes = data.sigBytes; + var blockSize = this.blockSize; + var blockSizeBytes = blockSize * 4; + // Count blocks ready + var nBlocksReady = dataSigBytes / blockSizeBytes; + if (doFlush) { + // Round up to include partial blocks + nBlocksReady = Math1.ceil(nBlocksReady); + } else { + // Round down to include only full blocks, + // less the number of blocks that must remain in the buffer + nBlocksReady = Math1.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + // Count words ready + var nWordsReady = nBlocksReady * blockSize; + // Count bytes ready + var nBytesReady = Math1.min(nWordsReady * 4, dataSigBytes); + // Process blocks + if (nWordsReady) { + for (var offset = 0; offset < nWordsReady; offset += blockSize) { + // Perform concrete-algorithm logic + this._doProcessBlock(dataWords, offset); + } + // Remove processed words + processedWords = dataWords.splice(0, nWordsReady); + data.sigBytes -= nBytesReady; + } + // Return processed words + return new WordArray.init(processedWords, nBytesReady); + }, + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = bufferedBlockAlgorithm.clone(); + */ clone: function clone() { + var clone = Base.clone.call(this); + clone._data = this._data.clone(); + return clone; + }, + _minBufferSize: 0, + })); + /** + * Abstract hasher template. + * + * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) + */ C_lib.Hasher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + */ cfg: Base.extend(), + /** + * Initializes a newly created hasher. + * + * @param {Object} cfg (Optional) The configuration options to use for this hash computation. + * + * @example + * + * var hasher = CryptoJS.algo.SHA256.create(); + */ init: function init(cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + // Set initial values + this.reset(); + }, + /** + * Resets this hasher to its initial state. + * + * @example + * + * hasher.reset(); + */ reset: function reset() { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + // Perform concrete-hasher logic + this._doReset(); + }, + /** + * Updates this hasher with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {Hasher} This hasher. + * + * @example + * + * hasher.update('message'); + * hasher.update(wordArray); + */ update: function update(messageUpdate) { + // Append + this._append(messageUpdate); + // Update the hash + this._process(); + // Chainable + return this; + }, + /** + * Finalizes the hash computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The hash. + * + * @example + * + * var hash = hasher.finalize(); + * var hash = hasher.finalize('message'); + * var hash = hasher.finalize(wordArray); + */ finalize: function finalize(messageUpdate) { + // Final message update + if (messageUpdate) { + this._append(messageUpdate); + } + // Perform concrete-hasher logic + var hash = this._doFinalize(); + return hash; + }, + blockSize: 512 / 32, + /** + * Creates a shortcut function to a hasher's object interface. + * + * @param {Hasher} hasher The hasher to create a helper for. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); + */ _createHelper: function _createHelper(hasher) { + return function (message, cfg) { + return new hasher.init(cfg).finalize(message); + }; + }, + /** + * Creates a shortcut function to the HMAC's object interface. + * + * @param {Hasher} hasher The hasher to use in this HMAC helper. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); + */ _createHmacHelper: function _createHmacHelper(hasher) { + return function (message, key) { + return new C_algo.HMAC.init(hasher, key).finalize(message); + }; + }, + }); + /** + * Algorithm namespace. + */ var C_algo = (C.algo = {}); + return C; + })(Math); + return CryptoJS; + }); + }); + + var x64Core = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function (undefined1) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var X32WordArray = C_lib.WordArray; + /** + * x64 namespace. + */ var C_x64 = (C.x64 = {}); + /** + * A 64-bit word. + */ C_x64.Word = Base.extend({ + /** + * Initializes a newly created 64-bit word. + * + * @param {number} high The high 32 bits. + * @param {number} low The low 32 bits. + * + * @example + * + * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); + */ init: function init(high, low) { + this.high = high; + this.low = low; + }, + }); + /** + * An array of 64-bit words. + * + * @property {Array} words The array of CryptoJS.x64.Word objects. + * @property {number} sigBytes The number of significant bytes in this word array. + */ C_x64.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.x64.WordArray.create(); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ]); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ], 10); + */ init: function init(words, sigBytes) { + words = this.words = words || []; + if (sigBytes != undefined1) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 8; + } + }, + /** + * Converts this 64-bit word array to a 32-bit word array. + * + * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. + * + * @example + * + * var x32WordArray = x64WordArray.toX32(); + */ toX32: function toX32() { + // Shortcuts + var x64Words = this.words; + var x64WordsLength = x64Words.length; + // Convert + var x32Words = []; + for (var i = 0; i < x64WordsLength; i++) { + var x64Word = x64Words[i]; + x32Words.push(x64Word.high); + x32Words.push(x64Word.low); + } + return X32WordArray.create(x32Words, this.sigBytes); + }, + /** + * Creates a copy of this word array. + * + * @return {X64WordArray} The clone. + * + * @example + * + * var clone = x64WordArray.clone(); + */ clone: function clone() { + var clone = Base.clone.call(this); + // Clone "words" array + var words = (clone.words = this.words.slice(0)); + // Clone each X64Word object + var wordsLength = words.length; + for (var i = 0; i < wordsLength; i++) { + words[i] = words[i].clone(); + } + return clone; + }, + }); + })(); + return CryptoJS; + }); + }); + + function _instanceof(left, right) { + if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { + return !!right[Symbol.hasInstance](left); + } else { + return left instanceof right; + } + } + var libTypedarrays = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Check if typed arrays are supported + if (typeof ArrayBuffer != "function") { + return; + } + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + // Reference original init + var superInit = WordArray.init; + // Augment WordArray.init to handle typed arrays + var subInit = (WordArray.init = function subInit(typedArray) { + // Convert buffers to uint8 + if (_instanceof(typedArray, ArrayBuffer)) { + typedArray = new Uint8Array(typedArray); + } + // Convert other array views to uint8 + if ( + _instanceof(typedArray, Int8Array) || + (typeof Uint8ClampedArray !== "undefined" && + _instanceof(typedArray, Uint8ClampedArray)) || + _instanceof(typedArray, Int16Array) || + _instanceof(typedArray, Uint16Array) || + _instanceof(typedArray, Int32Array) || + _instanceof(typedArray, Uint32Array) || + _instanceof(typedArray, Float32Array) || + _instanceof(typedArray, Float64Array) + ) { + typedArray = new Uint8Array( + typedArray.buffer, + typedArray.byteOffset, + typedArray.byteLength + ); + } + // Handle Uint8Array + if (_instanceof(typedArray, Uint8Array)) { + // Shortcut + var typedArrayByteLength = typedArray.byteLength; + // Extract bytes + var words = []; + for (var i = 0; i < typedArrayByteLength; i++) { + words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); + } + // Initialize this word array + superInit.call(this, words, typedArrayByteLength); + } else { + // Else call normal init + superInit.apply(this, arguments); + } + }); + subInit.prototype = WordArray; + })(); + return CryptoJS.lib.WordArray; + }); + }); + + var encUtf16 = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var swapEndian = function swapEndian(word) { + return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + /** + * UTF-16 BE encoding strategy. + */ C_enc.Utf16 = C_enc.Utf16BE = { + /** + * Converts a word array to a UTF-16 BE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 BE string. + * + * @static + * + * @example + * + * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); + */ stringify: function stringify(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; + utf16Chars.push(String.fromCharCode(codePoint)); + } + return utf16Chars.join(""); + }, + /** + * Converts a UTF-16 BE string to a word array. + * + * @param {string} utf16Str The UTF-16 BE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); + */ parse: function parse(utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); + } + return WordArray.create(words, utf16StrLength * 2); + }, + }; + /** + * UTF-16 LE encoding strategy. + */ C_enc.Utf16LE = { + /** + * Converts a word array to a UTF-16 LE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 LE string. + * + * @static + * + * @example + * + * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); + */ stringify: function stringify(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); + utf16Chars.push(String.fromCharCode(codePoint)); + } + return utf16Chars.join(""); + }, + /** + * Converts a UTF-16 LE string to a word array. + * + * @param {string} utf16Str The UTF-16 LE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); + */ parse: function parse(utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); + } + return WordArray.create(words, utf16StrLength * 2); + }, + }; + })(); + return CryptoJS.enc.Utf16; + }); + }); + + var encBase64 = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var parseLoop = function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + var bitsCombined = bits1 | bits2; + words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + /** + * Base64 encoding strategy. + */ C_enc.Base64 = { + /** + * Converts a word array to a Base64 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Base64 string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64.stringify(wordArray); + */ stringify: function stringify(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = this._map; + // Clamp excess bits + wordArray.clamp(); + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + return base64Chars.join(""); + }, + /** + * Converts a Base64 string to a word array. + * + * @param {string} base64Str The Base64 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64.parse(base64String); + */ parse: function parse(base64Str) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = this._map; + var reverseMap = this._reverseMap; + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + }; + })(); + return CryptoJS.enc.Base64; + }); + }); + + var encBase64url = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var parseLoop = function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + var bitsCombined = bits1 | bits2; + words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + /** + * Base64url encoding strategy. + */ C_enc.Base64url = { + /** + * Converts a word array to a Base64url string. + * + * @param {WordArray} wordArray The word array. + * + * @param {boolean} urlSafe Whether to use url safe + * + * @return {string} The Base64url string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64url.stringify(wordArray); + */ stringify: function stringify(wordArray) { + var urlSafe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = urlSafe ? this._safe_map : this._map; + // Clamp excess bits + wordArray.clamp(); + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + return base64Chars.join(""); + }, + /** + * Converts a Base64url string to a word array. + * + * @param {string} base64Str The Base64url string. + * + * @param {boolean} urlSafe Whether to use url safe + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64url.parse(base64String); + */ parse: function parse(base64Str) { + var urlSafe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + // Shortcuts + var base64StrLength = base64Str.length; + var map = urlSafe ? this._safe_map : this._map; + var reverseMap = this._reverseMap; + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + _safe_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", + }; + })(); + return CryptoJS.enc.Base64url; + }); + }); + + var md5 = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function (Math1) { + var FF = function FF(a, b, c, d, x, s, t) { + var n = a + ((b & c) | (~b & d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + var GG = function GG(a, b, c, d, x, s, t) { + var n = a + ((b & d) | (c & ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + var HH = function HH(a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + var II = function II(a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + // Constants table + var T = []; + // Compute constants + (function () { + for (var i = 0; i < 64; i++) { + T[i] = (Math1.abs(Math1.sin(i + 1)) * 0x100000000) | 0; + } + })(); + /** + * MD5 hash algorithm. + */ var MD5 = (C_algo.MD5 = Hasher.extend({ + _doReset: function _doReset() { + this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]); + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + M[offset_i] = + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00); + } + // Shortcuts + var H = this._hash.words; + var M_offset_0 = M[offset + 0]; + var M_offset_1 = M[offset + 1]; + var M_offset_2 = M[offset + 2]; + var M_offset_3 = M[offset + 3]; + var M_offset_4 = M[offset + 4]; + var M_offset_5 = M[offset + 5]; + var M_offset_6 = M[offset + 6]; + var M_offset_7 = M[offset + 7]; + var M_offset_8 = M[offset + 8]; + var M_offset_9 = M[offset + 9]; + var M_offset_10 = M[offset + 10]; + var M_offset_11 = M[offset + 11]; + var M_offset_12 = M[offset + 12]; + var M_offset_13 = M[offset + 13]; + var M_offset_14 = M[offset + 14]; + var M_offset_15 = M[offset + 15]; + // Working varialbes + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + // Computation + a = FF(a, b, c, d, M_offset_0, 7, T[0]); + d = FF(d, a, b, c, M_offset_1, 12, T[1]); + c = FF(c, d, a, b, M_offset_2, 17, T[2]); + b = FF(b, c, d, a, M_offset_3, 22, T[3]); + a = FF(a, b, c, d, M_offset_4, 7, T[4]); + d = FF(d, a, b, c, M_offset_5, 12, T[5]); + c = FF(c, d, a, b, M_offset_6, 17, T[6]); + b = FF(b, c, d, a, M_offset_7, 22, T[7]); + a = FF(a, b, c, d, M_offset_8, 7, T[8]); + d = FF(d, a, b, c, M_offset_9, 12, T[9]); + c = FF(c, d, a, b, M_offset_10, 17, T[10]); + b = FF(b, c, d, a, M_offset_11, 22, T[11]); + a = FF(a, b, c, d, M_offset_12, 7, T[12]); + d = FF(d, a, b, c, M_offset_13, 12, T[13]); + c = FF(c, d, a, b, M_offset_14, 17, T[14]); + b = FF(b, c, d, a, M_offset_15, 22, T[15]); + a = GG(a, b, c, d, M_offset_1, 5, T[16]); + d = GG(d, a, b, c, M_offset_6, 9, T[17]); + c = GG(c, d, a, b, M_offset_11, 14, T[18]); + b = GG(b, c, d, a, M_offset_0, 20, T[19]); + a = GG(a, b, c, d, M_offset_5, 5, T[20]); + d = GG(d, a, b, c, M_offset_10, 9, T[21]); + c = GG(c, d, a, b, M_offset_15, 14, T[22]); + b = GG(b, c, d, a, M_offset_4, 20, T[23]); + a = GG(a, b, c, d, M_offset_9, 5, T[24]); + d = GG(d, a, b, c, M_offset_14, 9, T[25]); + c = GG(c, d, a, b, M_offset_3, 14, T[26]); + b = GG(b, c, d, a, M_offset_8, 20, T[27]); + a = GG(a, b, c, d, M_offset_13, 5, T[28]); + d = GG(d, a, b, c, M_offset_2, 9, T[29]); + c = GG(c, d, a, b, M_offset_7, 14, T[30]); + b = GG(b, c, d, a, M_offset_12, 20, T[31]); + a = HH(a, b, c, d, M_offset_5, 4, T[32]); + d = HH(d, a, b, c, M_offset_8, 11, T[33]); + c = HH(c, d, a, b, M_offset_11, 16, T[34]); + b = HH(b, c, d, a, M_offset_14, 23, T[35]); + a = HH(a, b, c, d, M_offset_1, 4, T[36]); + d = HH(d, a, b, c, M_offset_4, 11, T[37]); + c = HH(c, d, a, b, M_offset_7, 16, T[38]); + b = HH(b, c, d, a, M_offset_10, 23, T[39]); + a = HH(a, b, c, d, M_offset_13, 4, T[40]); + d = HH(d, a, b, c, M_offset_0, 11, T[41]); + c = HH(c, d, a, b, M_offset_3, 16, T[42]); + b = HH(b, c, d, a, M_offset_6, 23, T[43]); + a = HH(a, b, c, d, M_offset_9, 4, T[44]); + d = HH(d, a, b, c, M_offset_12, 11, T[45]); + c = HH(c, d, a, b, M_offset_15, 16, T[46]); + b = HH(b, c, d, a, M_offset_2, 23, T[47]); + a = II(a, b, c, d, M_offset_0, 6, T[48]); + d = II(d, a, b, c, M_offset_7, 10, T[49]); + c = II(c, d, a, b, M_offset_14, 15, T[50]); + b = II(b, c, d, a, M_offset_5, 21, T[51]); + a = II(a, b, c, d, M_offset_12, 6, T[52]); + d = II(d, a, b, c, M_offset_3, 10, T[53]); + c = II(c, d, a, b, M_offset_10, 15, T[54]); + b = II(b, c, d, a, M_offset_1, 21, T[55]); + a = II(a, b, c, d, M_offset_8, 6, T[56]); + d = II(d, a, b, c, M_offset_15, 10, T[57]); + c = II(c, d, a, b, M_offset_6, 15, T[58]); + b = II(b, c, d, a, M_offset_13, 21, T[59]); + a = II(a, b, c, d, M_offset_4, 6, T[60]); + d = II(d, a, b, c, M_offset_11, 10, T[61]); + c = II(c, d, a, b, M_offset_2, 15, T[62]); + b = II(b, c, d, a, M_offset_9, 21, T[63]); + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + }, + _doFinalize: function _doFinalize() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32)); + var nBitsTotalH = Math1.floor(nBitsTotal / 0x100000000); + var nBitsTotalL = nBitsTotal; + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = + (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | + (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = + (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | + (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00); + data.sigBytes = (dataWords.length + 1) * 4; + // Hash final blocks + this._process(); + // Shortcuts + var hash = this._hash; + var H = hash.words; + // Swap endian + for (var i = 0; i < 4; i++) { + // Shortcut + var H_i = H[i]; + H[i] = + (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + // Return final computed hash + return hash; + }, + clone: function clone() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + return clone; + }, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.MD5('message'); + * var hash = CryptoJS.MD5(wordArray); + */ C.MD5 = Hasher._createHelper(MD5); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacMD5(message, key); + */ C.HmacMD5 = Hasher._createHmacHelper(MD5); + })(Math); + return CryptoJS.MD5; + }); + }); + + var sha1 = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + // Reusable object + var W = []; + /** + * SHA-1 hash algorithm. + */ var SHA1 = (C_algo.SHA1 = Hasher.extend({ + _doReset: function _doReset() { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0, + ]); + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Shortcut + var H = this._hash.words; + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + // Computation + for (var i = 0; i < 80; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; + W[i] = (n << 1) | (n >>> 31); + } + var t = ((a << 5) | (a >>> 27)) + e + W[i]; + if (i < 20) { + t += ((b & c) | (~b & d)) + 0x5a827999; + } else if (i < 40) { + t += (b ^ c ^ d) + 0x6ed9eba1; + } else if (i < 60) { + t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; + } /* if (i < 80) */ else { + t += (b ^ c ^ d) - 0x359d3e2a; + } + e = d; + d = c; + c = (b << 30) | (b >>> 2); + b = a; + a = t; + } + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + }, + _doFinalize: function _doFinalize() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32)); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + // Hash final blocks + this._process(); + // Return final computed hash + return this._hash; + }, + clone: function clone() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + return clone; + }, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA1('message'); + * var hash = CryptoJS.SHA1(wordArray); + */ C.SHA1 = Hasher._createHelper(SHA1); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA1(message, key); + */ C.HmacSHA1 = Hasher._createHmacHelper(SHA1); + })(); + return CryptoJS.SHA1; + }); + }); + + var sha256 = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function (Math1) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + // Initialization and round constants tables + var H = []; + var K = []; + // Compute constants + (function () { + var isPrime = function isPrime(n) { + var sqrtN = Math1.sqrt(n); + for (var factor = 2; factor <= sqrtN; factor++) { + if (!(n % factor)) { + return false; + } + } + return true; + }; + var getFractionalBits = function getFractionalBits(n) { + return ((n - (n | 0)) * 0x100000000) | 0; + }; + var n = 2; + var nPrime = 0; + while (nPrime < 64) { + if (isPrime(n)) { + if (nPrime < 8) { + H[nPrime] = getFractionalBits(Math1.pow(n, 1 / 2)); + } + K[nPrime] = getFractionalBits(Math1.pow(n, 1 / 3)); + nPrime++; + } + n++; + } + })(); + // Reusable object + var W = []; + /** + * SHA-256 hash algorithm. + */ var SHA256 = (C_algo.SHA256 = Hasher.extend({ + _doReset: function _doReset() { + this._hash = new WordArray.init(H.slice(0)); + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Shortcut + var H = this._hash.words; + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + var f = H[5]; + var g = H[6]; + var h = H[7]; + // Computation + for (var i = 0; i < 64; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var gamma0x = W[i - 15]; + var gamma0 = + ((gamma0x << 25) | (gamma0x >>> 7)) ^ + ((gamma0x << 14) | (gamma0x >>> 18)) ^ + (gamma0x >>> 3); + var gamma1x = W[i - 2]; + var gamma1 = + ((gamma1x << 15) | (gamma1x >>> 17)) ^ + ((gamma1x << 13) | (gamma1x >>> 19)) ^ + (gamma1x >>> 10); + W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; + } + var ch = (e & f) ^ (~e & g); + var maj = (a & b) ^ (a & c) ^ (b & c); + var sigma0 = + ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); + var sigma1 = + ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); + var t1 = h + sigma1 + ch + K[i] + W[i]; + var t2 = sigma0 + maj; + h = g; + g = f; + f = e; + e = (d + t1) | 0; + d = c; + c = b; + b = a; + a = (t1 + t2) | 0; + } + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + H[5] = (H[5] + f) | 0; + H[6] = (H[6] + g) | 0; + H[7] = (H[7] + h) | 0; + }, + _doFinalize: function _doFinalize() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32)); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math1.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + // Hash final blocks + this._process(); + // Return final computed hash + return this._hash; + }, + clone: function clone() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + return clone; + }, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA256('message'); + * var hash = CryptoJS.SHA256(wordArray); + */ C.SHA256 = Hasher._createHelper(SHA256); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA256(message, key); + */ C.HmacSHA256 = Hasher._createHmacHelper(SHA256); + })(Math); + return CryptoJS.SHA256; + }); + }); + + var sha224 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, sha256); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA256 = C_algo.SHA256; + /** + * SHA-224 hash algorithm. + */ var SHA224 = (C_algo.SHA224 = SHA256.extend({ + _doReset: function _doReset() { + this._hash = new WordArray.init([ + 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, + 0xbefa4fa4, + ]); + }, + _doFinalize: function _doFinalize() { + var hash = SHA256._doFinalize.call(this); + hash.sigBytes -= 4; + return hash; + }, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA224('message'); + * var hash = CryptoJS.SHA224(wordArray); + */ C.SHA224 = SHA256._createHelper(SHA224); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA224(message, key); + */ C.HmacSHA224 = SHA256._createHmacHelper(SHA224); + })(); + return CryptoJS.SHA224; + }); + }); + + var sha512 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, x64Core); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var X64Word_create = function X64Word_create() { + return X64Word.create.apply(X64Word, arguments); + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + // Constants + var K = [ + X64Word_create(0x428a2f98, 0xd728ae22), + X64Word_create(0x71374491, 0x23ef65cd), + X64Word_create(0xb5c0fbcf, 0xec4d3b2f), + X64Word_create(0xe9b5dba5, 0x8189dbbc), + X64Word_create(0x3956c25b, 0xf348b538), + X64Word_create(0x59f111f1, 0xb605d019), + X64Word_create(0x923f82a4, 0xaf194f9b), + X64Word_create(0xab1c5ed5, 0xda6d8118), + X64Word_create(0xd807aa98, 0xa3030242), + X64Word_create(0x12835b01, 0x45706fbe), + X64Word_create(0x243185be, 0x4ee4b28c), + X64Word_create(0x550c7dc3, 0xd5ffb4e2), + X64Word_create(0x72be5d74, 0xf27b896f), + X64Word_create(0x80deb1fe, 0x3b1696b1), + X64Word_create(0x9bdc06a7, 0x25c71235), + X64Word_create(0xc19bf174, 0xcf692694), + X64Word_create(0xe49b69c1, 0x9ef14ad2), + X64Word_create(0xefbe4786, 0x384f25e3), + X64Word_create(0x0fc19dc6, 0x8b8cd5b5), + X64Word_create(0x240ca1cc, 0x77ac9c65), + X64Word_create(0x2de92c6f, 0x592b0275), + X64Word_create(0x4a7484aa, 0x6ea6e483), + X64Word_create(0x5cb0a9dc, 0xbd41fbd4), + X64Word_create(0x76f988da, 0x831153b5), + X64Word_create(0x983e5152, 0xee66dfab), + X64Word_create(0xa831c66d, 0x2db43210), + X64Word_create(0xb00327c8, 0x98fb213f), + X64Word_create(0xbf597fc7, 0xbeef0ee4), + X64Word_create(0xc6e00bf3, 0x3da88fc2), + X64Word_create(0xd5a79147, 0x930aa725), + X64Word_create(0x06ca6351, 0xe003826f), + X64Word_create(0x14292967, 0x0a0e6e70), + X64Word_create(0x27b70a85, 0x46d22ffc), + X64Word_create(0x2e1b2138, 0x5c26c926), + X64Word_create(0x4d2c6dfc, 0x5ac42aed), + X64Word_create(0x53380d13, 0x9d95b3df), + X64Word_create(0x650a7354, 0x8baf63de), + X64Word_create(0x766a0abb, 0x3c77b2a8), + X64Word_create(0x81c2c92e, 0x47edaee6), + X64Word_create(0x92722c85, 0x1482353b), + X64Word_create(0xa2bfe8a1, 0x4cf10364), + X64Word_create(0xa81a664b, 0xbc423001), + X64Word_create(0xc24b8b70, 0xd0f89791), + X64Word_create(0xc76c51a3, 0x0654be30), + X64Word_create(0xd192e819, 0xd6ef5218), + X64Word_create(0xd6990624, 0x5565a910), + X64Word_create(0xf40e3585, 0x5771202a), + X64Word_create(0x106aa070, 0x32bbd1b8), + X64Word_create(0x19a4c116, 0xb8d2d0c8), + X64Word_create(0x1e376c08, 0x5141ab53), + X64Word_create(0x2748774c, 0xdf8eeb99), + X64Word_create(0x34b0bcb5, 0xe19b48a8), + X64Word_create(0x391c0cb3, 0xc5c95a63), + X64Word_create(0x4ed8aa4a, 0xe3418acb), + X64Word_create(0x5b9cca4f, 0x7763e373), + X64Word_create(0x682e6ff3, 0xd6b2b8a3), + X64Word_create(0x748f82ee, 0x5defb2fc), + X64Word_create(0x78a5636f, 0x43172f60), + X64Word_create(0x84c87814, 0xa1f0ab72), + X64Word_create(0x8cc70208, 0x1a6439ec), + X64Word_create(0x90befffa, 0x23631e28), + X64Word_create(0xa4506ceb, 0xde82bde9), + X64Word_create(0xbef9a3f7, 0xb2c67915), + X64Word_create(0xc67178f2, 0xe372532b), + X64Word_create(0xca273ece, 0xea26619c), + X64Word_create(0xd186b8c7, 0x21c0c207), + X64Word_create(0xeada7dd6, 0xcde0eb1e), + X64Word_create(0xf57d4f7f, 0xee6ed178), + X64Word_create(0x06f067aa, 0x72176fba), + X64Word_create(0x0a637dc5, 0xa2c898a6), + X64Word_create(0x113f9804, 0xbef90dae), + X64Word_create(0x1b710b35, 0x131c471b), + X64Word_create(0x28db77f5, 0x23047d84), + X64Word_create(0x32caab7b, 0x40c72493), + X64Word_create(0x3c9ebe0a, 0x15c9bebc), + X64Word_create(0x431d67c4, 0x9c100d4c), + X64Word_create(0x4cc5d4be, 0xcb3e42b6), + X64Word_create(0x597f299c, 0xfc657e2a), + X64Word_create(0x5fcb6fab, 0x3ad6faec), + X64Word_create(0x6c44198c, 0x4a475817), + ]; + // Reusable objects + var W = []; + (function () { + for (var i = 0; i < 80; i++) { + W[i] = X64Word_create(); + } + })(); + /** + * SHA-512 hash algorithm. + */ var SHA512 = (C_algo.SHA512 = Hasher.extend({ + _doReset: function _doReset() { + this._hash = new X64WordArray.init([ + new X64Word.init(0x6a09e667, 0xf3bcc908), + new X64Word.init(0xbb67ae85, 0x84caa73b), + new X64Word.init(0x3c6ef372, 0xfe94f82b), + new X64Word.init(0xa54ff53a, 0x5f1d36f1), + new X64Word.init(0x510e527f, 0xade682d1), + new X64Word.init(0x9b05688c, 0x2b3e6c1f), + new X64Word.init(0x1f83d9ab, 0xfb41bd6b), + new X64Word.init(0x5be0cd19, 0x137e2179), + ]); + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Shortcuts + var H = this._hash.words; + var H0 = H[0]; + var H1 = H[1]; + var H2 = H[2]; + var H3 = H[3]; + var H4 = H[4]; + var H5 = H[5]; + var H6 = H[6]; + var H7 = H[7]; + var H0h = H0.high; + var H0l = H0.low; + var H1h = H1.high; + var H1l = H1.low; + var H2h = H2.high; + var H2l = H2.low; + var H3h = H3.high; + var H3l = H3.low; + var H4h = H4.high; + var H4l = H4.low; + var H5h = H5.high; + var H5l = H5.low; + var H6h = H6.high; + var H6l = H6.low; + var H7h = H7.high; + var H7l = H7.low; + // Working variables + var ah = H0h; + var al = H0l; + var bh = H1h; + var bl = H1l; + var ch = H2h; + var cl = H2l; + var dh = H3h; + var dl = H3l; + var eh = H4h; + var el = H4l; + var fh = H5h; + var fl = H5l; + var gh = H6h; + var gl = H6l; + var hh = H7h; + var hl = H7l; + // Rounds + for (var i = 0; i < 80; i++) { + var Wil; + var Wih; + // Shortcut + var Wi = W[i]; + // Extend message + if (i < 16) { + Wih = Wi.high = M[offset + i * 2] | 0; + Wil = Wi.low = M[offset + i * 2 + 1] | 0; + } else { + // Gamma0 + var gamma0x = W[i - 15]; + var gamma0xh = gamma0x.high; + var gamma0xl = gamma0x.low; + var gamma0h = + ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ + ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ + (gamma0xh >>> 7); + var gamma0l = + ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ + ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ + ((gamma0xl >>> 7) | (gamma0xh << 25)); + // Gamma1 + var gamma1x = W[i - 2]; + var gamma1xh = gamma1x.high; + var gamma1xl = gamma1x.low; + var gamma1h = + ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ + ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ + (gamma1xh >>> 6); + var gamma1l = + ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ + ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ + ((gamma1xl >>> 6) | (gamma1xh << 26)); + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7 = W[i - 7]; + var Wi7h = Wi7.high; + var Wi7l = Wi7.low; + var Wi16 = W[i - 16]; + var Wi16h = Wi16.high; + var Wi16l = Wi16.low; + Wil = gamma0l + Wi7l; + Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0); + Wil = Wil + gamma1l; + Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0); + Wil = Wil + Wi16l; + Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0); + Wi.high = Wih; + Wi.low = Wil; + } + var chh = (eh & fh) ^ (~eh & gh); + var chl = (el & fl) ^ (~el & gl); + var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); + var majl = (al & bl) ^ (al & cl) ^ (bl & cl); + var sigma0h = + ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); + var sigma0l = + ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); + var sigma1h = + ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); + var sigma1l = + ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); + // t1 = h + sigma1 + ch + K[i] + W[i] + var Ki = K[i]; + var Kih = Ki.high; + var Kil = Ki.low; + var t1l = hl + sigma1l; + var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0); + var t1l = t1l + chl; + var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0); + var t1l = t1l + Kil; + var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0); + var t1l = t1l + Wil; + var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0); + // t2 = sigma0 + maj + var t2l = sigma0l + majl; + var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0); + // Update working variables + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = (dl + t1l) | 0; + eh = (dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0)) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = (t1l + t2l) | 0; + ah = (t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0)) | 0; + } + // Intermediate hash value + H0l = H0.low = H0l + al; + H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0); + H1l = H1.low = H1l + bl; + H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0); + H2l = H2.low = H2l + cl; + H2.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0); + H3l = H3.low = H3l + dl; + H3.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0); + H4l = H4.low = H4l + el; + H4.high = H4h + eh + (H4l >>> 0 < el >>> 0 ? 1 : 0); + H5l = H5.low = H5l + fl; + H5.high = H5h + fh + (H5l >>> 0 < fl >>> 0 ? 1 : 0); + H6l = H6.low = H6l + gl; + H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0); + H7l = H7.low = H7l + hl; + H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0); + }, + _doFinalize: function _doFinalize() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32)); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor( + nBitsTotal / 0x100000000 + ); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + // Hash final blocks + this._process(); + // Convert hash to 32-bit word array before returning + var hash = this._hash.toX32(); + // Return final computed hash + return hash; + }, + clone: function clone() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + return clone; + }, + blockSize: 1024 / 32, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA512('message'); + * var hash = CryptoJS.SHA512(wordArray); + */ C.SHA512 = Hasher._createHelper(SHA512); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA512(message, key); + */ C.HmacSHA512 = Hasher._createHmacHelper(SHA512); + })(); + return CryptoJS.SHA512; + }); + }); + + var sha384 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, x64Core, sha512); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Shortcuts + var C = CryptoJS; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + var SHA512 = C_algo.SHA512; + /** + * SHA-384 hash algorithm. + */ var SHA384 = (C_algo.SHA384 = SHA512.extend({ + _doReset: function _doReset() { + this._hash = new X64WordArray.init([ + new X64Word.init(0xcbbb9d5d, 0xc1059ed8), + new X64Word.init(0x629a292a, 0x367cd507), + new X64Word.init(0x9159015a, 0x3070dd17), + new X64Word.init(0x152fecd8, 0xf70e5939), + new X64Word.init(0x67332667, 0xffc00b31), + new X64Word.init(0x8eb44a87, 0x68581511), + new X64Word.init(0xdb0c2e0d, 0x64f98fa7), + new X64Word.init(0x47b5481d, 0xbefa4fa4), + ]); + }, + _doFinalize: function _doFinalize() { + var hash = SHA512._doFinalize.call(this); + hash.sigBytes -= 16; + return hash; + }, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA384('message'); + * var hash = CryptoJS.SHA384(wordArray); + */ C.SHA384 = SHA512._createHelper(SHA384); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA384(message, key); + */ C.HmacSHA384 = SHA512._createHmacHelper(SHA384); + })(); + return CryptoJS.SHA384; + }); + }); + + var sha3 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, x64Core); + } + })(commonjsGlobal, function (CryptoJS) { + (function (Math1) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var C_algo = C.algo; + // Constants tables + var RHO_OFFSETS = []; + var PI_INDEXES = []; + var ROUND_CONSTANTS = []; + // Compute Constants + (function () { + // Compute rho offset constants + var x = 1, + y = 0; + for (var t = 0; t < 24; t++) { + RHO_OFFSETS[x + 5 * y] = (((t + 1) * (t + 2)) / 2) % 64; + var newX = y % 5; + var newY = (2 * x + 3 * y) % 5; + x = newX; + y = newY; + } + // Compute pi index constants + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; + } + } + // Compute round constants + var LFSR = 0x01; + for (var i = 0; i < 24; i++) { + var roundConstantMsw = 0; + var roundConstantLsw = 0; + for (var j = 0; j < 7; j++) { + if (LFSR & 0x01) { + var bitPosition = (1 << j) - 1; + if (bitPosition < 32) { + roundConstantLsw ^= 1 << bitPosition; + } /* if (bitPosition >= 32) */ else { + roundConstantMsw ^= 1 << (bitPosition - 32); + } + } + // Compute next LFSR + if (LFSR & 0x80) { + // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 + LFSR = (LFSR << 1) ^ 0x71; + } else { + LFSR <<= 1; + } + } + ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); + } + })(); + // Reusable objects for temporary values + var T = []; + (function () { + for (var i = 0; i < 25; i++) { + T[i] = X64Word.create(); + } + })(); + /** + * SHA-3 hash algorithm. + */ var SHA3 = (C_algo.SHA3 = Hasher.extend({ + /** + * Configuration options. + * + * @property {number} outputLength + * The desired number of bits in the output hash. + * Only values permitted are: 224, 256, 384, 512. + * Default: 512 + */ cfg: Hasher.cfg.extend({ + outputLength: 512, + }), + _doReset: function _doReset() { + var state = (this._state = []); + for (var i = 0; i < 25; i++) { + state[i] = new X64Word.init(); + } + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Shortcuts + var state = this._state; + var nBlockSizeLanes = this.blockSize / 2; + // Absorb + for (var i = 0; i < nBlockSizeLanes; i++) { + // Shortcuts + var M2i = M[offset + 2 * i]; + var M2i1 = M[offset + 2 * i + 1]; + // Swap endian + M2i = + (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | + (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00); + M2i1 = + (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | + (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00); + // Absorb message into state + var lane = state[i]; + lane.high ^= M2i1; + lane.low ^= M2i; + } + // Rounds + for (var round = 0; round < 24; round++) { + // Theta + for (var x = 0; x < 5; x++) { + // Mix column lanes + var tMsw = 0, + tLsw = 0; + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + tMsw ^= lane.high; + tLsw ^= lane.low; + } + // Temporary values + var Tx = T[x]; + Tx.high = tMsw; + Tx.low = tLsw; + } + for (var x = 0; x < 5; x++) { + // Shortcuts + var Tx4 = T[(x + 4) % 5]; + var Tx1 = T[(x + 1) % 5]; + var Tx1Msw = Tx1.high; + var Tx1Lsw = Tx1.low; + // Mix surrounding columns + var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); + var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + lane.high ^= tMsw; + lane.low ^= tLsw; + } + } + // Rho Pi + for (var laneIndex = 1; laneIndex < 25; laneIndex++) { + var tMsw; + var tLsw; + // Shortcuts + var lane = state[laneIndex]; + var laneMsw = lane.high; + var laneLsw = lane.low; + var rhoOffset = RHO_OFFSETS[laneIndex]; + // Rotate lanes + if (rhoOffset < 32) { + tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); + tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); + } /* if (rhoOffset >= 32) */ else { + tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); + tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); + } + // Transpose lanes + var TPiLane = T[PI_INDEXES[laneIndex]]; + TPiLane.high = tMsw; + TPiLane.low = tLsw; + } + // Rho pi at x = y = 0 + var T0 = T[0]; + var state0 = state[0]; + T0.high = state0.high; + T0.low = state0.low; + // Chi + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + // Shortcuts + var laneIndex = x + 5 * y; + var lane = state[laneIndex]; + var TLane = T[laneIndex]; + var Tx1Lane = T[((x + 1) % 5) + 5 * y]; + var Tx2Lane = T[((x + 2) % 5) + 5 * y]; + // Mix rows + lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); + lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); + } + } + // Iota + var lane = state[0]; + var roundConstant = ROUND_CONSTANTS[round]; + lane.high ^= roundConstant.high; + lane.low ^= roundConstant.low; + } + }, + _doFinalize: function _doFinalize() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + var blockSizeBits = this.blockSize * 32; + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - (nBitsLeft % 32)); + dataWords[ + ((Math1.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1 + ] |= 0x80; + data.sigBytes = dataWords.length * 4; + // Hash final blocks + this._process(); + // Shortcuts + var state = this._state; + var outputLengthBytes = this.cfg.outputLength / 8; + var outputLengthLanes = outputLengthBytes / 8; + // Squeeze + var hashWords = []; + for (var i = 0; i < outputLengthLanes; i++) { + // Shortcuts + var lane = state[i]; + var laneMsw = lane.high; + var laneLsw = lane.low; + // Swap endian + laneMsw = + (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | + (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00); + laneLsw = + (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | + (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00); + // Squeeze state to retrieve hash + hashWords.push(laneLsw); + hashWords.push(laneMsw); + } + // Return final computed hash + return new WordArray.init(hashWords, outputLengthBytes); + }, + clone: function clone() { + var clone = Hasher.clone.call(this); + var state = (clone._state = this._state.slice(0)); + for (var i = 0; i < 25; i++) { + state[i] = state[i].clone(); + } + return clone; + }, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA3('message'); + * var hash = CryptoJS.SHA3(wordArray); + */ C.SHA3 = Hasher._createHelper(SHA3); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA3(message, key); + */ C.HmacSHA3 = Hasher._createHmacHelper(SHA3); + })(Math); + return CryptoJS.SHA3; + }); + }); + + var ripemd160 = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + /** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ (function (Math1) { + var f1 = function f1(x, y, z) { + return x ^ y ^ z; + }; + var f2 = function f2(x, y, z) { + return (x & y) | (~x & z); + }; + var f3 = function f3(x, y, z) { + return (x | ~y) ^ z; + }; + var f4 = function f4(x, y, z) { + return (x & z) | (y & ~z); + }; + var f5 = function f5(x, y, z) { + return x ^ (y | ~z); + }; + var rotl = function rotl(x, n) { + return (x << n) | (x >>> (32 - n)); + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + // Constants table + var _zl = WordArray.create([ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, + 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, + 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13, + ]); + var _zr = WordArray.create([ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, + 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, + 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, + 11, + ]); + var _sl = WordArray.create([ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, + 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, + 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, + 8, 5, 6, + ]); + var _sr = WordArray.create([ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, + 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, + 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, + 13, 11, 11, + ]); + var _hl = WordArray.create([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]); + var _hr = WordArray.create([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]); + /** + * RIPEMD160 hash algorithm. + */ var RIPEMD160 = (C_algo.RIPEMD160 = Hasher.extend({ + _doReset: function _doReset() { + this._hash = WordArray.create([ + 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0, + ]); + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + // Swap + M[offset_i] = + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00); + } + // Shortcut + var H = this._hash.words; + var hl = _hl.words; + var hr = _hr.words; + var zl = _zl.words; + var zr = _zr.words; + var sl = _sl.words; + var sr = _sr.words; + // Working variables + var al, bl, cl, dl, el; + var ar, br, cr, dr, er; + ar = al = H[0]; + br = bl = H[1]; + cr = cl = H[2]; + dr = dl = H[3]; + er = el = H[4]; + // Computation + var t; + for (var i = 0; i < 80; i += 1) { + t = (al + M[offset + zl[i]]) | 0; + if (i < 16) { + t += f1(bl, cl, dl) + hl[0]; + } else if (i < 32) { + t += f2(bl, cl, dl) + hl[1]; + } else if (i < 48) { + t += f3(bl, cl, dl) + hl[2]; + } else if (i < 64) { + t += f4(bl, cl, dl) + hl[3]; + } else { + t += f5(bl, cl, dl) + hl[4]; + } + t = t | 0; + t = rotl(t, sl[i]); + t = (t + el) | 0; + al = el; + el = dl; + dl = rotl(cl, 10); + cl = bl; + bl = t; + t = (ar + M[offset + zr[i]]) | 0; + if (i < 16) { + t += f5(br, cr, dr) + hr[0]; + } else if (i < 32) { + t += f4(br, cr, dr) + hr[1]; + } else if (i < 48) { + t += f3(br, cr, dr) + hr[2]; + } else if (i < 64) { + t += f2(br, cr, dr) + hr[3]; + } else { + t += f1(br, cr, dr) + hr[4]; + } + t = t | 0; + t = rotl(t, sr[i]); + t = (t + er) | 0; + ar = er; + er = dr; + dr = rotl(cr, 10); + cr = br; + br = t; + } + // Intermediate hash value + t = (H[1] + cl + dr) | 0; + H[1] = (H[2] + dl + er) | 0; + H[2] = (H[3] + el + ar) | 0; + H[3] = (H[4] + al + br) | 0; + H[4] = (H[0] + bl + cr) | 0; + H[0] = t; + }, + _doFinalize: function _doFinalize() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32)); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00); + data.sigBytes = (dataWords.length + 1) * 4; + // Hash final blocks + this._process(); + // Shortcuts + var hash = this._hash; + var H = hash.words; + // Swap endian + for (var i = 0; i < 5; i++) { + // Shortcut + var H_i = H[i]; + // Swap + H[i] = + (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + // Return final computed hash + return hash; + }, + clone: function clone() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + return clone; + }, + })); + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.RIPEMD160('message'); + * var hash = CryptoJS.RIPEMD160(wordArray); + */ C.RIPEMD160 = Hasher._createHelper(RIPEMD160); + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacRIPEMD160(message, key); + */ C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); + })(); + return CryptoJS.RIPEMD160; + }); + }); + + var hmac = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + // CommonJS + module.exports = factory(core); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var C_algo = C.algo; + /** + * HMAC algorithm. + */ C_algo.HMAC = Base.extend({ + /** + * Initializes a newly created HMAC. + * + * @param {Hasher} hasher The hash algorithm to use. + * @param {WordArray|string} key The secret key. + * + * @example + * + * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); + */ init: function init(hasher, key) { + // Init hasher + hasher = this._hasher = new hasher.init(); + // Convert string to WordArray, else assume WordArray already + if (typeof key == "string") { + key = Utf8.parse(key); + } + // Shortcuts + var hasherBlockSize = hasher.blockSize; + var hasherBlockSizeBytes = hasherBlockSize * 4; + // Allow arbitrary length keys + if (key.sigBytes > hasherBlockSizeBytes) { + key = hasher.finalize(key); + } + // Clamp excess bits + key.clamp(); + // Clone key for inner and outer pads + var oKey = (this._oKey = key.clone()); + var iKey = (this._iKey = key.clone()); + // Shortcuts + var oKeyWords = oKey.words; + var iKeyWords = iKey.words; + // XOR keys with pad constants + for (var i = 0; i < hasherBlockSize; i++) { + oKeyWords[i] ^= 0x5c5c5c5c; + iKeyWords[i] ^= 0x36363636; + } + oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; + // Set initial values + this.reset(); + }, + /** + * Resets this HMAC to its initial state. + * + * @example + * + * hmacHasher.reset(); + */ reset: function reset() { + // Shortcut + var hasher = this._hasher; + // Reset + hasher.reset(); + hasher.update(this._iKey); + }, + /** + * Updates this HMAC with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {HMAC} This HMAC instance. + * + * @example + * + * hmacHasher.update('message'); + * hmacHasher.update(wordArray); + */ update: function update(messageUpdate) { + this._hasher.update(messageUpdate); + // Chainable + return this; + }, + /** + * Finalizes the HMAC computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The HMAC. + * + * @example + * + * var hmac = hmacHasher.finalize(); + * var hmac = hmacHasher.finalize('message'); + * var hmac = hmacHasher.finalize(wordArray); + */ finalize: function finalize(messageUpdate) { + // Shortcut + var hasher = this._hasher; + // Compute HMAC + var innerHash = hasher.finalize(messageUpdate); + hasher.reset(); + var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); + return hmac; + }, + }); + })(); + }); + }); + + var pbkdf2 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, sha1, hmac); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA1 = C_algo.SHA1; + var HMAC = C_algo.HMAC; + /** + * Password-Based Key Derivation Function 2 algorithm. + */ var PBKDF2 = (C_algo.PBKDF2 = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hasher to use. Default: SHA1 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ cfg: Base.extend({ + keySize: 128 / 32, + hasher: SHA1, + iterations: 1, + }), + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.PBKDF2.create(); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); + */ init: function init(cfg) { + this.cfg = this.cfg.extend(cfg); + }, + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ compute: function compute(password, salt) { + // Shortcut + var cfg = this.cfg; + // Init HMAC + var hmac = HMAC.create(cfg.hasher, password); + // Initial values + var derivedKey = WordArray.create(); + var blockIndex = WordArray.create([0x00000001]); + // Shortcuts + var derivedKeyWords = derivedKey.words; + var blockIndexWords = blockIndex.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + // Generate key + while (derivedKeyWords.length < keySize) { + var block = hmac.update(salt).finalize(blockIndex); + hmac.reset(); + // Shortcuts + var blockWords = block.words; + var blockWordsLength = blockWords.length; + // Iterations + var intermediate = block; + for (var i = 1; i < iterations; i++) { + intermediate = hmac.finalize(intermediate); + hmac.reset(); + // Shortcut + var intermediateWords = intermediate.words; + // XOR intermediate with block + for (var j = 0; j < blockWordsLength; j++) { + blockWords[j] ^= intermediateWords[j]; + } + } + derivedKey.concat(block); + blockIndexWords[0]++; + } + derivedKey.sigBytes = keySize * 4; + return derivedKey; + }, + })); + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.PBKDF2(password, salt); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); + */ C.PBKDF2 = function (password, salt, cfg) { + return PBKDF2.create(cfg).compute(password, salt); + }; + })(); + return CryptoJS.PBKDF2; + }); + }); + + var evpkdf = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, sha1, hmac); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var MD5 = C_algo.MD5; + /** + * This key derivation function is meant to conform with EVP_BytesToKey. + * www.openssl.org/docs/crypto/EVP_BytesToKey.html + */ var EvpKDF = (C_algo.EvpKDF = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hash algorithm to use. Default: MD5 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ cfg: Base.extend({ + keySize: 128 / 32, + hasher: MD5, + iterations: 1, + }), + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.EvpKDF.create(); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); + */ init: function init(cfg) { + this.cfg = this.cfg.extend(cfg); + }, + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ compute: function compute(password, salt) { + var block; + // Shortcut + var cfg = this.cfg; + // Init hasher + var hasher = cfg.hasher.create(); + // Initial values + var derivedKey = WordArray.create(); + // Shortcuts + var derivedKeyWords = derivedKey.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + // Generate key + while (derivedKeyWords.length < keySize) { + if (block) { + hasher.update(block); + } + block = hasher.update(password).finalize(salt); + hasher.reset(); + // Iterations + for (var i = 1; i < iterations; i++) { + block = hasher.finalize(block); + hasher.reset(); + } + derivedKey.concat(block); + } + derivedKey.sigBytes = keySize * 4; + return derivedKey; + }, + })); + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.EvpKDF(password, salt); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); + */ C.EvpKDF = function (password, salt, cfg) { + return EvpKDF.create(cfg).compute(password, salt); + }; + })(); + return CryptoJS.EvpKDF; + }); + }); + + var cipherCore = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, evpkdf); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * Cipher core components. + */ CryptoJS.lib.Cipher || + (function (undefined1) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; + var C_enc = C.enc; + C_enc.Utf8; + var Base64 = C_enc.Base64; + var C_algo = C.algo; + var EvpKDF = C_algo.EvpKDF; + /** + * Abstract base cipher template. + * + * @property {number} keySize This cipher's key size. Default: 4 (128 bits) + * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) + * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. + * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. + */ var Cipher = (C_lib.Cipher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + * + * @property {WordArray} iv The IV to use for this operation. + */ cfg: Base.extend(), + /** + * Creates this cipher in encryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); + */ createEncryptor: function createEncryptor(key, cfg) { + return this.create(this._ENC_XFORM_MODE, key, cfg); + }, + /** + * Creates this cipher in decryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); + */ createDecryptor: function createDecryptor(key, cfg) { + return this.create(this._DEC_XFORM_MODE, key, cfg); + }, + /** + * Initializes a newly created cipher. + * + * @param {number} xformMode Either the encryption or decryption transormation mode constant. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @example + * + * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); + */ init: function init(xformMode, key, cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + // Store transform mode and key + this._xformMode = xformMode; + this._key = key; + // Set initial values + this.reset(); + }, + /** + * Resets this cipher to its initial state. + * + * @example + * + * cipher.reset(); + */ reset: function reset() { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + // Perform concrete-cipher logic + this._doReset(); + }, + /** + * Adds data to be encrypted or decrypted. + * + * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. + * + * @return {WordArray} The data after processing. + * + * @example + * + * var encrypted = cipher.process('data'); + * var encrypted = cipher.process(wordArray); + */ process: function process(dataUpdate) { + // Append + this._append(dataUpdate); + // Process available blocks + return this._process(); + }, + /** + * Finalizes the encryption or decryption process. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. + * + * @return {WordArray} The data after final processing. + * + * @example + * + * var encrypted = cipher.finalize(); + * var encrypted = cipher.finalize('data'); + * var encrypted = cipher.finalize(wordArray); + */ finalize: function finalize(dataUpdate) { + // Final data update + if (dataUpdate) { + this._append(dataUpdate); + } + // Perform concrete-cipher logic + var finalProcessedData = this._doFinalize(); + return finalProcessedData; + }, + keySize: 128 / 32, + ivSize: 128 / 32, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + /** + * Creates shortcut functions to a cipher's object interface. + * + * @param {Cipher} cipher The cipher to create a helper for. + * + * @return {Object} An object with encrypt and decrypt shortcut functions. + * + * @static + * + * @example + * + * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); + */ _createHelper: (function () { + var selectCipherStrategy = function selectCipherStrategy(key) { + if (typeof key == "string") { + return PasswordBasedCipher; + } else { + return SerializableCipher; + } + }; + return function (cipher) { + return { + encrypt: function encrypt(message, key, cfg) { + return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); + }, + decrypt: function decrypt(ciphertext, key, cfg) { + return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); + }, + }; + }; + })(), + })); + /** + * Abstract base stream cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) + */ C_lib.StreamCipher = Cipher.extend({ + _doFinalize: function _doFinalize() { + // Process partial blocks + var finalProcessedBlocks = this._process(!!"flush"); + return finalProcessedBlocks; + }, + blockSize: 1, + }); + /** + * Mode namespace. + */ var C_mode = (C.mode = {}); + /** + * Abstract base block cipher mode template. + */ var BlockCipherMode = (C_lib.BlockCipherMode = Base.extend({ + /** + * Creates this mode for encryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); + */ createEncryptor: function createEncryptor(cipher, iv) { + return this.Encryptor.create(cipher, iv); + }, + /** + * Creates this mode for decryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); + */ createDecryptor: function createDecryptor(cipher, iv) { + return this.Decryptor.create(cipher, iv); + }, + /** + * Initializes a newly created mode. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @example + * + * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); + */ init: function init(cipher, iv) { + this._cipher = cipher; + this._iv = iv; + }, + })); + /** + * Cipher Block Chaining mode. + */ var CBC = (C_mode.CBC = (function () { + var xorBlock = function xorBlock(words, offset, blockSize) { + var block; + // Shortcut + var iv = this._iv; + // Choose mixing block + if (iv) { + block = iv; + // Remove IV for subsequent blocks + this._iv = undefined1; + } else { + block = this._prevBlock; + } + // XOR blocks + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= block[i]; + } + }; + /** + * Abstract base CBC mode. + */ var CBC = BlockCipherMode.extend(); + /** + * CBC encryptor. + */ CBC.Encryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ processBlock: function processBlock(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + // XOR and encrypt + xorBlock.call(this, words, offset, blockSize); + cipher.encryptBlock(words, offset); + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + }, + }); + /** + * CBC decryptor. + */ CBC.Decryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ processBlock: function processBlock(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + // Decrypt and XOR + cipher.decryptBlock(words, offset); + xorBlock.call(this, words, offset, blockSize); + // This block becomes the previous block + this._prevBlock = thisBlock; + }, + }); + return CBC; + })()); + /** + * Padding namespace. + */ var C_pad = (C.pad = {}); + /** + * PKCS #5/7 padding strategy. + */ var Pkcs7 = (C_pad.Pkcs7 = { + /** + * Pads data using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to pad. + * @param {number} blockSize The multiple that the data should be padded to. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.pad(wordArray, 4); + */ pad: function pad(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + // Count padding bytes + var nPaddingBytes = blockSizeBytes - (data.sigBytes % blockSizeBytes); + // Create padding word + var paddingWord = + (nPaddingBytes << 24) | + (nPaddingBytes << 16) | + (nPaddingBytes << 8) | + nPaddingBytes; + // Create padding + var paddingWords = []; + for (var i = 0; i < nPaddingBytes; i += 4) { + paddingWords.push(paddingWord); + } + var padding = WordArray.create(paddingWords, nPaddingBytes); + // Add padding + data.concat(padding); + }, + /** + * Unpads data that had been padded using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to unpad. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.unpad(wordArray); + */ unpad: function unpad(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + // Remove padding + data.sigBytes -= nPaddingBytes; + }, + }); + /** + * Abstract base block cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) + */ C_lib.BlockCipher = Cipher.extend({ + /** + * Configuration options. + * + * @property {Mode} mode The block mode to use. Default: CBC + * @property {Padding} padding The padding strategy to use. Default: Pkcs7 + */ cfg: Cipher.cfg.extend({ + mode: CBC, + padding: Pkcs7, + }), + reset: function reset() { + var modeCreator; + // Reset cipher + Cipher.reset.call(this); + // Shortcuts + var cfg = this.cfg; + var iv = cfg.iv; + var mode = cfg.mode; + // Reset block mode + if (this._xformMode == this._ENC_XFORM_MODE) { + modeCreator = mode.createEncryptor; + } /* if (this._xformMode == this._DEC_XFORM_MODE) */ else { + modeCreator = mode.createDecryptor; + // Keep at least one block in the buffer for unpadding + this._minBufferSize = 1; + } + if (this._mode && this._mode.__creator == modeCreator) { + this._mode.init(this, iv && iv.words); + } else { + this._mode = modeCreator.call(mode, this, iv && iv.words); + this._mode.__creator = modeCreator; + } + }, + _doProcessBlock: function _doProcessBlock(words, offset) { + this._mode.processBlock(words, offset); + }, + _doFinalize: function _doFinalize() { + var finalProcessedBlocks; + // Shortcut + var padding = this.cfg.padding; + // Finalize + if (this._xformMode == this._ENC_XFORM_MODE) { + // Pad data + padding.pad(this._data, this.blockSize); + // Process final blocks + finalProcessedBlocks = this._process(!!"flush"); + } /* if (this._xformMode == this._DEC_XFORM_MODE) */ else { + // Process final blocks + finalProcessedBlocks = this._process(!!"flush"); + // Unpad data + padding.unpad(finalProcessedBlocks); + } + return finalProcessedBlocks; + }, + blockSize: 128 / 32, + }); + /** + * A collection of cipher parameters. + * + * @property {WordArray} ciphertext The raw ciphertext. + * @property {WordArray} key The key to this ciphertext. + * @property {WordArray} iv The IV used in the ciphering operation. + * @property {WordArray} salt The salt used with a key derivation function. + * @property {Cipher} algorithm The cipher algorithm. + * @property {Mode} mode The block mode used in the ciphering operation. + * @property {Padding} padding The padding scheme used in the ciphering operation. + * @property {number} blockSize The block size of the cipher. + * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. + */ var CipherParams = (C_lib.CipherParams = Base.extend({ + /** + * Initializes a newly created cipher params object. + * + * @param {Object} cipherParams An object with any of the possible cipher parameters. + * + * @example + * + * var cipherParams = CryptoJS.lib.CipherParams.create({ + * ciphertext: ciphertextWordArray, + * key: keyWordArray, + * iv: ivWordArray, + * salt: saltWordArray, + * algorithm: CryptoJS.algo.AES, + * mode: CryptoJS.mode.CBC, + * padding: CryptoJS.pad.PKCS7, + * blockSize: 4, + * formatter: CryptoJS.format.OpenSSL + * }); + */ init: function init(cipherParams) { + this.mixIn(cipherParams); + }, + /** + * Converts this cipher params object to a string. + * + * @param {Format} formatter (Optional) The formatting strategy to use. + * + * @return {string} The stringified cipher params. + * + * @throws Error If neither the formatter nor the default formatter is set. + * + * @example + * + * var string = cipherParams + ''; + * var string = cipherParams.toString(); + * var string = cipherParams.toString(CryptoJS.format.OpenSSL); + */ toString: function toString(formatter) { + return (formatter || this.formatter).stringify(this); + }, + })); + /** + * Format namespace. + */ var C_format = (C.format = {}); + /** + * OpenSSL formatting strategy. + */ var OpenSSLFormatter = (C_format.OpenSSL = { + /** + * Converts a cipher params object to an OpenSSL-compatible string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The OpenSSL-compatible string. + * + * @static + * + * @example + * + * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); + */ stringify: function stringify(cipherParams) { + var wordArray; + // Shortcuts + var ciphertext = cipherParams.ciphertext; + var salt = cipherParams.salt; + // Format + if (salt) { + wordArray = WordArray.create([0x53616c74, 0x65645f5f]) + .concat(salt) + .concat(ciphertext); + } else { + wordArray = ciphertext; + } + return wordArray.toString(Base64); + }, + /** + * Converts an OpenSSL-compatible string to a cipher params object. + * + * @param {string} openSSLStr The OpenSSL-compatible string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); + */ parse: function parse(openSSLStr) { + var salt; + // Parse base64 + var ciphertext = Base64.parse(openSSLStr); + // Shortcut + var ciphertextWords = ciphertext.words; + // Test for salt + if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { + // Extract salt + salt = WordArray.create(ciphertextWords.slice(2, 4)); + // Remove salt from ciphertext + ciphertextWords.splice(0, 4); + ciphertext.sigBytes -= 16; + } + return CipherParams.create({ + ciphertext: ciphertext, + salt: salt, + }); + }, + }); + /** + * A cipher wrapper that returns ciphertext as a serializable cipher params object. + */ var SerializableCipher = (C_lib.SerializableCipher = Base.extend({ + /** + * Configuration options. + * + * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL + */ cfg: Base.extend({ + format: OpenSSLFormatter, + }), + /** + * Encrypts a message. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ encrypt: function encrypt(cipher, message, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + // Encrypt + var encryptor = cipher.createEncryptor(key, cfg); + var ciphertext = encryptor.finalize(message); + // Shortcut + var cipherCfg = encryptor.cfg; + // Create and return serializable cipher params + return CipherParams.create({ + ciphertext: ciphertext, + key: key, + iv: cipherCfg.iv, + algorithm: cipher, + mode: cipherCfg.mode, + padding: cipherCfg.padding, + blockSize: cipher.blockSize, + formatter: cfg.format, + }); + }, + /** + * Decrypts serialized ciphertext. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ decrypt: function decrypt(cipher, ciphertext, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + // Decrypt + var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); + return plaintext; + }, + /** + * Converts serialized ciphertext to CipherParams, + * else assumed CipherParams already and returns ciphertext unchanged. + * + * @param {CipherParams|string} ciphertext The ciphertext. + * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. + * + * @return {CipherParams} The unserialized ciphertext. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); + */ _parse: function _parse(ciphertext, format) { + if (typeof ciphertext == "string") { + return format.parse(ciphertext, this); + } else { + return ciphertext; + } + }, + })); + /** + * Key derivation function namespace. + */ var C_kdf = (C.kdf = {}); + /** + * OpenSSL key derivation function. + */ var OpenSSLKdf = (C_kdf.OpenSSL = { + /** + * Derives a key and IV from a password. + * + * @param {string} password The password to derive from. + * @param {number} keySize The size in words of the key to generate. + * @param {number} ivSize The size in words of the IV to generate. + * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. + * + * @return {CipherParams} A cipher params object with the key, IV, and salt. + * + * @static + * + * @example + * + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); + */ execute: function execute(password, keySize, ivSize, salt) { + // Generate random salt + if (!salt) { + salt = WordArray.random(64 / 8); + } + // Derive key and IV + var key = EvpKDF.create({ + keySize: keySize + ivSize, + }).compute(password, salt); + // Separate key and IV + var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); + key.sigBytes = keySize * 4; + // Return params + return CipherParams.create({ + key: key, + iv: iv, + salt: salt, + }); + }, + }); + /** + * A serializable cipher wrapper that derives the key from a password, + * and returns ciphertext as a serializable cipher params object. + */ var PasswordBasedCipher = (C_lib.PasswordBasedCipher = SerializableCipher.extend({ + /** + * Configuration options. + * + * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL + */ cfg: SerializableCipher.cfg.extend({ + kdf: OpenSSLKdf, + }), + /** + * Encrypts a message using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); + */ encrypt: function encrypt(cipher, message, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); + // Add IV to config + cfg.iv = derivedParams.iv; + // Encrypt + var ciphertext = SerializableCipher.encrypt.call( + this, + cipher, + message, + derivedParams.key, + cfg + ); + // Mix in derived params + ciphertext.mixIn(derivedParams); + return ciphertext; + }, + /** + * Decrypts serialized ciphertext using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); + */ decrypt: function decrypt(cipher, ciphertext, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + // Derive key and other params + var derivedParams = cfg.kdf.execute( + password, + cipher.keySize, + cipher.ivSize, + ciphertext.salt + ); + // Add IV to config + cfg.iv = derivedParams.iv; + // Decrypt + var plaintext = SerializableCipher.decrypt.call( + this, + cipher, + ciphertext, + derivedParams.key, + cfg + ); + return plaintext; + }, + })); + })(); + }); + }); + + var modeCfb = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * Cipher Feedback block mode. + */ CryptoJS.mode.CFB = (function () { + var generateKeystreamAndEncrypt = function generateKeystreamAndEncrypt( + words, + offset, + blockSize, + cipher + ) { + var keystream; + // Shortcut + var iv = this._iv; + // Generate keystream + if (iv) { + keystream = iv.slice(0); + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + keystream = this._prevBlock; + } + cipher.encryptBlock(keystream, 0); + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + }; + var CFB = CryptoJS.lib.BlockCipherMode.extend(); + CFB.Encryptor = CFB.extend({ + processBlock: function processBlock(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + }, + }); + CFB.Decryptor = CFB.extend({ + processBlock: function processBlock(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + // This block becomes the previous block + this._prevBlock = thisBlock; + }, + }); + return CFB; + })(); + return CryptoJS.mode.CFB; + }); + }); + + var modeCtr = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * Counter block mode. + */ CryptoJS.mode.CTR = (function () { + var CTR = CryptoJS.lib.BlockCipherMode.extend(); + var Encryptor = (CTR.Encryptor = CTR.extend({ + processBlock: function processBlock(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + // Remove IV for subsequent blocks + this._iv = undefined; + } + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + // Increment counter + counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0; + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + }, + })); + CTR.Decryptor = Encryptor; + return CTR; + })(); + return CryptoJS.mode.CTR; + }); + }); + + var modeCtrGladman = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + */ CryptoJS.mode.CTRGladman = (function () { + var incWord = function incWord(word) { + if (((word >> 24) & 0xff) === 0xff) { + var b1 = (word >> 16) & 0xff; + var b2 = (word >> 8) & 0xff; + var b3 = word & 0xff; + if (b1 === 0xff) { + b1 = 0; + if (b2 === 0xff) { + b2 = 0; + if (b3 === 0xff) { + b3 = 0; + } else { + ++b3; + } + } else { + ++b2; + } + } else { + ++b1; + } + word = 0; + word += b1 << 16; + word += b2 << 8; + word += b3; + } else { + word += 0x01 << 24; + } + return word; + }; + var incCounter = function incCounter(counter) { + if ((counter[0] = incWord(counter[0])) === 0) { + // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 + counter[1] = incWord(counter[1]); + } + return counter; + }; + var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); + var Encryptor = (CTRGladman.Encryptor = CTRGladman.extend({ + processBlock: function processBlock(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + // Remove IV for subsequent blocks + this._iv = undefined; + } + incCounter(counter); + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + }, + })); + CTRGladman.Decryptor = Encryptor; + return CTRGladman; + })(); + return CryptoJS.mode.CTRGladman; + }); + }); + + var modeOfb = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * Output Feedback block mode. + */ CryptoJS.mode.OFB = (function () { + var OFB = CryptoJS.lib.BlockCipherMode.extend(); + var Encryptor = (OFB.Encryptor = OFB.extend({ + processBlock: function processBlock(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + var iv = this._iv; + var keystream = this._keystream; + // Generate keystream + if (iv) { + keystream = this._keystream = iv.slice(0); + // Remove IV for subsequent blocks + this._iv = undefined; + } + cipher.encryptBlock(keystream, 0); + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + }, + })); + OFB.Decryptor = Encryptor; + return OFB; + })(); + return CryptoJS.mode.OFB; + }); + }); + + var modeEcb = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * Electronic Codebook block mode. + */ CryptoJS.mode.ECB = (function () { + var ECB = CryptoJS.lib.BlockCipherMode.extend(); + ECB.Encryptor = ECB.extend({ + processBlock: function processBlock(words, offset) { + this._cipher.encryptBlock(words, offset); + }, + }); + ECB.Decryptor = ECB.extend({ + processBlock: function processBlock(words, offset) { + this._cipher.decryptBlock(words, offset); + }, + }); + return ECB; + })(); + return CryptoJS.mode.ECB; + }); + }); + + var padAnsix923 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * ANSI X.923 padding strategy. + */ CryptoJS.pad.AnsiX923 = { + pad: function pad(data, blockSize) { + // Shortcuts + var dataSigBytes = data.sigBytes; + var blockSizeBytes = blockSize * 4; + // Count padding bytes + var nPaddingBytes = blockSizeBytes - (dataSigBytes % blockSizeBytes); + // Compute last byte position + var lastBytePos = dataSigBytes + nPaddingBytes - 1; + // Pad + data.clamp(); + data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); + data.sigBytes += nPaddingBytes; + }, + unpad: function unpad(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + // Remove padding + data.sigBytes -= nPaddingBytes; + }, + }; + return CryptoJS.pad.Ansix923; + }); + }); + + var padIso10126 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * ISO 10126 padding strategy. + */ CryptoJS.pad.Iso10126 = { + pad: function pad(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + // Count padding bytes + var nPaddingBytes = blockSizeBytes - (data.sigBytes % blockSizeBytes); + // Pad + data + .concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)) + .concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); + }, + unpad: function unpad(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + // Remove padding + data.sigBytes -= nPaddingBytes; + }, + }; + return CryptoJS.pad.Iso10126; + }); + }); + + var padIso97971 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * ISO/IEC 9797-1 Padding Method 2. + */ CryptoJS.pad.Iso97971 = { + pad: function pad(data, blockSize) { + // Add 0x80 byte + data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); + // Zero pad the rest + CryptoJS.pad.ZeroPadding.pad(data, blockSize); + }, + unpad: function unpad(data) { + // Remove zero padding + CryptoJS.pad.ZeroPadding.unpad(data); + // Remove one more byte -- the 0x80 byte + data.sigBytes--; + }, + }; + return CryptoJS.pad.Iso97971; + }); + }); + + var padZeropadding = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * Zero padding strategy. + */ CryptoJS.pad.ZeroPadding = { + pad: function pad(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + // Pad + data.clamp(); + data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes); + }, + unpad: function unpad(data) { + // Shortcut + var dataWords = data.words; + // Unpad + var i = data.sigBytes - 1; + for (var i = data.sigBytes - 1; i >= 0; i--) { + if ((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff) { + data.sigBytes = i + 1; + break; + } + } + }, + }; + return CryptoJS.pad.ZeroPadding; + }); + }); + + var padNopadding = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + /** + * A noop padding strategy. + */ CryptoJS.pad.NoPadding = { + pad: function pad() {}, + unpad: function unpad() {}, + }; + return CryptoJS.pad.NoPadding; + }); + }); + + var formatHex = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + (function (undefined1) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var CipherParams = C_lib.CipherParams; + var C_enc = C.enc; + var Hex = C_enc.Hex; + var C_format = C.format; + C_format.Hex = { + /** + * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The hexadecimally encoded string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.format.Hex.stringify(cipherParams); + */ stringify: function stringify(cipherParams) { + return cipherParams.ciphertext.toString(Hex); + }, + /** + * Converts a hexadecimally encoded ciphertext string to a cipher params object. + * + * @param {string} input The hexadecimally encoded string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.Hex.parse(hexString); + */ parse: function parse(input) { + var ciphertext = Hex.parse(input); + return CipherParams.create({ + ciphertext: ciphertext, + }); + }, + }; + })(); + return CryptoJS.format.Hex; + }); + }); + + var aes = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, encBase64, md5, evpkdf, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + // Lookup tables + var SBOX = []; + var INV_SBOX = []; + var SUB_MIX_0 = []; + var SUB_MIX_1 = []; + var SUB_MIX_2 = []; + var SUB_MIX_3 = []; + var INV_SUB_MIX_0 = []; + var INV_SUB_MIX_1 = []; + var INV_SUB_MIX_2 = []; + var INV_SUB_MIX_3 = []; + // Compute lookup tables + (function () { + // Compute double table + var d = []; + for (var i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = (i << 1) ^ 0x11b; + } + } + // Walk GF(2^8) + var x = 0; + var xi = 0; + for (var i = 0; i < 256; i++) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; + SBOX[x] = sx; + INV_SBOX[sx] = x; + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100); + SUB_MIX_0[x] = (t << 24) | (t >>> 8); + SUB_MIX_1[x] = (t << 16) | (t >>> 16); + SUB_MIX_2[x] = (t << 8) | (t >>> 24); + SUB_MIX_3[x] = t; + // Compute inv sub bytes, inv mix columns tables + var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); + INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); + INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); + INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); + INV_SUB_MIX_3[sx] = t; + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + })(); + // Precomputed Rcon lookup + var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + /** + * AES block cipher algorithm. + */ var AES = (C_algo.AES = BlockCipher.extend({ + _doReset: function _doReset() { + var t; + // Skip reset of nRounds has been set before and key did not change + if (this._nRounds && this._keyPriorReset === this._key) { + return; + } + // Shortcuts + var key = (this._keyPriorReset = this._key); + var keyWords = key.words; + var keySize = key.sigBytes / 4; + // Compute number of rounds + var nRounds = (this._nRounds = keySize + 6); + // Compute number of key schedule rows + var ksRows = (nRounds + 1) * 4; + // Compute key schedule + var keySchedule = (this._keySchedule = []); + for (var ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + keySchedule[ksRow] = keyWords[ksRow]; + } else { + t = keySchedule[ksRow - 1]; + if (!(ksRow % keySize)) { + // Rot word + t = (t << 8) | (t >>> 24); + // Sub word + t = + (SBOX[t >>> 24] << 24) | + (SBOX[(t >>> 16) & 0xff] << 16) | + (SBOX[(t >>> 8) & 0xff] << 8) | + SBOX[t & 0xff]; + // Mix Rcon + t ^= RCON[(ksRow / keySize) | 0] << 24; + } else if (keySize > 6 && ksRow % keySize == 4) { + // Sub word + t = + (SBOX[t >>> 24] << 24) | + (SBOX[(t >>> 16) & 0xff] << 16) | + (SBOX[(t >>> 8) & 0xff] << 8) | + SBOX[t & 0xff]; + } + keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; + } + } + // Compute inv key schedule + var invKeySchedule = (this._invKeySchedule = []); + for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { + var ksRow = ksRows - invKsRow; + if (invKsRow % 4) { + var t = keySchedule[ksRow]; + } else { + var t = keySchedule[ksRow - 4]; + } + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = + INV_SUB_MIX_0[SBOX[t >>> 24]] ^ + INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ + INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ + INV_SUB_MIX_3[SBOX[t & 0xff]]; + } + } + }, + encryptBlock: function encryptBlock(M, offset) { + this._doCryptBlock( + M, + offset, + this._keySchedule, + SUB_MIX_0, + SUB_MIX_1, + SUB_MIX_2, + SUB_MIX_3, + SBOX + ); + }, + decryptBlock: function decryptBlock(M, offset) { + // Swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + this._doCryptBlock( + M, + offset, + this._invKeySchedule, + INV_SUB_MIX_0, + INV_SUB_MIX_1, + INV_SUB_MIX_2, + INV_SUB_MIX_3, + INV_SBOX + ); + // Inv swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + }, + _doCryptBlock: function _doCryptBlock( + M, + offset, + keySchedule, + SUB_MIX_0, + SUB_MIX_1, + SUB_MIX_2, + SUB_MIX_3, + SBOX + ) { + // Shortcut + var nRounds = this._nRounds; + // Get input, add round key + var s0 = M[offset] ^ keySchedule[0]; + var s1 = M[offset + 1] ^ keySchedule[1]; + var s2 = M[offset + 2] ^ keySchedule[2]; + var s3 = M[offset + 3] ^ keySchedule[3]; + // Key schedule row counter + var ksRow = 4; + // Rounds + for (var round = 1; round < nRounds; round++) { + // Shift rows, sub bytes, mix columns, add round key + var t0 = + SUB_MIX_0[s0 >>> 24] ^ + SUB_MIX_1[(s1 >>> 16) & 0xff] ^ + SUB_MIX_2[(s2 >>> 8) & 0xff] ^ + SUB_MIX_3[s3 & 0xff] ^ + keySchedule[ksRow++]; + var t1 = + SUB_MIX_0[s1 >>> 24] ^ + SUB_MIX_1[(s2 >>> 16) & 0xff] ^ + SUB_MIX_2[(s3 >>> 8) & 0xff] ^ + SUB_MIX_3[s0 & 0xff] ^ + keySchedule[ksRow++]; + var t2 = + SUB_MIX_0[s2 >>> 24] ^ + SUB_MIX_1[(s3 >>> 16) & 0xff] ^ + SUB_MIX_2[(s0 >>> 8) & 0xff] ^ + SUB_MIX_3[s1 & 0xff] ^ + keySchedule[ksRow++]; + var t3 = + SUB_MIX_0[s3 >>> 24] ^ + SUB_MIX_1[(s0 >>> 16) & 0xff] ^ + SUB_MIX_2[(s1 >>> 8) & 0xff] ^ + SUB_MIX_3[s2 & 0xff] ^ + keySchedule[ksRow++]; + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + } + // Shift rows, sub bytes, add round key + var t0 = + ((SBOX[s0 >>> 24] << 24) | + (SBOX[(s1 >>> 16) & 0xff] << 16) | + (SBOX[(s2 >>> 8) & 0xff] << 8) | + SBOX[s3 & 0xff]) ^ + keySchedule[ksRow++]; + var t1 = + ((SBOX[s1 >>> 24] << 24) | + (SBOX[(s2 >>> 16) & 0xff] << 16) | + (SBOX[(s3 >>> 8) & 0xff] << 8) | + SBOX[s0 & 0xff]) ^ + keySchedule[ksRow++]; + var t2 = + ((SBOX[s2 >>> 24] << 24) | + (SBOX[(s3 >>> 16) & 0xff] << 16) | + (SBOX[(s0 >>> 8) & 0xff] << 8) | + SBOX[s1 & 0xff]) ^ + keySchedule[ksRow++]; + var t3 = + ((SBOX[s3 >>> 24] << 24) | + (SBOX[(s0 >>> 16) & 0xff] << 16) | + (SBOX[(s1 >>> 8) & 0xff] << 8) | + SBOX[s2 & 0xff]) ^ + keySchedule[ksRow++]; + // Set output + M[offset] = t0; + M[offset + 1] = t1; + M[offset + 2] = t2; + M[offset + 3] = t3; + }, + keySize: 256 / 32, + })); + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); + */ C.AES = BlockCipher._createHelper(AES); + })(); + return CryptoJS.AES; + }); + }); + + var tripledes = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, encBase64, md5, evpkdf, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var exchangeLR = // Swap bits across the left and right words + function exchangeLR(offset, mask) { + var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; + this._rBlock ^= t; + this._lBlock ^= t << offset; + }; + var exchangeRL = function exchangeRL(offset, mask) { + var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; + this._lBlock ^= t; + this._rBlock ^= t << offset; + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + // Permuted Choice 1 constants + var PC1 = [ + 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, + 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, + 45, 37, 29, 21, 13, 5, 28, 20, 12, 4, + ]; + // Permuted Choice 2 constants + var PC2 = [ + 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, + 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, + 29, 32, + ]; + // Cumulative bit shift constants + var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; + // SBOXes and round permutation constants + var SBOX_P = [ + { + 0x0: 0x808200, + 0x10000000: 0x8000, + 0x20000000: 0x808002, + 0x30000000: 0x2, + 0x40000000: 0x200, + 0x50000000: 0x808202, + 0x60000000: 0x800202, + 0x70000000: 0x800000, + 0x80000000: 0x202, + 0x90000000: 0x800200, + 0xa0000000: 0x8200, + 0xb0000000: 0x808000, + 0xc0000000: 0x8002, + 0xd0000000: 0x800002, + 0xe0000000: 0x0, + 0xf0000000: 0x8202, + 0x8000000: 0x0, + 0x18000000: 0x808202, + 0x28000000: 0x8202, + 0x38000000: 0x8000, + 0x48000000: 0x808200, + 0x58000000: 0x200, + 0x68000000: 0x808002, + 0x78000000: 0x2, + 0x88000000: 0x800200, + 0x98000000: 0x8200, + 0xa8000000: 0x808000, + 0xb8000000: 0x800202, + 0xc8000000: 0x800002, + 0xd8000000: 0x8002, + 0xe8000000: 0x202, + 0xf8000000: 0x800000, + 0x1: 0x8000, + 0x10000001: 0x2, + 0x20000001: 0x808200, + 0x30000001: 0x800000, + 0x40000001: 0x808002, + 0x50000001: 0x8200, + 0x60000001: 0x200, + 0x70000001: 0x800202, + 0x80000001: 0x808202, + 0x90000001: 0x808000, + 0xa0000001: 0x800002, + 0xb0000001: 0x8202, + 0xc0000001: 0x202, + 0xd0000001: 0x800200, + 0xe0000001: 0x8002, + 0xf0000001: 0x0, + 0x8000001: 0x808202, + 0x18000001: 0x808000, + 0x28000001: 0x800000, + 0x38000001: 0x200, + 0x48000001: 0x8000, + 0x58000001: 0x800002, + 0x68000001: 0x2, + 0x78000001: 0x8202, + 0x88000001: 0x8002, + 0x98000001: 0x800202, + 0xa8000001: 0x202, + 0xb8000001: 0x808200, + 0xc8000001: 0x800200, + 0xd8000001: 0x0, + 0xe8000001: 0x8200, + 0xf8000001: 0x808002, + }, + { + 0x0: 0x40084010, + 0x1000000: 0x4000, + 0x2000000: 0x80000, + 0x3000000: 0x40080010, + 0x4000000: 0x40000010, + 0x5000000: 0x40084000, + 0x6000000: 0x40004000, + 0x7000000: 0x10, + 0x8000000: 0x84000, + 0x9000000: 0x40004010, + 0xa000000: 0x40000000, + 0xb000000: 0x84010, + 0xc000000: 0x80010, + 0xd000000: 0x0, + 0xe000000: 0x4010, + 0xf000000: 0x40080000, + 0x800000: 0x40004000, + 0x1800000: 0x84010, + 0x2800000: 0x10, + 0x3800000: 0x40004010, + 0x4800000: 0x40084010, + 0x5800000: 0x40000000, + 0x6800000: 0x80000, + 0x7800000: 0x40080010, + 0x8800000: 0x80010, + 0x9800000: 0x0, + 0xa800000: 0x4000, + 0xb800000: 0x40080000, + 0xc800000: 0x40000010, + 0xd800000: 0x84000, + 0xe800000: 0x40084000, + 0xf800000: 0x4010, + 0x10000000: 0x0, + 0x11000000: 0x40080010, + 0x12000000: 0x40004010, + 0x13000000: 0x40084000, + 0x14000000: 0x40080000, + 0x15000000: 0x10, + 0x16000000: 0x84010, + 0x17000000: 0x4000, + 0x18000000: 0x4010, + 0x19000000: 0x80000, + 0x1a000000: 0x80010, + 0x1b000000: 0x40000010, + 0x1c000000: 0x84000, + 0x1d000000: 0x40004000, + 0x1e000000: 0x40000000, + 0x1f000000: 0x40084010, + 0x10800000: 0x84010, + 0x11800000: 0x80000, + 0x12800000: 0x40080000, + 0x13800000: 0x4000, + 0x14800000: 0x40004000, + 0x15800000: 0x40084010, + 0x16800000: 0x10, + 0x17800000: 0x40000000, + 0x18800000: 0x40084000, + 0x19800000: 0x40000010, + 0x1a800000: 0x40004010, + 0x1b800000: 0x80010, + 0x1c800000: 0x0, + 0x1d800000: 0x4010, + 0x1e800000: 0x40080010, + 0x1f800000: 0x84000, + }, + { + 0x0: 0x104, + 0x100000: 0x0, + 0x200000: 0x4000100, + 0x300000: 0x10104, + 0x400000: 0x10004, + 0x500000: 0x4000004, + 0x600000: 0x4010104, + 0x700000: 0x4010000, + 0x800000: 0x4000000, + 0x900000: 0x4010100, + 0xa00000: 0x10100, + 0xb00000: 0x4010004, + 0xc00000: 0x4000104, + 0xd00000: 0x10000, + 0xe00000: 0x4, + 0xf00000: 0x100, + 0x80000: 0x4010100, + 0x180000: 0x4010004, + 0x280000: 0x0, + 0x380000: 0x4000100, + 0x480000: 0x4000004, + 0x580000: 0x10000, + 0x680000: 0x10004, + 0x780000: 0x104, + 0x880000: 0x4, + 0x980000: 0x100, + 0xa80000: 0x4010000, + 0xb80000: 0x10104, + 0xc80000: 0x10100, + 0xd80000: 0x4000104, + 0xe80000: 0x4010104, + 0xf80000: 0x4000000, + 0x1000000: 0x4010100, + 0x1100000: 0x10004, + 0x1200000: 0x10000, + 0x1300000: 0x4000100, + 0x1400000: 0x100, + 0x1500000: 0x4010104, + 0x1600000: 0x4000004, + 0x1700000: 0x0, + 0x1800000: 0x4000104, + 0x1900000: 0x4000000, + 0x1a00000: 0x4, + 0x1b00000: 0x10100, + 0x1c00000: 0x4010000, + 0x1d00000: 0x104, + 0x1e00000: 0x10104, + 0x1f00000: 0x4010004, + 0x1080000: 0x4000000, + 0x1180000: 0x104, + 0x1280000: 0x4010100, + 0x1380000: 0x0, + 0x1480000: 0x10004, + 0x1580000: 0x4000100, + 0x1680000: 0x100, + 0x1780000: 0x4010004, + 0x1880000: 0x10000, + 0x1980000: 0x4010104, + 0x1a80000: 0x10104, + 0x1b80000: 0x4000004, + 0x1c80000: 0x4000104, + 0x1d80000: 0x4010000, + 0x1e80000: 0x4, + 0x1f80000: 0x10100, + }, + { + 0x0: 0x80401000, + 0x10000: 0x80001040, + 0x20000: 0x401040, + 0x30000: 0x80400000, + 0x40000: 0x0, + 0x50000: 0x401000, + 0x60000: 0x80000040, + 0x70000: 0x400040, + 0x80000: 0x80000000, + 0x90000: 0x400000, + 0xa0000: 0x40, + 0xb0000: 0x80001000, + 0xc0000: 0x80400040, + 0xd0000: 0x1040, + 0xe0000: 0x1000, + 0xf0000: 0x80401040, + 0x8000: 0x80001040, + 0x18000: 0x40, + 0x28000: 0x80400040, + 0x38000: 0x80001000, + 0x48000: 0x401000, + 0x58000: 0x80401040, + 0x68000: 0x0, + 0x78000: 0x80400000, + 0x88000: 0x1000, + 0x98000: 0x80401000, + 0xa8000: 0x400000, + 0xb8000: 0x1040, + 0xc8000: 0x80000000, + 0xd8000: 0x400040, + 0xe8000: 0x401040, + 0xf8000: 0x80000040, + 0x100000: 0x400040, + 0x110000: 0x401000, + 0x120000: 0x80000040, + 0x130000: 0x0, + 0x140000: 0x1040, + 0x150000: 0x80400040, + 0x160000: 0x80401000, + 0x170000: 0x80001040, + 0x180000: 0x80401040, + 0x190000: 0x80000000, + 0x1a0000: 0x80400000, + 0x1b0000: 0x401040, + 0x1c0000: 0x80001000, + 0x1d0000: 0x400000, + 0x1e0000: 0x40, + 0x1f0000: 0x1000, + 0x108000: 0x80400000, + 0x118000: 0x80401040, + 0x128000: 0x0, + 0x138000: 0x401000, + 0x148000: 0x400040, + 0x158000: 0x80000000, + 0x168000: 0x80001040, + 0x178000: 0x40, + 0x188000: 0x80000040, + 0x198000: 0x1000, + 0x1a8000: 0x80001000, + 0x1b8000: 0x80400040, + 0x1c8000: 0x1040, + 0x1d8000: 0x80401000, + 0x1e8000: 0x400000, + 0x1f8000: 0x401040, + }, + { + 0x0: 0x80, + 0x1000: 0x1040000, + 0x2000: 0x40000, + 0x3000: 0x20000000, + 0x4000: 0x20040080, + 0x5000: 0x1000080, + 0x6000: 0x21000080, + 0x7000: 0x40080, + 0x8000: 0x1000000, + 0x9000: 0x20040000, + 0xa000: 0x20000080, + 0xb000: 0x21040080, + 0xc000: 0x21040000, + 0xd000: 0x0, + 0xe000: 0x1040080, + 0xf000: 0x21000000, + 0x800: 0x1040080, + 0x1800: 0x21000080, + 0x2800: 0x80, + 0x3800: 0x1040000, + 0x4800: 0x40000, + 0x5800: 0x20040080, + 0x6800: 0x21040000, + 0x7800: 0x20000000, + 0x8800: 0x20040000, + 0x9800: 0x0, + 0xa800: 0x21040080, + 0xb800: 0x1000080, + 0xc800: 0x20000080, + 0xd800: 0x21000000, + 0xe800: 0x1000000, + 0xf800: 0x40080, + 0x10000: 0x40000, + 0x11000: 0x80, + 0x12000: 0x20000000, + 0x13000: 0x21000080, + 0x14000: 0x1000080, + 0x15000: 0x21040000, + 0x16000: 0x20040080, + 0x17000: 0x1000000, + 0x18000: 0x21040080, + 0x19000: 0x21000000, + 0x1a000: 0x1040000, + 0x1b000: 0x20040000, + 0x1c000: 0x40080, + 0x1d000: 0x20000080, + 0x1e000: 0x0, + 0x1f000: 0x1040080, + 0x10800: 0x21000080, + 0x11800: 0x1000000, + 0x12800: 0x1040000, + 0x13800: 0x20040080, + 0x14800: 0x20000000, + 0x15800: 0x1040080, + 0x16800: 0x80, + 0x17800: 0x21040000, + 0x18800: 0x40080, + 0x19800: 0x21040080, + 0x1a800: 0x0, + 0x1b800: 0x21000000, + 0x1c800: 0x1000080, + 0x1d800: 0x40000, + 0x1e800: 0x20040000, + 0x1f800: 0x20000080, + }, + { + 0x0: 0x10000008, + 0x100: 0x2000, + 0x200: 0x10200000, + 0x300: 0x10202008, + 0x400: 0x10002000, + 0x500: 0x200000, + 0x600: 0x200008, + 0x700: 0x10000000, + 0x800: 0x0, + 0x900: 0x10002008, + 0xa00: 0x202000, + 0xb00: 0x8, + 0xc00: 0x10200008, + 0xd00: 0x202008, + 0xe00: 0x2008, + 0xf00: 0x10202000, + 0x80: 0x10200000, + 0x180: 0x10202008, + 0x280: 0x8, + 0x380: 0x200000, + 0x480: 0x202008, + 0x580: 0x10000008, + 0x680: 0x10002000, + 0x780: 0x2008, + 0x880: 0x200008, + 0x980: 0x2000, + 0xa80: 0x10002008, + 0xb80: 0x10200008, + 0xc80: 0x0, + 0xd80: 0x10202000, + 0xe80: 0x202000, + 0xf80: 0x10000000, + 0x1000: 0x10002000, + 0x1100: 0x10200008, + 0x1200: 0x10202008, + 0x1300: 0x2008, + 0x1400: 0x200000, + 0x1500: 0x10000000, + 0x1600: 0x10000008, + 0x1700: 0x202000, + 0x1800: 0x202008, + 0x1900: 0x0, + 0x1a00: 0x8, + 0x1b00: 0x10200000, + 0x1c00: 0x2000, + 0x1d00: 0x10002008, + 0x1e00: 0x10202000, + 0x1f00: 0x200008, + 0x1080: 0x8, + 0x1180: 0x202000, + 0x1280: 0x200000, + 0x1380: 0x10000008, + 0x1480: 0x10002000, + 0x1580: 0x2008, + 0x1680: 0x10202008, + 0x1780: 0x10200000, + 0x1880: 0x10202000, + 0x1980: 0x10200008, + 0x1a80: 0x2000, + 0x1b80: 0x202008, + 0x1c80: 0x200008, + 0x1d80: 0x0, + 0x1e80: 0x10000000, + 0x1f80: 0x10002008, + }, + { + 0x0: 0x100000, + 0x10: 0x2000401, + 0x20: 0x400, + 0x30: 0x100401, + 0x40: 0x2100401, + 0x50: 0x0, + 0x60: 0x1, + 0x70: 0x2100001, + 0x80: 0x2000400, + 0x90: 0x100001, + 0xa0: 0x2000001, + 0xb0: 0x2100400, + 0xc0: 0x2100000, + 0xd0: 0x401, + 0xe0: 0x100400, + 0xf0: 0x2000000, + 0x8: 0x2100001, + 0x18: 0x0, + 0x28: 0x2000401, + 0x38: 0x2100400, + 0x48: 0x100000, + 0x58: 0x2000001, + 0x68: 0x2000000, + 0x78: 0x401, + 0x88: 0x100401, + 0x98: 0x2000400, + 0xa8: 0x2100000, + 0xb8: 0x100001, + 0xc8: 0x400, + 0xd8: 0x2100401, + 0xe8: 0x1, + 0xf8: 0x100400, + 0x100: 0x2000000, + 0x110: 0x100000, + 0x120: 0x2000401, + 0x130: 0x2100001, + 0x140: 0x100001, + 0x150: 0x2000400, + 0x160: 0x2100400, + 0x170: 0x100401, + 0x180: 0x401, + 0x190: 0x2100401, + 0x1a0: 0x100400, + 0x1b0: 0x1, + 0x1c0: 0x0, + 0x1d0: 0x2100000, + 0x1e0: 0x2000001, + 0x1f0: 0x400, + 0x108: 0x100400, + 0x118: 0x2000401, + 0x128: 0x2100001, + 0x138: 0x1, + 0x148: 0x2000000, + 0x158: 0x100000, + 0x168: 0x401, + 0x178: 0x2100400, + 0x188: 0x2000001, + 0x198: 0x2100000, + 0x1a8: 0x0, + 0x1b8: 0x2100401, + 0x1c8: 0x100401, + 0x1d8: 0x400, + 0x1e8: 0x2000400, + 0x1f8: 0x100001, + }, + { + 0x0: 0x8000820, + 0x1: 0x20000, + 0x2: 0x8000000, + 0x3: 0x20, + 0x4: 0x20020, + 0x5: 0x8020820, + 0x6: 0x8020800, + 0x7: 0x800, + 0x8: 0x8020000, + 0x9: 0x8000800, + 0xa: 0x20800, + 0xb: 0x8020020, + 0xc: 0x820, + 0xd: 0x0, + 0xe: 0x8000020, + 0xf: 0x20820, + 0x80000000: 0x800, + 0x80000001: 0x8020820, + 0x80000002: 0x8000820, + 0x80000003: 0x8000000, + 0x80000004: 0x8020000, + 0x80000005: 0x20800, + 0x80000006: 0x20820, + 0x80000007: 0x20, + 0x80000008: 0x8000020, + 0x80000009: 0x820, + 0x8000000a: 0x20020, + 0x8000000b: 0x8020800, + 0x8000000c: 0x0, + 0x8000000d: 0x8020020, + 0x8000000e: 0x8000800, + 0x8000000f: 0x20000, + 0x10: 0x20820, + 0x11: 0x8020800, + 0x12: 0x20, + 0x13: 0x800, + 0x14: 0x8000800, + 0x15: 0x8000020, + 0x16: 0x8020020, + 0x17: 0x20000, + 0x18: 0x0, + 0x19: 0x20020, + 0x1a: 0x8020000, + 0x1b: 0x8000820, + 0x1c: 0x8020820, + 0x1d: 0x20800, + 0x1e: 0x820, + 0x1f: 0x8000000, + 0x80000010: 0x20000, + 0x80000011: 0x800, + 0x80000012: 0x8020020, + 0x80000013: 0x20820, + 0x80000014: 0x20, + 0x80000015: 0x8020000, + 0x80000016: 0x8000000, + 0x80000017: 0x8000820, + 0x80000018: 0x8020820, + 0x80000019: 0x8000020, + 0x8000001a: 0x8000800, + 0x8000001b: 0x0, + 0x8000001c: 0x20800, + 0x8000001d: 0x820, + 0x8000001e: 0x20020, + 0x8000001f: 0x8020800, + }, + ]; + // Masks that select the SBOX input + var SBOX_MASK = [ + 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, 0x0001f800, 0x00001f80, 0x000001f8, + 0x8000001f, + ]; + /** + * DES block cipher algorithm. + */ var DES = (C_algo.DES = BlockCipher.extend({ + _doReset: function _doReset() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + // Select 56 bits according to PC1 + var keyBits = []; + for (var i = 0; i < 56; i++) { + var keyBitPos = PC1[i] - 1; + keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - (keyBitPos % 32))) & 1; + } + // Assemble 16 subkeys + var subKeys = (this._subKeys = []); + for (var nSubKey = 0; nSubKey < 16; nSubKey++) { + // Create subkey + var subKey = (subKeys[nSubKey] = []); + // Shortcut + var bitShift = BIT_SHIFTS[nSubKey]; + // Select 48 bits according to PC2 + for (var i = 0; i < 24; i++) { + // Select from the left 28 key bits + subKey[(i / 6) | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << (31 - (i % 6)); + // Select from the right 28 key bits + subKey[4 + ((i / 6) | 0)] |= + keyBits[28 + ((PC2[i + 24] - 1 + bitShift) % 28)] << (31 - (i % 6)); + } + // Since each subkey is applied to an expanded 32-bit input, + // the subkey can be broken into 8 values scaled to 32-bits, + // which allows the key to be used without expansion + subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); + for (var i = 1; i < 7; i++) { + subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); + } + subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); + } + // Compute inverse subkeys + var invSubKeys = (this._invSubKeys = []); + for (var i = 0; i < 16; i++) { + invSubKeys[i] = subKeys[15 - i]; + } + }, + encryptBlock: function encryptBlock(M, offset) { + this._doCryptBlock(M, offset, this._subKeys); + }, + decryptBlock: function decryptBlock(M, offset) { + this._doCryptBlock(M, offset, this._invSubKeys); + }, + _doCryptBlock: function _doCryptBlock(M, offset, subKeys) { + // Get input + this._lBlock = M[offset]; + this._rBlock = M[offset + 1]; + // Initial permutation + exchangeLR.call(this, 4, 0x0f0f0f0f); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeRL.call(this, 2, 0x33333333); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeLR.call(this, 1, 0x55555555); + // Rounds + for (var round = 0; round < 16; round++) { + // Shortcuts + var subKey = subKeys[round]; + var lBlock = this._lBlock; + var rBlock = this._rBlock; + // Feistel function + var f = 0; + for (var i = 0; i < 8; i++) { + f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; + } + this._lBlock = rBlock; + this._rBlock = lBlock ^ f; + } + // Undo swap from last round + var t = this._lBlock; + this._lBlock = this._rBlock; + this._rBlock = t; + // Final permutation + exchangeLR.call(this, 1, 0x55555555); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeRL.call(this, 2, 0x33333333); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeLR.call(this, 4, 0x0f0f0f0f); + // Set output + M[offset] = this._lBlock; + M[offset + 1] = this._rBlock; + }, + keySize: 64 / 32, + ivSize: 64 / 32, + blockSize: 64 / 32, + })); + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); + */ C.DES = BlockCipher._createHelper(DES); + /** + * Triple-DES block cipher algorithm. + */ var TripleDES = (C_algo.TripleDES = BlockCipher.extend({ + _doReset: function _doReset() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + // Make sure the key length is valid (64, 128 or >= 192 bit) + if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { + throw new Error( + "Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192." + ); + } + // Extend the key according to the keying options defined in 3DES standard + var key1 = keyWords.slice(0, 2); + var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); + var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); + // Create DES instances + this._des1 = DES.createEncryptor(WordArray.create(key1)); + this._des2 = DES.createEncryptor(WordArray.create(key2)); + this._des3 = DES.createEncryptor(WordArray.create(key3)); + }, + encryptBlock: function encryptBlock(M, offset) { + this._des1.encryptBlock(M, offset); + this._des2.decryptBlock(M, offset); + this._des3.encryptBlock(M, offset); + }, + decryptBlock: function decryptBlock(M, offset) { + this._des3.decryptBlock(M, offset); + this._des2.encryptBlock(M, offset); + this._des1.decryptBlock(M, offset); + }, + keySize: 192 / 32, + ivSize: 64 / 32, + blockSize: 64 / 32, + })); + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); + */ C.TripleDES = BlockCipher._createHelper(TripleDES); + })(); + return CryptoJS.TripleDES; + }); + }); + + var rc4 = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, encBase64, md5, evpkdf, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var generateKeystreamWord = function generateKeystreamWord() { + // Shortcuts + var S = this._S; + var i = this._i; + var j = this._j; + // Generate keystream word + var keystreamWord = 0; + for (var n = 0; n < 4; n++) { + i = (i + 1) % 256; + j = (j + S[i]) % 256; + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); + } + // Update counters + this._i = i; + this._j = j; + return keystreamWord; + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + /** + * RC4 stream cipher algorithm. + */ var RC4 = (C_algo.RC4 = StreamCipher.extend({ + _doReset: function _doReset() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + var keySigBytes = key.sigBytes; + // Init sbox + var S = (this._S = []); + for (var i = 0; i < 256; i++) { + S[i] = i; + } + // Key setup + for (var i = 0, j = 0; i < 256; i++) { + var keyByteIndex = i % keySigBytes; + var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; + j = (j + S[i] + keyByte) % 256; + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + } + // Counters + this._i = this._j = 0; + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + M[offset] ^= generateKeystreamWord.call(this); + }, + keySize: 256 / 32, + ivSize: 0, + })); + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); + */ C.RC4 = StreamCipher._createHelper(RC4); + /** + * Modified RC4 stream cipher algorithm. + */ var RC4Drop = (C_algo.RC4Drop = RC4.extend({ + /** + * Configuration options. + * + * @property {number} drop The number of keystream words to drop. Default 192 + */ cfg: RC4.cfg.extend({ + drop: 192, + }), + _doReset: function _doReset() { + RC4._doReset.call(this); + // Drop + for (var i = this.cfg.drop; i > 0; i--) { + generateKeystreamWord.call(this); + } + }, + })); + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); + */ C.RC4Drop = StreamCipher._createHelper(RC4Drop); + })(); + return CryptoJS.RC4; + }); + }); + + var rabbit = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, encBase64, md5, evpkdf, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var nextState = function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0)) | 0; + this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0; + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + // High XOR low + G[i] = gh ^ gl; + } + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + // Reusable objects + var S = []; + var C_ = []; + var G = []; + /** + * Rabbit stream cipher algorithm + */ var Rabbit = (C_algo.Rabbit = StreamCipher.extend({ + _doReset: function _doReset() { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + // Swap endian + for (var i = 0; i < 4; i++) { + K[i] = + (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | + (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); + } + // Generate initial state values + var X = (this._X = [ + K[0], + (K[3] << 16) | (K[2] >>> 16), + K[1], + (K[0] << 16) | (K[3] >>> 16), + K[2], + (K[1] << 16) | (K[0] >>> 16), + K[3], + (K[2] << 16) | (K[1] >>> 16), + ]); + // Generate initial counter values + var C = (this._C = [ + (K[2] << 16) | (K[2] >>> 16), + (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), + (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), + (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), + (K[3] & 0xffff0000) | (K[0] & 0x0000ffff), + ]); + // Carry bit + this._b = 0; + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + // Generate four subvectors + var i0 = + (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | + (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = + (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | + (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Shortcut + var X = this._X; + // Iterate the system + nextState.call(this); + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = + (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + // Encrypt + M[offset + i] ^= S[i]; + } + }, + blockSize: 128 / 32, + ivSize: 64 / 32, + })); + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); + * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); + */ C.Rabbit = StreamCipher._createHelper(Rabbit); + })(); + return CryptoJS.Rabbit; + }); + }); + + var rabbitLegacy = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory(core, encBase64, md5, evpkdf, cipherCore); + } + })(commonjsGlobal, function (CryptoJS) { + (function () { + var nextState = function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0)) | 0; + this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0; + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + // High XOR low + G[i] = gh ^ gl; + } + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + }; + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + // Reusable objects + var S = []; + var C_ = []; + var G = []; + /** + * Rabbit stream cipher algorithm. + * + * This is a legacy version that neglected to convert the key to little-endian. + * This error doesn't affect the cipher's security, + * but it does affect its compatibility with other implementations. + */ var RabbitLegacy = (C_algo.RabbitLegacy = StreamCipher.extend({ + _doReset: function _doReset() { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + // Generate initial state values + var X = (this._X = [ + K[0], + (K[3] << 16) | (K[2] >>> 16), + K[1], + (K[0] << 16) | (K[3] >>> 16), + K[2], + (K[1] << 16) | (K[0] >>> 16), + K[3], + (K[2] << 16) | (K[1] >>> 16), + ]); + // Generate initial counter values + var C = (this._C = [ + (K[2] << 16) | (K[2] >>> 16), + (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), + (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), + (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), + (K[3] & 0xffff0000) | (K[0] & 0x0000ffff), + ]); + // Carry bit + this._b = 0; + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + // Generate four subvectors + var i0 = + (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | + (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = + (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | + (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + _doProcessBlock: function _doProcessBlock(M, offset) { + // Shortcut + var X = this._X; + // Iterate the system + nextState.call(this); + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = + (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + // Encrypt + M[offset + i] ^= S[i]; + } + }, + blockSize: 128 / 32, + ivSize: 64 / 32, + })); + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); + */ C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); + })(); + return CryptoJS.RabbitLegacy; + }); + }); + + var cryptoJs = createCommonjsModule(function (module, exports) { + (function (root, factory, undef) { + { + // CommonJS + module.exports = factory( + core, + x64Core, + libTypedarrays, + encUtf16, + encBase64, + encBase64url, + md5, + sha1, + sha256, + sha224, + sha512, + sha384, + sha3, + ripemd160, + hmac, + pbkdf2, + evpkdf, + cipherCore, + modeCfb, + modeCtr, + modeCtrGladman, + modeOfb, + modeEcb, + padAnsix923, + padIso10126, + padIso97971, + padZeropadding, + padNopadding, + formatHex, + aes, + tripledes, + rc4, + rabbit, + rabbitLegacy + ); + } + })(commonjsGlobal, function (CryptoJS) { + return CryptoJS; + }); + }); + + return cryptoJs; +}); +//# sourceMappingURL=crypto-js.min.js.map diff --git a/public/ref/style/darkblue.json b/public/ref/style/darkblue.json new file mode 100644 index 0000000..cbd1a1b --- /dev/null +++ b/public/ref/style/darkblue.json @@ -0,0 +1,2571 @@ +{ + "version": 8, + "name": "深蓝科技", + "metadata": { + "mapbox:type": "default", + "mapbox:origin": "navigation-night-v1", + "mapbox:sdk-support": { "android": "10.6.0", "ios": "10.6.0", "js": "2.9.0" }, + "mapbox:autocomposite": true, + "mapbox:groups": { + "Transit, transit-labels": { "name": "Transit, transit-labels", "collapsed": true }, + "Administrative boundaries, admin": { "name": "Administrative boundaries, admin", "collapsed": false }, + "Land & water, built": { "name": "Land & water, built", "collapsed": true }, + "Transit, bridges": { "name": "Transit, bridges", "collapsed": true }, + "Transit, surface": { "name": "Transit, surface", "collapsed": true }, + "Land & water, land": { "name": "Land & water, land", "collapsed": true }, + "Road network, bridges": { "name": "Road network, bridges", "collapsed": true }, + "Road network, tunnels": { "name": "Road network, tunnels", "collapsed": true }, + "Road network, road-labels": { "name": "Road network, road-labels", "collapsed": false }, + "Buildings, built": { "name": "Buildings, built", "collapsed": true }, + "Natural features, natural-labels": { "name": "Natural features, natural-labels", "collapsed": true }, + "Road network, surface": { "name": "Road network, surface", "collapsed": true }, + "Walking, cycling, etc., barriers-bridges": { "name": "Walking, cycling, etc., barriers-bridges", "collapsed": true }, + "Place labels, place-labels": { "name": "Place labels, place-labels", "collapsed": false }, + "Transit, ferries": { "name": "Transit, ferries", "collapsed": true }, + "Transit, elevated": { "name": "Transit, elevated", "collapsed": true }, + "Buildings, extruded": { "name": "Buildings, extruded", "collapsed": true }, + "Point of interest labels, poi-labels": { "name": "Point of interest labels, poi-labels", "collapsed": false }, + "Road network, tunnels-case": { "name": "Road network, tunnels-case", "collapsed": true }, + "Transit, built": { "name": "Transit, built", "collapsed": true }, + "Road network, surface-icons": { "name": "Road network, surface-icons", "collapsed": true }, + "Land & water, water": { "name": "Land & water, water", "collapsed": true }, + "Transit, ferry-aerialway-labels": { "name": "Transit, ferry-aerialway-labels", "collapsed": true } + } + }, + "center": [116.40723286491766, 39.884181989706775], + "zoom": 17.58181390300712, + "bearing": -32.80000000000001, + "pitch": 85, + "light": { "anchor": ["step", ["zoom"], "map", 22, "map"] }, + "fog": { "color": "hsla(0, 0%, 100%, 0)", "high-color": "hsl(205, 35%, 25%)" }, + "sources": { "composite": { "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v8", "type": "vector" } }, + "sprite": "mapbox://sprites/mapbox/streets-v8", + "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", + "projection": { "name": "globe" }, + "layers": [ + { + "id": "land", + "type": "background", + "layout": {}, + "paint": { "background-color": ["interpolate", ["linear"], ["zoom"], 5, "hsl(220, 60%, 25%)", 7, "hsla(227, 86%, 6%, 0.9)"] }, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, land" } + }, + { + "layout": {}, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, land" }, + "maxzoom": 9, + "type": "fill", + "source": "composite", + "id": "landcover", + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + ["match", ["get", "class"], "wood", "#2d4a86", ["snow"], "#ffffff", "#2d4a86"], + 22, + ["match", ["get", "class"], "wood", "#2d4a86", ["snow"], "#ffffff", "#2d4a86"] + ], + "fill-opacity": ["interpolate", ["exponential", 1.5], ["zoom"], 8, 0.4, 9, 0], + "fill-antialias": false + }, + "source-layer": "landcover" + }, + { + "minzoom": 5, + "layout": {}, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, land" }, + "filter": ["==", ["get", "class"], "national_park"], + "type": "fill", + "source": "composite", + "id": "national-park", + "paint": { "fill-color": "hsl(175, 60%, 21%)", "fill-opacity": ["interpolate", ["linear"], ["zoom"], 5, 0, 6, 0.6, 12, 0.2] }, + "source-layer": "landuse_overlay" + }, + { + "minzoom": 5, + "layout": {}, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, land" }, + "filter": [ + "all", + [">=", ["to-number", ["get", "sizerank"]], 0], + [ + "match", + ["get", "class"], + ["agriculture", "wood", "grass", "scrub", "park", "airport", "glacier", "pitch", "sand"], + true, + "residential", + ["step", ["zoom"], true, 12, false], + ["facility", "industrial"], + ["step", ["zoom"], false, 12, true], + "cemetery", + true, + "school", + true, + "hospital", + true, + "commercial_area", + true, + "parking", + ["step", ["zoom"], false, 15, true], + false + ], + ["<=", ["-", ["to-number", ["get", "sizerank"]], ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0, 18, 14]], 14] + ], + "type": "fill", + "source": "composite", + "id": "landuse", + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 15, + [ + "match", + ["get", "class"], + "wood", + "hsla(180, 80%, 64%, 0.8)", + "scrub", + "hsla(175, 77%, 65%, 0.6)", + "agriculture", + "hsla(175, 80%, 69%, 0.6)", + "park", + "hsl(175, 85%, 23%)", + "grass", + "hsla(175, 80%, 69%, 0.6)", + "airport", + "hsl(230, 77%, 59%)", + "cemetery", + "hsl(175, 69%, 28%)", + "glacier", + "hsl(185, 60%, 60%)", + "hospital", + "hsl(250, 10%, 35%)", + "pitch", + "hsl(165, 95%, 25%)", + "sand", + "hsla(175, 90%, 69%, 0.05)", + "school", + "hsl(200, 10%, 30%)", + "commercial_area", + "hsl(215, 15%, 30%)", + "parking", + "hsl(215, 15%, 34%)", + "residential", + "hsla(230, 17%, 59%, 0)", + ["facility", "industrial"], + "hsl(230, 12%, 28%)", + "hsla(230, 33%, 62%, 0)" + ], + 16, + [ + "match", + ["get", "class"], + "wood", + "hsla(180, 80%, 64%, 0.8)", + "scrub", + "hsla(175, 77%, 65%, 0.6)", + "agriculture", + "hsla(175, 80%, 69%, 0.6)", + "park", + "hsl(175, 85%, 23%)", + "grass", + "hsla(175, 80%, 69%, 0.6)", + "airport", + "hsl(230, 77%, 59%)", + "cemetery", + "hsl(175, 69%, 28%)", + "glacier", + "hsl(185, 60%, 60%)", + "hospital", + "hsl(250, 10%, 35%)", + "pitch", + "hsl(165, 95%, 25%)", + "sand", + "hsla(175, 90%, 69%, 0.05)", + "school", + "hsl(200, 10%, 30%)", + "commercial_area", + "hsla(215, 15%, 30%, 0.5)", + "parking", + "hsl(215, 15%, 34%)", + ["facility", "industrial"], + "hsl(230, 12%, 28%)", + "hsla(230, 33%, 62%, 0)" + ] + ], + "fill-opacity": [ + "interpolate", + ["linear"], + ["zoom"], + 8, + ["match", ["get", "class"], ["residential", "airport"], 0.8, 0.2], + 12, + ["match", ["get", "class"], "residential", 0, 1] + ] + }, + "source-layer": "landuse" + }, + { + "minzoom": 15, + "layout": {}, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, land" }, + "filter": ["==", ["get", "class"], "pitch"], + "type": "line", + "source": "composite", + "id": "pitch-outline", + "paint": { "line-color": "hsl(165, 90%, 18%)" }, + "source-layer": "landuse" + }, + { + "id": "waterway", + "type": "line", + "source": "composite", + "source-layer": "waterway", + "minzoom": 8, + "layout": { "line-cap": ["step", ["zoom"], "butt", 11, "round"], "line-join": "round" }, + "paint": { + "line-color": "hsl(185, 90%, 35%)", + "line-width": [ + "interpolate", + ["exponential", 1.3], + ["zoom"], + 9, + ["match", ["get", "class"], ["canal", "river"], 0.1, 0], + 20, + ["match", ["get", "class"], ["canal", "river"], 8, 3] + ], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 8, 0, 8.5, 1] + }, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, water" } + }, + { + "id": "water", + "type": "fill", + "source": "composite", + "source-layer": "water", + "layout": {}, + "paint": { "fill-color": ["interpolate", ["linear"], ["zoom"], 2, "hsl(224, 50%, 15%)", 10, "hsl(195, 90%, 45%)"] }, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, water" } + }, + { + "minzoom": 13, + "layout": {}, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, built" }, + "filter": ["all", ["==", ["get", "class"], "land"], ["==", ["geometry-type"], "Polygon"]], + "type": "fill", + "source": "composite", + "id": "land-structure-polygon", + "paint": { "fill-color": ["interpolate", ["linear"], ["zoom"], 9, "hsla(230, 32%, 78%, 0)", 11, "hsla(230, 30%, 65%, 0)"] }, + "source-layer": "structure" + }, + { + "minzoom": 13, + "layout": { "line-cap": "square" }, + "metadata": { "mapbox:featureComponent": "land-and-water", "mapbox:group": "Land & water, built" }, + "filter": ["all", ["==", ["get", "class"], "land"], ["==", ["geometry-type"], "LineString"]], + "type": "line", + "source": "composite", + "id": "land-structure-line", + "paint": { + "line-width": ["interpolate", ["exponential", 1.99], ["zoom"], 14, 0.75, 20, 40], + "line-color": ["interpolate", ["linear"], ["zoom"], 9, "hsla(230, 32%, 78%, 0)", 11, "hsla(230, 30%, 65%, 0)"] + }, + "source-layer": "structure" + }, + { + "id": "aeroway-polygon", + "type": "fill", + "source": "composite", + "source-layer": "aeroway", + "minzoom": 11, + "filter": ["all", ["match", ["get", "type"], ["runway", "taxiway", "helipad"], true, false], ["==", ["geometry-type"], "Polygon"]], + "paint": { "fill-color": "hsl(230, 68%, 68%)", "fill-opacity": ["interpolate", ["linear"], ["zoom"], 10, 0, 11, 1] }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, built" } + }, + { + "id": "aeroway-line", + "type": "line", + "source": "composite", + "source-layer": "aeroway", + "minzoom": 9, + "filter": ["==", ["geometry-type"], "LineString"], + "paint": { + "line-color": "hsl(230, 68%, 68%)", + "line-width": [ + "interpolate", + ["exponential", 1.5], + ["zoom"], + 9, + ["match", ["get", "type"], "runway", 1, 0.5], + 18, + ["match", ["get", "type"], "runway", 80, 20] + ], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 10, 0, 11, 1] + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, built" } + }, + { + "minzoom": 15, + "layout": {}, + "metadata": { "mapbox:featureComponent": "buildings", "mapbox:group": "Buildings, built" }, + "filter": ["all", ["!=", ["get", "type"], "building:part"], ["==", ["get", "underground"], "false"]], + "type": "fill", + "source": "composite", + "id": "building", + "paint": { + "fill-color": "hsla(230, 27%, 59%, 0)", + "fill-opacity": ["interpolate", ["linear"], ["zoom"], 15, 0, 16, 1], + "fill-outline-color": "hsla(230, 22%, 56%, 0)" + }, + "source-layer": "building" + }, + { + "id": "tunnel-minor-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 4%, 19%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-dasharray": [3, 3] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels-case" } + }, + { + "id": "tunnel-street-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 4%, 19%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-opacity": ["step", ["zoom"], 0, 14, 1], + "line-dasharray": [3, 3] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels-case" } + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels-case" }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "tunnel"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "tunnel-minor-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-opacity": ["step", ["zoom"], 0, 11, 1] + }, + "source-layer": "road" + }, + { + "id": "tunnel-secondary-tertiary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 4%, 19%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-dasharray": [3, 3] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels-case" } + }, + { + "id": "tunnel-primary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 9, + "filter": ["all", ["==", ["get", "structure"], "tunnel"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 4%, 19%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-dasharray": [3, 3] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels-case" } + }, + { + "id": "tunnel-major-link-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsl(215, 20%, 35%)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-dasharray": [3, 3] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels-case" } + }, + { + "id": "tunnel-motorway-trunk-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 11%, 44%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-dasharray": [3, 3] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels-case" } + }, + { + "id": "tunnel-construction", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": ["all", ["==", ["get", "structure"], "tunnel"], ["==", ["get", "class"], "construction"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 2, 18, 20, 22, 200], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-dasharray": [ + "step", + ["zoom"], + ["literal", [0.4, 0.8]], + 15, + ["literal", [0.3, 0.6]], + 16, + ["literal", [0.2, 0.3]], + 17, + ["literal", [0.2, 0.25]], + 18, + ["literal", [0.15, 0.15]] + ] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" } + }, + { + "id": "tunnel-minor", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-color": ["match", ["get", "class"], "street_limited", "hsla(230, 34%, 71%, 0)", "hsl(215, 20%, 35%)"] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" } + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 13, "round"], "line-join": ["step", ["zoom"], "miter", 13, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "tunnel"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "tunnel-minor-link", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "id": "tunnel-major-link", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsl(205, 50%, 65%)", "hsl(225, 55%, 65%)"] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" } + }, + { + "id": "tunnel-street", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "street_limited", "hsla(230, 34%, 71%, 0)", "hsl(215, 20%, 35%)"], + "line-opacity": ["step", ["zoom"], 0, 14, 1] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" } + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" }, + "maxzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "tunnel-street-low", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "id": "tunnel-secondary-tertiary", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], "line-color": "hsl(215, 20%, 35%)" }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" } + }, + { + "id": "tunnel-primary", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["==", ["get", "structure"], "tunnel"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], "line-color": "hsl(215, 20%, 35%)" }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" } + }, + { + "id": "tunnel-motorway-trunk", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": ["match", ["get", "class"], "motorway", "hsl(205, 50%, 65%)", "hsl(225, 55%, 65%)"] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" } + }, + { + "minzoom": 16, + "layout": { + "symbol-placement": "line", + "icon-image": ["step", ["zoom"], "oneway-small", 18, "oneway-large"], + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-allow-overlap": true, + "icon-ignore-placement": true + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" }, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["==", ["get", "oneway"], "true"], + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["primary", "secondary", "street", "street_limited", "tertiary"], true, false], + 16, + [ + "match", + ["get", "class"], + ["primary", "secondary", "tertiary", "street", "street_limited", "primary_link", "secondary_link", "tertiary_link", "service", "track"], + true, + false + ] + ] + ], + "type": "symbol", + "source": "composite", + "id": "tunnel-oneway-arrow-blue", + "paint": {}, + "source-layer": "road" + }, + { + "minzoom": 16, + "layout": { + "symbol-placement": "line", + "icon-image": ["step", ["zoom"], "oneway-white-small", 18, "oneway-white-large"], + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-allow-overlap": true, + "icon-ignore-placement": true + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, tunnels" }, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway", "motorway_link", "trunk", "trunk_link"], true, false], + ["==", ["get", "oneway"], "true"] + ], + "type": "symbol", + "source": "composite", + "id": "tunnel-oneway-arrow-white", + "paint": {}, + "source-layer": "road" + }, + { + "id": "ferry", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 8, + "filter": ["==", ["get", "type"], "ferry"], + "paint": { + "line-color": ["interpolate", ["linear"], ["zoom"], 15, "hsl(194, 83%, 28%)", 17, "hsl(219, 83%, 28%)"], + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.5, 20, 1], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 13, ["literal", [12, 4]]] + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, ferries" } + }, + { + "id": "ferry-auto", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 8, + "filter": ["==", ["get", "type"], "ferry_auto"], + "paint": { + "line-color": ["interpolate", ["linear"], ["zoom"], 15, "hsl(194, 83%, 28%)", 17, "hsl(219, 83%, 28%)"], + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.5, 20, 1] + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, ferries" } + }, + { + "id": "road-polygon", + "type": "fill", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + [ + "match", + ["get", "class"], + [ + "primary", + "secondary", + "tertiary", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk", + "trunk_link", + "street", + "street_limited", + "track", + "service" + ], + true, + false + ], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "Polygon"] + ], + "paint": { "fill-color": "hsl(215, 20%, 35%)", "fill-outline-color": "hsla(217, 11%, 32%, 0)" }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" } + }, + { + "id": "turning-feature-outline", + "type": "circle", + "source": "composite", + "source-layer": "road", + "minzoom": 15, + "filter": ["all", ["match", ["get", "class"], ["turning_circle", "turning_loop"], true, false], ["==", ["geometry-type"], "Point"]], + "paint": { + "circle-radius": ["interpolate", ["exponential", 1.5], ["zoom"], 15, 4.5, 16, 8, 18, 20, 22, 200], + "circle-color": "hsl(215, 20%, 35%)", + "circle-stroke-width": ["interpolate", ["linear"], ["zoom"], 15, 0.8, 16, 1.2, 18, 2], + "circle-stroke-color": "hsla(217, 11%, 32%, 0)", + "circle-pitch-alignment": "map" + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" } + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100] + }, + "source-layer": "road" + }, + { + "minzoom": 14, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-street-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-opacity": ["step", ["zoom"], 0, 14, 1] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-opacity": ["step", ["zoom"], 0, 11, 1] + }, + "source-layer": "road" + }, + { + "minzoom": 11, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-secondary-tertiary-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260] + }, + "source-layer": "road" + }, + { + "minzoom": 9, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["==", ["get", "class"], "primary"], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-primary-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280] + }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-major-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 44%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-opacity": ["step", ["zoom"], 0, 11, 1] + }, + "source-layer": "road" + }, + { + "minzoom": 3, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + 5, + ["all", ["match", ["get", "class"], ["motorway", "trunk"], true, false], ["match", ["get", "structure"], ["none", "ford"], true, false]] + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-motorway-trunk-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 11%, 44%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 3, 0, 3.5, 1] + }, + "source-layer": "road" + }, + { + "id": "turning-feature", + "type": "circle", + "source": "composite", + "source-layer": "road", + "minzoom": 15, + "filter": ["all", ["match", ["get", "class"], ["turning_circle", "turning_loop"], true, false], ["==", ["geometry-type"], "Point"]], + "paint": { + "circle-radius": ["interpolate", ["exponential", 1.5], ["zoom"], 15, 4.5, 16, 8, 18, 20, 22, 200], + "circle-color": "hsl(215, 20%, 35%)", + "circle-pitch-alignment": "map" + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" } + }, + { + "id": "road-construction", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + ["==", ["get", "class"], "construction"], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 2, 18, 20, 22, 200], + "line-color": "hsl(215, 20%, 35%)", + "line-dasharray": [ + "step", + ["zoom"], + ["literal", [0.4, 0.8]], + 15, + ["literal", [0.3, 0.6]], + 16, + ["literal", [0.2, 0.3]], + 17, + ["literal", [0.2, 0.25]], + 18, + ["literal", [0.15, 0.15]] + ] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" } + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { "line-cap": ["step", ["zoom"], "butt", 13, "round"], "line-join": ["step", ["zoom"], "miter", 13, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor-link", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { "line-cap": ["step", ["zoom"], "butt", 13, "round"], "line-join": ["step", ["zoom"], "miter", 13, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-major-link", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsl(205, 43%, 55%)", "hsl(225, 56%, 55%)"] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-street", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "street_limited", "hsla(230, 34%, 71%, 0)", "hsl(215, 20%, 35%)"], + "line-opacity": ["step", ["zoom"], 0, 14, 1] + }, + "source-layer": "road" + }, + { + "minzoom": 11, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "maxzoom": 14, + "filter": [ + "all", + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-street-low", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 8, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-secondary-tertiary", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 6, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + ["==", ["get", "class"], "primary"], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-primary", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 3, + "layout": { "line-cap": ["step", ["zoom"], "butt", 13, "round"], "line-join": ["step", ["zoom"], "miter", 13, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface" }, + "filter": [ + "all", + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + 5, + ["all", ["match", ["get", "class"], ["motorway", "trunk"], true, false], ["match", ["get", "structure"], ["none", "ford"], true, false]] + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-motorway-trunk", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": [ + "step", + ["zoom"], + ["match", ["get", "class"], "motorway", "hsl(205, 65%, 49%)", "trunk", "hsl(225, 58%, 39%)", "hsla(230, 31%, 74%, 0)"], + 9, + ["match", ["get", "class"], "motorway", "hsl(205, 43%, 55%)", "hsl(225, 56%, 55%)"] + ], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 3, 0, 3.5, 1] + }, + "source-layer": "road" + }, + { + "id": "road-rail", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["match", ["get", "class"], ["major_rail", "minor_rail"], true, false], ["match", ["get", "structure"], ["none", "ford"], true, false]], + "paint": { + "line-color": ["interpolate", ["linear"], ["zoom"], 13, "hsla(245, 37%, 59%, 0)", 16, "hsla(217, 0%, 47%, 0)"], + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.5, 20, 1] + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, surface" } + }, + { + "id": "road-rail-tracks", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["match", ["get", "class"], ["major_rail", "minor_rail"], true, false], ["match", ["get", "structure"], ["none", "ford"], true, false]], + "paint": { + "line-color": ["interpolate", ["linear"], ["zoom"], 13, "hsla(245, 37%, 59%, 0)", 16, "hsla(217, 0%, 47%, 0)"], + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 4, 20, 8], + "line-dasharray": [0.1, 15], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13.75, 0, 14, 1] + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, surface" } + }, + { + "minzoom": 16, + "layout": { "icon-image": "level-crossing", "icon-rotation-alignment": "map", "icon-allow-overlap": true, "icon-ignore-placement": true }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface-icons" }, + "filter": ["==", ["get", "class"], "level_crossing"], + "type": "symbol", + "source": "composite", + "id": "level-crossing", + "paint": {}, + "source-layer": "road" + }, + { + "minzoom": 16, + "layout": { + "symbol-placement": "line", + "icon-image": ["step", ["zoom"], "oneway-small", 18, "oneway-large"], + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-allow-overlap": true, + "icon-ignore-placement": true + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface-icons" }, + "filter": [ + "all", + ["==", ["get", "oneway"], "true"], + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["primary", "secondary", "tertiary", "street", "street_limited"], true, false], + 16, + [ + "match", + ["get", "class"], + ["primary", "secondary", "tertiary", "street", "street_limited", "primary_link", "secondary_link", "tertiary_link", "service", "track"], + true, + false + ] + ], + ["match", ["get", "structure"], ["none", "ford"], true, false] + ], + "type": "symbol", + "source": "composite", + "id": "road-oneway-arrow-blue", + "paint": {}, + "source-layer": "road" + }, + { + "minzoom": 16, + "layout": { + "symbol-placement": "line", + "icon-image": ["step", ["zoom"], "oneway-white-small", 18, "oneway-white-large"], + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-allow-overlap": true, + "icon-ignore-placement": true + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface-icons" }, + "filter": [ + "all", + ["==", ["get", "oneway"], "true"], + ["match", ["get", "class"], ["motorway", "trunk", "motorway_link", "trunk_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false] + ], + "type": "symbol", + "source": "composite", + "id": "road-oneway-arrow-white", + "paint": {}, + "source-layer": "road" + }, + { + "minzoom": 17, + "layout": { + "icon-size": ["interpolate", ["linear"], ["zoom"], 16, 0.1, 18, 0.2, 19, 0.5, 22, 1.5], + "icon-image": ["step", ["zoom"], "crosswalk-small", 18, "crosswalk-large"], + "icon-rotate": ["get", "direction"], + "icon-rotation-alignment": "map", + "icon-allow-overlap": true, + "icon-ignore-placement": true + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, surface-icons" }, + "filter": ["all", ["==", ["get", "type"], "crosswalk"], ["==", ["geometry-type"], "Point"]], + "type": "symbol", + "source": "composite", + "id": "crosswalks", + "paint": {}, + "source-layer": "structure" + }, + { + "minzoom": 16, + "layout": {}, + "metadata": { "mapbox:featureComponent": "walking-cycling", "mapbox:group": "Walking, cycling, etc., barriers-bridges" }, + "filter": ["match", ["get", "class"], ["gate", "fence", "hedge"], true, false], + "type": "line", + "source": "composite", + "id": "gate-fence-hedge", + "paint": { + "line-color": ["match", ["get", "class"], "hedge", "hsl(175, 50%, 64%)", "hsla(230, 37%, 54%, 0)"], + "line-width": ["interpolate", ["linear"], ["zoom"], 16, 1, 20, 3], + "line-opacity": ["match", ["get", "class"], "gate", 0.5, 1], + "line-dasharray": [1, 2, 5, 2, 1, 2] + }, + "source-layer": "structure" + }, + { + "minzoom": 16, + "layout": { "icon-image": ["match", ["get", "type"], "gate", "gate", "lift_gate", "lift-gate", ""] }, + "metadata": { "mapbox:featureComponent": "walking-cycling", "mapbox:group": "Walking, cycling, etc., barriers-bridges" }, + "filter": ["==", ["get", "class"], "gate"], + "type": "symbol", + "source": "composite", + "id": "gate-label", + "paint": {}, + "source-layer": "structure" + }, + { + "id": "bridge-minor-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "id": "bridge-street-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-opacity": ["step", ["zoom"], 0, 14, 1] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "minzoom": 13, + "layout": { "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "bridge"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-minor-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-opacity": ["step", ["zoom"], 0, 11, 1] + }, + "source-layer": "road" + }, + { + "id": "bridge-secondary-tertiary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-opacity": ["step", ["zoom"], 0, 10, 1] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "id": "bridge-primary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 9, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-opacity": ["step", ["zoom"], 0, 10, 1] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "id": "bridge-major-link-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 44%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "id": "bridge-motorway-trunk-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 11%, 44%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "id": "bridge-construction", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["==", ["get", "class"], "construction"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 2, 18, 20, 22, 200], + "line-color": "hsla(217, 11%, 32%, 0)", + "line-dasharray": [ + "step", + ["zoom"], + ["literal", [0.4, 0.8]], + 15, + ["literal", [0.3, 0.6]], + 16, + ["literal", [0.2, 0.3]], + 17, + ["literal", [0.2, 0.25]], + 18, + ["literal", [0.15, 0.15]] + ] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-minor", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": "round" }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "bridge"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-minor-link", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { "line-cap": "round" }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-major-link", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsl(205, 43%, 55%)", "hsl(225, 56%, 55%)"] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-street", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "street_limited", "hsla(230, 34%, 71%, 0)", "hsl(215, 20%, 35%)"], + "line-opacity": ["step", ["zoom"], 0, 14, 1] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"], "line-join": ["step", ["zoom"], "miter", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "maxzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-street-low", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-secondary-tertiary", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "type": "line", + "source": "composite", + "id": "bridge-primary", + "paint": { "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], "line-color": "hsl(215, 20%, 35%)" }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": "round" }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-motorway-trunk", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": ["match", ["get", "class"], "motorway", "hsl(205, 43%, 55%)", "hsl(225, 56%, 55%)"] + }, + "source-layer": "road" + }, + { + "id": "bridge-major-link-2-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(217, 11%, 44%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "id": "bridge-motorway-trunk-2-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(217, 11%, 44%, 0)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" } + }, + { + "minzoom": 12, + "layout": { "line-cap": "round" }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-major-link-2", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsl(205, 43%, 55%)", "hsl(225, 56%, 55%)"] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { "line-cap": ["step", ["zoom"], "butt", 14, "round"] }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-motorway-trunk-2", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": ["match", ["get", "class"], "motorway", "hsl(205, 43%, 55%)", "hsl(225, 56%, 55%)"] + }, + "source-layer": "road" + }, + { + "minzoom": 16, + "layout": { + "symbol-placement": "line", + "icon-image": ["step", ["zoom"], "oneway-small", 18, "oneway-large"], + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-allow-overlap": true, + "icon-ignore-placement": true + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["==", ["get", "oneway"], "true"], + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["primary", "secondary", "tertiary", "street", "street_limited"], true, false], + 16, + [ + "match", + ["get", "class"], + ["primary", "secondary", "tertiary", "street", "street_limited", "primary_link", "secondary_link", "tertiary_link", "service", "track"], + true, + false + ] + ] + ], + "type": "symbol", + "source": "composite", + "id": "bridge-oneway-arrow-blue", + "paint": {}, + "source-layer": "road" + }, + { + "minzoom": 16, + "layout": { + "symbol-placement": "line", + "icon-image": "oneway-white-small", + "symbol-spacing": 200, + "icon-rotation-alignment": "map", + "icon-allow-overlap": true, + "icon-ignore-placement": true + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, bridges" }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway", "trunk", "motorway_link", "trunk_link"], true, false], + ["==", ["get", "oneway"], "true"] + ], + "type": "symbol", + "source": "composite", + "id": "bridge-oneway-arrow-white", + "paint": {}, + "source-layer": "road" + }, + { + "id": "bridge-rail", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["match", ["get", "class"], ["major_rail", "minor_rail"], true, false]], + "paint": { + "line-color": ["interpolate", ["linear"], ["zoom"], 13, "hsla(245, 37%, 59%, 0)", 16, "hsla(217, 0%, 47%, 0)"], + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.5, 20, 1] + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, bridges" } + }, + { + "id": "bridge-rail-tracks", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["match", ["get", "class"], ["major_rail", "minor_rail"], true, false]], + "paint": { + "line-color": ["interpolate", ["linear"], ["zoom"], 13, "hsla(245, 37%, 59%, 0)", 16, "hsla(217, 0%, 47%, 0)"], + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 4, 20, 8], + "line-dasharray": [0.1, 15], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13.75, 0, 14, 1] + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, bridges" } + }, + { + "id": "aerialway", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": ["==", ["get", "class"], "aerialway"], + "paint": { "line-color": "hsl(230, 54%, 85%)", "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 20, 2], "line-dasharray": [4, 1] }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, elevated" } + }, + { + "minzoom": 7, + "layout": {}, + "metadata": { "mapbox:featureComponent": "admin-boundaries", "mapbox:group": "Administrative boundaries, admin" }, + "filter": ["all", ["==", ["get", "admin_level"], 1], ["==", ["get", "maritime"], "false"], ["match", ["get", "worldview"], ["all", "CN"], true, false]], + "type": "line", + "source": "composite", + "id": "admin-1-boundary-bg", + "paint": { + "line-color": "hsl(250, 30%, 79%)", + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 3, 12, 6], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 7, 0, 8, 0.5], + "line-dasharray": [1, 0], + "line-blur": ["interpolate", ["linear"], ["zoom"], 3, 0, 12, 3] + }, + "source-layer": "admin" + }, + { + "minzoom": 1, + "layout": {}, + "metadata": { "mapbox:featureComponent": "admin-boundaries", "mapbox:group": "Administrative boundaries, admin" }, + "filter": ["all", ["==", ["get", "admin_level"], 0], ["==", ["get", "maritime"], "false"], ["match", ["get", "worldview"], ["all", "CN"], true, false]], + "type": "line", + "source": "composite", + "id": "admin-0-boundary-bg", + "paint": { + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 4, 12, 8], + "line-color": "hsla(251, 31%, 79%, 0)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 3, 0, 4, 0.5], + "line-blur": ["interpolate", ["linear"], ["zoom"], 3, 0, 12, 2] + }, + "source-layer": "admin" + }, + { + "minzoom": 2, + "layout": {}, + "metadata": { "mapbox:featureComponent": "admin-boundaries", "mapbox:group": "Administrative boundaries, admin" }, + "filter": ["all", ["==", ["get", "admin_level"], 1], ["==", ["get", "maritime"], "false"], ["match", ["get", "worldview"], ["all", "CN"], true, false]], + "type": "line", + "source": "composite", + "id": "admin-1-boundary", + "paint": { + "line-dasharray": ["step", ["zoom"], ["literal", [2, 0]], 7, ["literal", [2, 2, 6, 2]]], + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 0.5, 12, 1.5], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 2, 0, 3, 1], + "line-color": "hsl(215, 76%, 58%)" + }, + "source-layer": "admin" + }, + { + "minzoom": 1, + "layout": { "line-join": "round" }, + "metadata": { "mapbox:featureComponent": "admin-boundaries", "mapbox:group": "Administrative boundaries, admin" }, + "filter": [ + "all", + ["==", ["get", "admin_level"], 0], + ["==", ["get", "disputed"], "false"], + ["==", ["get", "maritime"], "false"], + ["match", ["get", "worldview"], ["all", "CN"], true, false] + ], + "type": "line", + "source": "composite", + "id": "admin-0-boundary", + "paint": { "line-color": "hsl(205, 50%, 45%)", "line-width": ["interpolate", ["linear"], ["zoom"], 2, 1.5, 12, 1.5], "line-dasharray": [10, 0] }, + "source-layer": "admin" + }, + { + "minzoom": 1, + "layout": {}, + "metadata": { "mapbox:featureComponent": "admin-boundaries", "mapbox:group": "Administrative boundaries, admin" }, + "filter": [ + "all", + ["==", ["get", "disputed"], "true"], + ["==", ["get", "admin_level"], 0], + ["==", ["get", "maritime"], "false"], + ["match", ["get", "worldview"], ["all", "CN"], true, false] + ], + "type": "line", + "source": "composite", + "id": "admin-0-boundary-disputed", + "paint": { + "line-color": "hsl(250, 10%, 65%)", + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 0.5, 12, 2], + "line-dasharray": ["step", ["zoom"], ["literal", [3, 2, 5]], 7, ["literal", [2, 1.5]]] + }, + "source-layer": "admin" + }, + { + "minzoom": 10, + "layout": { + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 10, + [ + "match", + ["get", "class"], + ["motorway", "trunk", "primary", "secondary", "tertiary"], + 11, + ["motorway_link", "trunk_link", "primary_link", "secondary_link", "tertiary_link", "street", "street_limited"], + 9.9, + 7.15 + ], + 18, + [ + "match", + ["get", "class"], + ["motorway", "trunk", "primary", "secondary", "tertiary"], + 17.6, + ["motorway_link", "trunk_link", "primary_link", "secondary_link", "tertiary_link", "street", "street_limited"], + 15.400000000000002, + 14.3 + ] + ], + "text-max-angle": 30, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-letter-spacing": 0.01 + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, road-labels" }, + "filter": [ + "all", + ["has", "name"], + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["motorway", "trunk", "primary", "secondary", "tertiary"], true, false], + 12, + ["match", ["get", "class"], ["motorway", "trunk", "primary", "secondary", "tertiary", "street", "street_limited"], true, false], + 15, + ["match", ["get", "class"], ["path", "pedestrian", "golf", "ferry", "aerialway"], false, true] + ] + ], + "type": "symbol", + "source": "composite", + "id": "road-label", + "paint": { + "text-color": "#e6e6e6", + "text-halo-color": ["match", ["get", "class"], ["motorway", "trunk"], "hsla(230, 37%, 63%, 0.75)", "hsla(230, 37%, 63%, 0)"], + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "road" + }, + { + "minzoom": 15, + "layout": { + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "icon-image": "intersection", + "icon-text-fit": "both", + "icon-text-fit-padding": [1, 2, 1, 2], + "text-size": ["interpolate", ["exponential", 1.2], ["zoom"], 15, 9, 18, 12], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, road-labels" }, + "filter": ["all", ["==", ["get", "class"], "intersection"], ["has", "name"]], + "type": "symbol", + "source": "composite", + "id": "road-intersection", + "paint": { "text-color": "hsl(230, 40%, 52%)" }, + "source-layer": "road" + }, + { + "minzoom": 6, + "layout": { + "text-size": 9, + "icon-image": [ + "case", + ["has", "shield_beta"], + [ + "coalesce", + ["image", ["concat", ["get", "shield_beta"], "-", ["to-string", ["get", "reflen"]]]], + ["image", ["concat", "default-", ["to-string", ["get", "reflen"]]]] + ], + ["concat", ["get", "shield"], "-", ["to-string", ["get", "reflen"]]] + ], + "icon-rotation-alignment": "viewport", + "text-max-angle": 38, + "symbol-spacing": ["interpolate", ["linear"], ["zoom"], 11, 1333.3333333333333, 14, 2000], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "symbol-placement": ["step", ["zoom"], "point", 11, "line"], + "text-rotation-alignment": "viewport", + "text-field": ["get", "ref"], + "text-letter-spacing": 0.05, + "icon-padding": 6.66667 + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, road-labels" }, + "filter": [ + "all", + ["has", "reflen"], + ["<=", ["get", "reflen"], 6], + ["match", ["get", "class"], ["pedestrian", "service"], false, true], + [ + "step", + ["zoom"], + ["==", ["geometry-type"], "Point"], + 11, + [">", ["get", "len"], 5000], + 12, + [">", ["get", "len"], 2500], + 13, + [">", ["get", "len"], 1000], + 14, + true + ] + ], + "type": "symbol", + "source": "composite", + "id": "road-number-shield", + "paint": { + "text-color": [ + "case", + [ + "all", + ["has", "shield_text_color_beta"], + ["to-boolean", ["coalesce", ["image", ["concat", ["get", "shield_beta"], "-", ["to-string", ["get", "reflen"]]]], ""]] + ], + [ + "match", + ["get", "shield_text_color_beta"], + "white", + "hsl(0, 0%, 78%)", + "yellow", + "hsl(50, 70%, 54%)", + "orange", + "hsl(25, 70%, 61%)", + "blue", + "hsl(230, 40%, 32%)", + "red", + "hsl(0, 61%, 46%)", + "green", + "hsl(140, 52%, 29%)", + "hsl(230, 13%, 10%)" + ], + [ + "match", + ["get", "shield_text_color"], + "white", + "hsl(0, 0%, 78%)", + "yellow", + "hsl(50, 70%, 54%)", + "orange", + "hsl(25, 70%, 61%)", + "blue", + "hsl(230, 40%, 32%)", + "red", + "hsl(0, 61%, 46%)", + "green", + "hsl(140, 52%, 29%)", + "hsl(230, 13%, 10%)" + ] + ] + }, + "source-layer": "road" + }, + { + "minzoom": 14, + "layout": { + "text-field": ["get", "ref"], + "text-size": 9, + "icon-image": ["concat", "motorway-exit-", ["to-string", ["get", "reflen"]]], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"] + }, + "metadata": { "mapbox:featureComponent": "road-network", "mapbox:group": "Road network, road-labels" }, + "filter": ["all", ["has", "reflen"], ["<=", ["get", "reflen"], 9]], + "type": "symbol", + "source": "composite", + "id": "road-exit-shield", + "paint": { "text-color": "hsl(0, 0%, 78%)", "text-translate": [0, 0] }, + "source-layer": "motorway_junction" + }, + { + "minzoom": 15, + "layout": { + "text-size": ["interpolate", ["linear"], ["zoom"], 10, 8.450000000000001, 18, 16.900000000000002], + "text-max-angle": 30, + "text-font": ["DIN Pro Regular", "Arial Unicode MS Regular"], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-letter-spacing": 0.01 + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, ferry-aerialway-labels" }, + "filter": ["match", ["get", "class"], "aerialway", true, "ferry", true, false], + "type": "symbol", + "source": "composite", + "id": "ferry-aerialway-label", + "paint": { + "text-color": ["match", ["get", "class"], "ferry", "hsl(185, 58%, 70%)", "hsl(230, 54%, 85%)"], + "text-halo-color": ["match", ["get", "class"], "ferry", "hsl(185, 90%, 35%)", "hsla(230, 32%, 99%, 0)"], + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "text-font": ["DIN Pro Italic", "Arial Unicode MS Regular"], + "text-max-angle": 30, + "symbol-spacing": ["interpolate", ["linear", 1], ["zoom"], 15, 250, 17, 400], + "text-size": ["interpolate", ["linear"], ["zoom"], 13, 12, 18, 18], + "symbol-placement": "line", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]] + }, + "metadata": { "mapbox:featureComponent": "natural-features", "mapbox:group": "Natural features, natural-labels" }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["canal", "river", "stream", "disputed_canal", "disputed_river", "disputed_stream"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "symbol", + "source": "composite", + "id": "waterway-label", + "paint": { "text-color": "hsl(185, 58%, 90%)", "text-halo-color": "hsla(230, 29%, 62%, 0.5)" }, + "source-layer": "natural_label" + }, + { + "minzoom": 4, + "layout": { + "text-size": [ + "step", + ["zoom"], + ["step", ["get", "sizerank"], 19.8, 5, 13.200000000000001], + 17, + ["step", ["get", "sizerank"], 19.8, 13, 13.200000000000001] + ], + "text-max-angle": 30, + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "symbol-placement": "line-center", + "text-pitch-alignment": "viewport" + }, + "metadata": { "mapbox:featureComponent": "natural-features", "mapbox:group": "Natural features, natural-labels" }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["glacier", "landform", "disputed_glacier", "disputed_landform"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["<=", ["get", "filterrank"], 0], + ["==", ["geometry-type"], "LineString"] + ], + "type": "symbol", + "source": "composite", + "id": "natural-line-label", + "paint": { "text-halo-width": 0.5, "text-halo-color": "hsla(230, 29%, 62%, 0)", "text-halo-blur": 0.5, "text-color": "hsl(236, 50%, 95%)" }, + "source-layer": "natural_label" + }, + { + "minzoom": 4, + "layout": { + "text-size": [ + "step", + ["zoom"], + ["step", ["get", "sizerank"], 19.8, 5, 13.200000000000001], + 17, + ["step", ["get", "sizerank"], 19.8, 13, 13.200000000000001] + ], + "icon-image": ["get", "maki"], + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-offset": [ + "step", + ["zoom"], + ["step", ["get", "sizerank"], ["literal", [0, 0]], 5, ["literal", [0, 0.6499999999999999]]], + 17, + ["step", ["get", "sizerank"], ["literal", [0, 0]], 13, ["literal", [0, 0.75]]] + ], + "text-anchor": ["step", ["zoom"], ["step", ["get", "sizerank"], "center", 5, "top"], 17, ["step", ["get", "sizerank"], "center", 13, "top"]], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]] + }, + "metadata": { "mapbox:featureComponent": "natural-features", "mapbox:group": "Natural features, natural-labels" }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + [ + "dock", + "glacier", + "landform", + "water_feature", + "wetland", + "disputed_dock", + "disputed_glacier", + "disputed_landform", + "disputed_water_feature", + "disputed_wetland" + ], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["<=", ["get", "filterrank"], 0], + ["==", ["geometry-type"], "Point"] + ], + "type": "symbol", + "source": "composite", + "id": "natural-point-label", + "paint": { + "icon-opacity": ["step", ["zoom"], ["step", ["get", "sizerank"], 0, 5, 1], 17, ["step", ["get", "sizerank"], 0, 13, 1]], + "text-halo-color": "hsla(230, 32%, 99%, 0)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5, + "text-color": "hsl(236, 50%, 95%)" + }, + "source-layer": "natural_label" + }, + { + "minzoom": 1, + "layout": { + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + ["*", ["-", 16, ["sqrt", ["get", "sizerank"]]], 1], + 22, + ["*", ["-", 22, ["sqrt", ["get", "sizerank"]]], 1] + ], + "text-max-angle": 30, + "text-letter-spacing": ["match", ["get", "class"], "ocean", 0.25, ["sea", "bay"], 0.15, 0], + "text-font": ["DIN Pro Italic", "Arial Unicode MS Regular"], + "symbol-placement": "line-center", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]] + }, + "metadata": { "mapbox:featureComponent": "natural-features", "mapbox:group": "Natural features, natural-labels" }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["bay", "ocean", "reservoir", "sea", "water", "disputed_bay", "disputed_ocean", "disputed_reservoir", "disputed_sea", "disputed_water"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "symbol", + "source": "composite", + "id": "water-line-label", + "paint": { + "text-color": ["match", ["get", "class"], ["bay", "ocean", "sea"], "hsl(185, 86%, 55%)", "hsl(185, 58%, 90%)"], + "text-halo-color": "hsla(230, 29%, 62%, 0.5)" + }, + "source-layer": "natural_label" + }, + { + "minzoom": 1, + "layout": { + "text-line-height": 1.3, + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + ["*", ["-", 16, ["sqrt", ["get", "sizerank"]]], 1], + 22, + ["*", ["-", 22, ["sqrt", ["get", "sizerank"]]], 1] + ], + "text-font": ["DIN Pro Italic", "Arial Unicode MS Regular"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-letter-spacing": ["match", ["get", "class"], "ocean", 0.25, ["bay", "sea"], 0.15, 0.01], + "text-max-width": ["match", ["get", "class"], "ocean", 4, "sea", 5, ["bay", "water"], 7, 10] + }, + "metadata": { "mapbox:featureComponent": "natural-features", "mapbox:group": "Natural features, natural-labels" }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["bay", "ocean", "reservoir", "sea", "water", "disputed_bay", "disputed_ocean", "disputed_reservoir", "disputed_sea", "disputed_water"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["==", ["geometry-type"], "Point"] + ], + "type": "symbol", + "source": "composite", + "id": "water-point-label", + "paint": { + "text-color": ["match", ["get", "class"], ["bay", "ocean", "sea"], "hsl(185, 86%, 55%)", "hsl(185, 58%, 90%)"], + "text-halo-color": "hsla(230, 29%, 62%, 0.5)" + }, + "source-layer": "natural_label" + }, + { + "minzoom": 6, + "layout": { + "text-size": [ + "step", + ["zoom"], + ["step", ["get", "sizerank"], 19.8, 5, 13.200000000000001], + 17, + ["step", ["get", "sizerank"], 19.8, 13, 13.200000000000001] + ], + "icon-image": ["case", ["has", "maki_beta"], ["coalesce", ["image", ["get", "maki_beta"]], ["image", ["get", "maki"]]], ["image", ["get", "maki"]]], + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-offset": [ + "step", + ["zoom"], + ["step", ["get", "sizerank"], ["literal", [0, 0]], 5, ["literal", [0, 0.8999999999999999]]], + 17, + ["step", ["get", "sizerank"], ["literal", [0, 0]], 13, ["literal", [0, 0.8999999999999999]]] + ], + "text-anchor": ["step", ["zoom"], ["step", ["get", "sizerank"], "center", 5, "top"], 17, ["step", ["get", "sizerank"], "center", 13, "top"]], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "symbol-placement": "line" + }, + "metadata": { "mapbox:featureComponent": "point-of-interest-labels", "mapbox:group": "Point of interest labels, poi-labels" }, + "filter": [ + "<=", + ["get", "filterrank"], + ["+", ["step", ["zoom"], 0, 16, 1, 17, 2], ["match", ["get", "class"], "education", 1, "landmark", 2, "medical", 1, "motorist", 3, "park_like", 1, 0]] + ], + "type": "symbol", + "source": "composite", + "id": "poi-label", + "paint": { + "icon-opacity": ["step", ["zoom"], ["step", ["get", "sizerank"], 0, 5, 1], 17, ["step", ["get", "sizerank"], 0, 13, 1]], + "text-halo-color": "hsla(230, 32%, 99%, 0)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5, + "text-color": ["match", ["get", "class"], "park_like", "hsl(150, 50%, 85%)", "medical", "hsl(0, 50%, 85%)", "hsl(236, 50%, 95%)"] + }, + "source-layer": "poi_label" + }, + { + "minzoom": 8, + "layout": { + "text-line-height": 1.1, + "text-size": ["step", ["get", "sizerank"], 19.8, 9, 13.200000000000001], + "icon-image": ["get", "maki"], + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-offset": [0, 0.8999999999999999], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": [ + "step", + ["get", "sizerank"], + [ + "case", + ["has", "ref"], + ["concat", ["get", "ref"], " -\n", ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]]], + ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]] + ], + 15, + ["get", "ref"] + ], + "text-letter-spacing": 0.01, + "text-max-width": 9 + }, + "metadata": { "mapbox:featureComponent": "transit", "mapbox:group": "Transit, transit-labels" }, + "filter": [ + "match", + ["get", "class"], + ["military", "civil", "disputed_military", "disputed_civil"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + "type": "symbol", + "source": "composite", + "id": "airport-label", + "paint": { "text-color": "hsl(230, 77%, 60%)", "text-halo-color": "hsla(230, 32%, 99%, 0)", "text-halo-width": 1 }, + "source-layer": "airport_label" + }, + { + "minzoom": 10, + "layout": { + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-transform": "uppercase", + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-letter-spacing": ["match", ["get", "type"], "suburb", 0.15, 0.05], + "text-max-width": 7, + "text-padding": 3, + "text-size": [ + "interpolate", + ["cubic-bezier", 0.5, 0, 1, 1], + ["zoom"], + 11, + ["match", ["get", "type"], "suburb", 12.100000000000001, 11.55], + 15, + ["match", ["get", "type"], "suburb", 16.5, 15.400000000000002] + ] + }, + "metadata": { "mapbox:featureComponent": "place-labels", "mapbox:group": "Place labels, place-labels" }, + "maxzoom": 15, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["settlement_subdivision", "disputed_settlement_subdivision"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["<=", ["get", "filterrank"], 1] + ], + "type": "symbol", + "source": "composite", + "id": "settlement-subdivision-label", + "paint": { "text-halo-color": "hsla(230, 37%, 63%, 0.75)", "text-halo-width": 1, "text-color": "hsl(215, 28%, 100%)", "text-halo-blur": 0.5 }, + "source-layer": "place_label" + }, + { + "minzoom": 2, + "layout": { + "text-line-height": 1.1, + "text-size": [ + "interpolate", + ["cubic-bezier", 0.2, 0, 0.9, 1], + ["zoom"], + 3, + ["step", ["get", "symbolrank"], 12.100000000000001, 9, 11], + 6, + ["step", ["get", "symbolrank"], 15.400000000000002, 9, 13.200000000000001, 12, 11], + 8, + ["step", ["get", "symbolrank"], 17.6, 9, 15.400000000000002, 12, 13.200000000000001, 15, 11], + 13, + ["step", ["get", "symbolrank"], 24.200000000000003, 9, 22, 12, 17.6, 15, 15.400000000000002] + ], + "text-radial-offset": ["step", ["zoom"], ["match", ["get", "capital"], 2, 0.6, 0.55], 8, 0], + "symbol-sort-key": ["get", "symbolrank"], + "icon-image": [ + "step", + ["zoom"], + ["case", ["==", ["get", "capital"], 2], "border-dot-13", ["step", ["get", "symbolrank"], "dot-11", 9, "dot-10", 11, "dot-9"]], + 8, + "" + ], + "text-font": ["DIN Pro Regular", "Arial Unicode MS Regular"], + "text-justify": "auto", + "text-anchor": ["step", ["zoom"], ["get", "text_anchor"], 8, "center"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-max-width": 7 + }, + "metadata": { "mapbox:featureComponent": "place-labels", "mapbox:group": "Place labels, place-labels" }, + "maxzoom": 13, + "filter": [ + "all", + ["<=", ["get", "filterrank"], 1], + ["match", ["get", "class"], ["settlement", "disputed_settlement"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + [ + "step", + ["zoom"], + [">", ["get", "symbolrank"], 6], + 4, + [">=", ["get", "symbolrank"], 7], + 6, + [">=", ["get", "symbolrank"], 8], + 7, + [">=", ["get", "symbolrank"], 10], + 10, + [">=", ["get", "symbolrank"], 11], + 11, + [">=", ["get", "symbolrank"], 13], + 12, + [">=", ["get", "symbolrank"], 15] + ] + ], + "type": "symbol", + "source": "composite", + "id": "settlement-minor-label", + "paint": { "text-color": "hsl(215, 28%, 93%)", "text-halo-color": "hsla(230, 37%, 63%, 0)", "text-halo-width": 1, "text-halo-blur": 1 }, + "source-layer": "place_label" + }, + { + "minzoom": 2, + "layout": { + "text-line-height": 1.1, + "text-size": [ + "interpolate", + ["cubic-bezier", 0.2, 0, 0.9, 1], + ["zoom"], + 3, + ["step", ["get", "symbolrank"], 16.900000000000002, 6, 14.3], + 6, + ["step", ["get", "symbolrank"], 23.400000000000002, 6, 20.8, 7, 18.2], + 8, + ["step", ["get", "symbolrank"], 26, 9, 20.8, 10, 18.2], + 15, + ["step", ["get", "symbolrank"], 31.200000000000003, 9, 26, 12, 20.8, 15, 18.2] + ], + "text-radial-offset": ["step", ["zoom"], ["match", ["get", "capital"], 2, 0.6, 0.55], 8, 0], + "symbol-sort-key": ["get", "symbolrank"], + "icon-image": [ + "step", + ["zoom"], + ["case", ["==", ["get", "capital"], 2], "border-dot-13", ["step", ["get", "symbolrank"], "dot-11", 9, "dot-10", 11, "dot-9"]], + 8, + "" + ], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Regular"], + "text-justify": [ + "step", + ["zoom"], + ["match", ["get", "text_anchor"], ["left", "bottom-left", "top-left"], "left", ["right", "bottom-right", "top-right"], "right", "center"], + 8, + "center" + ], + "text-anchor": ["step", ["zoom"], ["get", "text_anchor"], 8, "center"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-max-width": 7 + }, + "metadata": { "mapbox:featureComponent": "place-labels", "mapbox:group": "Place labels, place-labels" }, + "maxzoom": 15, + "filter": [ + "all", + ["<=", ["get", "filterrank"], 1], + ["match", ["get", "class"], ["settlement", "disputed_settlement"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + [ + "step", + ["zoom"], + false, + 2, + ["<=", ["get", "symbolrank"], 6], + 4, + ["<", ["get", "symbolrank"], 7], + 6, + ["<", ["get", "symbolrank"], 8], + 7, + ["<", ["get", "symbolrank"], 10], + 10, + ["<", ["get", "symbolrank"], 11], + 11, + ["<", ["get", "symbolrank"], 13], + 12, + ["<", ["get", "symbolrank"], 15], + 13, + [">=", ["get", "symbolrank"], 11], + 14, + [">=", ["get", "symbolrank"], 15] + ] + ], + "type": "symbol", + "source": "composite", + "id": "settlement-major-label", + "paint": { "text-color": "hsl(215, 28%, 93%)", "text-halo-color": "hsla(230, 37%, 63%, 0)", "text-halo-width": 1, "text-halo-blur": 1 }, + "source-layer": "place_label" + }, + { + "minzoom": 3, + "layout": { + "text-size": [ + "interpolate", + ["cubic-bezier", 0.85, 0.7, 0.65, 1], + ["zoom"], + 4, + ["step", ["get", "symbolrank"], 10.799999999999999, 6, 9.6, 7, 8.4], + 9, + ["step", ["get", "symbolrank"], 25.2, 6, 19.2, 7, 16.8] + ], + "text-transform": "uppercase", + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-letter-spacing": 0.15, + "text-max-width": 6 + }, + "metadata": { "mapbox:featureComponent": "place-labels", "mapbox:group": "Place labels, place-labels" }, + "maxzoom": 9, + "filter": ["match", ["get", "class"], ["state", "disputed_state"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + "type": "symbol", + "source": "composite", + "id": "state-label", + "paint": { "text-color": "hsl(215, 28%, 93%)", "text-halo-color": "hsla(230, 37%, 63%, 0)", "text-halo-width": 1, "text-opacity": 0.5 }, + "source-layer": "place_label" + }, + { + "minzoom": 1, + "layout": { + "icon-image": "", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-line-height": 1.1, + "text-max-width": 6, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-radial-offset": ["step", ["zoom"], 0.6, 8, 0], + "text-justify": [ + "step", + ["zoom"], + ["match", ["get", "text_anchor"], ["left", "bottom-left", "top-left"], "left", ["right", "bottom-right", "top-right"], "right", "center"], + 7, + "auto" + ], + "text-size": [ + "interpolate", + ["cubic-bezier", 0.2, 0, 0.7, 1], + ["zoom"], + 1, + ["step", ["get", "symbolrank"], 12.1, 4, 9.9, 5, 8.8], + 9, + ["step", ["get", "symbolrank"], 30.799999999999997, 4, 26.599999999999998, 5, 23.799999999999997] + ] + }, + "metadata": { "mapbox:featureComponent": "place-labels", "mapbox:group": "Place labels, place-labels" }, + "maxzoom": 10, + "filter": ["match", ["get", "class"], ["country", "disputed_country"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + "type": "symbol", + "source": "composite", + "id": "country-label", + "paint": { + "icon-opacity": ["step", ["zoom"], ["case", ["has", "text_anchor"], 1, 0], 7, 0], + "text-color": "hsl(215, 28%, 93%)", + "text-halo-color": ["interpolate", ["linear"], ["zoom"], 2, "hsla(230, 37%, 63%, 0.75)", 3, "hsla(230, 37%, 63%, 0)"], + "text-halo-width": 1.25 + }, + "source-layer": "place_label" + }, + { + "minzoom": 0.75, + "layout": { + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-line-height": 1.1, + "text-max-width": 6, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-size": ["interpolate", ["exponential", 0.5], ["zoom"], 0, 10, 2.5, 15], + "text-transform": "uppercase", + "text-letter-spacing": 0.05 + }, + "metadata": { "mapbox:featureComponent": "place-labels", "mapbox:group": "Place labels, place-labels" }, + "maxzoom": 3, + "filter": ["==", ["get", "class"], "continent"], + "type": "symbol", + "source": "composite", + "id": "continent-label", + "paint": { + "text-color": "hsl(215, 28%, 93%)", + "text-halo-color": ["interpolate", ["linear"], ["zoom"], 0, "hsla(230, 37%, 63%, 0.75)", 3, "hsla(230, 37%, 63%, 0)"], + "text-halo-width": 1.5, + "text-opacity": ["interpolate", ["linear"], ["zoom"], 0, 0.8, 1.5, 0.5, 2.5, 0] + }, + "source-layer": "natural_label" + } + ], + "created": "2022-11-11T07:06:36.814Z", + "modified": "2022-11-15T10:20:07.721Z", + "id": "clac5oby2000c14o27c4d529k", + "owner": "Vothing", + "visibility": "private", + "protected": false, + "draft": false +} diff --git a/public/ref/style/satellite.json b/public/ref/style/satellite.json new file mode 100644 index 0000000..7d1bf9b --- /dev/null +++ b/public/ref/style/satellite.json @@ -0,0 +1,2631 @@ +{ + "version": 8, + "name": "影像注记", + "metadata": { + "mapbox:type": "default", + "mapbox:origin": "satellite-streets-v12", + "mapbox:sdk-support": { + "android": "10.6.0", + "ios": "10.6.0", + "js": "2.9.0" + }, + "mapbox:autocomposite": true, + "mapbox:groups": { + "Transit, transit-labels": { + "name": "Transit, transit-labels", + "collapsed": true + }, + "Administrative boundaries, admin": { + "name": "Administrative boundaries, admin", + "collapsed": true + }, + "Road network, bridges": { + "name": "Road network, bridges", + "collapsed": true + }, + "Road network, tunnels": { + "name": "Road network, tunnels", + "collapsed": true + }, + "Road network, road-labels": { + "name": "Road network, road-labels", + "collapsed": true + }, + "Natural features, natural-labels": { + "name": "Natural features, natural-labels", + "collapsed": true + }, + "Road network, surface": { + "name": "Road network, surface", + "collapsed": true + }, + "Walking, cycling, etc., barriers-bridges": { + "name": "Walking, cycling, etc., barriers-bridges", + "collapsed": true + }, + "Place labels, place-labels": { + "name": "Place labels, place-labels", + "collapsed": true + }, + "Transit, elevated": { + "name": "Transit, elevated", + "collapsed": true + }, + "Point of interest labels, poi-labels": { + "name": "Point of interest labels, poi-labels", + "collapsed": true + }, + "Walking, cycling, etc., tunnels": { + "name": "Walking, cycling, etc., tunnels", + "collapsed": true + }, + "Road network, tunnels-case": { + "name": "Road network, tunnels-case", + "collapsed": true + }, + "Walking, cycling, etc., walking-cycling-labels": { + "name": "Walking, cycling, etc., walking-cycling-labels", + "collapsed": true + }, + "Walking, cycling, etc., surface": { + "name": "Walking, cycling, etc., surface", + "collapsed": true + }, + "Satellite imagery, land": { + "name": "Satellite imagery, land", + "collapsed": true + }, + "Transit, ferry-aerialway-labels": { + "name": "Transit, ferry-aerialway-labels", + "collapsed": true + } + } + }, + "center": [116.40446932693203, 39.9209801377464], + "zoom": 19.393526793882586, + "bearing": 11.200000000000273, + "pitch": 41.99999999999993, + "fog": { + "range": [1, 10], + "color": ["interpolate", ["exponential", 1.2], ["zoom"], 5.5, "hsl(240, 12%, 70%)", 6, "hsl(0, 0%, 100%)"], + "high-color": ["interpolate", ["exponential", 1.2], ["zoom"], 5.5, "hsl(240, 12%, 7%)", 6, "hsl(38, 63%, 84%)"], + "space-color": ["interpolate", ["exponential", 1.2], ["zoom"], 5.5, "hsl(240, 12%, 9%)", 6, "hsl(199, 61%, 80%)"], + "horizon-blend": ["interpolate", ["exponential", 1.2], ["zoom"], 5.5, 0.008, 6, 0.15], + "star-intensity": ["interpolate", ["exponential", 1.2], ["zoom"], 5.5, 0.1, 6, 0] + }, + "sources": { + "mapbox://mapbox.satellite": { + "url": "mapbox://mapbox.satellite", + "type": "raster", + "tileSize": 256 + }, + "composite": { + "url": "mapbox://mapbox.mapbox-streets-v8", + "type": "vector" + } + }, + "sprite": "mapbox://sprites/mapbox/satellite-v9", + "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", + "projection": { + "name": "globe" + }, + "layers": [ + { + "id": "background", + "type": "background", + "layout": {}, + "paint": { + "background-color": "hsl(222, 56%, 4%)", + "background-opacity": 0.9 + }, + "metadata": { + "mapbox:featureComponent": "satellite", + "mapbox:group": "Satellite imagery, land" + } + }, + { + "id": "satellite", + "type": "raster", + "source": "mapbox://mapbox.satellite", + "layout": {}, + "paint": {}, + "metadata": { + "mapbox:featureComponent": "satellite", + "mapbox:group": "Satellite imagery, land" + } + }, + { + "id": "tunnel-minor-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 0%, 0%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0], + "line-dasharray": [3, 3] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels-case" + } + }, + { + "id": "tunnel-street-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 0%, 0%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0], + "line-dasharray": [3, 3] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels-case" + } + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels-case" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "tunnel"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "tunnel-minor-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "id": "tunnel-secondary-tertiary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 0%, 0%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-dasharray": [3, 3], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels-case" + } + }, + { + "id": "tunnel-primary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 9, + "filter": ["all", ["==", ["get", "structure"], "tunnel"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 0%, 0%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-dasharray": [3, 3], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels-case" + } + }, + { + "id": "tunnel-major-link-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-dasharray": [3, 3], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels-case" + } + }, + { + "id": "tunnel-motorway-trunk-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 1%, 22%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-dasharray": [3, 3], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels-case" + } + }, + { + "minzoom": 14, + "layout": {}, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., tunnels" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["==", ["get", "class"], "path"], + ["!=", ["get", "type"], "steps"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "tunnel-path", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 15, 1, 18, 4], + "line-color": "hsla(40, 88%, 77%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 15, ["literal", [1.75, 1]], 16, ["literal", [1, 0.75]], 17, ["literal", [1, 0.5]]] + }, + "source-layer": "road" + }, + { + "id": "tunnel-steps", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": ["all", ["==", ["get", "structure"], "tunnel"], ["==", ["get", "type"], "steps"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 15, 1, 16, 1.6, 18, 6], + "line-color": "hsla(40, 88%, 77%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 15, ["literal", [1.75, 1]], 16, ["literal", [1, 0.75]], 17, ["literal", [0.3, 0.3]]] + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., tunnels" + } + }, + { + "id": "tunnel-pedestrian", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["==", ["get", "structure"], "tunnel"], ["==", ["get", "class"], "pedestrian"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.5, 18, 12], + "line-color": "hsla(40, 95%, 90%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 15, ["literal", [1.5, 0.4]], 16, ["literal", [1, 0.2]]] + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., tunnels" + } + }, + { + "id": "tunnel-minor", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-color": ["match", ["get", "class"], "street_limited", "hsl(0, 2%, 22%)", "hsla(0, 0%, 80%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + } + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 13, "round"], + "line-join": ["step", ["zoom"], "miter", 13, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "tunnel"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "tunnel-minor-link", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "id": "tunnel-major-link", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsla(30, 100%, 80%, 0.8)", "hsla(50, 78%, 80%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + } + }, + { + "id": "tunnel-street", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "street_limited", "hsl(0, 2%, 22%)", "hsla(0, 0%, 80%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + } + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + }, + "maxzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "tunnel-street-low", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "id": "tunnel-secondary-tertiary", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + } + }, + { + "id": "tunnel-primary", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["==", ["get", "structure"], "tunnel"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + } + }, + { + "id": "tunnel-motorway-trunk", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "tunnel"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": ["match", ["get", "class"], "motorway", "hsla(30, 100%, 80%, 0.8)", "hsla(50, 78%, 80%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, tunnels" + } + }, + { + "minzoom": 12, + "layout": { + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., surface" + }, + "filter": [ + "all", + ["==", ["get", "class"], "path"], + ["step", ["zoom"], ["!", ["match", ["get", "type"], ["steps", "sidewalk", "crossing"], true, false]], 16, ["!=", ["get", "type"], "steps"]], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-path", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 13, 0.5, 14, 1, 15, 1, 18, 4], + "line-color": "hsla(40, 95%, 90%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [4, 0.3]], 15, ["literal", [1.75, 0.3]], 16, ["literal", [1, 0.3]], 17, ["literal", [1, 0.25]]] + }, + "source-layer": "road" + }, + { + "minzoom": 14, + "layout": { + "line-join": "round" + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., surface" + }, + "filter": [ + "all", + ["==", ["get", "type"], "steps"], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-steps", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 15, 1, 16, 1.6, 18, 6], + "line-color": "hsla(40, 95%, 90%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 15, ["literal", [1.75, 1]], 16, ["literal", [1, 0.75]], 17, ["literal", [0.3, 0.3]]] + }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., surface" + }, + "filter": [ + "all", + ["==", ["get", "class"], "pedestrian"], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["case", ["has", "layer"], [">=", ["get", "layer"], 0], true], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-pedestrian", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.5, 18, 12], + "line-color": "hsla(40, 95%, 90%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 15, ["literal", [1.5, 0.4]], 16, ["literal", [1, 0.2]]] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": ["match", ["get", "class"], "track", "hsla(40, 95%, 90%, 0.8)", "hsla(0, 1%, 10%, 0.7)"], + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 14, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-street-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 11, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-secondary-tertiary-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 9, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["==", ["get", "class"], "primary"], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-primary-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-major-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 22%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 3, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + 5, + ["all", ["match", ["get", "class"], ["motorway", "trunk"], true, false], ["match", ["get", "structure"], ["none", "ford"], true, false]] + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-motorway-trunk-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 1%, 22%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 3, 0, 3.5, 1, 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 13, "round"], + "line-join": ["step", ["zoom"], "miter", 13, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-minor-link", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 13, "round"], + "line-join": ["step", ["zoom"], "miter", 13, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-major-link", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsla(30, 100%, 70%, 0.8)", "hsla(50, 89%, 70%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-street", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "street_limited", "hsl(0, 2%, 22%)", "hsla(0, 0%, 80%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 11, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "maxzoom": 14, + "filter": [ + "all", + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-street-low", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 8, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-secondary-tertiary", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 6, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + ["==", ["get", "class"], "primary"], + ["match", ["get", "structure"], ["none", "ford"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-primary", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 3, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 13, "round"], + "line-join": ["step", ["zoom"], "miter", 13, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, surface" + }, + "filter": [ + "all", + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + 5, + ["all", ["match", ["get", "class"], ["motorway", "trunk"], true, false], ["match", ["get", "structure"], ["none", "ford"], true, false]] + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "road-motorway-trunk", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": [ + "step", + ["zoom"], + ["match", ["get", "class"], "motorway", "hsla(30, 88%, 64%, 0.8)", "trunk", "hsla(50, 81%, 54%, 0.8)", "hsl(0, 0%, 22%)"], + 9, + ["match", ["get", "class"], "motorway", "hsla(30, 100%, 70%, 0.8)", "hsla(50, 89%, 70%, 0.8)"] + ], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 3, 0, 3.5, 1, 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 14, + "layout": {}, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., barriers-bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["==", ["get", "class"], "path"], + ["!=", ["get", "type"], "steps"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-path", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 15, 1, 18, 4], + "line-color": "hsla(40, 95%, 90%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [4, 0.3]], 15, ["literal", [1.75, 0.3]], 16, ["literal", [1, 0.3]], 17, ["literal", [1, 0.25]]] + }, + "source-layer": "road" + }, + { + "id": "bridge-steps", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": ["all", ["==", ["get", "type"], "steps"], ["==", ["get", "structure"], "bridge"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 15, 1, 16, 1.6, 18, 6], + "line-color": "hsla(40, 95%, 90%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 15, ["literal", [1.75, 1]], 16, ["literal", [1, 0.75]], 17, ["literal", [0.3, 0.3]]] + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., barriers-bridges" + } + }, + { + "id": "bridge-pedestrian", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["==", ["get", "class"], "pedestrian"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.5, 18, 12], + "line-color": "hsla(40, 95%, 90%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 17, 1, 18, 0], + "line-dasharray": ["step", ["zoom"], ["literal", [1, 0]], 15, ["literal", [1.5, 0.4]], 16, ["literal", [1, 0.2]]] + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., barriers-bridges" + } + }, + { + "id": "bridge-minor-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": ["match", ["get", "class"], "track", "hsla(40, 95%, 90%, 0.8)", "hsla(0, 1%, 10%, 0.7)"], + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "id": "bridge-street-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": ["match", ["get", "class"], "track", "hsla(40, 95%, 90%, 0.8)", "hsla(0, 1%, 10%, 0.7)"], + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "minzoom": 13, + "layout": { + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "bridge"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-minor-link-case", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "id": "bridge-secondary-tertiary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 11, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "id": "bridge-primary-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 9, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 1%, 10%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "id": "bridge-major-link-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 22%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "id": "bridge-motorway-trunk-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 1%, 22%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["track"], true, "service", ["step", ["zoom"], false, 14, true], false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-minor", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 18, 10, 22, 100], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": "round" + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["match", ["get", "class"], ["primary_link", "secondary_link", "tertiary_link"], true, false], + ["==", ["get", "structure"], "bridge"], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-minor-link", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.4, 18, 18, 22, 180], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 12, + "layout": { + "line-cap": "round" + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-major-link", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsla(30, 100%, 70%, 0.8)", "hsla(50, 89%, 70%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-street", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "street_limited", "hsl(0, 2%, 22%)", "hsla(0, 0%, 80%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"], + "line-join": ["step", ["zoom"], "miter", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "maxzoom": 14, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["street", "street_limited"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-street-low", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.5, 18, 20, 22, 200], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-secondary-tertiary", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0, 18, 26, 22, 260], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": ["all", ["==", ["get", "structure"], "bridge"], ["==", ["get", "class"], "primary"], ["==", ["geometry-type"], "LineString"]], + "type": "line", + "source": "composite", + "id": "bridge-primary", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 28, 22, 280], + "line-color": "hsla(0, 0%, 80%, 0.8)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0.3, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": "round" + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["<=", ["get", "layer"], 1], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-motorway-trunk", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": ["match", ["get", "class"], "motorway", "hsla(30, 100%, 70%, 0.8)", "hsla(50, 89%, 70%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "id": "bridge-major-link-2-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 0.8, 22, 2], + "line-color": "hsla(0, 1%, 22%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "id": "bridge-motorway-trunk-2-case", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 13, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 22, 2], + "line-color": "hsla(0, 1%, 22%, 0.7)", + "line-gap-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + } + }, + { + "minzoom": 12, + "layout": { + "line-cap": "round" + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway_link", "trunk_link"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-major-link-2", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 12, 0.8, 18, 20, 22, 200], + "line-color": ["match", ["get", "class"], "motorway_link", "hsla(30, 100%, 70%, 0.8)", "hsla(50, 89%, 70%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "line-cap": ["step", ["zoom"], "butt", 14, "round"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, bridges" + }, + "filter": [ + "all", + ["==", ["get", "structure"], "bridge"], + [">=", ["get", "layer"], 2], + ["match", ["get", "class"], ["motorway", "trunk"], true, false], + ["==", ["geometry-type"], "LineString"] + ], + "type": "line", + "source": "composite", + "id": "bridge-motorway-trunk-2", + "paint": { + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 3, 0.8, 18, 30, 22, 300], + "line-color": ["match", ["get", "class"], "motorway", "hsla(30, 100%, 70%, 0.8)", "hsla(50, 89%, 70%, 0.8)"], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 13, 1, 15, 0] + }, + "source-layer": "road" + }, + { + "id": "aerialway", + "type": "line", + "source": "composite", + "source-layer": "road", + "minzoom": 12, + "filter": ["==", ["get", "class"], "aerialway"], + "paint": { + "line-color": "hsl(204, 100%, 80%)", + "line-width": ["interpolate", ["exponential", 1.5], ["zoom"], 14, 1, 20, 2], + "line-dasharray": [4, 1] + }, + "metadata": { + "mapbox:featureComponent": "transit", + "mapbox:group": "Transit, elevated" + } + }, + { + "id": "admin-1-boundary-bg", + "type": "line", + "source": "composite", + "source-layer": "admin", + "minzoom": 7, + "filter": ["all", ["==", ["get", "admin_level"], 1], ["==", ["get", "maritime"], "false"], ["match", ["get", "worldview"], ["all", "CN"], true, false]], + "paint": { + "line-color": "hsl(260, 45%, 0%)", + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 3, 12, 6], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 7, 0, 8, 0.5], + "line-dasharray": [1, 0], + "line-blur": ["interpolate", ["linear"], ["zoom"], 3, 0, 12, 3] + }, + "metadata": { + "mapbox:featureComponent": "admin-boundaries", + "mapbox:group": "Administrative boundaries, admin" + } + }, + { + "id": "admin-0-boundary-bg", + "type": "line", + "source": "composite", + "source-layer": "admin", + "minzoom": 1, + "filter": ["all", ["==", ["get", "admin_level"], 0], ["==", ["get", "maritime"], "false"], ["match", ["get", "worldview"], ["all", "CN"], true, false]], + "paint": { + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 6, 12, 12], + "line-color": "hsl(260, 45%, 0%)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 3, 0, 4, 0.5], + "line-blur": ["interpolate", ["linear"], ["zoom"], 3, 0, 12, 3] + }, + "metadata": { + "mapbox:featureComponent": "admin-boundaries", + "mapbox:group": "Administrative boundaries, admin" + } + }, + { + "minzoom": 2, + "layout": {}, + "metadata": { + "mapbox:featureComponent": "admin-boundaries", + "mapbox:group": "Administrative boundaries, admin" + }, + "filter": ["all", ["==", ["get", "admin_level"], 1], ["==", ["get", "maritime"], "false"], ["match", ["get", "worldview"], ["all", "CN"], true, false]], + "type": "line", + "source": "composite", + "id": "admin-1-boundary", + "paint": { + "line-dasharray": ["step", ["zoom"], ["literal", [2, 0]], 7, ["literal", [2, 2, 6, 2]]], + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 0.3, 12, 1.5], + "line-opacity": ["interpolate", ["linear"], ["zoom"], 2, 0, 3, 1], + "line-color": "hsl(260, 15%, 85%)" + }, + "source-layer": "admin" + }, + { + "minzoom": 1, + "layout": {}, + "metadata": { + "mapbox:featureComponent": "admin-boundaries", + "mapbox:group": "Administrative boundaries, admin" + }, + "filter": [ + "all", + ["==", ["get", "admin_level"], 0], + ["==", ["get", "disputed"], "false"], + ["==", ["get", "maritime"], "false"], + ["match", ["get", "worldview"], ["all", "CN"], true, false] + ], + "type": "line", + "source": "composite", + "id": "admin-0-boundary", + "paint": { + "line-color": "hsl(260, 15%, 80%)", + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 0.75, 12, 3], + "line-dasharray": ["step", ["zoom"], ["literal", [2, 0]], 7, ["literal", [2, 2, 6, 2]]] + }, + "source-layer": "admin" + }, + { + "id": "admin-0-boundary-disputed", + "type": "line", + "source": "composite", + "source-layer": "admin", + "minzoom": 1, + "filter": [ + "all", + ["==", ["get", "disputed"], "true"], + ["==", ["get", "admin_level"], 0], + ["==", ["get", "maritime"], "false"], + ["match", ["get", "worldview"], ["all", "CN"], true, false] + ], + "paint": { + "line-color": "hsl(260, 15%, 80%)", + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 0.75, 12, 3], + "line-dasharray": ["step", ["zoom"], ["literal", [3, 2, 5]], 7, ["literal", [2, 1.5]]] + }, + "metadata": { + "mapbox:featureComponent": "admin-boundaries", + "mapbox:group": "Administrative boundaries, admin" + } + }, + { + "minzoom": 10, + "layout": { + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 10, + [ + "match", + ["get", "class"], + ["motorway", "trunk", "primary", "secondary", "tertiary"], + 11, + ["motorway_link", "trunk_link", "primary_link", "secondary_link", "tertiary_link", "street", "street_limited"], + 9.9, + 7.15 + ], + 18, + [ + "match", + ["get", "class"], + ["motorway", "trunk", "primary", "secondary", "tertiary"], + 17.6, + ["motorway_link", "trunk_link", "primary_link", "secondary_link", "tertiary_link", "street", "street_limited"], + 15.400000000000002, + 14.3 + ] + ], + "text-max-angle": 30, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name"]], + "text-letter-spacing": 0.01 + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, road-labels" + }, + "filter": [ + "all", + ["has", "name"], + [ + "step", + ["zoom"], + ["match", ["get", "class"], ["motorway", "trunk", "primary", "secondary", "tertiary"], true, false], + 12, + ["match", ["get", "class"], ["motorway", "trunk", "primary", "secondary", "tertiary", "street", "street_limited"], true, false], + 15, + ["match", ["get", "class"], ["path", "pedestrian", "golf", "ferry", "aerialway"], false, true] + ] + ], + "type": "symbol", + "source": "composite", + "id": "road-label", + "paint": { + "text-color": "hsl(0, 0%, 100%)", + "text-halo-color": ["match", ["get", "class"], ["motorway", "trunk"], "hsla(0, 5%, 0%, 0.75)", "hsl(0, 5%, 0%)"], + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "road" + }, + { + "minzoom": 15, + "layout": { + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "icon-image": "intersection", + "icon-text-fit": "both", + "icon-text-fit-padding": [1, 2, 1, 2], + "text-size": ["interpolate", ["exponential", 1.2], ["zoom"], 15, 9, 18, 12], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, road-labels" + }, + "filter": ["all", ["==", ["get", "class"], "intersection"], ["has", "name"]], + "type": "symbol", + "source": "composite", + "id": "road-intersection", + "paint": { + "text-color": "hsl(230, 36%, 64%)" + }, + "source-layer": "road" + }, + { + "minzoom": 6, + "layout": { + "text-size": 9, + "icon-image": [ + "case", + ["has", "shield_beta"], + [ + "coalesce", + ["image", ["concat", ["get", "shield_beta"], "-", ["to-string", ["get", "reflen"]]]], + ["image", ["concat", "default-", ["to-string", ["get", "reflen"]]]] + ], + ["concat", ["get", "shield"], "-", ["to-string", ["get", "reflen"]]] + ], + "icon-rotation-alignment": "viewport", + "text-max-angle": 38, + "symbol-spacing": ["interpolate", ["linear"], ["zoom"], 11, 400, 14, 600], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "symbol-placement": ["step", ["zoom"], "point", 11, "line"], + "text-rotation-alignment": "viewport", + "text-field": ["get", "ref"], + "text-letter-spacing": 0.05 + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, road-labels" + }, + "filter": [ + "all", + ["has", "reflen"], + ["<=", ["get", "reflen"], 6], + ["match", ["get", "class"], ["pedestrian", "service"], false, true], + [ + "step", + ["zoom"], + ["==", ["geometry-type"], "Point"], + 11, + [">", ["get", "len"], 5000], + 12, + [">", ["get", "len"], 2500], + 13, + [">", ["get", "len"], 1000], + 14, + true + ] + ], + "type": "symbol", + "source": "composite", + "id": "road-number-shield", + "paint": { + "text-color": [ + "case", + [ + "all", + ["has", "shield_text_color_beta"], + ["to-boolean", ["coalesce", ["image", ["concat", ["get", "shield_beta"], "-", ["to-string", ["get", "reflen"]]]], ""]] + ], + [ + "match", + ["get", "shield_text_color_beta"], + "white", + "hsl(0, 0%, 100%)", + "yellow", + "hsl(50, 63%, 70%)", + "orange", + "hsl(25, 63%, 75%)", + "blue", + "hsl(230, 36%, 44%)", + "red", + "hsl(0, 54%, 59%)", + "green", + "hsl(140, 46%, 37%)", + "hsl(230, 11%, 13%)" + ], + [ + "match", + ["get", "shield_text_color"], + "white", + "hsl(0, 0%, 100%)", + "yellow", + "hsl(50, 63%, 70%)", + "orange", + "hsl(25, 63%, 75%)", + "blue", + "hsl(230, 36%, 44%)", + "red", + "hsl(0, 54%, 59%)", + "green", + "hsl(140, 46%, 37%)", + "hsl(230, 11%, 13%)" + ] + ] + }, + "source-layer": "road" + }, + { + "minzoom": 14, + "layout": { + "text-field": ["get", "ref"], + "text-size": 9, + "icon-image": ["concat", "motorway-exit-", ["to-string", ["get", "reflen"]]], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"] + }, + "metadata": { + "mapbox:featureComponent": "road-network", + "mapbox:group": "Road network, road-labels" + }, + "filter": ["all", ["has", "reflen"], ["<=", ["get", "reflen"], 9]], + "type": "symbol", + "source": "composite", + "id": "road-exit-shield", + "paint": { + "text-color": "hsl(0, 0%, 100%)", + "text-translate": [0, 0] + }, + "source-layer": "motorway_junction" + }, + { + "minzoom": 12, + "layout": { + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 10, + ["match", ["get", "class"], "pedestrian", 9.9, 7.15], + 18, + ["match", ["get", "class"], "pedestrian", 15.400000000000002, 14.3] + ], + "text-max-angle": 30, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-letter-spacing": 0.01 + }, + "metadata": { + "mapbox:featureComponent": "walking-cycling", + "mapbox:group": "Walking, cycling, etc., walking-cycling-labels" + }, + "filter": [ + "all", + ["case", ["has", "layer"], [">=", ["get", "layer"], 0], true], + ["step", ["zoom"], ["match", ["get", "class"], ["pedestrian"], true, false], 15, ["match", ["get", "class"], ["path", "pedestrian"], true, false]] + ], + "type": "symbol", + "source": "composite", + "id": "path-pedestrian-label", + "paint": { + "text-color": "hsl(0, 0%, 100%)", + "text-halo-color": "hsl(0, 5%, 0%)", + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "road" + }, + { + "minzoom": 15, + "layout": { + "text-size": ["interpolate", ["linear"], ["zoom"], 10, 7.15, 18, 14.3], + "text-max-angle": 30, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "symbol-placement": "line", + "text-padding": 1, + "text-rotation-alignment": "map", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hant"], ["get", "name"]], + "text-letter-spacing": 0.01 + }, + "metadata": { + "mapbox:featureComponent": "transit", + "mapbox:group": "Transit, ferry-aerialway-labels" + }, + "filter": ["match", ["get", "class"], "aerialway", true, false], + "type": "symbol", + "source": "composite", + "id": "ferry-aerialway-label", + "paint": { + "text-color": ["match", ["get", "class"], "ferry", "hsl(240, 68%, 94%)", "hsl(204, 100%, 80%)"], + "text-halo-color": ["match", ["get", "class"], "ferry", "hsl(240, 100%, 62%)", "hsl(0, 0%, 0%)"], + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "road" + }, + { + "minzoom": 13, + "layout": { + "text-font": ["DIN Pro Italic", "Arial Unicode MS Regular"], + "text-max-angle": 30, + "symbol-spacing": ["interpolate", ["linear", 1], ["zoom"], 15, 250, 17, 400], + "text-size": ["interpolate", ["linear"], ["zoom"], 13, 12, 18, 18], + "symbol-placement": "line", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]] + }, + "metadata": { + "mapbox:featureComponent": "natural-features", + "mapbox:group": "Natural features, natural-labels" + }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["canal", "river", "stream", "disputed_canal", "disputed_river", "disputed_stream"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "symbol", + "source": "composite", + "id": "waterway-label", + "paint": { + "text-color": "hsl(240, 68%, 90%)", + "text-halo-color": "hsla(0, 0%, 0%, 0.5)", + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "natural_label" + }, + { + "minzoom": 4, + "layout": { + "text-size": ["step", ["zoom"], ["step", ["get", "sizerank"], 18, 5, 12], 17, ["step", ["get", "sizerank"], 18, 13, 12]], + "text-max-angle": 30, + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "symbol-placement": "line-center", + "text-pitch-alignment": "viewport" + }, + "metadata": { + "mapbox:featureComponent": "natural-features", + "mapbox:group": "Natural features, natural-labels" + }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["glacier", "landform", "disputed_glacier", "disputed_landform"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["<=", ["get", "filterrank"], 2], + ["==", ["geometry-type"], "LineString"] + ], + "type": "symbol", + "source": "composite", + "id": "natural-line-label", + "paint": { + "text-halo-width": 0.5, + "text-halo-color": "hsl(0, 0%, 0%)", + "text-halo-blur": 0.5, + "text-color": "hsl(0, 0%, 100%)" + }, + "source-layer": "natural_label" + }, + { + "minzoom": 4, + "layout": { + "text-size": ["step", ["zoom"], ["step", ["get", "sizerank"], 18, 5, 12], 17, ["step", ["get", "sizerank"], 18, 13, 12]], + "icon-image": ["get", "maki"], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "text-offset": [ + "step", + ["zoom"], + ["step", ["get", "sizerank"], ["literal", [0, 0]], 5, ["literal", [0, 0.55]]], + 17, + ["step", ["get", "sizerank"], ["literal", [0, 0]], 13, ["literal", [0, 0.6000000000000001]]] + ], + "text-anchor": ["step", ["zoom"], ["step", ["get", "sizerank"], "center", 5, "top"], 17, ["step", ["get", "sizerank"], "center", 13, "top"]], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]] + }, + "metadata": { + "mapbox:featureComponent": "natural-features", + "mapbox:group": "Natural features, natural-labels" + }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + [ + "dock", + "glacier", + "landform", + "water_feature", + "wetland", + "disputed_dock", + "disputed_glacier", + "disputed_landform", + "disputed_water_feature", + "disputed_wetland" + ], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["<=", ["get", "filterrank"], 2], + ["==", ["geometry-type"], "Point"] + ], + "type": "symbol", + "source": "composite", + "id": "natural-point-label", + "paint": { + "icon-opacity": ["step", ["zoom"], ["step", ["get", "sizerank"], 0, 5, 1], 17, ["step", ["get", "sizerank"], 0, 13, 1]], + "text-halo-color": "hsl(0, 0%, 0%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5, + "text-color": "hsl(0, 0%, 100%)" + }, + "source-layer": "natural_label" + }, + { + "minzoom": 1, + "layout": { + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + ["*", ["-", 16, ["sqrt", ["get", "sizerank"]]], 1], + 22, + ["*", ["-", 22, ["sqrt", ["get", "sizerank"]]], 1] + ], + "text-max-angle": 30, + "text-letter-spacing": ["match", ["get", "class"], "ocean", 0.25, ["sea", "bay"], 0.15, 0], + "text-font": ["DIN Pro Italic", "Arial Unicode MS Regular"], + "symbol-placement": "line-center", + "text-pitch-alignment": "viewport", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]] + }, + "metadata": { + "mapbox:featureComponent": "natural-features", + "mapbox:group": "Natural features, natural-labels" + }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["bay", "ocean", "reservoir", "sea", "water", "disputed_bay", "disputed_ocean", "disputed_reservoir", "disputed_sea", "disputed_water"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["==", ["geometry-type"], "LineString"] + ], + "type": "symbol", + "source": "composite", + "id": "water-line-label", + "paint": { + "text-color": ["match", ["get", "class"], ["bay", "ocean", "sea"], "hsl(240, 96%, 82%)", "hsl(240, 68%, 90%)"], + "text-halo-color": "hsla(0, 0%, 0%, 0.5)", + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "natural_label" + }, + { + "minzoom": 1, + "layout": { + "text-line-height": 1.3, + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + ["*", ["-", 16, ["sqrt", ["get", "sizerank"]]], 1], + 22, + ["*", ["-", 22, ["sqrt", ["get", "sizerank"]]], 1] + ], + "text-font": ["DIN Pro Italic", "Arial Unicode MS Regular"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-letter-spacing": ["match", ["get", "class"], "ocean", 0.25, ["bay", "sea"], 0.15, 0.01], + "text-max-width": ["match", ["get", "class"], "ocean", 4, "sea", 5, ["bay", "water"], 7, 10] + }, + "metadata": { + "mapbox:featureComponent": "natural-features", + "mapbox:group": "Natural features, natural-labels" + }, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["bay", "ocean", "reservoir", "sea", "water", "disputed_bay", "disputed_ocean", "disputed_reservoir", "disputed_sea", "disputed_water"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["==", ["geometry-type"], "Point"] + ], + "type": "symbol", + "source": "composite", + "id": "water-point-label", + "paint": { + "text-color": ["match", ["get", "class"], ["bay", "ocean", "sea"], "hsl(240, 96%, 82%)", "hsl(240, 68%, 90%)"], + "text-halo-color": "hsla(0, 0%, 0%, 0.5)", + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "natural_label" + }, + { + "minzoom": 6, + "layout": { + "text-size": ["step", ["zoom"], ["step", ["get", "sizerank"], 18, 5, 12], 17, ["step", ["get", "sizerank"], 18, 13, 12]], + "icon-image": ["case", ["has", "maki_beta"], ["coalesce", ["image", ["get", "maki_beta"]], ["image", ["get", "maki"]]], ["image", ["get", "maki"]]], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "text-offset": [ + "step", + ["zoom"], + ["step", ["get", "sizerank"], ["literal", [0, 0]], 5, ["literal", [0, 0.8]]], + 17, + ["step", ["get", "sizerank"], ["literal", [0, 0]], 13, ["literal", [0, 0.8]]] + ], + "text-anchor": ["step", ["zoom"], ["step", ["get", "sizerank"], "center", 5, "top"], 17, ["step", ["get", "sizerank"], "center", 13, "top"]], + "text-field": ["get", "name_zh-Hans"] + }, + "metadata": { + "mapbox:featureComponent": "point-of-interest-labels", + "mapbox:group": "Point of interest labels, poi-labels" + }, + "filter": ["<=", ["get", "filterrank"], ["+", ["step", ["zoom"], 0, 16, 1, 17, 2], 3]], + "type": "symbol", + "source": "composite", + "id": "poi-label", + "paint": { + "icon-opacity": ["step", ["zoom"], ["step", ["get", "sizerank"], 0, 5, 1], 17, ["step", ["get", "sizerank"], 0, 13, 1]], + "text-halo-color": "hsl(0, 0%, 0%)", + "text-halo-width": 0.5, + "text-halo-blur": 0.5, + "text-color": [ + "match", + ["get", "class"], + "park_like", + "hsl(110, 100%, 85%)", + "education", + "hsl(30, 100%, 85%)", + "medical", + "hsl(0, 100%, 85%)", + "hsl(0, 0%, 100%)" + ] + }, + "source-layer": "poi_label" + }, + { + "minzoom": 12, + "layout": { + "text-size": 12, + "icon-image": ["get", "network"], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "text-justify": ["match", ["get", "stop_type"], "entrance", "left", "center"], + "text-offset": ["match", ["get", "stop_type"], "entrance", ["literal", [1, 0]], ["literal", [0, 0.8]]], + "text-anchor": ["match", ["get", "stop_type"], "entrance", "left", "top"], + "text-field": [ + "step", + ["zoom"], + "", + 13, + ["match", ["get", "mode"], ["rail", "metro_rail"], ["coalesce", ["get", "name_zh-Hant"], ["get", "name"]], ""], + 14, + ["match", ["get", "mode"], ["bus", "bicycle"], "", ["coalesce", ["get", "name_zh-Hant"], ["get", "name"]]], + 18, + ["coalesce", ["get", "name_zh-Hant"], ["get", "name"]] + ], + "text-letter-spacing": 0.01, + "text-max-width": ["match", ["get", "stop_type"], "entrance", 15, 9] + }, + "metadata": { + "mapbox:featureComponent": "transit", + "mapbox:group": "Transit, transit-labels" + }, + "filter": [ + "step", + ["zoom"], + [ + "all", + ["<=", ["get", "filterrank"], 4], + ["match", ["get", "mode"], "rail", true, "metro_rail", true, false], + ["!=", ["get", "stop_type"], "entrance"] + ], + 14, + ["all", ["match", ["get", "mode"], "rail", true, "metro_rail", true, false], ["!=", ["get", "stop_type"], "entrance"]], + 15, + ["all", ["match", ["get", "mode"], "rail", true, "metro_rail", true, "light_rail", true, false], ["!=", ["get", "stop_type"], "entrance"]], + 16, + ["all", ["match", ["get", "mode"], "ferry", false, "bus", false, true], ["!=", ["get", "stop_type"], "entrance"]], + 17, + ["all", ["match", ["get", "mode"], "ferry", false, true], ["!=", ["get", "stop_type"], "entrance"]], + 19, + ["match", ["get", "mode"], "ferry", false, true] + ], + "type": "symbol", + "source": "composite", + "id": "transit-label", + "paint": { + "text-halo-color": "hsl(0, 0%, 0%)", + "text-color": "hsl(204, 100%, 80%)", + "text-halo-blur": 0.5, + "text-halo-width": 0.5 + }, + "source-layer": "transit_stop_label" + }, + { + "minzoom": 8, + "layout": { + "text-line-height": 1.1, + "text-size": ["step", ["get", "sizerank"], 18, 9, 12], + "icon-image": ["get", "maki"], + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "text-offset": [0, 0.8], + "text-rotation-alignment": "viewport", + "text-anchor": "top", + "text-field": [ + "step", + ["get", "sizerank"], + [ + "case", + ["has", "ref"], + ["concat", ["get", "ref"], " -\n", ["coalesce", ["get", "name_zh-Hant"], ["get", "name"]]], + ["coalesce", ["get", "name_zh-Hant"], ["get", "name"]] + ], + 15, + ["get", "ref"] + ], + "text-letter-spacing": 0.01, + "text-max-width": 9 + }, + "metadata": { + "mapbox:featureComponent": "transit", + "mapbox:group": "Transit, transit-labels" + }, + "filter": [ + "match", + ["get", "class"], + ["military", "civil", "disputed_military", "disputed_civil"], + ["match", ["get", "worldview"], ["all", "US"], true, false], + false + ], + "type": "symbol", + "source": "composite", + "id": "airport-label", + "paint": { + "text-color": "hsl(0, 0%, 100%)", + "text-halo-color": "hsl(0, 0%, 0%)", + "text-halo-width": 1 + }, + "source-layer": "airport_label" + }, + { + "minzoom": 10, + "layout": { + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-transform": "uppercase", + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-letter-spacing": ["match", ["get", "type"], "suburb", 0.15, 0.05], + "text-max-width": 7, + "text-padding": 3, + "text-size": [ + "interpolate", + ["cubic-bezier", 0.5, 0, 1, 1], + ["zoom"], + 11, + ["match", ["get", "type"], "suburb", 12.100000000000001, 11.55], + 15, + ["match", ["get", "type"], "suburb", 16.5, 15.400000000000002] + ] + }, + "metadata": { + "mapbox:featureComponent": "place-labels", + "mapbox:group": "Place labels, place-labels" + }, + "maxzoom": 15, + "filter": [ + "all", + [ + "match", + ["get", "class"], + ["settlement_subdivision", "disputed_settlement_subdivision"], + ["match", ["get", "worldview"], ["all", "CN"], true, false], + false + ], + ["<=", ["get", "filterrank"], 4] + ], + "type": "symbol", + "source": "composite", + "id": "settlement-subdivision-label", + "paint": { + "text-halo-color": "hsla(0, 5%, 0%, 0.75)", + "text-halo-width": 1, + "text-color": "hsl(0, 0%, 100%)", + "text-halo-blur": 0.5 + }, + "source-layer": "place_label" + }, + { + "minzoom": 2, + "layout": { + "text-line-height": 1.1, + "text-size": [ + "interpolate", + ["cubic-bezier", 0.2, 0, 0.9, 1], + ["zoom"], + 3, + ["step", ["get", "symbolrank"], 12.100000000000001, 9, 11], + 6, + ["step", ["get", "symbolrank"], 15.400000000000002, 9, 13.200000000000001, 12, 11], + 8, + ["step", ["get", "symbolrank"], 17.6, 9, 15.400000000000002, 12, 13.200000000000001, 15, 11], + 13, + ["step", ["get", "symbolrank"], 24.200000000000003, 9, 22, 12, 17.6, 15, 15.400000000000002] + ], + "text-radial-offset": ["step", ["zoom"], ["match", ["get", "capital"], 2, 0.6, 0.55], 8, 0], + "symbol-sort-key": ["get", "symbolrank"], + "icon-image": [ + "step", + ["zoom"], + ["case", ["==", ["get", "capital"], 2], "border-dot-13", ["step", ["get", "symbolrank"], "dot-11", 9, "dot-10", 11, "dot-9"]], + 8, + "" + ], + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-justify": "auto", + "text-anchor": ["step", ["zoom"], ["get", "text_anchor"], 8, "center"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-max-width": 7 + }, + "metadata": { + "mapbox:featureComponent": "place-labels", + "mapbox:group": "Place labels, place-labels" + }, + "maxzoom": 13, + "filter": [ + "all", + ["<=", ["get", "filterrank"], 3], + ["match", ["get", "class"], ["settlement", "disputed_settlement"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + [ + "step", + ["zoom"], + [">", ["get", "symbolrank"], 6], + 4, + [">=", ["get", "symbolrank"], 7], + 6, + [">=", ["get", "symbolrank"], 8], + 7, + [">=", ["get", "symbolrank"], 10], + 10, + [">=", ["get", "symbolrank"], 11], + 11, + [">=", ["get", "symbolrank"], 13], + 12, + [">=", ["get", "symbolrank"], 15] + ] + ], + "type": "symbol", + "source": "composite", + "id": "settlement-minor-label", + "paint": { + "text-color": "hsl(0, 0%, 95%)", + "text-halo-color": "hsl(0, 5%, 0%)", + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "place_label" + }, + { + "minzoom": 2, + "layout": { + "text-line-height": 1.1, + "text-size": [ + "interpolate", + ["cubic-bezier", 0.2, 0, 0.9, 1], + ["zoom"], + 3, + ["step", ["get", "symbolrank"], 14.3, 6, 12.100000000000001], + 6, + ["step", ["get", "symbolrank"], 19.8, 6, 17.6, 7, 15.400000000000002], + 8, + ["step", ["get", "symbolrank"], 22, 9, 17.6, 10, 15.400000000000002], + 15, + ["step", ["get", "symbolrank"], 26.400000000000002, 9, 22, 12, 17.6, 15, 15.400000000000002] + ], + "text-radial-offset": ["step", ["zoom"], ["match", ["get", "capital"], 2, 0.6, 0.55], 8, 0], + "symbol-sort-key": ["get", "symbolrank"], + "icon-image": [ + "step", + ["zoom"], + ["case", ["==", ["get", "capital"], 2], "border-dot-13", ["step", ["get", "symbolrank"], "dot-11", 9, "dot-10", 11, "dot-9"]], + 8, + "" + ], + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-justify": [ + "step", + ["zoom"], + ["match", ["get", "text_anchor"], ["left", "bottom-left", "top-left"], "left", ["right", "bottom-right", "top-right"], "right", "center"], + 8, + "center" + ], + "text-anchor": ["step", ["zoom"], ["get", "text_anchor"], 8, "center"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-max-width": 7 + }, + "metadata": { + "mapbox:featureComponent": "place-labels", + "mapbox:group": "Place labels, place-labels" + }, + "maxzoom": 15, + "filter": [ + "all", + ["<=", ["get", "filterrank"], 3], + ["match", ["get", "class"], ["settlement", "disputed_settlement"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + [ + "step", + ["zoom"], + false, + 2, + ["<=", ["get", "symbolrank"], 6], + 4, + ["<", ["get", "symbolrank"], 7], + 6, + ["<", ["get", "symbolrank"], 8], + 7, + ["<", ["get", "symbolrank"], 10], + 10, + ["<", ["get", "symbolrank"], 11], + 11, + ["<", ["get", "symbolrank"], 13], + 12, + ["<", ["get", "symbolrank"], 15], + 13, + [">=", ["get", "symbolrank"], 11], + 14, + [">=", ["get", "symbolrank"], 15] + ] + ], + "type": "symbol", + "source": "composite", + "id": "settlement-major-label", + "paint": { + "text-color": "hsl(0, 0%, 95%)", + "text-halo-color": "hsl(0, 5%, 0%)", + "text-halo-width": 1, + "text-halo-blur": 1 + }, + "source-layer": "place_label" + }, + { + "minzoom": 3, + "layout": { + "text-size": [ + "interpolate", + ["cubic-bezier", 0.85, 0.7, 0.65, 1], + ["zoom"], + 4, + ["step", ["get", "symbolrank"], 9.9, 6, 8.8, 7, 7.700000000000001], + 9, + ["step", ["get", "symbolrank"], 23.1, 6, 17.6, 7, 15.400000000000002] + ], + "text-transform": "uppercase", + "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"], + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-letter-spacing": 0.15, + "text-max-width": 6 + }, + "metadata": { + "mapbox:featureComponent": "place-labels", + "mapbox:group": "Place labels, place-labels" + }, + "maxzoom": 9, + "filter": ["match", ["get", "class"], ["state", "disputed_state"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + "type": "symbol", + "source": "composite", + "id": "state-label", + "paint": { + "text-color": "hsl(0, 0%, 95%)", + "text-halo-color": "hsl(0, 5%, 0%)", + "text-halo-width": 1, + "text-opacity": 0.5 + }, + "source-layer": "place_label" + }, + { + "minzoom": 1, + "layout": { + "icon-image": "", + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-line-height": 1.1, + "text-max-width": 6, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-radial-offset": ["step", ["zoom"], 0.6, 8, 0], + "text-justify": [ + "step", + ["zoom"], + ["match", ["get", "text_anchor"], ["left", "bottom-left", "top-left"], "left", ["right", "bottom-right", "top-right"], "right", "center"], + 7, + "auto" + ], + "text-size": [ + "interpolate", + ["cubic-bezier", 0.2, 0, 0.7, 1], + ["zoom"], + 1, + ["step", ["get", "symbolrank"], 12.100000000000001, 4, 9.9, 5, 8.8], + 9, + ["step", ["get", "symbolrank"], 24.200000000000003, 4, 20.900000000000002, 5, 18.700000000000003] + ] + }, + "metadata": { + "mapbox:featureComponent": "place-labels", + "mapbox:group": "Place labels, place-labels" + }, + "maxzoom": 10, + "filter": ["match", ["get", "class"], ["country", "disputed_country"], ["match", ["get", "worldview"], ["all", "CN"], true, false], false], + "type": "symbol", + "source": "composite", + "id": "country-label", + "paint": { + "icon-opacity": ["step", ["zoom"], ["case", ["has", "text_anchor"], 1, 0], 7, 0], + "text-color": "hsl(0, 0%, 95%)", + "text-halo-color": ["interpolate", ["linear"], ["zoom"], 2, "hsla(0, 5%, 0%, 0.75)", 3, "hsl(0, 5%, 0%)"], + "text-halo-width": 1.25 + }, + "source-layer": "place_label" + }, + { + "minzoom": 0.75, + "layout": { + "text-field": ["coalesce", ["get", "name_zh-Hans"], ["get", "name"]], + "text-line-height": 1.1, + "text-max-width": 6, + "text-font": ["DIN Pro Medium", "Arial Unicode MS Regular"], + "text-size": ["interpolate", ["exponential", 0.5], ["zoom"], 0, 11, 2.5, 16.5], + "text-transform": "uppercase", + "text-letter-spacing": 0.05 + }, + "metadata": { + "mapbox:featureComponent": "place-labels", + "mapbox:group": "Place labels, place-labels" + }, + "maxzoom": 3, + "filter": ["==", ["get", "class"], "continent"], + "type": "symbol", + "source": "composite", + "id": "continent-label", + "paint": { + "text-color": "hsl(0, 0%, 95%)", + "text-halo-color": ["interpolate", ["linear"], ["zoom"], 0, "hsla(0, 5%, 0%, 0.75)", 3, "hsl(0, 5%, 0%)"], + "text-halo-width": 1.5, + "text-opacity": ["interpolate", ["linear"], ["zoom"], 0, 0.8, 1.5, 0.5, 2.5, 0] + }, + "source-layer": "natural_label" + } + ], + "created": "2022-11-11T09:30:10.170Z", + "modified": "2022-11-11T09:59:36.852Z", + "id": "clacasy19000014qrnsjm7yk6", + "owner": "vothing", + "visibility": "private", + "protected": false, + "draft": false +} diff --git a/reg-js-sdjk.reg b/reg-js-sdjk.reg new file mode 100644 index 0000000..e6d2342 --- /dev/null +++ b/reg-js-sdjk.reg @@ -0,0 +1,8 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CLASSES_ROOT\sdjk] +"URL Protocol"="" +@="URL:sdjk" + +[HKEY_CLASSES_ROOT\sdjk\Shell\Open\command] +@="E:\\startscg.bat" \ No newline at end of file diff --git a/reg-js-sgfa.reg b/reg-js-sgfa.reg new file mode 100644 index 0000000..02c8d3a --- /dev/null +++ b/reg-js-sgfa.reg @@ -0,0 +1,8 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CLASSES_ROOT\sgfa] +@="URL:sgfa" +"URL Protocol"="" + +[HKEY_CLASSES_ROOT\sgfa\Shell\Open\command] +@="C:\\Users\\fangtc\\AppData\\Local\\uclient\\apps\\UG_3e623c98\\Launcher.exe UG_3e623c98" \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..0757d94 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,17 @@ +<!-- eslint-disable vue/no-textarea-mustache --> +<!-- eslint-disable vue/html-self-closing --> +<template> + <dashboard /> +</template> + +<script> + +export default { + name: "App", + components: { + dashboard: () => import("./Dashboard.vue") + }, + computed: { + }, +}; +</script> diff --git a/src/Dashboard.vue b/src/Dashboard.vue new file mode 100644 index 0000000..5e6dc05 --- /dev/null +++ b/src/Dashboard.vue @@ -0,0 +1,188 @@ +<!-- + * @Author: gjj Ganjj@probim.com.cn + * @Date: 2025-02-14 14:32:17 + * @LastEditors: gjj Ganjj@probim.com.cn + * @LastEditTime: 2025-02-20 15:46:39 + * @FilePath: \北京交通大学\src\Dashboard.vue +--> +<!-- eslint-disable vue/no-textarea-mustache --> +<!-- eslint-disable vue/html-self-closing --> +<template> + <main + v-loading="isAuthenticating || isLoadingPrjList" + id="appWrapper" + class="absolute top-[50%] left-[50%] -translate-x-[50%] w-screen h-screen -translate-y-[50%] font-pingfang text-white select-none" + :style="{ + backgroundImage: `url(${backgroundImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: 'cover' + }" + > + <!--头部--> + <app-header class="absolute z-[100] top-0 left-0 right-0" :selected-id="currentProjectId" /> + + + + <!--全屏、切换地图--> + <!--<div class="absolute z-[50] top-20 left-4 flex space-x-3"> + <fullscreen-button /> + <switch-map mapType="gis" @changeMap="onChangeMap" /> + </div>--> + + + + <!--页面内容--> + <div class="content-wrapper px-[22px] py-[10px] absolute inset-0 top-[80px] flex gap-[20px]"> + <div class="flex-1 min-w-0"> + <!-- 左侧模块 --> + <div class="w-full h-full"> + <project-view/> + </div> + </div> + <div class="flex-1 min-w-0"> + <!-- 中间模块 --> + <div class="w-full h-full"> + <equipment-view/> + </div> + </div> + <div class="w-[1080px]"> + <!-- 右侧模块 --> + <div class="w-full h-full"> + <Home/> + </div> + </div> + </div> + + + <!--multiverse渲染容器 + <div id="renderDom" class="absolute z-[40] top-0 bottom-0 left-0 right-0 w-full h-full"></div>--> + + + </main> +</template> + +<script> +import Vue from "vue"; +import { mapGetters } from "vuex"; +import Header from "./components/Header.vue"; +import FullscreenButton from "./components/FullScreenButton.vue"; +import SwitchMap from "./components/SwitchMap.vue"; +import Home from "./views/Home.vue"; +import ProjectView from "./views/ProjectView.vue"; +import { sceneJSON } from "./sceneJSON.js"; +import { AppAPI } from "./api/app"; +import EquipmentView from "./views/EquipmentView.vue"; +import dayjs from "dayjs"; +import "dayjs/locale/zh-cn"; +import relativeTime from "dayjs/plugin/relativeTime"; +dayjs.locale("zh-cn"); +dayjs.extend(relativeTime); +Vue.prototype.$dayjs = dayjs; + +import * as echarts from "echarts"; +Vue.prototype.$echarts = echarts; + +import { nanoid } from "nanoid"; +Vue.prototype.$nanoid = nanoid; + +export default { + name: "Dashboard", + components: { + "app-header": Header, + "fullscreen-button": FullscreenButton, + "switch-map": SwitchMap, + "Home": Home, + "project-view": ProjectView, + "equipment-view": EquipmentView + }, + data() { + return { + backgroundImage: new URL('@/assets/images/backgrounds/screen.png', import.meta.url).href + }; + }, + computed: { + ...mapGetters("common", []) + }, + watch: { + }, + mounted() { + this.initMultiverse(); + }, + beforeDestroy() { + this.resetEngineRelated(); + }, + methods: { + //重置引擎相关的东西 + resetEngineRelated() { + window.scene = window.underlay = null; + }, + //响应切换地图 + onChangeMap(item) { + if (window.scene && window.underlay) { + const u = window.underlay; + const building = window.scene.findFeature("3DBuilding"); + switch (item.id) { + case "pic": { + if (building) { + building.visible = false; + } + u.change("satellite"); //这样需要将本地资源放在工程内 + // u.url = "http://multiverse.vothing.com/ref/style/satellite.json"; + // // 加载显示底图 + // u.load(); + break; + } + case "gis": { + if (building) { + building.visible = true; + } + u.change("darkblue"); //这样需要将本地资源放在工程内 + // u.url = "http://multiverse.vothing.com/ref/style/darkblue.json"; + // // 加载显示底图 + // u.load(); + break; + } + } + } + }, + + + //初始化引擎 + initMultiverse() { + // 获取承载场景画布dom + const renderDom = document.getElementById("renderDom"); + if (window.multiverse && renderDom) { + // 实例化引擎 + const multiverse = window.multiverse; + const engine = new multiverse.mvCore(renderDom); + + // mapbox地图服务的Token,需申请,如不使用Mapbox地图服务,可不设置 + engine.token = window.ProjectConfig.mapboxToken; + // multiverse.js所在的路径,用于获取静态资源文件 + engine.path = "https://multiverse.vothing.com/"; + + // 初始化场景 + engine.initialize().then((s) => { + window.scene = s; + s.fromJSON(sceneJSON); + s.load(); + s.stop(); + window.underlay = s.findFeature("underlay"); + + setTimeout(() => { + + }, 1000); + }); + } + }, + //设置字体颜色 + cellStyle(row, _column, _rowIndex, _columnIndex) { + // console.log("row", row); + if (row.column.label === "状态" && row.row.status === "未处置") { + return "color:#EF424E"; + } + }, + }, +}; +</script> diff --git a/src/api/app.js b/src/api/app.js new file mode 100644 index 0000000..55265fa --- /dev/null +++ b/src/api/app.js @@ -0,0 +1,9 @@ +import { http } from "../utils/http"; +export const AppAPI = { + getRiskData(data, config = {}) { + return http.post("/beh/environment/GetRiskData", data, config); + }, + getRiskDetails(id, config = {}) { + return http.post(`/beh/environment/risk/${id}`, null, config); + }, +}; diff --git a/src/api/home.js b/src/api/home.js new file mode 100644 index 0000000..ace0a96 --- /dev/null +++ b/src/api/home.js @@ -0,0 +1,45 @@ +import { http } from "../utils/http"; +export const HomeAPI = { + getProjectList: (config = {}) => { + return http.get("/beh/home/getGisProjectList", config); + }, + + getProjectInfo: (data, config = {}) => { + return http.post("/beh/summary/getPrjSummary", data, config); + }, + + getWorkerCategoryData: (data, config = {}) => { + return http.post("/beh/person/workTypeTotal", data, config); + }, + + getEquipmentCategoryCount: (data, config = {}) => { + return http.post("/beh/equipment/total", data, config); + }, + + getVideoAreaList: (belong, data, config = {}) => { + return http.post(`/beh/video/area?belong=${belong}`, data, config); + }, + + getEnvPointInfo: () => { + return http.get("/beh/environment/getPointEnvironmentRealData"); + }, + + getVideoByAreaId: (data, config = {}) => { + return http.post("/beh/video", data, config); + }, + + getTotalGoingData: () => { + return http.get("/beh/home/getHomeTotalGoingData"); + }, + + getProjectTypeSummaryData: () => { + return http.get("/beh/home/getHomeProjectTypeData"); + }, + + getTradeCategoriesStatisticsData: () => { + return http.get("/beh/home/getHomeIndustryCategoryData"); + }, + getVideoSourceList() { + return http.post("/beh/person/tree"); + } +}; diff --git a/src/assets/css/DIN_font.css b/src/assets/css/DIN_font.css new file mode 100644 index 0000000..cc6a5ab --- /dev/null +++ b/src/assets/css/DIN_font.css @@ -0,0 +1,23 @@ +@font-face { + font-family: 'DINEngschrift-Alternate'; + src: url(data:font/truetype;charset=utf-8;base64,T1RUTwANAIAAAwBQQ0ZGINK2MzwAAAdgAAA7E0RTSUcAAAABAABGCAAAAAhHREVGABAA5QAARhAAAAAWR1BPU/jUEbUAAEYoAAADOEdTVUJskXSPAABJYAAAACBPUy8yEXgGmAAAAUAAAABgY21hcFBbS68AAAN0AAADzGhlYWT8QVTkAAAA3AAAADZoaGVhBu8DLwAAARQAAAAkaG10eEs+Fq8AAEJ0AAADlG1heHAA5VAAAAABOAAAAAZuYW1lIzo85gAAAaAAAAHScG9zdP+fADIAAAdAAAAAIAABAAAAAQAAtELsWF8PPPUAAQPoAAAAAMGx6n0AAAAA2Dcm1f9b/wYD6AOpAAAABgACAAAAAAAAAAEAAAOp/wYAAAPo/1v/WwPoAAEAAAAAAAAAAAAAAAAAAADlAABQAADlAAAAAwFyAfQABQAAAooCigAAAJYCigKKAAAB9AAyAOEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAACD7AgLI/zMAMgOpAPoAAAABAAAAAAH7AsgAAAAgAAIAAAAHAFoAAwABBAkAAACUAAAAAwABBAkAAQAUAKIAAwABBAkAAgAOAJQAAwABBAkAAwAuAKIAAwABBAkABAAUAKIAAwABBAkABQB6ANAAAwABBAkABgAuAUoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADEAOQA5ADAALAAgADEAOQA5ADIAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQALgAgACAAQQBsAGwAIABSAGkAZwBoAHQAcwAgAFIAZQBzAGUAcgB2AGUAZAAuAFIAZQBnAHUAbABhAHIARABJAE4AUwBjAGgAcgBpAGYAdAA6AFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADsARABlAGMAZQBtAGIAZQByACAAMQAyACwAIAAyADAAMQA4ADsARgBvAG4AdABDAHIAZQBhAHQAbwByACAAMQAxAC4ANQAuADAALgAyADQAMgAxACAANgA0AC0AYgBpAHQARABJAE4ARQBuAGcAcwBjAGgAcgBpAGYAdAAtAEEAbAB0AGUAcgBuAGEAdABlAAAAAAADAAAAAwAAABwAAQAAAAACAgADAAEAAAAcAAQB5gAAADgAIAAEABgAJgAnAF8AYAB+AKwA/wExAUIBUwFhAXgBfgGSAscC3SAUIBogHiAiICYgMCA6IEQhIiIS+wL//wAAACAAJwAoAGAAYQChAK4BMQFBAVIBYAF4AX0BkgLGAtggEyAYIBwgICAmIDAgOSBEISIiEvsB////4QAA/+EAAP/hAAAAAP9gAAAAAAAA/08AAP7TAAAAAAAAAAAAAAAA4FPgSuAy4B/fiN6OBWwAAQAAADYAAAA0AAAAMgBIAAAA6ADqAOwAAADsAAAA7ADuAPgA+gD+AQIAAAAAAAAAAAAAAAAAAAAAAGgAfABgAGEAYgBnAGQAnQBmAIMApgCLAGoApwCbAIAAqwCjAKgAqQB9AKwAcwByAIUAmQCPAHgAmACfAJcAewCwAK0ArgCyAK8AsQCKAKQAtgCzALQAtQC6ALcAuAC5AJ4AuwC/ALwAvQDAAL4AmgCNAMUAwgDDAMQAxgCcAJUAzADJAMoAzgDLAM0AkAChANIAzwDQANEA1gDTANQA1QCiANcA2wDYANkA3ADaAJYAkwDhAN4A3wDgAOIApQDjAIwAkgCOAJQAwQDdAMgA5AB+AIgAgQCCAIQAhwB/AIYAbwCJAEEACAB1AGkAdwB2AHAAcQB0AAYBygAAACAA4AABAAIAAwAEAAUABgAHAGgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAHwAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AAACvALEApACzALsAvgDEAMkAzADKAMsAzgDNAKEAzwDSANAA0QDTANYA1ADVANcA2ADbANkA2gDcAN4A4QDfAOAAcACrAGEAYgBmAHQAcwCVAJsApgCqAH0AgwAAAIoAjQAAAKMAAAAAAGQArAAAAAAAAAAAAAAAiwCPAAAAkACTAHsAYACnAAAAZQAAAAAAagB4AHkAAACwALIAwACOAJQAbwCJAGkAdwBBAAgAlgAAAOMAxwAAAGcAawBsAG0AbgBxAAAAdQB2AHoArgC0AK0AtQC2ALcAuAC5ALoAvAC9AAAAvwDCAMMAxQCRAH4AfwCAAIEAggCEAIUAhgCHAIgAAwAAAAAAAP+cADIAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAQAAQEBGERJTkVuZ3NjaHJpZnQtQWx0ZXJuYXRlAAEBASX4GwD4HAwA+B0C+B0D+BgE+zn7jvp8+j0F90AP+QkRlBw7ChIAAwEBBk9ZMS4wMDBDb3B5cmlnaHQgKGMpIDE5OTAsIDE5OTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuRElOU2NocmlmdAAA4EoAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCfAKMAngCWAKgApQCdAKAAmgCbAKYAzgCnAJwAsQCiAKoAlwCkAKkAmQChAJgAqwCsAK0ArgCvALAAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDPANAA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUCAAEABAAHAB8ANACEAQABlgITAiACUAJ+Aq0CyALUAuAC6QL4AzoDTQOLA/gEGgRqBNIE6AV9BeMF8wYGBiUGOwZYBrEHbQeXB+wINQhsCIQImAjmCP0JBwkwCVcJZAmOCasJ8QoqCocKxgsqCzsLZguEC7oL5gwJDCQMOAxIDFoMdQyBDI8M9Q1MDaAN+Q5WDnoO7A8ZDykPSQ9vD4sP1xADEF4QtxEQETIRjRG0EeMSARI4EmQSkxKuEwMTDxNlE6ITuRQmFKUUtRTrFUYV6BZYFmQWfBanFr8W1RcIF0UXURdrF5MXsxfVF/UYARgXGC4YWBhyGUMZmxmsGb0Z0xoDGhAaNBo/GlIajRrQGu8bHxs2G0IbcxvZG/0cZxzGHQodqB2yHeMeTh7jHzsfgiAUIFQgaCCTISshZyF7IcAiJSIyIsQjTCNxI/YkUCToJPklPyWlJeQmHyZYJo8myycEJzwnnif1KBooRChrKJIoqSjFKN4o9ilAKZQp7SpDKpcrCiuBK7sr+iw2LHAsoSzULQMteC3yLmku3S98MA4weTDpMVYxwTHYMfQyDTIlMn4y5zNVM8A0KTSxNR81XTWgNeA2HjZaNpg2x/tMDvtMDvsW6vdEFb0GsvisBfsUBpj9XBXx8SUGDi+s+KwV2/dEOwb3GPtEFdv3RDsGDo33SBbPBqj3awXFx1kGofc2BcbHWAao92sFRwZu+2sFNwao92sFRwZu+2sFUU+9BnX7NgVQT74GbvtrBc8GqPdrBd8Gk8cVNwah9zYF3wYOjfc1+EkVZJ2HoIu7i7WUsK2YCL77zBWzepJ6i0eLUYdlYIEIWPtOFb7fBvcDlrHfi/cGi/N6xDGtCGGcBfddB62AmGqLYQh08b0Hi9ZR1jCWCNZYQAcqfls6iyaLMqJR42cIrX0F+3oHaZN9qYuqCK8lYweLM8pG4oEIDnnp+L8Vfot/l4uZCL4Hi5mXl5iLmIuXf4t9CFgHi31/f36LCE8Ev4usqou4CMwHi71qq1eLV4tqa4tZCEoHi16sbL+LCPcf/AAVi5mXl5iLmIuXf4t9CFgHi31/f36Lfot/l4uZCKQ1Fb+LrKqLuAjMB4u9aqtXi1eLamuLWQhKB4terGy/iwj7gZEVzQb3iPlcBUkGDvcD9/UW8QY+9w7X7Uy3VEAFaL1px3Kyw727yovNi9FbxjSLL4tcTYs/i0+lVq9YU1lhUos9iyjNSdyLwYu1n7OzCPtV9wIVi7ejramqCO37MAV8eG1zbItfi2u0i7wIr/fqFYuqn6iqi6mLnnGLcotZZ2Vyc3Wveq+LqggO+0y1+KwV8dUF8SUHDvso9z35XBVB+wNe+zKL+x2L+xWy+zXb+wgIrQZr9wh49xOL9xuL9yaX9yuy9x0IDvsowCcV1fcDuPcyi/cdi/cVZPc1O/cICGkGq/sInvsTi/sbi/smf/srZPsdCA6LqvjwFe9TJ1SnVu3Hh/sIBcsGh/cI7U+nwCfC78NvvylPj/cIBUsGj/sIKccFDvd695j3uRX7aTv3aftp2/dp92nb+2n3aTsGDvtMtUEV8dUF8SUHDp6393YV98Hx+8EGDvtMtRbx8SUGDvsokIUV2wb3GPloBTsGDo2t9ycViyzSUdyL3IvSxYvqCPg2B4vqRMU6izqLRFGLLAjxFouooKGoi6iLoHWLbgj8NgeLbnZ1botui3ahi6gIDo33Lxbx+VwlBiVABfsAB/HWBQ6NrRb3xPH7TAb3Kve1BavIjZ2L0IvqXt8hizaLR0WLNghT8cUHi6yfnamLvYuLYItni2SLd3loCPtM++8FDo33L/fWFc2Lmn+LVAglB4toeHVsi2yLeKKLqwjAJVEHi/sE4WPMi8mLsqeksKCqkaCL6Yvwi6JMssWukJuL7Yvmf6dwq3mhZadUizeLRUiLNwhQ8cUHi6CZqK+LqouedotuCC8Hi1Z3gk6LCA6N92gW8fW861r3XyX7XyYG9y34kgX7AAb7J/ySBSv3XwcOjffm+VwV+7j8FOUGkZeWpq6Lp4ufdItvCPs7B4tqeXdti22LdZ+LrgilJW0HiyzSUdyL3IvSxYvqCPdMB4vdW7dGi2eLbXx4eQj3VPdeBw6NrfcnFYss0lHci9yL0sWL6gj3YQeLtIekead6pWqfZ4tpi2+Da3wI6weLqKChqIuoi6B1i24I8QaL6kTFOos6i0RRiywI8ftqFYuqo5+li6WLo3eLbAj7YAeLbHN3cYtxi3Ofi6oIDo3EFvcABvdB+PYF8fvE+0bl3fcEBw6N94D4YhWLb3N1cYtxi3Ohi6cI8weLp6OhpYuli6N1i28I+15jFYs3jW68ZFpmiW2L+wCLNJJzoGyiaLVvxovGi7Wnoq6gqpKji+KL9wCJqVqwvLKNqIvfCIvZgaRwrXCuYZ9di12LYXdwaHBpgXKLPQj3XvwQFYtvc3Vxi3GLc6GLpwj3IAeLp6OhpYuli6N1i28IDo2t9/wVi2KPcp1vnHGsd6+LrYunk6uaCCsHi252dW6Lbot2oYuoCCUGiyzSUdyL3IvSxYvqCPg2B4vqRMU6izqLRFGLLAjxFouqo5+li6WLo3eLbAj7YAeLbHN3cYtxi3Ofi6oIDvtMtRbx8SUG9xEE8fElBg77TLVBFfHVBfElB/cRBPHxJQYO93r4vfiWFfyO+3sFTwf4jvt7BdsH/CH3Sfgh90kFDvd6uvfNFfiO2/yOBvusBPiO2/yOBg73erqDFfiO93sFxwf8jvd7BTsH+CH7Sfwh+0kFDour+I8V8cUGi6ynnaOLp4uhdItvCFYHi3eIdoF6CEsjBXxygXCLbggu8dsHi52TnJSbCND3CgWYoY6ji8+LyISkcK9wr2GgWos2i0ZHizcI8fzKFfHxJQYO+EL4lfguFYs7RvsLP4tZi2qqi8OL3873A+KLu4ulZ4tcCPcS9x4VTAZ3TgWJBnfBW6Nci/sgiy37Iov7GIs4xEbhi8mLqquoqgiNBpBhp3a4i+CL9yP3BYv3O4v3Q/sy9xD7UIv7Yov7QPs0i/tci/tl9zv7L/dli/cci/cTy8z2CD4GXFIoWyqL+0GL+xr3Fov3N4v3MPca9yP3PIv3Iov3EimL+yCLK0P7C0uLeouFl4uci5SPnZGdCA6w95L3jRUlBr33lgWNBvte/I8V8Qap9y0F9x8GqfstBfEG+zP5XAU2Bg7Duxb3Hwb3GIvG0Yv3EAizB4vVdbZborinpKeL1wilB4voWuL7GIsI+ykG8fwSFbgG1YuYZotEi0WFWTmLCF8G+JYEtQbOi6Jqi0yLSnloR4sIXQYOsPgI918VJWgGi1Nne2+LXYt7q4u0CPgAB4u7l66+i7KLo2mLYwhp8bMHi+5F0i2LKItIRIsuCPwcB4v7FuVl2Yvmi9LYi+MIDsO7FvciBvcMi8/Ki/cYCPfhB4v3B0vQ+weLCPsrBvErFboGx4uea4tTCPvrB4tOdW9SiwhcBg6Luxb3xPH7Xvdl90Tr+0T3Zfde6/vEBg6Luxbx98T3ROv7RPds917r+8QGDsO19zwVi/sI41Hei96L48WL9wgI93T7SzHc+xoHi1prdGaLZotroou8CPgMB4u8q6Kwi7CLq3SLWghn8a8Hi/cIM8U4iziLM1GL+wgIDsO7FvH30fcS+9Hx+Vwl+8X7EvfFJQYO+zq+FvH5XCUGDmb3sflcFSX8pgaLRF98cot2i3aXfZkIO0sFpG+2Z8yL9wGLzNuL6QgOw7sW8fdpBsLy9wj70AX3AAb7Ofg/9x/3sQUlBvsp+9kFiffZJQYOi7sW98Tx+1749iUGDvdOuxbx+EWNBu/7xgW+BvD3xgWN/EXx+VwoBvsW/A0FiQb7F/gNBSkGDtW3FvH4QI0G9zD8QAXr+Vwl/EGJBvsu+EEFKQYOw7X3PBWL+wjjUd6L3ovjxYv3CAj4DAeL9wgzxTiLOIszUYv7CAjxFou8q6Kwi7CLq3SLWgj8DAeLWmt0Zotmi2uii7wIDrC7FvH3qr8G1ou4p6e5o7KQtYvJi+CAuGiwaLBimFOLCPstBvErFcAG24uLVItIi0SKWjiLCFoGDsP3JPi0FYu8q6Kwi7CLq3SLWgj8DAeJB2KsV025ZgWEiISKg4tmi2uii7wIJRaL+wjjUd6LsYuxl6qkCMdav8lMvgWVoJCji6cI+AwHi/cIM8U4iziLM1GL+wgIDsP3Kvj8FcAG1ouXZItDi0SAY0SLCFEGJfweFfH3xMgG6vvEBfcABvsC99kFzK+ix4vdi/ceUNL7DYsI+zgGDq/4DvjBFYvaR90li/sJi1E0i/sAizKiUeNnCNRtBb13lH+LP4tKhmJGi1eLd6+LsAirJWUHiyvWQu6L9xiLt+SL9wyL83rEMa0IPaoFVqCGnovCi7qYuMOLv4ufZItcCHTxBw5l9wcW8fj89wrr++Yr9woGDsP4DvlcFSX8sgaLWXBzZ4tni3Cji70I+LIl/LwHiy7VQuaL5ovV1IvoCA6w+B75XBX7AAY5/IUFiQY6+IUF+wAG9yX9XAXlBg73c/jV+VwV+wAGWvxjBYkGOPhjBT0GO/xYBYkGWPhYBfsABvX9XAXrBtj4YgWNBtn8YgXrBg6eiRb3AAbj94Tk+4QF9wAG+yf4Cfcc9+cF+wAGPftnPvdnBfsABvcZ++cFDp33Ixbx98EG9yD4LwX7AAY5+68FiQY5968F+wAG9yD8LwUOZpoW98Pr+1gG91j4qwXc+7kr90oH+1T8ogUO+yj3avlcFfsw/cD3MMdJ+UjNBg77KOD5YhU7BvcY/WgF2wYO+yiTJxX3MPnA+zBPzf1ISQYO93q9968V2wb3Pvfn9z775wXbBvtt+EEFSQYO9xb7EQT4iL38iAYO+0z3JPlcFSVBBSXxBw6L938W8ff1Bov1R8E2i12LZXtwcHBwe2WIXgjuBpGspZ2li7GLmHGLaQhWB3aMfY19i/sUi2pTi/sIi/sEynS6i7yLoaCmsAiNBuwEi2J2c2mLaot3pYuyi8GvnbeLlIuTipaJCA6etRbxuQalbp90vou0i6manayXoZCqi8MI91UHi9SIqH6geqZynlqLY4treHVqCIn3jyUG91/8txWLYnxvaItsi3eli7AI91kHi6uhoqiLsouWb4trCA6L9yr39RWLsZ6fqouqi554i2II8QaL6VHPLYtNi1xuc199cYZni2II+zsHi2KQZ5lxo1+6bsmLuouwnKanpaaasou1CCUGiXWCbmSLbIt4nYurCA6e9yT38xWLq5ansouoi6F0i2sI+1kHi2Z3cWyLaIt8p4u0CPD7ORXx+Vwl+4+JBnWsa55ji1qLcnh6cH52iG6LQgj7VQeLU5Bsl3Wdaql8tIu+i5+ipagIDov35fdrFfcgB4vkUdAti02LXG5zX31xhmeLYgj7OweLYpBnmXGjX7puyYu6i7Ccpqelppqyi7UIJQaJdYJuZItsi3idi6sI0Af3HgSLsZ6fqouqi553i2UIUScHDvsowhbx+D/X2z/VBouhlpieiwi561wGSYtKZYspCEZZO70HDp61UBWY+wjYZ8mL9wCLuNuL0Aj4zSVdB3God6JZi1qLcnh6cH52iG6LQgj7VQeLU5Bsl3Wdaql8tIu0i6ueoawIjScGi2t9dGqLaIt5pYqjCPglBIu0mqeui6qLn3GLZgj7WQeLa3V0botki4Cni6sIDp61FvH36QaLuJiksYuri510i2YI+/Px+BkHi+ZVrFiLXItvdHZrCIn3kiUGDvtMtRbx+I8lBvIE8fElBg77TLV7FYtBfHhaiwgrB+uL0b6L7wj4xSUH8gTx8SUGDp61FvH3Iga82Of7bwX3Awb7JvfB9w33YgUlBvsP+3EFifg+JQYO+0yv9xwVi/sKxXPpiwjrB2SPgJaLsQj4zSUHDvdytRbx9+kGi7iYpLGLq4uddItmCPvz8ffpB4u4mKSxi6uLnXSLZgj78/H4GQeL5k+sWItVi3B0cm95pG6lX4tci290dmsIibwlBg6etRbx9+kGi7iYpLGLq4uddItmCPvz8fgZB4vmVaxYi1yLb3R2awiJvCUGDous9z4Vi2KQZ5lxo1+6bsmLyYu6qKO3maWQr4u0CPc7B4u0hq99pXO3XKhNi02LXG5zX31xhmeLYgjxmxWLsZ6fqouqi553i2UI+1sHi2V4d2yLbIt4n4uxCA6etfthFfH3j40GoWqreLOLvIuknpymmKCOqIvUCPdVB4vDhqp/oXmsbZpii1iLd3Rxbgi5JQf3X/vzFYtrgG9ki26LdaKLqwj3WQeLsJ+lqouui5pvi2IIDp73ifthFfH5XCVdBnGod6JYi2KLbXx5an91hmyLUwj7VQeLQo5umHaccKR4vIuzi6ueoawIjQYm97wVi7Sap66LqoufcYtmCPtZB4trdXRui2SLgKeLqwgOL7UW8ffBBoveyKa2i5aLlYmVhwj3AAdQi2l0YWYIwSUHDnn31/gBFYrfT8s4izmLR02LNYtHslvLcwi8eQWyfJd4i2+LaW92botli36oh6cIKwaPJ89W24vji8vQi9+Lx3PBP6gIT6MFZZqGnYuei6WdpKuLpoujeYxpCA77OrX4jxVYO777yAaLVapK54sItesGXot5jou6CPetyttM9y4lBw6e9+/4jxUl++kGi15+cmWLa4t5oouwCPfzJfwZB4swwWq+i7qLp6KgqwiNWvEGDnn39fiPFfsABkf72AWJBkf32AX7AAb3GPyPBeUGDvc6+Kv4jxX7AAZO+88FiQZV988FOwZS+88FiQZN988F+wAG9wz8jwXlBsP3wQWNBsP7wQXlBg5lgBb3AAbQ9y/Q+y8F9wAG+xP3l/cN94wF+wAGTPskTPckBfsABvcL+4wFDnmK+I8V9x/8eAV0+wp+fWKLCHQrpwbIi8WloeYI9yb45wUiBkb70AWJBkX30AUOVJwW963r+zkG9zn33gXc+6Ax9ywH+zn75AUO+yiO96kVsIumW4tICPsrB4tFuGLAiwjBx3kGa4t/pIu1CPcpB4vnYqtvkAiNB6eQtK6L4wj3KweLtJekq4sIncdVBlaLXmKLRQj7LAeLSnBcZosIDvso0vuOFdv6fDsGDvso92/35RVmi3C6i8wI9ywHi9FetFaLCFVPnQari5dyi2II+ysHizO0aKeGCIkHb4Zia4svCPspB4thf3Jriwh5T8EGwIu4tIvRCPcrB4vOpruwiwgO93r4g/feFXRocmZji3CLZZ9mm2WdZJppi0iLZ151YQivSwWiraSws4umi7F3sHuxebJ8rYvOi6+4obUIDvsWw/thFfcUBmT4rAVZBnHVFfHxJQYOjfc46xV6kYCbi6MI92sHi5qOlpCUkJSSkpOOCPyJBLTfBrGOqpuio6WmmrKLtwglBol2hXV0gwj3zwefhJZ5i2gI8QaL5VjMOZII1mJAB1iGZHB2ZH1xhmeLYgj7QAeLYpBnmXGgZbJvvocIDo2Y974V2QaZZ5Rgi26LbIFsenJ1iWt/gYUINQeYkbCVqIu4i+J4sYu6i6ybqrYIR9AFc254iHSLb4trk3WOnqyYr4uzi7WCoIKkCOjS+wgGe7V7xIu/i8ObubqLtouXZ4tnCGPruAeL9wY5vEmL+weLXC+LIotHmGakXAhUBg77X/s5ehXHBvhJ+X4FTwYOjfceFuv3QPcGzfsGvPcGzSkG9wr3+wUlBjz7rwWJBjz3rwUlBvcK+/sFKUn3Blr7Bkn3BgYOjbj4BxXbBkD8NQWEZnp0aIt+i3yNf48IgC0FnIaYiKKL9Yut1J3xCNL4IgXZBpjbBT4GnfIFlcWZm66LmIuYh5iJCJnnBXCNeI15i0uLVXN2+wcIdPsUBTcGDov32fjZFYvnRrhJi0GLTFqLIotFkWzNakF0eWqL+weLLo9mwGsI9wpDBaV7kX+LWYtWe3Jii2uLdKiLrgi0NmEHi1GtNvcBi7iLuaCirJ+okKiLw4vcg6VIrdywkaaL7IvzhKNbqggqygVfp4iTi7uLs5WstYusi5xti2wIYeAH+1L7cxWLqKGjp4umi6Jzi24IKAeLbnRzcItvi3Wji6gIDo2P92oVtGO0tQWidrB9s4uzi7CYoqAItGK0tGK0BZ+hmbCLtIuzfrB2owi0tGO0YmEFc6BmmGOLY4tmfXR3CGK1YmK0YQV2dH5mi2OLY5lloHUIqu8Vi8e8vMeLx4u8WotPi09aWk+LT4tavIvHCA77TMD4rBXb90Q7Bg4v95j5XBUlQQUl8Qf7IPdEFSVBBSXxBw7D+CL4cxX7X/te91/7XgXxBybv8O8F+03xFftf+173X/teBfEHJu/w7wUO+xX3afhzFftf+173X/teBfEHJu/w7wUO+xWn1hX3X/de+1/3XgUlB/AnJicFDrDCFvH4P9fbP9UGi6GWmJ6LCLnrXAZJi0pliykIRlk7vQf3ZPw/FfH4jyUG8gTx8SUGDrDCFvH4P9fbP9UGi6GWmJ6LCLnrXAZJi0pliykIRlk7vQf3ZPu3FYv7CsVz6YsI6wdkj4CWi7EI+M0lBw73Fvd5BPiI6/yIBg6L9yD7YRXl+O33GuX7Gvd2Mft2+xox9xoGDov3IPiCFfsaO/ca+9X7Gjv3Gvtu5fdu9xrb+xr31fca2/sa924xBg77TKj3vhWLaKhurouui6ioi66Lrm6oaItoi25ui2gIDtX3SvthFdP59tP99tP6KftABvsWizNNi/sWiyPiOeKLCA73FtP3+BWLKds77Yvti9vbi+2L7TvbKYspizs7iykIDvtMtUEV8dUF8SUHDi+dQRXx1QXxJQf3IPtEFfHVBfElBw4vnfisFfHVBfElB/cg+0QV8dUF8SUHDsP3adYV91/3Xvtf914FJQfwJyYnBftNJRX3X/de+1/3XgUlB/AnJicFDvkK9wgW8fElBvfhJRXx8SUG9+ElFfHxJQYO9zv4NvcXFYuZl5eYi5iLl3+LfQhYB4t9f39+i36Lf5eLmQhPgRWLXqxsv4u/i6yqi7gIzAeLvWqrV4tXi2pri1kI+7X4hRWLmZeXmIuYi5d/i30IWAeLfX9/fot+i3+Xi5kIT4EVi16sbL+Lv4usqou4CMwHi71qq1eLV4tqa4tZCPds/I0Vi5mXl5iLmIuXf4t9CFgHi31/f36Lfot/l4uZCE+BFYterGy/i7+LrKqLuAjMB4u9aqtXi1eLamuLWQj7JfsbFc0G94j5XAVJBg6L9+YWJVEGi2pveXOLb4t1oounCMAHi5+OoJWcCMvzBZqklaaLqAjoJTsHi3mDeoJ7CEb7CgV+dYhzi0eLTpJypmemZ7V2vIvgi9DPi98IJfjKFSUl8QYO+0zP+V8V+wAG9xj7IQXNBg77TKf40hXNBvcY9yEF+wAGDvtMV/jSFdkGzurOLAXZBin3IQUtBg77TPdo+U8VinF8eG+LdYsws2yLS4tyWX9OCL4GjKWanqeLoovlY6qLy4ukvZfICA77TF/48xX3psf7pgYO+0z3WPlfFYZmdGRAi0CLdLKGsAhYBpkyv1zji+OLv7qZ5AgO+0y7+N4V5fExBg77TGr43hXl8TEG9zYlFeXxMQYO+0yC+SgVi1S5XMOLw4u5uYvDi8JdulOLU4tdXYtTCLQWi62mpq2LrYumcItpi2lwcGmLaYtwpoutCA77TJ81FZx3BZiQl42Zi6KLoXyLdItpa4R1i3WLdZJ2kwh6YQWehK5/sovCi8+li8yLq3i2SYuBi4CKgYoIuccFXQYO+0xV+NIVzQb3GPchBfsABtP7IRXNBvcY9yEF+wAGDvtM90n7ORV9g3qGdYtxi3Sfi6uLtKO6s7EIWAZXZ2Jri0qLU7Zow4u3i6yWn5YIDvtM94L5XxU9BkgsSOoFPQbt+yEF6QYO+Qr3eQT6fOv+fAYO94WNFvcABrL3LQX3IPst98Tx+173ZfdE6/tE92X3Xuv8GQbg/GMV+wgG5/gDBaMGDvsW9y74LhXT92gGi8pZrFSLbYtygXl7enuAdIlsCM0GjqGck5yLo4uUe4t3CHMHfYyCjIKLOItyZ4tFi0e3faqLq4uZmJyhCI0GygSLeH18dYt2i4CWi52LrKCWqIuQi5GKkooIDou7FvfE8fte94cG9wzrBeUH+wwrBfepJfv5B1tlBTEHu7EFDsOVexWxdbPfBatounq5i96L48WL9wgI+AwHi6uEp4CgCL3yZaFjNwVprl2cXos4izNRi/sICPwMB4tskXCXdAjh90MVifeuBou8q6Kwi66LqnaOXQiJJxWN+60Gi1prdGaLZ4tsoYm4CA73hPe09zIVi2NwaWGLYYtwrYuzCPggB4uzpq21i7WLpmmLYwj3xPcyFfvEZ4kGfaFwn1+LKotTPIsxCPwWB4sxwzzsi6yLrpycogiNaffE8fte92X3ROv7RPdl914GDvsWnfiNFYtSs2HJi8mLs7WLxAj3BgeLxGO1TYtNi2Nhi1II04kVi6KWl56LnouWf4t0CPsDB4t1gH94i3iLgJeLoQgO91735ff1FYuxnp+qi6qLnneLZQhRJwf3XscVi+RR0C2LZItlfXJ1cKJrmGGLL4tQTIUxCO4GkaylnaWLsYuYcYtpCFYHdox9jX2L+xSLalOL+wiL+wTKdLqLvYu4o6O7n2S5ac6M5IzKy4vjCCUGiXWCbmSLbIt4nYurCND3Xgf7xEkVi2J2c2mLaot3pYuyi8GvnbeLlIuTipaJCA77TLUW8fiPJQYO+0yv9xwVi/sKxXPpiwjrB2SPgJaLsQj3kwe9tgXTB1lgBfeGJfvgB1lfBUMHvbcFDov3HfdlFYn3JAaLsZ6fqouli5x9j3IIjEEVjfskBotleHdsi3GLepmHpAj7GvsnFa12tNAFpXCvfLeL6YvF0IvqCPdTB4urhKh+pQi83mmgYkYFcaZnml+LLYtRRossCPtTB4trkm6YcQgO916s9z4Vi2KQZ5lxo1+6bsmLsouvmaGgonO4gLCLuouwnKanpaaasou1CCUGiXWCbmSLbIt4nYurCND3XvcgB4vkUdAti2WLZoBxdHSeZ5phi02LXG5zX31xhmeLYgj3xJsVi7Gen6qLqoued4tlCFEnB/texRWLsZ6fqouqi553i2UI+1sHi2V4d2yLbIt4n4uxCA6etRbx+KoGi82aobGLsouUdotvCDsHi2t+hGyLCDEHp4ubhItxCPtSB4thfIJuiwgrB9aL0puL9xAI90QHi752qWWgvKqVoYvSi/Fl2/sIiyOLXDyLNAgO93q692kV+I7b/I4G91H7ixWLaKhurouui6ioi66Lrm6oaItoi25ui2gI+DIEi2iobq6LrouoqIuui65uqGiLaItubotoCA73TbB6FccG+En5fgVPBvwK+5MVtIuVhIttCFcHi3x+fHqLeYt/mIufCKI7aQeLRcNzwYvZi6u/i7wIvgeLrIKga56vnpCgi6gItAeLvGm+QYtJi11ji1MIa9ulB4uXlJ2gi52Ll36LeghhB4pvgIVkiwj34vywFdvJqc1t9wc7+wdQBun3vwU7Bin7wwVN9yMHDvdNnXoVxwb4Sfl+BU8G/A78ThXb+D07BklgBUMHzbYF9/n9FBXbyanNbfcHO/sHUAbp978FOwYp+8MFTfcjBw77FOj3sxXb+D07BklgBUMHzbYFDvd6ztgVxFL3RPdF90X7RcPE+0T3RPdE90VTw/tF+0T7RPdEUlP3RftFBQ74Qvfd+I8V6wa4i6t6i2SLXmp5SosIQAZJ+4cVzfdLvgb3DftLBdsG+w33TQXGkryri9qL21uyKosI+zQG+D/7ZxWL+zf7FvsZ+zSL+zSL+xb3GYv3N4v3N/cW9xn3NIv3NIv3FvsZi/s3CP0gFov7XPc2+zb3XIv3XIv3Nvc2i/dci/dc+zb3Nvtci/tci/s2+zaL+1wIDrC7FvH3Lr8G1ou4p6e5o7KQtYvJi+CAuGiwaLBimFOLCFj3ECUG8ftwFcAG24uLVItIi0SKWjiLCFoGDvso0vtDFdv38jsG9yoE2/fyOwYOw/cq+PwVugbHi55ri1MI++sHi051b1KLCFz3ktHNRQYl/DQV9yIG9wyLz8qL9xgI9+EHi/cHS9D7B4sI+yv7vFtJuwYO902dehXHBvhJ+X4FTwb8DvxOFdv4PTsGSWAFQwfNtgX3if0UFfdy0/sKBur3NAWZopSci64IrAeLwFmxT4tLi1thi1MIZ9uqB4ufmZaci5mLnICLdwh0B4t9hn6Efwj7FvtoBQ73err3aRX4jtv8jgYOi/cENRWcdwWYkJeNmYuii6F8i3SLaWuEdYt1i3WSdpMIemEFnoSuf7KLwovPpYvMi6t4tkmLgYuAioGKCLbDBbGPqZqio6WmmrKLtQglBol1gm5ki2yLeJ2Lqwj3YweLsZ6fqouqi554i2II8QaL6VHPLYtNi1xuc199cYZni2II+zsHi2KQZ5lxn2axcL2ECA6L9xv39RWLsZ6fqouqi553i2UI+1sHi2V4d2yLbIt4n4uxCFr4WhWnY9WuBaFvmWaWXQiJiQWBmHiVeItNi1xuc199cYZni2II+zsHi2KQZ5lxo1+6bsmLyYu6qKO3maWQr4u0CPeCB4vZfuZZzQjKqG+zR2sFdZ9xm2uWCDhfBap/pX2feggO93r3mPMV2/c192nb+2n3NTv7NftpO/dpBvtp+50V+I7b/I4GDrD3FzUVnHcFmJCXjZmLoouhfIt0i2lrhHWLdYt1knaTCHphBZ6Ern+yi8KLz6WLzIureLZJi4GLgIqBigi2wwXYmsPRi9kItyVoB4tTZ3tvi12Le6uLtAj4AAeLu5euvouyi6Npi2MIafGzB4vuRdItiyiLSESLLgj8HAeL+wzYYdSFCA6etfthFfH3j40GoWqreLOLvIuknpymmKCOqIvUCPdVB4vDhqp/oXmsbZpii1iLd3Rxbgj3jyUH91/8wBWLa4BvZItui3Wii6sI91kHi7CfpaqLrouab4tiCA74Qvig97MVglleY1KLNYtT2Yvei+K+0uSLxIu4ZZZcCM0Gfuw/wTCL+xiLPCuL+xaL+xLfKPcWi+OL0smd6Qjv0BWL+zf7FvsZ+zSL+zSL+xb3GYv3N4v3N/cW9xn3NIv3NIv3FvsZi/s3CP0gFov7XPc2+zb3XIv3XIv3Nvc2i/dci/dc+zb3Nvtci/tci/s2+zaL+1wIDvd6+G33BRXb96z8jjv4PgYO+xSW+NwV26oGi5+ZlpqLmYucgIt3CHQHi32GfoR/CPsU+2gFVfdw0/sKB+r3NAWZopSci64IrAeLwFmxT4tNi1thi1MIDvsU7/huFbSLlYSLbQhXB4t8fnx6i3mLf5iLnwiiO2kHi0XDc8GL2Yurv4u8CL4Hi6yCoGuer56QoIuoCLQHi7xpvkGLSYtdY4tTCGvbpQeLl5SdoIudi5d+i3oIYQeKb4CFZIsIDvkA9zr3wBXT9+73E8372kn3Ewb5E/vuFdP4MPsGBvsJ+8H7CffBBfsG/DDT9+6NBvcc++4FtAb3HffuBY0GDvsC0PjyFYutpqati62LpnCLaYtpcHBpi2mLcKaLrQhYFotNvVnJi8mLvb2LyYvJWb1Ni02LWVmLTQgOnvfv+I8VJfvpBotefnJli2uLeaKLsAj38yX9XPH3ZY0HkYWVh5qLlouWj5eUlpSXmZSeCI1a8QYOsPeS940VJQa995YFjQb7XvyPFfEGqfctBfcfBqn7LQXxBvsz+VwFNgZ1qxXNBvcY9yEF+wAGDrD3kveNFSUGvfeWBY0G+178jxXxBqn3LQX3Hwap+y0F8Qb7M/lcBTYGJasV2QbO6s4sBdkGKfchBS0GDrD3kveNFSUGvfeWBY0G+178jxXxBqn3LQX3Hwap+y0F8Qb7M/lcBTYGOLcV5fExBvc2JRXl8TEGDrD3kveNFSUGvfeWBY0G+178jxXxBqn3LQX3Hwap+y0F8Qb7M/lcBTYGnfdBFfsABvcY+yEFzQYOsPeS940VJQa995YFjQb7XvyPFfEGqfctBfcfBqn7LQXxBvsz+VwFNgZQ9w8Vi1S5XMOLw4u5uYvDi8JdulOLU4tdXYtTCLQWi62mpq2LrYumcItpi2lwcGmLaYtwpoutCA6w95L3jRUlBr33lgWNBvte/I8V8Qap9y0F9x8GqfstBfEG+zP5XAU2Bvc29zEVinF8eG+LdYsws2yLS4tyWX9OCL4GjKWanqeLoovlY6qLy4ukvZfICA6Luxb3xPH7Xvdl90Tr+0T3Zfde6/vEBt2rFc0G9xj3IQX7AAYOi7sW98Tx+173ZfdE6/tE92X3Xuv7xAaNqxXZBs7qziwF2QYp9yEFLQYOi7sW98Tx+173ZfdE6/tE92X3Xuv7xAagtxXl8TEG9zYlFeXxMQYOi7sW98Tx+173ZfdE6/tE92X3Xuv7xAb3DvdBFfsABvcY+yEFzQYO+zq+FvH5XCUGfasVzQb3GPchBfsABg77Or4W8flcJQYtqxXZBs7qziwF2QYp9yEFLQYO+zq+FvH5XCUGQLcV5fExBvc2JRXl8TEGDvs6vhbx+VwlBqX3QRX7AAb3GPshBc0GDtW3FvH4QI0G9zD8QAXr+Vwl/EGJBvsu+EEFKQb3vfcxFYpxfHhvi3WLMLNsi0uLcll/Tgi+Boylmp6ni6KL5WOqi8uLpL2XyAgOw7X3PBWL+wjjUd6L3ovjxYv3CAj4DAeL9wgzxTiLOIszUYv7CAjxFou8q6Kwi7CLq3SLWgj8DAeLWmt0Zotmi2uii7wIj/jUFc0G9xj3IQX7AAYOw7X3PBWL+wjjUd6L3ovjxYv3CAj4DAeL9wgzxTiLOIszUYv7CAjxFou8q6Kwi7CLq3SLWgj8DAeLWmt0Zotmi2uii7wIP/jUFdkGzurOLAXZBin3IQUtBg7Dtfc8FYv7CONR3ovei+PFi/cICPgMB4v3CDPFOIs4izNRi/sICPEWi7yrorCLsIurdItaCPwMB4taa3Rmi2aLa6KLvAhS+OAV5fExBvc2JRXl8TEGDsO19zwVi/sI41Hei96L48WL9wgI+AwHi/cIM8U4iziLM1GL+wgI8RaLvKuisIuwi6t0i1oI/AwHi1prdGaLZotroou8CLf5YRX7AAb3GPshBc0GDsO19zwVi/sI41Hei96L48WL9wgI+AwHi/cIM8U4iziLM1GL+wgI8RaLvKuisIuwi6t0i1oI/AwHi1prdGaLZotroou8CPdQ+VEVinF8eG+LdYsws2yLS4tyWX9OCL4GjKWanqeLoovlY6qLy4ukvZfICA6v+A74wRWL2kfdJYv7CYtRNIv7AIsyolHjZwjUbQW9d5R/iz+LSoZiRotXi3evi7AIqyVlB4sr1kLui/cYi7fki/cMi/N6xDGtCD2qBVaghp6Lwou6mLjDi7+Ln2SLXAh08Qdt+A4VPQZILEjqBT0G7fshBekGDsP4DvlcFSX8sgaLWXBzZ4tni3Cji70I+LIl/LwHiy7VQuaL5ovV1IvoCPt6+NwVzQb3GPchBfsABg7D+A75XBUl/LIGi1lwc2eLZ4two4u9CPiyJfy8B4su1ULmi+aL1dSL6Aj7yvjcFdkGzurOLAXZBin3IQUtBg7D+A75XBUl/LIGi1lwc2eLZ4two4u9CPiyJfy8B4su1ULmi+aL1dSL6Aj7t/joFeXxMQb3NiUV5fExBg7D+A75XBUl/LIGi1lwc2eLZ4two4u9CPiyJfy8B4su1ULmi+aL1dSL6Aj7UvlpFfsABvcY+yEFzQYOnfcjFvH3wQb3IPgvBfsABjn7rwWJBjn3rwX7AAb3IPwvBX34TxXNBvcY9yEF+wAGDp33Ixbx98EG9yD4LwX7AAY5+68FiQY5968F+wAG9yD8LwVA+FsV5fExBvc2JRXl8TEGDmaaFvfD6/tYBvdY+KsF3Pu5K/dKB/tU/KIF9735rxU9BkgsSOoFPQbt+yEF6QYOi/d/FvH39QaL9UfBNotdi2V7cHBwcHtliF4I7gaRrKWdpYuxi5hxi2kIVgd2jH2NfYv7FItqU4v7CIv7BMp0uou8i6GgprAIjQbsBItidnNpi2qLd6WLsovBr523i5SLk4qWiQj7B/f4Fc0G9xj3IQX7AAYOi/d/FvH39QaL9UfBNotdi2V7cHBwcHtliF4I7gaRrKWdpYuxi5hxi2kIVgd2jH2NfYv7FItqU4v7CIv7BMp0uou8i6GgprAIjQbsBItidnNpi2qLd6WLsovBr523i5SLk4qWiQj7V/f4FdkGzurOLAXZBin3IQUtBg6L938W8ff1Bov1R8E2i12LZXtwcHBwe2WIXgjuBpGspZ2li7GLmHGLaQhWB3aMfY19i/sUi2pTi/sIi/sEynS6i7yLoaCmsAiNBuwEi2J2c2mLaot3pYuyi8GvnbeLlIuTipaJCPtE+AQV5fExBvc2JRXl8TEGDov3fxbx9/UGi/VHwTaLXYtle3BwcHB7ZYheCO4GkaylnaWLsYuYcYtpCFYHdox9jX2L+xSLalOL+wiL+wTKdLqLvIuhoKawCI0G7ASLYnZzaYtqi3eli7KLwa+dt4uUi5OKlokIQPiFFfsABvcY+yEFzQYOi/d/FvH39QaL9UfBNotdi2V7cHBwcHtliF4I7gaRrKWdpYuxi5hxi2kIVgd2jH2NfYv7FItqU4v7CIv7BMp0uou8i6GgprAIjQbsBItidnNpi2qLd6WLsovBr523i5SLk4qWiQj7LPhOFYtUuVzDi8OLubmLw4vCXbpTi1OLXV2LUwi0Foutpqati62LpnCLaYtpcHBpi2mLcKaLrQgOi/d/FvH39QaL9UfBNotdi2V7cHBwcHtliF4I7gaRrKWdpYuxi5hxi2kIVgd2jH2NfYv7FItqU4v7CIv7BMp0uou8i6GgprAIjQbsBItidnNpi2qLd6WLsovBr523i5SLk4qWiQjQ+HUVinF8eG+LdYsws2yLS4tyWX9OCL4GjKWanqeLoovlY6qLy4ukvZfICA6L9+X3axX3IAeL5FHQLYtNi1xuc199cYZni2II+zsHi2KQZ5lxo1+6bsmLuouwnKanpaaasou1CCUGiXWCbmSLbIt4nYurCNAH9x4Ei7Gen6qLqoued4tlCFEnB3z3qxXNBvcY9yEF+wAGDov35fdrFfcgB4vkUdAti02LXG5zX31xhmeLYgj7OweLYpBnmXGjX7puyYu6i7Ccpqelppqyi7UIJQaJdYJuZItsi3idi6sI0Af3HgSLsZ6fqouqi553i2UIUScHLPerFdkGzurOLAXZBin3IQUtBg6L9+X3axX3IAeL5FHQLYtNi1xuc199cYZni2II+zsHi2KQZ5lxo1+6bsmLuouwnKanpaaasou1CCUGiXWCbmSLbIt4nYurCNAH9x4Ei7Gen6qLqoued4tlCFEnBz/3txXl8TEG9zYlFeXxMQYOi/fl92sV9yAHi+RR0C2LTYtcbnNffXGGZ4tiCPs7B4tikGeZcaNfum7Ji7qLsJymp6WmmrKLtQglBol1gm5ki2yLeJ2LqwjQB/ceBIuxnp+qi6qLnneLZQhRJwek+DgV+wAG9xj7IQXNBg77TLUW8fiPJQZ9zhXNBvcY9yEF+wAGDvtMtRbx+I8lBi3OFdkGzurOLAXZBin3IQUtBg77TLUW8fiPJQZA2hXl8TEG9zYlFeXxMQYO+0y1FvH4jyUGpfdkFfsABvcY+yEFzQYOnrUW8ffpBou4mKSxi6uLnXSLZgj78/H4GQeL5lWsWItci290dmsIibwlBvek91QVinF8eG+LdYsws2yLS4tyWX9OCL4GjKWanqeLoovlY6qLy4ukvZfICA6LrPc+FYtikGeZcaNfum7Ji8mLuqijt5mlkK+LtAj3OweLtIavfaVzt1yoTYtNi1xuc199cYZni2II8ZsVi7Gen6qLqoued4tlCPtbB4tleHdsi2yLeJ+LsQh8+DgVzQb3GPchBfsABg6LrPc+FYtikGeZcaNfum7Ji8mLuqijt5mlkK+LtAj3OweLtIavfaVzt1yoTYtNi1xuc199cYZni2II8ZsVi7Gen6qLqoued4tlCPtbB4tleHdsi2yLeJ+LsQgs+DgV2QbO6s4sBdkGKfchBS0GDous9z4Vi2KQZ5lxo1+6bsmLyYu6qKO3maWQr4u0CPc7B4u0hq99pXO3XKhNi02LXG5zX31xhmeLYgjxmxWLsZ6fqouqi553i2UI+1sHi2V4d2yLbIt4n4uxCD/4RBXl8TEG9zYlFeXxMQYOi6z3PhWLYpBnmXGjX7puyYvJi7qoo7eZpZCvi7QI9zsHi7SGr32lc7dcqE2LTYtcbnNffXGGZ4tiCPGbFYuxnp+qi6qLnneLZQj7WweLZXh3bItsi3ifi7EIpPjFFfsABvcY+yEFzQYOi6z3PhWLYpBnmXGjX7puyYvJi7qoo7eZpZCvi7QI9zsHi7SGr32lc7dcqE2LTYtcbnNffXGGZ4tiCPGbFYuxnp+qi6qLnneLZQj7WweLZXh3bItsi3ifi7EI9z34tRWKcXx4b4t1izCzbItLi3JZf04IvgaMpZqep4uii+VjqovLi6S9l8gIDnn31/gBFYrfT8s4izmLR02LNYtHslvLcwi8eQWyfJd4i2+LaW92botli36oh6cIKwaPJ89W24vji8vQi9+Lx3PBP6gIT6MFZZqGnYuei6WdpKuLpoujeYxpCOn38hU9BkgsSOoFPQbt+yEF6QYOnvfv+I8VJfvpBotefnJli2uLeaKLsAj38yX8GQeLMMFqvou6i6eioKsIjVrxBvtt+NIVzQb3GPchBfsABg6e9+/4jxUl++kGi15+cmWLa4t5oouwCPfzJfwZB4swwWq+i7qLp6KgqwiNWvEG+7340hXZBs7qziwF2QYp9yEFLQYOnvfv+I8VJfvpBotefnJli2uLeaKLsAj38yX8GQeLMMFqvou6i6eioKsIjVrxBvuq+N4V5fExBvc2JRXl8TEGDp737/iPFSX76QaLXn5yZYtri3mii7AI9/Ml/BkHizDBar6LuounoqCrCI1a8Qb7RflfFfsABvcY+yEFzQYOeYr4jxX3H/x4BXT7Cn59YosIdCunBsiLxaWh5gj3JvjnBSIGRvvQBYkGRffQBY/OFc0G9xj3IQX7AAYOeYr4jxX3H/x4BXT7Cn59YosIdCunBsiLxaWh5gj3JvjnBSIGRvvQBYkGRffQBVLaFeXxMQb3NiUV5fExBg5UnBb3rev7OQb3OffeBdz7oDH3LAf7OfvkBfey+Q4VPQZILEjqBT0G7fshBekGDnyLBvdcFPgGFQAAugAAALoAAADwADgBFgAhAXQABgF0AAsBYAAJAeEAJAC6ACoA3gAyAN4AEwFyAB8CWAAvALoAKgGFACwAugAqAN4ABQF0ACIBdAA1AXQAIgF0ACIBdAAJAXQAIgF0ACIBdAAiAXQAIgF0ACIAugAqALoAKgJYAC8CWAAvAlgALwFyACADIAA2AZcAAgGqADABlwAqAaoAMAFyADABcgAwAaoAKgGqADAAzAAzAU3/6gGqADABcgAwAiwAMAG8ACwBqgAqAZcAMAGqACoBqgAwAZYAHAFM//0BqgAwAZcADQJRABABhf/+AYQAAwFNAA8A3gA6AN4ABQDeAAgCWAAyAfQAAAC6ACoBcgAZAYUAKgFyADABhQAqAXIAIQDeAAUBhQAqAYUAKgC6ACoAuv/qAYUAKgC6ACQCUAAqAYUAKgFyACEBhQAqAYUAKgEWACoBYAAYAMz/9wGFACoBYP//AhgAAQFM//UBYP//ATsAEQDeAAMA3gBHAN4AAwJYAEUA8AA4AXQAIgF0AA0Ap/9bAXQABAF0/8QBcgAhAXQABAC6ADUBFgASAaoACgDxAAoA8QAcAZcABQGXAAUB9AAAAXIABgFyAAYAugAdAbwACAH0AEgAugAqARYAEgEWABIBqgAcA+gAdAIZAAkBcgAgALr/2AC6ABwAuv/MALr/swC6/9QAuv/DALoAMAC6/98Auv/3ALr/8QC6/8oAuv//ALr/zAPoAAACYwACAPAADgFyAAABqgAKAmIAMADwABICPAAZALoAKgC6//IBcgAEAjwAIQGFACoCWAAvAisACwIrAAsA8gAbAlgAQwMgACYBlwAwAN4ARwGqAAACKwALAlgALwFyADABcgAhAlgALwGXACoBhQAqAyAAJgJYAC8A8gALAPIACwPeACcBBAASAYUAKgGXAAIBlwACAZcAAgGXAAIBlwACAZcAAgFyADABcgAwAXIAMAFyADAAzAAzAMwAMwDMADMAzAAzAbwALAGqACoBqgAqAaoAKgGqACoBqgAqAZYAHAGqADABqgAwAaoAMAGqADABhAADAYQAAwFNAA8BcgAZAXIAGQFyABkBcgAZAXIAGQFyABkBcgAhAXIAIQFyACEBcgAhALoAKgC6ACoAugAqALoAKgGFACoBcgAhAXIAIQFyACEBcgAhAXIAIQFgABgBhQAqAYUAKgGFACoBhQAqAWD//wFg//8BOwARAAAAAQAAAAAAAQAAAAwAAAAAAAAAAgABAAAA5AABAAAAAQAAAAoAHgAsAAFsYXRuAAgABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABArwABAAAACAASgBYAH4AhACWALQAzgDkAQIBGAEyATwAfgF6AaQB1gIEAgoCGAIiAjQCPgJIAgoCUgJYAnoCgAKWAoACrAK2AAMACP/eAEX/tgBU/8kACQAI/8kANf/JADf/2wA4/9sAOv/JAFf/7gBY/+4AWv/uAHf/yQABACL/9AAEACL/9AA3/+4AOP/0ADr/7gAHAA3/kQAP/5EAIv/OAEb/7gBK//QAUP/uAFP/7gAGAA3/7gAP/+4AQv/6AEb/+gBQ//oAVv/6AAUAMP/0AEb/9ABQ//QAVv/0AFr/7gAHAAj/pAA1/7YAN/+2ADj/tgA6/6QAWv/JAHf/tQAFACL/9AA1//QAN//uADj/9AA6/+4ABgAN/38AD/9/ACL/2wBC//QARv/0AFD/9AACADX/7gA6/+4ADwAN/6QADv/CAA//pAAb/8QAHP/CACL/yQAw//QAQv/CAEb/wgBK/+4AUP/CAFP/wgBW/8IAWP+2AFr/yQAKAA3/pAAO/9sAD/+kABv/7gAc/+4AIv/bAEL/2wBG/9sAUP/bAFb/4gAMAA3/tgAO/+4AD/+2ABv/7gAc/+4AIv/iADD/9ABC/+4ARv/uAFD/7gBW/+4AWv/0AAsADf+kAA7/tgAP/6QAG//bABz/yQAi/8kAQv/JAEb/yQBK/+4AUP/JAFb/yQABAEH/3gADAFf/+gBY//oAWv/0AAIAV//6AFr/9AAEAEn/9ABM//QATf/0AFr/7gACAFf/9ABa//QAAgAIABIAdwAMAAIARv/0AFD/9AABAFr/9AAIAA3/tgAO/9sAD/+2AEL/+gBE//QAUP/6AFcAEgBaABIAAQBY//QABQAN/8kAD//JAEL/+gBG//oAUP/6AAUADf/bAA//2wBC//oARv/6AFD/+gACAEb/+gBQ//oAAQAi/8kAAQAgAAgAIgAjACUAJwArACwALQAwADEAMwA1ADYANwA4ADoAQQBCAEMARABGAEcATABQAFEAUwBUAFcAWABaAFsAaQABAAAACgAcAB4AAWxhdG4ACAAEAAAAAP//AAAAAAAA + ) format('truetype'); + font-weight: normal; + font-style: normal; +} + +.DIN-font{ + display: inline-block; + font-family: 'DINEngschrift-Alternate'; + speak: none; + font-size: 16px; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + text-rendering: auto; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: middle; +} \ No newline at end of file diff --git a/src/assets/css/element-ui-override.scss b/src/assets/css/element-ui-override.scss new file mode 100644 index 0000000..e3faabe --- /dev/null +++ b/src/assets/css/element-ui-override.scss @@ -0,0 +1,140 @@ +/*覆盖element-ui自带的样式放在该文件中*/ + +.el-input { + height: 34px; +} + +.el-input__inner { + padding-left: 15px; + height: 34px; + border-radius: 0; + border: 0; + background: #313847; + font-size: 14px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 600; + color: #ffffff; +} + +.el-loading-mask { + position: absolute; + z-index: 2000; + background-color: rgba(0, 0, 0, 0.7); + margin: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + transition: opacity 0.3s; +} + +.el-loading-spinner .circular { + margin: auto; +} + +.el-table { + background-color: #000a1f; + + &::before { + background-color: unset; + } + + .el-table__header { + thead { + color: #fff; + + tr { + border-bottom: unset; + + th.el-table__cell.is-leaf { + border-bottom: unset; + } + + th { + font-weight: 600; + } + + .el-table__cell { + padding: 6px 0; + background-color: #5e616e; + } + } + } + } + + .el-table__body { + tbody { + tr.el-table__row { + background-color: #000a1f; + color: #fff; + font-weight: 600; + td.el-table__cell { + padding: 0; + border-bottom: unset; + } + &:hover { + td.el-table__cell { + background-color: rgba(255, 255, 255, 0.1); + } + } + } + } + } + + // &--striped { + // .el-table__body { + // tr.el-table__row--striped { + // td.el-table__cell { + // background-color: rgba(255, 255, 255, 0.1); + // } + // } + // } + // } +} + +.el-pagination { + &.is-background { + .el-pager li { + background-color: rgba(233, 234, 240, 0.1); + color: #fefefe; + &:not(.disabled).active { + background-color: #3661eb; + } + } + + .btn-prev { + background-color: #3661eb; + color: #fff; + &:disabled { + background-color: rgba(54, 97, 235, 0.5); + color: rgba(246, 247, 250, 0.5); + } + } + + .btn-next { + background-color: #3661eb; + color: #f6f7fa; + &:disabled { + background-color: rgba(54, 97, 235, 0.5); + color: rgba(246, 247, 250, 0.5); + } + } + } +} +.el-select, +.el-input__inner{ + height: 32px; + line-height: 32px; + background: rgba(255,255,255,0.15); + color: #fff; + border: none; + outline: none; +} + //未选中框时右侧文字 + .el-checkbox__label{ + color: #fff; + } + //选中框时右侧文字 + .el-checkbox__input.is-checked+.el-checkbox__label{ + color: #fff; + } \ No newline at end of file diff --git a/src/assets/css/sass.scss b/src/assets/css/sass.scss new file mode 100644 index 0000000..d204e74 --- /dev/null +++ b/src/assets/css/sass.scss @@ -0,0 +1,3 @@ +@function count($val) { + @return calc($val / 1920 * 100vw); +} \ No newline at end of file diff --git a/src/assets/css/self-global.scss b/src/assets/css/self-global.scss new file mode 100644 index 0000000..0fedc91 --- /dev/null +++ b/src/assets/css/self-global.scss @@ -0,0 +1,40 @@ +/*自定义全局样式放在该文件中*/ + +/*自定义滚动条*/ +::-webkit-scrollbar { + width: 6px; +} + +::-webkit-scrollbar-thumb { + background-color: #4a6cf7; +} + +::-webkit-scrollbar-track { + background-color: hsla(0, 0%, 100%, 0.1); +} + +.scrollbar-white::-webkit-scrollbar-thumb { + background-color: #fff; +} + +body { + overflow: hidden; +} + +.vjs-control-bar { + background-color: rgba(0, 0, 0, 0.6); +} + +//覆盖videojs默认的一些样式 +.vjs-slider-horizontal { + .vjs-volume-level::before { + top: -4px; + } + .vjs-play-progress::before { + top: -5px; + } +} + +.vjs-slider-vertical .vjs-volume-level:before { + left: -4px; +} diff --git a/src/assets/css/tail-wind/index.css b/src/assets/css/tail-wind/index.css new file mode 100644 index 0000000..8a90c80 --- /dev/null +++ b/src/assets/css/tail-wind/index.css @@ -0,0 +1,5 @@ +@tailwind base; + +@tailwind components; + +@tailwind utilities; \ No newline at end of file diff --git a/src/assets/images/backgrounds/PM10.png b/src/assets/images/backgrounds/PM10.png new file mode 100644 index 0000000..501d4f6 --- /dev/null +++ b/src/assets/images/backgrounds/PM10.png Binary files differ diff --git a/src/assets/images/backgrounds/PM2.png b/src/assets/images/backgrounds/PM2.png new file mode 100644 index 0000000..0f78b28 --- /dev/null +++ b/src/assets/images/backgrounds/PM2.png Binary files differ diff --git a/src/assets/images/backgrounds/cover_bg.png b/src/assets/images/backgrounds/cover_bg.png new file mode 100644 index 0000000..fe5fb77 --- /dev/null +++ b/src/assets/images/backgrounds/cover_bg.png Binary files differ diff --git a/src/assets/images/backgrounds/daqishidu.png b/src/assets/images/backgrounds/daqishidu.png new file mode 100644 index 0000000..442146d --- /dev/null +++ b/src/assets/images/backgrounds/daqishidu.png Binary files differ diff --git a/src/assets/images/backgrounds/daqiwendu.png b/src/assets/images/backgrounds/daqiwendu.png new file mode 100644 index 0000000..cf44f97 --- /dev/null +++ b/src/assets/images/backgrounds/daqiwendu.png Binary files differ diff --git a/src/assets/images/backgrounds/fengli.png b/src/assets/images/backgrounds/fengli.png new file mode 100644 index 0000000..64e8701 --- /dev/null +++ b/src/assets/images/backgrounds/fengli.png Binary files differ diff --git a/src/assets/images/backgrounds/fengxiang.png b/src/assets/images/backgrounds/fengxiang.png new file mode 100644 index 0000000..6c519aa --- /dev/null +++ b/src/assets/images/backgrounds/fengxiang.png Binary files differ diff --git a/src/assets/images/backgrounds/home.png b/src/assets/images/backgrounds/home.png new file mode 100644 index 0000000..9e276bc --- /dev/null +++ b/src/assets/images/backgrounds/home.png Binary files differ diff --git a/src/assets/images/backgrounds/home_active.png b/src/assets/images/backgrounds/home_active.png new file mode 100644 index 0000000..f876c6e --- /dev/null +++ b/src/assets/images/backgrounds/home_active.png Binary files differ diff --git a/src/assets/images/backgrounds/home_line.png b/src/assets/images/backgrounds/home_line.png new file mode 100644 index 0000000..8bc88f4 --- /dev/null +++ b/src/assets/images/backgrounds/home_line.png Binary files differ diff --git a/src/assets/images/backgrounds/jianlidanwei.png b/src/assets/images/backgrounds/jianlidanwei.png new file mode 100644 index 0000000..56e798b --- /dev/null +++ b/src/assets/images/backgrounds/jianlidanwei.png Binary files differ diff --git a/src/assets/images/backgrounds/jianshedanwei.png b/src/assets/images/backgrounds/jianshedanwei.png new file mode 100644 index 0000000..793e8ae --- /dev/null +++ b/src/assets/images/backgrounds/jianshedanwei.png Binary files differ diff --git a/src/assets/images/backgrounds/jianzhumianji.png b/src/assets/images/backgrounds/jianzhumianji.png new file mode 100644 index 0000000..afcded8 --- /dev/null +++ b/src/assets/images/backgrounds/jianzhumianji.png Binary files differ diff --git a/src/assets/images/backgrounds/logo.png b/src/assets/images/backgrounds/logo.png new file mode 100644 index 0000000..0c1311a --- /dev/null +++ b/src/assets/images/backgrounds/logo.png Binary files differ diff --git a/src/assets/images/backgrounds/mubiaowanc.png b/src/assets/images/backgrounds/mubiaowanc.png new file mode 100644 index 0000000..354a3f6 --- /dev/null +++ b/src/assets/images/backgrounds/mubiaowanc.png Binary files differ diff --git a/src/assets/images/backgrounds/mubiaowancheng.png b/src/assets/images/backgrounds/mubiaowancheng.png new file mode 100644 index 0000000..354a3f6 --- /dev/null +++ b/src/assets/images/backgrounds/mubiaowancheng.png Binary files differ diff --git a/src/assets/images/backgrounds/people.png b/src/assets/images/backgrounds/people.png new file mode 100644 index 0000000..e28ef44 --- /dev/null +++ b/src/assets/images/backgrounds/people.png Binary files differ diff --git a/src/assets/images/backgrounds/screen.png b/src/assets/images/backgrounds/screen.png new file mode 100644 index 0000000..105a607 --- /dev/null +++ b/src/assets/images/backgrounds/screen.png Binary files differ diff --git a/src/assets/images/backgrounds/search.png b/src/assets/images/backgrounds/search.png new file mode 100644 index 0000000..78971c1 --- /dev/null +++ b/src/assets/images/backgrounds/search.png Binary files differ diff --git a/src/assets/images/backgrounds/shejidanwei.png b/src/assets/images/backgrounds/shejidanwei.png new file mode 100644 index 0000000..1a45ede --- /dev/null +++ b/src/assets/images/backgrounds/shejidanwei.png Binary files differ diff --git a/src/assets/images/backgrounds/shigongdanwei.png b/src/assets/images/backgrounds/shigongdanwei.png new file mode 100644 index 0000000..cb5bbda --- /dev/null +++ b/src/assets/images/backgrounds/shigongdanwei.png Binary files differ diff --git a/src/assets/images/backgrounds/shigongjinduchart.png b/src/assets/images/backgrounds/shigongjinduchart.png new file mode 100644 index 0000000..d4161dc --- /dev/null +++ b/src/assets/images/backgrounds/shigongjinduchart.png Binary files differ diff --git a/src/assets/images/backgrounds/shishirenshu.png b/src/assets/images/backgrounds/shishirenshu.png new file mode 100644 index 0000000..a2911f5 --- /dev/null +++ b/src/assets/images/backgrounds/shishirenshu.png Binary files differ diff --git a/src/assets/images/backgrounds/table_bg.png b/src/assets/images/backgrounds/table_bg.png new file mode 100644 index 0000000..42c8dfa --- /dev/null +++ b/src/assets/images/backgrounds/table_bg.png Binary files differ diff --git a/src/assets/images/backgrounds/time.png b/src/assets/images/backgrounds/time.png new file mode 100644 index 0000000..d6ffbd0 --- /dev/null +++ b/src/assets/images/backgrounds/time.png Binary files differ diff --git a/src/assets/images/backgrounds/zaigang.png b/src/assets/images/backgrounds/zaigang.png new file mode 100644 index 0000000..66a7f8e --- /dev/null +++ b/src/assets/images/backgrounds/zaigang.png Binary files differ diff --git a/src/assets/images/backgrounds/zhihui.png b/src/assets/images/backgrounds/zhihui.png new file mode 100644 index 0000000..52fce69 --- /dev/null +++ b/src/assets/images/backgrounds/zhihui.png Binary files differ diff --git a/src/assets/images/backgrounds/zhihui_active.png b/src/assets/images/backgrounds/zhihui_active.png new file mode 100644 index 0000000..7dce64a --- /dev/null +++ b/src/assets/images/backgrounds/zhihui_active.png Binary files differ diff --git a/src/assets/images/backgrounds/zoomout.png b/src/assets/images/backgrounds/zoomout.png new file mode 100644 index 0000000..0d985b4 --- /dev/null +++ b/src/assets/images/backgrounds/zoomout.png Binary files differ diff --git a/src/assets/images/titles/huanjing.png b/src/assets/images/titles/huanjing.png new file mode 100644 index 0000000..75869fd --- /dev/null +++ b/src/assets/images/titles/huanjing.png Binary files differ diff --git a/src/assets/images/titles/renyuan.png b/src/assets/images/titles/renyuan.png new file mode 100644 index 0000000..67ecffe --- /dev/null +++ b/src/assets/images/titles/renyuan.png Binary files differ diff --git a/src/assets/images/titles/shebei.png b/src/assets/images/titles/shebei.png new file mode 100644 index 0000000..e058c27 --- /dev/null +++ b/src/assets/images/titles/shebei.png Binary files differ diff --git a/src/assets/images/titles/shigong.png b/src/assets/images/titles/shigong.png new file mode 100644 index 0000000..b36b3bd --- /dev/null +++ b/src/assets/images/titles/shigong.png Binary files differ diff --git a/src/assets/images/titles/title_second.png b/src/assets/images/titles/title_second.png new file mode 100644 index 0000000..5dcccc4 --- /dev/null +++ b/src/assets/images/titles/title_second.png Binary files differ diff --git a/src/assets/images/titles/wendu_bg.png b/src/assets/images/titles/wendu_bg.png new file mode 100644 index 0000000..523c791 --- /dev/null +++ b/src/assets/images/titles/wendu_bg.png Binary files differ diff --git a/src/assets/images/titles/xiangmu.png b/src/assets/images/titles/xiangmu.png new file mode 100644 index 0000000..e9ebe9a --- /dev/null +++ b/src/assets/images/titles/xiangmu.png Binary files differ diff --git a/src/assets/images/titles/xiangmu_bg.png b/src/assets/images/titles/xiangmu_bg.png new file mode 100644 index 0000000..4da7a71 --- /dev/null +++ b/src/assets/images/titles/xiangmu_bg.png Binary files differ diff --git a/src/components/Collapse.vue b/src/components/Collapse.vue new file mode 100644 index 0000000..d67f576 --- /dev/null +++ b/src/components/Collapse.vue @@ -0,0 +1,154 @@ +<template> + <div class="inline-block outerWrapper" ref="outerWrapper" :style="outerWrapperStyle"> + <div class="relative collapseWrapper" ref="collapseWrapper"> + <slot ref="content"></slot> + <div class="absolute flex justify-center items-center cursor-pointer" :class="collapseBarClass" ref="bar" @click="toggleCollapsed"> + <img ref="triangleIcon" class="triangleIcon w-1.5 h-1.5" :class="triangleClass" src="../assets/images/triangle.png" alt="方向三角" /> + </div> + </div> + </div> +</template> + +<script> + const DirectionsMap = { + left: "cleft", + right: "cright", + top: "ctop", + bottom: "cbottom", + }; + export default { + name: "Collapse", + props: { + direction: { + type: String, + default: DirectionsMap.left, + validator(v) { + return Object.keys(DirectionsMap).includes(v); + }, + }, + bgc: { + type: String, + default: "#334CAF", + }, + }, + data() { + return { + isCollapsed: false, + width: "", + height: "", + }; + }, + computed: { + triangleClass() { + switch (this.direction) { + case "left": + return "rotate-0"; + case "right": + return "rotate-180"; + case "top": + return "rotate-90"; + case "bottom": + return "-rotate-90"; + default: + break; + } + return ""; + }, + collapseBarClass() { + switch (this.direction) { + case "left": + return "top-[50%] right-0 translate-x-full -translate-y-[50%] w-3 h-16 triangleLeftBg"; + case "right": + return "top-[50%] left-0 -translate-x-full -translate-y-[50%] w-3 h-16 triangleRightBg"; + case "top": + return "bottom-0 left-[50%] -translate-x-[50%] translate-y-full w-16 h-3"; + case "bottom": + return "top-0 left-[50%] -translate-x-[50%] -translate-y-full w-16 h-3"; + default: + break; + } + return ""; + }, + outerWrapperStyle() { + return { + width: this.width, + height: this.height, + }; + }, + }, + mounted() { + // console.log("Collapsed-mounted"); + this.setSizeInfo(); + }, + methods: { + setSizeInfo() { + const elm = this.$scopedSlots.default()[0].elm; + if (elm) { + const { width, height } = window.getComputedStyle(elm); + this.width = width; + this.height = height; + } + }, + toggleCollapsed() { + this.isCollapsed = !this.isCollapsed; + const outerWrapperClasslist = this.$refs.outerWrapper.classList; + if (this.isCollapsed) { + outerWrapperClasslist.add("collapsed"); + outerWrapperClasslist.add(this.direction); + this.$emit(`collapse${this.direction}`); + } else { + outerWrapperClasslist.remove("collapsed"); + outerWrapperClasslist.remove(this.direction); + this.$emit(`uncollapse${this.direction}`); + } + }, + }, + }; +</script> + +<style lang="scss" scoped> + .outerWrapper { + transition: all 0.3s linear; + .triangleLeftBg { + background-image: url("../assets/images/triangle-left.png"); + background-repeat: no-repeat; + background-size: cover; + background-position: center center; + } + .triangleRightBg { + background-image: url("../assets/images/triangle-right.png"); + background-repeat: no-repeat; + background-size: cover; + background-position: center center; + } + &.collapsed { + &.right { + // width: 0px !important; + transform: translate3d(100%, 0, 0); + .triangleIcon { + transform: rotate3d(0, 0, 1, 0deg); + } + } + &.left { + transform: translate3d(-100%, 0, 0); + .triangleIcon { + transform: rotate3d(0, 0, 1, 180deg); + } + } + &.bottom { + height: 0 !important; + bottom: 0 !important; + .triangleIcon { + transform: rotate3d(0, 0, 1, 90deg); + } + } + &.top { + height: 0 !important; + top: 0 !important; + .triangleIcon { + transform: rotate3d(0, 0, 1, 270deg); + } + } + } + } +</style> diff --git a/src/components/DialogFixed.vue b/src/components/DialogFixed.vue new file mode 100644 index 0000000..f94e5a4 --- /dev/null +++ b/src/components/DialogFixed.vue @@ -0,0 +1,108 @@ +<template> + <el-dialog v-bind="finalAttrs" v-on="$listeners" custom-class="dialogCus" :append-to-body="false" :modal-append-to-body="false"> + <div :style="contentWrapperStyle" v-bind="$props"> + <img class="absolute top-0 bottom-0 left-0 right-0 w-full h-full" src="../assets/images/dialog/dialog-bg.png" alt="背景" /> + <img class="z-[9999]" :style="closeIconStyle" src="../assets/images/dialog/close.png" alt="关闭" @click="onCloseIconClick" /> + <div class="relative z-50 w-full h-full"> + <slot></slot> + </div> + </div> + </el-dialog> +</template> + +<script> + export default { + name: "DialogFixed", + inheritAttrs: false, + props: { + width: { + type: String, + default: "1025px", + }, + height: { + type: String, + default: "560px", + }, + closeIconWidth: { + type: String, + default: "64px", + }, + closeIconHeight: { + type: String, + default: "26px", + }, + closeIconTop: { + type: String, + default: "17px", + }, + closeIconRight: { + type: String, + default: "8px", + }, + }, + computed: { + contentWrapperStyle() { + return { + position: "relative", + display: "flex", + width: `${this.width}`, + height: `${this.height}`, + "justify-content": "center", + "align-items": "center", + color: "#FFF", + }; + }, + closeIconStyle() { + return { + position: "absolute", + top: `${this.closeIconTop}`, + right: `${this.closeIconRight}`, + width: `${this.closeIconWidth}`, + height: `${this.closeIconHeight}`, + cursor: "pointer", + }; + }, + finalAttrs() { + return Object.assign( + { + modal: true, + "modal-append-to-body": true, + "append-to-body": false, + "lock-scroll": true, + "close-on-click-modal": false, + "close-on-press-escape": true, + "show-close": false, + "destroy-on-close": false, + }, + this.$attrs, + ); + }, + }, + methods: { + onCloseIconClick() { + this.$emit("update:visible", false); + }, + }, + }; +</script> + +<style lang="scss" scoped> + ::v-deep .el-dialog.dialogCus { + position: absolute; + top: 50%; + left: 50%; + margin: 0 !important; + width: auto; + background: transparent; + border-radius: initial; + box-shadow: initial; + box-sizing: border-box; + transform: translate3d(-50%, -50%, 0); + .el-dialog__header { + display: none; + } + // .el-table tr { + // background-color: initial; + // } + } +</style> diff --git a/src/components/Divide.vue b/src/components/Divide.vue new file mode 100644 index 0000000..d7a2028 --- /dev/null +++ b/src/components/Divide.vue @@ -0,0 +1,46 @@ +<template> + <div :style="styleObj"></div> +</template> + +<script> + const Directions = ["x", "y"]; + export default { + name: "Divide", + props: { + direction: { + type: String, + default: "y", + validator(v) { + return Directions.includes(v); + }, + }, + width: { + type: String, + default: "1px", + }, + height: { + type: String, + default: "24px", + }, + bgc: { + type: String, + default: "#fff", + }, + opacity: { + type: Number, + default: 1, + }, + }, + computed: { + styleObj() { + return { + width: this.width, + height: this.height, + backgroundColor: this.bgc, + opacity: this.opacity, + transform: this.direction === "x" ? "rotate3d(0,0,1,90deg)" : "", + }; + }, + }, + }; +</script> diff --git a/src/components/DropDown.vue b/src/components/DropDown.vue new file mode 100644 index 0000000..b72d739 --- /dev/null +++ b/src/components/DropDown.vue @@ -0,0 +1,108 @@ +<template> + <div class="dropdownWrapper relative w-[372px] h-[40px] p-[20px] flex rounded-tl-[6px] rounded-tr-[6px] bg-[#2849CD] items-center"> + <img v-if="withIcon" class="mr-[14px] w-[15px] h-[12px]" src="../assets/images/list.png" alt="列表" /> + <div class="flex items-center text-[16px] hover:cursor-pointer" @click="toggleOptions"> + {{ selectedOption?.label ?? "暂无数据" }} + </div> + <div class="flex-1 flex items-center justify-end hover:cursor-pointer" @click="toggleOptions"> + <div v-if="withText" class="mr-[8px] ml-[8px] text-[14px]">切换</div> + <img class="w-[8px] h-[8px]" :class="{ 'rotate-180': isOptionVisible }" src="../assets/images/triangle-down.png" alt="下拉" /> + </div> + <!--下拉选项--> + <div + class="absolute z-50 top-full right-0 left-0 pl-[16px] pr-[12px] py-[16px] rounded-bl-[6px] rounded-br-[6px] transition-transform origin-top bg-[#2849CD]" + :class="dynamicClassStr" + > + <div class="max-h-[256px] space-y-2 overflow-y-auto scrollbar-white"> + <template v-if="options?.length"> + <div + v-for="v in options" + :key="v.id" + class="optionItem mr-[6px] min-h-[40px] py-[8px] px-[12px] rounded-[6px] flex items-center text-base hover:bg-[hsla(0,0%,100%,0.1)] hover:cursor-pointer" + :class="{ activated: v.id === selectedId }" + > + <div v-if="!v.disabled" class="w-full h-full flex justify-between items-center" @click="onOptionClick(v)"> + <div>{{ v.label }}</div> + <template v-if="withCheck"> + <div v-show="v.id === selectedId">✓</div> + </template> + </div> + <div v-else class="w-full h-full flex justify-between items-center cursor-not-allowed text-gray-400"> + <div>{{ v.label }}</div> + </div> + </div> + </template> + <template v-else> + <div class="text-sm text-gray-400 font-thin cursor-not-allowed"> 暂无数据 </div> + </template> + </div> + </div> + </div> +</template> + +<script> + export default { + name: "DropDown", + props: { + options: { + type: Array, + default() { + return []; + }, + }, + selectedId: { + type: String, + default: "", + }, + withIcon: { + type: Boolean, + default: true, + }, + withText: { + type: Boolean, + default: true, + }, + withCheck: { + type: Boolean, + default: true, + }, + }, + data() { + return { + isOptionVisible: false, + }; + }, + computed: { + dynamicClassStr() { + return this.isOptionVisible ? "scale-y-1" : "scale-y-0"; + }, + selectedOption() { + return this.options.find((item) => item.id === this.selectedId); + }, + }, + methods: { + toggleOptions() { + this.isOptionVisible = !this.isOptionVisible; + }, + onOptionClick(item) { + if (item.id === this.selectedId) { + this.toggleOptions(); + return; + } + this.toggleOptions(); + this.$emit("change", item); + }, + }, + }; +</script> + +<style lang="scss" scoped> + .dropdownWrapper { + box-shadow: -1px 0px 25px 0px rgba(14, 15, 15, 0.1); + } + .optionItem { + &.activated { + background-color: #0e1120; + } + } +</style> diff --git a/src/components/FullScreenButton.vue b/src/components/FullScreenButton.vue new file mode 100644 index 0000000..c139bc5 --- /dev/null +++ b/src/components/FullScreenButton.vue @@ -0,0 +1,62 @@ +<template> + <span @click="onFullscreen" class="inline-flex justify-center items-center w-[42px] h-[42px] rounded-md cursor-pointer bg-[hsla(0,0%,0%,0.9)]"> + <img class="w-[18px] h-[18px]" src="../assets/images/fullscreen.png" alt="全屏" /> + </span> +</template> + +<script> + export default { + name: "FullscreenButton", + methods: { + onFullscreen() { + if (this.isFullscreenEnabled()) { + if (this.isFullScreen()) { + this.exitFullscreen(); + } else { + this.openFullScreen(document.body); + } + } + }, + // 判断当前文档是否能切换到全屏 + isFullscreenEnabled() { + return document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled || document.msFullscreenEnabled; + }, + // 判断当前窗体是否为全屏状态 + isFullScreen() { + return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.webkitFullScreen || document.msFullScreen); + }, + // 打开全屏 + openFullScreen(ele) { + if (ele.requestFullscreen) { + ele.requestFullscreen(); + } else if (ele.mozRequestFullScreen) { + ele.mozRequestFullScreen(); + } else if (ele.webkitRequestFullscreen) { + ele.webkitRequestFullscreen(); + } else if (ele.msRequestFullscreen) { + ele.msRequestFullscreen(); + } + this.$store.dispatch("common/setFullscreenInfo", { + isFullscreen: true, + fullscreenElement: ele, + }); + }, + // 退出全屏 + exitFullscreen() { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (element.msExitFullscreen) { + element.msExitFullscreen(); + } + this.$store.dispatch("common/setFullscreenInfo", { + isFullscreen: false, + fullscreenElement: null, + }); + }, + }, + }; +</script> diff --git a/src/components/Header.vue b/src/components/Header.vue new file mode 100644 index 0000000..4b4c510 --- /dev/null +++ b/src/components/Header.vue @@ -0,0 +1,98 @@ +<template> + <header class="headerWrapper"> + <div class="relative z-[100] w-full h-[80px]" :style="{ + backgroundImage: `url(${backgroundImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }"> + <div class="absolute top-0 left-1/2 -translate-x-1/2 h-full px-[16px] flex items-center justify-between"> + <div class="flex flex-col items-center cursor-pointer relative" @click="onHomeClick('home')"> + <div class="flex items-center"> + <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'home' ? 'home_active.png' : 'home.png')" alt=""> + <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{'text-[#FFBF00]': activeTab === 'home'}">项目首页</div> + </div> + <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'home'"> + </div> + <div class="flex flex-col items-center ml-[78px] cursor-pointer relative" @click="onHomeClick('zhihui')"> + <div class="flex items-center"> + <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'zhihui' ? 'zhihui_active.png' : 'zhihui.png')" alt=""> + <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{'text-[#FFBF00]': activeTab === 'zhihui'}">智慧工地</div> + </div> + <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'zhihui'"> + </div> + </div> + <div class="absolute top-0 right-0"> + <div class="flex items-center h-[80px] mr-[20px]"> + <img class="w-[20px] h-[20px]" :src="getImageUrl('time.png')" alt=""> + <div class="text-[24px] text-[#FFBF00] ml-[8px]">{{ currentTime }}</div> + <div class="text-[16px] text-[#C8C8C8] ml-[20px]">{{ currentDate }}</div> + </div> + </div> + </div> + </header> +</template> + +<script> + import DropDown from "./DropDown.vue"; + + export default { + name: "AppHeader", + components: { + "drop-down": DropDown, + }, + data() { + return { + activeTab: 'home', + currentTime: '', + currentDate: '', + timer: null, + backgroundImage: new URL('@/assets/images/backgrounds/logo.png', import.meta.url).href + } + }, + props: { + selectedId: { + type: String, + default: "", + }, + optionList: { + type: Array, + default: () => [], + }, + }, + methods: { + getImageUrl(name) { + return new URL(`../assets/images/backgrounds/${name}`, import.meta.url).href + }, + onHomeClick(tab) { + this.activeTab = tab; + }, + onProjectChange(data) { + this.$store.commit("common/setCurrentProject", data); + }, + updateTime() { + const now = new Date(); + const hours = String(now.getHours()).padStart(2, '0'); + const minutes = String(now.getMinutes()).padStart(2, '0'); + const seconds = String(now.getSeconds()).padStart(2, '0'); + this.currentTime = `${hours}:${minutes}:${seconds}`; + + const year = now.getFullYear(); + const month = String(now.getMonth() + 1).padStart(2, '0'); + const day = String(now.getDate()).padStart(2, '0'); + const weekDays = ['日', '一', '二', '三', '四', '五', '六']; + const weekDay = weekDays[now.getDay()]; + this.currentDate = `${year}.${month}.${day} 星期${weekDay}`; + } + }, + mounted() { + this.updateTime(); + this.timer = setInterval(this.updateTime, 1000); + }, + beforeDestroy() { + if (this.timer) { + clearInterval(this.timer); + } + } + }; +</script> diff --git a/src/components/Login.vue b/src/components/Login.vue new file mode 100644 index 0000000..6a62431 --- /dev/null +++ b/src/components/Login.vue @@ -0,0 +1,171 @@ +<template> + <div class="login-wrapper"> + <div class="video-wrapper"> + <!--<video class="w-full h-full object-fill" muted autoplay="true" loop="loop" poster="/login/bg-video-poster.jpg"> + <source src="/login/bg-video.mp4" type="video/mp4" /> + </video>--> + <img src="/login/login-bg.jpg" alt="logo"/> + </div> + <div class="form-wrapper"> + <img class="logo" src="/login/logo.png" alt="logo"/> + <div class="form"> + <div class="content"> + <el-form ref="loginForm" :inline="true" :model="formInline" size="medium" :rules="formInline.rules" @keyup.enter.native="doLogin"> + <el-form-item prop="id"> + <el-input class="el-formitem-cus id" v-model="formInline.id" placeholder="请输入您的账号"></el-input> + </el-form-item> + <el-form-item prop="pwd"> + <el-input class="el-formitem-cus pwd" v-model="formInline.pwd" placeholder="请输入您的密码" :type="formInline.type"> + <div slot="suffix" @click.stop="toggleInputType" class="hover:cursor-pointer"> + <img v-if="isPassword" src="/login/eye-closed.png" alt="密码" /> + <img v-else src="/login/eye.png" alt="文本" /> + </div> + </el-input> + </el-form-item> + <el-form-item> + <el-button class="el-formitem-cus btn-login" type="primary" :loading="isAuthenticating" @click="doLogin">登录</el-button> + </el-form-item> + <el-form-item class="rember"> + <el-checkbox v-model="formInline.rember">记住我</el-checkbox> + </el-form-item> + </el-form> + </div> + </div> + </div> + </div> +</template> + +<script> +import { mapGetters } from "vuex"; +import { doAuthenticateLogin } from "../api/authenticate"; +export default { + name: "Login", + data() { + return { + formInline: { + id: "", + pwd: "", + type: "password", + rember: false, + rules: { + id: [{ required: true, message: "请输入账号", trigger: "change" }], + pwd: [{ required: true, message: "请输入密码", trigger: "change" }], + }, + }, + }; + }, + computed: { + ...mapGetters("common", ["isAuthenticating", "token"]), + isPassword() { + return this.formInline.type === "password"; + }, + }, + methods: { + toggleInputType() { + if (this.formInline.type === "password") { + this.formInline.type = "text"; + } else { + this.formInline.type = "password"; + } + }, + doLogin() { + this.$refs.loginForm.validate((valid) => { + if (valid) { + doAuthenticateLogin({ name: this.formInline.id, pwd: this.formInline.pwd }).then((loginResult) => { + if (loginResult?.code === 0) { + this.$router.replace("/home"); + } + }); + } + }); + }, + }, +}; +</script> + +<style lang="scss" scoped> +.login-wrapper { + position: relative; + width: 100%; + height: 100vh; + overflow: hidden; + .video-wrapper { + position: absolute; + z-index: -1; + top: 0; + right: 0; + bottom: 0; + left: 0; + img{ + width: 100%; + height: 100%; + } + } + .form-wrapper { + margin-top: 180px; + display: flex; + width: 100%; + height: 100%; + flex-direction: column; + align-items: center; + .logo { + margin: 0 auto; + width: 606px; + // height: auto; + } + .form { + position: relative; + z-index: 2; + margin-top: 70px; + width: 966px; + min-height: 186px; + background: url("/login/form-bg.png") center/cover no-repeat; + .content { + display: flex; + position: absolute; + z-index: 90; + top: 70px; + left: 40px; + @apply space-x-3; + @apply font-pingfang; + flex-wrap: wrap; + justify-content: center; + align-items: center; + ::v-deep .el-formitem-cus { + height: 50px; + border: none; + font-size: 16px; + &.id, + &.pwd { + width: 360px; + .el-input__inner { + height: 50px; + background-color: #5b6693; + border-radius: 6px; + } + } + .el-input__suffix { + &-inner { + display: flex; + height: 100%; + align-items: center; + } + } + &.btn-login { + width: 130px; + background-color: rgba(0, 140, 153, 1); + } + } + ::v-deep .rember { + margin: 0; + margin-top: -8px; + width: 100%; + .el-checkbox__label { + color: #d8d7da; + } + } + } + } + } +} +</style> diff --git a/src/components/MenuList.vue b/src/components/MenuList.vue new file mode 100644 index 0000000..c08b441 --- /dev/null +++ b/src/components/MenuList.vue @@ -0,0 +1,264 @@ +<template> + <div class="menuListWrapper inline-block rounded-tr-[34px] rounded-br-[34px] w-[13.5rem] h-[45rem]"> + <router-link + v-for="item in localMenusFiltered" + :key="item.id" + :to="item.to" + class="relative z-[100] menuItem flex items-center pl-6 py-[9px] pr-5 my-3 cursor-pointer" + active-class="activated" + exact + > + <img class="w-8" :src="item.icon" :alt="item.label" /> + <div class="ml-[12px] text-[18px] text-[#FFF] text-opacity-60 menuName">{{ item.label }}</div> + </router-link> + <div + v-for="item in thirdMenus" + :key="item.id" + class="relative z-[100] thirdMenuItem flex items-center pl-6 py-[9px] pr-5 my-3" + :class="{ + 'cursor-pointer': item.subMenus?.length > 0, + 'cursor-not-allowed': !item.subMenus || item.subMenus.length === 0, + hovered: activatedThirdMenu2?.id === item.id, + activated: activatedThirdMenu?.id === item.id, + }" + @mouseenter="onThirdMenuEnter(item)" + @mouseleave="onThirdMenuLeave(item)" + > + <img class="w-8" :src="item.icon" :alt="item.label" /> + <div class="ml-[12px] font-pingfang text-[18px] text-[#FFF] text-opacity-60 menuName">{{ item.label }}</div> + <div v-show="item.subMenus?.length && activatedThirdMenu2?.id === item.id" class="absolute top-6 left-full min-w-[260px] submenusWrapper"> + <div + v-for="submenu in item.subMenus" + :key="submenu.id" + @click.stop="onThirdMenuClick(submenu, item)" + class="submenuItem" + :class="{ activated: activatedThirdSubmenu?.id === submenu.id }" + > + <a v-if="submenu.needInvokeLocalApp" :href="submenu.to" target="_blank">{{ submenu.label }}</a> + <span v-else>{{ submenu.label }}</span> + </div> + </div> + </div> + </div> +</template> + +<script> + import CryptoJS from "crypto-js"; + import { Message } from "element-ui"; + import { mapGetters } from "vuex"; + + let workflowLoginURL; + let workflowWebURL; + let pid; + if (import.meta.env.PROD) { + //生产环境 + const ProjectConfig = window.ProjectConfig; + workflowLoginURL = ProjectConfig.workflowLoginURL; + workflowWebURL = ProjectConfig.workflowWebURL; + pid = ProjectConfig.pid; + } else { + //非生产环境 + workflowLoginURL = "http://workflow-newapi.probim.cn/api/User/Home/Login"; + workflowWebURL = "http://workflow.probim.cn"; + pid = "71f7a5df-a7e3-42f4-bcea-36d7d2924ddd"; + } + + export default { + name: "MenuList", + data() { + return { + activatedThirdMenu2: null, + PublicKey: "MK4ZJF10PRO19*#8", + }; + }, + computed: { + ...mapGetters("common", [ + "localMenus", + "thirdMenus", + "activatedThirdSubmenu", + "activatedThirdMenu", + "currentProjectId", + "projectIdsWithoutMoldBase", + "projectIdPNMap", + "aiJumpThirdPage" + ]), + localMenusFiltered() { + if (this.projectIdsWithoutMoldBase.includes(this.currentProjectId)) { + return this.localMenus.filter((item) => item.id !== "mold-base"); + } else { + return this.localMenus; + } + }, + }, + watch: { + aiJumpThirdPage: { + deep: true, + handler(n, o) { + if(n && n.self) { + this.onThirdMenuClick(n.self, n.parent) + } + }, + }, + }, + methods: { + onThirdMenuClick(item, parentItem) { + if (item?.isLocal === true) { + if (this.$route.path === item.to) return; + item?.to && + this.$router?.push(item.to).then(() => { + this.$store.commit("common/setActivatedThirdMenu", parentItem); + this.$store.commit("common/setActivatedThirdSubmenu", item); + }); + } else { + if (item?.needInvokeLocalApp) { + return; + } else if (item?.needLocalHandle) { + const id = item.id; + if (id === "construction-1") { + //绿色建造九宫格管理系统 + this.doVmsEnvmonitorLoginRedirect(); + } else if (id === "construction-2") { + //协同 + this.doSelfLoginRedirect(item); + } else if (id === "construction-3") { + const pn = this.projectIdPNMap[this.currentProjectId]; + if (!/^\s*$/i.test(pn + "")) { + window.open(`http://xmglappjs.sh2j.com/web/public/index.php/fanganapi/index/index?pn=${pn}`); + } + } + } else { + item?.to && window.open(item.to); + } + } + }, + onThirdMenuEnter(item) { + this.activatedThirdMenu2 = item; + }, + // eslint-disable-next-line no-unused-vars + onThirdMenuLeave(item) { + this.activatedThirdMenu2 = null; + }, + + //登录绿色建造九宫格管理系统 + async doVmsEnvmonitorLoginRedirect() { + window.open("http://127.0.0.1:9000/vms-envmonitor-webapp/"); + }, + + //登录自己的协同平台 + async doSelfLoginRedirect(item) { + const userInfo = { + UserName: "huangtj_0909@163.com", + Password: this.computepwdstr("htj123456" + this.PublicKey, CryptoJS), + }; + // const userInfo = { + // UserName: "admin", + // Password: this.computepwdstr("admin" + this.PublicKey, CryptoJS), + // }; + const postData = Object.keys(userInfo) + .map((key) => { + return `${key}=${encodeURIComponent(userInfo[key])}`; + }) + .join("&"); + const res = await this.$http({ + method: "post", + url: workflowLoginURL, + data: postData, + withCredentials: false, + withProjectId: false, + withToken: false, + baseURL: "/", + }); + if (res?.code === 0) { + const token = res.data?.token; + if (token) { + window.open(`${workflowWebURL}/#/Home/Boot/${token}/0/${pid}`); + } else { + Message.error({ message: `${item.label}登录失败,请稍后再试`, duration: 1000 * 3 }); + } + } else { + Message.error({ message: `${item.label}登录失败,请稍后再试`, duration: 1000 * 3 }); + } + }, + computepwdstr(pwdorigin, _this_CryptoJS) { + const afterpwd = this.SymmetricEncryption( + { + input: pwdorigin, + key: this.PublicKey, + }, + _this_CryptoJS, + ); + return afterpwd; + }, + SymmetricEncryption(json, CryptoJS) { + if (!json || !json.input || !json.key) { + console.warn("json, json.input and json.key are not allow null!"); + return -1; + } + if (json.key.length === 0) { + console.warn("json.length should not be zero!"); + return -1; + } + while (json.key.length < 16) { + json.key = json.key + json.key; + } + const KEY = json.key; + const IV = "*BIM19FF4KMY0R8*"; + const key = CryptoJS.enc.Utf8.parse(KEY); + const iv = CryptoJS.enc.Utf8.parse(IV); + const srcs = CryptoJS.enc.Utf8.parse(json.input); + const encrypted = CryptoJS.AES.encrypt(srcs, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, + }); + return encrypted.ciphertext.toString(); + }, + }, + }; +</script> + +<style lang="scss" scoped> + .menuListWrapper { + background: rgba(0,22,26,0.95); + border-radius: 0px 40px 40px 0px; + } + .menuItem:not(.activated):hover { + background: linear-gradient( 270deg, rgba(0,75,83,0) 0%, rgba(0,135,153,0.3) 100%); + } + .menuItem.activated { + background: linear-gradient( 270deg, rgba(0,75,83,0) 0%, #008C99 100%); + .menuName { + @apply text-opacity-100; + } + } + + .thirdMenuItem:not(.activated).hovered { + background: linear-gradient( 270deg, rgba(0,75,83,0) 0%, rgba(0,135,153,0.3) 100%); + } + .thirdMenuItem.activated { + background: linear-gradient( 270deg, rgba(0,75,83,0) 0%, #008C99 100%); + .menuName { + @apply text-opacity-100; + } + } + .submenusWrapper { + .submenuItem { + @apply h-[60px] px-6 flex justify-start items-center font-pingfang text-base bg-[#00161af2] cursor-pointer; + &:first-of-type { + @apply rounded-tl-[12px] rounded-tr-[12px]; + &:only-child { + @apply rounded-bl-[12px] rounded-br-[12px]; + } + } + &:last-of-type:not(:first-of-type) { + @apply rounded-bl-[12px] rounded-br-[12px]; + } + &:not(.activated):hover { + @apply bg-[hsla(228,67%,48%,1)]; + } + &.activated { + @apply bg-[#485eb7]; + } + } + } +</style> diff --git a/src/components/SizeAdapter.vue b/src/components/SizeAdapter.vue new file mode 100644 index 0000000..f070971 --- /dev/null +++ b/src/components/SizeAdapter.vue @@ -0,0 +1,45 @@ +<template> + <div id="sizeAdapterWrapper"> + <slot></slot> + </div> +</template> + +<script> + export default { + name: "SizeAdapter", + props: { + originDeviceInfo: { + type: Object, + default: () => { + return { + width: window.innerWidth, + height: window.innerHeight, + }; + }, + }, + }, + created() { + window.addEventListener("resize", this.adapteSlot); + }, + mounted() { + // this.adapteSlot(); + }, + beforeDestroy() { + window.removeEventListener("resize", this.adapteSlot); + }, + methods: { + adapteSlot() { + const nowWidth = window.innerWidth; + const nowHeight = window.innerHeight; + + const { width, height } = this.originDeviceInfo; + + const xScale = nowWidth / width; + const yScale = nowHeight / height; + this.$scopedSlots.default()[0].elm.style.transform = `scale3d(${xScale},${yScale},1)`; + }, + }, + }; +</script> + +<style lang="scss" scoped></style> diff --git a/src/components/SwitchMap.vue b/src/components/SwitchMap.vue new file mode 100644 index 0000000..57e9bca --- /dev/null +++ b/src/components/SwitchMap.vue @@ -0,0 +1,46 @@ +<template> + <span class="inline-flex justify-center items-center rounded-md h-[42px] space-x-1 bg-[hsla(0,0%,0%,0.9)] font-pingfang-regular"> + <span + v-for="item in maps" + :key="item.id" + class="map flex items-center px-[16px] h-full rounded-md hover:bg-[#334CAF] hover:cursor-pointer" + :class="{ activated: item.id === selected }" + @click="onItemClick(item)" + > + {{ item.label }} + </span> + </span> +</template> + +<script> + export default { + name: "SwitchMap", + props: { + mapType: { + type: String, + default: "pic", + }, + }, + data() { + return { + selected: this.mapType, + maps: [ + { id: "pic", label: "影像地图" }, + { id: "gis", label: "GIS地图" }, + ], + }; + }, + methods: { + onItemClick(item) { + if (item.id === this.selected) return; + this.selected = item.id; + this.$emit("changeMap", item); + }, + }, + }; +</script> +<style> + .map.activated { + @apply bg-[#334CAF]; + } +</style> diff --git a/src/components/TimeLine/TimeLine.vue b/src/components/TimeLine/TimeLine.vue new file mode 100644 index 0000000..d5da441 --- /dev/null +++ b/src/components/TimeLine/TimeLine.vue @@ -0,0 +1,101 @@ +<template> + <ul class="w-full h-full"> + <li v-for="(v, i) in items" :key="i" class="relative m-0 list-none"> + <div class="py-2" :class="{ itemCenter: itemCenter }"> + <div class="start"> + <slot name="start" :item="v"></slot> + </div> + <!-- <template v-if="useDefaultHeadStyle"> --> + <div class="headFixedStyle" :class="{ defaultHead: !v[warningKey], warningHead: v[warningKey] }"></div> + <!-- </template> --> + <!-- <template v-else> + <div class="headFixedStyle"> + <slot name="head" :item="v"></slot> + </div> + </template> --> + <div class="tail"></div> + <div class="end"> + <slot name="end" :item="v"> </slot> + </div> + </div> + </li> + </ul> +</template> + +<script> + export default { + name: "TimeLine", + props: { + items: { + type: Array, + default() { + return []; + }, + }, + itemCenter: { + type: Boolean, + default: true, + }, + warningKey: { + type: String, + default: "isWarning", + }, + // useDefaultHeadStyle: { + // type: Boolean, + // default: true, + // }, + }, + }; +</script> + +<style lang="scss" scoped> + $nodeSize: 1.5rem; + $lineSize: 1px; + $gap: 0.5rem; + $startWidth: 70px; + .itemCenter { + display: flex; + align-items: center; + } + .start { + position: absolute; + width: $startWidth; + word-break: break-all; + } + .defaultHead { + border-radius: 50%; + background: radial-gradient(circle calc($nodeSize / 3) at 50% 50%, #fff, #fff 50%, hsla(240, 5%, 40%, 0.2) calc(50% + 1px), hsla(240, 5%, 40%, 0.2) 100%) + no-repeat center/cover border-box; + } + .defaultHead { + border-radius: 50%; + background: radial-gradient(circle calc($nodeSize / 3) at 50% 50%, #fff, #fff 50%, hsla(240, 5%, 40%, 0.2) calc(50% + 1px), hsla(240, 5%, 40%, 0.2) 100%) + no-repeat center/cover border-box; + } + .warningHead { + border-radius: 50%; + background: radial-gradient(circle calc($nodeSize / 3) at 50% 50%, #ef424e, #ef424e 50%, #552331 calc(50% + 1px), #552331 100%) no-repeat center/cover + border-box; + } + .headFixedStyle { + position: absolute; + width: $nodeSize; + height: $nodeSize; + inset-inline-start: calc($startWidth + $gap); + text-align: center; + overflow: hidden; + } + .tail { + position: absolute; + height: 100%; + inset-inline-start: calc($startWidth + $gap + $nodeSize/2 - $lineSize/2); + border-inline-start: $lineSize solid hsla(0, 0%, 100%, 0.2); + } + .end { + position: relative; + inset-inline-start: calc($startWidth + $gap + $nodeSize + $gap); + width: calc(100% - ($startWidth + $gap + $nodeSize + $gap)); + text-align: start; + word-break: break-all; + } +</style> diff --git a/src/components/TimeLine/TimeLineItem.vue b/src/components/TimeLine/TimeLineItem.vue new file mode 100644 index 0000000..cc7dc48 --- /dev/null +++ b/src/components/TimeLine/TimeLineItem.vue @@ -0,0 +1,67 @@ +<template> + <li class="relative m-0 list-none"> + <div class="start"> + <slot name="start" :item="data"></slot> + </div> + <div class="head"></div> + <div class="tail"></div> + <div class="end"> + <slot name="end" :item="data"></slot> + </div> + </li> +</template> + +<script> + export default { + name: "TimeLineItem", + props: { + data: { + type: Object, + default() { + return {}; + }, + }, + }, + }; +</script> + +<style lang="scss" scoped> + $nodeSize: 1.5rem; + $lineSize: 1px; + $gap: 0.5rem; + .start { + position: absolute; + width: calc(50% - $nodeSize/2 - $gap); + width: 30px; + max-height: calc(100% - $nodeSize/2); + inset-inline-end: calc(50% + $gap + $nodeSize/2); + text-align: end; + word-break: break-all; + // overflow-y: auto; + // overflow-x: hidden; + } + .head { + position: absolute; + width: $nodeSize; + height: $nodeSize; + inset-inline-start: calc(50% - $nodeSize/2); + border-radius: 50%; + background: radial-gradient(circle calc($nodeSize / 3) at 50% 50%, #fff, #fff 50%, hsla(240, 5%, 40%, 0.2) calc(50% + 1px), hsla(240, 5%, 40%, 0.2) 100%) + no-repeat center/cover border-box; + } + .tail { + position: absolute; + height: calc(100% - $nodeSize); + inset-block-start: $nodeSize; + inset-inline-start: calc(50% - $lineSize/2); + border-inline-start: $lineSize solid hsla(0, 0%, 100%, 0.2); + } + .end { + position: relative; + // width: calc(50% - ($nodeSize/2) - $gap); + width: calc(100%); + inset-inline-start: calc(50% + ($nodeSize/2) + $gap); + text-align: start; + word-break: break-all; + } +</style> diff --git a/src/components/TransitionSize.vue b/src/components/TransitionSize.vue new file mode 100644 index 0000000..5f76e7d --- /dev/null +++ b/src/components/TransitionSize.vue @@ -0,0 +1,253 @@ +<template> + <transition + :name="name" + @before-appear="beforeAppear" + @appear="appear" + @after-appear="afterAppear" + @appear-cancelled="appearCancelled" + @before-enter="beforeEnter" + @enter="enter" + @after-enter="afterEnter" + @enter-cancelled="enterCancelled" + @before-leave="beforeLeave" + @leave="leave" + @after-leave="afterLeave" + @leave-cancelled="leaveCancelled" + > + <slot></slot> + </transition> +</template> + +<script> + export default { + name: "CollapseTransition", + props: { + name: { + type: String, + required: false, + default: "collapse", + }, + dimension: { + type: String, + required: false, + default: "height", + validator: (value) => { + return ["height", "width"].includes(value); + }, + }, + duration: { + type: Number, + required: false, + default: 300, + }, + easing: { + type: String, + required: false, + default: "ease-in-out", + }, + }, + data() { + return { + cachedStyles: null, + }; + }, + computed: { + transition() { + let transitions = []; + Object.keys(this.cachedStyles).forEach((key) => { + transitions.push(`${this.convertToCssProperty(key)} ${this.duration}ms ${this.easing}`); + }); + return transitions.join(", "); + }, + }, + watch: { + dimension() { + this.clearCachedDimensions(); + }, + }, + methods: { + beforeAppear(el) { + // Emit the event to the parent + this.$emit("before-appear", el); + }, + appear(el) { + // Emit the event to the parent + this.$emit("appear", el); + }, + afterAppear(el) { + // Emit the event to the parent + this.$emit("after-appear", el); + }, + appearCancelled(el) { + // Emit the event to the parent + this.$emit("appear-cancelled", el); + }, + beforeEnter(el) { + // Emit the event to the parent + this.$emit("before-enter", el); + }, + enter(el, done) { + // Because width and height may be 'auto', + // first detect and cache the dimensions + this.detectAndCacheDimensions(el); + // The order of applying styles is important: + // - 1. Set styles for state before transition + // - 2. Force repaint + // - 3. Add transition style + // - 4. Set styles for state after transition + // If the order is not right and you open any 2nd level submenu + // for the first time, the transition will not work. + this.setClosedDimensions(el); + this.hideOverflow(el); + this.forceRepaint(el); + this.setTransition(el); + this.setOpenedDimensions(el); + // Emit the event to the parent + this.$emit("enter", el, done); + // Call done() when the transition ends + // to trigger the @after-enter event. + setTimeout(done, this.duration); + }, + afterEnter(el) { + // Clean up inline styles + this.unsetOverflow(el); + this.unsetTransition(el); + this.unsetDimensions(el); + this.clearCachedDimensions(); + // Emit the event to the parent + this.$emit("after-enter", el); + }, + enterCancelled(el) { + // Emit the event to the parent + this.$emit("enter-cancelled", el); + }, + beforeLeave(el) { + // Emit the event to the parent + this.$emit("before-leave", el); + }, + leave(el, done) { + // For some reason, @leave triggered when starting + // from open state on page load. So for safety, + // check if the dimensions have been cached. + this.detectAndCacheDimensions(el); + // The order of applying styles is less important + // than in the enter phase, as long as we repaint + // before setting the closed dimensions. + // But it is probably best to use the same + // order as the enter phase. + this.setOpenedDimensions(el); + this.hideOverflow(el); + this.forceRepaint(el); + this.setTransition(el); + this.setClosedDimensions(el); + // Emit the event to the parent + this.$emit("leave", el, done); + // Call done() when the transition ends + // to trigger the @after-leave event. + // This will also cause v-show + // to reapply 'display: none'. + setTimeout(done, this.duration); + }, + afterLeave(el) { + // Clean up inline styles + this.unsetOverflow(el); + this.unsetTransition(el); + this.unsetDimensions(el); + this.clearCachedDimensions(); + // Emit the event to the parent + this.$emit("after-leave", el); + }, + leaveCancelled(el) { + // Emit the event to the parent + this.$emit("leave-cancelled", el); + }, + detectAndCacheDimensions(el) { + // Cache actual dimensions + // only once to void invalid values when + // triggering during a transition + if (this.cachedStyles) return; + const visibility = el.style.visibility; + const display = el.style.display; + // Trick to get the width and + // height of a hidden element + el.style.visibility = "hidden"; + el.style.display = ""; + this.cachedStyles = this.detectRelevantDimensions(el); + // Restore any original styling + el.style.visibility = visibility; + el.style.display = display; + }, + clearCachedDimensions() { + this.cachedStyles = null; + }, + detectRelevantDimensions(el) { + // These properties will be transitioned + if (this.dimension === "height") { + return { + height: el.offsetHeight + "px", + paddingTop: el.style.paddingTop || this.getCssValue(el, "padding-top"), + paddingBottom: el.style.paddingBottom || this.getCssValue(el, "padding-bottom"), + }; + } + if (this.dimension === "width") { + return { + width: el.offsetWidth + "px", + paddingLeft: el.style.paddingLeft || this.getCssValue(el, "padding-left"), + paddingRight: el.style.paddingRight || this.getCssValue(el, "padding-right"), + }; + } + return {}; + }, + setTransition(el) { + el.style.transition = this.transition; + }, + unsetTransition(el) { + el.style.transition = ""; + }, + hideOverflow(el) { + el.style.overflow = "hidden"; + }, + unsetOverflow(el) { + el.style.overflow = ""; + }, + setClosedDimensions(el) { + Object.keys(this.cachedStyles).forEach((key) => { + el.style[key] = "0"; + }); + }, + setOpenedDimensions(el) { + Object.keys(this.cachedStyles).forEach((key) => { + el.style[key] = this.cachedStyles[key]; + }); + }, + unsetDimensions(el) { + Object.keys(this.cachedStyles).forEach((key) => { + el.style[key] = ""; + }); + }, + forceRepaint(el) { + // Force repaint to make sure the animation is triggered correctly. + // Thanks: https://markus.oberlehner.net/blog/transition-to-height-auto-with-vue/ + getComputedStyle(el)[this.dimension]; + }, + getCssValue(el, style) { + return getComputedStyle(el, null).getPropertyValue(style); + }, + convertToCssProperty(style) { + // Example: convert 'paddingTop' to 'padding-top' + // Thanks: https://gist.github.com/tan-yuki/3450323 + const upperChars = style.match(/([A-Z])/g); + if (!upperChars) { + return style; + } + for (let i = 0, n = upperChars.length; i < n; i++) { + style = style.replace(new RegExp(upperChars[i]), "-" + upperChars[i].toLowerCase()); + } + if (style.slice(0, 1) === "-") { + style = style.slice(1); + } + return style; + }, + }, + }; +</script> diff --git a/src/components/V2Echarts.vue b/src/components/V2Echarts.vue new file mode 100644 index 0000000..037b6e5 --- /dev/null +++ b/src/components/V2Echarts.vue @@ -0,0 +1,176 @@ +<template> + <div + :id="idName" + :style="`margin-top:${top}px`" + class="echarts w-full h-full" + > + </div> +</template> + +<script> +import * as echarts from 'echarts' +export default { + name: 'V2Echarts', + props: { + options: { + type: Object, + default: () => {}, + require: true + }, + // 传入id名称 + idName: { + type: String, + default: () => { + return '' + }, + require: true + }, + width: { + type: String, + default: () => { + return '410' + } + }, + height: { + type: String, + default: () => { + return '290' + } + }, + top: { + type: String, + default: () => { + return '0' + } + } + }, + data () { + return { + myChart: null, + resizeObserver: null, + } + }, + + watch: { + options: { + handler (newVal) { + this.setChartEvents(newVal) + }, + deep: true, + immediate: true + } + }, + created() { + this.$nextTick(this.initTheChart) + }, + methods: { + // 初始化图表 + initTheChart() { + this.myChart = echarts.init(document.getElementById(this.idName)) + this.myChart.setOption(this.options, true) + + // 鼠标移入图表时,不为第一条时就取消第一条的高亮效果 + this.myChart.on('mouseover', v => { + if (v.dataIndex !== 0) { + this.myChart.dispatchAction({ + type: 'downplay', + seriesIndex: 0, + dataIndex: 0 + }) + } + if (this.idName === 'jinzhanqushi' || this.idName === 'dailogjinzhanqushi') { + this.myChart.setOption({ + tooltip: { + // 鼠标在折线上,系列内横向比对,显示系列名称 + formatter: function(p) { + const ynames = ['年度计划完成', '预计年度完成', '预计年度TBM', '预计年度钻爆'] + if (ynames.indexOf(p[v.seriesIndex].seriesName) !== -1) { + return p[v.seriesIndex].marker + + ' ' + p[v.seriesIndex].seriesName + ':' + p[v.seriesIndex].value + 'm' + } else { + let dataStr = '' + const valMap = {}; + p.forEach(element => { + const seriesName = element.seriesName; // 图例名称 + const value = element.value; // y轴值 + + // 过滤无效值 + if (value === '-') { + return + } + // 过滤重叠值 + if (valMap[seriesName] === value) { + return + } + if (ynames.indexOf(seriesName) === -1) { + dataStr += `<span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${element.color};"></span>` + dataStr += `${element.seriesName}: <span style="font-size:16px;font-weight:600;">${element.data ? element.data : 0}m</span> <br>` + valMap[seriesName] = value; + } + }); + return dataStr + } + } + } + }) + } + }) + // 鼠标图表时默认显示第一条 + this.myChart.on('mouseout', v => { + this.myChart.dispatchAction({ + type: 'highlight', + seriesIndex: 0, + dataIndex: 0 + }) + }) + // this.myChart.on('click', function (param) { + // console.log('param', param) + // }) + // 监听窗口变化 - 只刷新最后一个图表 + window.onresize = () => { + this.myChart.resize() + } + // 监听窗口变化 - 多个图表同时刷新 + window.addEventListener('resize', () => { + this.myChart.resize() + }) + }, + // 设置图表的事件 + setChartEvents (options) { + // console.log(options, this.idName) + if (!this.myChart) return + this.myChart.setOption(options, true) + // 刷新时默认显示第一条 + this.myChart.dispatchAction({ + type: 'highlight', + seriesIndex: 0, + dataIndex: 0 + }) + }, + setResize() { + this.$nextTick(() => { + // 使echarts尺寸重置 + if (this.myChart) { + this.myChart.resize() + } + }) + } + }, + mounted() { + // 当屏幕改变,图表重新动态改变并渲染 + const self = this; + const viewElem = document.body; + // 调用实例对象的observe方法,监听整个body节点的变化,当改变窗口大小或者某个DOM节点出现或隐藏时时,就会触发回调 + this.resizeObserver = new ResizeObserver(() => { + if (!self.myChart) return + self.myChart.resize(); + }); + this.resizeObserver.observe(viewElem); + }, + beforeDestroy() { + if (this.resizeObserver) { + this.resizeObserver.unobserve(document.body) + } + } +} +</script> diff --git a/src/components/VideoPlayer.vue b/src/components/VideoPlayer.vue new file mode 100644 index 0000000..5bcf447 --- /dev/null +++ b/src/components/VideoPlayer.vue @@ -0,0 +1,91 @@ +<template> + <video ref="videoPlayer" class="video-js vjs-big-play-centered" v-bind="$attrs"></video> +</template> + +<script> + import videojs from "video.js"; + import "video.js/dist/video-js.min.css"; + import { merge } from "lodash-es"; + + export default { + name: "VideoPlayer", + inheritAttrs: false, + props: { + options: { + type: Object, + default() { + return {}; + }, + }, + }, + data() { + return { + player: null, + defaultOptions: { + autoplay: "play", // false true muted play any + controls: true, + loop: false, + muted: true, + preload: "auto", // auto metadata none + + fluid: false, + language: "zh-CN", + notSupportedMessage: "此视频暂无法播放,请稍后再试", + controlBar: { + remainingTimeDisplay: true, + currentTimeDisplay: true, + timeDivider: true, + durationDisplay: true, + progressControl: true, + customControlSpacer: true, + fullscreenToggle: true, + volumePanel: { + inline: false, + }, + }, + liveTracker: { trackingThreshold: 5, liveTolerance: 5 }, + }, + }; + }, + computed: { + finalOptions() { + return merge({}, this.defaultOptions, this.options); + }, + }, + mounted() { + this.init(); + }, + beforeDestroy() { + this.player?.dispose(); + this.$emit("dispose"); + }, + methods: { + init() { + const that = this; + videojs(this.$refs.videoPlayer, this.finalOptions, function () { + that.player = this; + that.$emit("ready", this); + }); + }, + }, + }; +</script> + +<style lang="scss" scoped> + ::v-deep .vjs-control-bar { + background-color: rgba(0, 0, 0, 0.6); + } + + ::v-deep .vjs-slider-horizontal { + .vjs-volume-level::before { + top: -4px; + } + .vjs-play-progress::before { + top: -5px; + } + } + + ::v-deep .vjs-slider-vertical .vjs-volume-level:before { + left: -4px; + } +</style> diff --git a/src/components/Warning.vue b/src/components/Warning.vue new file mode 100644 index 0000000..f8f0a6b --- /dev/null +++ b/src/components/Warning.vue @@ -0,0 +1,20 @@ +<template> + <div class="warning-bg"> + <slot></slot> + </div> +</template> + +<script> + export default { + name: "Warning", + }; +</script> + +<style> + .warning-bg { + @apply h-10; + background: url("../assets/images/warning-bg.png") no-repeat left center / cover, + linear-gradient(to right, hsla(0, 0%, 0%, 0.1), hsla(0, 0%, 0%, 0.3)) no-repeat left center / cover hsla(0, 0%, 0%, 0.6); + height: 32px; + } +</style> diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..4988e8e --- /dev/null +++ b/src/main.js @@ -0,0 +1,29 @@ +import Vue from "vue"; + +//todo:更改为按需引入 +import ElementUI from "element-ui"; +import "element-ui/lib/theme-chalk/index.css"; +Vue.use(ElementUI); + +import { http } from "./utils/http.js"; +Vue.prototype.$http = http; + +import store from "./store/index"; +import router from "./router"; +import App from "./App.vue"; + +import "@css/DIN_font.css"; +import "@css/tail-wind/index.css"; +import "@css/element-ui-override.scss"; +import "@css/self-global.scss"; + + +Vue.config.productionTip = false; + +new Vue({ + store, + router, + render: (h) => { + return h(App); + }, +}).$mount("#app"); diff --git a/src/mixins/index.js b/src/mixins/index.js new file mode 100644 index 0000000..e8fe035 --- /dev/null +++ b/src/mixins/index.js @@ -0,0 +1,22 @@ +/* + * @Author: gjj Ganjj@probim.com.cn + * @Date: 2025-02-14 14:32:18 + * @LastEditors: gjj Ganjj@probim.com.cn + * @LastEditTime: 2025-02-18 16:21:27 + * @FilePath: \北京交通大学\src\mixins\index.js + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { mapGetters } from "vuex"; +export const mixinGetters = { + computed: { + ...mapGetters("common", []), + }, + methods: { + getImageUrl(path) { + return new URL(path, + import.meta.url).href; + }, + }, +}; +export { default as conversationMix } +from './conversationMix' \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..a5ef209 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,45 @@ +/* + * @Author: gjj Ganjj@probim.com.cn + * @Date: 2025-02-14 14:32:19 + * @LastEditors: gjj Ganjj@probim.com.cn + * @LastEditTime: 2025-02-18 15:25:13 + * @FilePath: \北京交通大学\src\router\index.js + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import Vue from "vue"; +import VueRouter from "vue-router"; + +import NProgress from "nprogress"; +import "nprogress/nprogress.css"; + + + +// 注册路由插件 +Vue.use(VueRouter); + +const routes = [{ + path: "/", + redirect: "/home", + }, + { + path: "/home", + component: () => + import ("../views/Home.vue") + }, +]; + +const router = new VueRouter({ + routes, + mode: "hash", +}); + +router.beforeEach((to, from, next) => { + NProgress.start(); + next(); +}); + +router.afterEach((to) => { + NProgress.done(); +}); + +export default router; \ No newline at end of file diff --git a/src/sceneJSON.js b/src/sceneJSON.js new file mode 100644 index 0000000..0d1f8ef --- /dev/null +++ b/src/sceneJSON.js @@ -0,0 +1,2 @@ +export const sceneJSON = +'{"id":"","name":"","modifiedTime":"2024-08-29 15:43:24","version":"1.3","config":"{\\"envmapIndex\\":14,\\"envmapIntensity\\":0.4,\\"envAngle\\":60,\\"fpsFirst\\":false,\\"highlightColor\\":41209,\\"highlight\\":true,\\"ssao\\":true,\\"highQuality\\":false,\\"cullingRatio\\":0,\\"fogRange\\":[20,20],\\"fogIntensity\\":0,\\"shadow\\":false,\\"shadowFar\\":200,\\"lightX\\":-1,\\"lightY\\":-1,\\"lightZ\\":-1,\\"lightIntensity\\":0.75,\\"maxDistance\\":0,\\"mapboxToken\\":\\"qqwwee\\",\\"shadowBias\\":-0.000004}","features":["{\\"id\\":\\"underlay\\",\\"name\\":\\"空白球体\\",\\"type\\":\\"underlay\\",\\"lib\\":\\"1\\",\\"version\\":\\"\\",\\"url\\":\\"https://app.probim.cn/scenemanager//ref/style/blank.json\\",\\"phase\\":\\"\\",\\"origin\\":[0,0],\\"rotation\\":0,\\"altitude\\":0,\\"offset\\":[0,0,0],\\"scale\\":[1,1,1],\\"bpt\\":{\\"elements\\":[1,0,0,0,0,0.9999999998476913,0.000017453292519057202,0,0,-0.000017453292519057202,0.9999999998476913,0,0,0,0,1]},\\"visible\\":true,\\"AABB\\":{\\"isBox3\\":true,\\"min\\":{\\"x\\":null,\\"y\\":null,\\"z\\":null},\\"max\\":{\\"x\\":null,\\"y\\":null,\\"z\\":null},\\"_id\\":\\"2e2ec760-f585-c89e-ed53-a7f652513f49\\"},\\"dataKey\\":\\"e5501695-3091-0bea-1ccc-1cbc56f4dcb9\\",\\"followType\\":\\"feature\\",\\"config\\":\\"{\\\\\\"skybox\\\\\\":\\\\\\"noon\\\\\\"}\\",\\"dynamicLoad\\":true,\\"priority\\":0,\\"always\\":false,\\"immediate\\":true,\\"materials\\":[]}","{\\"id\\":\\"bfddecc4-6167-b5cb-467a-98fed380b2e3\\",\\"name\\":\\"WMTS服务1\\",\\"type\\":\\"wmts\\",\\"lib\\":\\"1\\",\\"version\\":\\"\\",\\"url\\":\\"https://t7.tianditu.gov.cn/img_w/wmts?tk=1e1e425c920f09544d68abc6d3817d04&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=tiles\\",\\"phase\\":\\"\\",\\"origin\\":[0,0],\\"rotation\\":0,\\"altitude\\":0,\\"offset\\":[0,0,0],\\"scale\\":[1,1,1],\\"bpt\\":{\\"elements\\":[1,0,0,0,0,0.9999999998476913,0.000017453292519057202,0,0,-0.000017453292519057202,0.9999999998476913,0,0,0,0,1]},\\"visible\\":true,\\"AABB\\":{\\"isBox3\\":true,\\"min\\":{\\"x\\":null,\\"y\\":null,\\"z\\":null},\\"max\\":{\\"x\\":null,\\"y\\":null,\\"z\\":null},\\"_id\\":\\"57538fb7-4b10-8076-d0eb-c13a3feca460\\"},\\"dataKey\\":\\"837848da-f832-4b53-acd4-4f194a2d5b1e\\",\\"followType\\":\\"feature\\",\\"config\\":\\"{\\\\\\"skybox\\\\\\":\\\\\\"noon\\\\\\"}\\",\\"dynamicLoad\\":true,\\"priority\\":0,\\"always\\":false,\\"immediate\\":true,\\"materials\\":[]}","{\\"id\\":\\"f687a975-5bd9-a403-6484-e2f418826862\\",\\"name\\":\\"新闸\\",\\"type\\":\\"model\\",\\"lib\\":\\"0\\",\\"version\\":\\"\\",\\"url\\":null,\\"phase\\":\\"DefaultPhase\\",\\"origin\\":[119.90260831711623,31.827473378552156],\\"rotation\\":[0,0,0],\\"altitude\\":0,\\"offset\\":[-241.11057275906205,-293.2394152218476,1.7955735561783366e-14],\\"scale\\":[1,1,1],\\"bpt\\":{\\"elements\\":[1.176940613392704,0,0,0,0,1.1769406132134457,0.000020541488803101475,0,0,-0.000020541488803101475,1.1769406132134457,0,13332339.041458853,1.9500641577063412e-26,-3736211.246584299,1]},\\"visible\\":true,\\"AABB\\":{\\"isBox3\\":true,\\"min\\":{\\"x\\":0.000030517578125,\\"y\\":-1.8686627184255267e-21,\\"z\\":-601.8034057617188},\\"max\\":{\\"x\\":761.9501953125,\\"y\\":74.78964233398442,\\"z\\":0.00003051757812957955},\\"_id\\":\\"cf21d89d-e5b5-36c6-54e7-07406abca142\\"},\\"dataKey\\":\\"ed4d29c9-b869-e975-2724-101578a928c8\\",\\"followType\\":\\"feature\\",\\"config\\":\\"{\\\\\\"skybox\\\\\\":\\\\\\"noon\\\\\\"}\\",\\"dynamicLoad\\":true,\\"priority\\":0,\\"always\\":false,\\"immediate\\":true,\\"materials\\":[{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D81A2F92F01D1040\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777215,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^85970412D7185703\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5EE349E88CE5865A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.10000002384185791,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5329743,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E62DEF52FC092AC9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":33023,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^52FA4786D4A119AF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16547197,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^ED01C3C336EA80F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744448,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^8D997C2F5980A36B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14054434,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AEC20C5D28F59780\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13057855,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^8DF151103E33A521\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6610B07BFEFCCE13\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10855437,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^14716A0BCDA9E170\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8592153,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^8AB0018257A53CE2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10947338,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D7B56A186ADA0A5D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10591898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B7ABE79D0138F023\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":819613,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^4592AAF8119D3977\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15132390,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7890BBA158DE57FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10790050,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^29575D86DDE83098\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9214881,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1A5B26E8A1063C4E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":815501,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D119BE571C70F53E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2197793,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CA130647CC78AEBA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13369344,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^71C53BDA98CE170D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14477532,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2C2A496CA6BBFF13\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2565927,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B80125371F67A986\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":328965,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D95421A17DB73BC9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.48000001907348633,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4622045,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D048C9B8DA0DB528\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^654CA06CFDF5289A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13586176,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B5D3E50A8D18AB6E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9278095,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E123CBDEF59059CE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16250871,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^79F430B2CBF5823B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921906,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^38A98D5DB92AF8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6E28F12254156111\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12632256,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5187C22473824681\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14867498,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CB4A9A0A6367ED2A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10853258,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D4543C7C3BAEA683\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15133164,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1F0596B044E4BE85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":0,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^841471E9F3378BB4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16776960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E27903C4F8756E07\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1381653,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^87ABF33F4BB1AF4A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C18E45BC1E5F0CAE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7631724,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FC81D800187D630E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":891473,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2E6CBE96B8BF028A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2840809,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^198D83F04A2A36BB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^92E73F81B2D0A8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5288898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^22F5BFB61D796628\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32512,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^4FF7E03F0D4AD6CC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.25,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^65D7CDDBF36EF4BA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.19999998807907104,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^548FC51FFD2D8572\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":65280,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C03D5A072FEF71FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13355979,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^15B2D083D78D1BBC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11513748,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B073F9C3E4FD7CBA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3785435,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C791C0DD5A93A1E4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^0E84E1A6D54885E9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7632236,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^48444795BEA520FD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1513471,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3BEEECEB3372239B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14277068,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^86C8CB497A1998DA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2631750,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7EACF5F30DA72DB9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.699999988079071,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FF2A9B9632C1559E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4900351,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^75314D1F676F6B7B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.30000001192092896,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9221610,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D73EA68337E7114C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6579310,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FA96E42575BED707\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8405056,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6ABE4198ECB8DBFB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16711680,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^27D3FCC5063FAA3E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11316396,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F3BF5B638390B6B9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":18303,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6D9622CFEBF52E8E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1184274,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A51FFC62ED7EDA27\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1339463,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C92740ED4D40E339\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11314082,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C66BBAB92B4E4604\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10969439,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D8B7EEFA759A1453\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16225308,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^92BEDB9CADE80520\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9601654,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^08DDEA3FEAF7BE87\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5526353,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7119A034FCDE58CB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1007285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3E11B912B5C75E85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5658198,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A72F95B9EF6517D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12895428,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5F0B112779DF95C2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10526880,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^239F413F588B85B7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1602812,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^849DE34EA4110355\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16185078,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7DCE659C9B351155\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5308673,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A4BF2009F409739B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14865581,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^38157C3BE4E88A28\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3089701,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2571C7833CFA0CAB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921919,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^162C3932316C0191\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8556446,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F31C0642D9567BE1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7009239,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^353572C4715D9AB0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9539985,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^9BA265DCD88EB62D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8275968,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^13C7EA441A4DD08D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1582584,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^95010136E77993D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15855582,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^871CD988591A6644\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5263440,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C1E7E32D18C4B34F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12951926,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AF5ECC0D6B87A765\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5400497,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6CA0E9A625FB4672\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6126768,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CF10FE079662AE0B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6389166,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F6C2EB603F8779AE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6710886,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C1AF737C876921CB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11228995,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^17BF247A1022F69F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16762766,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^EDBC03C5C8823A39\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16757606,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1563546319BCF852\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5264728,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^9DEF0DEE1E23ECBD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421504,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6804EA363474D20C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1644825,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^ED9081801F254C7A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16645629,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F174E2795AC548F6\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":52736,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^0FEB1ECF20F7BB6B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15466496,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^994000BF54CA9923\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5923430,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^73CC441BE7E1E3C9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6730751,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B8040B4247C69AFF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3419176,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6FD50FA633213D65\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13938795,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^77766EB3C7F0D92A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4429039,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^95ACA1DCB6DC3661\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8278590,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B187CE833DB0B6E0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16222,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5C41870E23BFE88F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5269169,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^03273155CAA3DD68\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13421772,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^20398ABEDEA7F9F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":49151,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5CBC2C2E6B487C43\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^489B65D19F1C9B1F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13806700,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^68284746F4FA59E7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3165590,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^9895FD7D7F00FCA4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3296917,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^39FB9861BE0037F3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9338213,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^04CC71DA800B002A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7902098,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^31E791FAD1B5C2A6\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10461329,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5DF714E055809E6D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16757760,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FF9C56DA57D62974\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4473924,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B95DECABE4B2E1C3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8388608,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^54F5E06AF84F94A7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.01,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7128025,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1408A395E7AC0B35\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9524247,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^35AE951F0B6D7062\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7910761,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AF3B304D1CB724E8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10590351,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^35E9197E0C4EF5DF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6376254,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AAB55F57B4013A98\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FB8C5422CE261ABB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9474189,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6A11245E68559A75\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9540631,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3ECFC04B1F048D55\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6383731,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E841BB89C12B374A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5462370,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^98E434375738AC7C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6785982,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2797A039118B4490\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921894,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^071B43F50F81032F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3034694,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3EFE7EC5CC7228E2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2955539,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FC76D80D6D53889C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10060923,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B9EEE9FE0753EB42\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421568,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^774528D54053BADD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8454016,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FE210A488D3B185A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421631,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2A96E00E6665B982\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12563117,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3A892A6F9DFB4735\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744576,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F5148E191CCB2A1E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8454143,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^360761F51BEC8316\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1795427,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CD63CF11FEE94E51\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8405799,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6B4CEDEF62BCF1DA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13681585,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E6DD88A3714CEE61\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11310467,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AF29B923CBE1C8B8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7122513,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^85FE11013D0386D9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777088,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A6BDBF786D3815F8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16732240,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2AA72A2F6DB29350\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11260873,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6A2794655182CFFA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.1499999761581421,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14345184,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B52D8EC6D7EC3A86\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6449996,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C5E25139E4360983\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4147021,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D45E6C9F456EDB04\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8673341,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C9AB20258B98901A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744640,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7A0621CA20CAC430\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.7999999970197678,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421568,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^892763180A66BFE4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12497868,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^59185EB1E038D84E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15667434,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^69A1A81ACEF3BE6C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16748335,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2F8022B11A0E74A0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D81A2F92F01D1040\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777215,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^85970412D7185703\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5EE349E88CE5865A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.10000002384185791,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5329743,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E62DEF52FC092AC9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":33023,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^52FA4786D4A119AF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16547197,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^ED01C3C336EA80F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744448,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^8D997C2F5980A36B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14054434,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AEC20C5D28F59780\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13057855,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^8DF151103E33A521\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6610B07BFEFCCE13\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10855437,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^14716A0BCDA9E170\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8592153,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^8AB0018257A53CE2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10947338,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D7B56A186ADA0A5D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10591898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B7ABE79D0138F023\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":819613,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^4592AAF8119D3977\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15132390,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7890BBA158DE57FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10790050,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^29575D86DDE83098\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9214881,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1A5B26E8A1063C4E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":815501,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D119BE571C70F53E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2197793,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CA130647CC78AEBA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13369344,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^71C53BDA98CE170D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14477532,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2C2A496CA6BBFF13\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2565927,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B80125371F67A986\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":328965,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D95421A17DB73BC9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.48000001907348633,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4622045,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D048C9B8DA0DB528\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^654CA06CFDF5289A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13586176,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B5D3E50A8D18AB6E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9278095,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E123CBDEF59059CE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16250871,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^79F430B2CBF5823B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921906,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^38A98D5DB92AF8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6E28F12254156111\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12632256,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5187C22473824681\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14867498,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CB4A9A0A6367ED2A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10853258,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D4543C7C3BAEA683\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15133164,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1F0596B044E4BE85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":0,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^841471E9F3378BB4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16776960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E27903C4F8756E07\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1381653,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^87ABF33F4BB1AF4A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C18E45BC1E5F0CAE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7631724,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FC81D800187D630E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":891473,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2E6CBE96B8BF028A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2840809,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^198D83F04A2A36BB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^92E73F81B2D0A8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5288898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^22F5BFB61D796628\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32512,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^4FF7E03F0D4AD6CC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.25,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^65D7CDDBF36EF4BA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.19999998807907104,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^548FC51FFD2D8572\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":65280,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C03D5A072FEF71FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13355979,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^15B2D083D78D1BBC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11513748,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B073F9C3E4FD7CBA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3785435,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C791C0DD5A93A1E4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^0E84E1A6D54885E9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7632236,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^48444795BEA520FD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1513471,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3BEEECEB3372239B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14277068,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^86C8CB497A1998DA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2631750,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7EACF5F30DA72DB9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.699999988079071,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FF2A9B9632C1559E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4900351,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^75314D1F676F6B7B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.30000001192092896,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9221610,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D73EA68337E7114C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6579310,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FA96E42575BED707\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8405056,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6ABE4198ECB8DBFB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16711680,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^27D3FCC5063FAA3E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11316396,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F3BF5B638390B6B9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":18303,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6D9622CFEBF52E8E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1184274,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A51FFC62ED7EDA27\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1339463,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C92740ED4D40E339\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11314082,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C66BBAB92B4E4604\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10969439,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D8B7EEFA759A1453\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16225308,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^92BEDB9CADE80520\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9601654,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^08DDEA3FEAF7BE87\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5526353,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7119A034FCDE58CB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1007285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3E11B912B5C75E85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5658198,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A72F95B9EF6517D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12895428,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5F0B112779DF95C2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10526880,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^239F413F588B85B7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1602812,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^849DE34EA4110355\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16185078,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7DCE659C9B351155\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5308673,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A4BF2009F409739B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14865581,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^38157C3BE4E88A28\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3089701,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2571C7833CFA0CAB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921919,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^162C3932316C0191\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8556446,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F31C0642D9567BE1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7009239,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^353572C4715D9AB0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9539985,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^9BA265DCD88EB62D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8275968,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^13C7EA441A4DD08D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1582584,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^95010136E77993D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15855582,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^871CD988591A6644\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5263440,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C1E7E32D18C4B34F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12951926,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AF5ECC0D6B87A765\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5400497,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6CA0E9A625FB4672\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6126768,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CF10FE079662AE0B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6389166,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F6C2EB603F8779AE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6710886,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C1AF737C876921CB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11228995,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^17BF247A1022F69F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16762766,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^EDBC03C5C8823A39\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16757606,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1563546319BCF852\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5264728,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^9DEF0DEE1E23ECBD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421504,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6804EA363474D20C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1644825,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^ED9081801F254C7A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16645629,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F174E2795AC548F6\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":52736,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^0FEB1ECF20F7BB6B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15466496,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^994000BF54CA9923\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5923430,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^73CC441BE7E1E3C9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6730751,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B8040B4247C69AFF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3419176,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6FD50FA633213D65\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13938795,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^77766EB3C7F0D92A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4429039,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^95ACA1DCB6DC3661\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8278590,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B187CE833DB0B6E0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16222,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5C41870E23BFE88F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5269169,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^03273155CAA3DD68\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13421772,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^20398ABEDEA7F9F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":49151,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5CBC2C2E6B487C43\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^489B65D19F1C9B1F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13806700,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^68284746F4FA59E7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3165590,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^9895FD7D7F00FCA4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3296917,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^39FB9861BE0037F3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9338213,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^04CC71DA800B002A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7902098,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^31E791FAD1B5C2A6\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10461329,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^5DF714E055809E6D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16757760,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FF9C56DA57D62974\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4473924,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B95DECABE4B2E1C3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8388608,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^54F5E06AF84F94A7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.01,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7128025,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^1408A395E7AC0B35\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9524247,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^35AE951F0B6D7062\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7910761,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AF3B304D1CB724E8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10590351,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^35E9197E0C4EF5DF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6376254,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AAB55F57B4013A98\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FB8C5422CE261ABB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9474189,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6A11245E68559A75\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9540631,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3ECFC04B1F048D55\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6383731,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E841BB89C12B374A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5462370,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^98E434375738AC7C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6785982,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2797A039118B4490\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921894,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^071B43F50F81032F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3034694,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3EFE7EC5CC7228E2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2955539,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FC76D80D6D53889C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10060923,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B9EEE9FE0753EB42\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421568,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^774528D54053BADD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8454016,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^FE210A488D3B185A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421631,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2A96E00E6665B982\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12563117,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^3A892A6F9DFB4735\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744576,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^F5148E191CCB2A1E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8454143,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^360761F51BEC8316\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1795427,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^CD63CF11FEE94E51\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8405799,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6B4CEDEF62BCF1DA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13681585,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^E6DD88A3714CEE61\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11310467,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^AF29B923CBE1C8B8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7122513,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^85FE11013D0386D9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777088,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^A6BDBF786D3815F8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16732240,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2AA72A2F6DB29350\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11260873,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^6A2794655182CFFA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.1499999761581421,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14345184,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^B52D8EC6D7EC3A86\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6449996,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C5E25139E4360983\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4147021,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^D45E6C9F456EDB04\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8673341,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^C9AB20258B98901A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744640,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^7A0621CA20CAC430\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.7999999970197678,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421568,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^892763180A66BFE4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12497868,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^59185EB1E038D84E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15667434,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^69A1A81ACEF3BE6C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16748335,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"f687a975-5bd9-a403-6484-e2f418826862^2F8022B11A0E74A0\\"}],\\"server\\":\\"https://app-multiverse.probim.cn\\",\\"vaultID\\":\\"13127881-36dd-4af4-b96c-bb261dde7bb2\\",\\"modelID\\":\\"f70b5b81-31e3-4f6c-a334-cbfe0c70909a\\",\\"activeViews\\":[\\"{\\\\\\"id\\\\\\":\\\\\\"Default\\\\\\",\\\\\\"name\\\\\\":\\\\\\"{ 三维 }\\\\\\",\\\\\\"type\\\\\\":\\\\\\"3D\\\\\\",\\\\\\"default\\\\\\":true}\\"],\\"part\\":false,\\"texture\\":true,\\"cacheVersion\\":0}","{\\"id\\":\\"9fafef36-ee75-19ef-0619-25e41b857568\\",\\"name\\":\\"飞龙二小\\",\\"type\\":\\"model\\",\\"lib\\":\\"0\\",\\"version\\":\\"\\",\\"url\\":null,\\"phase\\":\\"DefaultPhase\\",\\"origin\\":[119.92343340675626,31.815238831026093],\\"rotation\\":[0,0,24.48361326359418],\\"altitude\\":0,\\"offset\\":[-23.268060324713588,-169.62839399510995,1.0386743487549342e-14],\\"scale\\":[1,1,1],\\"bpt\\":{\\"elements\\":[1.0709789648570414,0.000008512029475097851,-0.4877033639627791,0,-2.802300313941357e-17,1.176796717380481,0.000020538977347048848,0,0.48770336403706055,-0.000018692109155407023,1.0709789646939218,0,13334872.53148468,1.8467233791223886e-26,-3734733.789521135,1]},\\"visible\\":true,\\"AABB\\":{\\"isBox3\\":true,\\"min\\":{\\"x\\":0.00002956390380859375,\\"y\\":9.343313592127634e-22,\\"z\\":-368.0233154296875},\\"max\\":{\\"x\\":447.7242736816406,\\"y\\":46.989639282226584,\\"z\\":-0.000015258789059622714},\\"_id\\":\\"707555bf-c3e3-8e13-a0f1-a56573e770f1\\"},\\"dataKey\\":\\"8d906c55-5106-2bd6-ab6e-7d5a3463c453\\",\\"followType\\":\\"feature\\",\\"config\\":\\"{\\\\\\"skybox\\\\\\":\\\\\\"noon\\\\\\"}\\",\\"dynamicLoad\\":true,\\"priority\\":0,\\"always\\":false,\\"immediate\\":true,\\"materials\\":[{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421504,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6804EA363474D20C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777215,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^85970412D7185703\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9524247,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^35AE951F0B6D7062\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":94742,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^345535803A2531C4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^BFDF7E1521F921F3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5EE349E88CE5865A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^85A695E4B04D033F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":33023,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^52FA4786D4A119AF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12632256,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5187C22473824681\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15133164,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1F0596B044E4BE85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6E28F12254156111\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5263440,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C1E7E32D18C4B34F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3EBDD4907D4FFC35\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16250871,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^2CA14FA2D236A7D1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744448,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8D997C2F5980A36B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14054434,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AEC20C5D28F59780\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16547197,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^ED01C3C336EA80F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13057855,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8DF151103E33A521\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16250871,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^79F430B2CBF5823B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10947338,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D7B56A186ADA0A5D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":815501,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D119BE571C70F53E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6610B07BFEFCCE13\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10591898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^B7ABE79D0138F023\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":819613,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4592AAF8119D3977\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15132390,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7890BBA158DE57FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10790050,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^29575D86DDE83098\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8592153,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8AB0018257A53CE2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9214881,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1A5B26E8A1063C4E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10855437,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^14716A0BCDA9E170\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14867498,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^CB4A9A0A6367ED2A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1381653,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^87ABF33F4BB1AF4A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16776960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E27903C4F8756E07\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16379976,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9508B68FA3CA43A5\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3223857,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^388B500F9AF39DBC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^92E73F81B2D0A8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5288898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^22F5BFB61D796628\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":0,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^841471E9F3378BB4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32512,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4FF7E03F0D4AD6CC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.25,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^65D7CDDBF36EF4BA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.1499999761581421,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15528175,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F4333A4676AAA503\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":65280,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C03D5A072FEF71FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13355979,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^15B2D083D78D1BBC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14277068,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^86C8CB497A1998DA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1513471,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3BEEECEB3372239B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16711680,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^27D3FCC5063FAA3E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1582584,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^95010136E77993D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15855582,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^871CD988591A6644\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4900351,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^75314D1F676F6B7B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C18E45BC1E5F0CAE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.30000001192092896,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9221610,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D73EA68337E7114C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7632236,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^48444795BEA520FD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^0E84E1A6D54885E9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1184274,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A51FFC62ED7EDA27\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8405056,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6ABE4198ECB8DBFB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11316396,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F3BF5B638390B6B9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12895428,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5F0B112779DF95C2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10526880,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^239F413F588B85B7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1602812,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^849DE34EA4110355\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16185078,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7DCE659C9B351155\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5308673,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A4BF2009F409739B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14865581,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^38157C3BE4E88A28\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3089701,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^2571C7833CFA0CAB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921919,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^162C3932316C0191\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8556446,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F31C0642D9567BE1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.699999988079071,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^FF2A9B9632C1559E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2631750,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7EACF5F30DA72DB9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5658198,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A72F95B9EF6517D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1007285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3E11B912B5C75E85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4227200,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^59EC7CFABC70D480\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3785435,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C791C0DD5A93A1E4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A059685633098DBE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^711AA6A3D95293A2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16182986,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^B5A89992B998BCFF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4741217,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^393051331DCA77E0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":949698,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^258D943C638DE382\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.2799999713897705,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15528175,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AC88942361CBDD4F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7009239,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^353572C4715D9AB0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9539985,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9BA265DCD88EB62D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8275968,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^13C7EA441A4DD08D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9C640EC05C40DC4A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15461355,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6348493CCC95A4A9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5876991,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7311ACF8F6E26312\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2500134,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^2992DBB2CD0A5BC7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^654CA06CFDF5289A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6974058,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8D7856FE83DE6186\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8603718,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F531B7AF7FF6272D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15776380,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^587FE5317A301DCC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15644951,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F40B4256E9CB016F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6381921,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1484F41C06177A0A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11579568,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^CDB18C93133E662F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15263976,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^69BC47E5585C0D5E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2631720,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^142C12987526F554\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":986895,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C989962B4C06469A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6908265,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^DB7B2F2FE6CD53A8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1F0C7DFC8C94AD37\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10066578,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^16BE52042A490771\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7828858,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F2DB9930D4743CE7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^95FDA8C329A0EFEE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5066314,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E463DC86ACFDC4F7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11228995,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^17BF247A1022F69F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D4260F865D6281A1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C180AB1AE975B37F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AE31AFBE9793BB7E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10247979,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^17AFCE13EE90D185\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4364EB75AE6CDC6A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^82B23CED4C7CFFE3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E152DCE5575CC276\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9737364,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5E944D3F8B9C521E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^79249AE253340BCE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7DDEEDD855E3EC5F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1563143DE8F700DD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6859992,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^136B7BD40FE19B2F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15987699,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5A33389B3F2B7EBF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6A190C9120CC0191\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^611127A65DFA2791\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2105376,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1BCCE2A6FC499CDD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14737371,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6620FD28B9513372\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16514043,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8F5D92548203F52F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11674403,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^26F50314B59CD03D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8847360,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3B09A6DC104A336E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5923430,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^73CC441BE7E1E3C9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":52736,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^0FEB1ECF20F7BB6B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15466496,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^994000BF54CA9923\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5264728,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9DEF0DEE1E23ECBD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1644825,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^ED9081801F254C7A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16757606,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1563546319BCF852\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16645629,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F174E2795AC548F6\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6389166,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F6C2EB603F8779AE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2840809,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^198D83F04A2A36BB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6710886,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C1AF737C876921CB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16762766,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^EDBC03C5C8823A39\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5400497,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6CA0E9A625FB4672\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6126768,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^CF10FE079662AE0B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12951926,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AF5ECC0D6B87A765\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3419176,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6FD50FA633213D65\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13938795,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^77766EB3C7F0D92A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13806700,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^68284746F4FA59E7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":49151,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5CBC2C2E6B487C43\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^489B65D19F1C9B1F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13421772,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^20398ABEDEA7F9F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5269169,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^03273155CAA3DD68\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8388608,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^54F5E06AF84F94A7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.01,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7128025,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1408A395E7AC0B35\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4473924,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^B95DECABE4B2E1C3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.5099999904632568,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777215,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^36DD56EABC39D462\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^EDF27A24CEE1F343\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4429039,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^95ACA1DCB6DC3661\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A792FB57DA084074\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9540631,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3ECFC04B1F048D55\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9474189,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6A11245E68559A75\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6383731,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E841BB89C12B374A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5462370,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^98E434375738AC7C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8488054,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4A38A92BDE054812\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7040100,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E49AEF06B1BD267B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12563117,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3A892A6F9DFB4735\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12893616,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C25D75255A8FFAF1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16579832,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1BF4097EDC4337D3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421504,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^842F47C49356C440\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4144959,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^DA805FABD8A83ADD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3947580,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8197F85E5CA5FF6B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9742008,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^17828FE32BAA9602\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421504,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6804EA363474D20C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777215,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^85970412D7185703\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9524247,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^35AE951F0B6D7062\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":94742,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^345535803A2531C4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^BFDF7E1521F921F3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5EE349E88CE5865A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^85A695E4B04D033F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":33023,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^52FA4786D4A119AF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12632256,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5187C22473824681\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15133164,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1F0596B044E4BE85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6E28F12254156111\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5263440,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C1E7E32D18C4B34F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3EBDD4907D4FFC35\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16250871,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^2CA14FA2D236A7D1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744448,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8D997C2F5980A36B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14054434,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AEC20C5D28F59780\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16547197,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^ED01C3C336EA80F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13057855,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8DF151103E33A521\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16250871,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^79F430B2CBF5823B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10947338,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D7B56A186ADA0A5D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":815501,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D119BE571C70F53E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6610B07BFEFCCE13\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10591898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^B7ABE79D0138F023\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":819613,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4592AAF8119D3977\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15132390,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7890BBA158DE57FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10790050,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^29575D86DDE83098\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8592153,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8AB0018257A53CE2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9214881,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1A5B26E8A1063C4E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10855437,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^14716A0BCDA9E170\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14867498,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^CB4A9A0A6367ED2A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1381653,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^87ABF33F4BB1AF4A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16776960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E27903C4F8756E07\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16379976,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9508B68FA3CA43A5\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3223857,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^388B500F9AF39DBC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^92E73F81B2D0A8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5288898,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^22F5BFB61D796628\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":0,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^841471E9F3378BB4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32512,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4FF7E03F0D4AD6CC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.25,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^65D7CDDBF36EF4BA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.1499999761581421,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15528175,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F4333A4676AAA503\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":65280,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C03D5A072FEF71FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13355979,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^15B2D083D78D1BBC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14277068,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^86C8CB497A1998DA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1513471,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3BEEECEB3372239B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16711680,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^27D3FCC5063FAA3E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1582584,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^95010136E77993D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15855582,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^871CD988591A6644\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4900351,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^75314D1F676F6B7B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C18E45BC1E5F0CAE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.30000001192092896,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9221610,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D73EA68337E7114C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7632236,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^48444795BEA520FD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^0E84E1A6D54885E9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1184274,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A51FFC62ED7EDA27\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8405056,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6ABE4198ECB8DBFB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11316396,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F3BF5B638390B6B9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12895428,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5F0B112779DF95C2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10526880,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^239F413F588B85B7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1602812,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^849DE34EA4110355\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16185078,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7DCE659C9B351155\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5308673,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A4BF2009F409739B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14865581,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^38157C3BE4E88A28\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3089701,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^2571C7833CFA0CAB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921919,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^162C3932316C0191\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8556446,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F31C0642D9567BE1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.699999988079071,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^FF2A9B9632C1559E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2631750,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7EACF5F30DA72DB9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5658198,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A72F95B9EF6517D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1007285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3E11B912B5C75E85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4227200,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^59EC7CFABC70D480\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3785435,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C791C0DD5A93A1E4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A059685633098DBE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^711AA6A3D95293A2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16182986,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^B5A89992B998BCFF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4741217,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^393051331DCA77E0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":949698,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^258D943C638DE382\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.2799999713897705,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15528175,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AC88942361CBDD4F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7009239,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^353572C4715D9AB0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9539985,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9BA265DCD88EB62D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8275968,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^13C7EA441A4DD08D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9C640EC05C40DC4A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15461355,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6348493CCC95A4A9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5876991,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7311ACF8F6E26312\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2500134,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^2992DBB2CD0A5BC7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^654CA06CFDF5289A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6974058,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8D7856FE83DE6186\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8603718,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F531B7AF7FF6272D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15776380,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^587FE5317A301DCC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15644951,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F40B4256E9CB016F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6381921,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1484F41C06177A0A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11579568,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^CDB18C93133E662F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15263976,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^69BC47E5585C0D5E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2631720,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^142C12987526F554\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":986895,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C989962B4C06469A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6908265,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^DB7B2F2FE6CD53A8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1F0C7DFC8C94AD37\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10066578,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^16BE52042A490771\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7828858,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F2DB9930D4743CE7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^95FDA8C329A0EFEE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5066314,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E463DC86ACFDC4F7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11228995,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^17BF247A1022F69F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^D4260F865D6281A1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C180AB1AE975B37F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AE31AFBE9793BB7E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10247979,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^17AFCE13EE90D185\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4364EB75AE6CDC6A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^82B23CED4C7CFFE3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E152DCE5575CC276\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9737364,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5E944D3F8B9C521E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^79249AE253340BCE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^7DDEEDD855E3EC5F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1563143DE8F700DD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6859992,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^136B7BD40FE19B2F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15987699,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5A33389B3F2B7EBF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6A190C9120CC0191\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^611127A65DFA2791\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2105376,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1BCCE2A6FC499CDD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14737371,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6620FD28B9513372\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16514043,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8F5D92548203F52F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11674403,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^26F50314B59CD03D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8847360,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3B09A6DC104A336E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5923430,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^73CC441BE7E1E3C9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":52736,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^0FEB1ECF20F7BB6B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15466496,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^994000BF54CA9923\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5264728,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^9DEF0DEE1E23ECBD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1644825,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^ED9081801F254C7A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16757606,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1563546319BCF852\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16645629,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F174E2795AC548F6\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6389166,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^F6C2EB603F8779AE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2840809,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^198D83F04A2A36BB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6710886,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C1AF737C876921CB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16762766,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^EDBC03C5C8823A39\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5400497,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6CA0E9A625FB4672\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6126768,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^CF10FE079662AE0B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12951926,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^AF5ECC0D6B87A765\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3419176,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6FD50FA633213D65\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13938795,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^77766EB3C7F0D92A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13806700,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^68284746F4FA59E7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":49151,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^5CBC2C2E6B487C43\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^489B65D19F1C9B1F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13421772,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^20398ABEDEA7F9F1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5269169,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^03273155CAA3DD68\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8388608,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^54F5E06AF84F94A7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.01,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7128025,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1408A395E7AC0B35\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4473924,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^B95DECABE4B2E1C3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.5099999904632568,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777215,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^36DD56EABC39D462\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^EDF27A24CEE1F343\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4429039,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^95ACA1DCB6DC3661\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^A792FB57DA084074\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9540631,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3ECFC04B1F048D55\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9474189,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^6A11245E68559A75\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6383731,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E841BB89C12B374A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5462370,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^98E434375738AC7C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8488054,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^4A38A92BDE054812\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7040100,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^E49AEF06B1BD267B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12563117,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^3A892A6F9DFB4735\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12893616,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^C25D75255A8FFAF1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16579832,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^1BF4097EDC4337D3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421504,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^842F47C49356C440\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4144959,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^DA805FABD8A83ADD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3947580,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^8197F85E5CA5FF6B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9742008,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"9fafef36-ee75-19ef-0619-25e41b857568^17828FE32BAA9602\\"}],\\"server\\":\\"https://app-multiverse.probim.cn\\",\\"vaultID\\":\\"13127881-36dd-4af4-b96c-bb261dde7bb2\\",\\"modelID\\":\\"dca8ea41-760a-4f84-9f91-ed5ca48aed5d\\",\\"activeViews\\":[\\"{\\\\\\"id\\\\\\":\\\\\\"Default\\\\\\",\\\\\\"name\\\\\\":\\\\\\"{ 三维 }\\\\\\",\\\\\\"type\\\\\\":\\\\\\"3D\\\\\\",\\\\\\"default\\\\\\":true}\\"],\\"part\\":false,\\"texture\\":true,\\"cacheVersion\\":0}","{\\"id\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5\\",\\"name\\":\\"锦程科创园项目\\",\\"type\\":\\"model\\",\\"lib\\":\\"0\\",\\"version\\":\\"\\",\\"url\\":null,\\"phase\\":\\"DefaultPhase\\",\\"origin\\":[119.95200948393409,31.829179222578617],\\"rotation\\":[0,0,180],\\"altitude\\":0,\\"offset\\":[230.61210049502552,376.3752259532921,-2.3046335787106798e-14],\\"scale\\":[1,1,1],\\"bpt\\":{\\"elements\\":[-1.1770276040904253,2.264238665273327e-16,-1.4414035696571976e-16,0,2.2642135076903244e-16,1.1770276039111538,0.00002054300707719524,0,1.4414430878574173e-16,0.00002054300707719524,-1.1770276039111538,0,13338303.930840047,-3.748667021610248e-27,-3737104.112524872,1]},\\"visible\\":true,\\"AABB\\":{\\"isBox3\\":true,\\"min\\":{\\"x\\":0,\\"y\\":1.8686627184255267e-21,\\"z\\":-385.6127624511719},\\"max\\":{\\"x\\":369.62847900390625,\\"y\\":99.23963928222659,\\"z\\":-0.000030517578118923325},\\"_id\\":\\"7967a25f-6545-0e9a-05cc-ac2b909568de\\"},\\"dataKey\\":\\"6e01da40-b1d1-c406-9e43-d98e6509f37d\\",\\"followType\\":\\"feature\\",\\"config\\":\\"{\\\\\\"skybox\\\\\\":\\\\\\"noon\\\\\\"}\\",\\"dynamicLoad\\":true,\\"priority\\":0,\\"always\\":false,\\"immediate\\":true,\\"materials\\":[{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5066314,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^E463DC86ACFDC4F7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13748167,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^2A4ACD4DA9348C25\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12632256,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^5187C22473824681\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14867498,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^CB4A9A0A6367ED2A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5982789,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^AD5B41BD513164F8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12988942,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^AA8630D41D6F5431\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8860694,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^603026BAB6B187FB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8860438,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^BA75D1A3EFC5282A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4222936,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^7197980C308DE4C3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777215,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^85970412D7185703\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4737095,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^FDBFD0447E21031D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11187133,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^35C1F850BD5F96E1\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":2777583,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^86FD849AC65D144B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":255,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^92E73F81B2D0A8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13057855,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^8DF151103E33A521\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16711680,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^27D3FCC5063FAA3E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10448958,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^F7849FE9BE723C90\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^9C640EC05C40DC4A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12895428,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^5F0B112779DF95C2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5995714,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^0A72A6DFA3317FC0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.1499999761581421,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13558496,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^C875710149A8FE8E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10526880,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^239F413F588B85B7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10263708,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^B1247B040F193E17\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7947092,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^3228D5EF191CD1BF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5263440,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^C1E7E32D18C4B34F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14054434,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^AEC20C5D28F59780\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4473924,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^B95DECABE4B2E1C3\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8388608,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^54F5E06AF84F94A7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.01,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7128025,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^1408A395E7AC0B35\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9524247,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^35AE951F0B6D7062\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":32960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^489B65D19F1C9B1F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15133164,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^1F0596B044E4BE85\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^5EE349E88CE5865A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15001828,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^94B1B4C66A1F4173\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14737371,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^6620FD28B9513372\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14671839,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^68705FF78DC8225D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8405056,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^6ABE4198ECB8DBFB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16776960,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^E27903C4F8756E07\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11316396,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^F3BF5B638390B6B9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.1499999761581421,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10930372,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^07B05C7425ED04E4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3436428,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^3C120A0511323609\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10066578,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^16BE52042A490771\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.19999998807907104,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^548FC51FFD2D8572\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":0.699999988079071,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^FF2A9B9632C1559E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3419176,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^6FD50FA633213D65\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8275968,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^13C7EA441A4DD08D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1184274,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^A51FFC62ED7EDA27\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":0,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^841471E9F3378BB4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14277068,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^86C8CB497A1998DA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1513471,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^3BEEECEB3372239B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16250871,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^79F430B2CBF5823B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3785435,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^C791C0DD5A93A1E4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":11513748,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^B073F9C3E4FD7CBA\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16773632,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^985693350ACAD588\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8157198,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^C02E80FCCA00A421\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16762766,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^EDBC03C5C8823A39\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^654CA06CFDF5289A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":949698,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^258D943C638DE382\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^022BF55C5E3CDEBD\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":5923174,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^80E2FD799B2C04D8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921906,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^38A98D5DB92AF8C7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12248057,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^3E4B0D3553BE3313\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16514043,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^8F5D92548203F52F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16777088,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^A6BDBF786D3815F8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^711AA6A3D95293A2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":41961,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^62B08F5FA90C821D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":33023,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^52FA4786D4A119AF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10658466,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^A2D8968D21FA88CE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":18046,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^79E0462D34BE95EB\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12434361,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^BC8725673140D292\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16119285,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^C18E45BC1E5F0CAE\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":673942,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^745BFEB7FE672089\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7632236,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^618E503DCB62710C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12289807,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^EF6644790A529C61\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1582584,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^95010136E77993D4\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15855582,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^871CD988591A6644\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7009239,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^353572C4715D9AB0\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":9539985,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^9BA265DCD88EB62D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7895160,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^E01C409F0E80EC2E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10066329,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^C1235CA6F0A06324\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":13369344,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^71C53BDA98CE170D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":4539717,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^D020816CF184E511\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15921894,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^071B43F50F81032F\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15859712,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^7D03DC28E6732991\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6974058,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^8D7856FE83DE6186\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":15776380,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^587FE5317A301DCC\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8603718,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^F531B7AF7FF6272D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7910761,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^AF3B304D1CB724E8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8488072,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^8CABA55EB7FE3933\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":14408448,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^97719E7EFFBB4AD8\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16297769,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^C6091791F6B6600B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3034694,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^3EFE7EC5CC7228E2\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":3618615,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^4FB23D90D6372A65\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8816017,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^E66A787237AC029D\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":6124608,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^DE04AFA15AAA0F30\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421504,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^6804EA363474D20C\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8454016,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^FE210A488D3B185A\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":1795427,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^CD63CF11FEE94E51\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421631,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^2A96E00E6665B982\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":65535,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^10BA29E088D46D55\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8421440,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^1F136E2A9B2F3254\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16744448,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^8D997C2F5980A36B\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":8355711,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^6E28F12254156111\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12632256,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^37EACF4F495250A7\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16754253,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^D0EC207D31D00CCF\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":10060923,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^B9EEE9FE0753EB42\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7631724,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^FC81D800187D630E\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":12563117,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^3A892A6F9DFB4735\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16711808,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^174158D226918238\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":7566444,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^6AFC12DE2414C3D9\\"},{\\"metal\\":false,\\"clearCoat\\":0.05,\\"clearCoatRoughness\\":0.05,\\"sheen\\":0,\\"sheenRoughness\\":1,\\"specularIntensity\\":1,\\"opacity\\":1,\\"lights\\":true,\\"polygonOffsetFactor\\":0,\\"dashed\\":false,\\"linewidth\\":1,\\"dashScale\\":1,\\"dashSize\\":1,\\"gapSize\\":1,\\"maps\\":[],\\"color\\":16758271,\\"metalness\\":0.5,\\"roughness\\":0.5,\\"reflectivity\\":1,\\"emissiveColor\\":0,\\"emissive\\":0,\\"type\\":\\"3D\\",\\"matID\\":\\"555928ac-70b2-66c0-7695-0e28ab74b4d5^483D711D08CEE256\\"}],\\"server\\":\\"https://app-multiverse.probim.cn\\",\\"vaultID\\":\\"13127881-36dd-4af4-b96c-bb261dde7bb2\\",\\"modelID\\":\\"c7775edb-5c5c-4e4f-86f0-733566fc63ae\\",\\"activeViews\\":[\\"{\\\\\\"id\\\\\\":\\\\\\"Default\\\\\\",\\\\\\"name\\\\\\":\\\\\\"{ 三维 }\\\\\\",\\\\\\"type\\\\\\":\\\\\\"3D\\\\\\",\\\\\\"default\\\\\\":true}\\"],\\"part\\":false,\\"texture\\":true}","{\\"id\\":\\"41f3c7dc-abc7-963e-1e21-f0d1a34fe8ca\\",\\"name\\":\\"3D Tiles1\\",\\"type\\":\\"_3dTiles\\",\\"lib\\":\\"0\\",\\"version\\":\\"\\",\\"url\\":\\"https://bimcomposer.probim.cn:8070/wumeng/aobili/JCKJY/tileset.json\\",\\"phase\\":\\"\\",\\"origin\\":[119.95152080954345,31.829451597417023],\\"rotation\\":[0,0,0],\\"altitude\\":40.786508311617204,\\"offset\\":[0,0,0],\\"scale\\":[1,1,1],\\"bpt\\":{\\"elements\\":[1.1769944047081096,0,0,0,0,1.176994404528843,0.000020542427638664234,0,0,-0.000020542427638664234,1.176994404528843,0,13338018.980551478,48.00549207035427,-3736763.384572206,1]},\\"visible\\":true,\\"AABB\\":{\\"isBox3\\":true,\\"min\\":{\\"x\\":-999.0416434444487,\\"y\\":-999.0590798578436,\\"z\\":-999.0590798575431},\\"max\\":{\\"x\\":999.0416434425861,\\"y\\":999.0590798578436,\\"z\\":999.0590798584744},\\"_id\\":\\"2c52dc3a-d5dd-a648-cc3a-499ce5741c8c\\"},\\"dataKey\\":\\"tile-41f3c7dc-abc7-963e-1e21-f0d1a34fe8ca\\",\\"followType\\":\\"feature\\",\\"config\\":\\"{\\\\\\"skybox\\\\\\":\\\\\\"noon\\\\\\"}\\",\\"dynamicLoad\\":true,\\"priority\\":0,\\"always\\":false,\\"immediate\\":true,\\"materials\\":[]}","{\\"id\\":\\"66d5243f-abec-1911-31c0-6607ca38bf94\\",\\"name\\":\\"3D Tiles2\\",\\"type\\":\\"_3dTiles\\",\\"lib\\":\\"0\\",\\"version\\":\\"\\",\\"url\\":\\"https://bimcomposer.probim.cn:8070/wumeng/aobili/XZ/tileset.json\\",\\"phase\\":\\"\\",\\"origin\\":[119.90563061194253,31.829785770146547],\\"rotation\\":[0,0,0],\\"altitude\\":19.597619277171663,\\"offset\\":[0,0,0],\\"scale\\":[1,1,1],\\"bpt\\":{\\"elements\\":[1.176998665936478,0,0,0,0,1.1769986657572107,0.000020542502011129438,0,0,-0.000020542502011129438,1.1769986657572107,0,13332916.216347307,23.066371744762048,-3736807.119837275,1]},\\"visible\\":true,\\"AABB\\":{\\"isBox3\\":true,\\"min\\":{\\"x\\":-796.8248775918037,\\"y\\":-796.8387846881682,\\"z\\":-796.8387846881524},\\"max\\":{\\"x\\":796.8248775918037,\\"y\\":796.8387846881682,\\"z\\":796.838784688618},\\"_id\\":\\"68453ac7-6e21-40da-0dd0-2647a44756db\\"},\\"dataKey\\":\\"tile-66d5243f-abec-1911-31c0-6607ca38bf94\\",\\"followType\\":\\"feature\\",\\"config\\":\\"{\\\\\\"skybox\\\\\\":\\\\\\"noon\\\\\\"}\\",\\"dynamicLoad\\":true,\\"priority\\":0,\\"always\\":false,\\"immediate\\":true,\\"materials\\":[]}"],"data":"[{\\"key\\":\\"e5501695-3091-0bea-1ccc-1cbc56f4dcb9\\",\\"data\\":{\\"projectionValue\\":\\"globe\\"}},{\\"key\\":\\"837848da-f832-4b53-acd4-4f194a2d5b1e\\",\\"data\\":{}},{\\"key\\":\\"ed4d29c9-b869-e975-2724-101578a928c8\\",\\"data\\":{}},{\\"key\\":\\"8d906c55-5106-2bd6-ab6e-7d5a3463c453\\",\\"data\\":{}},{\\"key\\":\\"6e01da40-b1d1-c406-9e43-d98e6509f37d\\",\\"data\\":{}},{\\"key\\":\\"tile-41f3c7dc-abc7-963e-1e21-f0d1a34fe8ca\\",\\"data\\":{\\"opacity\\":1,\\"errorTarget\\":10,\\"errorThreshold\\":100,\\"includePoints\\":false,\\"pntsSize\\":2,\\"pntColor\\":\\"\\"}},{\\"key\\":\\"tile-66d5243f-abec-1911-31c0-6607ca38bf94\\",\\"data\\":{\\"opacity\\":1,\\"errorTarget\\":5,\\"errorThreshold\\":150,\\"includePoints\\":false,\\"pntsSize\\":2,\\"pntColor\\":\\"\\"}}]","viewpoints":[],"pathRoamings":[],"clips":[],"animations":[],"triggers":[],"selectionSets":[],"defaultViewpoint":"{\\"id\\":\\"4309baee-2c02-906f-69c1-d620a6015089\\",\\"type\\":\\"viewpoint\\",\\"cameraInfo\\":{\\"position\\":{\\"x\\":13333080.791135095,\\"y\\":123.62657806456848,\\"z\\":-3736329.4793962254},\\"target\\":{\\"x\\":13332965.398053603,\\"y\\":39.892778497046706,\\"z\\":-3736569.1929557077},\\"focalOffset\\":{\\"x\\":-1.9480155337083147,\\"y\\":-9.428415271815595,\\"z\\":-0.1400808070217181}},\\"coloredObjects\\":[],\\"twinkleObjects\\":[],\\"invisibleObjects\\":[],\\"isolatedObjects\\":[],\\"ghostObjects\\":[],\\"featureSnap\\":[],\\"default\\":true}","deletedObjects":[]}' \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..35108d4 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,16 @@ +import Vue from "vue"; +import Vuex from "vuex"; + +Vue.use(Vuex); + +const moduleFilesObj = import.meta.glob("./modules/*.js", { eager: true }); +const modules = Object.keys(moduleFilesObj).reduce((acc, moduleKey) => { + const moduleName = moduleKey.replace(/^\.\/modules\/(.*)\.js$/gi, "$1"); + if (moduleName) { + acc[moduleName] = moduleFilesObj[moduleKey]?.default ?? {}; + acc[moduleName].namespaced = true; + } + return acc; +}, {}); + +export default new Vuex.Store({ modules }); diff --git a/src/store/modules/common.js b/src/store/modules/common.js new file mode 100644 index 0000000..9cdbc46 --- /dev/null +++ b/src/store/modules/common.js @@ -0,0 +1,20 @@ +export default { + namespaced: true, + state: () => ({ + code: null, //用户信息 + }), + + mutations: { + setCode(state, data) { + state.code = data; + }, + }, + actions: { + setCode(context, data) { + context.commit("setCode", data); + }, + }, + getters: { + code: (state) => state.code, + }, +}; \ No newline at end of file diff --git a/src/utils/getToken.js b/src/utils/getToken.js new file mode 100644 index 0000000..a2fe80d --- /dev/null +++ b/src/utils/getToken.js @@ -0,0 +1,9 @@ +import store from "../store/index"; + +export const getToken = () => { + let token = store.getters["common/token"]; + if (!token) { + token = window.localStorage.getItem("token"); + } + return token; +} \ No newline at end of file diff --git a/src/utils/getUserProfile.js b/src/utils/getUserProfile.js new file mode 100644 index 0000000..83251cc --- /dev/null +++ b/src/utils/getUserProfile.js @@ -0,0 +1,9 @@ +import store from "../store/index"; + +export const getUserProfile = () => { + let userProfile = store.getters["common/userProfile"]; + if (!userProfile) { + userProfile = JSON.parse(window.localStorage.getItem("userProfile")); + } + return userProfile; +} \ No newline at end of file diff --git a/src/utils/http.js b/src/utils/http.js new file mode 100644 index 0000000..8cf3b4d --- /dev/null +++ b/src/utils/http.js @@ -0,0 +1,280 @@ +import axios from "axios"; +import { Message, Loading } from "element-ui"; +import { debounce } from "lodash-es"; +import store from "../store/index"; +import { getToken } from "./getToken.js"; +import { toLoginPage, toResetPwdPage } from "./logout"; + +let axiosBaseURL; +let axiosTimeout; +let workflowLoginURL; +if (import.meta.env.PROD) { + //生产环境 + const ProjectConfig = window.ProjectConfig; + + axiosBaseURL = ProjectConfig.axiosBaseURL; + axiosTimeout = ProjectConfig.axiosTimeout; + workflowLoginURL = ProjectConfig.workflowLoginURL; +} else { + //非生产环境 + axiosBaseURL = "/api"; + axiosTimeout = 1000 * 30; + workflowLoginURL = "http://workflow-newapi.probim.cn/api/User/Home/Login"; +} + +export const http = axios.create({ + withCredentials: false, + baseURL: axiosBaseURL, + timeout: axiosTimeout +}); + +//loading对象 +let loadingInstance; + +//当前正在请求的数量 +let needLoadingRequestCount = 0; + +//显示loading +function showLoading(target) { + // 后面这个判断很重要,因为关闭时加了抖动,此时loading对象可能还存在, + // 但needLoadingRequestCount已经变成0.避免这种情况下会重新创建个loading + if (needLoadingRequestCount === 0 && !loadingInstance) { + loadingInstance = Loading.service({ + target: target || "body", + fullscreen: false, + lock: true, + text: "Loading...", + // spinner: "", + // background: "", + // customClass: "", + }); + } + needLoadingRequestCount++; +} + +//隐藏loading +function hideLoading() { + needLoadingRequestCount--; + needLoadingRequestCount = Math.max(needLoadingRequestCount, 0); //做个保护 + if (needLoadingRequestCount === 0) { + //关闭loading + toHideLoading(); + } +} + +//防抖:将 300ms 间隔内的关闭 loading 便合并为一次。防止连续请求时, loading闪烁的问题。 +const toHideLoading = debounce(() => { + loadingInstance?.close(); + loadingInstance = null; +}, 300); + + +//处理响应的结果,返回统一结构 +function handleTheResponse(response) { + console.log(`axios包装过的响应${response.config.url}`, response); + if (response.config.showLoading === true) { + hideLoading(); + } + // { + // // `data` 由服务器提供的响应 + // data: {}, + // // `status` 来自服务器响应的 HTTP 状态码 + // status: 200, + // // `statusText` 来自服务器响应的 HTTP 状态信息 + // statusText: 'OK', + // // `headers` 是服务器响应头 + // // 所有的 header 名称都是小写,而且可以使用方括号语法访问 + // // 例如: `response.headers['content-type']` + // headers: {}, + // // `config` 是 `axios` 请求的配置信息 + // config: {}, + // // `request` 是生成此响应的请求 + // // 在node.js中它是最后一个ClientRequest实例 (in redirects), + // // 在浏览器中则是 XMLHttpRequest 实例 + // request: {} + // } + + let responseData = response.data; + if (response.status === 200) { + if (responseData?.code === 40001) { + toLoginPage(); + return; + } + if(responseData?.code === 40002) { + toResetPwdPage(); + return; + } + const targetUrl = response.config.url.toLowerCase(); + if (/^\s*$/g.test("" + responseData)) { + responseData = { + code: 1, + message: "无响应数据", + data: null, + }; + } else if (targetUrl === "https://bnah-web-api.biaddti.com/api/video/video/getvideo") { + //摄像头视频 + responseData = { + code: responseData?.Ret === 1 ? 0 : 1, + message: responseData?.Msg ?? "服务异常", + data: responseData?.Data ?? null, + }; + } else if (targetUrl.startsWith(workflowLoginURL.toLowerCase())) { + //协同登录,响应结构不一样,需要单独处理 + responseData = { + code: responseData?.Ret === 1 ? 0 : 1, + message: responseData?.Msg ?? "协同登录服务异常", + data: responseData?.Data ?? null, + }; + } else if (targetUrl.startsWith("https://api.help.bj.cn/apis/weather")) { + // { + // "status": "0", //反馈代码 0成功 + // "msg": "反馈信息", //反馈信息 + // "cityen": "changchun", //城市名称英文 + // "city": "长春", //城市名称 + // "citycode": "101060101", //城市编码 + // "temp": "10", //实时温度 + // "tempf": "50", //华氏温度 + // "wd": "西风", //风向 + // "wden": "W", //风向英文 + // "wdforce": "3级", //风力 + // "wdspd": "<12km/h", //风速 + // "uptime": "12:00", //更新时间 + // "weather": "晴", //天气状况 + // "weatheren": "Sunny", //天气状况英文 + // "weatherimg": "d00", //天气状况图标 + // "stp": "994", //气压 + // "wisib": "35000", //能见度 + // "humidity": "46%", //湿度 + // "prcp": "0", //降雨 + // "prcp24h": "2.2", //24小时降雨量 + // "aqi": "22", //AQI + // "pm25": "20", //PM2.5 + // "today": "10月17日(星期一)" //今天日期 + // } + //网上找的天气信息接口,由服务端代理,响应结构不一样,需要单独处理 + if (responseData?.status === "0") { + responseData = { + code: 0, + message: null, + data: responseData, + }; + } else { + responseData = { + code: 1, + message: "天气服务异常", + data: null, + }; + } + } + } else { + return { + code: 1, + message: responseData?.message ?? "服务异常", + data: responseData, + }; + } + if (!responseData || responseData.code !== 0) { + Message.error({ message: responseData?.message ?? "服务异常", duration: 1000 * 3 }); + } + return responseData; +} + +//处理错误,返回统一结构 +function handleTheError(error) { + console.log(`axios包装过的错误${error.config.url}`, error); + if (error.config?.showLoading === true) { + hideLoading(); + } + const responseData = { code: -999, data: null }; + if (error.response) { + const { data, status, statusText } = error.response; + if (status === 500 && /^\s*$/gi.test(data + "")) { + responseData.message = "服务异常,无响应数据"; + } else { + responseData.data = data; + responseData.message = `${statusText ?? "服务异常,请稍后再试"}`; + } + } else if (error.request) { + responseData.message = "未收到服务端响应,请稍后再试"; + } else { + responseData.message = "未发送请求,请检查请求参数是否正确"; + } + Message.error({ message: responseData.message, duration: 1000 * 3 }); + return responseData; +} + +//添加请求拦截器 +http.interceptors.request.use( + (config) => { + if (config.showLoading === true) { + showLoading(config.loadingTarget); + } + if (config.withProjectId !== false) { + config.headers["projectId"] = store.getters["common/currentProjectId"]; + } + if (config.withToken !== false) { + config.headers["token"] = getToken(); + } + return config; + }, + (error) => { + // console.log("request-error", error); + //todo 封装成固定结构 {code,data,message} + return handleTheError(error); + }, +); + +//响应拦截器 +http.interceptors.response.use( + (response) => { + //todo 封装成固定结构 {code,data,message} + return handleTheResponse(response); + }, + (error) => { + //todo 封装成固定结构 {code,data,message} + return handleTheError(error); + }, +); +// 引擎接口 +let modelaxiosUrl +const ProjectConfig = window.ProjectConfig; + +modelaxiosUrl = ProjectConfig.modelUrl; +export const modelhttp = axios.create({ + withCredentials: false, + baseURL: modelaxiosUrl, + timeout: axiosTimeout +}); + +//添加请求拦截器 +modelhttp.interceptors.request.use( + (config) => { + if (config.showLoading === true) { + showLoading(config.loadingTarget); + } + if (config.withProjectId !== false) { + config.headers["projectId"] = store.getters["common/currentProjectId"]; + } + if (config.withToken !== false) { + config.headers["token"] = getToken(); + } + return config; + }, + (error) => { + // console.log("request-error", error); + //todo 封装成固定结构 {code,data,message} + return handleTheError(error); + }, +); + +//响应拦截器 +modelhttp.interceptors.response.use( + (response) => { + //todo 封装成固定结构 {code,data,message} + return handleTheResponse(response); + }, + (error) => { + //todo 封装成固定结构 {code,data,message} + return handleTheError(error); + }, +); \ No newline at end of file diff --git a/src/utils/logout.js b/src/utils/logout.js new file mode 100644 index 0000000..29f9c57 --- /dev/null +++ b/src/utils/logout.js @@ -0,0 +1,19 @@ +import store from "../store/index"; +import router from "../router"; + +const clearAuthenticateInfo = () => { + store.commit("common/setToken", ""); + store.commit("common/setUserProfile", null); + window.localStorage.removeItem("token"); + window.localStorage.removeItem("userProfile"); +} + +export const toLoginPage = () => { + clearAuthenticateInfo(); + router.replace("/login"); +} + +export const toResetPwdPage = () => { + clearAuthenticateInfo(); + router.replace("/resetpwd"); +} \ No newline at end of file diff --git a/src/views/EquipmentView.vue b/src/views/EquipmentView.vue new file mode 100644 index 0000000..a499a46 --- /dev/null +++ b/src/views/EquipmentView.vue @@ -0,0 +1,618 @@ +<template> + <div class="equipment-container"> + <div class="top-section mb-[20px]"> + <div + class="w-full h-[4vh] mb-[1vh]" + :style="{ + backgroundImage: `url(${titleImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + </div> + <div class="stats-grid" :style="sectionStyle"> + <div class="stat-item mb-[10px]"> + <div class="stat-info"> + <img class="w-[24px] h-[24px]" src="../assets/images/backgrounds/shishirenshu.png" alt=""> + <span class="satalabel ml-[8px]">实时人数</span> + </div> + <div class="value text-[#00FFFF] text-[28px] font-bold">62</div> + </div> + <div class="stat-item mb-[10px]"> + <div class="stat-info"> + <img class="w-[24px] h-[24px]" src="../assets/images/backgrounds/people.png" alt=""> + <span class="satalabel ml-[8px]">今日累计/人次</span> + </div> + <div class="value text-[#FFD500] text-[28px] font-bold">62</div> + </div> + <div class="stat-item"> + <div class="stat-info"> + <img class="w-[24px] h-[24px]" src="../assets/images/backgrounds/zaigang.png" alt=""> + <span class="satalabel ml-[8px]">在岗总数</span> + </div> + <div class="value text-[#FFD500] text-[28px] font-bold">62</div> + </div> + </div> + </div> + + <div class="middle-section mb-[20px]"> + <div + class="w-full h-[4vh] mb-[1vh]" + :style="{ + backgroundImage: `url(${middleImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + </div> + <div class="equipment-status" :style="sectionStyle"> + <div + class="w-full h-[30px] mb-[10px]" + :style="{ + backgroundImage: `url(${bgImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + <div class="text-white text-[14px] ml-[40px] leading-[35px]">升降机监控</div> + </div> + <div class="status-circles"> + <template v-for="item in circleItems"> + <div class="circle-item flex flex-col items-center justify-center" :key="item.id"> + <div class="progress-circle"> + <V2Echarts :idName="item.id" :options="item.options" /> + <div class="percentage">{{item.percentage}}%</div> + </div> + <div class="label mt-[5px] flex flex-row items-center justify-center"> + <div class="text-[12px] text-[#FFFFFF] mr-[12px]">{{item.name}}</div> + <div class="text-[24px] text-[#FFD500]">{{item.value}}</div> + </div> + </div> + </template> + </div> + <div class="control-buttons mt-[30px]"> + <button class="control-btn" :class="{ 'active': currentTab === '塔吊监控' }" @click="handleControlBtnClick('塔吊监控')">塔吊监控</button> + <button class="control-btn" :class="{ 'active': currentTab === '升降机监控' }" @click="handleControlBtnClick('升降机监控')">升降机监控</button> + </div> + <div class="divider"></div> + <div class="progress-bar"> + <div class="label">运行设备总数</div> + <div class="bar flex items-center"> + <div class="progress relative w-[80%] h-[24px]"> + <div class="progress-inner" :style="{ width: `${deviceOnline / deviceTotal * 100}%` }"></div> + <div class="progress-blocks"> + <div v-for="n in 28" :key="n" + class="block" + :class="{ 'active': (n-1)/28 * 100 <= (deviceOnline / deviceTotal * 100) }" + ></div> + </div> + </div> + <div class="count-container ml-[25px]"> + <span class="text-[#FFBF00] text-[24px]">{{deviceOnline}}</span> + <span class="text-white text-[24px]">/</span> + <span class="text-white text-[24px]">{{deviceTotal}}</span> + </div> + </div> + </div> + </div> + </div> + + <div class="bottom-section"> + <div + class="w-full h-[4vh] mb-[1vh]" + :style="{ + backgroundImage: `url(${bottomImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + </div> + <div class="environment-grid" :style="sectionStyle"> + <div class="env-item"> + <img class="w-[60px] h-[60px]" src="../assets/images/backgrounds/daqiwendu.png" alt=""> + <div class="env-info"> + <span class="envlabel">大气温度</span> + <span class="envvalue" :style="enviorStyle">5°C</span> + </div> + </div> + <div class="env-item"> + <img class="w-[60px] h-[60px]" src="../assets/images/backgrounds/daqishidu.png" alt=""> + <div class="env-info"> + <span class="envlabel">大气湿度</span> + <span class="envvalue" :style="enviorStyle">22.9%</span> + </div> + </div> + <div class="env-item"> + <img class="w-[60px] h-[60px]" src="../assets/images/backgrounds/PM2.png" alt=""> + <div class="env-info"> + <span class="envlabel">PM2.5</span> + <span class="envvalue" :style="enviorStyle">10 μg/m³</span> + </div> + </div> + <div class="env-item"> + <img class="w-[60px] h-[60px]" src="../assets/images/backgrounds/PM10.png" alt=""> + <div class="env-info"> + <span class="envlabel">PM10</span> + <span class="envvalue" :style="enviorStyle">13 μg/m³</span> + </div> + </div> + <div class="env-item"> + <img class="w-[60px] h-[60px]" src="../assets/images/backgrounds/fengli.png" alt=""> + <div class="env-info"> + <span class="envlabel">风力</span> + <span class="envvalue" :style="enviorStyle">3级</span> + </div> + </div> + <div class="env-item"> + <img class="w-[60px] h-[60px]" src="../assets/images/backgrounds/fengxiang.png" alt=""> + <div class="env-info"> + <span class="envlabel">风向</span> + <span class="envvalue" :style="enviorStyle">北风</span> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +import V2Echarts from '@/components/V2Echarts.vue' +export default { + name: 'EquipmentView', + components: { + V2Echarts + }, + data() { + return { + backgroundImage: new URL('@/assets/images/backgrounds/cover_bg.png', import.meta.url).href, + titleImage: new URL('@/assets/images/titles/renyuan.png', import.meta.url).href, + middleImage: new URL('@/assets/images/titles/shebei.png', import.meta.url).href, + bottomImage: new URL('@/assets/images/titles/huanjing.png', import.meta.url).href, + bgImage: new URL('@/assets/images/titles/title_second.png', import.meta.url).href, + enviorImage: new URL('@/assets/images/titles/wendu_bg.png', import.meta.url).href, + deviceOnline: 1, + deviceTotal: 27, + currentTab: '塔吊监控', + circleItems: [ + { + id: 'zaixianChartBox', + name: '总在线', + value: 22, + percentage: 81.5, + options: { + tooltip: { + trigger: 'item', + }, + legend: { + itemWidth: 8, + itemHeight: 8, + top: '5%', + left: 'center', + show: false, + }, + series: [ + { + type: 'pie', + radius: ['70%', '80%'], + center: ['50%', '50%'], + avoidLabelOverlap: false, + hoverAnimation: false, + startAngle: 90, + itemStyle: { + normal: { + label: { + show: false, + }, + labelLine: { + show: false, + }, + shadowBlur: 40, + borderWidth: 5, + shadowColor: 'rgba(0, 0, 0, 0)', // 边框阴影 + }, + }, + data: [ + { value: 100, name: '', itemStyle: { color: '#234E84' } }, + ], + }, + { + type: 'pie', + radius: ['70%', '100%'], + center: ['50%', '50%'], + avoidLabelOverlap: false, + hoverAnimation: false, + startAngle: 90, + itemStyle: { + normal: { + label: { + show: false, + }, + labelLine: { + show: false, + }, + shadowBlur: 40, + borderWidth: 10, + shadowColor: 'rgba(0, 0, 0, 0)', // 边框阴影 + }, + }, + data: [ + { value: 20, name: '主隧洞掘进', itemStyle: { color: '#00FFFF' } }, + { value: 80, name: '', itemStyle: { color: 'transparent' } }, + ], + }, + + ], + } + }, + { + id: 'lixianChartBox', + name: '总离线', + value: 5, + percentage: 81.5, + options: { + tooltip: { + trigger: 'item', + }, + legend: { + itemWidth: 8, + itemHeight: 8, + top: '5%', + left: 'center', + show: false, + }, + series: [ + { + type: 'pie', + radius: ['70%', '80%'], + center: ['50%', '50%'], + avoidLabelOverlap: false, + hoverAnimation: false, + startAngle: 90, + itemStyle: { + normal: { + label: { + show: false, + }, + labelLine: { + show: false, + }, + shadowBlur: 40, + borderWidth: 5, + shadowColor: 'rgba(0, 0, 0, 0)', // 边框阴影 + }, + }, + data: [ + { value: 100, name: '', itemStyle: { color: '#234E84' } }, + ], + }, + { + type: 'pie', + radius: ['70%', '100%'], + center: ['50%', '50%'], + avoidLabelOverlap: false, + hoverAnimation: false, + startAngle: 90, + itemStyle: { + normal: { + label: { + show: false, + }, + labelLine: { + show: false, + }, + shadowBlur: 40, + borderWidth: 10, + shadowColor: 'rgba(0, 0, 0, 0)', // 边框阴影 + }, + }, + data: [ + { value: 20, name: '主隧洞掘进', itemStyle: { color: '#00FFFF' } }, + { value: 80, name: '', itemStyle: { color: 'transparent' } }, + ], + }, + + ], + } + }, + { + id: 'baojingChartBox', + name: '总报警', + value: 0, + percentage: 81.5, + options: { + tooltip: { + trigger: 'item', + }, + legend: { + itemWidth: 8, + itemHeight: 8, + top: '5%', + left: 'center', + show: false, + }, + series: [ + { + type: 'pie', + radius: ['70%', '80%'], + center: ['50%', '50%'], + avoidLabelOverlap: false, + hoverAnimation: false, + startAngle: 90, + itemStyle: { + normal: { + label: { + show: false, + }, + labelLine: { + show: false, + }, + shadowBlur: 40, + borderWidth: 5, + shadowColor: 'rgba(0, 0, 0, 0)', // 边框阴影 + }, + }, + data: [ + { value: 100, name: '', itemStyle: { color: '#234E84' } }, + ], + }, + { + type: 'pie', + radius: ['70%', '100%'], + center: ['50%', '50%'], + avoidLabelOverlap: false, + hoverAnimation: false, + startAngle: 90, + itemStyle: { + normal: { + label: { + show: false, + }, + labelLine: { + show: false, + }, + shadowBlur: 40, + borderWidth: 10, + shadowColor: 'rgba(0, 0, 0, 0)', // 边框阴影 + }, + }, + data: [ + { value: 20, name: '主隧洞掘进', itemStyle: { color: '#00FFFF' } }, + { value: 80, name: '', itemStyle: { color: 'transparent' } }, + ], + }, + ], + } + } + ] + } + }, + computed: { + sectionStyle() { + return { + backgroundImage: `url(${this.backgroundImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + } + }, + enviorStyle() { + return { + backgroundImage: `url(${this.enviorImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + } + } + }, + methods: { + handleControlBtnClick(tab) { + this.currentTab = tab; + }, + handleResize() { + if (this.myChart) { + this.myChart.resize() + } + }, + } +} +</script> + +<style scoped> +.equipment-container { + width: 100%; + height: calc(100vh - 100px); + color: white; +} + +.section-title { + font-size: 18px; + margin-bottom: 20px; + color: #fff; +} + +.top-section { + width: 100%; +} + +.middle-section { + width: 100%; +} + +.bottom-section { + width: 100%; +} + +.stats-grid { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 20px 10px; +} + +.stat-item{ + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + padding: 20px 14px; + height: 52px; + background: linear-gradient( 270deg, rgba(48,104,165,0.1) 2%, #3068A5 100%); + border-radius: 2px; +} +.env-item { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + padding: 10px 14px; +} + +.stat-info { + display: flex; + flex-direction: row; + align-items: left; +} +.env-info { + display: flex; + flex-direction: column; + width: 70%; + height: 100%; +} +.satalabel{ + font-size: 16px; + color: #fff; +} +.label { + font-size: 12px; + color: #fff; +} +.envlabel { + font-size: 14px; + color: #C8C8C8; + margin-left: 20px; +} + +.envvalue { + font-size: 16px; + color: #fff; + margin-top: 4px; + width: 100%; + height: 100%; + padding-left: 20px; +} + +.equipment-status { + padding: 20px 10px; +} + +.status-title { + font-size: 16px; + margin-bottom: 20px; +} + +.status-circles { + display: flex; + justify-content: space-around; + margin: 20px 0; +} + +.progress-circle { + width: 80px; + height: 80px; + border-radius: 50%; + border: 4px solid #3068A5; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; +} + +.percentage { + font-size: 12px; + color: #00ffff; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.environment-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); +} + +.control-buttons { + display: flex; + gap: 10px; + justify-content: center; +} + +.control-btn { + padding: 8px 16px; + background: rgba(112,119,140,0.3); + border-radius: 2px; + border: 1px solid rgba(112,124,140,0.6); + color: #C8C8C8; + cursor: pointer; +} + +.control-btn.active { + background: rgba(255,191,0,0.2); + border-radius: 2px; + border: 1px solid #FFBF00; + color: #fff; +} + +.divider { + width: 100%; + height: 1px; + background: linear-gradient( 270deg, rgba(94,161,209,0.1) 0%, #4886BC 49%, rgba(48,104,165,0.1) 100%); + margin: 20px 0; +} + +.progress-bar { + margin-top: 20px; +} + +.bar { + width: 100%; +} + +.progress { + background: rgba(216,216,216,0.1); + border: 1px solid rgba(255,255,255,0.2); + overflow: hidden; +} + +.progress-blocks { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + gap: 4px; + padding: 2px 4px; +} + +.block { + flex: 1; + height: 100%; + background: rgba(216,216,216,0.1); +} + +.block.active { + background: linear-gradient(180deg, #FFD500 0%, #FF9B00 100%); +} + +.progress-inner { + display: none; +} +</style> diff --git a/src/views/Home.vue b/src/views/Home.vue new file mode 100644 index 0000000..9e8fbf5 --- /dev/null +++ b/src/views/Home.vue @@ -0,0 +1,314 @@ +<template> + <div class="home-container"> + <!-- 顶部导航 --> + <div class="top-nav"> + <div class="nav-items"> + <div class="nav-item mr-[8px]" :class="{ active: currentView === 'model' }" @click="handleChange('model')">模型</div> + <div class="nav-item mr-[8px]" :class="{ active: currentView === '720' }" @click="handleChange('720')">720全景</div> + <div class="nav-item" :class="{ active: currentView === 'project' }" @click="handleChange('project')">项目实况</div> + </div> + <div class="time-info"> + <div class="time-info-item"> + <i class="el-icon-date" style="color: #FFBF00;font-size: 20px;"></i> + <div class="text-white text-[16px] ml-[4px]">工程倒计时/天</div> + <div class="text-[#FFBF00] text-[24px] font-bold ml-[28px]">175</div> + </div> + <div class="time-line"> + </div> + </div> + </div> + + <div class="content-wrapper mb-[20px]"> + <!-- 720菜单 --> + <div class="side-menu" v-if="currentView === '720'"> + <div class="menu-dropdown"> + <select class="menu-select"> + <option>请选择</option> + </select> + </div> + <div class="menu-list"> + <div class="menu-item"> + <span>一期</span> + <i class="arrow-icon"></i> + </div> + <div class="menu-item"> + <span>二期</span> + <i class="arrow-icon"></i> + </div> + <div class="menu-item"> + <span>三期</span> + <i class="arrow-icon"></i> + </div> + <div class="menu-item"> + <span>四期</span> + <i class="arrow-icon"></i> + </div> + </div> + <div class="submenu"> + <div class="submenu-item">1#楼东立面图</div> + <div class="submenu-item">1#出入口层立-1</div> + <div class="submenu-item">2#出入口层立-2</div> + <div class="submenu-item">2#楼东立面图</div> + <div class="submenu-item">3#楼东立面图</div> + <div class="submenu-item">停车场入口区控制面</div> + </div> + </div> + + <!-- 主要内容区域 --> + <div class="main-content"> + <!-- 模型 --> + <div class="content" v-if="currentView === 'model'"> + <iframe id="model-iframe" class="content-frame" src="" frameborder="0"></iframe> + </div> + <!-- 720 --> + <div class="pano-content" v-if="currentView === '720'"> + <div id="panoviewpreview" class="pano-frame"> + </div> + </div> + </div> + </div> + <div class="chart-content"> + <div + class="w-full h-[4vh] mb-[1vh]" + :style="{ + backgroundImage: `url(${bottomImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + </div> + <div class="chart-container"> + <img src="../assets/images/backgrounds/shigongjinduchart.png" alt="施工进度" class="w-full h-[280px]"/> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'Home', + components: { + }, + data() { + return { + currentView: 'model', + chartOptions: { + id: 'shigongjinduChart', + options: { + title: { + text: '施工进度' + } + } + }, + bottomImage: new URL('@/assets/images/titles/shigong.png', import.meta.url).href, + } + }, + methods: { + handleChange(view) { + this.currentView = view + + }, + modelShow() { + const iframe = document.getElementById('model-iframe') + let token = '' + let ifrSrc = '' + console.log('模型中查看') + ifrSrc = `${window.IP_CONFIG.SCENE_URL}?token=${token}&projectId=${_this.projectID}&isPreview=1&edit=false` + iframe.src = ifrSrc + console.log('加载iframe地址', ifrSrc) + } + }, + mounted() { + this.modelShow() + }, +} +</script> + +<style scoped lang="scss"> +.home-container { + display: flex; + flex-direction: column; + height: 100vh; +} + +.top-nav { + height: 50px; + display: flex; + justify-content: space-between; + align-items: center; + color: white; +} + +.nav-items { + display: flex; + gap: 20px; +} + +.nav-item { + background: rgba(112,119,140,0.3); + border-radius: 2px; + border: 1px solid rgba(112,124,140,0.6); + padding: 5px 16px; + cursor: pointer; +} + +.nav-item.active { + background: rgba(255,191,0,0.2); + border-radius: 2px; + border: 1px solid #FFBF00; +} + +.time-info { + display: flex; + flex-direction: column; + align-items: center; + width: 200px; +} +.time-info-item { + display: flex; + align-items: center; + +} +.time-line { + width: 200px; + height: 1px; + background: linear-gradient( 270deg, rgba(255,191,0,0) 0%, #FFBF00 100%); +} + +.content-wrapper { + display: flex; + overflow: hidden; + position: relative; +} + +.side-menu { + width: 250px; + background-color: #1e3d6b; + color: white; + position: absolute; + top: 10px; + left: 10px; + right: auto; + bottom: auto; +} + +.menu-dropdown { + padding: 15px; +} + +.menu-select { + width: 100%; + padding: 8px; + background-color: #0a1931; + color: white; + border: 1px solid #2a4d7d; +} + +.menu-list { + border-top: 1px solid #2a4d7d; +} + +.menu-item { + padding: 12px 20px; + display: flex; + justify-content: space-between; + align-items: center; + cursor: pointer; +} + +.menu-item:hover { + background-color: rgba(255, 255, 255, 0.1); +} + +.arrow-icon { + border: solid white; + border-width: 0 2px 2px 0; + display: inline-block; + padding: 3px; + transform: rotate(-45deg); +} + +.submenu { + background-color: #152b4a; +} + +.submenu-item { + padding: 10px 30px; + font-size: 14px; + cursor: pointer; +} + +.submenu-item:hover { + background-color: rgba(255, 255, 255, 0.1); +} + +.main-content { + flex: 1; + padding: 20px; + background-color: #0a1931; + width: 100%; + height: 588px; +} + +.content-header { + color: white; + margin-bottom: 20px; +} + +.chart-container { + background-color: #1e3d6b; + border-radius: 8px; + padding: 20px; + width: 100%; + height: 100%; +} + +.chart-legend { + display: flex; + gap: 20px; + margin-bottom: 20px; + color: white; +} + +.legend-item { + display: flex; + align-items: center; + gap: 8px; +} + +.dot { + width: 10px; + height: 10px; + border-radius: 50%; +} + +.dot.blue { + background-color: #00ffff; +} + +.dot.yellow { + background-color: #ffd700; +} + +.chart-area { + height: 400px; + margin-bottom: 20px; +} + +.chart-tabs { + display: flex; + gap: 10px; +} + +.tab { + padding: 8px 16px; + color: white; + cursor: pointer; + border-radius: 4px; +} + +.tab.active { + background-color: #2a4d7d; +} +</style> diff --git a/src/views/ProjectView.vue b/src/views/ProjectView.vue new file mode 100644 index 0000000..f0d31c4 --- /dev/null +++ b/src/views/ProjectView.vue @@ -0,0 +1,305 @@ +<template> + <div class="project-info"> + <!-- 上部分 - 图片 --> + <div + class="w-full h-[4vh] mb-[1vh]" + :style="{ + backgroundImage: `url(${titleImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + </div> + + <!-- 下部分 - 内容区域 --> + <div + class="content flex-1 px-[16px] py-[14px] overflow-y-auto" + :style="{ + backgroundImage: `url(${backgroundImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: 'cover' + }" + > + <!-- 建筑面积 --> + <div + class="w-full h-[50px] mb-[10px] flex items-center justify-evenly" + :style="{ + backgroundImage: `url(${contentImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + <img + src="../assets/images/backgrounds/jianzhumianji.png" + alt="" + class="h-[30px] w-[40px]" + > + <div class="text-white text-[14px]">一期总建筑面积</div> + <div class="flex items-center justify-center"> + <div class="text-[24px] text-[#FFD500] font-bold mr-[8px]">103.18</div> + <div class="text-[14px] text-white">万㎡</div> + </div> + </div> + + <!-- 目标日期 --> + <div + class="w-full h-[50px] flex items-center justify-evenly" + :style="{ + backgroundImage: `url(${contentImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + <img + src="../assets/images/backgrounds/mubiaowancheng.png" + alt="" + class="h-[30px] w-[40px]" + > + <div class="text-white text-[14px]">目标完成日期</div> + <div class="flex items-center justify-center"> + <div class="text-[24px] text-[#00FFFF] font-bold">2028-12-01</div> + </div> + </div> + + <!-- 项目名称 --> + <div + class="w-full h-[30px] mt-[20px] mb-[10px]" + :style="{ + backgroundImage: `url(${bgImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + <div class="text-white text-[14px] ml-[40px] leading-[35px]">项目名称:北京交通大学雄安校区</div> + </div> + + <div class="text-white text-[14px] tracking-[1px] leading-[24px]"> + 北京交通大学雄安校区选址位于河北雄安新区第五组团及启动区。东至规划绿地、城市道路NB6,南至城市道路ED34、城市道路EA2,西至城市道路ND32、城市道路NA11,北至城市道路EA1。 + </div> + + <img + src="../assets/images/backgrounds/map.png" + alt="" + class="w-full h-[196px] mt-[20px]" + > + + <!-- 参建单位 --> + <div + class="w-full h-[30px] mt-[20px] mb-[10px]" + :style="{ + backgroundImage: `url(${bgImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + <div class="text-white text-[14px] ml-[40px] leading-[35px]">参建单位</div> + </div> + + <!-- 参建单位统计 --> + <div class="flex justify-between mb-[10px]"> + <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mr-[8px] mb-[10px] lineB"> + <div class="text-white text-[14px] flex flex-col items-center justify-center"> + <div class="text-[16px] text-[#00FFFF]">3</div> + <div class="text-[12px] text-[#ddd]">建设单位</div> + </div> + <img + src="../assets/images/backgrounds/jianshedanwei.png" + alt="" + class="h-[40px] w-[60px]" + > + </div> + <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mb-[10px] lineB"> + <div class="text-white text-[14px] flex flex-col items-center justify-center"> + <div class="text-[16px] text-[#00FFFF]">5</div> + <div class="text-[12px] text-[#ddd]">施工单位</div> + </div> + <img + src="../assets/images/backgrounds/shigongdanwei.png" + alt="" + class="h-[40px] w-[60px]" + > + </div> + </div> + + <div class="flex justify-between"> + <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mr-[8px] mb-[10px] lineB"> + <div class="text-white text-[14px] flex flex-col items-center justify-center"> + <div class="text-[16px] text-[#00FFFF]">1</div> + <div class="text-[12px] text-[#ddd]">监理单位</div> + </div> + <img + src="../assets/images/backgrounds/jianlidanwei.png" + alt="" + class="h-[40px] w-[60px]" + > + </div> + <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mb-[10px] lineB"> + <div class="text-white text-[14px] flex flex-col items-center justify-center"> + <div class="text-[16px] text-[#00FFFF]">1</div> + <div class="text-[12px] text-[#ddd]">设计单位</div> + </div> + <img + src="../assets/images/backgrounds/shejidanwei.png" + alt="" + class="h-[40px] w-[60px]" + > + </div> + </div> + + <!-- 表格搜索 --> + <div class="w-full flex items-center justify-between mb-[10px] mt-[20px]"> + <el-input + v-model="searchText" + placeholder="搜索" + class="search-item w-full rounded-[2px]" + prefix-icon="el-icon-search" + > + </el-input> + </div> + + <!-- 表格 --> + <div + class="w-full min-h-[20vh] px-[8px] py-[10px]" + :style="{ + backgroundImage: `url(${tableImage})`, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center center', + backgroundSize: '100% 100%' + }" + > + <table class="w-full text-white text-[14px] overflow-y-auto"> + <thead> + <tr class="table-header"> + <th class="py-[8px] text-left pl-[12px]">类型</th> + <th class="py-[8px] text-left">阶段</th> + <th class="py-[8px] text-left">名称</th> + </tr> + </thead> + <tbody> + <tr + v-for="item in tableData" + :key="item.id" + class="border-b border-[rgba(255,255,255,0.1)]" + > + <td class="py-[8px] pl-[12px]">{{ item.type }}</td> + <td class="py-[8px]">{{ item.stage }}</td> + <td class="py-[8px]">{{ item.name }}</td> + </tr> + </tbody> + </table> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'ProjectView', + data() { + return { + searchText: '', + backgroundImage: new URL('@/assets/images/backgrounds/cover_bg.png', import.meta.url).href, + titleImage: new URL('@/assets/images/titles/xiangmu.png', import.meta.url).href, + contentImage: new URL('@/assets/images/titles/xiangmu_bg.png', import.meta.url).href, + bgImage: new URL('@/assets/images/titles/title_second.png', import.meta.url).href, + tableImage: new URL('@/assets/images/backgrounds/table_bg.png', import.meta.url).href, + tableData: [ + { + name: '建设单位名称单位', + stage: '一标', + type: '建设单位' + }, + { + name: '建设单位名称单位', + stage: '一标', + type: '建设单位' + }, + { + name: '建设单位名称单位', + stage: '一标', + type: '建设单位' + }, + { + name: '建设单位名称单位', + stage: '一标', + type: '建设单位' + }, + ] + }; + }, +} +</script> + +<style scoped lang="scss"> +.project-info { + width: 100%; + height: calc(100vh - 100px); + display: flex; + flex-direction: column; + overflow: hidden; +} + +.header { + width: 100%; +} + +.content { + flex: 1; + width: 100%; + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background-color: rgba(255, 255, 255, 0.2); + border-radius: 3px; + } + + &::-webkit-scrollbar-track { + background-color: rgba(0, 0, 0, 0.1); + } +} + +.lineB { + background: radial-gradient(25% 60% at 50% 50%, rgb(26 56 89 / 50%) 0%, rgb(93 174 255 / 15%) 100%); + border-radius: 2px; + border: 1px solid; + border-image: linear-gradient(90deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.5)) 1 1; +} + +.search-item { + ::v-deep .el-input__wrapper { + background-color: rgba(26, 56, 89, 0.5); + box-shadow: none; + } + + ::v-deep .el-input__icon { + line-height: 35px; + } + + ::v-deep .el-input__inner { + color: white; + } + + ::v-deep .el-input__inner::placeholder { + color: rgba(255, 255, 255, 0.5); + } + + ::v-deep .el-input__prefix-icon { + color: rgba(255, 255, 255, 0.5); + } +} + +.table-header { + height: 32px; + background: linear-gradient(180deg, #3068A5 0%, #1E4066 100%); + box-shadow: inset 0px 1px 0px 0px rgba(255,255,255,0.2); +} +</style> diff --git a/startscg.bat b/startscg.bat new file mode 100644 index 0000000..6139c5b --- /dev/null +++ b/startscg.bat @@ -0,0 +1,3 @@ +cd /d C:\Program Files (x86)\SCG-HAWE\Setup-SCG\ +start "SCG" "SCG.exe" +exit \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..7944e5d --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,23 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], + theme: { + extend: { + fontFamily: { + pingfang: ["PingFang SC Semibold", "PingFang SC Regular", "PingFang SC Medium", "Microsoft YaHei"], + "pingfang-medium": ["PingFang SC Medium", "Microsoft YaHei"], + "pingfang-regular": ["PingFang SC Regular", "Microsoft YaHei"], + "pingfang-light": ["PingFang SC Light", "平方 细体", "Microsoft YaHei"], + ding: ["DINEngschrift-Alternate"], + }, + spacing: { + 4.5: "1.125rem", + 18: "4.5rem", + }, + borderRadius: { + half: "50%", + }, + }, + }, + plugins: [], +}; diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..037f13a --- /dev/null +++ b/vite.config.js @@ -0,0 +1,98 @@ +/* eslint-disable no-unused-vars */ +import path from "path"; +import { defineConfig, splitVendorChunkPlugin } from "vite"; +// splitVendorChunk, isCSSRequest + +import PluginForViteVue2 from "@vitejs/plugin-vue2"; + +export default defineConfig(({ mode }) => { + return { + resolve: { + alias: { + "@": path.resolve(__dirname, './src'), + "@css": path.resolve("./src/assets/css"), + 'worker-loader': require.resolve('worker-loader'), + }, + }, + worker: { + // 例如,设置一个worker的入口文件 + // 注意:这是一个假设的配置,具体取决于worker-loader是否支持这样的配置 + // entry: '/path/to/worker/entry.js', + options: { inline: true, name: 'workerName.[hash].js' } + }, + plugins: [PluginForViteVue2(), splitVendorChunkPlugin()], + css: { + preprocessorOptions: { + scss: { + additionalData: "@import '@css/sass.scss';", + }, + }, + }, + server: { + proxy: { + "^/api/": { + // target: "http://47.117.124.20:2002/", + target: "https://www.probim.cn:7707", + rewrite: (path) => path.replace(/^\/api\//, ""), + changeOrigin: true, //通过浏览器查看像是"未生效",实际发送给后端的是更改过的Host(与target的host相同) + }, + }, + port: 3000, + host: "0.0.0.0", + cors: true, + open: true, + }, + esbuild: { + treeShaking: true, + drop: mode === "production" ? ["console", "debugger"] : [], + }, + build: { + minify: "esbuild", + chunkSizeWarningLimit: 500, //kbs + rollupOptions: { + output: { + chunkFileNames: "assets/js/[name]-[hash].js", + entryFileNames: "assets/js/[name]-[hash].js", + assetFileNames: "assets/[ext]/[name]-[hash].[ext]", + // manualChunks(id) { + // if (id.includes("/node_modules/")) { + // const name = id.split("/node_modules/")[1].split("/")[0]; + // for (const key of Object.keys(ChunksMap)) { + // if (ChunksMap[key].includes(name)) { + // return key; + // } + // } + // return "vendor"; + // } + // }, + + // eslint-disable-next-line no-unused-vars + // manualChunks(id, { getModuleInfo, getModuleIds }) { + // const getShouldBeVendor = splitVendorChunk(); + // const chunkName = getShouldBeVendor(id, { getModuleInfo }); + // if (chunkName === "vendor") { + // //1 在node_modules文件夹下 + // //2 不是css类请求 + // //3 是被静态引入的 + // return chunkName; + // } else if (id.includes("src")) { + // const moduleInfo = getModuleInfo(id); + // // console.log(id, "importers", moduleInfo.importers); + // // console.log(id, "dynamicImporters", moduleInfo.dynamicImporters); + // if (moduleInfo.importers.length + moduleInfo.dynamicImporters.length > 1) { + // return "manifest"; + // } + // } + // }, + + // eslint-disable-next-line no-unused-vars + manualChunks(id) { + if (id.includes("/node_modules/")) { + return id.split("/node_modules/")[1].split("/")[0]; + } + }, + }, + }, + }, + }; +}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..ecec6fb --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1845 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/parser@^7.18.4": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== + +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" + integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== + dependencies: + regenerator-runtime "^0.13.11" + +"@esbuild/android-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" + integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== + +"@esbuild/android-arm@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" + integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== + +"@esbuild/android-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" + integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== + +"@esbuild/darwin-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" + integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== + +"@esbuild/darwin-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" + integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== + +"@esbuild/freebsd-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" + integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== + +"@esbuild/freebsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" + integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== + +"@esbuild/linux-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" + integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== + +"@esbuild/linux-arm@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" + integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== + +"@esbuild/linux-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" + integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== + +"@esbuild/linux-loong64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" + integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== + +"@esbuild/linux-mips64el@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" + integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== + +"@esbuild/linux-ppc64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" + integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== + +"@esbuild/linux-riscv64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" + integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== + +"@esbuild/linux-s390x@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" + integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== + +"@esbuild/linux-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" + integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== + +"@esbuild/netbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" + integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== + +"@esbuild/openbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" + integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== + +"@esbuild/sunos-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" + integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== + +"@esbuild/win32-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" + integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== + +"@esbuild/win32-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" + integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== + +"@esbuild/win32-x64@0.16.17": + version "0.16.17" + resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" + integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== + +"@eslint/eslintrc@^1.4.1": + version "1.4.1" + resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@videojs/http-streaming@2.14.3": + version "2.14.3" + resolved "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-2.14.3.tgz#3277e03b576766decb4fc663e954e18bfa10d2a1" + integrity sha512-2tFwxCaNbcEZzQugWf8EERwNMyNtspfHnvxRGRABQs09W/5SqmkWFuGWfUAm4wQKlXGfdPyAJ1338ASl459xAA== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "3.0.5" + aes-decrypter "3.1.3" + global "^4.4.0" + m3u8-parser "4.7.1" + mpd-parser "0.21.1" + mux.js "6.0.1" + video.js "^6 || ^7" + +"@videojs/vhs-utils@3.0.5", "@videojs/vhs-utils@^3.0.4", "@videojs/vhs-utils@^3.0.5": + version "3.0.5" + resolved "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz#665ba70d78258ba1ab977364e2fe9f4d4799c46c" + integrity sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw== + dependencies: + "@babel/runtime" "^7.12.5" + global "^4.4.0" + url-toolkit "^2.2.1" + +"@videojs/xhr@2.6.0": + version "2.6.0" + resolved "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.6.0.tgz#cd897e0ad54faf497961bcce3fa16dc15a26bb80" + integrity sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q== + dependencies: + "@babel/runtime" "^7.5.5" + global "~4.4.0" + is-function "^1.0.1" + +"@vitejs/plugin-vue2@^2.2.0": + version "2.2.0" + resolved "https://registry.npmmirror.com/@vitejs/plugin-vue2/-/plugin-vue2-2.2.0.tgz#7453207197d6ac2b7023cedc7133b142c604c356" + integrity sha512-1km7zEuZ/9QRPvzXSjikbTYGQPG86Mq1baktpC4sXqsXlb02HQKfi+fl8qVS703JM7cgm24Ga9j+RwKmvFn90A== + +"@vue/compiler-sfc@2.7.14": + version "2.7.14" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz#3446fd2fbb670d709277fc3ffa88efc5e10284fd" + integrity sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA== + dependencies: + "@babel/parser" "^7.18.4" + postcss "^8.4.14" + source-map "^0.6.1" + +"@xmldom/xmldom@^0.7.2": + version "0.7.9" + resolved "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.7.9.tgz#7f9278a50e737920e21b297b8a35286e9942c056" + integrity sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-node@^1.8.2: + version "1.8.2" + resolved "https://registry.npmmirror.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.0.0: + version "7.4.1" + resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + +aes-decrypter@3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz#65ff5f2175324d80c41083b0e135d1464b12ac35" + integrity sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + global "^4.4.0" + pkcs7 "^1.0.4" + +ajv-keywords@^3.1.0: + version "3.5.2" + resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +async-validator@~1.8.1: + version "1.8.5" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0" + integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA== + dependencies: + babel-runtime "6.x" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +autoprefixer@^10.4.13: + version "10.4.13" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" + integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== + dependencies: + browserslist "^4.21.4" + caniuse-lite "^1.0.30001426" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +axios@^1.2.1: + version "1.2.2" + resolved "https://registry.npmmirror.com/axios/-/axios-1.2.2.tgz#72681724c6e6a43a9fea860fc558127dbe32f9f1" + integrity sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +babel-helper-vue-jsx-merge-props@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" + integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== + +babel-runtime@6.x: + version "6.26.0" + resolved "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.4: + version "4.21.4" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426: + version "1.0.30001442" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz#40337f1cf3be7c637b061e2f78582dc1daec0614" + integrity sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow== + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +claygl@^1.2.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/claygl/-/claygl-1.3.0.tgz#7a6e2903210519ac358848f5d78070ed211685f3" + integrity sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comutils@^1.1.9: + version "1.1.19" + resolved "https://registry.npmmirror.com/comutils/-/comutils-1.1.19.tgz#3e07f306abf48e83726511713a72b20565034443" + integrity sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-js@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + +dayjs@^1.11.7: + version "1.11.7" + resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + +debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^1.2.0: + version "1.5.2" + resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + +defined@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.npmmirror.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== + dependencies: + acorn-node "^1.8.2" + defined "^1.0.0" + minimist "^1.2.6" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +echarts-gl@2.0.9: + version "2.0.9" + resolved "https://registry.npmmirror.com/echarts-gl/-/echarts-gl-2.0.9.tgz#ee228a6c7520a6fb7bbb71ea94394f3637ade033" + integrity sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA== + dependencies: + claygl "^1.2.1" + zrender "^5.1.1" + +echarts@^5.4.1: + version "5.4.1" + resolved "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz#d7f65a584d78beff62568d878b16151b3381811c" + integrity sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ== + dependencies: + tslib "2.3.0" + zrender "5.4.1" + +electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== + +element-ui@^2.15.12: + version "2.15.12" + resolved "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.12.tgz#fdde927a54078b17a85541ff7c0f0dad32488b8e" + integrity sha512-Y5FMT2BPOindU2GkDEQ5ZKUVxDawKONRNMh2eL3uBx1FOtvUJ+L6IxXLVsNxq4WnaX/UnVNgWXebl7DobygZMg== + dependencies: + async-validator "~1.8.1" + babel-helper-vue-jsx-merge-props "^2.0.0" + deepmerge "^1.2.0" + normalize-wheel "^1.0.1" + resize-observer-polyfill "^1.5.0" + throttle-debounce "^1.0.1" + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +esbuild@^0.16.3: + version "0.16.17" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" + integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== + optionalDependencies: + "@esbuild/android-arm" "0.16.17" + "@esbuild/android-arm64" "0.16.17" + "@esbuild/android-x64" "0.16.17" + "@esbuild/darwin-arm64" "0.16.17" + "@esbuild/darwin-x64" "0.16.17" + "@esbuild/freebsd-arm64" "0.16.17" + "@esbuild/freebsd-x64" "0.16.17" + "@esbuild/linux-arm" "0.16.17" + "@esbuild/linux-arm64" "0.16.17" + "@esbuild/linux-ia32" "0.16.17" + "@esbuild/linux-loong64" "0.16.17" + "@esbuild/linux-mips64el" "0.16.17" + "@esbuild/linux-ppc64" "0.16.17" + "@esbuild/linux-riscv64" "0.16.17" + "@esbuild/linux-s390x" "0.16.17" + "@esbuild/linux-x64" "0.16.17" + "@esbuild/netbsd-x64" "0.16.17" + "@esbuild/openbsd-x64" "0.16.17" + "@esbuild/sunos-x64" "0.16.17" + "@esbuild/win32-arm64" "0.16.17" + "@esbuild/win32-ia32" "0.16.17" + "@esbuild/win32-x64" "0.16.17" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^8.5.0: + version "8.6.0" + resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207" + integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== + +eslint-define-config@^1.12.0: + version "1.14.0" + resolved "https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-1.14.0.tgz#a9ce2861e88c7f1b6bc73a8f38ed8225ab296d13" + integrity sha512-NREt5SzMwKmLAY28YdaqIiTSJxfPpuZ+1ZLJxY2Wbj02dYF4QX81z0q9MPMjZB8C+SlCu66qAhcPpFJyhXOiuA== + +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-vue@^9.8.0: + version "9.8.0" + resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.8.0.tgz#91de2aabbee8cdbef078ccd4f650a9ecfa445f4f" + integrity sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA== + dependencies: + eslint-utils "^3.0.0" + natural-compare "^1.4.0" + nth-check "^2.0.1" + postcss-selector-parser "^6.0.9" + semver "^7.3.5" + vue-eslint-parser "^9.0.1" + xml-name-validator "^4.0.0" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.30.0: + version "8.31.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524" + integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== + dependencies: + "@eslint/eslintrc" "^1.4.1" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.3.1, espree@^9.4.0: + version "9.4.1" + resolved "https://registry.npmmirror.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.2.12: + version "3.2.12" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@^4.3.1, global@^4.4.0, global@~4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^13.19.0: + version "13.19.0" + resolved "https://registry.npmmirror.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" + integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== + dependencies: + type-fest "^0.20.2" + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immutable@^4.0.0: + version "4.2.2" + resolved "https://registry.npmmirror.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16" + integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +individual@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" + integrity sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jquery@^3.7.1: + version "3.7.1" + resolved "https://registry.npmmirror.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +keycode@^2.2.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/keycode/-/keycode-2.2.1.tgz#09c23b2be0611d26117ea2501c2c391a01f39eff" + integrity sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.5, lilconfig@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" + integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== + +loader-utils@^1.0.0: + version "1.4.2" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +m3u8-parser@4.7.1: + version "4.7.1" + resolved "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-4.7.1.tgz#d6df2c940bb19a01112a04ccc4ff44886a945305" + integrity sha512-pbrQwiMiq+MmI9bl7UjtPT3AK603PV9bogNlr83uC+X9IoxqL5E4k7kU7fMQ0dpRgxgeSMygqUa0IMLQNXLBNA== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + global "^4.4.0" + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +mpd-parser@0.21.1: + version "0.21.1" + resolved "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-0.21.1.tgz#4f4834074ed0a8e265d8b04a5d2d7b5045a4fa55" + integrity sha512-BxlSXWbKE1n7eyEPBnTEkrzhS3PdmkkKdM1pgKbPnPOH0WFZIc0sPOWi7m0Uo3Wd2a4Or8Qf4ZbS7+ASqQ49fw== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + "@xmldom/xmldom" "^0.7.2" + global "^4.4.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mux.js@6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/mux.js/-/mux.js-6.0.1.tgz#65ce0f7a961d56c006829d024d772902d28c7755" + integrity sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w== + dependencies: + "@babel/runtime" "^7.11.2" + global "^4.4.0" + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanoid@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-4.0.0.tgz#6e144dee117609232c3f415c34b0e550e64999a5" + integrity sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-releases@^2.0.6: + version "2.0.8" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" + integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-wheel@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz#aec886affdb045070d856447df62ecf86146ec45" + integrity sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA== + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pkcs7@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz#6090b9e71160dabf69209d719cbafa538b00a1cb" + integrity sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ== + dependencies: + "@babel/runtime" "^7.5.5" + +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.npmmirror.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-nested@6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" + integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-pxtorem@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/postcss-pxtorem/-/postcss-pxtorem-6.0.0.tgz#f228a4d05d8a73f0642eabae950e2b19836366d7" + integrity sha512-ZRXrD7MLLjLk2RNGV6UA4f5Y7gy+a/j1EqjAfp9NdcNYVjUMvg5HTYduTjSkKBkRkfqbg/iKrjMO70V4g1LZeg== + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.9: + version "6.0.11" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.0.9, postcss@^8.4.14, postcss@^8.4.20: + version "8.4.21" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.8.1: + version "2.8.2" + resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.2.tgz#c4ea1b5b454d7c4b59966db2e06ed7eec5dfd160" + integrity sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmmirror.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.2.0.tgz#2092cc57cd2582c38e4e7e8bb869dc8d3148bc74" + integrity sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +resize-observer-polyfill@^1.5.0: + version "1.5.1" + resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.1.7, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup@^3.7.0: + version "3.9.1" + resolved "https://registry.npmmirror.com/rollup/-/rollup-3.9.1.tgz#27501d3d026418765fe379d5620d25954ff2a011" + integrity sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rust-result@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72" + integrity sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA== + dependencies: + individual "^2.0.0" + +safe-json-parse@4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac" + integrity sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ== + dependencies: + rust-result "^1.0.0" + +sass@^1.57.1: + version "1.57.1" + resolved "https://registry.npmmirror.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5" + integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +schema-utils@^0.4.0: + version "0.4.7" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +semver@^7.3.5, semver@^7.3.6: + version "7.3.8" + resolved "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tailwindcss@^3.2.7: + version "3.2.7" + resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.2.7.tgz#5936dd08c250b05180f0944500c01dce19188c07" + integrity sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ== + dependencies: + arg "^5.0.2" + chokidar "^3.5.3" + color-name "^1.1.4" + detective "^5.2.1" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + lilconfig "^2.0.6" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.0.9" + postcss-import "^14.1.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.4" + postcss-nested "6.0.0" + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.1" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +throttle-debounce@^1.0.1: + version "1.1.0" + resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz#51853da37be68a155cb6e827b3514a3c422e89cd" + integrity sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-toolkit@^2.2.1: + version "2.2.5" + resolved "https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz#58406b18e12c58803e14624df5e374f638b0f607" + integrity sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg== + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +"video.js@^6 || ^7", video.js@^7.20.3: + version "7.20.3" + resolved "https://registry.npmmirror.com/video.js/-/video.js-7.20.3.tgz#5694741346dc683255993e5069daa15d4bacb646" + integrity sha512-JMspxaK74LdfWcv69XWhX4rILywz/eInOVPdKefpQiZJSMD5O8xXYueqACP2Q5yqKstycgmmEKlJzZ+kVmDciw== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/http-streaming" "2.14.3" + "@videojs/vhs-utils" "^3.0.4" + "@videojs/xhr" "2.6.0" + aes-decrypter "3.1.3" + global "^4.4.0" + keycode "^2.2.0" + m3u8-parser "4.7.1" + mpd-parser "0.21.1" + mux.js "6.0.1" + safe-json-parse "4.0.0" + videojs-font "3.2.0" + videojs-vtt.js "^0.15.4" + +videojs-font@3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/videojs-font/-/videojs-font-3.2.0.tgz#212c9d3f4e4ec3fa7345167d64316add35e92232" + integrity sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA== + +videojs-vtt.js@^0.15.4: + version "0.15.4" + resolved "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.4.tgz#5dc5aabcd82ba40c5595469bd855ea8230ca152c" + integrity sha512-r6IhM325fcLb1D6pgsMkTQT1PpFdUdYZa1iqk7wJEu+QlibBwATPfPc9Bg8Jiym0GE5yP1AG2rMLu+QMVWkYtA== + dependencies: + global "^4.3.1" + +vite@^4.0.3: + version "4.0.4" + resolved "https://registry.npmmirror.com/vite/-/vite-4.0.4.tgz#4612ce0b47bbb233a887a54a4ae0c6e240a0da31" + integrity sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw== + dependencies: + esbuild "^0.16.3" + postcss "^8.4.20" + resolve "^1.22.1" + rollup "^3.7.0" + optionalDependencies: + fsevents "~2.3.2" + +vue-eslint-parser@^9.0.1: + version "9.1.0" + resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz#0e121d1bb29bd10763c83e3cc583ee03434a9dd5" + integrity sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ== + dependencies: + debug "^4.3.4" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.6" + +vue-router@^3.6.5: + version "3.6.5" + resolved "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz#95847d52b9a7e3f1361cb605c8e6441f202afad8" + integrity sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ== + +vue-seamless-scroll@^1.1.23: + version "1.1.23" + resolved "https://registry.npmmirror.com/vue-seamless-scroll/-/vue-seamless-scroll-1.1.23.tgz#dde81b3c79aa499791b3c3bffd0fdb22ff3e59a7" + integrity sha512-HBjUub8WwsKJzbFCrwKPDrZn4e+SSbkKgwWtjKtfLwesiFGwSsVxP44/Z6d3kpXy94qIFOiflJH6l0/9pj7SGA== + dependencies: + comutils "^1.1.9" + +vue-template-compiler@^2.7.14: + version "2.7.14" + resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1" + integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ== + dependencies: + de-indent "^1.0.2" + he "^1.2.0" + +vue@^2.7.14: + version "2.7.14" + resolved "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz#3743dcd248fd3a34d421ae456b864a0246bafb17" + integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ== + dependencies: + "@vue/compiler-sfc" "2.7.14" + csstype "^3.1.0" + +vuex@^3.6.2: + version "3.6.2" + resolved "https://registry.npmmirror.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" + integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +worker-loader@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/worker-loader/-/worker-loader-2.0.0.tgz#45fda3ef76aca815771a89107399ee4119b430ac" + integrity sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw== + dependencies: + loader-utils "^1.0.0" + schema-utils "^0.4.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zrender@5.4.1: + version "5.4.1" + resolved "https://registry.npmmirror.com/zrender/-/zrender-5.4.1.tgz#892f864b885c71e1dc25dcb3c7a4ba42678d3f11" + integrity sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA== + dependencies: + tslib "2.3.0" + +zrender@^5.1.1: + version "5.6.0" + resolved "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz#01325b0bb38332dd5e87a8dbee7336cafc0f4a5b" + integrity sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg== + dependencies: + tslib "2.3.0" diff --git "a/\345\244\247\345\261\217.xmind" "b/\345\244\247\345\261\217.xmind" new file mode 100644 index 0000000..8f61c6b --- /dev/null +++ "b/\345\244\247\345\261\217.xmind" Binary files differ -- Gitblit v1.9.3