ccgf-game-tool 1.0.13 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.js +10 -2
- package/dist/doctor.js +4 -2
- package/dist/main.js +69 -3
- package/dist/panels/workbench/index.js +36 -4
- package/dist/templates.js +14 -2
- package/dist/types.js +1 -1
- package/i18n/en.js +2 -1
- package/i18n/zh.js +2 -1
- package/package.json +16 -1
- package/static/template/workbench/panel.html +11 -2
package/dist/constants.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* 且体检里的 `layers-drift` 检查会盯着它们是否同步。
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.REGISTRY_CACHE_MS = exports.DISCOVERY_KEYWORD = exports.SHARED_MODULE_MARKER = exports.WORKSPACE_PACKAGE_NAME = exports.WORKSPACE_SHARED_SUBDIR = exports.COMPRESSED_UUID_RE = exports.PREFAB_TEMPLATE_LABELS = exports.PREFAB_TEMPLATES = exports.MANAGER_SINGLETON_IMPORT = exports.SINGLETON_PATH = exports.MANAGER_DIR = exports.VIEWS_SUBDIR = exports.VIEW_DEFINITION_PATH = exports.FRAMEWORK_DEV_DIR = exports.FRAMEWORK_PACKAGE = exports.SCENES_DIR = exports.RESOURCES_DIR = exports.SCRIPTS_DIR = exports.GAMEPLAY_DIR = exports.LAYERS = void 0;
|
|
10
|
+
exports.REGISTRY_CACHE_MS = exports.DISCOVERY_KEYWORD = exports.SHARED_MODULE_MARKER = exports.WORKSPACE_PACKAGE_NAME = exports.WORKSPACE_SHARED_SUBDIR = exports.COMPRESSED_UUID_RE = exports.PREFAB_TEMPLATE_LABELS = exports.PREFAB_TEMPLATES = exports.MANAGER_REGISTRY_IMPORT = exports.MANAGER_SINGLETON_IMPORT = exports.SINGLETON_PATH = exports.MANAGER_DIR = exports.VIEWS_SUBDIR = exports.VIEW_DEFINITION_PATH = exports.FRAMEWORK_DEV_DIR = exports.FRAMEWORK_PACKAGE = exports.SCENES_DIR = exports.RESOURCES_DIR = exports.SCRIPTS_DIR = exports.GAMEPLAY_DIR = exports.LAYERS = void 0;
|
|
11
11
|
/** View 层级顺序,与 framework/core/mvc/ViewDefinition.ts 的 ELayer 一致 */
|
|
12
12
|
exports.LAYERS = ['Scene', 'Window', 'Popup', 'Guide', 'Tips'];
|
|
13
13
|
/** 工程内相对路径(统一用 / 分隔) */
|
|
@@ -35,6 +35,14 @@ exports.SINGLETON_PATH = 'assets/scripts/framework/common/Singleton';
|
|
|
35
35
|
* 必须与 MANAGER_DIR 的层级保持一致(manager 在 scripts 下一层 -> 上溯一层)。
|
|
36
36
|
*/
|
|
37
37
|
exports.MANAGER_SINGLETON_IMPORT = '../framework/common/Singleton';
|
|
38
|
+
/**
|
|
39
|
+
* manager 脚本里 import RegisterManager 的相对路径。
|
|
40
|
+
*
|
|
41
|
+
* 和 MANAGER_SINGLETON_IMPORT 同一个理由:**别在生成器里手算相对层数** ——
|
|
42
|
+
* manager 在 `scripts` 下一层(上溯一层),而模块模板是两层;
|
|
43
|
+
* 抄错了会跑到 `assets/` 去找框架(实测踩过)。
|
|
44
|
+
*/
|
|
45
|
+
exports.MANAGER_REGISTRY_IMPORT = '../framework/core/manager/ManagerRegistry';
|
|
38
46
|
/** View 预制体模板 */
|
|
39
47
|
exports.PREFAB_TEMPLATES = ['empty', 'fullscreen', 'popup', 'listitem'];
|
|
40
48
|
exports.PREFAB_TEMPLATE_LABELS = {
|
|
@@ -78,4 +86,4 @@ exports.SHARED_MODULE_MARKER = 'cocosGameFramework';
|
|
|
78
86
|
exports.DISCOVERY_KEYWORD = 'ccgf-shared';
|
|
79
87
|
/** registry 搜索结果缓存多久(一次搜索实测 1~4 秒,不能每次刷新面板都去搜) */
|
|
80
88
|
exports.REGISTRY_CACHE_MS = 5 * 60 * 1000;
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxtRUFBbUU7QUFDdEQsUUFBQSxNQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFVLENBQUM7QUFHN0Usd0JBQXdCO0FBQ1gsUUFBQSxZQUFZLEdBQUcseUJBQXlCLENBQUM7QUFDekMsUUFBQSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0IsUUFBQSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDbkMsUUFBQSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBRTFDLG1DQUFtQztBQUN0QixRQUFBLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0FBRW5ELHlDQUF5QztBQUM1QixRQUFBLGlCQUFpQixHQUFHLDBCQUEwQixDQUFDO0FBRTVELGlDQUFpQztBQUNwQixRQUFBLG9CQUFvQixHQUFHLGtEQUFrRCxDQUFDO0FBRXZGLHlCQUF5QjtBQUNaLFFBQUEsWUFBWSxHQUFHLE9BQU8sQ0FBQztBQUVwQzs7O0dBR0c7QUFDVSxRQUFBLFdBQVcsR0FBRyx3QkFBd0IsQ0FBQztBQUVwRCxtQ0FBbUM7QUFDdEIsUUFBQSxjQUFjLEdBQUcsMkNBQTJDLENBQUM7QUFFMUU7OztHQUdHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRywrQkFBK0IsQ0FBQztBQUV4RTs7Ozs7O0dBTUc7QUFDVSxRQUFBLHVCQUF1QixHQUFHLDJDQUEyQyxDQUFDO0FBRW5GLGlCQUFpQjtBQUNKLFFBQUEsZ0JBQWdCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUd6RSxRQUFBLHNCQUFzQixHQUFvQztJQUNuRSxLQUFLLEVBQUUsYUFBYTtJQUNwQixVQUFVLEVBQUUsWUFBWTtJQUN4QixLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLFFBQVEsRUFBRSxrQkFBa0I7Q0FDL0IsQ0FBQztBQUVGLCtEQUErRDtBQUNsRCxRQUFBLGtCQUFrQixHQUFHLGdDQUFnQyxDQUFDO0FBRW5FOzs7Ozs7R0FNRztBQUNVLFFBQUEsdUJBQXVCLEdBQUcsaUJBQWlCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcscUJBQXFCLENBQUM7QUFFNUQ7Ozs7R0FJRztBQUNVLFFBQUEsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7QUFFekQ7Ozs7Ozs7OztHQVNHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRyxhQUFhLENBQUM7QUFFL0Msa0RBQWtEO0FBQ3JDLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOaJqeWxleeahOW4uOmHj+S4juWUr+S4gOS6i+Wunuadpea6kOOAglxuICpcbiAqIOazqOaEj++8mmBMQVlFUlNgIOaYr+ahhuaetiBgRUxheWVyYCDlnKjmianlsZXkvqfnmoTplZzlg4/jgIJcbiAqIOmdouadv+eahOWxgue6p+S4i+aLieeUseS4u+i/m+eoi+S4i+WPke+8iHF1ZXJ5LWxheWVyc++8ie+8jOWboOatpOWFqOW3peeoi+WPquaciei/meS4pOS7ve+8jFxuICog5LiU5L2T5qOA6YeM55qEIGBsYXllcnMtZHJpZnRgIOajgOafpeS8muebr+edgOWug+S7rOaYr+WQpuWQjOatpeOAglxuICovXG5cbi8qKiBWaWV3IOWxgue6p+mhuuW6j++8jOS4jiBmcmFtZXdvcmsvY29yZS9tdmMvVmlld0RlZmluaXRpb24udHMg55qEIEVMYXllciDkuIDoh7QgKi9cbmV4cG9ydCBjb25zdCBMQVlFUlMgPSBbJ1NjZW5lJywgJ1dpbmRvdycsICdQb3B1cCcsICdHdWlkZScsICdUaXBzJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUTGF5ZXIgPSAodHlwZW9mIExBWUVSUylbbnVtYmVyXTtcblxuLyoqIOW3peeoi+WGheebuOWvuei3r+W+hO+8iOe7n+S4gOeUqCAvIOWIhumalO+8iSAqL1xuZXhwb3J0IGNvbnN0IEdBTUVQTEFZX0RJUiA9ICdhc3NldHMvc2NyaXB0cy9nYW1lcGxheSc7XG5leHBvcnQgY29uc3QgU0NSSVBUU19ESVIgPSAnYXNzZXRzL3NjcmlwdHMnO1xuZXhwb3J0IGNvbnN0IFJFU09VUkNFU19ESVIgPSAnYXNzZXRzL3Jlc291cmNlcyc7XG5leHBvcnQgY29uc3QgU0NFTkVTX0RJUiA9ICdhc3NldHMvc2NlbmVzJztcblxuLyoqIOahhuaetuWPkeW4g+aIkCBucG0g5YyF5LmL5ZCO55qE5YyF5ZCN77yI5paw5bel56iL55So6L+Z5Liq5byV55So5qGG5p6277yJICovXG5leHBvcnQgY29uc3QgRlJBTUVXT1JLX1BBQ0tBR0UgPSAnQGNjZ2YvZnJhbWV3b3JrJztcblxuLyoqIOW8gOWPkeW3peS9nOWMuumHjOahhuaetua6kOeggeaJgOWcqOebruW9le+8muWug+WcqO+8jOivtOaYjuaYr+W8gOWPkeW3peS9nOWMuu+8jOeUqOebuOWvuei3r+W+hOW8leeUqCAqL1xuZXhwb3J0IGNvbnN0IEZSQU1FV09SS19ERVZfRElSID0gJ2Fzc2V0cy9zY3JpcHRzL2ZyYW1ld29yayc7XG5cbi8qKiDmoYbmnrYgRUxheWVyIOWumuS5ieaWh+S7tu+8iOebuOWvueW3peeoi+ague+8jOaXoOaJqeWxleWQje+8iSAqL1xuZXhwb3J0IGNvbnN0IFZJRVdfREVGSU5JVElPTl9QQVRIID0gJ2Fzc2V0cy9zY3JpcHRzL2ZyYW1ld29yay9jb3JlL212Yy9WaWV3RGVmaW5pdGlvbic7XG5cbi8qKiDmqKHlnZfkuIvlrZjmlL4gVmlldyDohJrmnKznmoTlrZDnm67lvZXlkI0gKi9cbmV4cG9ydCBjb25zdCBWSUVXU19TVUJESVIgPSAndmlld3MnO1xuXG4vKipcbiAqIOWFqOWxgOWNleS+iyBtYW5hZ2VyIOaJgOWcqOebruW9le+8iOS4jiBmcmFtZXdvcmvjgIFnYW1lcGxheSDlubPnuqfvvInjgIJcbiAqIG1hbmFnZXIg5piv5YWo5bGA5pyN5Yqh77yM5LiN5bGe5LqO5p+Q5Liq5Lia5Yqh5qih5Z2X77yM5omA5Lul5Y2V54us5LiA5bGC44CCXG4gKi9cbmV4cG9ydCBjb25zdCBNQU5BR0VSX0RJUiA9ICdhc3NldHMvc2NyaXB0cy9tYW5hZ2VyJztcblxuLyoqIOahhuaetiBBU2luZ2xldG9uIOWfuuexu++8iOebuOWvueW3peeoi+ague+8jOaXoOaJqeWxleWQje+8iSAqL1xuZXhwb3J0IGNvbnN0IFNJTkdMRVRPTl9QQVRIID0gJ2Fzc2V0cy9zY3JpcHRzL2ZyYW1ld29yay9jb21tb24vU2luZ2xldG9uJztcblxuLyoqXG4gKiBtYW5hZ2VyIOiEmuacrOmHjCBpbXBvcnQgQVNpbmdsZXRvbiDnmoTnm7jlr7not6/lvoTjgIJcbiAqIOW/hemhu+S4jiBNQU5BR0VSX0RJUiDnmoTlsYLnuqfkv53mjIHkuIDoh7TvvIhtYW5hZ2VyIOWcqCBzY3JpcHRzIOS4i+S4gOWxgiAtPiDkuIrmuq/kuIDlsYLvvInjgIJcbiAqL1xuZXhwb3J0IGNvbnN0IE1BTkFHRVJfU0lOR0xFVE9OX0lNUE9SVCA9ICcuLi9mcmFtZXdvcmsvY29tbW9uL1NpbmdsZXRvbic7XG5cbi8qKlxuICogbWFuYWdlciDohJrmnKzph4wgaW1wb3J0IFJlZ2lzdGVyTWFuYWdlciDnmoTnm7jlr7not6/lvoTjgIJcbiAqXG4gKiDlkowgTUFOQUdFUl9TSU5HTEVUT05fSU1QT1JUIOWQjOS4gOS4queQhueUse+8mioq5Yir5Zyo55Sf5oiQ5Zmo6YeM5omL566X55u45a+55bGC5pWwKiog4oCU4oCUXG4gKiBtYW5hZ2VyIOWcqCBgc2NyaXB0c2Ag5LiL5LiA5bGC77yI5LiK5rqv5LiA5bGC77yJ77yM6ICM5qih5Z2X5qih5p2/5piv5Lik5bGC77ybXG4gKiDmioTplJnkuobkvJrot5HliLAgYGFzc2V0cy9gIOWOu+aJvuahhuaetu+8iOWunua1i+i4qei/h++8ieOAglxuICovXG5leHBvcnQgY29uc3QgTUFOQUdFUl9SRUdJU1RSWV9JTVBPUlQgPSAnLi4vZnJhbWV3b3JrL2NvcmUvbWFuYWdlci9NYW5hZ2VyUmVnaXN0cnknO1xuXG4vKiogVmlldyDpooTliLbkvZPmqKHmnb8gKi9cbmV4cG9ydCBjb25zdCBQUkVGQUJfVEVNUExBVEVTID0gWydlbXB0eScsICdmdWxsc2NyZWVuJywgJ3BvcHVwJywgJ2xpc3RpdGVtJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUUHJlZmFiVGVtcGxhdGUgPSAodHlwZW9mIFBSRUZBQl9URU1QTEFURVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBQUkVGQUJfVEVNUExBVEVfTEFCRUxTOiBSZWNvcmQ8VFByZWZhYlRlbXBsYXRlLCBzdHJpbmc+ID0ge1xuICAgIGVtcHR5OiAn56m66IqC54K5IDEwMMOXMTAwJyxcbiAgICBmdWxsc2NyZWVuOiAn5YWo5bGP6aG177yI6ZO65ruh54i26IqC54K577yJJyxcbiAgICBwb3B1cDogJ+W8ueeql++8iOWxheS4rSA2MDDDlzQwMO+8iScsXG4gICAgbGlzdGl0ZW06ICfliJfooajpobnvvIg2MDDDlzgw77yM5qiq5ZCR6ZO65ruh77yJJyxcbn07XG5cbi8qKiBDb2NvcyDljovnvKkgVVVJRO+8iOiEmuacrOe7hOS7tiBjaWTvvInnmoTlvaLnirbvvJo1IOS9jSBoZXggKyAxOCDkvY0gYmFzZTY077yM5YWxIDIzIOWtl+espiAqL1xuZXhwb3J0IGNvbnN0IENPTVBSRVNTRURfVVVJRF9SRSA9IC9eWzAtOWEtZl17NX1bMC05YS16QS1aKy9dezE4fSQvO1xuXG4vKipcbiAqIOW3peS9nOWMuumHjOWtmOaUvuWFrOWFseaooeWdl+WMheeahOebruW9le+8iOebuOWvueW3peS9nOWMuuague+8ieOAglxuICpcbiAqICoq6L+Z5piv5byA5Y+R5pyf5omN5pyJ55qE5Lic6KW/KirvvJrlj6rmnInmnKzmoYbmnrboh6rlt7HnmoTku5PlupPph4zmiY3mnInlroPjgIJcbiAqIOaJqeWxleaYr+mdouWQkeS9v+eUqOiAheeahO+8jOaJgOS7peS4jeiDveWPquWHrVwi5b6A5LiK5om+5Yiw6L+Z5Liq55uu5b2VXCLlsLHlkK/nlKjmnKzlnLDlronoo4XmupAg4oCU4oCUXG4gKiDov5jopoHlhYjnoa7orqTpgqPkuKrmoLnnm67lvZXnoa7lrp7mmK/mnKzmoYbmnrbnmoTlt6XkvZzljLrvvIjop4EgV09SS1NQQUNFX1BBQ0tBR0VfTkFNRe+8ieOAglxuICovXG5leHBvcnQgY29uc3QgV09SS1NQQUNFX1NIQVJFRF9TVUJESVIgPSAncGFja2FnZXMvc2hhcmVkJztcblxuLyoqXG4gKiDmnKzmoYbmnrblt6XkvZzljLrmoLkgYHBhY2thZ2UuanNvbmAg55qEIG5hbWXjgIJcbiAqIOeUqOWug+adpeiupOWumlwi6L+Z5piv5qGG5p626Ieq5bex55qE5byA5Y+R5LuT5bqTXCIg4oCU4oCUIOi/meagt+eUqOaIt+W3peeoi+mHjOWNs+S9v+aBsOWlveaciVxuICogYHBhY2thZ2VzL3NoYXJlZGDvvIzkuZ/kuI3kvJrlhpLlh7pcIuacrOWcsOW3peS9nOWMulwi6L+Z56eN5Y+q5pyJ5byA5Y+R5pe25omN5oiQ56uL55qE5qaC5b+144CCXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLU1BBQ0VfUEFDS0FHRV9OQU1FID0gJ2NvY29zLWdhbWVmcmFtZXdvcmsnO1xuXG4vKipcbiAqIOWFrOWFseaooeWdl+WMheWcqOiHquW3sSBwYWNrYWdlLmpzb24g6YeM5omT55qE5qCH6K6wIGtleeOAglxuICog55SxIGB0b29scy9idWlsZC1zaGFyZWQuanNgIOWGmeWFpSDigJTigJQg5omp5bGV6Z2g5a6D6K+G5Yir5YWs5YWx5qih5Z2X77yMXG4gKiDogIzkuI3mmK/pnaDljIXlkI3ljLnphY3vvIhzY29wZSDov5jmsqHlrprvvIzop4EgUk9BRE1BUCDnmoQgUzFh77yJ44CCXG4gKi9cbmV4cG9ydCBjb25zdCBTSEFSRURfTU9EVUxFX01BUktFUiA9ICdjb2Nvc0dhbWVGcmFtZXdvcmsnO1xuXG4vKipcbiAqIOWFrOWFseaooeWdl+eahCoq5Y+R546w5YWz6ZSu6K+NKirvvJrmianlsZXpnaAgYG5wbSBzZWFyY2gga2V5d29yZHM6POWugz5gIOS7jiByZWdpc3RyeSDmib7lh7rmiYDmnInlhazlhbHmqKHlnZfjgIJcbiAqXG4gKiDkuLrku4DkuYjnlKjlhbPplK7or43ogIzkuI3mmK8gbnBtIHNjb3Bl77yaXG4gKiAtIHNjb3BlIOi/mOayoeWumu+8iFMxYe+8ie+8jOiAjOS4lCoq5pCc57SiIEFQSSDnmoQgYHNjb3BlOmAg6ZmQ5a6a56ym5a6e5rWL5peg5pWIKirvvIzogIwgYGtleXdvcmRzOmAg5piv57K+56Gu5Yy56YWN77ybXG4gKiAtIOS7peWQjuaNoiBzY29wZSDkuI3nlKjmlLnmianlsZXvvJvnp4HmnIkgcmVnaXN0cnkg5Lmf5piv5ZCM5LiA5aWX44CCXG4gKlxuICog4pqg77iPIOW/hemhu+S4jiBgdG9vbHMvYnVpbGQtc2hhcmVkLmpzYCDph4znmoQgRElTQ09WRVJZX0tFWVdPUkQg5LiA6Ie0IOKAlOKAlCDkuI3kuIDoh7Tml7bnmoTooajnjrDmmK9cbiAqIFwi5YiX6KGo5rC46L+c5piv56m655qEXCLov5nnp43pnZnpu5jmlYXpmpzvvIzmiYDku6XmnInmtYvor5Xnm6/nnYDvvIh0b29scy90ZXN0cy9kaXNjb3Zlcnkta2V5d29yZC50ZXN0Lmpz77yJ44CCXG4gKi9cbmV4cG9ydCBjb25zdCBESVNDT1ZFUllfS0VZV09SRCA9ICdjY2dmLXNoYXJlZCc7XG5cbi8qKiByZWdpc3RyeSDmkJzntKLnu5PmnpznvJPlrZjlpJrkuYXvvIjkuIDmrKHmkJzntKLlrp7mtYsgMX40IOenku+8jOS4jeiDveavj+asoeWIt+aWsOmdouadv+mDveWOu+aQnO+8iSAqL1xuZXhwb3J0IGNvbnN0IFJFR0lTVFJZX0NBQ0hFX01TID0gNSAqIDYwICogMTAwMDtcbiJdfQ==
|
package/dist/doctor.js
CHANGED
|
@@ -140,10 +140,12 @@ function listManagers(s) {
|
|
|
140
140
|
className: sub.slice(0, -'.ts'.length),
|
|
141
141
|
scriptFile: rel,
|
|
142
142
|
extendsSingleton: baseClass === 'ASingleton',
|
|
143
|
+
order: parseOrder(s.managerSources[rel]),
|
|
143
144
|
baseClass,
|
|
144
145
|
});
|
|
145
146
|
}
|
|
146
|
-
|
|
147
|
+
// 与运行期一致:order 升序;同 order 时按类名(运行期是脚本加载顺序,不确定)
|
|
148
|
+
return managers.sort((a, b) => { var _a, _b; return (((_a = a.order) !== null && _a !== void 0 ? _a : 0) - ((_b = b.order) !== null && _b !== void 0 ? _b : 0)) || a.className.localeCompare(b.className); });
|
|
147
149
|
}
|
|
148
150
|
/** 启动顺序预览:稳定排序后的实际执行序列 */
|
|
149
151
|
function buildOrderPlan(s) {
|
|
@@ -436,4 +438,4 @@ function checkDanglingScriptRefs(s, out) {
|
|
|
436
438
|
}
|
|
437
439
|
}
|
|
438
440
|
}
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2RvY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOztBQXNESCxrQ0FvQ0M7QUFHRCw4QkFvQ0M7QUFNRCxvQ0FzQkM7QUFHRCx3Q0FNQztBQU1ELDhCQW1CQztBQTdMRCwyQ0FNcUI7QUFHckIsTUFBTSxlQUFlLEdBQUcsd0JBQVksR0FBRyxHQUFHLENBQUM7QUFFM0MsbUVBQW1FO0FBQ25FLFNBQVMsYUFBYSxDQUFDLEdBQVc7SUFDOUIsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RGLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxJQUFZLEVBQUUsRUFBVTtJQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2pELENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFXO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCw4QkFBOEI7QUFDOUIsU0FBUyxZQUFZLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDM0MsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFD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QUFJLEdBQUc7Z0JBQ3BDLElBQUksRUFBRSx5Q0FBeUM7YUFDbEQsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDkvZPmo4DvvIhEb2N0b3LvvInvvJrmiormoYbmnrbnmoTnuqblrprlj5jmiJDlj6/mo4Dmn6XpobnjgIJcbiAqXG4gKiDmnKzmlofku7YqKuWPquaciee6r+WHveaVsCoq77ya6L6T5YWl5pivIGBJUHJvamVjdFNuYXBzaG90YO+8jOi+k+WHuuaYryBgSUZpbmRpbmdbXWDjgIJcbiAqIOS4jSBpbXBvcnQgZnMgLyBFZGl0b3LvvIzlm6DmraTlj6/ku6XooqvljZXmtYvnlKjkuIDku73miYvlhpnlv6vnhaflrozlhajopobnm5bjgIJcbiAqXG4gKiDkuLrku4DkuYjpnIDopoHlroPvvJrmianlsZXljp/mnKzlj6rlnKjigJzliJvlu7rpgqPkuIDliLvigJ3luK7lv5nvvIzkuYvlkI7miYDmnInnuqblrprpg73pnaDoh6rop4nvvJtcbiAqIOiAjOe6puWumuiiq+egtOWdj+WQjumAmuW4uOaYryoq6L+Q6KGM5pyf6Z2Z6buY5Ye66ZSZKirvvIjliqDovb3plJnpooTliLbkvZPjgIHlkK/liqjpobrluo/kuI3lr7njgIHohJrmnKzkuKLlpLHvvInvvIxcbiAqIOWumuS9jeaIkOacrOaegemrmOOAgui/memHjOaKiui/meexu+mXrumimOaPkOWJjeaatOmcsuWHuuadpeOAglxuICovXG5cbmltcG9ydCB7XG4gICAgQ09NUFJFU1NFRF9VVUlEX1JFLFxuICAgIEdBTUVQTEFZX0RJUixcbiAgICBNQU5BR0VSX0RJUixcbiAgICBWSUVXU19TVUJESVIsXG4gICAgVklFV19ERUZJTklUSU9OX1BBVEgsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IElGaW5kaW5nLCBJTWFuYWdlckluZm8sIElNb2R1bGVJbmZvLCBJT3JkZXJFbnRyeSwgSVByb2plY3RTbmFwc2hvdCwgSVZpZXdJbmZvIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEdBTUVQTEFZX1BSRUZJWCA9IEdBTUVQTEFZX0RJUiArICcvJztcblxuLyoqIOebuOWvueW3peeoi+aguSAtPiDnm7jlr7kgZ2FtZXBsYXkg55qE5a2Q6Lev5b6E77yI5LiNIGltcG9ydCBwcm9qZWN0LnRz77yM5L+d5oyB5pys5paH5Lu26Zu2IEkvTyDkvp3otZbvvIkgKi9cbmZ1bmN0aW9uIHVuZGVyR2FtZXBsYXkocmVsOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVsLnN0YXJ0c1dpdGgoR0FNRVBMQVlfUFJFRklYKSA/IHJlbC5zbGljZShHQU1FUExBWV9QUkVGSVgubGVuZ3RoKSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHBpY2sodGV4dDogc3RyaW5nLCByZTogUmVnRXhwKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbSA9IHRleHQubWF0Y2gocmUpO1xuICAgIHJldHVybiBtICYmIG1bMV0gIT09IHVuZGVmaW5lZCA/IG1bMV0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiBwb3NpeERpcihyZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaSA9IHJlbC5sYXN0SW5kZXhPZignLycpO1xuICAgIHJldHVybiBpIDwgMCA/ICcnIDogcmVsLnNsaWNlKDAsIGkpO1xufVxuXG4vKiogcG9zaXgg5b2S5LiA5YyW77yM5aSE55CGIGAuYCDkuI4gYC4uYCAqL1xuZnVuY3Rpb24gcG9zaXhSZXNvbHZlKGRpcjogc3RyaW5nLCBzcGVjOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG91dDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgKGRpciArICcvJyArIHNwZWMpLnNwbGl0KCcvJykpIHtcbiAgICAgICAgaWYgKHBhcnQgPT09ICcnIHx8IHBhcnQgPT09ICcuJykge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgICAgICAgIG91dC5wb3AoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG91dC5wdXNoKHBhcnQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0LmpvaW4oJy8nKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VPcmRlcih0ZXh0OiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCBtID0gdGV4dC5tYXRjaCgvb3JkZXJcXHMqOlxccyooXFxkKykvKTtcbiAgICByZXR1cm4gbSA/IHBhcnNlSW50KG1bMV0sIDEwKSA6IG51bGw7XG59XG5cbi8qKlxuICogZ2FtZXBsYXkg5LiL55qE5qih5Z2X5YiX6KGo44CCXG4gKiDmjpLluo/kuI7ov5DooYzmnJ/kuIDoh7TvvJpvcmRlciDljYfluo/vvJsqKuWQjCBvcmRlciDml7bmjInnm67lvZXlkI0qKu+8iOi/kOihjOacn+aYr+iEmuacrOWKoOi9vemhuuW6j++8jOS4jeehruWumu+8jFxuICog6Z2i5p2/5Lya5oqK4oCc5pKe5Y+34oCd5Y2V54us5qCH5Ye65p2l5o+Q6YaS77yJ44CCXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0TW9kdWxlcyhzOiBJUHJvamVjdFNuYXBzaG90KTogSU1vZHVsZUluZm9bXSB7XG4gICAgY29uc3QgbW9kdWxlczogSU1vZHVsZUluZm9bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZWwgb2YgT2JqZWN0LmtleXMocy5nYW1lcGxheVNvdXJjZXMpKSB7XG4gICAgICAgIGNvbnN0IHN1YiA9IHVuZGVyR2FtZXBsYXkocmVsKTtcbiAgICAgICAgaWYgKCFzdWIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnRzID0gc3ViLnNwbGl0KCcvJyk7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpciA9IHBhcnRzWzBdO1xuICAgICAgICBjb25zdCBmaWxlID0gcGFydHNbMV07XG4gICAgICAgIGlmICghZmlsZS5lbmRzV2l0aCgnTW9kdWxlLnRzJykgfHwgZmlsZSA9PT0gJ01vZHVsZS50cycpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IGZpbGUuc2xpY2UoMCwgLSdNb2R1bGUudHMnLmxlbmd0aCk7XG4gICAgICAgIGlmICghcHJlZml4KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RlbFJlbCA9IGAke0dBTUVQTEFZX0RJUn0vJHtkaXJ9LyR7cHJlZml4fU1vZGVsLnRzYDtcbiAgICAgICAgY29uc3QgZXZlbnRzUmVsID0gYCR7R0FNRVBMQVlfRElSfS8ke2Rpcn0vJHtwcmVmaXh9RXZlbnRzLnRzYDtcbiAgICAgICAgbW9kdWxlcy5wdXNoKHtcbiAgICAgICAgICAgIGRpcixcbiAgICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICAgIG1vZHVsZUZpbGU6IHJlbCxcbiAgICAgICAgICAgIG1vZGVsRmlsZTogcy5nYW1lcGxheVNvdXJjZXNbbW9kZWxSZWxdICE9PSB1bmRlZmluZWQgPyBtb2RlbFJlbCA6IG51bGwsXG4gICAgICAgICAgICBldmVudHNGaWxlOiBzLmdhbWVwbGF5U291cmNlc1tldmVudHNSZWxdICE9PSB1bmRlZmluZWQgPyBldmVudHNSZWwgOiBudWxsLFxuICAgICAgICAgICAgb3JkZXI6IHBhcnNlT3JkZXIocy5nYW1lcGxheVNvdXJjZXNbcmVsXSksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtb2R1bGVzLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApIHx8IGEuZGlyLmxvY2FsZUNvbXBhcmUoYi5kaXIpLFxuICAgICk7XG59XG5cbi8qKiBnYW1lcGxheS885qih5Z2XPi92aWV3cyDkuIvnmoQgVmlldyDliJfooaggKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0Vmlld3MoczogSVByb2plY3RTbmFwc2hvdCk6IElWaWV3SW5mb1tdIHtcbiAgICBjb25zdCB2aWV3czogSVZpZXdJbmZvW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcmVsIG9mIE9iamVjdC5rZXlzKHMuZ2FtZXBsYXlTb3VyY2VzKSkge1xuICAgICAgICBjb25zdCBzdWIgPSB1bmRlckdhbWVwbGF5KHJlbCk7XG4gICAgICAgIGlmICghc3ViKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0cyA9IHN1Yi5zcGxpdCgnLycpO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2R1bGVEaXIgPSBwYXJ0c1swXTtcbiAgICAgICAgaWYgKHBhcnRzWzFdICE9PSBWSUVXU19TVUJESVIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXJ0c1syXTtcbiAgICAgICAgaWYgKCFmaWxlLmVuZHNXaXRoKCdWaWV3LnRzJykgfHwgZmlsZSA9PT0gJ1ZpZXcudHMnKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0ID0gcy5nYW1lcGxheVNvdXJjZXNbcmVsXTtcbiAgICAgICAgdmlld3MucHVzaCh7XG4gICAgICAgICAgICBjbGFzc05hbWU6IGZpbGUuc2xpY2UoMCwgLScudHMnLmxlbmd0aCksXG4gICAgICAgICAgICBtb2R1bGVEaXIsXG4gICAgICAgICAgICBzY3JpcHRGaWxlOiByZWwsXG4gICAgICAgICAgICByZWdpc3RlcmVkTmFtZTogcGljayh0ZXh0LCAvbmFtZVxccyo6XFxzKltcIiddKFteXCInXSspW1wiJ10vKSxcbiAgICAgICAgICAgIHJlZ2lzdGVyZWRQYXRoOiBwaWNrKHRleHQsIC9wYXRoXFxzKjpcXHMqW1wiJ10oW15cIiddKilbXCInXS8pLFxuICAgICAgICAgICAgcmVnaXN0ZXJlZExheWVyOiBwaWNrKHRleHQsIC9sYXllclxccyo6XFxzKkVMYXllclxcLihcXHcrKS8pLFxuICAgICAgICAgICAgY2NjbGFzc05hbWU6IHBpY2sodGV4dCwgL2NjY2xhc3NcXChcXHMqW1wiJ10oW15cIiddKylbXCInXVxccypcXCkvKSxcbiAgICAgICAgICAgIGRlY2xhcmVkQ2xhc3M6IHBpY2sodGV4dCwgL2NsYXNzXFxzKyhcXHcrKVxccytleHRlbmRzXFxzK1ZpZXdcXGIvKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpZXdzLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PiBhLm1vZHVsZURpci5sb2NhbGVDb21wYXJlKGIubW9kdWxlRGlyKSB8fCBhLmNsYXNzTmFtZS5sb2NhbGVDb21wYXJlKGIuY2xhc3NOYW1lKSxcbiAgICApO1xufVxuXG4vKipcbiAqIG1hbmFnZXIg55uu5b2V5LiL55qE5YWo5bGA5Y2V5L6L5YiX6KGo44CCXG4gKiDlj6rnnIvnm67lvZXnm7TlsZ7nmoQgYCpNYW5hZ2VyLnRzYO+8iOS4jemAkuW9kuWtkOebruW9le+8ieOAglxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdE1hbmFnZXJzKHM6IElQcm9qZWN0U25hcHNob3QpOiBJTWFuYWdlckluZm9bXSB7XG4gICAgY29uc3QgcHJlZml4ID0gTUFOQUdFUl9ESVIgKyAnLyc7XG4gICAgY29uc3QgbWFuYWdlcnM6IElNYW5hZ2VySW5mb1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHJlbCBvZiBPYmplY3Qua2V5cyhzLm1hbmFnZXJTb3VyY2VzKSkge1xuICAgICAgICBpZiAoIXJlbC5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YiA9IHJlbC5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICAgICAgaWYgKHN1Yi5pbmNsdWRlcygnLycpIHx8ICFzdWIuZW5kc1dpdGgoJ01hbmFnZXIudHMnKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmFzZUNsYXNzID0gcGljayhzLm1hbmFnZXJTb3VyY2VzW3JlbF0sIC9jbGFzc1xccytcXHcrXFxzK2V4dGVuZHNcXHMrKFtcXHckLl0rKS8pO1xuICAgICAgICBtYW5hZ2Vycy5wdXNoKHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogc3ViLnNsaWNlKDAsIC0nLnRzJy5sZW5ndGgpLFxuICAgICAgICAgICAgc2NyaXB0RmlsZTogcmVsLFxuICAgICAgICAgICAgZXh0ZW5kc1NpbmdsZXRvbjogYmFzZUNsYXNzID09PSAnQVNpbmdsZXRvbicsXG4gICAgICAgICAgICBiYXNlQ2xhc3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYW5hZ2Vycy5zb3J0KChhLCBiKSA9PiBhLmNsYXNzTmFtZS5sb2NhbGVDb21wYXJlKGIuY2xhc3NOYW1lKSk7XG59XG5cbi8qKiDlkK/liqjpobrluo/pooTop4jvvJrnqLPlrprmjpLluo/lkI7nmoTlrp7pmYXmiafooYzluo/liJcgKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE9yZGVyUGxhbihzOiBJUHJvamVjdFNuYXBzaG90KTogSU9yZGVyRW50cnlbXSB7XG4gICAgcmV0dXJuIGxpc3RNb2R1bGVzKHMpLm1hcCgobSwgaSkgPT4gKHtcbiAgICAgICAgZGlyOiBtLmRpcixcbiAgICAgICAgb3JkZXI6IG0ub3JkZXIgPz8gMCxcbiAgICAgICAgc3RhcnRJbmRleDogaSArIDEsXG4gICAgfSkpO1xufVxuXG4vKipcbiAqIOi3keS4gOmBjeWFqOmDqOajgOafpeOAglxuICogQHBhcmFtIGV4cGVjdGVkTGF5ZXJzIOaJqeWxleS+p+iupOS4uuWQiOazleeahOWxgue6p++8iGNvbnN0YW50cy5MQVlFUlPvvInvvIznlKjkuo7lkozmoYbmnrYgRUxheWVyIOWvuei0plxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuRG9jdG9yKHM6IElQcm9qZWN0U25hcHNob3QsIGV4cGVjdGVkTGF5ZXJzOiByZWFkb25seSBzdHJpbmdbXSk6IElGaW5kaW5nW10ge1xuICAgIGNvbnN0IGZpbmRpbmdzOiBJRmluZGluZ1tdID0gW107XG4gICAgY29uc3QgbW9kdWxlcyA9IGxpc3RNb2R1bGVzKHMpO1xuICAgIGNvbnN0IHZpZXdzID0gbGlzdFZpZXdzKHMpO1xuXG4gICAgY2hlY2tMYXllcnMocywgZXhwZWN0ZWRMYXllcnMsIGZpbmRpbmdzKTtcbiAgICBjaGVja01vZHVsZXMocywgbW9kdWxlcywgZmluZGluZ3MpO1xuICAgIGNoZWNrTWFuYWdlcnMocywgZmluZGluZ3MpO1xuICAgIGNoZWNrVmlld3Mocywgdmlld3MsIG1vZHVsZXMsIGV4cGVjdGVkTGF5ZXJzLCBmaW5kaW5ncyk7XG4gICAgY2hlY2tJbXBvcnRzKHMsIGZpbmRpbmdzKTtcbiAgICBjaGVja0RhbmdsaW5nU2NyaXB0UmVmcyhzLCBmaW5kaW5ncyk7XG5cbiAgICBjb25zdCB3ZWlnaHQ6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IGVycm9yOiAwLCB3YXJuOiAxLCBpbmZvOiAyIH07XG4gICAgcmV0dXJuIGZpbmRpbmdzLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgd2VpZ2h0W2Euc2V2ZXJpdHldIC0gd2VpZ2h0W2Iuc2V2ZXJpdHldIHx8XG4gICAgICAgICAgICBhLnJ1bGUubG9jYWxlQ29tcGFyZShiLnJ1bGUpIHx8XG4gICAgICAgICAgICAoYS5maWxlID8/ICcnKS5sb2NhbGVDb21wYXJlKGIuZmlsZSA/PyAnJyksXG4gICAgKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSDlkITpobnmo4Dmn6UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiog5qGG5p62IEVMYXllciDkuI7mianlsZUgTEFZRVJTIOaYr+WQpuWQjOatpe+8iOa8j+aUueS4gOWkhOWwseaYr+KAnOS4i+aLieiDvemAieS9huS4u+i/m+eoi+aLkue7neKAne+8iSAqL1xuZnVuY3Rpb24gY2hlY2tMYXllcnMoczogSVByb2plY3RTbmFwc2hvdCwgZXhwZWN0ZWQ6IHJlYWRvbmx5IHN0cmluZ1tdLCBvdXQ6IElGaW5kaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlID0gVklFV19ERUZJTklUSU9OX1BBVEggKyAnLnRzJztcbiAgICBpZiAocy5mcmFtZXdvcmtMYXllcnMgPT09IG51bGwpIHtcbiAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICdpbmZvJyxcbiAgICAgICAgICAgIHJ1bGU6ICdsYXllcnMtdW5yZWFkYWJsZScsXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgbWVzc2FnZTogJ+ivu+S4jeWIsOahhuaetueahCBFTGF5ZXIg5a6a5LmJ77yM5bey6Lez6L+H5bGC57qn5ZCM5q2l5qOA5p+lJ1xuICAgICAgICAgICAgICAgICsgJ++8iOaWsOW3peeoi+mHjOahhuaetuaYryBucG0g5YyFIEBjY2dmL2ZyYW1ld29ya++8jOa6kOeggeS4jeWcqOW3peeoi+WGhSDigJTigJQg6L+Z5piv5q2j5bi455qE77yJJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHMuZnJhbWV3b3JrTGF5ZXJzLmpvaW4oJywnKSAhPT0gZXhwZWN0ZWQuam9pbignLCcpKSB7XG4gICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgcnVsZTogJ2xheWVycy1kcmlmdCcsXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICBg5qGG5p62IEVMYXllciDkuI7mianlsZUgTEFZRVJTIOS4jeS4gOiHtO+8mmAgK1xuICAgICAgICAgICAgICAgIGDmoYbmnrYgWyR7cy5mcmFtZXdvcmtMYXllcnMuam9pbignLCAnKX1d77yM5omp5bGVIFske2V4cGVjdGVkLmpvaW4oJywgJyl9XWAsXG4gICAgICAgICAgICBoaW50OiAn5Zyo5omp5bGV55qEIGNvbnN0YW50cy50cyDph4zliqDkuIDlsYIgTEFZRVJT77yI6Z2i5p2/5LiL5ouJ55Sx5Li76L+b56iL5LiL5Y+R77yM5pS56L+Z5LiA5aSE5Y2z5Y+v77yJJyxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKiog5qih5Z2X77yab3JkZXIg57y65aSxL+aSnuWPt+OAgU1vZGVsIOe8uuWksSAqL1xuZnVuY3Rpb24gY2hlY2tNb2R1bGVzKHM6IElQcm9qZWN0U25hcHNob3QsIG1vZHVsZXM6IElNb2R1bGVJbmZvW10sIG91dDogSUZpbmRpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGJ5T3JkZXIgPSBuZXcgTWFwPG51bWJlciwgSU1vZHVsZUluZm9bXT4oKTtcblxuICAgIGZvciAoY29uc3QgbSBvZiBtb2R1bGVzKSB7XG4gICAgICAgIGlmIChtLm9yZGVyID09PSBudWxsKSB7XG4gICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBydWxlOiAnbW9kdWxlLW9yZGVyLW1pc3NpbmcnLFxuICAgICAgICAgICAgICAgIGZpbGU6IG0ubW9kdWxlRmlsZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBg5qih5Z2XICR7bS5kaXJ9IOeahCBAUmVnaXN0ZXJNb2R1bGUg6YeM6Kej5p6Q5LiN5YiwIG9yZGVy77yM6L+Q6KGM5pyf5oyJIDAg5aSE55CGYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGJ5T3JkZXIuZ2V0KG0ub3JkZXIpID8/IFtdO1xuICAgICAgICAgICAgbGlzdC5wdXNoKG0pO1xuICAgICAgICAgICAgYnlPcmRlci5zZXQobS5vcmRlciwgbGlzdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobS5tb2RlbEZpbGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICdtb2R1bGUtbW9kZWwtbWlzc2luZycsXG4gICAgICAgICAgICAgICAgZmlsZTogbS5tb2R1bGVGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGDmqKHlnZcgJHttLmRpcn0g57y65bCRICR7bS5wcmVmaXh9TW9kZWwudHNgLFxuICAgICAgICAgICAgICAgIGhpbnQ6IGBAUmVnaXN0ZXJNb2R1bGUg55qEIG1vZGVsIOaMh+WQkeivpeaWh+S7tu+8jOe8uuWkseS8muWvvOiHtOi/kOihjOacn+aKpemUmWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW29yZGVyLCBsaXN0XSBvZiBieU9yZGVyKSB7XG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICdtb2R1bGUtb3JkZXItY29sbGlzaW9uJyxcbiAgICAgICAgICAgICAgICBmaWxlOiBsaXN0WzBdLm1vZHVsZUZpbGUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgYG9yZGVyPSR7b3JkZXJ9IOiiqyAke2xpc3QubGVuZ3RofSDkuKrmqKHlnZflkIzml7bkvb/nlKjvvJpgICtcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5tYXAoKG0pID0+IG0uZGlyKS5qb2luKCcgLyAnKSArXG4gICAgICAgICAgICAgICAgICAgICfvvIjlkIwgb3JkZXIg5pe25a6e6ZmF5ZCv5Yqo6aG65bqP5Y+W5Yaz5LqO6ISa5pys5Yqg6L296aG65bqP77yM5LiN56Gu5a6a77yJJyxcbiAgICAgICAgICAgICAgICBoaW50OiAn57uZ5YW25Lit5LiA5Liq5pS55oiQ5LiN5ZCM55qEIG9yZGVyJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogVmlld++8mumHjeWQjeOAgeWxgue6p+mdnuazleOAgXBhdGgg57y66aKE5Yi25L2T44CB6ISa5pys5pyq5oyC5Yiw6aKE5Yi25L2T44CB5ZG95ZCN5LiN5LiA6Ie044CB6ISx56a75qih5Z2XICovXG5mdW5jdGlvbiBjaGVja1ZpZXdzKFxuICAgIHM6IElQcm9qZWN0U25hcHNob3QsXG4gICAgdmlld3M6IElWaWV3SW5mb1tdLFxuICAgIG1vZHVsZXM6IElNb2R1bGVJbmZvW10sXG4gICAgZXhwZWN0ZWRMYXllcnM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICAgIG91dDogSUZpbmRpbmdbXSxcbik6IHZvaWQge1xuICAgIGNvbnN0IGtub3duTGF5ZXJzID0gcy5mcmFtZXdvcmtMYXllcnMgPz8gZXhwZWN0ZWRMYXllcnM7XG4gICAgY29uc3QgbW9kdWxlRGlycyA9IG5ldyBTZXQobW9kdWxlcy5tYXAoKG0pID0+IG0uZGlyKSk7XG4gICAgY29uc3QgYnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIElWaWV3SW5mb1tdPigpO1xuXG4gICAgZm9yIChjb25zdCB2IG9mIHZpZXdzKSB7XG4gICAgICAgIGlmICghbW9kdWxlRGlycy5oYXModi5tb2R1bGVEaXIpKSB7XG4gICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBydWxlOiAndmlldy13aXRob3V0LW1vZHVsZScsXG4gICAgICAgICAgICAgICAgZmlsZTogdi5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBWaWV3ICR7di5jbGFzc05hbWV9IOaJgOWxnuaooeWdlyAke3YubW9kdWxlRGlyfSDph4zmsqHmnIkgTW9kdWxlIOiEmuacrGAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOS4ieWkhOWQjeWtl+W/hemhu+S4gOiHtO+8mueUn+aIkOWZqOS/neivge+8jOaJi+aUueS8muegtOWdj1xuICAgICAgICBjb25zdCBuYW1lcyA9IFt2LmNsYXNzTmFtZSwgdi5yZWdpc3RlcmVkTmFtZSwgdi5jY2NsYXNzTmFtZSwgdi5kZWNsYXJlZENsYXNzXTtcbiAgICAgICAgaWYgKG5hbWVzLnNvbWUoKG4pID0+IG4gPT09IG51bGwpIHx8IG5ldyBTZXQobmFtZXMpLnNpemUgIT09IDEpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LW5hbWUtbWlzbWF0Y2gnLFxuICAgICAgICAgICAgICAgIGZpbGU6IHYuc2NyaXB0RmlsZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICBgVmlldyDlkI3np7DkuI3kuIDoh7TvvJrmlofku7blkI09JHt2LmNsYXNzTmFtZX0gYCArXG4gICAgICAgICAgICAgICAgICAgIGBAUmVnaXN0ZXJWaWV3Lm5hbWU9JHt2LnJlZ2lzdGVyZWROYW1lID8/ICco5pegKSd9IGAgK1xuICAgICAgICAgICAgICAgICAgICBgQGNjY2xhc3M9JHt2LmNjY2xhc3NOYW1lID8/ICco5pegKSd9IGAgK1xuICAgICAgICAgICAgICAgICAgICBg57G75ZCNPSR7di5kZWNsYXJlZENsYXNzID8/ICco5pegKSd9YCxcbiAgICAgICAgICAgICAgICBoaW50OiAnQFJlZ2lzdGVyVmlldyDmjInnsbvlkI3mn6Xmib7lhYPkv6Hmga/vvIzkuI3kuIDoh7TkvJrliqDovb3plJnpooTliLbkvZPmiJbmib7kuI3liLAnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDlsYLnuqflv4XpobvlnKjmoYbmnrYgRUxheWVyIOmHjFxuICAgICAgICBpZiAodi5yZWdpc3RlcmVkTGF5ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LWxheWVyLW1pc3NpbmcnLFxuICAgICAgICAgICAgICAgIGZpbGU6IHYuc2NyaXB0RmlsZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVmlldyAke3YuY2xhc3NOYW1lfSDop6PmnpDkuI3liLAgbGF5ZXJgLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWtub3duTGF5ZXJzLmluY2x1ZGVzKHYucmVnaXN0ZXJlZExheWVyKSkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LWxheWVyLWludmFsaWQnLFxuICAgICAgICAgICAgICAgIGZpbGU6IHYuc2NyaXB0RmlsZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICBgVmlldyAke3YuY2xhc3NOYW1lfSDnmoQgbGF5ZXI9RUxheWVyLiR7di5yZWdpc3RlcmVkTGF5ZXJ9IOS4jeWcqOahhuaetuWxgue6p+mHjGAgK1xuICAgICAgICAgICAgICAgICAgICBg77yI5ZCI5rOV5YC877yaJHtrbm93bkxheWVycy5qb2luKCcsICcpfe+8iWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHBhdGgg5b+F6aG76IO95a+55LiK55yf5a6e6aKE5Yi25L2TXG4gICAgICAgIGlmICh2LnJlZ2lzdGVyZWRQYXRoID09PSBudWxsKSB7XG4gICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBydWxlOiAndmlldy1wYXRoLW1pc3NpbmcnLFxuICAgICAgICAgICAgICAgIGZpbGU6IHYuc2NyaXB0RmlsZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVmlldyAke3YuY2xhc3NOYW1lfSDop6PmnpDkuI3liLAgcGF0aGAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHByZWZhYlJlbCA9IHMucHJlZmFic0J5UmVzb3VyY2VQYXRoW3YucmVnaXN0ZXJlZFBhdGhdO1xuICAgICAgICAgICAgaWYgKCFwcmVmYWJSZWwpIHtcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICBydWxlOiAndmlldy1wYXRoLW5vdC1mb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIGZpbGU6IHYuc2NyaXB0RmlsZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFZpZXcgJHt2LmNsYXNzTmFtZX0g55qEIHBhdGg9XCIke3YucmVnaXN0ZXJlZFBhdGh9XCIg5om+5LiN5Yiw5a+55bqU6aKE5Yi25L2TYCxcbiAgICAgICAgICAgICAgICAgICAgaGludDogYOacn+acmyBhc3NldHMvcmVzb3VyY2VzLyR7di5yZWdpc3RlcmVkUGF0aH0ucHJlZmFiYCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g6aKE5Yi25L2T6YeM5b+F6aG75oyC552A6L+Z5LiqIFZpZXcg6ISa5pys77yI5ZCm5YiZ6L+Q6KGM5pyf6IqC54K55LiK5rKh5pyJ57uE5Lu277yJXG4gICAgICAgICAgICAgICAgY29uc3QgY2lkID0gcy5zY3JpcHRDaWRzW3Yuc2NyaXB0RmlsZV07XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dCA9IHMuc2VyaWFsaXplZFtwcmVmYWJSZWxdID8/ICcnO1xuICAgICAgICAgICAgICAgIGlmIChjaWQgJiYgIXRleHQuaW5jbHVkZXMoY2lkKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LXNjcmlwdC1ub3QtbW91bnRlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOiBwcmVmYWJSZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBg6aKE5Yi25L2T6YeM5rKh5pyJ5oyCICR7di5jbGFzc05hbWV9IOiEmuacrO+8iGNpZCAke2NpZH3vvIlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGludDogJ+WcqOe8lui+keWZqOmHjOaKiuiEmuacrOaLluWbnumihOWItuS9k+agueiKgueCue+8jOaIluWIoOaOiemHjeW7uui/meS4qiBWaWV3JyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5ID0gdi5yZWdpc3RlcmVkTmFtZSA/PyB2LmNsYXNzTmFtZTtcbiAgICAgICAgY29uc3QgbGlzdCA9IGJ5TmFtZS5nZXQoa2V5KSA/PyBbXTtcbiAgICAgICAgbGlzdC5wdXNoKHYpO1xuICAgICAgICBieU5hbWUuc2V0KGtleSwgbGlzdCk7XG4gICAgfVxuXG4gICAgLy8g6Leo5qih5Z2X6YeN5ZCN77yaVmlld0luZm9MaXN0IOaYr+WFqOWxgOeahOOAgeaMieWQjeWtl+WPluesrOS4gOS4quWMuemFjSDihpIg5Lya5Yqg6L296ZSZ6aKE5Yi25L2TXG4gICAgZm9yIChjb25zdCBbbmFtZSwgbGlzdF0gb2YgYnlOYW1lKSB7XG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBydWxlOiAndmlldy1kdXBsaWNhdGUtbmFtZScsXG4gICAgICAgICAgICAgICAgZmlsZTogbGlzdFswXS5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIGBWaWV3IOWQjeWtlyBcIiR7bmFtZX1cIiDlnKjlpJrkuKrmqKHlnZfph4zph43lpI3vvJpgICtcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5tYXAoKHYpID0+IGAke3YubW9kdWxlRGlyfS8ke3YuY2xhc3NOYW1lfWApLmpvaW4oJyAvICcpLFxuICAgICAgICAgICAgICAgIGhpbnQ6ICdWaWV3TWFuYWdlciDmjInnsbvlkI3lhajlsYDmn6Xmib7vvIzlhYjms6jlhoznmoTkvJrotaLvvIzpgJrluLjlr7zoh7TliqDovb3plJnpooTliLbkvZMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiBtYW5hZ2VyIOaYr+WQpumDvee7p+aJv+ahhuaetueahCBBU2luZ2xldG9uICovXG5mdW5jdGlvbiBjaGVja01hbmFnZXJzKHM6IElQcm9qZWN0U25hcHNob3QsIG91dDogSUZpbmRpbmdbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbSBvZiBsaXN0TWFuYWdlcnMocykpIHtcbiAgICAgICAgaWYgKG0uZXh0ZW5kc1NpbmdsZXRvbikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgIHJ1bGU6ICdtYW5hZ2VyLW5vdC1zaW5nbGV0b24nLFxuICAgICAgICAgICAgZmlsZTogbS5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgbWVzc2FnZTogbS5iYXNlQ2xhc3NcbiAgICAgICAgICAgICAgICA/IGAke20uY2xhc3NOYW1lfSDnu6fmib/nmoTmmK8gJHttLmJhc2VDbGFzc33vvIzkuI3mmK/moYbmnrbnmoQgQVNpbmdsZXRvbmBcbiAgICAgICAgICAgICAgICA6IGAke20uY2xhc3NOYW1lfSDmsqHmnIkgZXh0ZW5kcyBBU2luZ2xldG9uYCxcbiAgICAgICAgICAgIGhpbnQ6ICdtYW5hZ2VyIOe6puWumue7p+aJvyBBU2luZ2xldG9u77yM55SoIFh4eE1hbmFnZXIuZ2V0SW5zdGFuY2UoKSDlj5blrp7kvosnLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKiDnm7jlr7nlr7zlhaXmmK/lkKbop6PmnpDlvpfliLDmlofku7bvvIjnlJ/miJDohJrmnKzpnaAgYC4uLy4uL2DjgIFgLi4vLi4vLi4vYCDkuIrmuq/vvIzmjaLmt7HluqblsLHkvJrlhajplJnvvIkgKi9cbmZ1bmN0aW9uIGNoZWNrSW1wb3J0cyhzOiBJUHJvamVjdFNuYXBzaG90LCBvdXQ6IElGaW5kaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBhbGwgPSBuZXcgU2V0KHMuYWxsU2NyaXB0RmlsZXMpO1xuXG4gICAgLy8gZ2FtZXBsYXkg5LiOIG1hbmFnZXIg6YO96KaB5p+l44CC5ZCI5bm25oiQ5LiA5byg6KGoIOKAlOKAlCDlj6rlkIjlubYga2V5IOWNtOS7jumUmeivr+eahOihqOmHjOWPluaWh+acrO+8jFxuICAgIC8vIOS8muiuqSBtYW5hZ2VyIOeahOWvvOWFpeajgOafpeiiq+mdmem7mOi3s+i/h++8iHVuZGVmaW5lZC5tYXRjaCDkuI3miqXplJnjgIHlj6rmmK/msLjkuI3ljLnphY3vvInjgIJcbiAgICBjb25zdCBzb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgZm9yIChjb25zdCByZWwgb2YgT2JqZWN0LmtleXMocy5nYW1lcGxheVNvdXJjZXMpKSB7XG4gICAgICAgIHNvdXJjZXNbcmVsXSA9IHMuZ2FtZXBsYXlTb3VyY2VzW3JlbF07XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVsIG9mIE9iamVjdC5rZXlzKHMubWFuYWdlclNvdXJjZXMpKSB7XG4gICAgICAgIHNvdXJjZXNbcmVsXSA9IHMubWFuYWdlclNvdXJjZXNbcmVsXTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlbCBvZiBPYmplY3Qua2V5cyhzb3VyY2VzKSkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gc291cmNlc1tyZWxdO1xuICAgICAgICBjb25zdCBkaXIgPSBwb3NpeERpcihyZWwpO1xuICAgICAgICBjb25zdCByZSA9IC9mcm9tXFxzK1tcIiddKFxcLlteXCInXSopW1wiJ10vZztcbiAgICAgICAgbGV0IG06IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgICAgIHdoaWxlICgobSA9IHJlLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzcGVjID0gbVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBwb3NpeFJlc29sdmUoZGlyLCBzcGVjKTtcbiAgICAgICAgICAgIGlmICghYWxsLmhhcyhiYXNlICsgJy50cycpICYmICFhbGwuaGFzKGJhc2UgKyAnL2luZGV4LnRzJykpIHtcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICBydWxlOiAnaW1wb3J0LWJyb2tlbicsXG4gICAgICAgICAgICAgICAgICAgIGZpbGU6IHJlbCxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYOebuOWvueWvvOWFpSAke3NwZWN9IOino+aekOS4jeWIsOaWh+S7tmAsXG4gICAgICAgICAgICAgICAgICAgIGhpbnQ6IGDmnJ/mnJsgJHtiYXNlfS50c2AsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiDlnLrmma8v6aKE5Yi25L2T6YeM5piv5ZCm5byV55So5LqG5bey5LiN5a2Y5Zyo55qE6ISa5pys77yI5Yig6ISa5pys5ZCO6YGX55WZ55qE5oKs56m657uE5Lu277yJICovXG5mdW5jdGlvbiBjaGVja0RhbmdsaW5nU2NyaXB0UmVmcyhzOiBJUHJvamVjdFNuYXBzaG90LCBvdXQ6IElGaW5kaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBrbm93bkNpZHMgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMocy5zY3JpcHRDaWRzKSk7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCByZWwgb2YgT2JqZWN0LmtleXMocy5zZXJpYWxpemVkKSkge1xuICAgICAgICBsZXQgbGlzdDogdW5rbm93bjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxpc3QgPSBKU09OLnBhcnNlKHMuc2VyaWFsaXplZFtyZWxdKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgcnVsZTogJ3NlcmlhbGl6ZWQtdW5wYXJzYWJsZScsXG4gICAgICAgICAgICAgICAgZmlsZTogcmVsLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfotYTmupDkuI3mmK/lkIjms5UgSlNPTu+8jOi3s+i/h+aCrOepuuW8leeUqOajgOafpScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBvYmogb2YgbGlzdCkge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyA/IChvYmogYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLl9fdHlwZV9fIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycgfHwgIUNPTVBSRVNTRURfVVVJRF9SRS50ZXN0KHR5cGUpIHx8IGtub3duQ2lkcy5oYXModHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHJlbCArICd8JyArIHR5cGU7XG4gICAgICAgICAgICBpZiAoc2Vlbi5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Vlbi5hZGQoa2V5KTtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICdkYW5nbGluZy1zY3JpcHQtcmVmJyxcbiAgICAgICAgICAgICAgICBmaWxlOiByZWwsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYOW8leeUqOS6huW3suS4jeWtmOWcqOeahOiEmuacrOe7hOS7tu+8iGNpZCAke3R5cGV977yJYCxcbiAgICAgICAgICAgICAgICBoaW50OiAn6K+l6ISa5pys5Y+v6IO95bey6KKr5Yig6Zmk77yb5Zyo57yW6L6R5Zmo6YeM5riF5o6J6L+Z5Liq57uE5Lu277yM5ZCm5YiZ5o6n5Yi25Y+w5Lya5oyB57ut5oqlIG1pc3NpbmcnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2RvY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOztBQXNESCxrQ0FvQ0M7QUFHRCw4QkFvQ0M7QUFNRCxvQ0F3QkM7QUFHRCx3Q0FNQztBQU1ELDhCQW1CQztBQS9MRCwyQ0FNcUI7QUFHckIsTUFBTSxlQUFlLEdBQUcsd0JBQVksR0FBRyxHQUFHLENBQUM7QUFFM0MsbUVBQW1FO0FBQ25FLFNBQVMsYUFBYSxDQUFDLEdBQVc7SUFDOUIsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RGLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxJQUFZLEVBQUUsRUFBVTtJQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2pELENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFXO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCw4QkFBOEI7QUFDOUIsU0FBUyxZQUFZLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDM0MsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFD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QUMsRUFBRSxDQUFDO2dCQUNoQixTQUFTO1lBQ2IsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNMLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixJQUFJLEVBQUUsR0FBRztnQkFDVCxPQUFPLEVBQUUsb0JBQW9CLElBQUksR0FBRztnQkFDcEMsSUFBSSxFQUFFLHlDQUF5QzthQUNsRCxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOS9k+ajgO+8iERvY3Rvcu+8ie+8muaKiuahhuaetueahOe6puWumuWPmOaIkOWPr+ajgOafpemhueOAglxuICpcbiAqIOacrOaWh+S7tioq5Y+q5pyJ57qv5Ye95pWwKirvvJrovpPlhaXmmK8gYElQcm9qZWN0U25hcHNob3Rg77yM6L6T5Ye65pivIGBJRmluZGluZ1tdYOOAglxuICog5LiNIGltcG9ydCBmcyAvIEVkaXRvcu+8jOWboOatpOWPr+S7peiiq+WNlea1i+eUqOS4gOS7veaJi+WGmeW/q+eFp+WujOWFqOimhuebluOAglxuICpcbiAqIOS4uuS7gOS5iOmcgOimgeWug++8muaJqeWxleWOn+acrOWPquWcqOKAnOWIm+W7uumCo+S4gOWIu+KAneW4ruW/me+8jOS5i+WQjuaJgOaciee6puWumumDvemdoOiHquinie+8m1xuICog6ICM57qm5a6a6KKr56C05Z2P5ZCO6YCa5bi45pivKirov5DooYzmnJ/pnZnpu5jlh7rplJkqKu+8iOWKoOi9vemUmemihOWItuS9k+OAgeWQr+WKqOmhuuW6j+S4jeWvueOAgeiEmuacrOS4ouWkse+8ie+8jFxuICog5a6a5L2N5oiQ5pys5p6B6auY44CC6L+Z6YeM5oqK6L+Z57G76Zeu6aKY5o+Q5YmN5pq06Zyy5Ye65p2l44CCXG4gKi9cblxuaW1wb3J0IHtcbiAgICBDT01QUkVTU0VEX1VVSURfUkUsXG4gICAgR0FNRVBMQVlfRElSLFxuICAgIE1BTkFHRVJfRElSLFxuICAgIFZJRVdTX1NVQkRJUixcbiAgICBWSUVXX0RFRklOSVRJT05fUEFUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSUZpbmRpbmcsIElNYW5hZ2VySW5mbywgSU1vZHVsZUluZm8sIElPcmRlckVudHJ5LCBJUHJvamVjdFNuYXBzaG90LCBJVmlld0luZm8gfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgR0FNRVBMQVlfUFJFRklYID0gR0FNRVBMQVlfRElSICsgJy8nO1xuXG4vKiog55u45a+55bel56iL5qC5IC0+IOebuOWvuSBnYW1lcGxheSDnmoTlrZDot6/lvoTvvIjkuI0gaW1wb3J0IHByb2plY3QudHPvvIzkv53mjIHmnKzmlofku7bpm7YgSS9PIOS+nei1lu+8iSAqL1xuZnVuY3Rpb24gdW5kZXJHYW1lcGxheShyZWw6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiByZWwuc3RhcnRzV2l0aChHQU1FUExBWV9QUkVGSVgpID8gcmVsLnNsaWNlKEdBTUVQTEFZX1BSRUZJWC5sZW5ndGgpIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcGljayh0ZXh0OiBzdHJpbmcsIHJlOiBSZWdFeHApOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBtID0gdGV4dC5tYXRjaChyZSk7XG4gICAgcmV0dXJuIG0gJiYgbVsxXSAhPT0gdW5kZWZpbmVkID8gbVsxXSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHBvc2l4RGlyKHJlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBpID0gcmVsLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgcmV0dXJuIGkgPCAwID8gJycgOiByZWwuc2xpY2UoMCwgaSk7XG59XG5cbi8qKiBwb3NpeCDlvZLkuIDljJbvvIzlpITnkIYgYC5gIOS4jiBgLi5gICovXG5mdW5jdGlvbiBwb3NpeFJlc29sdmUoZGlyOiBzdHJpbmcsIHNwZWM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcGFydCBvZiAoZGlyICsgJy8nICsgc3BlYykuc3BsaXQoJy8nKSkge1xuICAgICAgICBpZiAocGFydCA9PT0gJycgfHwgcGFydCA9PT0gJy4nKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgICAgICAgb3V0LnBvcCgpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2gocGFydCk7XG4gICAgfVxuICAgIHJldHVybiBvdXQuam9pbignLycpO1xufVxuXG5mdW5jdGlvbiBwYXJzZU9yZGVyKHRleHQ6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IG0gPSB0ZXh0Lm1hdGNoKC9vcmRlclxccyo6XFxzKihcXGQrKS8pO1xuICAgIHJldHVybiBtID8gcGFyc2VJbnQobVsxXSwgMTApIDogbnVsbDtcbn1cblxuLyoqXG4gKiBnYW1lcGxheSDkuIvnmoTmqKHlnZfliJfooajjgIJcbiAqIOaOkuW6j+S4jui/kOihjOacn+S4gOiHtO+8mm9yZGVyIOWNh+W6j++8myoq5ZCMIG9yZGVyIOaXtuaMieebruW9leWQjSoq77yI6L+Q6KGM5pyf5piv6ISa5pys5Yqg6L296aG65bqP77yM5LiN56Gu5a6a77yMXG4gKiDpnaLmnb/kvJrmiorigJzmkp7lj7figJ3ljZXni6zmoIflh7rmnaXmj5DphpLvvInjgIJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RNb2R1bGVzKHM6IElQcm9qZWN0U25hcHNob3QpOiBJTW9kdWxlSW5mb1tdIHtcbiAgICBjb25zdCBtb2R1bGVzOiBJTW9kdWxlSW5mb1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHJlbCBvZiBPYmplY3Qua2V5cyhzLmdhbWVwbGF5U291cmNlcykpIHtcbiAgICAgICAgY29uc3Qgc3ViID0gdW5kZXJHYW1lcGxheShyZWwpO1xuICAgICAgICBpZiAoIXN1Yikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFydHMgPSBzdWIuc3BsaXQoJy8nKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlyID0gcGFydHNbMF07XG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXJ0c1sxXTtcbiAgICAgICAgaWYgKCFmaWxlLmVuZHNXaXRoKCdNb2R1bGUudHMnKSB8fCBmaWxlID09PSAnTW9kdWxlLnRzJykge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJlZml4ID0gZmlsZS5zbGljZSgwLCAtJ01vZHVsZS50cycubGVuZ3RoKTtcbiAgICAgICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsUmVsID0gYCR7R0FNRVBMQVlfRElSfS8ke2Rpcn0vJHtwcmVmaXh9TW9kZWwudHNgO1xuICAgICAgICBjb25zdCBldmVudHNSZWwgPSBgJHtHQU1FUExBWV9ESVJ9LyR7ZGlyfS8ke3ByZWZpeH1FdmVudHMudHNgO1xuICAgICAgICBtb2R1bGVzLnB1c2goe1xuICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgcHJlZml4LFxuICAgICAgICAgICAgbW9kdWxlRmlsZTogcmVsLFxuICAgICAgICAgICAgbW9kZWxGaWxlOiBzLmdhbWVwbGF5U291cmNlc1ttb2RlbFJlbF0gIT09IHVuZGVmaW5lZCA/IG1vZGVsUmVsIDogbnVsbCxcbiAgICAgICAgICAgIGV2ZW50c0ZpbGU6IHMuZ2FtZXBsYXlTb3VyY2VzW2V2ZW50c1JlbF0gIT09IHVuZGVmaW5lZCA/IGV2ZW50c1JlbCA6IG51bGwsXG4gICAgICAgICAgICBvcmRlcjogcGFyc2VPcmRlcihzLmdhbWVwbGF5U291cmNlc1tyZWxdKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZXMuc29ydChcbiAgICAgICAgKGEsIGIpID0+IChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCkgfHwgYS5kaXIubG9jYWxlQ29tcGFyZShiLmRpciksXG4gICAgKTtcbn1cblxuLyoqIGdhbWVwbGF5LzzmqKHlnZc+L3ZpZXdzIOS4i+eahCBWaWV3IOWIl+ihqCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RWaWV3cyhzOiBJUHJvamVjdFNuYXBzaG90KTogSVZpZXdJbmZvW10ge1xuICAgIGNvbnN0IHZpZXdzOiBJVmlld0luZm9bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZWwgb2YgT2JqZWN0LmtleXMocy5nYW1lcGxheVNvdXJjZXMpKSB7XG4gICAgICAgIGNvbnN0IHN1YiA9IHVuZGVyR2FtZXBsYXkocmVsKTtcbiAgICAgICAgaWYgKCFzdWIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnRzID0gc3ViLnNwbGl0KCcvJyk7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZHVsZURpciA9IHBhcnRzWzBdO1xuICAgICAgICBpZiAocGFydHNbMV0gIT09IFZJRVdTX1NVQkRJUikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZSA9IHBhcnRzWzJdO1xuICAgICAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJ1ZpZXcudHMnKSB8fCBmaWxlID09PSAnVmlldy50cycpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRleHQgPSBzLmdhbWVwbGF5U291cmNlc1tyZWxdO1xuICAgICAgICB2aWV3cy5wdXNoKHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogZmlsZS5zbGljZSgwLCAtJy50cycubGVuZ3RoKSxcbiAgICAgICAgICAgIG1vZHVsZURpcixcbiAgICAgICAgICAgIHNjcmlwdEZpbGU6IHJlbCxcbiAgICAgICAgICAgIHJlZ2lzdGVyZWROYW1lOiBwaWNrKHRleHQsIC9uYW1lXFxzKjpcXHMqW1wiJ10oW15cIiddKylbXCInXS8pLFxuICAgICAgICAgICAgcmVnaXN0ZXJlZFBhdGg6IHBpY2sodGV4dCwgL3BhdGhcXHMqOlxccypbXCInXShbXlwiJ10qKVtcIiddLyksXG4gICAgICAgICAgICByZWdpc3RlcmVkTGF5ZXI6IHBpY2sodGV4dCwgL2xheWVyXFxzKjpcXHMqRUxheWVyXFwuKFxcdyspLyksXG4gICAgICAgICAgICBjY2NsYXNzTmFtZTogcGljayh0ZXh0LCAvY2NjbGFzc1xcKFxccypbXCInXShbXlwiJ10rKVtcIiddXFxzKlxcKS8pLFxuICAgICAgICAgICAgZGVjbGFyZWRDbGFzczogcGljayh0ZXh0LCAvY2xhc3NcXHMrKFxcdyspXFxzK2V4dGVuZHNcXHMrVmlld1xcYi8pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlld3Muc29ydChcbiAgICAgICAgKGEsIGIpID0+IGEubW9kdWxlRGlyLmxvY2FsZUNvbXBhcmUoYi5tb2R1bGVEaXIpIHx8IGEuY2xhc3NOYW1lLmxvY2FsZUNvbXBhcmUoYi5jbGFzc05hbWUpLFxuICAgICk7XG59XG5cbi8qKlxuICogbWFuYWdlciDnm67lvZXkuIvnmoTlhajlsYDljZXkvovliJfooajjgIJcbiAqIOWPqueci+ebruW9leebtOWxnueahCBgKk1hbmFnZXIudHNg77yI5LiN6YCS5b2S5a2Q55uu5b2V77yJ44CCXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0TWFuYWdlcnMoczogSVByb2plY3RTbmFwc2hvdCk6IElNYW5hZ2VySW5mb1tdIHtcbiAgICBjb25zdCBwcmVmaXggPSBNQU5BR0VSX0RJUiArICcvJztcbiAgICBjb25zdCBtYW5hZ2VyczogSU1hbmFnZXJJbmZvW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcmVsIG9mIE9iamVjdC5rZXlzKHMubWFuYWdlclNvdXJjZXMpKSB7XG4gICAgICAgIGlmICghcmVsLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3ViID0gcmVsLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgICAgICBpZiAoc3ViLmluY2x1ZGVzKCcvJykgfHwgIXN1Yi5lbmRzV2l0aCgnTWFuYWdlci50cycpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiYXNlQ2xhc3MgPSBwaWNrKHMubWFuYWdlclNvdXJjZXNbcmVsXSwgL2NsYXNzXFxzK1xcdytcXHMrZXh0ZW5kc1xccysoW1xcdyQuXSspLyk7XG4gICAgICAgIG1hbmFnZXJzLnB1c2goe1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBzdWIuc2xpY2UoMCwgLScudHMnLmxlbmd0aCksXG4gICAgICAgICAgICBzY3JpcHRGaWxlOiByZWwsXG4gICAgICAgICAgICBleHRlbmRzU2luZ2xldG9uOiBiYXNlQ2xhc3MgPT09ICdBU2luZ2xldG9uJyxcbiAgICAgICAgICAgIG9yZGVyOiBwYXJzZU9yZGVyKHMubWFuYWdlclNvdXJjZXNbcmVsXSksXG4gICAgICAgICAgICBiYXNlQ2xhc3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIOS4jui/kOihjOacn+S4gOiHtO+8mm9yZGVyIOWNh+W6j++8m+WQjCBvcmRlciDml7bmjInnsbvlkI3vvIjov5DooYzmnJ/mmK/ohJrmnKzliqDovb3pobrluo/vvIzkuI3noa7lrprvvIlcbiAgICByZXR1cm4gbWFuYWdlcnMuc29ydCgoYSwgYikgPT4gKChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCkpIHx8IGEuY2xhc3NOYW1lLmxvY2FsZUNvbXBhcmUoYi5jbGFzc05hbWUpKTtcbn1cblxuLyoqIOWQr+WKqOmhuuW6j+mihOiniO+8mueos+WumuaOkuW6j+WQjueahOWunumZheaJp+ihjOW6j+WIlyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkT3JkZXJQbGFuKHM6IElQcm9qZWN0U25hcHNob3QpOiBJT3JkZXJFbnRyeVtdIHtcbiAgICByZXR1cm4gbGlzdE1vZHVsZXMocykubWFwKChtLCBpKSA9PiAoe1xuICAgICAgICBkaXI6IG0uZGlyLFxuICAgICAgICBvcmRlcjogbS5vcmRlciA/PyAwLFxuICAgICAgICBzdGFydEluZGV4OiBpICsgMSxcbiAgICB9KSk7XG59XG5cbi8qKlxuICog6LeR5LiA6YGN5YWo6YOo5qOA5p+l44CCXG4gKiBAcGFyYW0gZXhwZWN0ZWRMYXllcnMg5omp5bGV5L6n6K6k5Li65ZCI5rOV55qE5bGC57qn77yIY29uc3RhbnRzLkxBWUVSU++8ie+8jOeUqOS6juWSjOahhuaetiBFTGF5ZXIg5a+56LSmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Eb2N0b3IoczogSVByb2plY3RTbmFwc2hvdCwgZXhwZWN0ZWRMYXllcnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogSUZpbmRpbmdbXSB7XG4gICAgY29uc3QgZmluZGluZ3M6IElGaW5kaW5nW10gPSBbXTtcbiAgICBjb25zdCBtb2R1bGVzID0gbGlzdE1vZHVsZXMocyk7XG4gICAgY29uc3Qgdmlld3MgPSBsaXN0Vmlld3Mocyk7XG5cbiAgICBjaGVja0xheWVycyhzLCBleHBlY3RlZExheWVycywgZmluZGluZ3MpO1xuICAgIGNoZWNrTW9kdWxlcyhzLCBtb2R1bGVzLCBmaW5kaW5ncyk7XG4gICAgY2hlY2tNYW5hZ2VycyhzLCBmaW5kaW5ncyk7XG4gICAgY2hlY2tWaWV3cyhzLCB2aWV3cywgbW9kdWxlcywgZXhwZWN0ZWRMYXllcnMsIGZpbmRpbmdzKTtcbiAgICBjaGVja0ltcG9ydHMocywgZmluZGluZ3MpO1xuICAgIGNoZWNrRGFuZ2xpbmdTY3JpcHRSZWZzKHMsIGZpbmRpbmdzKTtcblxuICAgIGNvbnN0IHdlaWdodDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHsgZXJyb3I6IDAsIHdhcm46IDEsIGluZm86IDIgfTtcbiAgICByZXR1cm4gZmluZGluZ3Muc29ydChcbiAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICB3ZWlnaHRbYS5zZXZlcml0eV0gLSB3ZWlnaHRbYi5zZXZlcml0eV0gfHxcbiAgICAgICAgICAgIGEucnVsZS5sb2NhbGVDb21wYXJlKGIucnVsZSkgfHxcbiAgICAgICAgICAgIChhLmZpbGUgPz8gJycpLmxvY2FsZUNvbXBhcmUoYi5maWxlID8/ICcnKSxcbiAgICApO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIOWQhOmhueajgOafpSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiDmoYbmnrYgRUxheWVyIOS4juaJqeWxlSBMQVlFUlMg5piv5ZCm5ZCM5q2l77yI5ryP5pS55LiA5aSE5bCx5piv4oCc5LiL5ouJ6IO96YCJ5L2G5Li76L+b56iL5ouS57ud4oCd77yJICovXG5mdW5jdGlvbiBjaGVja0xheWVycyhzOiBJUHJvamVjdFNuYXBzaG90LCBleHBlY3RlZDogcmVhZG9ubHkgc3RyaW5nW10sIG91dDogSUZpbmRpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBWSUVXX0RFRklOSVRJT05fUEFUSCArICcudHMnO1xuICAgIGlmIChzLmZyYW1ld29ya0xheWVycyA9PT0gbnVsbCkge1xuICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2luZm8nLFxuICAgICAgICAgICAgcnVsZTogJ2xheWVycy11bnJlYWRhYmxlJyxcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBtZXNzYWdlOiAn6K+75LiN5Yiw5qGG5p6255qEIEVMYXllciDlrprkuYnvvIzlt7Lot7Pov4flsYLnuqflkIzmraXmo4Dmn6UnXG4gICAgICAgICAgICAgICAgKyAn77yI5paw5bel56iL6YeM5qGG5p625pivIG5wbSDljIUgQGNjZ2YvZnJhbWV3b3Jr77yM5rqQ56CB5LiN5Zyo5bel56iL5YaFIOKAlOKAlCDov5nmmK/mraPluLjnmoTvvIknLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocy5mcmFtZXdvcmtMYXllcnMuam9pbignLCcpICE9PSBleHBlY3RlZC5qb2luKCcsJykpIHtcbiAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICBydWxlOiAnbGF5ZXJzLWRyaWZ0JyxcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgIGDmoYbmnrYgRUxheWVyIOS4juaJqeWxlSBMQVlFUlMg5LiN5LiA6Ie077yaYCArXG4gICAgICAgICAgICAgICAgYOahhuaetiBbJHtzLmZyYW1ld29ya0xheWVycy5qb2luKCcsICcpfV3vvIzmianlsZUgWyR7ZXhwZWN0ZWQuam9pbignLCAnKX1dYCxcbiAgICAgICAgICAgIGhpbnQ6ICflnKjmianlsZXnmoQgY29uc3RhbnRzLnRzIOmHjOWKoOS4gOWxgiBMQVlFUlPvvIjpnaLmnb/kuIvmi4nnlLHkuLvov5vnqIvkuIvlj5HvvIzmlLnov5nkuIDlpITljbPlj6/vvIknLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKiDmqKHlnZfvvJpvcmRlciDnvLrlpLEv5pKe5Y+344CBTW9kZWwg57y65aSxICovXG5mdW5jdGlvbiBjaGVja01vZHVsZXMoczogSVByb2plY3RTbmFwc2hvdCwgbW9kdWxlczogSU1vZHVsZUluZm9bXSwgb3V0OiBJRmluZGluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgYnlPcmRlciA9IG5ldyBNYXA8bnVtYmVyLCBJTW9kdWxlSW5mb1tdPigpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIG1vZHVsZXMpIHtcbiAgICAgICAgaWYgKG0ub3JkZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICdtb2R1bGUtb3JkZXItbWlzc2luZycsXG4gICAgICAgICAgICAgICAgZmlsZTogbS5tb2R1bGVGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGDmqKHlnZcgJHttLmRpcn0g55qEIEBSZWdpc3Rlck1vZHVsZSDph4zop6PmnpDkuI3liLAgb3JkZXLvvIzov5DooYzmnJ/mjIkgMCDlpITnkIZgLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gYnlPcmRlci5nZXQobS5vcmRlcikgPz8gW107XG4gICAgICAgICAgICBsaXN0LnB1c2gobSk7XG4gICAgICAgICAgICBieU9yZGVyLnNldChtLm9yZGVyLCBsaXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtLm1vZGVsRmlsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgcnVsZTogJ21vZHVsZS1tb2RlbC1taXNzaW5nJyxcbiAgICAgICAgICAgICAgICBmaWxlOiBtLm1vZHVsZUZpbGUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYOaooeWdlyAke20uZGlyfSDnvLrlsJEgJHttLnByZWZpeH1Nb2RlbC50c2AsXG4gICAgICAgICAgICAgICAgaGludDogYEBSZWdpc3Rlck1vZHVsZSDnmoQgbW9kZWwg5oyH5ZCR6K+l5paH5Lu277yM57y65aSx5Lya5a+86Ie06L+Q6KGM5pyf5oql6ZSZYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbb3JkZXIsIGxpc3RdIG9mIGJ5T3JkZXIpIHtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgcnVsZTogJ21vZHVsZS1vcmRlci1jb2xsaXNpb24nLFxuICAgICAgICAgICAgICAgIGZpbGU6IGxpc3RbMF0ubW9kdWxlRmlsZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICBgb3JkZXI9JHtvcmRlcn0g6KKrICR7bGlzdC5sZW5ndGh9IOS4quaooeWdl+WQjOaXtuS9v+eUqO+8mmAgK1xuICAgICAgICAgICAgICAgICAgICBsaXN0Lm1hcCgobSkgPT4gbS5kaXIpLmpvaW4oJyAvICcpICtcbiAgICAgICAgICAgICAgICAgICAgJ++8iOWQjCBvcmRlciDml7blrp7pmYXlkK/liqjpobrluo/lj5blhrPkuo7ohJrmnKzliqDovb3pobrluo/vvIzkuI3noa7lrprvvIknLFxuICAgICAgICAgICAgICAgIGhpbnQ6ICfnu5nlhbbkuK3kuIDkuKrmlLnmiJDkuI3lkIznmoQgb3JkZXInLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiBWaWV377ya6YeN5ZCN44CB5bGC57qn6Z2e5rOV44CBcGF0aCDnvLrpooTliLbkvZPjgIHohJrmnKzmnKrmjILliLDpooTliLbkvZPjgIHlkb3lkI3kuI3kuIDoh7TjgIHohLHnprvmqKHlnZcgKi9cbmZ1bmN0aW9uIGNoZWNrVmlld3MoXG4gICAgczogSVByb2plY3RTbmFwc2hvdCxcbiAgICB2aWV3czogSVZpZXdJbmZvW10sXG4gICAgbW9kdWxlczogSU1vZHVsZUluZm9bXSxcbiAgICBleHBlY3RlZExheWVyczogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgb3V0OiBJRmluZGluZ1tdLFxuKTogdm9pZCB7XG4gICAgY29uc3Qga25vd25MYXllcnMgPSBzLmZyYW1ld29ya0xheWVycyA/PyBleHBlY3RlZExheWVycztcbiAgICBjb25zdCBtb2R1bGVEaXJzID0gbmV3IFNldChtb2R1bGVzLm1hcCgobSkgPT4gbS5kaXIpKTtcbiAgICBjb25zdCBieU5hbWUgPSBuZXcgTWFwPHN0cmluZywgSVZpZXdJbmZvW10+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHYgb2Ygdmlld3MpIHtcbiAgICAgICAgaWYgKCFtb2R1bGVEaXJzLmhhcyh2Lm1vZHVsZURpcikpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LXdpdGhvdXQtbW9kdWxlJyxcbiAgICAgICAgICAgICAgICBmaWxlOiB2LnNjcmlwdEZpbGUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFZpZXcgJHt2LmNsYXNzTmFtZX0g5omA5bGe5qih5Z2XICR7di5tb2R1bGVEaXJ9IOmHjOayoeaciSBNb2R1bGUg6ISa5pysYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g5LiJ5aSE5ZCN5a2X5b+F6aG75LiA6Ie077ya55Sf5oiQ5Zmo5L+d6K+B77yM5omL5pS55Lya56C05Z2PXG4gICAgICAgIGNvbnN0IG5hbWVzID0gW3YuY2xhc3NOYW1lLCB2LnJlZ2lzdGVyZWROYW1lLCB2LmNjY2xhc3NOYW1lLCB2LmRlY2xhcmVkQ2xhc3NdO1xuICAgICAgICBpZiAobmFtZXMuc29tZSgobikgPT4gbiA9PT0gbnVsbCkgfHwgbmV3IFNldChuYW1lcykuc2l6ZSAhPT0gMSkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgcnVsZTogJ3ZpZXctbmFtZS1taXNtYXRjaCcsXG4gICAgICAgICAgICAgICAgZmlsZTogdi5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIGBWaWV3IOWQjeensOS4jeS4gOiHtO+8muaWh+S7tuWQjT0ke3YuY2xhc3NOYW1lfSBgICtcbiAgICAgICAgICAgICAgICAgICAgYEBSZWdpc3RlclZpZXcubmFtZT0ke3YucmVnaXN0ZXJlZE5hbWUgPz8gJyjml6ApJ30gYCArXG4gICAgICAgICAgICAgICAgICAgIGBAY2NjbGFzcz0ke3YuY2NjbGFzc05hbWUgPz8gJyjml6ApJ30gYCArXG4gICAgICAgICAgICAgICAgICAgIGDnsbvlkI09JHt2LmRlY2xhcmVkQ2xhc3MgPz8gJyjml6ApJ31gLFxuICAgICAgICAgICAgICAgIGhpbnQ6ICdAUmVnaXN0ZXJWaWV3IOaMieexu+WQjeafpeaJvuWFg+S/oeaBr++8jOS4jeS4gOiHtOS8muWKoOi9vemUmemihOWItuS9k+aIluaJvuS4jeWIsCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWxgue6p+W/hemhu+WcqOahhuaetiBFTGF5ZXIg6YeMXG4gICAgICAgIGlmICh2LnJlZ2lzdGVyZWRMYXllciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgcnVsZTogJ3ZpZXctbGF5ZXItbWlzc2luZycsXG4gICAgICAgICAgICAgICAgZmlsZTogdi5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBWaWV3ICR7di5jbGFzc05hbWV9IOino+aekOS4jeWIsCBsYXllcmAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgha25vd25MYXllcnMuaW5jbHVkZXModi5yZWdpc3RlcmVkTGF5ZXIpKSB7XG4gICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgcnVsZTogJ3ZpZXctbGF5ZXItaW52YWxpZCcsXG4gICAgICAgICAgICAgICAgZmlsZTogdi5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIGBWaWV3ICR7di5jbGFzc05hbWV9IOeahCBsYXllcj1FTGF5ZXIuJHt2LnJlZ2lzdGVyZWRMYXllcn0g5LiN5Zyo5qGG5p625bGC57qn6YeMYCArXG4gICAgICAgICAgICAgICAgICAgIGDvvIjlkIjms5XlgLzvvJoke2tub3duTGF5ZXJzLmpvaW4oJywgJyl977yJYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcGF0aCDlv4Xpobvog73lr7nkuIrnnJ/lrp7pooTliLbkvZNcbiAgICAgICAgaWYgKHYucmVnaXN0ZXJlZFBhdGggPT09IG51bGwpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LXBhdGgtbWlzc2luZycsXG4gICAgICAgICAgICAgICAgZmlsZTogdi5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBWaWV3ICR7di5jbGFzc05hbWV9IOino+aekOS4jeWIsCBwYXRoYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcHJlZmFiUmVsID0gcy5wcmVmYWJzQnlSZXNvdXJjZVBhdGhbdi5yZWdpc3RlcmVkUGF0aF07XG4gICAgICAgICAgICBpZiAoIXByZWZhYlJlbCkge1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LXBhdGgtbm90LWZvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogdi5zY3JpcHRGaWxlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVmlldyAke3YuY2xhc3NOYW1lfSDnmoQgcGF0aD1cIiR7di5yZWdpc3RlcmVkUGF0aH1cIiDmib7kuI3liLDlr7nlupTpooTliLbkvZNgLFxuICAgICAgICAgICAgICAgICAgICBoaW50OiBg5pyf5pybIGFzc2V0cy9yZXNvdXJjZXMvJHt2LnJlZ2lzdGVyZWRQYXRofS5wcmVmYWJgLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDpooTliLbkvZPph4zlv4XpobvmjILnnYDov5nkuKogVmlldyDohJrmnKzvvIjlkKbliJnov5DooYzmnJ/oioLngrnkuIrmsqHmnInnu4Tku7bvvIlcbiAgICAgICAgICAgICAgICBjb25zdCBjaWQgPSBzLnNjcmlwdENpZHNbdi5zY3JpcHRGaWxlXTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gcy5zZXJpYWxpemVkW3ByZWZhYlJlbF0gPz8gJyc7XG4gICAgICAgICAgICAgICAgaWYgKGNpZCAmJiAhdGV4dC5pbmNsdWRlcyhjaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZTogJ3ZpZXctc2NyaXB0LW5vdC1tb3VudGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IHByZWZhYlJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGDpooTliLbkvZPph4zmsqHmnInmjIIgJHt2LmNsYXNzTmFtZX0g6ISa5pys77yIY2lkICR7Y2lkfe+8iWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaW50OiAn5Zyo57yW6L6R5Zmo6YeM5oqK6ISa5pys5ouW5Zue6aKE5Yi25L2T5qC56IqC54K577yM5oiW5Yig5o6J6YeN5bu66L+Z5LiqIFZpZXcnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBrZXkgPSB2LnJlZ2lzdGVyZWROYW1lID8/IHYuY2xhc3NOYW1lO1xuICAgICAgICBjb25zdCBsaXN0ID0gYnlOYW1lLmdldChrZXkpID8/IFtdO1xuICAgICAgICBsaXN0LnB1c2godik7XG4gICAgICAgIGJ5TmFtZS5zZXQoa2V5LCBsaXN0KTtcbiAgICB9XG5cbiAgICAvLyDot6jmqKHlnZfph43lkI3vvJpWaWV3SW5mb0xpc3Qg5piv5YWo5bGA55qE44CB5oyJ5ZCN5a2X5Y+W56ys5LiA5Liq5Yy56YWNIOKGkiDkvJrliqDovb3plJnpooTliLbkvZNcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBsaXN0XSBvZiBieU5hbWUpIHtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHJ1bGU6ICd2aWV3LWR1cGxpY2F0ZS1uYW1lJyxcbiAgICAgICAgICAgICAgICBmaWxlOiBsaXN0WzBdLnNjcmlwdEZpbGUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgYFZpZXcg5ZCN5a2XIFwiJHtuYW1lfVwiIOWcqOWkmuS4quaooeWdl+mHjOmHjeWkje+8mmAgK1xuICAgICAgICAgICAgICAgICAgICBsaXN0Lm1hcCgodikgPT4gYCR7di5tb2R1bGVEaXJ9LyR7di5jbGFzc05hbWV9YCkuam9pbignIC8gJyksXG4gICAgICAgICAgICAgICAgaGludDogJ1ZpZXdNYW5hZ2VyIOaMieexu+WQjeWFqOWxgOafpeaJvu+8jOWFiOazqOWGjOeahOS8mui1ou+8jOmAmuW4uOWvvOiHtOWKoOi9vemUmemihOWItuS9kycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIG1hbmFnZXIg5piv5ZCm6YO957un5om/5qGG5p6255qEIEFTaW5nbGV0b24gKi9cbmZ1bmN0aW9uIGNoZWNrTWFuYWdlcnMoczogSVByb2plY3RTbmFwc2hvdCwgb3V0OiBJRmluZGluZ1tdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBtIG9mIGxpc3RNYW5hZ2VycyhzKSkge1xuICAgICAgICBpZiAobS5leHRlbmRzU2luZ2xldG9uKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgcnVsZTogJ21hbmFnZXItbm90LXNpbmdsZXRvbicsXG4gICAgICAgICAgICBmaWxlOiBtLnNjcmlwdEZpbGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBtLmJhc2VDbGFzc1xuICAgICAgICAgICAgICAgID8gYCR7bS5jbGFzc05hbWV9IOe7p+aJv+eahOaYryAke20uYmFzZUNsYXNzfe+8jOS4jeaYr+ahhuaetueahCBBU2luZ2xldG9uYFxuICAgICAgICAgICAgICAgIDogYCR7bS5jbGFzc05hbWV9IOayoeaciSBleHRlbmRzIEFTaW5nbGV0b25gLFxuICAgICAgICAgICAgaGludDogJ21hbmFnZXIg57qm5a6a57un5om/IEFTaW5nbGV0b27vvIznlKggWHh4TWFuYWdlci5nZXRJbnN0YW5jZSgpIOWPluWunuS+iycsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqIOebuOWvueWvvOWFpeaYr+WQpuino+aekOW+l+WIsOaWh+S7tu+8iOeUn+aIkOiEmuacrOmdoCBgLi4vLi4vYOOAgWAuLi8uLi8uLi9gIOS4iua6r++8jOaNoua3seW6puWwseS8muWFqOmUme+8iSAqL1xuZnVuY3Rpb24gY2hlY2tJbXBvcnRzKHM6IElQcm9qZWN0U25hcHNob3QsIG91dDogSUZpbmRpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGFsbCA9IG5ldyBTZXQocy5hbGxTY3JpcHRGaWxlcyk7XG5cbiAgICAvLyBnYW1lcGxheSDkuI4gbWFuYWdlciDpg73opoHmn6XjgILlkIjlubbmiJDkuIDlvKDooagg4oCU4oCUIOWPquWQiOW5tiBrZXkg5Y205LuO6ZSZ6K+v55qE6KGo6YeM5Y+W5paH5pys77yMXG4gICAgLy8g5Lya6K6pIG1hbmFnZXIg55qE5a+85YWl5qOA5p+l6KKr6Z2Z6buY6Lez6L+H77yIdW5kZWZpbmVkLm1hdGNoIOS4jeaKpemUmeOAgeWPquaYr+awuOS4jeWMuemFje+8ieOAglxuICAgIGNvbnN0IHNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlbCBvZiBPYmplY3Qua2V5cyhzLmdhbWVwbGF5U291cmNlcykpIHtcbiAgICAgICAgc291cmNlc1tyZWxdID0gcy5nYW1lcGxheVNvdXJjZXNbcmVsXTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByZWwgb2YgT2JqZWN0LmtleXMocy5tYW5hZ2VyU291cmNlcykpIHtcbiAgICAgICAgc291cmNlc1tyZWxdID0gcy5tYW5hZ2VyU291cmNlc1tyZWxdO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVsIG9mIE9iamVjdC5rZXlzKHNvdXJjZXMpKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzb3VyY2VzW3JlbF07XG4gICAgICAgIGNvbnN0IGRpciA9IHBvc2l4RGlyKHJlbCk7XG4gICAgICAgIGNvbnN0IHJlID0gL2Zyb21cXHMrW1wiJ10oXFwuW15cIiddKilbXCInXS9nO1xuICAgICAgICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICAgICAgd2hpbGUgKChtID0gcmUuZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNwZWMgPSBtWzFdO1xuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHBvc2l4UmVzb2x2ZShkaXIsIHNwZWMpO1xuICAgICAgICAgICAgaWYgKCFhbGwuaGFzKGJhc2UgKyAnLnRzJykgJiYgIWFsbC5oYXMoYmFzZSArICcvaW5kZXgudHMnKSkge1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGU6ICdpbXBvcnQtYnJva2VuJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogcmVsLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBg55u45a+55a+85YWlICR7c3BlY30g6Kej5p6Q5LiN5Yiw5paH5Lu2YCxcbiAgICAgICAgICAgICAgICAgICAgaGludDogYOacn+acmyAke2Jhc2V9LnRzYCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIOWcuuaZry/pooTliLbkvZPph4zmmK/lkKblvJXnlKjkuoblt7LkuI3lrZjlnKjnmoTohJrmnKzvvIjliKDohJrmnKzlkI7pgZfnlZnnmoTmgqznqbrnu4Tku7bvvIkgKi9cbmZ1bmN0aW9uIGNoZWNrRGFuZ2xpbmdTY3JpcHRSZWZzKHM6IElQcm9qZWN0U25hcHNob3QsIG91dDogSUZpbmRpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGtub3duQ2lkcyA9IG5ldyBTZXQoT2JqZWN0LnZhbHVlcyhzLnNjcmlwdENpZHMpKTtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHJlbCBvZiBPYmplY3Qua2V5cyhzLnNlcmlhbGl6ZWQpKSB7XG4gICAgICAgIGxldCBsaXN0OiB1bmtub3duO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGlzdCA9IEpTT04ucGFyc2Uocy5zZXJpYWxpemVkW3JlbF0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBydWxlOiAnc2VyaWFsaXplZC11bnBhcnNhYmxlJyxcbiAgICAgICAgICAgICAgICBmaWxlOiByZWwsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ+i1hOa6kOS4jeaYr+WQiOazlSBKU09O77yM6Lez6L+H5oKs56m65byV55So5qOA5p+lJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBsaXN0KSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gb2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnID8gKG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuX190eXBlX18gOiBudWxsO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJyB8fCAhQ09NUFJFU1NFRF9VVUlEX1JFLnRlc3QodHlwZSkgfHwga25vd25DaWRzLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qga2V5ID0gcmVsICsgJ3wnICsgdHlwZTtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWVuLmFkZChrZXkpO1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgcnVsZTogJ2RhbmdsaW5nLXNjcmlwdC1yZWYnLFxuICAgICAgICAgICAgICAgIGZpbGU6IHJlbCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBg5byV55So5LqG5bey5LiN5a2Y5Zyo55qE6ISa5pys57uE5Lu277yIY2lkICR7dHlwZX3vvIlgLFxuICAgICAgICAgICAgICAgIGhpbnQ6ICfor6XohJrmnKzlj6/og73lt7LooqvliKDpmaTvvJvlnKjnvJbovpHlmajph4zmuIXmjonov5nkuKrnu4Tku7bvvIzlkKbliJnmjqfliLblj7DkvJrmjIHnu63miqUgbWlzc2luZycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|