@tricoteuses/assemblee 1.8.0 → 1.9.1
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/lib/bugs/acteur-00010/plugin.test.js +2 -2
- package/lib/bugs/acteur-00010.js +3 -3
- package/lib/bugs/agenda-00002/plugin.test.js +3 -3
- package/lib/bugs/agenda-00002.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.js +2 -2
- package/lib/bugs/agenda-00008.js +3 -3
- package/lib/bugs/agenda-00011/plugin.test.js +6 -6
- package/lib/bugs/agenda-00011.js +8 -8
- package/lib/bugs.js +11 -11
- package/lib/cleaners/index.d.ts +1 -0
- package/lib/cleaners/index.js +8 -1
- package/lib/cleaners/index.mjs +2 -1
- package/lib/cleaners/scrutins.js +2 -1
- package/lib/cleaners/scrutins.mjs +3 -2
- package/lib/cleaners/textes_loi.d.ts +1 -0
- package/lib/cleaners/textes_loi.js +12 -0
- package/lib/cleaners/textes_loi.mjs +5 -0
- package/lib/cleaners/xml.d.ts +3 -0
- package/lib/cleaners/xml.js +13 -1
- package/lib/cleaners/xml.mjs +11 -1
- package/lib/datasets.d.ts +9 -2
- package/lib/datasets.js +24 -3
- package/lib/datasets.mjs +24 -3
- package/lib/dates.js +3 -3
- package/lib/examples/PIONANR5L15B0020/input.d.ts +2 -0
- package/lib/examples/PIONANR5L15B0020/input.js +10 -0
- package/lib/examples/PIONANR5L15B0020/input.mjs +193 -0
- package/lib/examples/PRJLANR5L16B0914/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B0914/input.js +10 -0
- package/lib/examples/PRJLANR5L16B0914/input.mjs +322 -0
- package/lib/examples/PRJLANR5L16B2014/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2014/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2014/input.mjs +577 -0
- package/lib/examples/PRJLANR5L16B2424/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2424/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2424/input.mjs +322 -0
- package/lib/examples/PRJLANR5L16B2462/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2462/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2462/input.mjs +1308 -0
- package/lib/loaders.d.ts +5 -0
- package/lib/loaders.js +308 -262
- package/lib/loaders.mjs +16 -3
- package/lib/logger.d.ts +16 -0
- package/lib/logger.js +35 -0
- package/lib/logger.mjs +26 -0
- package/lib/parsers/documents.js +2 -2
- package/lib/parsers/textes_lois.d.ts +16 -1
- package/lib/parsers/textes_lois.js +733 -28
- package/lib/parsers/textes_lois.mjs +587 -22
- package/lib/raw_types/acteurs_et_organes.js +1 -1
- package/lib/raw_types/agendas.js +1 -1
- package/lib/raw_types/amendements.js +1 -1
- package/lib/raw_types/debats.js +1 -1
- package/lib/raw_types/dossiers_legislatifs.js +1 -1
- package/lib/raw_types/questions.js +1 -1
- package/lib/raw_types/scrutins.d.ts +18 -13
- package/lib/raw_types/scrutins.js +28 -14
- package/lib/raw_types/scrutins.mjs +28 -14
- package/lib/raw_types/textes_loi.d.ts +93 -0
- package/lib/raw_types/textes_loi.js +429 -0
- package/lib/raw_types/textes_loi.mjs +378 -0
- package/lib/scripts/bugs_helper.js +9 -9
- package/lib/scripts/document_dossiers_legislatifs.js +1 -1
- package/lib/scripts/process_open_dataset.d.ts +17 -0
- package/lib/scripts/process_open_dataset.js +302 -0
- package/lib/scripts/process_open_dataset.mjs +136 -0
- package/lib/scripts/process_textes_loi_dataset.d.ts +7 -0
- package/lib/scripts/process_textes_loi_dataset.js +374 -0
- package/lib/scripts/process_textes_loi_dataset.mjs +237 -0
- package/lib/scripts/raw_types_from_amendements.js +2 -2
- package/lib/scripts/reorganize_data.js +1 -1
- package/lib/scripts/reorganize_data.mjs +1 -1
- package/lib/scripts/retrieve_deputes_photos.js +3 -3
- package/lib/scripts/retrieve_documents.js +4 -4
- package/lib/scripts/retrieve_open_data.js +41 -279
- package/lib/scripts/retrieve_open_data.mjs +13 -126
- package/lib/scripts/retrieve_pending_amendments.js +2 -2
- package/lib/scripts/retrieve_senateurs_photos.js +2 -2
- package/lib/scripts/retrieve_textes_lois.js +2 -2
- package/lib/scripts/shared/cli_helpers.d.ts +5 -0
- package/lib/scripts/shared/cli_helpers.js +7 -2
- package/lib/scripts/shared/cli_helpers.mjs +6 -1
- package/lib/scripts/test_iter_load.js +25 -10
- package/lib/scripts/test_iter_load.mjs +19 -11
- package/lib/scripts/validate_json.js +3 -3
- package/lib/types/acteurs_et_organes.js +1 -1
- package/lib/types/agendas.js +1 -1
- package/lib/types/amendements.js +1 -1
- package/lib/types/debats.js +1 -1
- package/lib/types/dossiers_legislatifs.js +1 -1
- package/lib/types/questions.js +1 -1
- package/lib/types/scrutins.d.ts +6 -3
- package/lib/types/scrutins.js +13 -7
- package/lib/types/scrutins.mjs +13 -7
- package/lib/types/textes_loi.d.ts +94 -0
- package/lib/types/textes_loi.js +429 -0
- package/lib/types/textes_loi.mjs +378 -0
- package/package.json +13 -12
- package/lib/scripts/retrieve_textes_lois_llm.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois_llm.js +0 -188
- package/lib/scripts/retrieve_textes_lois_llm.mjs +0 -85
|
@@ -802,4 +802,4 @@ function main(argv) {
|
|
|
802
802
|
|
|
803
803
|
/* istanbul ignore if */
|
|
804
804
|
if (process.argv[1].endsWith("reorganize_data.ts")) process.exit(main(process.argv));
|
|
805
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kYXRhc2V0cyIsIl9kYXRlcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZpbGVfc3lzdGVtcyIsIl9sb2FkZXJzIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfY2xpX2hlbHBlcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwibyIsIm5leHQiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJjbG9uZU9wdGlvbiIsImNvbW1pdE9wdGlvbiIsImNhdGVnb3JpZXNPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsInJlbW90ZU9wdGlvbiIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsInB1bGxPcHRpb24iLCJhbGlhcyIsImhlbHAiLCJ0eXBlIiwiQm9vbGVhbiIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJjbGVhckRpcmVjdG9yeSIsImRpclBhdGgiLCJmcyIsImVuc3VyZURpclN5bmMiLCJfaXRlcmF0b3IiLCJyZWFkZGlyU3luYyIsIl9zdGVwIiwiZmlsZW5hbWUiLCJzdGFydHNXaXRoIiwicmVtb3ZlU3luYyIsInBhdGgiLCJqb2luIiwiZXJyIiwiY2xvbmVHaXQiLCJnaXRHcm91cFVybCIsImRhdGFzZXROYW1lIiwiZGF0YURpciIsImNsb25lIiwicmVvcmdhbml6ZURhdGEiLCJfb3B0aW9ucyRjbG9uZSIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiY29tbWl0IiwidHJpbSIsInJlcGxhY2UiLCJ2YWxpZGF0ZVJhd0RhdGEiLCJlbmFibGVkRGF0YXNldHMiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiY2hvc2VuRGF0YXNldHMiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImNvbW1pdEdpdCIsImRhdGFzZXRSZW9yZ2FuaXplZERpciIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMiIsImFjdGV1cnNFdE9yZ2FuZXMiLCJfc3RlcDIiLCJkYXRhc2V0Iiwib3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJiYXNlbmFtZSIsInB1bGwiLCJyZXNldEFuZFB1bGwiLCJhY3RldXJzUmVvcmdhbml6ZWREaXIiLCJta2RpclN5bmMiLCJvcmdhbmVzUmVvcmdhbml6ZWREaXIiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2luZ2xlRmlsZSIsIm9yaWdpbmFsSnNvbiIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwib3JpZ2luYWxEYXRhIiwiQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJKU09OIiwicGFyc2UiLCJfaXRlcmF0b3IzIiwiYWN0ZXVycyIsImFjdGV1ciIsIl9zdGVwMyIsInJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwidWlkIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsIl9pdGVyYXRvcjQiLCJvcmdhbmVzIiwib3JnYW5lIiwiX3N0ZXA0IiwiU2VnbWVudGVkRmlsZXMiLCJkZXBvcnRzQnlBY3RldXJVaWQiLCJleGlzdHNTeW5jIiwiX2l0ZXJhdG9yNSIsIndhbGtEaXIiLCJfc3RlcDUiLCJkZXBvcnRTcGxpdFBhdGgiLCJkZXBvcnRGaWxlbmFtZSIsImVuZHNXaXRoIiwiZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCIsImFwcGx5IiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwidW5kZWZpbmVkIiwicHVzaCIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJ2YWx1ZXMiLCJzb3J0IiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwibWFuZGF0U3BsaXRQYXRoIiwibWFuZGF0RmlsZW5hbWUiLCJtYW5kYXRPcmlnaW5hbEZpbGVQYXRoIiwibWFuZGF0T3JpZ2luYWxKc29uIiwibWFuZGF0T3JpZ2luYWwiLCJ0b01hbmRhdFdyYXBwZXIiLCJtYW5kYXQiLCJtYW5kYXRzIiwiX2kyIiwiX09iamVjdCR2YWx1ZXMyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCIsImFjdGV1ck9yaWdpbmFsSnNvbiIsImFjdGV1ck9yaWdpbmFsIiwidG9BY3RldXIiLCJhY3RldXJVaWQiLCJhc3NlcnQiLCJzdHJpY3RFcXVhbCIsImFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiX2l0ZXJhdG9yOCIsIl9zdGVwOCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lT3JpZ2luYWxGaWxlUGF0aCIsIm9yZ2FuZU9yaWdpbmFsSnNvbiIsIm9yZ2FuZU9yaWdpbmFsIiwidG9PcmdhbmUiLCJvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIkFnZW5kYXMiLCJfaXRlcmF0b3I5IiwiYWdlbmRhcyIsIl9zdGVwOSIsIkFnZW5kYXNSYXdDb252ZXJ0IiwidG9BZ2VuZGFzIiwiX2l0ZXJhdG9yMTAiLCJyZXVuaW9ucyIsInJldW5pb24iLCJfc3RlcDEwIiwid3JpdGVSZW9yZ2FuaXplZEpzb24iLCJwYXRoRnJvbVJldW5pb25VaWQiLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMiIsImFtZW5kZW1lbnRzIiwiX3N0ZXAxMiIsIkFtZW5kZW1lbnRzUmF3Q29udmVydCIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMyIsInRleHRlc0V0QW1lbmRlbWVudHMiLCJ0ZXh0ZWxlZyIsIl9zdGVwMTMiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMTUiLCJfc3RlcDE1IiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXAxNiIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwiRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IxNyIsInRleHRlc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnQiLCJfc3RlcDE3IiwicGF0aEZyb21Eb2N1bWVudFVpZCIsIl9pdGVyYXRvcjE4IiwiZG9zc2llciIsIl9zdGVwMTgiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJfaXRlcmF0b3IxOSIsIl9zdGVwMTkiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgiLCJkb2N1bWVudE9yaWdpbmFsSnNvbiIsImRvY3VtZW50T3JpZ2luYWwiLCJ0b0RvY3VtZW50IiwiX2l0ZXJhdG9yMjAiLCJfc3RlcDIwIiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIlNjcnV0aW5zIiwiX2l0ZXJhdG9yMjEiLCJzY3J1dGlucyIsIl9zdGVwMjEiLCJTY3J1dGluc1Jhd0NvbnZlcnQiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yMjIiLCJzY3J1dGluIiwiX3N0ZXAyMiIsInBhdGhGcm9tU2NydXRpblVpZCIsIl9pdGVyYXRvcjIzIiwiX3N0ZXAyMyIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJzY3J1dGluT3JpZ2luYWwiLCJ0b1NjcnV0aW5XcmFwcGVyIiwiUXVlc3Rpb25zIiwiX2l0ZXJhdG9yMjQiLCJxdWVzdGlvbnMiLCJfc3RlcDI0IiwiX2l0ZXJhdG9yMjUiLCJfc3RlcDI1IiwicXVlc3Rpb25TcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoIiwicXVlc3Rpb25PcmlnaW5hbEpzb24iLCJxdWVzdGlvbk9yaWdpbmFsIiwiUXVlc3Rpb25zUmF3Q29udmVydCIsInRvUXVlc3Rpb25XcmFwcGVyIiwicXVlc3Rpb24iLCJwYXRoRnJvbVF1ZXN0aW9uVWlkIiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfaXRlcmF0b3IyNiIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX3N0ZXAyNiIsIl9pdGVyYXRvcjI3IiwiX3N0ZXAyNyIsImNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbCIsIkNvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IiwidG9Db21wdGVSZW5kdVdyYXBwZXIiLCJjb21wdGVSZW5kdVNlYW5jZSIsImNvbXB0ZVJlbmR1IiwicGF0aEZyb21Db21wdGVSZW5kdVVpZCIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInVpZFRleHRlTGVnaXNsYXRpZiIsInRleHRlTGVnaXNsYXRpZlJlZiIsIm5vdFN0cmljdEVxdWFsIiwidGV4dGVMZWdpc2xhdGlmRGlyIiwiZGlyIiwib2JqIiwicGF0aEZyb21VaWQiLCJtYWluIiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgZGF0YXNldHMsXG4gIERhdGFzZXRTdHJ1Y3R1cmUsXG4gIEVuYWJsZWREYXRhc2V0cyxcbiAgZ2V0RW5hYmxlZERhdGFzZXRzLFxuICBmaWx0ZXJCeUxlZ2lzbGF0dXJlLFxufSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkLFxuICBwYXRoRnJvbURvY3VtZW50VWlkLFxuICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICBwYXRoRnJvbVF1ZXN0aW9uVWlkLFxuICBwYXRoRnJvbVJldW5pb25VaWQsXG4gIHBhdGhGcm9tU2NydXRpblVpZCxcbn0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kZWJhdHNcIlxuaW1wb3J0IHtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIGNsb25lT3B0aW9uLFxuICAgIGNvbW1pdE9wdGlvbixcbiAgICBjYXRlZ29yaWVzT3B0aW9uLFxuICAgIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICAgIHJlbW90ZU9wdGlvbixcbiAgICBzaWxlbnRPcHRpb24sXG4gICAgdmVyYm9zZU9wdGlvbixcbiAgICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgICBwdWxsT3B0aW9uLFxuICAgIHtcbiAgICAgIGFsaWFzOiBcIlZcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgdmFsaWRhdGUgcmF3IGRhdGFcIixcbiAgICAgIG5hbWU6IFwibm8tdmFsaWRhdGUtcmF3XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbGVhckRpcmVjdG9yeShkaXJQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgZnMuZW5zdXJlRGlyU3luYyhkaXJQYXRoKVxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRpclBhdGgpKSB7XG4gICAgaWYgKCFmaWxlbmFtZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGlyUGF0aCwgZmlsZW5hbWUpKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9uZUdpdChcbiAgZ2l0R3JvdXBVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZGF0YXNldE5hbWU6IHN0cmluZyxcbiAgZGF0YURpcjogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGdpdC5jbG9uZShnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG59XG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cbiAgbGV0IGV4aXRDb2RlID0gb3B0aW9ucy5jb21taXQgPyAxMCA6IDBcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lPy50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICBjb25zdCB2YWxpZGF0ZVJhd0RhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlLXJhd1wiXVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBnZXRFbmFibGVkRGF0YXNldHMob3B0aW9ucy5jYXRlZ29yaWVzKVxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBmaWx0ZXJCeUxlZ2lzbGF0dXJlKGRhdGFzZXRzLCBvcHRpb25zLmxlZ2lzbGF0dXJlKVxuXG4gIGZ1bmN0aW9uIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXI6IHN0cmluZywgb3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICApXG4gICAgICBpZiAoXG4gICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZ2l0LnJlc2V0QW5kUHVsbChkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICB9XG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIGNvbnN0IGFjdGV1cnNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiYWN0ZXVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGFjdGV1cnNSZW9yZ2FuaXplZERpcilcbiAgICAgIGNvbnN0IG9yZ2FuZXNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwib3JnYW5lc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKG9yZ2FuZXNSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXIgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5hY3RldXJzLmFjdGV1cikge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXIudWlkW1wiI3RleHRcIl0gKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQub3JnYW5lcy5vcmdhbmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGRlcG9ydHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiZGVwb3J0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcImRlcG9ydFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIGRlcG9ydFNwbGl0UGF0aFtkZXBvcnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIWRlcG9ydEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4uZGVwb3J0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcImRlcG9ydFwiIGZpbGU6ICR7ZGVwb3J0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIGRlcG9ydE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9EZXBvcnQoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnQgPSBkZXBvcnRPcmlnaW5hbC5kZXBvcnRcbiAgICAgICAgICAgICAgICBsZXQgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChkZXBvcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZXBvcnRzLnB1c2goZGVwb3J0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRzIG9mIE9iamVjdC52YWx1ZXMoZGVwb3J0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIGRlcG9ydHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hbmRhdHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwibWFuZGF0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcIm1hbmRhdFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIG1hbmRhdFNwbGl0UGF0aFttYW5kYXRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIW1hbmRhdEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4ubWFuZGF0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcIm1hbmRhdFwiIGZpbGU6ICR7bWFuZGF0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9NYW5kYXRXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG1hbmRhdE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXQgPSBtYW5kYXRPcmlnaW5hbC5tYW5kYXRcbiAgICAgICAgICAgICAgICBsZXQgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChtYW5kYXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYW5kYXRzLnB1c2gobWFuZGF0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRzIG9mIE9iamVjdC52YWx1ZXMobWFuZGF0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIG1hbmRhdHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImFjdGV1clwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmFjdGV1clNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJhY3RldXJcIiBmaWxlOiAke2FjdGV1ck9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cihhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyID0gYWN0ZXVyT3JpZ2luYWwuYWN0ZXVyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clVpZCA9IGFjdGV1ci51aWRbXCIjdGV4dFwiXVxuICAgICAgICAgICAgICBjb25zdCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIuZGVwb3J0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5kZXBvcnRzID0geyBkZXBvcnQ6IGRlcG9ydHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAobWFuZGF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5tYW5kYXRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLm1hbmRhdHMgPSB7IG1hbmRhdDogbWFuZGF0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyVWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJvcmdhbmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5vcmdhbmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwib3JnYW5lXCIgZmlsZTogJHtvcmdhbmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9PcmdhbmUob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IG9yZ2FuZU9yaWdpbmFsLm9yZ2FuZVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvQWdlbmRhcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBvcmlnaW5hbERhdGEucmV1bmlvbnMucmV1bmlvbikge1xuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgcmV1bmlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVJldW5pb25VaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJyZXVuaW9uXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicmV1bmlvblwiIGZpbGU6ICR7cmV1bmlvbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJldW5pb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b1JldW5pb24ocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbiA9IHJldW5pb25PcmlnaW5hbC5yZXVuaW9uXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICByZXVuaW9uLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9jdW1lbnRzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9jdW1lbnRzRGlyKVxuICAgICAgY29uc3QgZG9zc2llcnNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvc3NpZXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9zc2llcnNEaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC50ZXh0ZXNMZWdpc2xhdGlmc1xuICAgICAgICAgICAgICAuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudCwgcGF0aEZyb21Eb2N1bWVudFVpZClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlIH0gb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydFxuICAgICAgICAgICAgICAuZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJzRGlyLFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9jdW1lbnRcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb2N1bWVudFwiIGZpbGU6ICR7ZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRPcmlnaW5hbC5kb2N1bWVudFxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50LCBwYXRoRnJvbURvY3VtZW50VWlkKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiIGZpbGU6ICR7ZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShcbiAgICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbC5kb3NzaWVyUGFybGVtZW50YWlyZVxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAobGV0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbnMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygb3JpZ2luYWxEYXRhLnNjcnV0aW5zLnNjcnV0aW4pIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIHNjcnV0aW4sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21TY3J1dGluVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInNjcnV0aW5cIiBmaWxlOiAke3NjcnV0aW5PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbldyYXBwZXIoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbiA9IHNjcnV0aW5PcmlnaW5hbC5zY3J1dGluXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBzY3J1dGluLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5xdWVzdGlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJxdWVzdGlvblwiIGZpbGU6ICR7cXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBRdWVzdGlvbnNSYXdDb252ZXJ0LnRvUXVlc3Rpb25XcmFwcGVyKHF1ZXN0aW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBxdWVzdGlvbk9yaWdpbmFsLnF1ZXN0aW9uXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBxdWVzdGlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVF1ZXN0aW9uVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCIueG1sXCIpXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJjb21wdGVSZW5kdVNlYW5jZVwiIGZpbGU6ICR7Y29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQudG9Db21wdGVSZW5kdVdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZSA9IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwuY29tcHRlUmVuZHVcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tQ29tcHRlUmVuZHVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgZGF0YXNldFJlb3JnYW5pemVkRGlyOiBzdHJpbmcsXG4gIGFtZW5kZW1lbnQ6IHtcbiAgICB1aWQ6IHN0cmluZ1xuICAgIHRleHRlTGVnaXNsYXRpZlJlZjogc3RyaW5nXG4gIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID0gYW1lbmRlbWVudC50ZXh0ZUxlZ2lzbGF0aWZSZWZcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHVpZFRleHRlTGVnaXNsYXRpZiwgdW5kZWZpbmVkKVxuICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWZEaXIgPSBwYXRoLmpvaW4oXG4gICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgIHVpZFRleHRlTGVnaXNsYXRpZixcbiAgKVxuICBmcy5lbnN1cmVEaXJTeW5jKHRleHRlTGVnaXNsYXRpZkRpcilcbiAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgdGV4dGVMZWdpc2xhdGlmRGlyLFxuICAgIGFtZW5kZW1lbnQudWlkICsgXCIuanNvblwiLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZW9yZ2FuaXplZEpzb248VCBleHRlbmRzIHsgdWlkOiBzdHJpbmcgfT4oXG4gIGRpcjogc3RyaW5nLFxuICBvYmo6IFQsXG4gIHBhdGhGcm9tVWlkOiAoZGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKSA9PiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVVpZChkaXIsIG9iai51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIHJlb3JnYW5pemVEYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJlb3JnYW5pemVfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQU9BLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEdBQUEsR0FBQUMsdUJBQUEs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Siw4QkFBOEJBLENBQ3JDMUkscUJBQTZCLEVBQzdCeUksVUFHQyxFQUNLO0VBQ04sSUFBTThGLGtCQUFrQixHQUFHOUYsVUFBVSxDQUFDK0Ysa0JBQWtCO0VBQ3hENUksa0JBQU0sQ0FBQzZJLGNBQWMsQ0FBQ0Ysa0JBQWtCLEVBQUV6SyxTQUFTLENBQUM7RUFDcEQsSUFBTTRLLGtCQUFrQixHQUFHclEsZ0JBQUksQ0FBQ0MsSUFBSSxDQUNsQzBCLHFCQUFxQixFQUNyQnVPLGtCQUNGLENBQUM7RUFDRDFRLG1CQUFFLENBQUNDLGFBQWEsQ0FBQzRRLGtCQUFrQixDQUFDO0VBQ3BDLElBQU10TSx1QkFBdUIsR0FBRy9ELGdCQUFJLENBQUNDLElBQUksQ0FDdkNvUSxrQkFBa0IsRUFDbEJqRyxVQUFVLENBQUNwRyxHQUFHLEdBQUcsT0FDbkIsQ0FBQztFQUNEeEUsbUJBQUUsQ0FBQ3lFLGFBQWEsQ0FDZEYsdUJBQXVCLEVBQ3ZCTixJQUFJLENBQUNTLFNBQVMsQ0FBQ2tHLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ25DO0lBQ0UvRyxRQUFRLEVBQUU7RUFDWixDQUNGLENBQUM7QUFDSDtBQUVBLFNBQVN3RixvQkFBb0JBLENBQzNCeUgsR0FBVyxFQUNYQyxHQUFNLEVBQ05DLFdBQWlELEVBQzNDO0VBQ04sSUFBTTlOLFFBQVEsR0FBRzhOLFdBQVcsQ0FBQ0YsR0FBRyxFQUFFQyxHQUFHLENBQUN2TSxHQUFHLENBQUM7RUFDMUN4RSxtQkFBRSxDQUFDeUUsYUFBYSxJQUFBeEIsTUFBQSxDQUFJQyxRQUFRLFlBQVNlLElBQUksQ0FBQ1MsU0FBUyxDQUFDcU0sR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNqRWxOLFFBQVEsRUFBRTtFQUNaLENBQUMsQ0FBQztBQUNKO0FBRUEsU0FBU29OLElBQUlBLENBQUNwUyxJQUFTLEVBQVU7RUFDL0IsSUFBTWUsT0FBTyxHQUFHaEIsU0FBUyxDQUFDQyxJQUFJLENBQUM7RUFDL0IsT0FBT21DLGNBQWMsQ0FBQ3BCLE9BQU8sQ0FBQztBQUNoQzs7QUFFQTtBQUNBLElBQUlzUixPQUFPLENBQUNyUyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMwRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFDaEQyTCxPQUFPLENBQUNDLElBQUksQ0FBQ0YsSUFBSSxDQUFDQyxPQUFPLENBQUNyUyxJQUFJLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
805
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kYXRhc2V0cyIsIl9kYXRlcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZpbGVfc3lzdGVtcyIsIl9sb2FkZXJzIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfY2xpX2hlbHBlcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwibyIsIm5leHQiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJjbG9uZU9wdGlvbiIsImNvbW1pdE9wdGlvbiIsImNhdGVnb3JpZXNPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsInJlbW90ZU9wdGlvbiIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsInB1bGxPcHRpb24iLCJhbGlhcyIsImhlbHAiLCJ0eXBlIiwiQm9vbGVhbiIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJjbGVhckRpcmVjdG9yeSIsImRpclBhdGgiLCJmcyIsImVuc3VyZURpclN5bmMiLCJfaXRlcmF0b3IiLCJyZWFkZGlyU3luYyIsIl9zdGVwIiwiZmlsZW5hbWUiLCJzdGFydHNXaXRoIiwicmVtb3ZlU3luYyIsInBhdGgiLCJqb2luIiwiZXJyIiwiY2xvbmVHaXQiLCJnaXRHcm91cFVybCIsImRhdGFzZXROYW1lIiwiZGF0YURpciIsImNsb25lIiwicmVvcmdhbml6ZURhdGEiLCJfb3B0aW9ucyRjbG9uZSIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiY29tbWl0IiwidHJpbSIsInJlcGxhY2UiLCJ2YWxpZGF0ZVJhd0RhdGEiLCJlbmFibGVkRGF0YXNldHMiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiY2hvc2VuRGF0YXNldHMiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImNvbW1pdEdpdCIsImRhdGFzZXRSZW9yZ2FuaXplZERpciIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMiIsImFjdGV1cnNFdE9yZ2FuZXMiLCJfc3RlcDIiLCJkYXRhc2V0Iiwib3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJiYXNlbmFtZSIsInB1bGwiLCJyZXNldEFuZFB1bGwiLCJhY3RldXJzUmVvcmdhbml6ZWREaXIiLCJta2RpclN5bmMiLCJvcmdhbmVzUmVvcmdhbml6ZWREaXIiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2luZ2xlRmlsZSIsIm9yaWdpbmFsSnNvbiIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwib3JpZ2luYWxEYXRhIiwiQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJKU09OIiwicGFyc2UiLCJfaXRlcmF0b3IzIiwiYWN0ZXVycyIsImFjdGV1ciIsIl9zdGVwMyIsInJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwidWlkIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsIl9pdGVyYXRvcjQiLCJvcmdhbmVzIiwib3JnYW5lIiwiX3N0ZXA0IiwiU2VnbWVudGVkRmlsZXMiLCJkZXBvcnRzQnlBY3RldXJVaWQiLCJleGlzdHNTeW5jIiwiX2l0ZXJhdG9yNSIsIndhbGtEaXIiLCJfc3RlcDUiLCJkZXBvcnRTcGxpdFBhdGgiLCJkZXBvcnRGaWxlbmFtZSIsImVuZHNXaXRoIiwiZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCIsImFwcGx5IiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwidW5kZWZpbmVkIiwicHVzaCIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJ2YWx1ZXMiLCJzb3J0IiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwibWFuZGF0U3BsaXRQYXRoIiwibWFuZGF0RmlsZW5hbWUiLCJtYW5kYXRPcmlnaW5hbEZpbGVQYXRoIiwibWFuZGF0T3JpZ2luYWxKc29uIiwibWFuZGF0T3JpZ2luYWwiLCJ0b01hbmRhdFdyYXBwZXIiLCJtYW5kYXQiLCJtYW5kYXRzIiwiX2kyIiwiX09iamVjdCR2YWx1ZXMyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCIsImFjdGV1ck9yaWdpbmFsSnNvbiIsImFjdGV1ck9yaWdpbmFsIiwidG9BY3RldXIiLCJhY3RldXJVaWQiLCJhc3NlcnQiLCJzdHJpY3RFcXVhbCIsImFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiX2l0ZXJhdG9yOCIsIl9zdGVwOCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lT3JpZ2luYWxGaWxlUGF0aCIsIm9yZ2FuZU9yaWdpbmFsSnNvbiIsIm9yZ2FuZU9yaWdpbmFsIiwidG9PcmdhbmUiLCJvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIkFnZW5kYXMiLCJfaXRlcmF0b3I5IiwiYWdlbmRhcyIsIl9zdGVwOSIsIkFnZW5kYXNSYXdDb252ZXJ0IiwidG9BZ2VuZGFzIiwiX2l0ZXJhdG9yMTAiLCJyZXVuaW9ucyIsInJldW5pb24iLCJfc3RlcDEwIiwid3JpdGVSZW9yZ2FuaXplZEpzb24iLCJwYXRoRnJvbVJldW5pb25VaWQiLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMiIsImFtZW5kZW1lbnRzIiwiX3N0ZXAxMiIsIkFtZW5kZW1lbnRzUmF3Q29udmVydCIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMyIsInRleHRlc0V0QW1lbmRlbWVudHMiLCJ0ZXh0ZWxlZyIsIl9zdGVwMTMiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMTUiLCJfc3RlcDE1IiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXAxNiIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwiRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IxNyIsInRleHRlc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnQiLCJfc3RlcDE3IiwicGF0aEZyb21Eb2N1bWVudFVpZCIsIl9pdGVyYXRvcjE4IiwiZG9zc2llciIsIl9zdGVwMTgiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJfaXRlcmF0b3IxOSIsIl9zdGVwMTkiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgiLCJkb2N1bWVudE9yaWdpbmFsSnNvbiIsImRvY3VtZW50T3JpZ2luYWwiLCJ0b0RvY3VtZW50IiwiX2l0ZXJhdG9yMjAiLCJfc3RlcDIwIiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIlNjcnV0aW5zIiwiX2l0ZXJhdG9yMjEiLCJzY3J1dGlucyIsIl9zdGVwMjEiLCJTY3J1dGluc1Jhd0NvbnZlcnQiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yMjIiLCJzY3J1dGluIiwiX3N0ZXAyMiIsInBhdGhGcm9tU2NydXRpblVpZCIsIl9pdGVyYXRvcjIzIiwiX3N0ZXAyMyIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJzY3J1dGluT3JpZ2luYWwiLCJ0b1NjcnV0aW5XcmFwcGVyIiwiUXVlc3Rpb25zIiwiX2l0ZXJhdG9yMjQiLCJxdWVzdGlvbnMiLCJfc3RlcDI0IiwiX2l0ZXJhdG9yMjUiLCJfc3RlcDI1IiwicXVlc3Rpb25TcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoIiwicXVlc3Rpb25PcmlnaW5hbEpzb24iLCJxdWVzdGlvbk9yaWdpbmFsIiwiUXVlc3Rpb25zUmF3Q29udmVydCIsInRvUXVlc3Rpb25XcmFwcGVyIiwicXVlc3Rpb24iLCJwYXRoRnJvbVF1ZXN0aW9uVWlkIiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfaXRlcmF0b3IyNiIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX3N0ZXAyNiIsIl9pdGVyYXRvcjI3IiwiX3N0ZXAyNyIsImNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbCIsIkNvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IiwidG9Db21wdGVSZW5kdVdyYXBwZXIiLCJjb21wdGVSZW5kdVNlYW5jZSIsImNvbXB0ZVJlbmR1IiwicGF0aEZyb21Db21wdGVSZW5kdVVpZCIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInVpZFRleHRlTGVnaXNsYXRpZiIsInRleHRlTGVnaXNsYXRpZlJlZiIsIm5vdFN0cmljdEVxdWFsIiwidGV4dGVMZWdpc2xhdGlmRGlyIiwiZGlyIiwib2JqIiwicGF0aEZyb21VaWQiLCJtYWluIiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgZGF0YXNldHMsXG4gIERhdGFzZXRTdHJ1Y3R1cmUsXG4gIEVuYWJsZWREYXRhc2V0cyxcbiAgZ2V0RW5hYmxlZERhdGFzZXRzLFxuICBmaWx0ZXJCeUxlZ2lzbGF0dXJlLFxufSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkLFxuICBwYXRoRnJvbURvY3VtZW50VWlkLFxuICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICBwYXRoRnJvbVF1ZXN0aW9uVWlkLFxuICBwYXRoRnJvbVJldW5pb25VaWQsXG4gIHBhdGhGcm9tU2NydXRpblVpZCxcbn0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kZWJhdHNcIlxuaW1wb3J0IHtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIGNsb25lT3B0aW9uLFxuICAgIGNvbW1pdE9wdGlvbixcbiAgICBjYXRlZ29yaWVzT3B0aW9uLFxuICAgIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICAgIHJlbW90ZU9wdGlvbixcbiAgICBzaWxlbnRPcHRpb24sXG4gICAgdmVyYm9zZU9wdGlvbixcbiAgICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgICBwdWxsT3B0aW9uLFxuICAgIHtcbiAgICAgIGFsaWFzOiBcIlZcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgdmFsaWRhdGUgcmF3IGRhdGFcIixcbiAgICAgIG5hbWU6IFwibm8tdmFsaWRhdGUtcmF3XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbGVhckRpcmVjdG9yeShkaXJQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgZnMuZW5zdXJlRGlyU3luYyhkaXJQYXRoKVxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRpclBhdGgpKSB7XG4gICAgaWYgKCFmaWxlbmFtZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGlyUGF0aCwgZmlsZW5hbWUpKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9uZUdpdChcbiAgZ2l0R3JvdXBVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZGF0YXNldE5hbWU6IHN0cmluZyxcbiAgZGF0YURpcjogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGdpdC5jbG9uZShnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG59XG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cbiAgbGV0IGV4aXRDb2RlID0gb3B0aW9ucy5jb21taXQgPyAxMCA6IDBcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lPy50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICBjb25zdCB2YWxpZGF0ZVJhd0RhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlLXJhd1wiXVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBnZXRFbmFibGVkRGF0YXNldHMob3B0aW9ucy5jYXRlZ29yaWVzKVxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBmaWx0ZXJCeUxlZ2lzbGF0dXJlKGRhdGFzZXRzLCBvcHRpb25zLmxlZ2lzbGF0dXJlKVxuXG4gIGZ1bmN0aW9uIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXI6IHN0cmluZywgb3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICApXG4gICAgICBpZiAoXG4gICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZ2l0LnJlc2V0QW5kUHVsbChkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICB9XG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIGNvbnN0IGFjdGV1cnNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiYWN0ZXVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGFjdGV1cnNSZW9yZ2FuaXplZERpcilcbiAgICAgIGNvbnN0IG9yZ2FuZXNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwib3JnYW5lc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKG9yZ2FuZXNSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXIgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5hY3RldXJzLmFjdGV1cikge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXIudWlkW1wiI3RleHRcIl0gKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQub3JnYW5lcy5vcmdhbmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGRlcG9ydHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiZGVwb3J0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcImRlcG9ydFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIGRlcG9ydFNwbGl0UGF0aFtkZXBvcnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIWRlcG9ydEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4uZGVwb3J0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcImRlcG9ydFwiIGZpbGU6ICR7ZGVwb3J0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIGRlcG9ydE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9EZXBvcnQoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnQgPSBkZXBvcnRPcmlnaW5hbC5kZXBvcnRcbiAgICAgICAgICAgICAgICBsZXQgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChkZXBvcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZXBvcnRzLnB1c2goZGVwb3J0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRzIG9mIE9iamVjdC52YWx1ZXMoZGVwb3J0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIGRlcG9ydHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hbmRhdHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwibWFuZGF0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcIm1hbmRhdFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIG1hbmRhdFNwbGl0UGF0aFttYW5kYXRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIW1hbmRhdEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4ubWFuZGF0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcIm1hbmRhdFwiIGZpbGU6ICR7bWFuZGF0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9NYW5kYXRXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG1hbmRhdE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXQgPSBtYW5kYXRPcmlnaW5hbC5tYW5kYXRcbiAgICAgICAgICAgICAgICBsZXQgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChtYW5kYXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYW5kYXRzLnB1c2gobWFuZGF0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRzIG9mIE9iamVjdC52YWx1ZXMobWFuZGF0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIG1hbmRhdHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImFjdGV1clwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmFjdGV1clNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJhY3RldXJcIiBmaWxlOiAke2FjdGV1ck9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cihhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyID0gYWN0ZXVyT3JpZ2luYWwuYWN0ZXVyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clVpZCA9IGFjdGV1ci51aWRbXCIjdGV4dFwiXVxuICAgICAgICAgICAgICBjb25zdCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIuZGVwb3J0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5kZXBvcnRzID0geyBkZXBvcnQ6IGRlcG9ydHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAobWFuZGF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5tYW5kYXRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLm1hbmRhdHMgPSB7IG1hbmRhdDogbWFuZGF0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyVWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJvcmdhbmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5vcmdhbmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwib3JnYW5lXCIgZmlsZTogJHtvcmdhbmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9PcmdhbmUob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IG9yZ2FuZU9yaWdpbmFsLm9yZ2FuZVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvQWdlbmRhcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBvcmlnaW5hbERhdGEucmV1bmlvbnMucmV1bmlvbikge1xuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgcmV1bmlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVJldW5pb25VaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJyZXVuaW9uXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicmV1bmlvblwiIGZpbGU6ICR7cmV1bmlvbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJldW5pb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b1JldW5pb24ocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbiA9IHJldW5pb25PcmlnaW5hbC5yZXVuaW9uXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICByZXVuaW9uLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9jdW1lbnRzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9jdW1lbnRzRGlyKVxuICAgICAgY29uc3QgZG9zc2llcnNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvc3NpZXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9zc2llcnNEaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC50ZXh0ZXNMZWdpc2xhdGlmc1xuICAgICAgICAgICAgICAuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudCwgcGF0aEZyb21Eb2N1bWVudFVpZClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlIH0gb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydFxuICAgICAgICAgICAgICAuZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJzRGlyLFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9jdW1lbnRcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb2N1bWVudFwiIGZpbGU6ICR7ZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRPcmlnaW5hbC5kb2N1bWVudFxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50LCBwYXRoRnJvbURvY3VtZW50VWlkKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiIGZpbGU6ICR7ZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShcbiAgICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbC5kb3NzaWVyUGFybGVtZW50YWlyZVxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGxldCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5zKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIG9yaWdpbmFsRGF0YS5zY3J1dGlucy5zY3J1dGluKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBzY3J1dGluLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJzY3J1dGluXCIgZmlsZTogJHtzY3J1dGluT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5XcmFwcGVyKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW4gPSBzY3J1dGluT3JpZ2luYWwuc2NydXRpblxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgc2NydXRpbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVNjcnV0aW5VaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBxdWVzdGlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBxdWVzdGlvblNwbGl0UGF0aFtxdWVzdGlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucXVlc3Rpb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicXVlc3Rpb25cIiBmaWxlOiAke3F1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gUXVlc3Rpb25zUmF3Q29udmVydC50b1F1ZXN0aW9uV3JhcHBlcihxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocXVlc3Rpb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gcXVlc3Rpb25PcmlnaW5hbC5xdWVzdGlvblxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgcXVlc3Rpb24sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21RdWVzdGlvblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiLnhtbFwiKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiY29tcHRlUmVuZHVTZWFuY2VcIiBmaWxlOiAke2NvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0LnRvQ29tcHRlUmVuZHVXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2UgPSBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsLmNvbXB0ZVJlbmR1XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZSxcbiAgICAgICAgICAgICAgICBwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRhdGFzZXRSZW9yZ2FuaXplZERpcjogc3RyaW5nLFxuICBhbWVuZGVtZW50OiB7XG4gICAgdWlkOiBzdHJpbmdcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZSZWY6IHN0cmluZ1xuICB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiA9IGFtZW5kZW1lbnQudGV4dGVMZWdpc2xhdGlmUmVmXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbCh1aWRUZXh0ZUxlZ2lzbGF0aWYsIHVuZGVmaW5lZClcbiAgY29uc3QgdGV4dGVMZWdpc2xhdGlmRGlyID0gcGF0aC5qb2luKFxuICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICB1aWRUZXh0ZUxlZ2lzbGF0aWYsXG4gIClcbiAgZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZUxlZ2lzbGF0aWZEaXIpXG4gIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgIHRleHRlTGVnaXNsYXRpZkRpcixcbiAgICBhbWVuZGVtZW50LnVpZCArIFwiLmpzb25cIixcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpLFxuICAgIHtcbiAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICB9LFxuICApXG59XG5cbmZ1bmN0aW9uIHdyaXRlUmVvcmdhbml6ZWRKc29uPFQgZXh0ZW5kcyB7IHVpZDogc3RyaW5nIH0+KFxuICBkaXI6IHN0cmluZyxcbiAgb2JqOiBULFxuICBwYXRoRnJvbVVpZDogKGRpcjogc3RyaW5nLCB1aWQ6IHN0cmluZykgPT4gc3RyaW5nLFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21VaWQoZGlyLCBvYmoudWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIHJldHVybiByZW9yZ2FuaXplRGF0YShvcHRpb25zKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZW9yZ2FuaXplX2RhdGEudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGdCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFPQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxHQUFBLEdBQUFDLHVCQUFBLENB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OEJBQThCQSxDQUNyQzFJLHFCQUE2QixFQUM3QnlJLFVBR0MsRUFDSztFQUNOLElBQU04RixrQkFBa0IsR0FBRzlGLFVBQVUsQ0FBQytGLGtCQUFrQjtFQUN4RDVJLGtCQUFNLENBQUM2SSxjQUFjLENBQUNGLGtCQUFrQixFQUFFekssU0FBUyxDQUFDO0VBQ3BELElBQU00SyxrQkFBa0IsR0FBR3JRLGdCQUFJLENBQUNDLElBQUksQ0FDbEMwQixxQkFBcUIsRUFDckJ1TyxrQkFDRixDQUFDO0VBQ0QxUSxtQkFBRSxDQUFDQyxhQUFhLENBQUM0USxrQkFBa0IsQ0FBQztFQUNwQyxJQUFNdE0sdUJBQXVCLEdBQUcvRCxnQkFBSSxDQUFDQyxJQUFJLENBQ3ZDb1Esa0JBQWtCLEVBQ2xCakcsVUFBVSxDQUFDcEcsR0FBRyxHQUFHLE9BQ25CLENBQUM7RUFDRHhFLG1CQUFFLENBQUN5RSxhQUFhLENBQ2RGLHVCQUF1QixFQUN2Qk4sSUFBSSxDQUFDUyxTQUFTLENBQUNrRyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUNuQztJQUNFL0csUUFBUSxFQUFFO0VBQ1osQ0FDRixDQUFDO0FBQ0g7QUFFQSxTQUFTd0Ysb0JBQW9CQSxDQUMzQnlILEdBQVcsRUFDWEMsR0FBTSxFQUNOQyxXQUFpRCxFQUMzQztFQUNOLElBQU05TixRQUFRLEdBQUc4TixXQUFXLENBQUNGLEdBQUcsRUFBRUMsR0FBRyxDQUFDdk0sR0FBRyxDQUFDO0VBQzFDeEUsbUJBQUUsQ0FBQ3lFLGFBQWEsSUFBQXhCLE1BQUEsQ0FBSUMsUUFBUSxZQUFTZSxJQUFJLENBQUNTLFNBQVMsQ0FBQ3FNLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDakVsTixRQUFRLEVBQUU7RUFDWixDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNvTixJQUFJQSxDQUFDcFMsSUFBUyxFQUFVO0VBQy9CLElBQU1lLE9BQU8sR0FBR2hCLFNBQVMsQ0FBQ0MsSUFBSSxDQUFDO0VBQy9CLE9BQU9tQyxjQUFjLENBQUNwQixPQUFPLENBQUM7QUFDaEM7O0FBRUE7QUFDQSxJQUFJc1IsT0FBTyxDQUFDclMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDMEcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEVBQ2hEMkwsT0FBTyxDQUFDQyxJQUFJLENBQUNGLElBQUksQ0FBQ0MsT0FBTyxDQUFDclMsSUFBSSxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|