{"remainingRequest":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\ljzc-fvue\\src\\views\\assetsOperating\\HomePage\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\src\\views\\assetsOperating\\HomePage\\index.vue","mtime":1703585192310},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQoNCmltcG9ydCAqIGFzIGVjaGFydHMgZnJvbSAnZWNoYXJ0cycNCmltcG9ydCB1dGlscyBmcm9tICdAL3V0aWxzLmpzJw0KaW1wb3J0IFB1YmxpY1RpdGxlIGZyb20gJ0AvY29tcG9uZW50cy9QdWJsaWNUaXRsZS9pbmRleCcNCg0KaW1wb3J0IGFwaSBmcm9tICdAL2FwaS9hc3NldHNPcGVyYXRpbmcvYXNzZXRzT3BlcmF0aW5nLmpzJw0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAnSG9tZVBhZ2UnLCAvLyDpppbpobUNCiAgY29tcG9uZW50czogew0KICAgIFB1YmxpY1RpdGxlLA0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBjb2xvckxpc3Q6IFsnIzU1ZWRiMCcsICcjMDBkNGZmJywgJyNjNjc5ZTUnLCAnIzE5OGNmZiddLA0KICAgICAgYWN0aXZlOiAxLA0KICAgICAgYXJlYUFjdGl2ZTogMSwNCiAgICAgIHRvcFN0YXRpc3RpY3M6IHsNCiAgICAgICAgYm9va1ZhbHVlOiAnMTM1LDI3OCw3NDMuNTUnLA0KICAgICAgICBzdHJ1Y3R1cmVBcmVhOiAnMSwxOTQsMzM3LjY5JywNCiAgICAgICAgdW5jb25maXJtQXJlYTogJzEsMTk0LDMzNy42OScsDQogICAgICAgIHllYXJFYXJuaW5nczogJzEyOCw4MTQsNzMzLjI3JywNCiAgICAgICAgdW51c2VkQXJlYTogJzEyOCw4MTQsNzMzLjI3JywNCiAgICAgICAgaGlyZUFyZWE6ICcxMjgsODE0LDczMy4yNycsDQogICAgICB9LC8v6aG26YOo57uf6K6hDQogICAgICBzdGF0aXN0aWNzTGlzdDogWw0KICAgICAgICB7DQogICAgICAgICAgbGFiZWw6ICflupTmlLbnp5/ph5Eo5LiH5YWDKScsDQogICAgICAgICAgdmFsdWU6IDQwDQogICAgICAgIH0sIHsNCiAgICAgICAgICBsYWJlbDogJ+WunuaUtuenn+mHkSjkuIflhYMpJywNCiAgICAgICAgICB2YWx1ZTogMzINCiAgICAgICAgfSwgew0KICAgICAgICAgIGxhYmVsOiAn6YC+5pyf5qyg56ef5pWw6YePKOS4qiknLA0KICAgICAgICAgIHZhbHVlOiA4DQogICAgICAgIH0sIHsNCiAgICAgICAgICBsYWJlbDogJ+asoOaUtuenn+mHkSjkuIflhYMpJywNCiAgICAgICAgICB2YWx1ZTogMA0KICAgICAgICB9LCB7DQogICAgICAgICAgbGFiZWw6ICfmlrDlop7lkIjlkIwo5LiqKScsDQogICAgICAgICAgdmFsdWU6IDIzDQogICAgICAgIH0sIHsNCiAgICAgICAgICBsYWJlbDogJ+e7reetvuWQiOWQjCjkuKopJywNCiAgICAgICAgICB2YWx1ZTogMzMNCiAgICAgICAgfSwgew0KICAgICAgICAgIGxhYmVsOiAn5Yiw5pyf5ZCI5ZCMKOS4qiknLA0KICAgICAgICAgIHZhbHVlOiAwDQogICAgICAgIH0sDQogICAgICBdLA0KDQoNCiAgICAgIHJlbnR4RGF0YTogWyflkozplKblrrblm63llYbkuJrpl6jpnaInLCAn5ZKM5qyj5a625ZutNjTluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNjjluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNDTluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNOW5ouW6leWVhiddLA0KICAgICAgcmVudHlEYXRhOiBbOTAsIDgwLCA3MCwgNjAsIDMwLCAyMF0sDQogICAgICBhcmVhRGF0YTogWw0KICAgICAgICB7DQogICAgICAgICAgbmFtZTogJ+aUv+W6nOi1hOS6pycsDQogICAgICAgICAgdmFsdWU6IDMwLA0KICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgY29sb3I6ICcjMTk4Q0ZGJywNCiAgICAgICAgICB9LA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgbmFtZTogJ+S8geS4mui1hOS6pycsDQogICAgICAgICAgdmFsdWU6IDEyMCwNCiAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgIGNvbG9yOiAnIzU1RURCMCcsDQogICAgICAgICAgfSwNCiAgICAgICAgfQ0KICAgICAgXQ0KDQoNCiAgICB9DQogIH0sDQogIHdhdGNoOiB7fSwNCiAgY3JlYXRlZCgpIHsNCg0KICB9LA0KICBtb3VudGVkKCkgew0KICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgIHRoaXMuaW5pdFByb2plY3RUb3AoKQ0KICAgICAgdGhpcy5pbml0Q2hhdCgpDQogICAgICB0aGlzLmluaXRBcmVhQ2hhdCgpDQogICAgICB0aGlzLmluaXRWaXRhbGl6ZUNoYXQoKQ0KICAgICAgdGhpcy5pbml0UmVwYWlyQ2hhdCgpDQogICAgICB0aGlzLmluaXREaXNwb3NlQ2hhdCgpDQogICAgfSkNCg0KICB9LA0KICBtZXRob2RzOiB7DQogICAgLy/lrZflhbjnv7vor5ENCiAgICBnZXREaWN0TmFtZShjb2RlLCB2YWx1ZSkgew0KICAgICAgcmV0dXJuIHV0aWxzLmdldERpY3ROYW1lKGNvZGUsIHZhbHVlKQ0KICAgIH0sDQogICAgY2hlY2tUYWIodmFsKSB7DQogICAgICB0aGlzLmFjdGl2ZSA9IHZhbA0KICAgICAgaWYgKHZhbCA9PSAxKSB7DQogICAgICAgIHRoaXMucmVudHhEYXRhID0gWyflkozplKblrrblm63llYbkuJrpl6jpnaInLCAn5ZKM5qyj5a625ZutNjTluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNjjluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNDTluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNOW5ouW6leWVhiddDQogICAgICAgIHRoaXMucmVudHlEYXRhID0gWzkwLCA4MCwgNzAsIDYwLCAzMCwgMjBdDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLnJlbnR4RGF0YSA9IFsn5ZKM5qyj5a625ZutNjjluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNDTluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNOW5ouW6leWVhicsICflkozplKblrrblm63llYbkuJrpl6jpnaInLCAn5ZKM5qyj5a625ZutNjTluaLlupXllYYnLF0NCiAgICAgICAgdGhpcy5yZW50eURhdGEgPSBbODgsIDc3LCA2NiwgNTQsIDMyLCAzMF0NCiAgICAgIH0NCiAgICAgIHRoaXMuaW5pdFByb2plY3RUb3AoKQ0KICAgIH0sDQogICAgY2hlY2tBcmVhVGFiKHZhbCkgew0KICAgICAgdGhpcy5hcmVhQWN0aXZlID0gdmFsDQogICAgICBpZiAodmFsID09PSAxKSB7DQogICAgICAgIHRoaXMuYXJlYURhdGEgPSBbDQogICAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogJ+aUv+W6nOi1hOS6pycsDQogICAgICAgICAgICB2YWx1ZTogMzAsDQogICAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgICAgY29sb3I6ICcjMTk4Q0ZGJywNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBuYW1lOiAn5LyB5Lia6LWE5LqnJywNCiAgICAgICAgICAgIHZhbHVlOiAxMjAsDQogICAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgICAgY29sb3I6ICcjNTVFREIwJywNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgfQ0KICAgICAgICBdDQogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gMikgew0KICAgICAgICB0aGlzLmFyZWFEYXRhID0gWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfpl7Lnva4nLA0KICAgICAgICAgICAgdmFsdWU6IDMwLA0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogJ+iHqueUqCcsDQogICAgICAgICAgICB2YWx1ZTogNDAsDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBuYW1lOiAn5Ye656efJywNCiAgICAgICAgICAgIHZhbHVlOiA0MCwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfooqvljaDnlKgnLA0KICAgICAgICAgICAgdmFsdWU6IDUsDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBuYW1lOiAn5a2Y6YePJywNCiAgICAgICAgICAgIHZhbHVlOiAyMCwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfmlrDlop4nLA0KICAgICAgICAgICAgdmFsdWU6IDMwLA0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogJ+WFtuS7licsDQogICAgICAgICAgICB2YWx1ZTogMTAsDQogICAgICAgICAgfQ0KICAgICAgICBdDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmFyZWFEYXRhID0gWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfoh6rlu7onLA0KICAgICAgICAgICAgdmFsdWU6IDg4LA0KICAgICAgICAgICANCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfotK3kubAnLA0KICAgICAgICAgICAgdmFsdWU6IDEyMCwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfliJLmi5QnLA0KICAgICAgICAgICAgdmFsdWU6IDQwLA0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogJ+e9ruaNoicsDQogICAgICAgICAgICB2YWx1ZTogNzcsDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBuYW1lOiAn5Ye66K6pJywNCiAgICAgICAgICAgIHZhbHVlOiA1NSwNCiAgICAgICAgICB9DQogICAgICAgIF0NCiAgICAgIH0NCg0KDQogICAgICB0aGlzLmluaXRBcmVhQ2hhdCgpDQogICAgfSwNCiAgICAvL+mhueebrue7j+iQpeaOkuWQjQ0KICAgIGluaXRQcm9qZWN0VG9wKCkgew0KDQogICAgICBsZXQgY2hhcnREb20gPSBlY2hhcnRzLmluaXQoDQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9qZWN0LWNoYXJ0JykNCiAgICAgICkNCiAgICAgIGxldCBvcHRpb24gPSB7DQogICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICB0cmlnZ2VyOiAnYXhpcycsDQogICAgICAgICAgYXhpc1BvaW50ZXI6IHsNCiAgICAgICAgICAgIC8vIOWdkOagh+i9tOaMh+ekuuWZqO+8jOWdkOagh+i9tOinpuWPkeacieaViA0KICAgICAgICAgICAgdHlwZTogJ3NoYWRvdycsIC8vIOm7mOiupOS4uuebtOe6v++8jOWPr+mAieS4uu+8midsaW5lJyB8ICdzaGFkb3cnDQogICAgICAgICAgfSwNCiAgICAgICAgfSwNCiAgICAgICAgZ3JpZDogew0KICAgICAgICAgIGxlZnQ6ICc0JScsDQogICAgICAgICAgdG9wOiAnMCcsDQogICAgICAgICAgcmlnaHQ6ICcwJywNCiAgICAgICAgICBib3R0b206ICcwJywNCiAgICAgICAgICBjb250YWluTGFiZWw6IHRydWUsDQogICAgICAgIH0sDQogICAgICAgIHhBeGlzOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB0eXBlOiAndmFsdWUnLA0KICAgICAgICAgICAgbmFtZTogJyjljZXkvY065qyhKScsDQogICAgICAgICAgfSwNCiAgICAgICAgXSwNCiAgICAgICAgeUF4aXM6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICBkYXRhOiB0aGlzLnJlbnR4RGF0YSwNCiAgICAgICAgICAgIGludmVyc2U6IHRydWUsLy/lj43lkJENCiAgICAgICAgICAgIGF4aXNMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc1RpY2s6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzTGFiZWw6IHsNCiAgICAgICAgICAgICAgZm9udFNpemU6IDEyLA0KICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsNCiAgICAgICAgICAgICAgICAvLyB2YXIgc3VyZUluZCA9IHhEYXRhLm1hcChpdGVtID0+IGl0ZW0pLmluZGV4T2YodmFsdWUpICsgMQ0KICAgICAgICAgICAgICAgIHZhciBzdXJlSW5kID0gaW5kZXggKyAxDQogICAgICAgICAgICAgICAgY29uc29sZS5sb2coc3VyZUluZCkNCiAgICAgICAgICAgICAgICBpZiAoc3VyZUluZCA9PSAxKSB7DQogICAgICAgICAgICAgICAgICByZXR1cm4gJ3thfCcgKyBzdXJlSW5kICsgJ30nICsgJ3tlfCcgKyB2YWx1ZSArICd9Jw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmIChzdXJlSW5kID09IDIpIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiAne2J8JyArIHN1cmVJbmQgKyAnfScgKyAne2V8JyArIHZhbHVlICsgJ30nDQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdXJlSW5kID09IDMpIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiAne2N8JyArIHN1cmVJbmQgKyAnfScgKyAne2V8JyArIHZhbHVlICsgJ30nDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiAne2R8JyArIHN1cmVJbmQgKyAnfScgKyAne2V8JyArIHZhbHVlICsgJ30nDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICByaWNoOiB7DQogICAgICAgICAgICAgICAgYTogew0KICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAiI0ZGRTM4NyIsDQogICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAsDQogICAgICAgICAgICAgICAgICBjb2xvcjogJyMwMDAnLA0KICAgICAgICAgICAgICAgICAgd2lkdGg6IDE4LA0KICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxOCwNCiAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDE4LA0KICAgICAgICAgICAgICAgICAgYWxpZ246ICJjZW50ZXIiLA0KICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA5LA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgZTogew0KICAgICAgICAgICAgICAgICAgY29sb3I6ICcjNjY2NjY2JywNCiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBiOiB7DQogICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjRDBFMEVCIiwNCiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCwNCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsDQogICAgICAgICAgICAgICAgICB3aWR0aDogMTgsDQogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4LA0KICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMTgsDQogICAgICAgICAgICAgICAgICBhbGlnbjogImNlbnRlciIsDQogICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDksDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBjOiB7DQogICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjRjNCRUFDIiwNCiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCwNCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsDQogICAgICAgICAgICAgICAgICB3aWR0aDogMTgsDQogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4LA0KICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMTgsDQogICAgICAgICAgICAgICAgICBhbGlnbjogImNlbnRlciIsDQogICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDksDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBkOiB7DQogICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjZmZmIiwNCiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCwNCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsDQogICAgICAgICAgICAgICAgICB3aWR0aDogMTgsDQogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4LA0KICAgICAgICAgICAgICAgICAgYWxpZ246ICJjZW50ZXIiLA0KICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMTgsDQogICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDksDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KDQogICAgICAgICAgICBpbnZlcnNlOiB0cnVlLC8v5Y+N5ZCRDQogICAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JywvL+WdkOagh+i9tOS9jee9ru+8jOenu+iHs+WPs+i+uQ0KICAgICAgICAgICAgYXhpc0xpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzVGljazogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgZGF0YTogdGhpcy5yZW50eERhdGEsDQogICAgICAgICAgICBheGlzTGFiZWw6IHsNCiAgICAgICAgICAgICAgY29sb3I6ICIjMzMzIiwNCiAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7DQogICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDcpIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwLCA2KSArICIuLi4iDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgc2VyaWVzOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgdHlwZTogJ2JhcicsDQogICAgICAgICAgICBkYXRhOiB0aGlzLnJlbnR5RGF0YSwNCiAgICAgICAgICAgIGJhcldpZHRoOiAnMTUnLA0KICAgICAgICAgICAgc3RhY2s6ICd1c2VyJywNCiAgICAgICAgICAgIGxhYmVsOiB7DQogICAgICAgICAgICAgIHNob3c6IHRydWUsIC8vIOaYvuekuuagh+etvg0KICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JywNCiAgICAgICAgICAgICAgZm9udFNpemU6IDE2LA0KICAgICAgICAgICAgICBjb2xvcjogJyMwMDAnLA0KICAgICAgICAgICAgICBvZmZzZXQ6IFsxMCwgMl0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIGNvbG9yOiB7DQogICAgICAgICAgICAgICAgdHlwZTogJ2xpbmVhcicsDQogICAgICAgICAgICAgICAgeDogMSwNCiAgICAgICAgICAgICAgICB5OiAwLA0KICAgICAgICAgICAgICAgIHgyOiAwLA0KICAgICAgICAgICAgICAgIHkyOiAwLA0KICAgICAgICAgICAgICAgIGNvbG9yU3RvcHM6IFsNCiAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLA0KICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyMxOThDRkYnLCAvLyDmuJDlj5jotbflp4vpopzoibLvvIjnu7/oibLvvIkNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG9mZnNldDogMSwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1LCAxNDAsIDI1NSwwLjIpJywgLy8g5riQ5Y+Y57uT5p2f6aKc6Imy77yI5rex57u/6Imy77yJDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgIGJvcmRlclJhZGl1czogWzAsIDMsIDMsIDBdLCAvLyDorr7nva7lnIbop5LlpKflsI8NCg0KICAgICAgICAgICAgfSwNCiAgICAgICAgICB9LA0KICAgICAgICBdLA0KICAgICAgfQ0KICAgICAgY2hhcnREb20uc2V0T3B0aW9uKG9wdGlvbikNCiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7DQogICAgICAgIGNoYXJ0RG9tLnJlc2l6ZSgpDQogICAgICB9KQ0KICAgIH0sDQogICAgLy/otYTkuqfkuJrmgIHku7flgLzliIbmnpANCiAgICBpbml0Q2hhdCgpIHsNCiAgICAgIGxldCB4RGF0YSA9IFsn6aSQ6aWuJywgJ+mbtuWUricsICflk4HniYzllYblrrYnLCAn6L2m5L2NJywgJ+mFjeWll+iuvuaWvScsICfotoXluIInLCAn5L2P5a6FJywgJ+WGmeWtl+alvCcsICfooYzmlL/mnI3liqEnLCAn5Y6C5oi/JywgJ+S7k+W6k+WtpuagoScsICfphZLlupcnLCAn5Yy76ZmiJ10NCiAgICAgIGxldCBib29rRGF0YSA9IFs0MCwgNjAsIDQwLCA2MCwgNDAsIDYwLCA0MCwgNjAsIDQwLCA2MCwgNjAsIDQwLCA2MCxdDQogICAgICBsZXQgc3RydWN0dXJlRGF0YSA9IFsyMCwgMzAsIDIwLCA2MCwgMjAsIDMwLCAyMCwgMzAsIDIwLCAzMCwgMzAsIDIwLCAzMF0NCiAgICAgIGxldCBjaGFydERvbSA9IGVjaGFydHMuaW5pdCgNCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lcmNpYWwtY2hhcnQnKQ0KICAgICAgKQ0KICAgICAgbGV0IG9wdGlvbiA9IHsNCiAgICAgICAgdG9vbHRpcDogew0KICAgICAgICAgIHRyaWdnZXI6ICdheGlzJywNCiAgICAgICAgICBheGlzUG9pbnRlcjogew0KICAgICAgICAgICAgLy8g5Z2Q5qCH6L205oyH56S65Zmo77yM5Z2Q5qCH6L206Kem5Y+R5pyJ5pWIDQogICAgICAgICAgICB0eXBlOiAnc2hhZG93JywgLy8g6buY6K6k5Li655u057q/77yM5Y+v6YCJ5Li677yaJ2xpbmUnIHwgJ3NoYWRvdycNCiAgICAgICAgICB9LA0KICAgICAgICB9LA0KICAgICAgICBsZWdlbmQ6IHsNCiAgICAgICAgICBkYXRhOiBbJ+i0pumdouWHgOWAvCcsICfpnaLnp68nXSwNCiAgICAgICAgICBhbGlnbjogJ2xlZnQnLA0KICAgICAgICAgIHBhZGRpbmc6IFsxNSwgMCwgMCwgMF0sDQogICAgICAgIH0sDQogICAgICAgIGdyaWQ6IHsNCiAgICAgICAgICBsZWZ0OiAnMyUnLA0KICAgICAgICAgIHJpZ2h0OiAnNCUnLA0KICAgICAgICAgIGJvdHRvbTogJzMlJywNCiAgICAgICAgICBjb250YWluTGFiZWw6IHRydWUsDQogICAgICAgIH0sDQogICAgICAgIHhBeGlzOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgdHlwZTogJ2NhdGVnb3J5JywNCiAgICAgICAgICAgIGRhdGE6IHhEYXRhLA0KICAgICAgICAgICAgYXhpc1RpY2s6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc0xpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7DQogICAgICAgICAgICAgICAgY29sb3I6ICcjQTFBOUIyJywgLy8g5rWF54Gw6ImyDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgIH0sDQogICAgICAgIF0sDQogICAgICAgIHlBeGlzOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgdHlwZTogJ3ZhbHVlJywNCiAgICAgICAgICAgIG5hbWU6ICfljZXkvY3vvJrkuIflhYMnLA0KICAgICAgICAgICAgYXhpc0xhYmVsOiB7DQogICAgICAgICAgICAgIGZvcm1hdHRlcjogJ3t2YWx1ZX0nLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHNwbGl0TGluZTogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzTGluZTogew0KICAgICAgICAgICAgICBzaG93OiB0cnVlLA0KICAgICAgICAgICAgICBsaW5lU3R5bGU6IHsNCiAgICAgICAgICAgICAgICBjb2xvcjogJyNBMUE5QjInLCAvLyDmtYXngbDoibINCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAndmFsdWUnLA0KICAgICAgICAgICAgbmFtZTogJ+WNleS9je+8muOOoScsDQogICAgICAgICAgICBheGlzTGFiZWw6IHsNCiAgICAgICAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfScsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgcG9zaXRpb246ICdyaWdodCcsDQogICAgICAgICAgICBzcGxpdExpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc0xpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7DQogICAgICAgICAgICAgICAgY29sb3I6ICcjQTFBOUIyJywgLy8g5rWF54Gw6ImyDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgIH0sDQogICAgICAgIF0sDQogICAgICAgIHNlcmllczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfotKbpnaLlh4DlgLwnLA0KICAgICAgICAgICAgdHlwZTogJ2JhcicsDQogICAgICAgICAgICBkYXRhOiBib29rRGF0YSwNCiAgICAgICAgICAgIGJhcldpZHRoOiAnMTUnLA0KICAgICAgICAgICAgeUF4aXNJbmRleDogMCwNCiAgICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgICBjb2xvcjogew0KICAgICAgICAgICAgICAgIHR5cGU6ICdsaW5lYXInLA0KICAgICAgICAgICAgICAgIHg6IDAsDQogICAgICAgICAgICAgICAgeTogMCwNCiAgICAgICAgICAgICAgICB4MjogMCwNCiAgICAgICAgICAgICAgICB5MjogMSwNCiAgICAgICAgICAgICAgICBjb2xvclN0b3BzOiBbDQogICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjNTVFREIwJywgLy8g5riQ5Y+Y6LW35aeL6aKc6Imy77yI57u/6Imy77yJDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSg4NSwyMzcsMTc2LDAuMiknLCAvLyDmuJDlj5jnu5PmnZ/popzoibLvvIjmt7Hnu7/oibLvvIkNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbMywgMywgMCwgMF0sIC8vIOiuvue9ruWchuinkuWkp+Wwjw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfpnaLnp68nLA0KICAgICAgICAgICAgdHlwZTogJ2xpbmUnLA0KICAgICAgICAgICAgZGF0YTogc3RydWN0dXJlRGF0YSwNCiAgICAgICAgICAgIC8vIGJhcldpZHRoOiAnMTUnLA0KICAgICAgICAgICAgeUF4aXNJbmRleDogMSwNCiAgICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgICBjb2xvcjogJyMxOThDRkYnDQogICAgICAgICAgICB9LA0KICAgICAgICAgIH0sDQogICAgICAgIF0sDQogICAgICB9DQogICAgICBjaGFydERvbS5zZXRPcHRpb24ob3B0aW9uKQ0KICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHsNCiAgICAgICAgY2hhcnREb20ucmVzaXplKCkNCiAgICAgIH0pDQogICAgfSwNCiAgICAvLyDotYTkuqfpnaLnp6/mg4XlhrUNCiAgICBpbml0QXJlYUNoYXQoKSB7DQogICAgICBsZXQgY2hhcnREb20gPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyZWEtY2hhcnQnKSkNCiAgICAgIGxldCBvcHRpb24gPSB7DQogICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICB0cmlnZ2VyOiAnaXRlbScsDQogICAgICAgIH0sDQogICAgICAgIGxlZ2VuZDogew0KICAgICAgICAgIHg6ICdyaWdodCcsDQogICAgICAgICAgYWxpZ246ICdsZWZ0JywNCiAgICAgICAgICB0b3A6ICdjZW50ZXInLA0KICAgICAgICAgIG9yaWVudDogJ3ZlcnRpY2FsJywNCg0KICAgICAgICB9LA0KICAgICAgICBzZXJpZXM6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICBuYW1lOiAn6Z2i56evJywNCiAgICAgICAgICAgIHR5cGU6ICdwaWUnLA0KICAgICAgICAgICAgcmFkaXVzOiBbJzU1JScsICc2NyUnXSwNCiAgICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLA0KICAgICAgICAgICAgYXZvaWRMYWJlbE92ZXJsYXA6IGZhbHNlLA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI2ZmZicsDQogICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGxhYmVsOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsDQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICBlbXBoYXNpczogew0KICAgICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgICAgZm9udFNpemU6IDMwLA0KICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gKHBhcmFtcykgew0KICAgICAgICAgICAgICAgICAgcmV0dXJuIFsNCiAgICAgICAgICAgICAgICAgICAgJ3tudW18JyArDQogICAgICAgICAgICAgICAgICAgIHBhcmFtcy52YWx1ZSArDQogICAgICAgICAgICAgICAgICAgICd9JyArDQogICAgICAgICAgICAgICAgICAgICd7dW5pdHzkuKp9JywNCiAgICAgICAgICAgICAgICAgICAgJ3tsYWJlbHwnICsgcGFyYW1zLm5hbWUgKyAnfScsDQogICAgICAgICAgICAgICAgICBdLmpvaW4oJ1xuJykNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJpY2g6IHsNCiAgICAgICAgICAgICAgICAgIG51bTogew0KICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMzAsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsDQogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLA0KICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAsDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgdW5pdDogew0KICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzExMScsDQogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLA0KICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBbMCwgNV0sDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDIwLA0KICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAzMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjNDQ0JywNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBsYWJlbExpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgZGF0YTogdGhpcy5hcmVhRGF0YSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdwaWUnLA0KICAgICAgICAgICAgcmFkaXVzOiBbJzUwJScsICc1MCUnXSwNCiAgICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLA0KICAgICAgICAgICAgaG92ZXJBbmltYXRpb246IGZhbHNlLA0KICAgICAgICAgICAgY2xvY2tXaXNlOiBmYWxzZSwNCiAgICAgICAgICAgIGN1cnNvcjogJ2RlZmF1bHQnLA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIG5vcm1hbDogew0KICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLA0KICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI2VhZWFlYScsDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgdG9vbHRpcDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBkYXRhOiBbMTAwXSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdnYXVnZScsDQogICAgICAgICAgICByYWRpdXM6ICc5OCUnLA0KICAgICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sDQogICAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsDQogICAgICAgICAgICBzdGFydEFuZ2xlOiAnMTAwJywNCiAgICAgICAgICAgIGVuZEFuZ2xlOiAnLTI2OS45OTk5JywNCiAgICAgICAgICAgIHNwbGl0TnVtYmVyOiAyMDAsIC8v57q/55qE5p2h5pWwDQogICAgICAgICAgICBwb2ludGVyOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNUaWNrOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc3BsaXRMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgIGxlbmd0aDogMTUsDQogICAgICAgICAgICAgIGxpbmVTdHlsZTogew0KICAgICAgICAgICAgICAgIGNvbG9yOiAnI2VhZWFlYScsDQogICAgICAgICAgICAgICAgd2lkdGg6IDEsDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc0xhYmVsOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdnYXVnZScsDQogICAgICAgICAgICByYWRpdXM6ICc4My41JScsDQogICAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwNCiAgICAgICAgICAgIGNsb2Nrd2lzZTogdHJ1ZSwNCiAgICAgICAgICAgIHN0YXJ0QW5nbGU6ICcxMDAnLA0KICAgICAgICAgICAgZW5kQW5nbGU6ICctMjY5Ljk5OTknLA0KICAgICAgICAgICAgc3BsaXROdW1iZXI6IDE0MCwgLy/nur/nmoTmnaHmlbANCiAgICAgICAgICAgIHBvaW50ZXI6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc0xpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc1RpY2s6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgdG9vbHRpcDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBzcGxpdExpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgbGVuZ3RoOiAxLA0KICAgICAgICAgICAgICBsaW5lU3R5bGU6IHsNCiAgICAgICAgICAgICAgICBjb2xvcjogJyNlYWVhZWEnLA0KICAgICAgICAgICAgICAgIHdpZHRoOiAyLA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgfSwNCiAgICAgICAgXSwNCiAgICAgIH0NCiAgICAgIGNoYXJ0RG9tLnNldE9wdGlvbihvcHRpb24pDQogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gew0KICAgICAgICBjaGFydERvbS5yZXNpemUoKQ0KICAgICAgfSkNCiAgICAgIGhhbmRsZUNoYXJ0TG9vcChvcHRpb24sIGNoYXJ0RG9tKTsNCiAgICAgIC8vIOmlvOWbvuiHquWKqOi9ruaSrQ0KICAgICAgZnVuY3Rpb24gaGFuZGxlQ2hhcnRMb29wKG9wdGlvbiwgbXlDaGFydCkgew0KICAgICAgICBpZiAoIW15Q2hhcnQpIHsNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMCAvLyDlvZPliY3pq5jkuq7lm77lvaLlnKjppbzlm77mlbDmja7kuK3nmoTkuIvmoIcNCiAgICAgICAgaGlnaGxpZ2h0UGllKCkNCiAgICAgICAgLy8g5Y+W5raI5omA5pyJ6auY5Lqu5bm26auY5Lqu5b2T5YmN5Zu+5b2iDQogICAgICAgIGZ1bmN0aW9uIGhpZ2hsaWdodFBpZSgpIHsNCiAgICAgICAgICAvLyDpgY3ljobppbzlm77mlbDmja7vvIzlj5bmtojmiYDmnInlm77lvaLnmoTpq5jkuq7mlYjmnpwNCiAgICAgICAgICBmb3IgKHZhciBpZHggaW4gb3B0aW9uLnNlcmllc1swXS5kYXRhKSB7DQogICAgICAgICAgICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsNCiAgICAgICAgICAgICAgdHlwZTogJ2Rvd25wbGF5JywNCiAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IDAsDQogICAgICAgICAgICAgIGRhdGFJbmRleDogaWR4DQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyDpq5jkuq7lvZPliY3lm77lvaINCiAgICAgICAgICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsNCiAgICAgICAgICAgIHR5cGU6ICdoaWdobGlnaHQnLA0KICAgICAgICAgICAgc2VyaWVzSW5kZXg6IDAsDQogICAgICAgICAgICBkYXRhSW5kZXg6IGN1cnJlbnRJbmRleA0KICAgICAgICAgIH0pDQogICAgICAgIH0NCiAgICAgICAgLy8gLy8g55So5oi36byg5qCH5oKs5rWu5Yiw5p+Q5LiA5Zu+5b2i5pe277yM5YGc5q2i6Ieq5Yqo5YiH5o2i5bm26auY5Lqu6byg5qCH5oKs5rWu55qE5Zu+5b2iDQogICAgICAgIG15Q2hhcnQub24oJ21vdXNlb3ZlcicsIChwYXJhbXMpID0+IHsNCiAgICAgICAgICBpZiAocGFyYW1zLmNvbXBvbmVudFR5cGUgPT0gJ2dyYXBoaWMnKSB7DQogICAgICAgICAgICByZXR1cm4NCiAgICAgICAgICB9DQogICAgICAgICAgY3VycmVudEluZGV4ID0gcGFyYW1zLmRhdGFJbmRleA0KICAgICAgICAgIGhpZ2hsaWdodFBpZSgpDQogICAgICAgIH0pDQogICAgICB9DQogICAgfSwNCiAgICAvL+i1hOS6p+ebmOa0uw0KICAgIGluaXRWaXRhbGl6ZUNoYXQoKSB7DQogICAgICBsZXQgZWNoYXJ0c0RhdGEgPSBbDQogICAgICAgIHsNCiAgICAgICAgICBuYW1lOiAn5b6F55uY5rS7JywNCiAgICAgICAgICB2YWx1ZTogMzAsDQogICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICBjb2xvcjogJyNGRkFFNUUnLA0KICAgICAgICAgIH0sDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBuYW1lOiAn5bey55uY5rS7JywNCiAgICAgICAgICB2YWx1ZTogMTIwLA0KICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgY29sb3I6ICcjNTVFREIwJywNCiAgICAgICAgICB9LA0KICAgICAgICB9DQogICAgICBdDQoNCiAgICAgIGxldCBjaGFydERvbSA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndml0YWxpemUtY2hhcnQnKSkNCiAgICAgIGxldCBvcHRpb24gPSB7DQogICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICB0cmlnZ2VyOiAnaXRlbScsDQogICAgICAgIH0sDQogICAgICAgIGxlZ2VuZDogew0KICAgICAgICAgIHg6ICdyaWdodCcsDQogICAgICAgICAgYWxpZ246ICdsZWZ0JywNCiAgICAgICAgICB0b3A6ICdjZW50ZXInLA0KICAgICAgICAgIG9yaWVudDogJ3ZlcnRpY2FsJywNCg0KICAgICAgICB9LA0KICAgICAgICBzZXJpZXM6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICBuYW1lOiAn6Z2i56evJywNCiAgICAgICAgICAgIHR5cGU6ICdwaWUnLA0KICAgICAgICAgICAgcmFkaXVzOiBbJzU1JScsICc2NyUnXSwNCiAgICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLA0KICAgICAgICAgICAgYXZvaWRMYWJlbE92ZXJsYXA6IGZhbHNlLA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI2ZmZicsDQogICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGxhYmVsOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsDQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICBlbXBoYXNpczogew0KICAgICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgICAgZm9udFNpemU6IDMwLA0KICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gKHBhcmFtcykgew0KICAgICAgICAgICAgICAgICAgcmV0dXJuIFsNCiAgICAgICAgICAgICAgICAgICAgJ3tudW18JyArDQogICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wZXJjZW50ICsNCiAgICAgICAgICAgICAgICAgICAgJ30nICsNCiAgICAgICAgICAgICAgICAgICAgJ3t1bml0fCV9JywNCiAgICAgICAgICAgICAgICAgICAgJ3tsYWJlbHwnICsgcGFyYW1zLm5hbWUgKyAnfScsDQogICAgICAgICAgICAgICAgICBdLmpvaW4oJ1xuJykNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJpY2g6IHsNCiAgICAgICAgICAgICAgICAgIG51bTogew0KICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMzAsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsDQogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLA0KICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAsDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgdW5pdDogew0KICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzExMScsDQogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLA0KICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBbMCwgNV0sDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDIwLA0KICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAzMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjNDQ0JywNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBsYWJlbExpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgZGF0YTogZWNoYXJ0c0RhdGEsDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAncGllJywNCiAgICAgICAgICAgIHJhZGl1czogWyc1MCUnLCAnNTAlJ10sDQogICAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwNCiAgICAgICAgICAgIGhvdmVyQW5pbWF0aW9uOiBmYWxzZSwNCiAgICAgICAgICAgIGNsb2NrV2lzZTogZmFsc2UsDQogICAgICAgICAgICBjdXJzb3I6ICdkZWZhdWx0JywNCiAgICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgICBub3JtYWw6IHsNCiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMiwNCiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJyNlYWVhZWEnLA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgZGF0YTogWzEwMF0sDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLA0KICAgICAgICAgICAgcmFkaXVzOiAnOTglJywNCiAgICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLA0KICAgICAgICAgICAgY2xvY2t3aXNlOiB0cnVlLA0KICAgICAgICAgICAgc3RhcnRBbmdsZTogJzEwMCcsDQogICAgICAgICAgICBlbmRBbmdsZTogJy0yNjkuOTk5OScsDQogICAgICAgICAgICBzcGxpdE51bWJlcjogMjAwLCAvL+e6v+eahOadoeaVsA0KICAgICAgICAgICAgcG9pbnRlcjogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzTGluZTogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzVGljazogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB0b29sdGlwOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHNwbGl0TGluZTogew0KICAgICAgICAgICAgICBzaG93OiB0cnVlLA0KICAgICAgICAgICAgICBsZW5ndGg6IDE1LA0KICAgICAgICAgICAgICBsaW5lU3R5bGU6IHsNCiAgICAgICAgICAgICAgICBjb2xvcjogJyNlYWVhZWEnLA0KICAgICAgICAgICAgICAgIHdpZHRoOiAxLA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLA0KICAgICAgICAgICAgcmFkaXVzOiAnODMuNSUnLA0KICAgICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sDQogICAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsDQogICAgICAgICAgICBzdGFydEFuZ2xlOiAnMTAwJywNCiAgICAgICAgICAgIGVuZEFuZ2xlOiAnLTI2OS45OTk5JywNCiAgICAgICAgICAgIHNwbGl0TnVtYmVyOiAxNDAsIC8v57q/55qE5p2h5pWwDQogICAgICAgICAgICBwb2ludGVyOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNUaWNrOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc3BsaXRMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgIGxlbmd0aDogMSwNCiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7DQogICAgICAgICAgICAgICAgY29sb3I6ICcjZWFlYWVhJywNCiAgICAgICAgICAgICAgICB3aWR0aDogMiwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzTGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgIH0sDQogICAgICAgIF0sDQogICAgICB9DQogICAgICBjaGFydERvbS5zZXRPcHRpb24ob3B0aW9uKQ0KICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHsNCiAgICAgICAgY2hhcnREb20ucmVzaXplKCkNCiAgICAgIH0pDQogICAgICBoYW5kbGVDaGFydExvb3Aob3B0aW9uLCBjaGFydERvbSk7DQogICAgICAvLyDppbzlm77oh6rliqjova7mkq0NCiAgICAgIGZ1bmN0aW9uIGhhbmRsZUNoYXJ0TG9vcChvcHRpb24sIG15Q2hhcnQpIHsNCiAgICAgICAgaWYgKCFteUNoYXJ0KSB7DQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IDAgLy8g5b2T5YmN6auY5Lqu5Zu+5b2i5Zyo6aW85Zu+5pWw5o2u5Lit55qE5LiL5qCHDQogICAgICAgIGhpZ2hsaWdodFBpZSgpDQogICAgICAgIC8vIOWPlua2iOaJgOaciemrmOS6ruW5tumrmOS6ruW9k+WJjeWbvuW9og0KICAgICAgICBmdW5jdGlvbiBoaWdobGlnaHRQaWUoKSB7DQogICAgICAgICAgLy8g6YGN5Y6G6aW85Zu+5pWw5o2u77yM5Y+W5raI5omA5pyJ5Zu+5b2i55qE6auY5Lqu5pWI5p6cDQogICAgICAgICAgZm9yICh2YXIgaWR4IGluIG9wdGlvbi5zZXJpZXNbMF0uZGF0YSkgew0KICAgICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7DQogICAgICAgICAgICAgIHR5cGU6ICdkb3ducGxheScsDQogICAgICAgICAgICAgIHNlcmllc0luZGV4OiAwLA0KICAgICAgICAgICAgICBkYXRhSW5kZXg6IGlkeA0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9DQogICAgICAgICAgLy8g6auY5Lqu5b2T5YmN5Zu+5b2iDQogICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7DQogICAgICAgICAgICB0eXBlOiAnaGlnaGxpZ2h0JywNCiAgICAgICAgICAgIHNlcmllc0luZGV4OiAwLA0KICAgICAgICAgICAgZGF0YUluZGV4OiBjdXJyZW50SW5kZXgNCiAgICAgICAgICB9KQ0KICAgICAgICB9DQogICAgICAgIC8vIC8vIOeUqOaIt+m8oOagh+aCrOa1ruWIsOafkOS4gOWbvuW9ouaXtu+8jOWBnOatouiHquWKqOWIh+aNouW5tumrmOS6rum8oOagh+aCrOa1rueahOWbvuW9og0KICAgICAgICBteUNoYXJ0Lm9uKCdtb3VzZW92ZXInLCAocGFyYW1zKSA9PiB7DQogICAgICAgICAgaWYgKHBhcmFtcy5jb21wb25lbnRUeXBlID09ICdncmFwaGljJykgew0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgfQ0KICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHBhcmFtcy5kYXRhSW5kZXgNCiAgICAgICAgICBoaWdobGlnaHRQaWUoKQ0KICAgICAgICB9KQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy/otYTkuqfnu7Tkv64NCiAgICBpbml0UmVwYWlyQ2hhdCgpIHsNCiAgICAgIGxldCBlY2hhcnRzRGF0YSA9IFsNCiAgICAgICAgew0KICAgICAgICAgIG5hbWU6ICflvoXnu7Tkv64nLA0KICAgICAgICAgIHZhbHVlOiAzMCwNCiAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgIGNvbG9yOiAnI0ZGQUU1RScsDQogICAgICAgICAgfSwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIG5hbWU6ICflt7LlrozmiJAnLA0KICAgICAgICAgIHZhbHVlOiAxMjAsDQogICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICBjb2xvcjogJyM1NUVEQjAnLA0KICAgICAgICAgIH0sDQogICAgICAgIH0NCiAgICAgIF0NCg0KICAgICAgbGV0IGNoYXJ0RG9tID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXBhaXItY2hhcnQnKSkNCiAgICAgIGxldCBvcHRpb24gPSB7DQogICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICB0cmlnZ2VyOiAnaXRlbScsDQogICAgICAgIH0sDQogICAgICAgIGxlZ2VuZDogew0KICAgICAgICAgIHg6ICdyaWdodCcsDQogICAgICAgICAgYWxpZ246ICdsZWZ0JywNCiAgICAgICAgICB0b3A6ICdjZW50ZXInLA0KICAgICAgICAgIG9yaWVudDogJ3ZlcnRpY2FsJywNCg0KICAgICAgICB9LA0KICAgICAgICBzZXJpZXM6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICBuYW1lOiAn6Z2i56evJywNCiAgICAgICAgICAgIHR5cGU6ICdwaWUnLA0KICAgICAgICAgICAgcmFkaXVzOiBbJzU1JScsICc2NyUnXSwNCiAgICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLA0KICAgICAgICAgICAgYXZvaWRMYWJlbE92ZXJsYXA6IGZhbHNlLA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI2ZmZicsDQogICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGxhYmVsOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsDQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICBlbXBoYXNpczogew0KICAgICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgICAgZm9udFNpemU6IDMwLA0KICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gKHBhcmFtcykgew0KICAgICAgICAgICAgICAgICAgcmV0dXJuIFsNCiAgICAgICAgICAgICAgICAgICAgJ3tudW18JyArDQogICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wZXJjZW50ICsNCiAgICAgICAgICAgICAgICAgICAgJ30nICsNCiAgICAgICAgICAgICAgICAgICAgJ3t1bml0fCV9JywNCiAgICAgICAgICAgICAgICAgICAgJ3tsYWJlbHwnICsgcGFyYW1zLm5hbWUgKyAnfScsDQogICAgICAgICAgICAgICAgICBdLmpvaW4oJ1xuJykNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJpY2g6IHsNCiAgICAgICAgICAgICAgICAgIG51bTogew0KICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMzAsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsDQogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLA0KICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAsDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgdW5pdDogew0KICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzExMScsDQogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLA0KICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBbMCwgNV0sDQogICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDIwLA0KICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAzMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjNDQ0JywNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBsYWJlbExpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgZGF0YTogZWNoYXJ0c0RhdGEsDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAncGllJywNCiAgICAgICAgICAgIHJhZGl1czogWyc1MCUnLCAnNTAlJ10sDQogICAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwNCiAgICAgICAgICAgIGhvdmVyQW5pbWF0aW9uOiBmYWxzZSwNCiAgICAgICAgICAgIGNsb2NrV2lzZTogZmFsc2UsDQogICAgICAgICAgICBjdXJzb3I6ICdkZWZhdWx0JywNCiAgICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgICBub3JtYWw6IHsNCiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMiwNCiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJyNlYWVhZWEnLA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgZGF0YTogWzEwMF0sDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLA0KICAgICAgICAgICAgcmFkaXVzOiAnOTglJywNCiAgICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLA0KICAgICAgICAgICAgY2xvY2t3aXNlOiB0cnVlLA0KICAgICAgICAgICAgc3RhcnRBbmdsZTogJzEwMCcsDQogICAgICAgICAgICBlbmRBbmdsZTogJy0yNjkuOTk5OScsDQogICAgICAgICAgICBzcGxpdE51bWJlcjogMjAwLCAvL+e6v+eahOadoeaVsA0KICAgICAgICAgICAgcG9pbnRlcjogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzTGluZTogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzVGljazogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB0b29sdGlwOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHNwbGl0TGluZTogew0KICAgICAgICAgICAgICBzaG93OiB0cnVlLA0KICAgICAgICAgICAgICBsZW5ndGg6IDE1LA0KICAgICAgICAgICAgICBsaW5lU3R5bGU6IHsNCiAgICAgICAgICAgICAgICBjb2xvcjogJyNlYWVhZWEnLA0KICAgICAgICAgICAgICAgIHdpZHRoOiAxLA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLA0KICAgICAgICAgICAgcmFkaXVzOiAnODMuNSUnLA0KICAgICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sDQogICAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsDQogICAgICAgICAgICBzdGFydEFuZ2xlOiAnMTAwJywNCiAgICAgICAgICAgIGVuZEFuZ2xlOiAnLTI2OS45OTk5JywNCiAgICAgICAgICAgIHNwbGl0TnVtYmVyOiAxNDAsIC8v57q/55qE5p2h5pWwDQogICAgICAgICAgICBwb2ludGVyOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNUaWNrOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc3BsaXRMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgIGxlbmd0aDogMSwNCiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7DQogICAgICAgICAgICAgICAgY29sb3I6ICcjZWFlYWVhJywNCiAgICAgICAgICAgICAgICB3aWR0aDogMiwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBheGlzTGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgIH0sDQogICAgICAgIF0sDQogICAgICB9DQogICAgICBjaGFydERvbS5zZXRPcHRpb24ob3B0aW9uKQ0KICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHsNCiAgICAgICAgY2hhcnREb20ucmVzaXplKCkNCiAgICAgIH0pDQogICAgICBoYW5kbGVDaGFydExvb3Aob3B0aW9uLCBjaGFydERvbSk7DQogICAgICAvLyDppbzlm77oh6rliqjova7mkq0NCiAgICAgIGZ1bmN0aW9uIGhhbmRsZUNoYXJ0TG9vcChvcHRpb24sIG15Q2hhcnQpIHsNCiAgICAgICAgaWYgKCFteUNoYXJ0KSB7DQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IDAgLy8g5b2T5YmN6auY5Lqu5Zu+5b2i5Zyo6aW85Zu+5pWw5o2u5Lit55qE5LiL5qCHDQogICAgICAgIGhpZ2hsaWdodFBpZSgpDQogICAgICAgIC8vIOWPlua2iOaJgOaciemrmOS6ruW5tumrmOS6ruW9k+WJjeWbvuW9og0KICAgICAgICBmdW5jdGlvbiBoaWdobGlnaHRQaWUoKSB7DQogICAgICAgICAgLy8g6YGN5Y6G6aW85Zu+5pWw5o2u77yM5Y+W5raI5omA5pyJ5Zu+5b2i55qE6auY5Lqu5pWI5p6cDQogICAgICAgICAgZm9yICh2YXIgaWR4IGluIG9wdGlvbi5zZXJpZXNbMF0uZGF0YSkgew0KICAgICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7DQogICAgICAgICAgICAgIHR5cGU6ICdkb3ducGxheScsDQogICAgICAgICAgICAgIHNlcmllc0luZGV4OiAwLA0KICAgICAgICAgICAgICBkYXRhSW5kZXg6IGlkeA0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9DQogICAgICAgICAgLy8g6auY5Lqu5b2T5YmN5Zu+5b2iDQogICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7DQogICAgICAgICAgICB0eXBlOiAnaGlnaGxpZ2h0JywNCiAgICAgICAgICAgIHNlcmllc0luZGV4OiAwLA0KICAgICAgICAgICAgZGF0YUluZGV4OiBjdXJyZW50SW5kZXgNCiAgICAgICAgICB9KQ0KICAgICAgICB9DQogICAgICAgIC8vIC8vIOeUqOaIt+m8oOagh+aCrOa1ruWIsOafkOS4gOWbvuW9ouaXtu+8jOWBnOatouiHquWKqOWIh+aNouW5tumrmOS6rum8oOagh+aCrOa1rueahOWbvuW9og0KICAgICAgICBteUNoYXJ0Lm9uKCdtb3VzZW92ZXInLCAocGFyYW1zKSA9PiB7DQogICAgICAgICAgaWYgKHBhcmFtcy5jb21wb25lbnRUeXBlID09ICdncmFwaGljJykgew0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgfQ0KICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHBhcmFtcy5kYXRhSW5kZXgNCiAgICAgICAgICBoaWdobGlnaHRQaWUoKQ0KICAgICAgICB9KQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy/otYTkuqflpITnva4NCiAgICBpbml0RGlzcG9zZUNoYXQoKSB7DQogICAgICBsZXQgZWNoYXJ0c0RhdGEgPSBbDQogICAgICAgIHsNCiAgICAgICAgICBuYW1lOiAn6LWE5Lqn5oql5bqfJywNCiAgICAgICAgICB2YWx1ZTogMzAsDQogICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICBjb2xvcjogJyMxOThDRkYnLA0KICAgICAgICAgIH0sDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBuYW1lOiAn6LWE5Lqn6L2s6K6pJywNCiAgICAgICAgICB2YWx1ZTogMTIwLA0KICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgY29sb3I6ICcjNTVFREIwJywNCiAgICAgICAgICB9LA0KICAgICAgICB9DQogICAgICBdDQoNCiAgICAgIGxldCBjaGFydERvbSA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzcG9zZS1jaGFydCcpKQ0KICAgICAgbGV0IG9wdGlvbiA9IHsNCiAgICAgICAgdG9vbHRpcDogew0KICAgICAgICAgIHRyaWdnZXI6ICdpdGVtJywNCiAgICAgICAgfSwNCiAgICAgICAgbGVnZW5kOiB7DQogICAgICAgICAgeDogJ3JpZ2h0JywNCiAgICAgICAgICBhbGlnbjogJ2xlZnQnLA0KICAgICAgICAgIHRvcDogJ2NlbnRlcicsDQogICAgICAgICAgb3JpZW50OiAndmVydGljYWwnLA0KDQogICAgICAgIH0sDQogICAgICAgIHNlcmllczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfpnaLnp68nLA0KICAgICAgICAgICAgdHlwZTogJ3BpZScsDQogICAgICAgICAgICByYWRpdXM6IFsnNTUlJywgJzY3JSddLA0KICAgICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sDQogICAgICAgICAgICBhdm9pZExhYmVsT3ZlcmxhcDogZmFsc2UsDQogICAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjZmZmJywNCiAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJywNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIGVtcGhhc2lzOiB7DQogICAgICAgICAgICAgIGxhYmVsOiB7DQogICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgICBmb250U2l6ZTogMzAsDQogICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiAocGFyYW1zKSB7DQogICAgICAgICAgICAgICAgICByZXR1cm4gWw0KICAgICAgICAgICAgICAgICAgICAne251bXwnICsNCiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnZhbHVlICsNCiAgICAgICAgICAgICAgICAgICAgJ30nICsNCiAgICAgICAgICAgICAgICAgICAgJ3t1bml0fOS4qn0nLA0KICAgICAgICAgICAgICAgICAgICAne2xhYmVsfCcgKyBwYXJhbXMubmFtZSArICd9JywNCiAgICAgICAgICAgICAgICAgIF0uam9pbignXG4nKQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgcmljaDogew0KICAgICAgICAgICAgICAgICAgbnVtOiB7DQogICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAzMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMDAwJywNCiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMzAsDQogICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCwNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICB1bml0OiB7DQogICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxNCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMTExJywNCiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMzAsDQogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IFswLCA1XSwNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMjAsDQogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLA0KICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyM0NDQnLA0KICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGxhYmVsTGluZTogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBkYXRhOiBlY2hhcnRzRGF0YSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdwaWUnLA0KICAgICAgICAgICAgcmFkaXVzOiBbJzUwJScsICc1MCUnXSwNCiAgICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLA0KICAgICAgICAgICAgaG92ZXJBbmltYXRpb246IGZhbHNlLA0KICAgICAgICAgICAgY2xvY2tXaXNlOiBmYWxzZSwNCiAgICAgICAgICAgIGN1cnNvcjogJ2RlZmF1bHQnLA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIG5vcm1hbDogew0KICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLA0KICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI2VhZWFlYScsDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgdG9vbHRpcDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBkYXRhOiBbMTAwXSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdnYXVnZScsDQogICAgICAgICAgICByYWRpdXM6ICc5OCUnLA0KICAgICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sDQogICAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsDQogICAgICAgICAgICBzdGFydEFuZ2xlOiAnMTAwJywNCiAgICAgICAgICAgIGVuZEFuZ2xlOiAnLTI2OS45OTk5JywNCiAgICAgICAgICAgIHNwbGl0TnVtYmVyOiAyMDAsIC8v57q/55qE5p2h5pWwDQogICAgICAgICAgICBwb2ludGVyOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNUaWNrOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHRvb2x0aXA6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc3BsaXRMaW5lOiB7DQogICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgIGxlbmd0aDogMTUsDQogICAgICAgICAgICAgIGxpbmVTdHlsZTogew0KICAgICAgICAgICAgICAgIGNvbG9yOiAnI2VhZWFlYScsDQogICAgICAgICAgICAgICAgd2lkdGg6IDEsDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc0xhYmVsOiB7DQogICAgICAgICAgICAgIHNob3c6IGZhbHNlLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdnYXVnZScsDQogICAgICAgICAgICByYWRpdXM6ICc4My41JScsDQogICAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwNCiAgICAgICAgICAgIGNsb2Nrd2lzZTogdHJ1ZSwNCiAgICAgICAgICAgIHN0YXJ0QW5nbGU6ICcxMDAnLA0KICAgICAgICAgICAgZW5kQW5nbGU6ICctMjY5Ljk5OTknLA0KICAgICAgICAgICAgc3BsaXROdW1iZXI6IDE0MCwgLy/nur/nmoTmnaHmlbANCiAgICAgICAgICAgIHBvaW50ZXI6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc0xpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXhpc1RpY2s6IHsNCiAgICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgdG9vbHRpcDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBzcGxpdExpbmU6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgbGVuZ3RoOiAxLA0KICAgICAgICAgICAgICBsaW5lU3R5bGU6IHsNCiAgICAgICAgICAgICAgICBjb2xvcjogJyNlYWVhZWEnLA0KICAgICAgICAgICAgICAgIHdpZHRoOiAyLA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF4aXNMYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiBmYWxzZSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgfSwNCiAgICAgICAgXSwNCiAgICAgIH0NCiAgICAgIGNoYXJ0RG9tLnNldE9wdGlvbihvcHRpb24pDQogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gew0KICAgICAgICBjaGFydERvbS5yZXNpemUoKQ0KICAgICAgfSkNCiAgICAgIGhhbmRsZUNoYXJ0TG9vcChvcHRpb24sIGNoYXJ0RG9tKTsNCiAgICAgIC8vIOmlvOWbvuiHquWKqOi9ruaSrQ0KICAgICAgZnVuY3Rpb24gaGFuZGxlQ2hhcnRMb29wKG9wdGlvbiwgbXlDaGFydCkgew0KICAgICAgICBpZiAoIW15Q2hhcnQpIHsNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMCAvLyDlvZPliY3pq5jkuq7lm77lvaLlnKjppbzlm77mlbDmja7kuK3nmoTkuIvmoIcNCiAgICAgICAgaGlnaGxpZ2h0UGllKCkNCiAgICAgICAgLy8g5Y+W5raI5omA5pyJ6auY5Lqu5bm26auY5Lqu5b2T5YmN5Zu+5b2iDQogICAgICAgIGZ1bmN0aW9uIGhpZ2hsaWdodFBpZSgpIHsNCiAgICAgICAgICAvLyDpgY3ljobppbzlm77mlbDmja7vvIzlj5bmtojmiYDmnInlm77lvaLnmoTpq5jkuq7mlYjmnpwNCiAgICAgICAgICBmb3IgKHZhciBpZHggaW4gb3B0aW9uLnNlcmllc1swXS5kYXRhKSB7DQogICAgICAgICAgICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsNCiAgICAgICAgICAgICAgdHlwZTogJ2Rvd25wbGF5JywNCiAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IDAsDQogICAgICAgICAgICAgIGRhdGFJbmRleDogaWR4DQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyDpq5jkuq7lvZPliY3lm77lvaINCiAgICAgICAgICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsNCiAgICAgICAgICAgIHR5cGU6ICdoaWdobGlnaHQnLA0KICAgICAgICAgICAgc2VyaWVzSW5kZXg6IDAsDQogICAgICAgICAgICBkYXRhSW5kZXg6IGN1cnJlbnRJbmRleA0KICAgICAgICAgIH0pDQogICAgICAgIH0NCiAgICAgICAgLy8gLy8g55So5oi36byg5qCH5oKs5rWu5Yiw5p+Q5LiA5Zu+5b2i5pe277yM5YGc5q2i6Ieq5Yqo5YiH5o2i5bm26auY5Lqu6byg5qCH5oKs5rWu55qE5Zu+5b2iDQogICAgICAgIG15Q2hhcnQub24oJ21vdXNlb3ZlcicsIChwYXJhbXMpID0+IHsNCiAgICAgICAgICBpZiAocGFyYW1zLmNvbXBvbmVudFR5cGUgPT0gJ2dyYXBoaWMnKSB7DQogICAgICAgICAgICByZXR1cm4NCiAgICAgICAgICB9DQogICAgICAgICAgY3VycmVudEluZGV4ID0gcGFyYW1zLmRhdGFJbmRleA0KICAgICAgICAgIGhpZ2hsaWdodFBpZSgpDQogICAgICAgIH0pDQogICAgICB9DQogICAgfSwNCg0KICB9LA0KICBiZWZvcmVEZXN0cm95KCkgeyB9LA0KfQ0K"},null]}