vite.config.ts.timestamp-1766566524412-75fb9cb060e12.mjs 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. // vite.config.ts
  2. import { loadEnv, defineConfig } from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/vite@4.3.1_@types+node@18.14.2_sass@1.56.1/node_modules/vite/dist/node/index.js";
  3. // vite/plugins/index.ts
  4. import vue from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/@vitejs+plugin-vue@4.0.0_vi_f5ffea0aa712dabdbc8c3aab931e59c7/node_modules/@vitejs/plugin-vue/dist/index.mjs";
  5. // vite/plugins/unocss.ts
  6. import UnoCss from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unocss@0.50.8_postcss@8.5.6_94f38859995f0c6ef792dfb95539cd46/node_modules/unocss/dist/vite.mjs";
  7. import { presetUno, presetAttributify, presetIcons } from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unocss@0.50.8_postcss@8.5.6_94f38859995f0c6ef792dfb95539cd46/node_modules/unocss/dist/index.mjs";
  8. var unocss_default = () => {
  9. return UnoCss({
  10. presets: [presetUno(), presetAttributify(), presetIcons()],
  11. // rules: [['search', {}]],
  12. shortcuts: {
  13. "panel-title": "pb-[5px] font-sans leading-[1.1] font-medium text-base text-[#6379bb] border-b border-b-solid border-[var(--el-border-color-light)] mb-5 mt-0"
  14. },
  15. hmrTopLevelAwait: false
  16. // unocss默认是true,低版本浏览器是不支持的,启动后会报错
  17. });
  18. };
  19. // vite/plugins/auto-import.ts
  20. import AutoImport from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-auto-import@0.13.0_bf0f23498e7ab5b75b40f2a653fc6f99/node_modules/unplugin-auto-import/dist/vite.js";
  21. import { ElementPlusResolver } from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-vue-components@0.2_dcf43dd46d08c85c0e81c672b3d3d6b0/node_modules/unplugin-vue-components/dist/resolvers.mjs";
  22. import IconsResolver from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-icons@0.15.1_@vue+compiler-sfc@3.2.45/node_modules/unplugin-icons/dist/resolver.mjs";
  23. var __vite_injected_original_dirname = "D:\\workerspace\\storlead-center-platform\\storlead-centre-platform\\ui\\sp-user-center\\vite\\plugins";
  24. var auto_import_default = (path3) => {
  25. return AutoImport({
  26. // 自动导入 Vue 相关函数
  27. imports: ["vue", "vue-router", "@vueuse/core", "pinia"],
  28. eslintrc: {
  29. enabled: false,
  30. filepath: "./.eslintrc-auto-import.json",
  31. globalsPropValue: true
  32. },
  33. resolvers: [
  34. // 自动导入 Element Plus 相关函数ElMessage, ElMessageBox... (带样式)
  35. ElementPlusResolver(),
  36. IconsResolver({
  37. prefix: "Icon"
  38. })
  39. ],
  40. vueTemplate: true,
  41. // 是否在 vue 模板中自动导入
  42. dts: path3.resolve(path3.resolve(__vite_injected_original_dirname, "../../src"), "types", "auto-imports.d.ts")
  43. });
  44. };
  45. // vite/plugins/components.ts
  46. import Components from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-vue-components@0.2_dcf43dd46d08c85c0e81c672b3d3d6b0/node_modules/unplugin-vue-components/dist/vite.mjs";
  47. import { ElementPlusResolver as ElementPlusResolver2 } from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-vue-components@0.2_dcf43dd46d08c85c0e81c672b3d3d6b0/node_modules/unplugin-vue-components/dist/resolvers.mjs";
  48. import IconsResolver2 from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-icons@0.15.1_@vue+compiler-sfc@3.2.45/node_modules/unplugin-icons/dist/resolver.mjs";
  49. var __vite_injected_original_dirname2 = "D:\\workerspace\\storlead-center-platform\\storlead-centre-platform\\ui\\sp-user-center\\vite\\plugins";
  50. var components_default = (path3) => {
  51. return Components({
  52. resolvers: [
  53. // 自动导入 Element Plus 组件
  54. ElementPlusResolver2(),
  55. // 自动注册图标组件
  56. IconsResolver2({
  57. enabledCollections: ["ep"]
  58. })
  59. ],
  60. dts: path3.resolve(path3.resolve(__vite_injected_original_dirname2, "../../src"), "types", "components.d.ts")
  61. });
  62. };
  63. // vite/plugins/icons.ts
  64. import Icons from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-icons@0.15.1_@vue+compiler-sfc@3.2.45/node_modules/unplugin-icons/dist/vite.mjs";
  65. var icons_default = () => {
  66. return Icons({
  67. // 自动安装图标库
  68. autoInstall: true
  69. });
  70. };
  71. // vite/plugins/svg-icon.ts
  72. import { createSvgIconsPlugin } from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_1e425dbd503475a00215c0d6ebc0fce6/node_modules/vite-plugin-svg-icons/dist/index.mjs";
  73. var __vite_injected_original_dirname3 = "D:\\workerspace\\storlead-center-platform\\storlead-centre-platform\\ui\\sp-user-center\\vite\\plugins";
  74. var svg_icon_default = (path3, isBuild) => {
  75. return createSvgIconsPlugin({
  76. // 指定需要缓存的图标文件夹
  77. iconDirs: [path3.resolve(path3.resolve(__vite_injected_original_dirname3, "../../src"), "assets/icons/svg")],
  78. // 指定symbolId格式
  79. symbolId: "icon-[dir]-[name]",
  80. svgoOptions: isBuild
  81. });
  82. };
  83. // vite/plugins/compression.ts
  84. import compression from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/vite-plugin-compression@0.5_a413f9b79cde2a5175f10540e95c159a/node_modules/vite-plugin-compression/dist/index.mjs";
  85. function createCompression(env) {
  86. const { VITE_BUILD_COMPRESS } = env;
  87. const plugin = [];
  88. if (VITE_BUILD_COMPRESS) {
  89. const compressList = VITE_BUILD_COMPRESS.split(",");
  90. if (compressList.includes("gzip")) {
  91. plugin.push(
  92. compression({
  93. ext: ".gz",
  94. deleteOriginFile: false
  95. })
  96. );
  97. }
  98. if (compressList.includes("brotli")) {
  99. plugin.push(
  100. compression({
  101. ext: ".br",
  102. algorithm: "brotliCompress",
  103. deleteOriginFile: false
  104. })
  105. );
  106. }
  107. }
  108. return plugin;
  109. }
  110. // vite/plugins/setup-extend.ts
  111. import setupExtend from "file:///D:/workerspace/storlead-center-platform/storlead-centre-platform/ui/sp-user-center/node_modules/.pnpm/unplugin-vue-setup-extend-plus@0.4.9/node_modules/unplugin-vue-setup-extend-plus/dist/vite.js";
  112. var setup_extend_default = () => {
  113. return setupExtend({});
  114. };
  115. // vite/plugins/index.ts
  116. import path from "path";
  117. var plugins_default = (viteEnv, isBuild = false) => {
  118. const vitePlusgins = [];
  119. vitePlusgins.push(vue());
  120. vitePlusgins.push(unocss_default());
  121. vitePlusgins.push(auto_import_default(path));
  122. vitePlusgins.push(components_default(path));
  123. vitePlusgins.push(createCompression(viteEnv));
  124. vitePlusgins.push(icons_default());
  125. vitePlusgins.push(svg_icon_default(path, isBuild));
  126. vitePlusgins.push(setup_extend_default());
  127. return vitePlusgins;
  128. };
  129. // vite.config.ts
  130. import path2 from "path";
  131. var __vite_injected_original_dirname4 = "D:\\workerspace\\storlead-center-platform\\storlead-centre-platform\\ui\\sp-user-center";
  132. var vite_config_default = defineConfig(({ mode, command }) => {
  133. const env = loadEnv(mode, process.cwd());
  134. return {
  135. // 部署生产环境和开发环境下的URL。
  136. // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
  137. // 例如 如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在,则设置 baseUrl 为 /admin/。
  138. base: env.VITE_APP_CONTEXT_PATH,
  139. resolve: {
  140. alias: {
  141. "~": path2.resolve(__vite_injected_original_dirname4, "./"),
  142. "@": path2.resolve(__vite_injected_original_dirname4, "./src"),
  143. "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
  144. },
  145. extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]
  146. },
  147. build: {
  148. chunkSizeWarningLimit: 1500
  149. // 将警告限制调整到 1000 kB
  150. },
  151. // https://cn.vitejs.dev/config/#resolve-extensions
  152. plugins: plugins_default(env, command === "build"),
  153. server: {
  154. // 允许IP访问
  155. host: "0.0.0.0",
  156. // 应用端口 (默认:3000)
  157. port: 8688,
  158. // 运行是否自动打开浏览器
  159. open: false,
  160. proxy: {
  161. /** 代理前缀为 /dev-api 的请求 */
  162. "/api/": {
  163. changeOrigin: true,
  164. // 接口地址
  165. target: mode === "dev67" ? "http://192.168.1.67:10010" : "http://localhost:10010",
  166. // target: 'http://192.168.1.193:18090',
  167. pathRewrite: {
  168. ["^" + env.VITE_APP_BASE_API]: ""
  169. }
  170. }
  171. }
  172. },
  173. css: {
  174. preprocessorOptions: {
  175. scss: {
  176. javascriptEnabled: true
  177. }
  178. },
  179. postcss: {
  180. plugins: [
  181. {
  182. postcssPlugin: "internal:charset-removal",
  183. AtRule: {
  184. charset: (atRule) => {
  185. if (atRule.name === "charset") {
  186. atRule.remove();
  187. }
  188. }
  189. }
  190. }
  191. ]
  192. }
  193. },
  194. // 预编译
  195. optimizeDeps: {
  196. include: [
  197. "vue",
  198. "vue-router",
  199. "pinia",
  200. "axios",
  201. "@vueuse/core",
  202. "path-to-regexp",
  203. "echarts",
  204. "@wangeditor/editor",
  205. "@wangeditor/editor-for-vue",
  206. "vue-i18n",
  207. "@vueup/vue-quill",
  208. "@iconify/iconify",
  209. "element-plus/es/components/form/style/css",
  210. "element-plus/es/components/form-item/style/css",
  211. "element-plus/es/components/button/style/css",
  212. "element-plus/es/components/input/style/css",
  213. "element-plus/es/components/input-number/style/css",
  214. "element-plus/es/components/switch/style/css",
  215. "element-plus/es/components/upload/style/css",
  216. "element-plus/es/components/menu/style/css",
  217. "element-plus/es/components/col/style/css",
  218. "element-plus/es/components/icon/style/css",
  219. "element-plus/es/components/row/style/css",
  220. "element-plus/es/components/tag/style/css",
  221. "element-plus/es/components/dialog/style/css",
  222. "element-plus/es/components/loading/style/css",
  223. "element-plus/es/components/radio/style/css",
  224. "element-plus/es/components/radio-group/style/css",
  225. "element-plus/es/components/popover/style/css",
  226. "element-plus/es/components/scrollbar/style/css",
  227. "element-plus/es/components/tooltip/style/css",
  228. "element-plus/es/components/dropdown/style/css",
  229. "element-plus/es/components/dropdown-menu/style/css",
  230. "element-plus/es/components/dropdown-item/style/css",
  231. "element-plus/es/components/sub-menu/style/css",
  232. "element-plus/es/components/menu-item/style/css",
  233. "element-plus/es/components/divider/style/css",
  234. "element-plus/es/components/card/style/css",
  235. "element-plus/es/components/link/style/css",
  236. "element-plus/es/components/breadcrumb/style/css",
  237. "element-plus/es/components/breadcrumb-item/style/css",
  238. "element-plus/es/components/table/style/css",
  239. "element-plus/es/components/tree-select/style/css",
  240. "element-plus/es/components/table-column/style/css",
  241. "element-plus/es/components/select/style/css",
  242. "element-plus/es/components/option/style/css",
  243. "element-plus/es/components/pagination/style/css",
  244. "element-plus/es/components/tree/style/css",
  245. "element-plus/es/components/alert/style/css",
  246. "element-plus/es/components/checkbox/style/css",
  247. "element-plus/es/components/date-picker/style/css",
  248. "element-plus/es/components/transfer/style/css",
  249. "element-plus/es/components/tabs/style/css",
  250. "element-plus/es/components/image/style/css",
  251. "element-plus/es/components/tab-pane/style/css"
  252. ]
  253. }
  254. };
  255. });
  256. export {
  257. vite_config_default as default
  258. };
  259. //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAidml0ZS9wbHVnaW5zL2luZGV4LnRzIiwgInZpdGUvcGx1Z2lucy91bm9jc3MudHMiLCAidml0ZS9wbHVnaW5zL2F1dG8taW1wb3J0LnRzIiwgInZpdGUvcGx1Z2lucy9jb21wb25lbnRzLnRzIiwgInZpdGUvcGx1Z2lucy9pY29ucy50cyIsICJ2aXRlL3BsdWdpbnMvc3ZnLWljb24udHMiLCAidml0ZS9wbHVnaW5zL2NvbXByZXNzaW9uLnRzIiwgInZpdGUvcGx1Z2lucy9zZXR1cC1leHRlbmQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi93b3JrZXJzcGFjZS9zdG9ybGVhZC1jZW50ZXItcGxhdGZvcm0vc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtL3VpL3NwLXVzZXItY2VudGVyL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHtVc2VyQ29uZmlnLCBDb25maWdFbnYsIGxvYWRFbnYsIGRlZmluZUNvbmZpZ30gZnJvbSAndml0ZSc7XHJcblxyXG5pbXBvcnQgY3JlYXRlUGx1Z2lucyBmcm9tICcuL3ZpdGUvcGx1Z2lucyc7XHJcblxyXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZygoe21vZGUsIGNvbW1hbmR9OiBDb25maWdFbnYpOiBVc2VyQ29uZmlnID0+IHtcclxuICAgIGNvbnN0IGVudiA9IGxvYWRFbnYobW9kZSwgcHJvY2Vzcy5jd2QoKSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC8vIFx1OTBFOFx1N0Y3Mlx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NTQ4Q1x1NUYwMFx1NTNEMVx1NzNBRlx1NTg4M1x1NEUwQlx1NzY4NFVSTFx1MzAwMlxyXG4gICAgICAgIC8vIFx1OUVEOFx1OEJBNFx1NjBDNVx1NTFCNVx1NEUwQlx1RkYwQ3ZpdGUgXHU0RjFBXHU1MDQ3XHU4QkJFXHU0RjYwXHU3Njg0XHU1RTk0XHU3NTI4XHU2NjJGXHU4OEFCXHU5MEU4XHU3RjcyXHU1NzI4XHU0RTAwXHU0RTJBXHU1N0RGXHU1NDBEXHU3Njg0XHU2ODM5XHU4REVGXHU1Rjg0XHU0RTBBXHJcbiAgICAgICAgLy8gXHU0RjhCXHU1OTgyIFx1NTk4Mlx1Njc5Q1x1NUU5NFx1NzUyOFx1ODhBQlx1OTBFOFx1N0Y3Mlx1NTcyOFx1NEUwMFx1NEUyQVx1NUI1MFx1OERFRlx1NUY4NFx1NEUwQVx1RkYwQ1x1NEY2MFx1NUMzMVx1OTcwMFx1ODk4MVx1NzUyOFx1OEZEOVx1NEUyQVx1OTAwOVx1OTg3OVx1NjMwN1x1NUI5QVx1OEZEOVx1NEUyQVx1NUI1MFx1OERFRlx1NUY4NFx1MzAwMlx1NEY4Qlx1NTk4Mlx1RkYwQ1x1NTk4Mlx1Njc5Q1x1NEY2MFx1NzY4NFx1NUU5NFx1NzUyOFx1ODhBQlx1OTBFOFx1N0Y3Mlx1NTcyOFx1RkYwQ1x1NTIxOVx1OEJCRVx1N0Y2RSBiYXNlVXJsIFx1NEUzQSAvYWRtaW4vXHUzMDAyXHJcbiAgICAgICAgYmFzZTogZW52LlZJVEVfQVBQX0NPTlRFWFRfUEFUSCxcclxuICAgICAgICByZXNvbHZlOiB7XHJcbiAgICAgICAgICAgIGFsaWFzOiB7XHJcbiAgICAgICAgICAgICAgICAnfic6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLycpLFxyXG4gICAgICAgICAgICAgICAgJ0AnOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9zcmMnKSxcclxuICAgICAgICAgICAgICAgICd2dWUtaTE4bic6ICd2dWUtaTE4bi9kaXN0L3Z1ZS1pMThuLmNqcy5qcydcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXh0ZW5zaW9uczogWycubWpzJywgJy5qcycsICcudHMnLCAnLmpzeCcsICcudHN4JywgJy5qc29uJywgJy52dWUnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYnVpbGQ6IHtcclxuICAgICAgICAgICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAxNTAwIC8vIFx1NUMwNlx1OEI2Nlx1NTQ0QVx1OTY1MFx1NTIzNlx1OEMwM1x1NjU3NFx1NTIzMCAxMDAwIGtCXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBodHRwczovL2NuLnZpdGVqcy5kZXYvY29uZmlnLyNyZXNvbHZlLWV4dGVuc2lvbnNcclxuICAgICAgICBwbHVnaW5zOiBjcmVhdGVQbHVnaW5zKGVudiwgY29tbWFuZCA9PT0gJ2J1aWxkJyksXHJcbiAgICAgICAgc2VydmVyOiB7XHJcbiAgICAgICAgICAgIC8vIFx1NTE0MVx1OEJCOElQXHU4QkJGXHU5NUVFXHJcbiAgICAgICAgICAgIGhvc3Q6IFwiMC4wLjAuMFwiLFxyXG4gICAgICAgICAgICAvLyBcdTVFOTRcdTc1MjhcdTdBRUZcdTUzRTMgKFx1OUVEOFx1OEJBNDozMDAwKVxyXG4gICAgICAgICAgICBwb3J0OiA4Njg4LFxyXG4gICAgICAgICAgICAvLyBcdThGRDBcdTg4NENcdTY2MkZcdTU0MjZcdTgxRUFcdTUyQThcdTYyNTNcdTVGMDBcdTZENEZcdTg5QzhcdTU2NjhcclxuICAgICAgICAgICAgb3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHByb3h5OiB7XHJcbiAgICAgICAgICAgICAgICAvKiogXHU0RUUzXHU3NDA2XHU1MjREXHU3RjAwXHU0RTNBIC9kZXYtYXBpIFx1NzY4NFx1OEJGN1x1NkM0MiAgKi9cclxuICAgICAgICAgICAgICAgICcvYXBpLyc6IHtcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBtb2RlID09PSAnZGV2NjcnID8gJ2h0dHA6Ly8xOTIuMTY4LjEuNjc6MTAwMTAnIDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MTAwMTAnLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly8xOTIuMTY4LjEuMTkzOjE4MDkwJyxcclxuICAgICAgICAgICAgICAgICAgICBwYXRoUmV3cml0ZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ14nICsgZW52LlZJVEVfQVBQX0JBU0VfQVBJXTogJydcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIHNjc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwb3N0Y3NzOiB7XHJcbiAgICAgICAgICAgICAgICBwbHVnaW5zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0Y3NzUGx1Z2luOiAnaW50ZXJuYWw6Y2hhcnNldC1yZW1vdmFsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQXRSdWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0OiAoYXRSdWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0UnVsZS5uYW1lID09PSAnY2hhcnNldCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRSdWxlLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gXHU5ODg0XHU3RjE2XHU4QkQxXHJcbiAgICAgICAgb3B0aW1pemVEZXBzOiB7XHJcbiAgICAgICAgICAgIGluY2x1ZGU6IFtcclxuICAgICAgICAgICAgICAgICd2dWUnLFxyXG4gICAgICAgICAgICAgICAgJ3Z1ZS1yb3V0ZXInLFxyXG4gICAgICAgICAgICAgICAgJ3BpbmlhJyxcclxuICAgICAgICAgICAgICAgICdheGlvcycsXHJcbiAgICAgICAgICAgICAgICAnQHZ1ZXVzZS9jb3JlJyxcclxuICAgICAgICAgICAgICAgICdwYXRoLXRvLXJlZ2V4cCcsXHJcbiAgICAgICAgICAgICAgICAnZWNoYXJ0cycsXHJcbiAgICAgICAgICAgICAgICAnQHdhbmdlZGl0b3IvZWRpdG9yJyxcclxuICAgICAgICAgICAgICAgICdAd2FuZ2VkaXRvci9lZGl0b3ItZm9yLXZ1ZScsXHJcbiAgICAgICAgICAgICAgICAndnVlLWkxOG4nLFxyXG4gICAgICAgICAgICAgICAgJ0B2dWV1cC92dWUtcXVpbGwnLFxyXG4gICAgICAgICAgICAgICAgJ0BpY29uaWZ5L2ljb25pZnknLFxyXG5cclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9mb3JtL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZm9ybS1pdGVtL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYnV0dG9uL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvaW5wdXQvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zd2l0Y2gvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy91cGxvYWQvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9tZW51L3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvY29sL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvaWNvbi9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3Jvdy9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RhZy9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2RpYWxvZy9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2xvYWRpbmcvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yYWRpby9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3JhZGlvLWdyb3VwL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcG9wb3Zlci9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3Njcm9sbGJhci9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3Rvb2x0aXAvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kcm9wZG93bi9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kcm9wZG93bi1pdGVtL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvc3ViLW1lbnUvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9tZW51LWl0ZW0vc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kaXZpZGVyL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvY2FyZC9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2xpbmsvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9icmVhZGNydW1iL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYnJlYWRjcnVtYi1pdGVtL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFibGUvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90cmVlLXNlbGVjdC9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RhYmxlLWNvbHVtbi9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3NlbGVjdC9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL29wdGlvbi9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3BhZ2luYXRpb24vc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90cmVlL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYWxlcnQvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jaGVja2JveC9zdHlsZS9jc3MnLFxyXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2RhdGUtcGlja2VyL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdHJhbnNmZXIvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90YWJzL3N0eWxlL2NzcycsXHJcbiAgICAgICAgICAgICAgICAnZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvaW1hZ2Uvc3R5bGUvY3NzJyxcclxuICAgICAgICAgICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90YWItcGFuZS9zdHlsZS9jc3MnXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59KTtcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcd29ya2Vyc3BhY2VcXFxcc3RvcmxlYWQtY2VudGVyLXBsYXRmb3JtXFxcXHN0b3JsZWFkLWNlbnRyZS1wbGF0Zm9ybVxcXFx1aVxcXFxzcC11c2VyLWNlbnRlclxcXFx2aXRlXFxcXHBsdWdpbnNcXFxcaW5kZXgudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3dvcmtlcnNwYWNlL3N0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybS9zdG9ybGVhZC1jZW50cmUtcGxhdGZvcm0vdWkvc3AtdXNlci1jZW50ZXIvdml0ZS9wbHVnaW5zL2luZGV4LnRzXCI7aW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnO1xuaW1wb3J0IGNyZWF0ZVVub0NzcyBmcm9tICcuL3Vub2Nzcyc7XG5pbXBvcnQgY3JlYXRlQXV0b0ltcG9ydCBmcm9tICcuL2F1dG8taW1wb3J0JztcbmltcG9ydCBjcmVhdGVDb21wb25lbnRzIGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgY3JlYXRlSWNvbnMgZnJvbSAnLi9pY29ucyc7XG5pbXBvcnQgY3JlYXRlU3ZnSWNvbnNQbHVnaW4gZnJvbSAnLi9zdmctaWNvbic7XG5pbXBvcnQgY3JlYXRlQ29tcHJlc3Npb24gZnJvbSAnLi9jb21wcmVzc2lvbic7XG5pbXBvcnQgY3JlYXRlU2V0dXBFeHRlbmQgZnJvbSAnLi9zZXR1cC1leHRlbmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmV4cG9ydCBkZWZhdWx0ICh2aXRlRW52OiBhbnksIGlzQnVpbGQgPSBmYWxzZSk6IFtdID0+IHtcbiAgY29uc3Qgdml0ZVBsdXNnaW5zOiBhbnkgPSBbXTtcbiAgdml0ZVBsdXNnaW5zLnB1c2godnVlKCkpO1xuICB2aXRlUGx1c2dpbnMucHVzaChjcmVhdGVVbm9Dc3MoKSk7XG4gIHZpdGVQbHVzZ2lucy5wdXNoKGNyZWF0ZUF1dG9JbXBvcnQocGF0aCkpO1xuICB2aXRlUGx1c2dpbnMucHVzaChjcmVhdGVDb21wb25lbnRzKHBhdGgpKTtcbiAgdml0ZVBsdXNnaW5zLnB1c2goY3JlYXRlQ29tcHJlc3Npb24odml0ZUVudikpO1xuICB2aXRlUGx1c2dpbnMucHVzaChjcmVhdGVJY29ucygpKTtcbiAgdml0ZVBsdXNnaW5zLnB1c2goY3JlYXRlU3ZnSWNvbnNQbHVnaW4ocGF0aCwgaXNCdWlsZCkpO1xuICB2aXRlUGx1c2dpbnMucHVzaChjcmVhdGVTZXR1cEV4dGVuZCgpKTtcbiAgcmV0dXJuIHZpdGVQbHVzZ2lucztcbn07XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXHdvcmtlcnNwYWNlXFxcXHN0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybVxcXFxzdG9ybGVhZC1jZW50cmUtcGxhdGZvcm1cXFxcdWlcXFxcc3AtdXNlci1jZW50ZXJcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXFxcXHZpdGVcXFxccGx1Z2luc1xcXFx1bm9jc3MudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3dvcmtlcnNwYWNlL3N0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybS9zdG9ybGVhZC1jZW50cmUtcGxhdGZvcm0vdWkvc3AtdXNlci1jZW50ZXIvdml0ZS9wbHVnaW5zL3Vub2Nzcy50c1wiO2ltcG9ydCBVbm9Dc3MgZnJvbSAndW5vY3NzL3ZpdGUnO1xuaW1wb3J0IHsgcHJlc2V0VW5vLCBwcmVzZXRBdHRyaWJ1dGlmeSwgcHJlc2V0SWNvbnMgfSBmcm9tICd1bm9jc3MnO1xuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG4gIHJldHVybiBVbm9Dc3Moe1xuICAgIHByZXNldHM6IFtwcmVzZXRVbm8oKSwgcHJlc2V0QXR0cmlidXRpZnkoKSwgcHJlc2V0SWNvbnMoKV0sXG4gICAgLy8gcnVsZXM6IFtbJ3NlYXJjaCcsIHt9XV0sXG4gICAgc2hvcnRjdXRzOiB7XG4gICAgICAncGFuZWwtdGl0bGUnOlxuICAgICAgICAncGItWzVweF0gZm9udC1zYW5zIGxlYWRpbmctWzEuMV0gZm9udC1tZWRpdW0gdGV4dC1iYXNlIHRleHQtWyM2Mzc5YmJdIGJvcmRlci1iIGJvcmRlci1iLXNvbGlkIGJvcmRlci1bdmFyKC0tZWwtYm9yZGVyLWNvbG9yLWxpZ2h0KV0gbWItNSBtdC0wJ1xuICAgIH0sXG4gICAgaG1yVG9wTGV2ZWxBd2FpdDogZmFsc2UgLy8gdW5vY3NzXHU5RUQ4XHU4QkE0XHU2NjJGdHJ1ZVx1RkYwQ1x1NEY0RVx1NzI0OFx1NjcyQ1x1NkQ0Rlx1ODlDOFx1NTY2OFx1NjYyRlx1NEUwRFx1NjUyRlx1NjMwMVx1NzY4NFx1RkYwQ1x1NTQyRlx1NTJBOFx1NTQwRVx1NEYxQVx1NjJBNVx1OTUxOVxuICB9KTtcbn07XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXHdvcmtlcnNwYWNlXFxcXHN0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybVxcXFxzdG9ybGVhZC1jZW50cmUtcGxhdGZvcm1cXFxcdWlcXFxcc3AtdXNlci1jZW50ZXJcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxhdXRvLWltcG9ydC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovd29ya2Vyc3BhY2Uvc3RvcmxlYWQtY2VudGVyLXBsYXRmb3JtL3N0b3JsZWFkLWNlbnRyZS1wbGF0Zm9ybS91aS9zcC11c2VyLWNlbnRlci92aXRlL3BsdWdpbnMvYXV0by1pbXBvcnQudHNcIjtpbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJztcbmltcG9ydCB7IEVsZW1lbnRQbHVzUmVzb2x2ZXIgfSBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy9yZXNvbHZlcnMnO1xuaW1wb3J0IEljb25zUmVzb2x2ZXIgZnJvbSAndW5wbHVnaW4taWNvbnMvcmVzb2x2ZXInO1xuXG5leHBvcnQgZGVmYXVsdCAocGF0aDogYW55KSA9PiB7XG4gIHJldHVybiBBdXRvSW1wb3J0KHtcbiAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgVnVlIFx1NzZGOFx1NTE3M1x1NTFGRFx1NjU3MFxuICAgIGltcG9ydHM6IFsndnVlJywgJ3Z1ZS1yb3V0ZXInLCAnQHZ1ZXVzZS9jb3JlJywgJ3BpbmlhJ10sXG4gICAgZXNsaW50cmM6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZmlsZXBhdGg6ICcuLy5lc2xpbnRyYy1hdXRvLWltcG9ydC5qc29uJyxcbiAgICAgIGdsb2JhbHNQcm9wVmFsdWU6IHRydWVcbiAgICB9LFxuICAgIHJlc29sdmVyczogW1xuICAgICAgLy8gXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1IEVsZW1lbnQgUGx1cyBcdTc2RjhcdTUxNzNcdTUxRkRcdTY1NzBFbE1lc3NhZ2UsIEVsTWVzc2FnZUJveC4uLiAoXHU1RTI2XHU2ODM3XHU1RjBGKVxuICAgICAgRWxlbWVudFBsdXNSZXNvbHZlcigpLFxuICAgICAgSWNvbnNSZXNvbHZlcih7XG4gICAgICAgIHByZWZpeDogJ0ljb24nXG4gICAgICB9KVxuICAgIF0sXG4gICAgdnVlVGVtcGxhdGU6IHRydWUsIC8vIFx1NjYyRlx1NTQyNlx1NTcyOCB2dWUgXHU2QTIxXHU2NzdGXHU0RTJEXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1XG4gICAgZHRzOiBwYXRoLnJlc29sdmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uLy4uL3NyYycpLCAndHlwZXMnLCAnYXV0by1pbXBvcnRzLmQudHMnKVxuICB9KTtcbn07XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXHdvcmtlcnNwYWNlXFxcXHN0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybVxcXFxzdG9ybGVhZC1jZW50cmUtcGxhdGZvcm1cXFxcdWlcXFxcc3AtdXNlci1jZW50ZXJcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxjb21wb25lbnRzLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi93b3JrZXJzcGFjZS9zdG9ybGVhZC1jZW50ZXItcGxhdGZvcm0vc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtL3VpL3NwLXVzZXItY2VudGVyL3ZpdGUvcGx1Z2lucy9jb21wb25lbnRzLnRzXCI7aW1wb3J0IENvbXBvbmVudHMgZnJvbSAndW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvdml0ZSc7XG5pbXBvcnQgeyBFbGVtZW50UGx1c1Jlc29sdmVyIH0gZnJvbSAndW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvcmVzb2x2ZXJzJztcbmltcG9ydCBJY29uc1Jlc29sdmVyIGZyb20gJ3VucGx1Z2luLWljb25zL3Jlc29sdmVyJztcblxuZXhwb3J0IGRlZmF1bHQgKHBhdGg6IGFueSkgPT4ge1xuICByZXR1cm4gQ29tcG9uZW50cyh7XG4gICAgcmVzb2x2ZXJzOiBbXG4gICAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgRWxlbWVudCBQbHVzIFx1N0VDNFx1NEVGNlxuICAgICAgRWxlbWVudFBsdXNSZXNvbHZlcigpLFxuICAgICAgLy8gXHU4MUVBXHU1MkE4XHU2Q0U4XHU1MThDXHU1NkZFXHU2ODA3XHU3RUM0XHU0RUY2XG4gICAgICBJY29uc1Jlc29sdmVyKHtcbiAgICAgICAgZW5hYmxlZENvbGxlY3Rpb25zOiBbJ2VwJ11cbiAgICAgIH0pXG4gICAgXSxcbiAgICBkdHM6IHBhdGgucmVzb2x2ZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vLi4vc3JjJyksICd0eXBlcycsICdjb21wb25lbnRzLmQudHMnKVxuICB9KTtcbn07XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXHdvcmtlcnNwYWNlXFxcXHN0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybVxcXFxzdG9ybGVhZC1jZW50cmUtcGxhdGZvcm1cXFxcdWlcXFxcc3AtdXNlci1jZW50ZXJcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxpY29ucy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovd29ya2Vyc3BhY2Uvc3RvcmxlYWQtY2VudGVyLXBsYXRmb3JtL3N0b3JsZWFkLWNlbnRyZS1wbGF0Zm9ybS91aS9zcC11c2VyLWNlbnRlci92aXRlL3BsdWdpbnMvaWNvbnMudHNcIjtpbXBvcnQgSWNvbnMgZnJvbSAndW5wbHVnaW4taWNvbnMvdml0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgcmV0dXJuIEljb25zKHtcbiAgICAvLyBcdTgxRUFcdTUyQThcdTVCODlcdTg4QzVcdTU2RkVcdTY4MDdcdTVFOTNcbiAgICBhdXRvSW5zdGFsbDogdHJ1ZVxuICB9KTtcbn07XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXHdvcmtlcnNwYWNlXFxcXHN0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybVxcXFxzdG9ybGVhZC1jZW50cmUtcGxhdGZvcm1cXFxcdWlcXFxcc3AtdXNlci1jZW50ZXJcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFx3b3JrZXJzcGFjZVxcXFxzdG9ybGVhZC1jZW50ZXItcGxhdGZvcm1cXFxcc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtXFxcXHVpXFxcXHNwLXVzZXItY2VudGVyXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxzdmctaWNvbi50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovd29ya2Vyc3BhY2Uvc3RvcmxlYWQtY2VudGVyLXBsYXRmb3JtL3N0b3JsZWFkLWNlbnRyZS1wbGF0Zm9ybS91aS9zcC11c2VyLWNlbnRlci92aXRlL3BsdWdpbnMvc3ZnLWljb24udHNcIjtpbXBvcnQgeyBjcmVhdGVTdmdJY29uc1BsdWdpbiB9IGZyb20gJ3ZpdGUtcGx1Z2luLXN2Zy1pY29ucyc7XG5leHBvcnQgZGVmYXVsdCAocGF0aDogYW55LCBpc0J1aWxkOiBib29sZWFuKSA9PiB7XG4gIHJldHVybiBjcmVhdGVTdmdJY29uc1BsdWdpbih7XG4gICAgLy8gXHU2MzA3XHU1QjlBXHU5NzAwXHU4OTgxXHU3RjEzXHU1QjU4XHU3Njg0XHU1NkZFXHU2ODA3XHU2NTg3XHU0RUY2XHU1OTM5XG4gICAgaWNvbkRpcnM6IFtwYXRoLnJlc29sdmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uLy4uL3NyYycpLCAnYXNzZXRzL2ljb25zL3N2ZycpXSxcbiAgICAvLyBcdTYzMDdcdTVCOUFzeW1ib2xJZFx1NjgzQ1x1NUYwRlxuICAgIHN5bWJvbElkOiAnaWNvbi1bZGlyXS1bbmFtZV0nLFxuICAgIHN2Z29PcHRpb25zOiBpc0J1aWxkXG4gIH0pO1xufTtcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcd29ya2Vyc3BhY2VcXFxcc3RvcmxlYWQtY2VudGVyLXBsYXRmb3JtXFxcXHN0b3JsZWFkLWNlbnRyZS1wbGF0Zm9ybVxcXFx1aVxcXFxzcC11c2VyLWNlbnRlclxcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHdvcmtlcnNwYWNlXFxcXHN0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybVxcXFxzdG9ybGVhZC1jZW50cmUtcGxhdGZvcm1cXFxcdWlcXFxcc3AtdXNlci1jZW50ZXJcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXGNvbXByZXNzaW9uLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi93b3JrZXJzcGFjZS9zdG9ybGVhZC1jZW50ZXItcGxhdGZvcm0vc3RvcmxlYWQtY2VudHJlLXBsYXRmb3JtL3VpL3NwLXVzZXItY2VudGVyL3ZpdGUvcGx1Z2lucy9jb21wcmVzc2lvbi50c1wiO2ltcG9ydCBjb21wcmVzc2lvbiBmcm9tICd2aXRlLXBsdWdpbi1jb21wcmVzc2lvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUNvbXByZXNzaW9uKGVudjogYW55KSB7XG4gIGNvbnN0IHsgVklURV9CVUlMRF9DT01QUkVTUyB9ID0gZW52O1xuICBjb25zdCBwbHVnaW46IGFueVtdID0gW107XG4gIGlmIChWSVRFX0JVSUxEX0NPTVBSRVNTKSB7XG4gICAgY29uc3QgY29tcHJlc3NMaXN0ID0gVklURV9CVUlMRF9DT01QUkVTUy5zcGxpdCgnLCcpO1xuICAgIGlmIChjb21wcmVzc0xpc3QuaW5jbHVkZXMoJ2d6aXAnKSkge1xuICAgICAgcGx1Z2luLnB1c2goXG4gICAgICAgIGNvbXByZXNzaW9uKHtcbiAgICAgICAgICBleHQ6ICcuZ3onLFxuICAgICAgICAgIGRlbGV0ZU9yaWdpbkZpbGU6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdicm90bGknKSkge1xuICAgICAgcGx1Z2luLnB1c2goXG4gICAgICAgIGNvbXByZXNzaW9uKHtcbiAgICAgICAgICBleHQ6ICcuYnInLFxuICAgICAgICAgIGFsZ29yaXRobTogJ2Jyb3RsaUNvbXByZXNzJyxcbiAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBsdWdpbjtcbn1cbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcd29ya2Vyc3BhY2VcXFxcc3RvcmxlYWQtY2VudGVyLXBsYXRmb3JtXFxcXHN0b3JsZWFkLWNlbnRyZS1wbGF0Zm9ybVxcXFx1aVxcXFxzcC11c2VyLWNlbnRlclxcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHdvcmtlcnNwYWNlXFxcXHN0b3JsZWFkLWNlbnRlci1wbGF0Zm9ybVxcXFxzdG9ybGVhZC1jZW50cmUtcGxhdGZvcm1cXFxcdWlcXFxcc3AtdXNlci1jZW50ZXJcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXHNldHVwLWV4dGVuZC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovd29ya2Vyc3BhY2Uvc3RvcmxlYWQtY2VudGVyLXBsYXRmb3JtL3N0b3JsZWFkLWNlbnRyZS1wbGF0Zm9ybS91aS9zcC11c2VyLWNlbnRlci92aXRlL3BsdWdpbnMvc2V0dXAtZXh0ZW5kLnRzXCI7aW1wb3J0IHNldHVwRXh0ZW5kIGZyb20gJ3VucGx1Z2luLXZ1ZS1zZXR1cC1leHRlbmQtcGx1cy92aXRlJ1xuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG4gIHJldHVybiBzZXR1cEV4dGVuZCh7fSlcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQW9iLFNBQStCLFNBQVMsb0JBQW1COzs7QUNBNUIsT0FBTyxTQUFTOzs7QUNBZCxPQUFPLFlBQVk7QUFDeGUsU0FBUyxXQUFXLG1CQUFtQixtQkFBbUI7QUFFMUQsSUFBTyxpQkFBUSxNQUFNO0FBQ25CLFNBQU8sT0FBTztBQUFBLElBQ1osU0FBUyxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsR0FBRyxZQUFZLENBQUM7QUFBQTtBQUFBLElBRXpELFdBQVc7QUFBQSxNQUNULGVBQ0U7QUFBQSxJQUNKO0FBQUEsSUFDQSxrQkFBa0I7QUFBQTtBQUFBLEVBQ3BCLENBQUM7QUFDSDs7O0FDYitkLE9BQU8sZ0JBQWdCO0FBQ3RmLFNBQVMsMkJBQTJC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TUFDSjtBQUFBLE1BQ0EsU0FBUztBQUFBLFFBQ0wsU0FBUztBQUFBLFVBQ0w7QUFBQSxZQUNJLGVBQWU7QUFBQSxZQUNmLFFBQVE7QUFBQSxjQUNKLFNBQVMsQ0FBQyxXQUFXO0FBQ2pCLG9CQUFJLE9BQU8sU0FBUyxXQUFXO0FBQzNCLHlCQUFPLE9BQU87QUFBQSxnQkFDbEI7QUFBQSxjQUNKO0FBQUEsWUFDSjtBQUFBLFVBQ0o7QUFBQSxRQUNKO0FBQUEsTUFDSjtBQUFBLElBQ0o7QUFBQTtBQUFBLElBRUEsY0FBYztBQUFBLE1BQ1YsU0FBUztBQUFBLFFBQ0w7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBRUE7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNKO0FBQUEsSUFDSjtBQUFBLEVBQ0o7QUFDSixDQUFDOyIsCiAgIm5hbWVzIjogWyJwYXRoIiwgIkVsZW1lbnRQbHVzUmVzb2x2ZXIiLCAiSWNvbnNSZXNvbHZlciIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJwYXRoIiwgIkVsZW1lbnRQbHVzUmVzb2x2ZXIiLCAiSWNvbnNSZXNvbHZlciIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJwYXRoIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgInBhdGgiLCAiX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUiLCAicGF0aCIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSJdCn0K