@sapui5/sap.fe.core 1.117.2 → 1.117.3
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/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +2 -2
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +1 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/library-dbg.js +1 -1
- package/src/sap/fe/core/library-preload.js +4 -4
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/manifest.json +1 -1
|
@@ -808,7 +808,7 @@ sap.ui.define(["sap/fe/core/converters/common/AnnotationConverter", "sap/fe/core
|
|
|
808
808
|
const headerInfoAnnotation = {
|
|
809
809
|
$Type: `${"com.sap.vocabularies.UI.v1.HeaderInfoType"}`,
|
|
810
810
|
TypeName: `${entityType.name}`,
|
|
811
|
-
TypeNamePlural:
|
|
811
|
+
TypeNamePlural: "",
|
|
812
812
|
Title: {
|
|
813
813
|
$Type: `${"com.sap.vocabularies.UI.v1.DataField"}`,
|
|
814
814
|
Value: {
|
|
@@ -1181,4 +1181,4 @@ sap.ui.define(["sap/fe/core/converters/common/AnnotationConverter", "sap/fe/core
|
|
|
1181
1181
|
_exports.getInvolvedDataModelObjectFromPath = getInvolvedDataModelObjectFromPath;
|
|
1182
1182
|
return _exports;
|
|
1183
1183
|
}, false);
|
|
1184
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJDaGFydCIsIk1pY3JvQ2hhcnQiLCJVU2hlbGwiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJBcHBTdGF0ZSIsIkluc2lnaHRzU3VwcG9ydGVkIiwicGFyc2VQcm9wZXJ0eVZhbHVlIiwiYW5ub3RhdGlvbk9iamVjdCIsInByb3BlcnR5S2V5IiwiY3VycmVudFRhcmdldCIsImFubm90YXRpb25zTGlzdHMiLCJvQ2FwYWJpbGl0aWVzIiwidmFsdWUiLCJ0eXBlT2ZBbm5vdGF0aW9uIiwidHlwZSIsIk51bGwiLCJTdHJpbmciLCJCb29sIiwiSW50IiwiQXJyYXkiLCJpc0FycmF5IiwiQ29sbGVjdGlvbiIsIm1hcCIsInN1YkFubm90YXRpb25PYmplY3QiLCJzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXgiLCJwYXJzZUFubm90YXRpb25PYmplY3QiLCJsZW5ndGgiLCJoYXNPd25Qcm9wZXJ0eSIsIiRQYXRoIiwidW5kZWZpbmVkIiwiUGF0aCIsIiREZWNpbWFsIiwiRGVjaW1hbCIsInBhcnNlRmxvYXQiLCIkUHJvcGVydHlQYXRoIiwiUHJvcGVydHlQYXRoIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiJElmIiwiSWYiLCIkQW5kIiwiQW5kIiwiJE9yIiwiT3IiLCIkTm90IiwiTm90IiwiJEVxIiwiRXEiLCIkTmUiLCJOZSIsIiRHdCIsIkd0IiwiJEdlIiwiR2UiLCIkTHQiLCJMdCIsIiRMZSIsIkxlIiwiJEFwcGx5IiwiQXBwbHkiLCJGdW5jdGlvbiIsIiRGdW5jdGlvbiIsIiRBbm5vdGF0aW9uUGF0aCIsIkFubm90YXRpb25QYXRoIiwiJEVudW1NZW1iZXIiLCJFbnVtTWVtYmVyIiwiUmVjb3JkIiwibmFtZSIsImN1cnJlbnRPYmplY3RUYXJnZXQiLCJwYXJzZWRBbm5vdGF0aW9uT2JqZWN0IiwidHlwZU9mT2JqZWN0IiwicGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24iLCJjb2xsZWN0aW9uIiwic3ViQW5ub3RhdGlvbkluZGV4IiwiJFR5cGUiLCJ0eXBlVmFsdWUiLCJwcm9wZXJ0eVZhbHVlcyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwic3RhcnRzV2l0aCIsInB1c2giLCJjcmVhdGVBbm5vdGF0aW9uTGlzdHMiLCJnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0IiwidGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJjcmVhdGVSZWZlcmVuY2VGYWNldElkIiwicmVmZXJlbmNlRmFjZXQiLCJpZCIsIklEIiwiVGFyZ2V0IiwicHJlcGFyZUlkIiwicmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyIsImZpbHRlciIsIm9SZWNvcmQiLCJpbmRleE9mIiwicmVtb3ZlSUJOQW5ub3RhdGlvbnMiLCJoYW5kbGVQcmVzZW50YXRpb25WYXJpYW50IiwiYW5ub3RhdGlvbk9iamVjdHMiLCJhbm5vdGF0aW9uVGFyZ2V0IiwiYW5ub3RhdGlvbkxpc3RzIiwib3V0QW5ub3RhdGlvbk9iamVjdCIsImFubm90YXRpb25PYmplY3RLZXkiLCJhbm5vdGF0aW9uS2V5IiwiRGF0YSIsIlZpc3VhbGl6YXRpb25zIiwiRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsInNvbWUiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluY2x1ZGVzIiwiQWxsb3dlZEV4cHJlc3Npb25zIiwiY3VycmVudE91dEFubm90YXRpb25PYmplY3QiLCJhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQiLCJzcGxpdCIsImFubm90YXRpb25RdWFsaWZpZXJTcGxpdCIsInF1YWxpZmllciIsInRlcm0iLCJjdXJyZW50QW5ub3RhdGlvblRhcmdldCIsImlzQ29sbGVjdGlvbiIsInR5cGVvZkFubm90YXRpb24iLCJyZWNvcmQiLCJwcmVwYXJlUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJlbnRpdHlUeXBlT2JqZWN0IiwicHJvcGVydHlOYW1lIiwiX3R5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwicHJlY2lzaW9uIiwiJFByZWNpc2lvbiIsInNjYWxlIiwiJFNjYWxlIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5IiwibmF2UHJvcGVydHlEZWZpbml0aW9uIiwibmF2UHJvcGVydHlOYW1lIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwiJFJlZmVyZW50aWFsQ29uc3RyYWludCIsInNvdXJjZVByb3BlcnR5TmFtZSIsInNvdXJjZVR5cGVOYW1lIiwic291cmNlUHJvcGVydHkiLCJ0YXJnZXRUeXBlTmFtZSIsInRhcmdldFByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsIiRQYXJ0bmVyIiwiJGlzQ29sbGVjdGlvbiIsImNvbnRhaW5zVGFyZ2V0IiwiJENvbnRhaW5zVGFyZ2V0IiwicHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiZW50aXR5Q29udGFpbmVyTmFtZSIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsInBhdGgiLCJwcmVwYXJlRW50aXR5U2V0IiwiZW50aXR5U2V0RGVmaW5pdGlvbiIsImVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsImVudGl0eVR5cGVOYW1lIiwicHJlcGFyZVNpbmdsZXRvbiIsInNpbmdsZXRvbkRlZmluaXRpb24iLCJzaW5nbGV0b25OYW1lIiwicHJlcGFyZUFjdGlvbkltcG9ydCIsImFjdGlvbkltcG9ydCIsImFjdGlvbkltcG9ydE5hbWUiLCJhY3Rpb25OYW1lIiwiJEFjdGlvbiIsInByZXBhcmVUeXBlRGVmaW5pdGlvbiIsInR5cGVEZWZpbml0aW9uIiwidHlwZU5hbWUiLCJuYW1lc3BhY2VQcmVmaXgiLCJ0eXBlT2JqZWN0Iiwic3Vic3RyaW5nIiwidW5kZXJseWluZ1R5cGUiLCIkVW5kZXJseWluZ1R5cGUiLCJwcmVwYXJlQ29tcGxleFR5cGUiLCJjb21wbGV4VHlwZURlZmluaXRpb24iLCJjb21wbGV4VHlwZU5hbWUiLCJjb21wbGV4VHlwZU9iamVjdCIsInByb3BlcnRpZXMiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsImNvbXBsZXhUeXBlUHJvcGVydGllcyIsInByb3BlcnR5TmFtZU9yTm90IiwiJGtpbmQiLCJzb3J0IiwiYSIsImIiLCJjb21wbGV4VHlwZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicHJlcGFyZUVudGl0eUtleXMiLCJlbnRpdHlUeXBlRGVmaW5pdGlvbiIsIm9NZXRhTW9kZWxEYXRhIiwiJEtleSIsIiRCYXNlVHlwZSIsInByZXBhcmVFbnRpdHlUeXBlIiwibWV0YU1vZGVsRGF0YSIsImVudGl0eVR5cGUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiYWN0aW9ucyIsImtleSIsInByb3BlcnR5IiwiZW50aXR5S2V5IiwiZmluZCIsIiRBbm5vdGF0aW9ucyIsImZpbHRlckZhY2V0QW5ub3RhdGlvbiIsImhlYWRlckluZm9Bbm5vdGF0aW9uIiwiVHlwZU5hbWUiLCJUeXBlTmFtZVBsdXJhbCIsIlRpdGxlIiwiVmFsdWUiLCJlbnRpdHlQcm9wZXJ0eSIsInByZXBhcmVBY3Rpb24iLCJhY3Rpb25SYXdEYXRhIiwib3ZlcmxvYWRQYXJhbWV0ZXJzIiwiJFBhcmFtZXRlciIsIiRJc0JvdW5kIiwib3ZlcmxvYWQiLCJwYXJhbWV0ZXIiLCJqb2luIiwicGFyYW1ldGVycyIsImlzQm91bmQiLCJpc0Z1bmN0aW9uIiwic291cmNlVHlwZSIsInJldHVyblR5cGUiLCIkUmV0dXJuVHlwZSIsInBhcmFtIiwiJE5hbWUiLCJwYXJzZUVudGl0eUNvbnRhaW5lciIsImVudGl0eUNvbnRhaW5lck1ldGFkYXRhIiwic2NoZW1hIiwiZW50aXR5Q29udGFpbmVyIiwiZWxlbWVudE5hbWUiLCJlbGVtZW50VmFsdWUiLCJlbnRpdHlTZXRzIiwic2luZ2xldG9ucyIsImFjdGlvbkltcG9ydHMiLCJwYXJzZUFubm90YXRpb25zIiwiY2FwYWJpbGl0aWVzIiwidmFsdWVzIiwicGFyc2VTY2hlbWEiLCJuYW1lc3BhY2UiLCJzbGljZSIsImVudGl0eVR5cGVzIiwiY29tcGxleFR5cGVzIiwidHlwZURlZmluaXRpb25zIiwiYXNzb2NpYXRpb25zIiwiYXNzb2NpYXRpb25TZXRzIiwicGFyc2VNZXRhTW9kZWxFbGVtZW50Iiwic3ViRWxlbWVudFZhbHVlIiwicGFyc2VNZXRhTW9kZWwiLCJtZXRhTW9kZWwiLCJyZXN1bHQiLCJpZGVudGlmaWNhdGlvbiIsInZlcnNpb24iLCJyZWZlcmVuY2VzIiwiQW5ub3RhdGlvbkNvbnZlcnRlciIsImxhenkiLCJnZXRPYmplY3QiLCJtTWV0YU1vZGVsTWFwIiwiY29udmVydFR5cGVzIiwib01ldGFNb2RlbCIsInNNZXRhTW9kZWxJZCIsInBhcnNlZE91dHB1dCIsImNvbnZlcnQiLCJvRXJyb3IiLCJFcnJvciIsImdldENvbnZlcnRlZFR5cGVzIiwib0NvbnRleHQiLCJnZXRNb2RlbCIsImlzQSIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsQ29udGV4dCIsImJJbmNsdWRlVmlzaXRlZE9iamVjdHMiLCJvQ29udmVydGVkTWV0YWRhdGEiLCJzUGF0aCIsImdldFBhdGgiLCJhUGF0aFNwbGl0IiwiZmlyc3RQYXJ0IiwiYmVnaW5JbmRleCIsInRhcmdldEVudGl0eVNldCIsImVudGl0eVNldCIsInNpbmdsZXRvbiIsInJlbGF0aXZlUGF0aCIsImxvY2FsT2JqZWN0cyIsInJlbGF0aXZlU3BsaXQiLCJpZHgiLCJjdXJyZW50RW50aXR5U2V0Iiwic05hdlByb3BUb0NoZWNrIiwicmVwbGFjZSIsImFOYXZQcm9wcyIsInRhcmdldEVudGl0eVR5cGUiLCJzTmF2UHJvcCIsInRhcmdldE5hdlByb3AiLCJuYXZQcm9wIiwidGFyZ2V0VHlwZSIsInNoaWZ0Iiwib1RhcmdldCIsInJlc29sdmVQYXRoIiwidmlzaXRlZE9iamVjdHMiLCJjb25jYXQiLCJhY3Rpb24iLCJwYXJhbWV0ZXJOYW1lIiwiZW5kc1dpdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCIsIm1ldGFNb2RlbENvbnRleHQiLCJ0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGgiLCJjb252ZXJ0ZWRUeXBlcyIsIm9ubHlTZXJ2aWNlT2JqZWN0cyIsImRhdGFNb2RlbE9iamVjdHMiLCJ2aXNpdGVkT2JqZWN0IiwiaXNTZXJ2aWNlT2JqZWN0IiwiaXNFbnRpdHlUeXBlIiwiaXNFbnRpdHlDb250YWluZXIiLCJyb290RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJjdXJyZW50T2JqZWN0IiwibmF2aWdhdGVkUGF0aCIsImkiLCJpc05hdmlnYXRpb25Qcm9wZXJ0eSIsImJvdW5kRW50aXR5U2V0IiwiaXNFbnRpdHlTZXQiLCJpc1NpbmdsZXRvbiIsInN0YXJ0aW5nRW50aXR5U2V0Iiwic3RhcnRpbmdJbmRleCIsInJlcXVpcmVkRGF0YU1vZGVsT2JqZWN0cyIsIm91dERhdGFNb2RlbFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250ZXh0TG9jYXRpb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1ldGFNb2RlbENvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgcmV0cmlldmVkIGZyb20gQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlciwgc2hhcmVkIGNvZGUgd2l0aCB0b29sIHN1aXRlXG5cbmltcG9ydCB0eXBlIHtcblx0QWN0aW9uUGFyYW1ldGVyLFxuXHRBbm5vdGF0aW9uLFxuXHRBbm5vdGF0aW9uTGlzdCxcblx0QW5ub3RhdGlvblJlY29yZCxcblx0Q29udmVydGVkTWV0YWRhdGEsXG5cdEVudGl0eVNldCxcblx0RW50aXR5VHlwZSxcblx0RXhwcmVzc2lvbixcblx0TmF2aWdhdGlvblByb3BlcnR5LFxuXHRSYXdBY3Rpb24sXG5cdFJhd0FjdGlvbkltcG9ydCxcblx0UmF3Q29tcGxleFR5cGUsXG5cdFJhd0VudGl0eVNldCxcblx0UmF3RW50aXR5VHlwZSxcblx0UmF3TWV0YWRhdGEsXG5cdFJhd05hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcsXG5cdFJhd1Byb3BlcnR5LFxuXHRSYXdTY2hlbWEsXG5cdFJhd1NpbmdsZXRvbixcblx0UmF3VHlwZURlZmluaXRpb24sXG5cdFJhd1Y0TmF2aWdhdGlvblByb3BlcnR5LFxuXHRSZWZlcmVudGlhbENvbnN0cmFpbnQsXG5cdFNlcnZpY2VPYmplY3QsXG5cdFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uLFxuXHRTaW5nbGV0b25cbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFJlY29yZENvbXBsZXhUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkNvbnZlcnRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbW1vblwiO1xuaW1wb3J0IHtcblx0aXNFbnRpdHlDb250YWluZXIsXG5cdGlzRW50aXR5U2V0LFxuXHRpc0VudGl0eVR5cGUsXG5cdGlzTmF2aWdhdGlvblByb3BlcnR5LFxuXHRpc1NlcnZpY2VPYmplY3QsXG5cdGlzU2luZ2xldG9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBwcmVwYXJlSWQgfSBmcm9tIFwiLi4vaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IHtcblx0Q2hhcnQ6IGJvb2xlYW47XG5cdE1pY3JvQ2hhcnQ6IGJvb2xlYW47XG5cdFVTaGVsbDogYm9vbGVhbjtcblx0SW50ZW50QmFzZWROYXZpZ2F0aW9uOiBib29sZWFuO1xuXHRBcHBTdGF0ZTogYm9vbGVhbjtcblx0SW5zaWdodHNTdXBwb3J0ZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0ge1xuXHRDaGFydDogdHJ1ZSxcblx0TWljcm9DaGFydDogdHJ1ZSxcblx0VVNoZWxsOiB0cnVlLFxuXHRJbnRlbnRCYXNlZE5hdmlnYXRpb246IHRydWUsXG5cdEFwcFN0YXRlOiB0cnVlLFxuXHRJbnNpZ2h0c1N1cHBvcnRlZDogZmFsc2Vcbn07XG5cbmV4cG9ydCB0eXBlIE1ldGFNb2RlbEFjdGlvbiA9IHtcblx0JGtpbmQ6IFwiQWN0aW9uXCIgfCBcIkZ1bmN0aW9uXCI7XG5cdCRJc0JvdW5kOiBib29sZWFuO1xuXHQkRW50aXR5U2V0UGF0aDogc3RyaW5nO1xuXHQkUGFyYW1ldGVyOiB7XG5cdFx0JFR5cGU6IHN0cmluZztcblx0XHQkTmFtZTogc3RyaW5nO1xuXHRcdCROdWxsYWJsZT86IGJvb2xlYW47XG5cdFx0JE1heExlbmd0aD86IG51bWJlcjtcblx0XHQkUHJlY2lzaW9uPzogbnVtYmVyO1xuXHRcdCRTY2FsZT86IG51bWJlcjtcblx0XHQkaXNDb2xsZWN0aW9uPzogYm9vbGVhbjtcblx0fVtdO1xuXHQkUmV0dXJuVHlwZToge1xuXHRcdCRUeXBlOiBzdHJpbmc7XG5cdH07XG59O1xuXG5mdW5jdGlvbiBwYXJzZVByb3BlcnR5VmFsdWUoXG5cdGFubm90YXRpb25PYmplY3Q6IGFueSxcblx0cHJvcGVydHlLZXk6IHN0cmluZyxcblx0Y3VycmVudFRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4sXG5cdG9DYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pOiBhbnkge1xuXHRsZXQgdmFsdWU7XG5cdGNvbnN0IHR5cGVPZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0aWYgKGFubm90YXRpb25PYmplY3QgPT09IG51bGwpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOdWxsXCIsIE51bGw6IG51bGwgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZBbm5vdGF0aW9uID09PSBcInN0cmluZ1wiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZkFubm90YXRpb24gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mQW5ub3RhdGlvbiA9PT0gXCJudW1iZXJcIikge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIkNvbGxlY3Rpb25cIixcblx0XHRcdENvbGxlY3Rpb246IGFubm90YXRpb25PYmplY3QubWFwKChzdWJBbm5vdGF0aW9uT2JqZWN0LCBzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXgpID0+XG5cdFx0XHRcdHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0XHRcdFx0XHRzdWJBbm5vdGF0aW9uT2JqZWN0LFxuXHRcdFx0XHRcdGAke2N1cnJlbnRUYXJnZXR9LyR7cHJvcGVydHlLZXl9LyR7c3ViQW5ub3RhdGlvbk9iamVjdEluZGV4fWAsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNMaXN0cyxcblx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHR9O1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlByb3BlcnR5UGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFubm90YXRpb25QYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkVHlwZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJElmXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiSWZcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRPclwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk9yXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQW5kXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkRXFcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJFcVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5lXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTmVcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROb3RcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOb3RcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHdFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkd0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR2VcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEx0XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTHRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkxlXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQXBwbHlcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBcHBseVwiO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgYW5ub3RhdGlvbk9iamVjdFswXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHQvLyAkVHlwZSBpcyBvcHRpb25hbC4uLlxuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJTdHJpbmdcIjtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiUGF0aFwiLCBQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRGVjaW1hbFwiLCBEZWNpbWFsOiBwYXJzZUZsb2F0KGFubm90YXRpb25PYmplY3QuJERlY2ltYWwpIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJQcm9wZXJ0eVBhdGhcIiwgUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQcm9wZXJ0eVBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRJZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5kICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRPciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTm90ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFcSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEd0ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJExlICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIiwgQW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRW51bU1lbWJlclwiLCBFbnVtTWVtYmVyOiBhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyIH07XG5cdH0gZWxzZSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiUmVjb3JkXCIsIFJlY29yZDogcGFyc2VBbm5vdGF0aW9uT2JqZWN0KGFubm90YXRpb25PYmplY3QsIGN1cnJlbnRUYXJnZXQsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpIH07XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdG5hbWU6IHByb3BlcnR5S2V5LFxuXHRcdHZhbHVlXG5cdH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0YW5ub3RhdGlvbk9iamVjdDogYW55LFxuXHRjdXJyZW50T2JqZWN0VGFyZ2V0OiBzdHJpbmcsXG5cdGFubm90YXRpb25zTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbik6IEV4cHJlc3Npb24gfCBBbm5vdGF0aW9uUmVjb3JkIHwgQW5ub3RhdGlvbiB7XG5cdGxldCBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0OiBhbnkgPSB7fTtcblx0Y29uc3QgdHlwZU9mT2JqZWN0ID0gdHlwZW9mIGFubm90YXRpb25PYmplY3Q7XG5cdGlmIChhbm5vdGF0aW9uT2JqZWN0ID09PSBudWxsKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJOdWxsXCIsIE51bGw6IG51bGwgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwic3RyaW5nXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlN0cmluZ1wiLCBTdHJpbmc6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJCb29sXCIsIEJvb2w6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwibnVtYmVyXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLCBBbm5vdGF0aW9uUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlBhdGhcIiwgUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJERlY2ltYWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiRGVjaW1hbFwiLCBEZWNpbWFsOiBwYXJzZUZsb2F0KGFubm90YXRpb25PYmplY3QuJERlY2ltYWwpIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlByb3BlcnR5UGF0aFwiLCBQcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJFByb3BlcnR5UGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIklmXCIsIElmOiBhbm5vdGF0aW9uT2JqZWN0LiRJZiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFuZCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRPciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJPclwiLCBPcjogYW5ub3RhdGlvbk9iamVjdC4kT3IgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTm90XCIsIE5vdDogYW5ub3RhdGlvbk9iamVjdC4kTm90IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRXEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTmVcIiwgTmU6IGFubm90YXRpb25PYmplY3QuJE5lIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiR3RcIiwgR3Q6IGFubm90YXRpb25PYmplY3QuJEd0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR2UgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTHRcIiwgTHQ6IGFubm90YXRpb25PYmplY3QuJEx0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTGVcIiwgTGU6IGFubm90YXRpb25PYmplY3QuJExlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQXBwbHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0ge1xuXHRcdFx0dHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsXG5cdFx0XHROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXG5cdFx0fTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0ge1xuXHRcdFx0dHlwZTogXCJFbnVtTWVtYmVyXCIsXG5cdFx0XHRFbnVtTWVtYmVyOiBhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyXG5cdFx0fTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24gPSBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0O1xuXHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gPSBhbm5vdGF0aW9uT2JqZWN0Lm1hcCgoc3ViQW5ub3RhdGlvbk9iamVjdCwgc3ViQW5ub3RhdGlvbkluZGV4KSA9PlxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uT2JqZWN0KHN1YkFubm90YXRpb25PYmplY3QsIGAke2N1cnJlbnRPYmplY3RUYXJnZXR9LyR7c3ViQW5ub3RhdGlvbkluZGV4fWAsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpXG5cdFx0KTtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQYXRoXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRJZlwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIklmXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiQW5kXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkT3JcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJPclwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEVxXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiRXFcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROZVwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIk5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTm90XCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiTm90XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR3RcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJHdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEdlXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiR2VcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMdFwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIkx0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTGVcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJMZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiQXBwbHlcIjtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFubm90YXRpb25PYmplY3RbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0LiRUeXBlKSB7XG5cdFx0XHRjb25zdCB0eXBlVmFsdWUgPSBhbm5vdGF0aW9uT2JqZWN0LiRUeXBlO1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC50eXBlID0gdHlwZVZhbHVlOyAvL2Ake3R5cGVBbGlhc30uJHt0eXBlVGVybX1gO1xuXHRcdH1cblx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlczogYW55ID0gW107XG5cdFx0T2JqZWN0LmtleXMoYW5ub3RhdGlvbk9iamVjdCkuZm9yRWFjaCgocHJvcGVydHlLZXkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJFR5cGVcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkSWZcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQXBwbHlcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQW5kXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE9yXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5lXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEd0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEdlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEx0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJExlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5vdFwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRFcVwiICYmXG5cdFx0XHRcdCFwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHByb3BlcnR5VmFsdWVzLnB1c2goXG5cdFx0XHRcdFx0cGFyc2VQcm9wZXJ0eVZhbHVlKGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldLCBwcm9wZXJ0eUtleSwgY3VycmVudE9iamVjdFRhcmdldCwgYW5ub3RhdGlvbnNMaXN0cywgb0NhcGFiaWxpdGllcylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0Ly8gQW5ub3RhdGlvbiBvZiBhbm5vdGF0aW9uXG5cdFx0XHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0XHRcdFx0XHR7IFtwcm9wZXJ0eUtleV06IGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldIH0sXG5cdFx0XHRcdFx0Y3VycmVudE9iamVjdFRhcmdldCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc0xpc3RzLFxuXHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnByb3BlcnR5VmFsdWVzID0gcHJvcGVydHlWYWx1ZXM7XG5cdH1cblx0cmV0dXJuIHBhcnNlZEFubm90YXRpb25PYmplY3Q7XG59XG5mdW5jdGlvbiBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KHRhcmdldDogc3RyaW5nLCBhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4pOiBBbm5vdGF0aW9uTGlzdCB7XG5cdGlmICghYW5ub3RhdGlvbnNMaXN0cy5oYXNPd25Qcm9wZXJ0eSh0YXJnZXQpKSB7XG5cdFx0YW5ub3RhdGlvbnNMaXN0c1t0YXJnZXRdID0ge1xuXHRcdFx0dGFyZ2V0OiB0YXJnZXQsXG5cdFx0XHRhbm5vdGF0aW9uczogW11cblx0XHR9O1xuXHR9XG5cdHJldHVybiBhbm5vdGF0aW9uc0xpc3RzW3RhcmdldF07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQocmVmZXJlbmNlRmFjZXQ6IGFueSkge1xuXHRjb25zdCBpZCA9IHJlZmVyZW5jZUZhY2V0LklEID8/IHJlZmVyZW5jZUZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGg7XG5cdHJldHVybiBpZCA/IHByZXBhcmVJZChpZCkgOiBpZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0OiBhbnkpIHtcblx0cmV0dXJuIGFubm90YXRpb25PYmplY3QuZmlsdGVyKChvUmVjb3JkOiBhbnkpID0+IHtcblx0XHRpZiAob1JlY29yZC5UYXJnZXQgJiYgb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRyZXR1cm4gb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoLmluZGV4T2YoYEAke1VJQW5ub3RhdGlvblRlcm1zLkNoYXJ0fWApID09PSAtMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJEFubm90YXRpb25QYXRoICE9PSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuQ2hhcnR9YDtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0YW5ub3RhdGlvbk9iamVjdHM6IGFueSxcblx0YW5ub3RhdGlvblRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbikge1xuXHRpZiAoT2JqZWN0LmtleXMoYW5ub3RhdGlvbk9iamVjdHMpLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBvdXRBbm5vdGF0aW9uT2JqZWN0ID0gZ2V0T3JDcmVhdGVBbm5vdGF0aW9uTGlzdChhbm5vdGF0aW9uVGFyZ2V0LCBhbm5vdGF0aW9uTGlzdHMpO1xuXHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdGRlbGV0ZSBhbm5vdGF0aW9uT2JqZWN0c1tgQCR7VUlBbm5vdGF0aW9uVGVybXMuQ2hhcnR9YF07XG5cdH1cblxuXHRmb3IgKGNvbnN0IGFubm90YXRpb25PYmplY3RLZXkgaW4gYW5ub3RhdGlvbk9iamVjdHMpIHtcblx0XHRsZXQgYW5ub3RhdGlvbktleSA9IGFubm90YXRpb25PYmplY3RLZXk7XG5cdFx0bGV0IGFubm90YXRpb25PYmplY3QgPSBhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XTtcblx0XHRzd2l0Y2ggKGFubm90YXRpb25LZXkpIHtcblx0XHRcdGNhc2UgYEAke1VJQW5ub3RhdGlvblRlcm1zLkhlYWRlckZhY2V0c31gOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVDaGFydEFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgYEAke1VJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9ufWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDpcblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLkludGVudEJhc2VkTmF2aWdhdGlvbikge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwfWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0LkRhdGEgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0LkRhdGEpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QuRGF0YSA9IHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdC5EYXRhKTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50fWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5DaGFydCAmJiBhbm5vdGF0aW9uT2JqZWN0LlZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyA9IGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RgOlxuXHRcdFx0XHQvLyBUaGlzIHNjZW5hcmlvIGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgc2VtYW50aWMgZmlsdGVyaW5nIG9uIERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhLWZpbHRlcnMuIEFzIG9mIG5vdyB0aGUgU2luZ2xlUmFuZ2UgYW5ub3RhdGlvbiBpcyByZWFkIGJ5IHRoZVxuXHRcdFx0XHQvLyBGaWVsZEhlbHBlciwgd2hpY2ggc2hvdWxkIG5vdCBpbmNsdWRlIGFueSBwcm9wZXJ0eXNwZWNpZmljIGxvZ2ljLiBXZSB3aWxsIHJlbW92ZSB0aGlzIG9uY2UgdGhlIEZpZWxkSGVscGVyIHJlY2VpdmVzIHRoZSBTaW5nbGVSYW5nZSBkYXRhIGZyb21cblx0XHRcdFx0Ly8gdGhlIGNvbnZlcnRlciBvciBoYXZpbmcgaXQgc2V0IGlzIG5vIGxvbmdlciBhIHByZXJlcXVpc2l0ZSBmb3IgdGhlIHNlbWFudGljIGZpbHRlcmluZy5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXSAmJlxuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zPy5sZW5ndGhcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0IWFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLnNvbWUoXG5cdFx0XHRcdFx0XHRcdChGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb246IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb24/LlByb3BlcnR5Py4kUHJvcGVydHlQYXRoLmluY2x1ZGVzKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLnB1c2goXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRBbGxvd2VkRXhwcmVzc2lvbnM6IFwiU2luZ2xlUmFuZ2VcIixcblx0XHRcdFx0XHRcdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9DcmVhdGlvbkRhdGVUaW1lXCJcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRBbGxvd2VkRXhwcmVzc2lvbnM6IFwiU2luZ2xlUmFuZ2VcIixcblx0XHRcdFx0XHRcdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlRGF0ZVRpbWVcIlxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRsZXQgY3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBvdXRBbm5vdGF0aW9uT2JqZWN0O1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGFubm90YXRpb24gb2YgYW5ub3RhdGlvblxuXHRcdGNvbnN0IGFubm90YXRpb25PZkFubm90YXRpb25TcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCJAXCIpO1xuXHRcdGlmIChhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQubGVuZ3RoID4gMikge1xuXHRcdFx0Y3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KFxuXHRcdFx0XHRgJHthbm5vdGF0aW9uVGFyZ2V0fUAke2Fubm90YXRpb25PZkFubm90YXRpb25TcGxpdFsxXX1gLFxuXHRcdFx0XHRhbm5vdGF0aW9uTGlzdHNcblx0XHRcdCk7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzJdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzFdO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCIjXCIpO1xuXHRcdGNvbnN0IHF1YWxpZmllciA9IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdFsxXTtcblx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzBdO1xuXG5cdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbk9iamVjdDogYW55ID0ge1xuXHRcdFx0dGVybTogYW5ub3RhdGlvbktleSxcblx0XHRcdHF1YWxpZmllcjogcXVhbGlmaWVyXG5cdFx0fTtcblx0XHRsZXQgY3VycmVudEFubm90YXRpb25UYXJnZXQgPSBgJHthbm5vdGF0aW9uVGFyZ2V0fUAke3BhcnNlZEFubm90YXRpb25PYmplY3QudGVybX1gO1xuXHRcdGlmIChxdWFsaWZpZXIpIHtcblx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0ICs9IGAjJHtxdWFsaWZpZXJ9YDtcblx0XHR9XG5cdFx0bGV0IGlzQ29sbGVjdGlvbiA9IGZhbHNlO1xuXHRcdGNvbnN0IHR5cGVvZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdCA9PT0gbnVsbCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOdWxsXCIgfTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZkFubm90YXRpb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mQW5ub3RhdGlvbiA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2ZBbm5vdGF0aW9uID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbmQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVxICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEdlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFwcGx5ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJQYXRoXCIsIFBhdGg6IGFubm90YXRpb25PYmplY3QuJFBhdGggfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7XG5cdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0QW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkRlY2ltYWxcIiwgRGVjaW1hbDogcGFyc2VGbG9hdChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsKSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0ge1xuXHRcdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdFx0RW51bU1lbWJlcjogYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlclxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbk9iamVjdCkpIHtcblx0XHRcdGlzQ29sbGVjdGlvbiA9IHRydWU7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gPSBhbm5vdGF0aW9uT2JqZWN0Lm1hcCgoc3ViQW5ub3RhdGlvbk9iamVjdCwgc3ViQW5ub3RhdGlvbkluZGV4KSA9PlxuXHRcdFx0XHRwYXJzZUFubm90YXRpb25PYmplY3QoXG5cdFx0XHRcdFx0c3ViQW5ub3RhdGlvbk9iamVjdCxcblx0XHRcdFx0XHRgJHtjdXJyZW50QW5ub3RhdGlvblRhcmdldH0vJHtzdWJBbm5vdGF0aW9uSW5kZXh9YCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uTGlzdHMsXG5cdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiUHJvcGVydHlQYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQYXRoXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIlBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiQW5ub3RhdGlvblBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRJZlwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJJZlwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkT3JcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiT3JcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEVxXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkVxXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROZVwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJOZVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTm90XCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIk5vdFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR3RcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiR3RcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEdlXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkdlXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMdFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJMdFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTGVcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiTGVcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFuZFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJBbmRcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkFwcGx5XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFubm90YXRpb25PYmplY3RbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIlN0cmluZ1wiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJlY29yZDogQW5ub3RhdGlvblJlY29yZCA9IHtcblx0XHRcdFx0cHJvcGVydHlWYWx1ZXM6IFtdXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QuJFR5cGUpIHtcblx0XHRcdFx0Y29uc3QgdHlwZVZhbHVlID0gYW5ub3RhdGlvbk9iamVjdC4kVHlwZTtcblx0XHRcdFx0cmVjb3JkLnR5cGUgPSBgJHt0eXBlVmFsdWV9YDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzOiBhbnlbXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBwcm9wZXJ0eUtleSBpbiBhbm5vdGF0aW9uT2JqZWN0KSB7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUtleSAhPT0gXCIkVHlwZVwiICYmICFwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKSkge1xuXHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzLnB1c2goXG5cdFx0XHRcdFx0XHRwYXJzZVByb3BlcnR5VmFsdWUoXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldLFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eUtleSxcblx0XHRcdFx0XHRcdFx0Y3VycmVudEFubm90YXRpb25UYXJnZXQsXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25MaXN0cyxcblx0XHRcdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0XHQvLyBBbm5vdGF0aW9uIG9mIHJlY29yZFxuXHRcdFx0XHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0XHRcdFx0XHRcdHsgW3Byb3BlcnR5S2V5XTogYW5ub3RhdGlvbk9iamVjdFtwcm9wZXJ0eUtleV0gfSxcblx0XHRcdFx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0LFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvbkxpc3RzLFxuXHRcdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJlY29yZC5wcm9wZXJ0eVZhbHVlcyA9IHByb3BlcnR5VmFsdWVzO1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5yZWNvcmQgPSByZWNvcmQ7XG5cdFx0fVxuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuaXNDb2xsZWN0aW9uID0gaXNDb2xsZWN0aW9uO1xuXHRcdGN1cnJlbnRPdXRBbm5vdGF0aW9uT2JqZWN0LmFubm90YXRpb25zLnB1c2gocGFyc2VkQW5ub3RhdGlvbk9iamVjdCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJlcGFyZVByb3BlcnR5KHByb3BlcnR5RGVmaW5pdGlvbjogYW55LCBlbnRpdHlUeXBlT2JqZWN0OiBSYXdFbnRpdHlUeXBlIHwgUmF3Q29tcGxleFR5cGUsIHByb3BlcnR5TmFtZTogc3RyaW5nKTogUmF3UHJvcGVydHkge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIlByb3BlcnR5XCIsXG5cdFx0bmFtZTogcHJvcGVydHlOYW1lLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5VHlwZU9iamVjdC5mdWxseVF1YWxpZmllZE5hbWV9LyR7cHJvcGVydHlOYW1lfWAsXG5cdFx0dHlwZTogcHJvcGVydHlEZWZpbml0aW9uLiRUeXBlLFxuXHRcdG1heExlbmd0aDogcHJvcGVydHlEZWZpbml0aW9uLiRNYXhMZW5ndGgsXG5cdFx0cHJlY2lzaW9uOiBwcm9wZXJ0eURlZmluaXRpb24uJFByZWNpc2lvbixcblx0XHRzY2FsZTogcHJvcGVydHlEZWZpbml0aW9uLiRTY2FsZSxcblx0XHRudWxsYWJsZTogcHJvcGVydHlEZWZpbml0aW9uLiROdWxsYWJsZVxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5KFxuXHRuYXZQcm9wZXJ0eURlZmluaXRpb246IGFueSxcblx0ZW50aXR5VHlwZU9iamVjdDogUmF3RW50aXR5VHlwZSB8IFJhd0NvbXBsZXhUeXBlLFxuXHRuYXZQcm9wZXJ0eU5hbWU6IHN0cmluZ1xuKTogUmF3VjROYXZpZ2F0aW9uUHJvcGVydHkge1xuXHRsZXQgcmVmZXJlbnRpYWxDb25zdHJhaW50OiBSZWZlcmVudGlhbENvbnN0cmFpbnRbXSA9IFtdO1xuXHRpZiAobmF2UHJvcGVydHlEZWZpbml0aW9uLiRSZWZlcmVudGlhbENvbnN0cmFpbnQpIHtcblx0XHRyZWZlcmVudGlhbENvbnN0cmFpbnQgPSBPYmplY3Qua2V5cyhuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludCkubWFwKChzb3VyY2VQcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNvdXJjZVR5cGVOYW1lOiBlbnRpdHlUeXBlT2JqZWN0Lm5hbWUsXG5cdFx0XHRcdHNvdXJjZVByb3BlcnR5OiBzb3VyY2VQcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHRhcmdldFR5cGVOYW1lOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFR5cGUsXG5cdFx0XHRcdHRhcmdldFByb3BlcnR5OiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludFtzb3VyY2VQcm9wZXJ0eU5hbWVdXG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eTogUmF3VjROYXZpZ2F0aW9uUHJvcGVydHkgPSB7XG5cdFx0X3R5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5XCIsXG5cdFx0bmFtZTogbmF2UHJvcGVydHlOYW1lLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5VHlwZU9iamVjdC5mdWxseVF1YWxpZmllZE5hbWV9LyR7bmF2UHJvcGVydHlOYW1lfWAsXG5cdFx0cGFydG5lcjogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRQYXJ0bmVyLFxuXHRcdGlzQ29sbGVjdGlvbjogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRpc0NvbGxlY3Rpb24gPyBuYXZQcm9wZXJ0eURlZmluaXRpb24uJGlzQ29sbGVjdGlvbiA6IGZhbHNlLFxuXHRcdGNvbnRhaW5zVGFyZ2V0OiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJENvbnRhaW5zVGFyZ2V0LFxuXHRcdHRhcmdldFR5cGVOYW1lOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFR5cGUsXG5cdFx0cmVmZXJlbnRpYWxDb25zdHJhaW50XG5cdH07XG5cblx0cmV0dXJuIG5hdmlnYXRpb25Qcm9wZXJ0eTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcoXG5cdG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQsXG5cdGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZ1xuKTogUmF3TmF2aWdhdGlvblByb3BlcnR5QmluZGluZyB7XG5cdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRcdE9iamVjdC5lbnRyaWVzKG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpLm1hcCgoW3BhdGgsIHRhcmdldF0pID0+IFtwYXRoLCBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke3RhcmdldH1gXSlcblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlRW50aXR5U2V0KGVudGl0eVNldERlZmluaXRpb246IGFueSwgZW50aXR5U2V0TmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBSYXdFbnRpdHlTZXQge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIkVudGl0eVNldFwiLFxuXHRcdG5hbWU6IGVudGl0eVNldE5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzogcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcoZW50aXR5U2V0RGVmaW5pdGlvbi4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZywgZW50aXR5Q29udGFpbmVyTmFtZSksXG5cdFx0ZW50aXR5VHlwZU5hbWU6IGVudGl0eVNldERlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke2VudGl0eVNldE5hbWV9YFxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlU2luZ2xldG9uKHNpbmdsZXRvbkRlZmluaXRpb246IGFueSwgc2luZ2xldG9uTmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBSYXdTaW5nbGV0b24ge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIlNpbmdsZXRvblwiLFxuXHRcdG5hbWU6IHNpbmdsZXRvbk5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzogcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcoc2luZ2xldG9uRGVmaW5pdGlvbi4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZywgZW50aXR5Q29udGFpbmVyTmFtZSksXG5cdFx0ZW50aXR5VHlwZU5hbWU6IHNpbmdsZXRvbkRlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke3NpbmdsZXRvbk5hbWV9YCxcblx0XHRudWxsYWJsZTogdHJ1ZVxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQWN0aW9uSW1wb3J0KGFjdGlvbkltcG9ydDogYW55LCBhY3Rpb25JbXBvcnROYW1lOiBzdHJpbmcsIGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyk6IFJhd0FjdGlvbkltcG9ydCB7XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiQWN0aW9uSW1wb3J0XCIsXG5cdFx0bmFtZTogYWN0aW9uSW1wb3J0TmFtZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eUNvbnRhaW5lck5hbWV9LyR7YWN0aW9uSW1wb3J0TmFtZX1gLFxuXHRcdGFjdGlvbk5hbWU6IGFjdGlvbkltcG9ydC4kQWN0aW9uXG5cdH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVUeXBlRGVmaW5pdGlvbih0eXBlRGVmaW5pdGlvbjogYW55LCB0eXBlTmFtZTogc3RyaW5nLCBuYW1lc3BhY2VQcmVmaXg6IHN0cmluZyk6IFJhd1R5cGVEZWZpbml0aW9uIHtcblx0Y29uc3QgdHlwZU9iamVjdDogUmF3VHlwZURlZmluaXRpb24gPSB7XG5cdFx0X3R5cGU6IFwiVHlwZURlZmluaXRpb25cIixcblx0XHRuYW1lOiB0eXBlTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiB0eXBlTmFtZSxcblx0XHR1bmRlcmx5aW5nVHlwZTogdHlwZURlZmluaXRpb24uJFVuZGVybHlpbmdUeXBlXG5cdH07XG5cdHJldHVybiB0eXBlT2JqZWN0O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ29tcGxleFR5cGUoY29tcGxleFR5cGVEZWZpbml0aW9uOiBhbnksIGNvbXBsZXhUeXBlTmFtZTogc3RyaW5nLCBuYW1lc3BhY2VQcmVmaXg6IHN0cmluZyk6IFJhd0NvbXBsZXhUeXBlIHtcblx0Y29uc3QgY29tcGxleFR5cGVPYmplY3Q6IFJhd0NvbXBsZXhUeXBlID0ge1xuXHRcdF90eXBlOiBcIkNvbXBsZXhUeXBlXCIsXG5cdFx0bmFtZTogY29tcGxleFR5cGVOYW1lLnN1YnN0cmluZyhuYW1lc3BhY2VQcmVmaXgubGVuZ3RoKSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGNvbXBsZXhUeXBlTmFtZSxcblx0XHRwcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW11cblx0fTtcblxuXHRjb25zdCBjb21wbGV4VHlwZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhjb21wbGV4VHlwZURlZmluaXRpb24pXG5cdFx0LmZpbHRlcigocHJvcGVydHlOYW1lT3JOb3QpID0+IHtcblx0XHRcdGlmIChwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRLZXlcIiAmJiBwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRraW5kXCIpIHtcblx0XHRcdFx0cmV0dXJuIGNvbXBsZXhUeXBlRGVmaW5pdGlvbltwcm9wZXJ0eU5hbWVPck5vdF0uJGtpbmQgPT09IFwiUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAoKHByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVQcm9wZXJ0eShjb21wbGV4VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lXSwgY29tcGxleFR5cGVPYmplY3QsIHByb3BlcnR5TmFtZSk7XG5cdFx0fSk7XG5cblx0Y29tcGxleFR5cGVPYmplY3QucHJvcGVydGllcyA9IGNvbXBsZXhUeXBlUHJvcGVydGllcztcblx0Y29uc3QgY29tcGxleFR5cGVOYXZpZ2F0aW9uUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGNvbXBsZXhUeXBlRGVmaW5pdGlvbilcblx0XHQuZmlsdGVyKChwcm9wZXJ0eU5hbWVPck5vdCkgPT4ge1xuXHRcdFx0aWYgKHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJEtleVwiICYmIHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJGtpbmRcIikge1xuXHRcdFx0XHRyZXR1cm4gY29tcGxleFR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZU9yTm90XS4ka2luZCA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAoKG5hdlByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkoY29tcGxleFR5cGVEZWZpbml0aW9uW25hdlByb3BlcnR5TmFtZV0sIGNvbXBsZXhUeXBlT2JqZWN0LCBuYXZQcm9wZXJ0eU5hbWUpO1xuXHRcdH0pO1xuXHRjb21wbGV4VHlwZU9iamVjdC5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbXBsZXhUeXBlTmF2aWdhdGlvblByb3BlcnRpZXM7XG5cdHJldHVybiBjb21wbGV4VHlwZU9iamVjdDtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eUtleXMoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgb01ldGFNb2RlbERhdGE6IGFueSk6IHN0cmluZ1tdIHtcblx0aWYgKCFlbnRpdHlUeXBlRGVmaW5pdGlvbi4kS2V5ICYmIGVudGl0eVR5cGVEZWZpbml0aW9uLiRCYXNlVHlwZSkge1xuXHRcdHJldHVybiBwcmVwYXJlRW50aXR5S2V5cyhvTWV0YU1vZGVsRGF0YVtlbnRpdHlUeXBlRGVmaW5pdGlvbi4kQmFzZVR5cGVdLCBvTWV0YU1vZGVsRGF0YSk7XG5cdH1cblx0cmV0dXJuIGVudGl0eVR5cGVEZWZpbml0aW9uLiRLZXkgPz8gW107IC8vaGFuZGxpbmcgb2YgZW50aXR5IHR5cGVzIHdpdGhvdXQga2V5IGFzIHdlbGwgYXMgYmFzZXR5cGVcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eVR5cGUoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgZW50aXR5VHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlUHJlZml4OiBzdHJpbmcsIG1ldGFNb2RlbERhdGE6IGFueSk6IFJhd0VudGl0eVR5cGUge1xuXHRjb25zdCBlbnRpdHlUeXBlOiBSYXdFbnRpdHlUeXBlID0ge1xuXHRcdF90eXBlOiBcIkVudGl0eVR5cGVcIixcblx0XHRuYW1lOiBlbnRpdHlUeXBlTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBlbnRpdHlUeXBlTmFtZSxcblx0XHRrZXlzOiBbXSxcblx0XHRlbnRpdHlQcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW10sXG5cdFx0YWN0aW9uczoge31cblx0fTtcblxuXHRmb3IgKGNvbnN0IGtleSBpbiBlbnRpdHlUeXBlRGVmaW5pdGlvbikge1xuXHRcdGNvbnN0IHZhbHVlID0gZW50aXR5VHlwZURlZmluaXRpb25ba2V5XTtcblxuXHRcdHN3aXRjaCAodmFsdWUuJGtpbmQpIHtcblx0XHRcdGNhc2UgXCJQcm9wZXJ0eVwiOlxuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHByZXBhcmVQcm9wZXJ0eSh2YWx1ZSwgZW50aXR5VHlwZSwga2V5KTtcblx0XHRcdFx0ZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjpcblx0XHRcdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnR5ID0gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eSh2YWx1ZSwgZW50aXR5VHlwZSwga2V5KTtcblx0XHRcdFx0ZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGVudGl0eVR5cGUua2V5cyA9IHByZXBhcmVFbnRpdHlLZXlzKGVudGl0eVR5cGVEZWZpbml0aW9uLCBtZXRhTW9kZWxEYXRhKVxuXHRcdC5tYXAoKGVudGl0eUtleSkgPT4gZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBlbnRpdHlLZXkpKVxuXHRcdC5maWx0ZXIoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSBhcyBSYXdFbnRpdHlUeXBlW1wia2V5c1wiXTtcblxuXHQvLyBDaGVjayBpZiB0aGVyZSBhcmUgZmlsdGVyIGZhY2V0cyBkZWZpbmVkIGZvciB0aGUgZW50aXR5VHlwZSBhbmQgaWYgeWVzLCBjaGVjayBpZiBhbGwgb2YgdGhlbSBoYXZlIGFuIElEXG5cdC8vIFRoZSBJRCBpcyBvcHRpb25hbCwgYnV0IGl0IGlzIGludGVybmFsbHkgdGFrZW4gZm9yIGdyb3VwaW5nIGZpbHRlciBmaWVsZHMgYW5kIGlmIGl0J3Mgbm90IHByZXNlbnRcblx0Ly8gYSBmYWxsYmFjayBJRCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQgaGVyZS5cblx0bWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdPy5bYEAke1VJQW5ub3RhdGlvblRlcm1zLkZpbHRlckZhY2V0c31gXT8uZm9yRWFjaChcblx0XHQoZmlsdGVyRmFjZXRBbm5vdGF0aW9uOiBhbnkpID0+IHtcblx0XHRcdGZpbHRlckZhY2V0QW5ub3RhdGlvbi5JRCA9IGNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQoZmlsdGVyRmFjZXRBbm5vdGF0aW9uKTtcblx0XHR9XG5cdCk7XG5cblx0Ly8gQ2hlY2sgaWYgZW50aXR5VHlwZSBoYXMgbm90IG1hbmRhdG9yeSBIZWFkZXJJbmZvXG5cdGlmIChcblx0XHQhIWVudGl0eVR5cGU/LmtleXMubGVuZ3RoICYmXG5cdFx0bWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdICYmXG5cdFx0IW1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lXT8uW2BAJHtVSUFubm90YXRpb25UZXJtcy5IZWFkZXJJbmZvfWBdXG5cdCkge1xuXHRcdGNvbnN0IGhlYWRlckluZm9Bbm5vdGF0aW9uID0ge1xuXHRcdFx0JFR5cGU6IGAke1VJQW5ub3RhdGlvblR5cGVzLkhlYWRlckluZm9UeXBlfWAsXG5cdFx0XHRUeXBlTmFtZTogYCR7ZW50aXR5VHlwZS5uYW1lfWAsXG5cdFx0XHRUeXBlTmFtZVBsdXJhbDogYCR7ZW50aXR5VHlwZS5uYW1lfWAsXG5cdFx0XHRUaXRsZToge1xuXHRcdFx0XHQkVHlwZTogYCR7VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkfWAsXG5cdFx0XHRcdFZhbHVlOiB7XG5cdFx0XHRcdFx0JFBhdGg6IGAke2VudGl0eVR5cGUua2V5c1swXS5uYW1lfWBcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gQWRkIHRoZSBtaXNzaW5nIEhlYWRlckluZm9cblx0XHRtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZV1bYEAke1VJQW5ub3RhdGlvblRlcm1zLkhlYWRlckluZm99YF0gPSBoZWFkZXJJbmZvQW5ub3RhdGlvbjtcblx0fVxuXG5cdGZvciAoY29uc3QgZW50aXR5UHJvcGVydHkgb2YgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzKSB7XG5cdFx0aWYgKCFtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdKSB7XG5cdFx0XHRtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0ge307XG5cdFx0fVxuXHRcdGlmICghbWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXVtgQCR7VUlBbm5vdGF0aW9uVGVybXMuRGF0YUZpZWxkRGVmYXVsdH1gXSkge1xuXHRcdFx0bWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXVtgQCR7VUlBbm5vdGF0aW9uVGVybXMuRGF0YUZpZWxkRGVmYXVsdH1gXSA9IHtcblx0XHRcdFx0JFR5cGU6IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VmFsdWU6IHsgJFBhdGg6IGVudGl0eVByb3BlcnR5Lm5hbWUgfVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZW50aXR5VHlwZTtcbn1cbmZ1bmN0aW9uIHByZXBhcmVBY3Rpb24oYWN0aW9uUmF3RGF0YTogTWV0YU1vZGVsQWN0aW9uLCBhY3Rpb25OYW1lOiBzdHJpbmcsIG5hbWVzcGFjZVByZWZpeDogc3RyaW5nKTogUmF3QWN0aW9uIHtcblx0bGV0IG92ZXJsb2FkUGFyYW1ldGVyczogTWV0YU1vZGVsQWN0aW9uW1wiJFBhcmFtZXRlclwiXTtcblx0aWYgKGFjdGlvblJhd0RhdGEuJGtpbmQgPT09IFwiRnVuY3Rpb25cIikge1xuXHRcdC8vIGZ1bmN0aW9uIC0gb3ZlcmxvYWQgaW5jbHVkZXMgYWxsIHBhcmFtZXRlcnMgKGJvdW5kIGVudGl0eSB0eXBlIF9hbmRfIG90aGVyIHBhcmFtZXRlcnMpXG5cdFx0b3ZlcmxvYWRQYXJhbWV0ZXJzID0gYWN0aW9uUmF3RGF0YS4kUGFyYW1ldGVyID8/IFtdO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGFjdGlvbiAtIG92ZXJsb2FkIGlzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb3IgdGhlIGVtcHR5IHVuYm91bmQgb3ZlcmxvYWQgaW4gY2FzZSBvZiBhbiB1bmJvdW5kIGFjdGlvblxuXHRcdG92ZXJsb2FkUGFyYW1ldGVycyA9IGFjdGlvblJhd0RhdGEuJElzQm91bmQgPyBbYWN0aW9uUmF3RGF0YS4kUGFyYW1ldGVyWzBdXSA6IFtdO1xuXHR9XG5cblx0Y29uc3Qgb3ZlcmxvYWQgPSBvdmVybG9hZFBhcmFtZXRlcnNcblx0XHQubWFwKChwYXJhbWV0ZXIpID0+IChwYXJhbWV0ZXIuJGlzQ29sbGVjdGlvbiA/IGBDb2xsZWN0aW9uKCR7cGFyYW1ldGVyLiRUeXBlfSlgIDogcGFyYW1ldGVyLiRUeXBlKSlcblx0XHQuam9pbihcIixcIik7XG5cblx0Y29uc3QgZnVsbHlRdWFsaWZpZWROYW1lID0gYCR7YWN0aW9uTmFtZX0oJHtvdmVybG9hZH0pYDtcblxuXHRjb25zdCBwYXJhbWV0ZXJzID0gYWN0aW9uUmF3RGF0YS4kUGFyYW1ldGVyID8/IFtdO1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIkFjdGlvblwiLFxuXHRcdG5hbWU6IGFjdGlvbk5hbWUuc3Vic3RyaW5nKG5hbWVzcGFjZVByZWZpeC5sZW5ndGgpLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRpc0JvdW5kOiBhY3Rpb25SYXdEYXRhLiRJc0JvdW5kID8/IGZhbHNlLFxuXHRcdGlzRnVuY3Rpb246IGFjdGlvblJhd0RhdGEuJGtpbmQgPT09IFwiRnVuY3Rpb25cIixcblx0XHRzb3VyY2VUeXBlOiBvdmVybG9hZFBhcmFtZXRlcnNbMF0/LiRUeXBlID8/IFwiXCIsXG5cdFx0cmV0dXJuVHlwZTogYWN0aW9uUmF3RGF0YS4kUmV0dXJuVHlwZT8uJFR5cGUgPz8gXCJcIixcblx0XHRwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLm1hcCgocGFyYW0pID0+ICh7XG5cdFx0XHRfdHlwZTogXCJBY3Rpb25QYXJhbWV0ZXJcIixcblx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZnVsbHlRdWFsaWZpZWROYW1lfS8ke3BhcmFtLiROYW1lfWAsXG5cdFx0XHRpc0NvbGxlY3Rpb246IHBhcmFtLiRpc0NvbGxlY3Rpb24gPz8gZmFsc2UsXG5cdFx0XHRuYW1lOiBwYXJhbS4kTmFtZSxcblx0XHRcdHR5cGU6IHBhcmFtLiRUeXBlLFxuXHRcdFx0bnVsbGFibGU6IHBhcmFtLiROdWxsYWJsZSA/PyBmYWxzZSxcblx0XHRcdG1heExlbmd0aDogcGFyYW0uJE1heExlbmd0aCxcblx0XHRcdHByZWNpc2lvbjogcGFyYW0uJFByZWNpc2lvbixcblx0XHRcdHNjYWxlOiBwYXJhbS4kU2NhbGVcblx0XHR9KSlcblx0fTtcbn1cblxuZnVuY3Rpb24gcGFyc2VFbnRpdHlDb250YWluZXIoXG5cdG5hbWVzcGFjZVByZWZpeDogc3RyaW5nLFxuXHRlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcsXG5cdGVudGl0eUNvbnRhaW5lck1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuXHRzY2hlbWE6IFJhd1NjaGVtYVxuKSB7XG5cdHNjaGVtYS5lbnRpdHlDb250YWluZXIgPSB7XG5cdFx0X3R5cGU6IFwiRW50aXR5Q29udGFpbmVyXCIsXG5cdFx0bmFtZTogZW50aXR5Q29udGFpbmVyTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBlbnRpdHlDb250YWluZXJOYW1lXG5cdH07XG5cblx0Zm9yIChjb25zdCBlbGVtZW50TmFtZSBpbiBlbnRpdHlDb250YWluZXJNZXRhZGF0YSkge1xuXHRcdGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGVudGl0eUNvbnRhaW5lck1ldGFkYXRhW2VsZW1lbnROYW1lXTtcblx0XHRzd2l0Y2ggKGVsZW1lbnRWYWx1ZS4ka2luZCkge1xuXHRcdFx0Y2FzZSBcIkVudGl0eVNldFwiOlxuXHRcdFx0XHRzY2hlbWEuZW50aXR5U2V0cy5wdXNoKHByZXBhcmVFbnRpdHlTZXQoZWxlbWVudFZhbHVlLCBlbGVtZW50TmFtZSwgZW50aXR5Q29udGFpbmVyTmFtZSkpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlNpbmdsZXRvblwiOlxuXHRcdFx0XHRzY2hlbWEuc2luZ2xldG9ucy5wdXNoKHByZXBhcmVTaW5nbGV0b24oZWxlbWVudFZhbHVlLCBlbGVtZW50TmFtZSwgZW50aXR5Q29udGFpbmVyTmFtZSkpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkFjdGlvbkltcG9ydFwiOlxuXHRcdFx0XHRzY2hlbWEuYWN0aW9uSW1wb3J0cy5wdXNoKHByZXBhcmVBY3Rpb25JbXBvcnQoZWxlbWVudFZhbHVlLCBlbGVtZW50TmFtZSwgZW50aXR5Q29udGFpbmVyTmFtZSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2VBbm5vdGF0aW9ucyhhbm5vdGF0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiwgY2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcykge1xuXHRjb25zdCBhbm5vdGF0aW9uTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0PiA9IHt9O1xuXHRmb3IgKGNvbnN0IHRhcmdldCBpbiBhbm5vdGF0aW9ucykge1xuXHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhhbm5vdGF0aW9uc1t0YXJnZXRdLCB0YXJnZXQsIGFubm90YXRpb25MaXN0cywgY2FwYWJpbGl0aWVzKTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhhbm5vdGF0aW9uTGlzdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNjaGVtYShtZXRhTW9kZWxEYXRhOiBhbnkpIHtcblx0Ly8gYXNzdW1pbmcgdGhlcmUgaXMgb25seSBvbmUgc2NoZW1hL25hbWVzcGFjZVxuXHRjb25zdCBuYW1lc3BhY2VQcmVmaXggPSBPYmplY3Qua2V5cyhtZXRhTW9kZWxEYXRhKS5maW5kKChrZXkpID0+IG1ldGFNb2RlbERhdGFba2V5XS4ka2luZCA9PT0gXCJTY2hlbWFcIikgPz8gXCJcIjtcblxuXHRjb25zdCBzY2hlbWE6IFJhd1NjaGVtYSA9IHtcblx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZVByZWZpeC5zbGljZSgwLCAtMSksXG5cdFx0ZW50aXR5Q29udGFpbmVyOiB7IF90eXBlOiBcIkVudGl0eUNvbnRhaW5lclwiLCBuYW1lOiBcIlwiLCBmdWxseVF1YWxpZmllZE5hbWU6IFwiXCIgfSxcblx0XHRlbnRpdHlTZXRzOiBbXSxcblx0XHRlbnRpdHlUeXBlczogW10sXG5cdFx0Y29tcGxleFR5cGVzOiBbXSxcblx0XHR0eXBlRGVmaW5pdGlvbnM6IFtdLFxuXHRcdHNpbmdsZXRvbnM6IFtdLFxuXHRcdGFzc29jaWF0aW9uczogW10sXG5cdFx0YXNzb2NpYXRpb25TZXRzOiBbXSxcblx0XHRhY3Rpb25zOiBbXSxcblx0XHRhY3Rpb25JbXBvcnRzOiBbXSxcblx0XHRhbm5vdGF0aW9uczoge31cblx0fTtcblxuXHRjb25zdCBwYXJzZU1ldGFNb2RlbEVsZW1lbnQgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0c3dpdGNoICh2YWx1ZS4ka2luZCkge1xuXHRcdFx0Y2FzZSBcIkVudGl0eUNvbnRhaW5lclwiOlxuXHRcdFx0XHRwYXJzZUVudGl0eUNvbnRhaW5lcihuYW1lc3BhY2VQcmVmaXgsIG5hbWUsIHZhbHVlLCBzY2hlbWEpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkFjdGlvblwiOlxuXHRcdFx0Y2FzZSBcIkZ1bmN0aW9uXCI6XG5cdFx0XHRcdHNjaGVtYS5hY3Rpb25zLnB1c2gocHJlcGFyZUFjdGlvbih2YWx1ZSwgbmFtZSwgbmFtZXNwYWNlUHJlZml4KSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiRW50aXR5VHlwZVwiOlxuXHRcdFx0XHRzY2hlbWEuZW50aXR5VHlwZXMucHVzaChwcmVwYXJlRW50aXR5VHlwZSh2YWx1ZSwgbmFtZSwgbmFtZXNwYWNlUHJlZml4LCBtZXRhTW9kZWxEYXRhKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiQ29tcGxleFR5cGVcIjpcblx0XHRcdFx0c2NoZW1hLmNvbXBsZXhUeXBlcy5wdXNoKHByZXBhcmVDb21wbGV4VHlwZSh2YWx1ZSwgbmFtZSwgbmFtZXNwYWNlUHJlZml4KSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVHlwZURlZmluaXRpb25cIjpcblx0XHRcdFx0c2NoZW1hLnR5cGVEZWZpbml0aW9ucy5wdXNoKHByZXBhcmVUeXBlRGVmaW5pdGlvbih2YWx1ZSwgbmFtZSwgbmFtZXNwYWNlUHJlZml4KSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblxuXHRmb3IgKGNvbnN0IGVsZW1lbnROYW1lIGluIG1ldGFNb2RlbERhdGEpIHtcblx0XHRjb25zdCBlbGVtZW50VmFsdWUgPSBtZXRhTW9kZWxEYXRhW2VsZW1lbnROYW1lXTtcblxuXHRcdGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnRWYWx1ZSkpIHtcblx0XHRcdC8vIHZhbHVlIGNhbiBiZSBhbiBhcnJheSBpbiBjYXNlIG9mIGFjdGlvbnMgb3IgZnVuY3Rpb25zXG5cdFx0XHRmb3IgKGNvbnN0IHN1YkVsZW1lbnRWYWx1ZSBvZiBlbGVtZW50VmFsdWUpIHtcblx0XHRcdFx0cGFyc2VNZXRhTW9kZWxFbGVtZW50KGVsZW1lbnROYW1lLCBzdWJFbGVtZW50VmFsdWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJzZU1ldGFNb2RlbEVsZW1lbnQoZWxlbWVudE5hbWUsIGVsZW1lbnRWYWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHNjaGVtYTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWV0YU1vZGVsKFxuXHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLFxuXHRjYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0gRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pOiBSYXdNZXRhZGF0YSB7XG5cdGNvbnN0IHJlc3VsdDogT21pdDxSYXdNZXRhZGF0YSwgXCJzY2hlbWFcIj4gPSB7XG5cdFx0aWRlbnRpZmljYXRpb246IFwibWV0YW1vZGVsUmVzdWx0XCIsXG5cdFx0dmVyc2lvbjogXCI0LjBcIixcblx0XHRyZWZlcmVuY2VzOiBbXVxuXHR9O1xuXG5cdC8vIHBhcnNlIHRoZSBzY2hlbWEgd2hlbiBpdCBpcyBhY2Nlc3NlZCBmb3IgdGhlIGZpcnN0IHRpbWVcblx0QW5ub3RhdGlvbkNvbnZlcnRlci5sYXp5KHJlc3VsdCBhcyBSYXdNZXRhZGF0YSwgXCJzY2hlbWFcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbERhdGEgPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KFwiLyRcIik7XG5cdFx0Y29uc3Qgc2NoZW1hID0gcGFyc2VTY2hlbWEobWV0YU1vZGVsRGF0YSk7XG5cblx0XHRBbm5vdGF0aW9uQ29udmVydGVyLmxhenkoc2NoZW1hLmFubm90YXRpb25zLCBcIm1ldGFtb2RlbFJlc3VsdFwiLCAoKSA9PiBwYXJzZUFubm90YXRpb25zKG1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zLCBjYXBhYmlsaXRpZXMpKTtcblxuXHRcdHJldHVybiBzY2hlbWE7XG5cdH0pO1xuXG5cdHJldHVybiByZXN1bHQgYXMgUmF3TWV0YWRhdGE7XG59XG5cbmNvbnN0IG1NZXRhTW9kZWxNYXA6IFJlY29yZDxzdHJpbmcsIENvbnZlcnRlZE1ldGFkYXRhPiA9IHt9O1xuXG4vKipcbiAqIENvbnZlcnQgdGhlIE9EYXRhTWV0YU1vZGVsIGludG8gYW5vdGhlciBmb3JtYXQgdGhhdCBhbGxvdyBmb3IgZWFzeSBtYW5pcHVsYXRpb24gb2YgdGhlIGFubm90YXRpb25zLlxuICpcbiAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBPRGF0YU1ldGFNb2RlbFxuICogQHBhcmFtIG9DYXBhYmlsaXRpZXMgVGhlIGN1cnJlbnQgY2FwYWJpbGl0aWVzXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyBvYmplY3QtbGlrZSBhbm5vdGF0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFR5cGVzKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBvQ2FwYWJpbGl0aWVzPzogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpOiBDb252ZXJ0ZWRNZXRhZGF0YSB7XG5cdGNvbnN0IHNNZXRhTW9kZWxJZCA9IChvTWV0YU1vZGVsIGFzIGFueSkuaWQ7XG5cdGlmICghbU1ldGFNb2RlbE1hcC5oYXNPd25Qcm9wZXJ0eShzTWV0YU1vZGVsSWQpKSB7XG5cdFx0Y29uc3QgcGFyc2VkT3V0cHV0ID0gcGFyc2VNZXRhTW9kZWwob01ldGFNb2RlbCwgb0NhcGFiaWxpdGllcyk7XG5cdFx0dHJ5IHtcblx0XHRcdG1NZXRhTW9kZWxNYXBbc01ldGFNb2RlbElkXSA9IEFubm90YXRpb25Db252ZXJ0ZXIuY29udmVydChwYXJzZWRPdXRwdXQpO1xuXHRcdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKG9FcnJvciBhcyBhbnkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbU1ldGFNb2RlbE1hcFtzTWV0YU1vZGVsSWRdIGFzIGFueSBhcyBDb252ZXJ0ZWRNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnZlcnRlZFR5cGVzKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpIGFzIHVua25vd24gYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGlmICghb01ldGFNb2RlbC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNZXRhTW9kZWxcIikpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBhIE9EYXRhTWV0YU1vZGVsXCIpO1xuXHR9XG5cdHJldHVybiBjb252ZXJ0VHlwZXMob01ldGFNb2RlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVNb2RlbENhY2hlRGF0YShvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCkge1xuXHRkZWxldGUgbU1ldGFNb2RlbE1hcFsob01ldGFNb2RlbCBhcyBhbnkpLmlkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KG9NZXRhTW9kZWxDb250ZXh0OiBDb250ZXh0LCBiSW5jbHVkZVZpc2l0ZWRPYmplY3RzOiB0cnVlKTogdW5kZWZpbmVkIHwgUmVzb2x2ZWRUYXJnZXQ7XG5leHBvcnQgZnVuY3Rpb24gY29udmVydE1ldGFNb2RlbENvbnRleHQob01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQpOiB1bmRlZmluZWQgfCBTZXJ2aWNlT2JqZWN0IHwgQWN0aW9uUGFyYW1ldGVyIHwgUmVjb3JkQ29tcGxleFR5cGU7XG5leHBvcnQgZnVuY3Rpb24gY29udmVydE1ldGFNb2RlbENvbnRleHQoXG5cdG9NZXRhTW9kZWxDb250ZXh0OiBDb250ZXh0LFxuXHRiSW5jbHVkZVZpc2l0ZWRPYmplY3RzID0gZmFsc2Vcbik6IHVuZGVmaW5lZCB8IFNlcnZpY2VPYmplY3QgfCBBY3Rpb25QYXJhbWV0ZXIgfCBSZWNvcmRDb21wbGV4VHlwZSB8IFJlc29sdmVkVGFyZ2V0IHtcblx0Y29uc3Qgb0NvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKG9NZXRhTW9kZWxDb250ZXh0LmdldE1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRjb25zdCBzUGF0aCA9IG9NZXRhTW9kZWxDb250ZXh0LmdldFBhdGgoKTtcblxuXHRjb25zdCBhUGF0aFNwbGl0ID0gc1BhdGguc3BsaXQoXCIvXCIpO1xuXHRsZXQgZmlyc3RQYXJ0ID0gYVBhdGhTcGxpdFsxXTtcblx0bGV0IGJlZ2luSW5kZXggPSAyO1xuXHRpZiAob0NvbnZlcnRlZE1ldGFkYXRhLmVudGl0eUNvbnRhaW5lci5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZpcnN0UGFydCkge1xuXHRcdGZpcnN0UGFydCA9IGFQYXRoU3BsaXRbMl07XG5cdFx0YmVnaW5JbmRleCsrO1xuXHR9XG5cdGxldCB0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiA9IG9Db252ZXJ0ZWRNZXRhZGF0YS5lbnRpdHlTZXRzLmZpbmQoXG5cdFx0KGVudGl0eVNldCkgPT4gZW50aXR5U2V0Lm5hbWUgPT09IGZpcnN0UGFydFxuXHQpIGFzIEVudGl0eVNldDtcblx0aWYgKCF0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHR0YXJnZXRFbnRpdHlTZXQgPSBvQ29udmVydGVkTWV0YWRhdGEuc2luZ2xldG9ucy5maW5kKChzaW5nbGV0b24pID0+IHNpbmdsZXRvbi5uYW1lID09PSBmaXJzdFBhcnQpIGFzIFNpbmdsZXRvbjtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoID0gYVBhdGhTcGxpdC5zbGljZShiZWdpbkluZGV4KS5qb2luKFwiL1wiKTtcblxuXHRjb25zdCBsb2NhbE9iamVjdHM6IGFueVtdID0gW3RhcmdldEVudGl0eVNldF07XG5cdHdoaWxlIChyZWxhdGl2ZVBhdGggJiYgcmVsYXRpdmVQYXRoLmxlbmd0aCA+IDAgJiYgcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiKSkge1xuXHRcdGxldCByZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRsZXQgaWR4ID0gMDtcblx0XHRsZXQgY3VycmVudEVudGl0eVNldCwgc05hdlByb3BUb0NoZWNrO1xuXG5cdFx0cmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlU3BsaXQuc2xpY2UoMSk7IC8vIFJlbW92aW5nIFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIlxuXHRcdHdoaWxlICghY3VycmVudEVudGl0eVNldCAmJiByZWxhdGl2ZVNwbGl0Lmxlbmd0aCA+IGlkeCkge1xuXHRcdFx0aWYgKHJlbGF0aXZlU3BsaXRbaWR4XSAhPT0gXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiKSB7XG5cdFx0XHRcdC8vIEZpbmRpbmcgdGhlIGNvcnJlY3QgZW50aXR5U2V0IGZvciB0aGUgbmF2aWdhaXRvbiBwcm9wZXJ0eSBiaW5kaW5nIGV4YW1wbGU6IFwiU2V0L19TYWxlc09yZGVyXCJcblx0XHRcdFx0c05hdlByb3BUb0NoZWNrID0gcmVsYXRpdmVTcGxpdFxuXHRcdFx0XHRcdC5zbGljZSgwLCBpZHggKyAxKVxuXHRcdFx0XHRcdC5qb2luKFwiL1wiKVxuXHRcdFx0XHRcdC5yZXBsYWNlKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCIsIFwiXCIpO1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gdGFyZ2V0RW50aXR5U2V0ICYmIHRhcmdldEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZQcm9wVG9DaGVja107XG5cdFx0XHR9XG5cdFx0XHRpZHgrKztcblx0XHR9XG5cdFx0aWYgKCFjdXJyZW50RW50aXR5U2V0KSB7XG5cdFx0XHQvLyBGYWxsIGJhY2sgdG8gU2luZ2xlIG5hdiBwcm9wIGlmIGVudGl0eVNldCBpcyBub3QgZm91bmQuXG5cdFx0XHRzTmF2UHJvcFRvQ2hlY2sgPSByZWxhdGl2ZVNwbGl0WzBdO1xuXHRcdH1cblx0XHRjb25zdCBhTmF2UHJvcHMgPSBzTmF2UHJvcFRvQ2hlY2s/LnNwbGl0KFwiL1wiKSB8fCBbXTtcblx0XHRsZXQgdGFyZ2V0RW50aXR5VHlwZSA9IHRhcmdldEVudGl0eVNldCAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRmb3IgKGNvbnN0IHNOYXZQcm9wIG9mIGFOYXZQcm9wcykge1xuXHRcdFx0Ly8gUHVzaGluZyBhbGwgbmF2IHByb3BzIHRvIHRoZSB2aXNpdGVkIG9iamVjdHMuIGV4YW1wbGU6IFwiU2V0XCIsIFwiX1NhbGVzT3JkZXJcIiBmb3IgXCJTZXQvX1NhbGVzT3JkZXJcIihpbiBOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVxuXHRcdFx0Y29uc3QgdGFyZ2V0TmF2UHJvcCA9IHRhcmdldEVudGl0eVR5cGUgJiYgdGFyZ2V0RW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUgPT09IHNOYXZQcm9wKTtcblx0XHRcdGlmICh0YXJnZXROYXZQcm9wKSB7XG5cdFx0XHRcdGxvY2FsT2JqZWN0cy5wdXNoKHRhcmdldE5hdlByb3ApO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlUeXBlID0gdGFyZ2V0TmF2UHJvcC50YXJnZXRUeXBlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRhcmdldEVudGl0eVNldCA9XG5cdFx0XHQodGFyZ2V0RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQpIHx8ICh0YXJnZXRFbnRpdHlTZXQgJiYgdGFyZ2V0RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbcmVsYXRpdmVTcGxpdFswXV0pO1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHRcdC8vIFB1c2hpbmcgdGhlIHRhcmdldCBlbnRpdHlTZXQgdG8gdmlzaXRlZCBvYmplY3RzXG5cdFx0XHRsb2NhbE9iamVjdHMucHVzaCh0YXJnZXRFbnRpdHlTZXQpO1xuXHRcdH1cblx0XHQvLyBSZS1jYWxjdWxhdGluZyB0aGUgcmVsYXRpdmUgcGF0aFxuXHRcdC8vIEFzIGVhY2ggbmF2aWdhdGlvbiBuYW1lIGlzIGVuY2xvc2VkIGJldHdlZW4gJyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nJyBhbmQgJyQnICh0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgZW50aXR5c2V0IGVhc2lseSBpbiB0aGUgbWV0YW1vZGVsKVxuXHRcdC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBjbG9zaW5nICckJyB0byBiZSBhYmxlIHRvIHN3aXRjaCB0byB0aGUgbmV4dCBuYXZpZ2F0aW9uXG5cdFx0cmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlU3BsaXQuc2xpY2UoYU5hdlByb3BzLmxlbmd0aCB8fCAxKTtcblx0XHRpZiAocmVsYXRpdmVTcGxpdC5sZW5ndGggJiYgcmVsYXRpdmVTcGxpdFswXSA9PT0gXCIkXCIpIHtcblx0XHRcdHJlbGF0aXZlU3BsaXQuc2hpZnQoKTtcblx0XHR9XG5cdFx0cmVsYXRpdmVQYXRoID0gcmVsYXRpdmVTcGxpdC5qb2luKFwiL1wiKTtcblx0fVxuXHRpZiAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkVHlwZVwiKSkge1xuXHRcdC8vIEFzICRUeXBlQCBpcyBhbGxvd2VkIGFzIHdlbGxcblx0XHRpZiAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkVHlwZUBcIikpIHtcblx0XHRcdHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aC5yZXBsYWNlKFwiJFR5cGVcIiwgXCJcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlJ3JlIGFueXdheSBnb2luZyB0byBsb29rIG9uIHRoZSBlbnRpdHlUeXBlLi4uXG5cdFx0XHRyZWxhdGl2ZVBhdGggPSBhUGF0aFNwbGl0LnNsaWNlKDMpLmpvaW4oXCIvXCIpO1xuXHRcdH1cblx0fVxuXHRpZiAodGFyZ2V0RW50aXR5U2V0ICYmIHJlbGF0aXZlUGF0aC5sZW5ndGgpIHtcblx0XHRjb25zdCBvVGFyZ2V0ID0gdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUucmVzb2x2ZVBhdGgocmVsYXRpdmVQYXRoLCBiSW5jbHVkZVZpc2l0ZWRPYmplY3RzKTtcblx0XHRpZiAob1RhcmdldCkge1xuXHRcdFx0aWYgKGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRcdFx0b1RhcmdldC52aXNpdGVkT2JqZWN0cyA9IGxvY2FsT2JqZWN0cy5jb25jYXQob1RhcmdldC52aXNpdGVkT2JqZWN0cyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5hY3Rpb25zKSB7XG5cdFx0XHQvLyBpZiB0YXJnZXQgaXMgYW4gYWN0aW9uIG9yIGFuIGFjdGlvbiBwYXJhbWV0ZXJcblx0XHRcdGNvbnN0IGFjdGlvbnMgPSB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5hY3Rpb25zO1xuXHRcdFx0Y29uc3QgcmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlUGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRpZiAoYWN0aW9uc1tyZWxhdGl2ZVNwbGl0WzBdXSkge1xuXHRcdFx0XHRjb25zdCBhY3Rpb24gPSBhY3Rpb25zW3JlbGF0aXZlU3BsaXRbMF1dO1xuXHRcdFx0XHRpZiAocmVsYXRpdmVTcGxpdFsxXSAmJiBhY3Rpb24ucGFyYW1ldGVycykge1xuXHRcdFx0XHRcdGNvbnN0IHBhcmFtZXRlck5hbWUgPSByZWxhdGl2ZVNwbGl0WzFdO1xuXHRcdFx0XHRcdHJldHVybiBhY3Rpb24ucGFyYW1ldGVycy5maW5kKChwYXJhbWV0ZXIpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbWV0ZXIuZnVsbHlRdWFsaWZpZWROYW1lLmVuZHNXaXRoKGAvJHtwYXJhbWV0ZXJOYW1lfWApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHJlbGF0aXZlUGF0aC5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRyZXR1cm4gYWN0aW9uO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvVGFyZ2V0O1xuXHR9IGVsc2Uge1xuXHRcdGlmIChiSW5jbHVkZVZpc2l0ZWRPYmplY3RzKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0YXJnZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0dmlzaXRlZE9iamVjdHM6IGxvY2FsT2JqZWN0c1xuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHRhcmdldEVudGl0eVNldDtcblx0fVxufVxuXG5leHBvcnQgdHlwZSBSZXNvbHZlZFRhcmdldCA9IHtcblx0dGFyZ2V0PzogU2VydmljZU9iamVjdDtcblx0dmlzaXRlZE9iamVjdHM6IFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9NZXRhTW9kZWxDb250ZXh0OiBDb250ZXh0LCBvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dD86IENvbnRleHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3Qgb0NvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKG9NZXRhTW9kZWxDb250ZXh0LmdldE1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRjb25zdCBtZXRhTW9kZWxDb250ZXh0ID0gY29udmVydE1ldGFNb2RlbENvbnRleHQob01ldGFNb2RlbENvbnRleHQsIHRydWUpIGFzIFJlc29sdmVkVGFyZ2V0O1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb247XG5cdGlmIChvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCAmJiBvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dC5nZXRQYXRoKCkgIT09IFwiL1wiKSB7XG5cdFx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24gPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob0VudGl0eVNldE1ldGFNb2RlbENvbnRleHQpO1xuXHR9XG5cdHJldHVybiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoKG1ldGFNb2RlbENvbnRleHQsIG9Db252ZXJ0ZWRNZXRhZGF0YSwgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RGcm9tUGF0aChcblx0bWV0YU1vZGVsQ29udGV4dDogUmVzb2x2ZWRUYXJnZXQsXG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZWRNZXRhZGF0YSxcblx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRvbmx5U2VydmljZU9iamVjdHMgPSBmYWxzZVxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdHMgPSBtZXRhTW9kZWxDb250ZXh0LnZpc2l0ZWRPYmplY3RzLmZpbHRlcihcblx0XHQodmlzaXRlZE9iamVjdCkgPT4gaXNTZXJ2aWNlT2JqZWN0KHZpc2l0ZWRPYmplY3QpICYmICFpc0VudGl0eVR5cGUodmlzaXRlZE9iamVjdCkgJiYgIWlzRW50aXR5Q29udGFpbmVyKHZpc2l0ZWRPYmplY3QpXG5cdCk7XG5cdGlmIChcblx0XHRpc1NlcnZpY2VPYmplY3QobWV0YU1vZGVsQ29udGV4dC50YXJnZXQpICYmXG5cdFx0IWlzRW50aXR5VHlwZShtZXRhTW9kZWxDb250ZXh0LnRhcmdldCkgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RzW2RhdGFNb2RlbE9iamVjdHMubGVuZ3RoIC0gMV0gIT09IG1ldGFNb2RlbENvbnRleHQudGFyZ2V0ICYmXG5cdFx0IW9ubHlTZXJ2aWNlT2JqZWN0c1xuXHQpIHtcblx0XHRkYXRhTW9kZWxPYmplY3RzLnB1c2gobWV0YU1vZGVsQ29udGV4dC50YXJnZXQpO1xuXHR9XG5cblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdGNvbnN0IHJvb3RFbnRpdHlTZXQ6IEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdHNbMF0gYXMgRW50aXR5U2V0O1xuXG5cdGxldCBjdXJyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCB1bmRlZmluZWQgPSByb290RW50aXR5U2V0O1xuXHRsZXQgY3VycmVudEVudGl0eVR5cGU6IEVudGl0eVR5cGUgPSByb290RW50aXR5U2V0LmVudGl0eVR5cGU7XG5cdGxldCBjdXJyZW50T2JqZWN0OiBTZXJ2aWNlT2JqZWN0QW5kQW5ub3RhdGlvbiB8IHVuZGVmaW5lZDtcblx0bGV0IG5hdmlnYXRlZFBhdGggPSBbXTtcblxuXHRmb3IgKGxldCBpID0gMTsgaSA8IGRhdGFNb2RlbE9iamVjdHMubGVuZ3RoOyBpKyspIHtcblx0XHRjdXJyZW50T2JqZWN0ID0gZGF0YU1vZGVsT2JqZWN0c1tpXTtcblxuXHRcdGlmIChpc05hdmlnYXRpb25Qcm9wZXJ0eShjdXJyZW50T2JqZWN0KSkge1xuXHRcdFx0bmF2aWdhdGVkUGF0aC5wdXNoKGN1cnJlbnRPYmplY3QubmFtZSk7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKGN1cnJlbnRPYmplY3QpO1xuXHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBjdXJyZW50T2JqZWN0LnRhcmdldFR5cGU7XG5cdFx0XHRjb25zdCBib3VuZEVudGl0eVNldDogRW50aXR5U2V0IHwgU2luZ2xldG9uIHwgdW5kZWZpbmVkID0gY3VycmVudEVudGl0eVNldD8ubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0ZWRQYXRoLmpvaW4oXCIvXCIpXTtcblx0XHRcdGlmIChib3VuZEVudGl0eVNldCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBib3VuZEVudGl0eVNldDtcblx0XHRcdFx0bmF2aWdhdGVkUGF0aCA9IFtdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoaXNFbnRpdHlTZXQoY3VycmVudE9iamVjdCkgfHwgaXNTaW5nbGV0b24oY3VycmVudE9iamVjdCkpIHtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50T2JqZWN0O1xuXHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBjdXJyZW50RW50aXR5U2V0LmVudGl0eVR5cGU7XG5cdFx0fVxuXHR9XG5cblx0aWYgKG5hdmlnYXRlZFBhdGgubGVuZ3RoID4gMCkge1xuXHRcdC8vIFBhdGggd2l0aG91dCBOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIC0tPiBubyB0YXJnZXQgZW50aXR5IHNldFxuXHRcdGN1cnJlbnRFbnRpdHlTZXQgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRpZiAodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24gJiYgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQgIT09IHJvb3RFbnRpdHlTZXQpIHtcblx0XHQvLyBJbiBjYXNlIHRoZSBlbnRpdHlzZXQgaXMgbm90IHN0YXJ0aW5nIGZyb20gdGhlIHNhbWUgbG9jYXRpb24gaXQgbWF5IG1lYW4gdGhhdCB3ZSBhcmUgZG9pbmcgdG9vIG11Y2ggd29yayBlYXJsaWVyIGZvciBzb21lIHJlYXNvblxuXHRcdC8vIEFzIHN1Y2ggd2UgbmVlZCB0byByZWRlZmluZSB0aGUgY29udGV4dCBzb3VyY2UgZm9yIHRoZSB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvblxuXHRcdGNvbnN0IHN0YXJ0aW5nSW5kZXggPSBkYXRhTW9kZWxPYmplY3RzLmluZGV4T2YodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQpO1xuXHRcdGlmIChzdGFydGluZ0luZGV4ICE9PSAtMSkge1xuXHRcdFx0Ly8gSWYgaXQncyBub3QgZm91bmQgSSBkb24ndCBrbm93IHdoYXQgd2UgY2FuIGRvIChwcm9iYWJseSBub3RoaW5nKVxuXHRcdFx0Y29uc3QgcmVxdWlyZWREYXRhTW9kZWxPYmplY3RzID0gZGF0YU1vZGVsT2JqZWN0cy5zbGljZSgwLCBzdGFydGluZ0luZGV4KTtcblx0XHRcdHRhcmdldEVudGl0eVNldExvY2F0aW9uLnN0YXJ0aW5nRW50aXR5U2V0ID0gcm9vdEVudGl0eVNldDtcblx0XHRcdHRhcmdldEVudGl0eVNldExvY2F0aW9uLm5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gcmVxdWlyZWREYXRhTW9kZWxPYmplY3RzXG5cdFx0XHRcdC5maWx0ZXIoaXNOYXZpZ2F0aW9uUHJvcGVydHkpXG5cdFx0XHRcdC5jb25jYXQodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgYXMgTmF2aWdhdGlvblByb3BlcnR5W10pO1xuXHRcdH1cblx0fVxuXHRjb25zdCBvdXREYXRhTW9kZWxQYXRoID0ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiByb290RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IG1ldGFNb2RlbENvbnRleHQudGFyZ2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLFxuXHRcdGNvbnRleHRMb2NhdGlvbjogdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24sXG5cdFx0Y29udmVydGVkVHlwZXM6IGNvbnZlcnRlZFR5cGVzXG5cdH07XG5cdGlmICghaXNTZXJ2aWNlT2JqZWN0KG91dERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0KSAmJiBvbmx5U2VydmljZU9iamVjdHMpIHtcblx0XHRvdXREYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCA9IGlzU2VydmljZU9iamVjdChjdXJyZW50T2JqZWN0KSA/IGN1cnJlbnRPYmplY3QgOiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKCFvdXREYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbikge1xuXHRcdG91dERhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uID0gb3V0RGF0YU1vZGVsUGF0aDtcblx0fVxuXHRyZXR1cm4gb3V0RGF0YU1vZGVsUGF0aDtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7O0VBc0RPLE1BQU1BLDhCQUE4QixHQUFH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QyxDQUFDLENBQUNvQixjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7VUFDcERmLEtBQUssQ0FBQ1MsVUFBVSxDQUFTUCxJQUFJLEdBQUcsSUFBSTtRQUN0QyxDQUFDLE1BQU0sSUFBSVAsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUNvQixjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7VUFDckRmLEtBQUssQ0FBQ1MsVUFBVSxDQUFTUCxJQUFJLEdBQUcsS0FBSztRQUN2QyxDQUFDLE1BQU0sSUFBSVAsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUNvQixjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7VUFDcERmLEtBQUssQ0FBQ1MsVUFBVSxDQUFTUCxJQUFJLEdBQUcsSUFBSTtRQUN0QyxDQUFDLE1BQU0sSUFBSVAsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUNvQixjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7VUFDcERmLEtBQUssQ0FBQ1MsVUFBVSxDQUFTUCxJQUFJLEdBQUcsSUFBSTtRQUN0QyxDQUFDLE1BQU0sSUFBSVAsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUNvQixjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7VUFDckRmLEtBQUssQ0FBQ1MsVUFBVSxDQUFTUCxJQUFJLEdBQUcsS0FBSztRQUN2QyxDQUFDLE1BQU0sSUFBSVAsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUNvQixjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7VUFDcERmLEtBQUssQ0FBQ1MsVUFBVSxDQUFTUCxJQUFJLEdBQUcsSUFBSTtRQUN0QyxDQUFDLE1BQU0sSUFBSVAsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUNvQixjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7VUFDcERmLEtBQUssQ0FBQ1MsVUFBVSxDQUFTUCxJQUFJLEdBQUcsSUFBSTtRQUN0QyxDQUFDLE1BQU0sSUFBSVAsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUNvQixjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7VUFDcERmLEtBQUssQ0FBQ1MsVUFB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
|
|
1184
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJDaGFydCIsIk1pY3JvQ2hhcnQiLCJVU2hlbGwiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJBcHBTdGF0ZSIsIkluc2lnaHRzU3VwcG9ydGVkIiwicGFyc2VQcm9wZXJ0eVZhbHVlIiwiYW5ub3RhdGlvbk9iamVjdCIsInByb3BlcnR5S2V5IiwiY3VycmVudFRhcmdldCIsImFubm90YXRpb25zTGlzdHMiLCJvQ2FwYWJpbGl0aWVzIiwidmFsdWUiLCJ0eXBlT2ZBbm5vdGF0aW9uIiwidHlwZSIsIk51bGwiLCJTdHJpbmciLCJCb29sIiwiSW50IiwiQXJyYXkiLCJpc0FycmF5IiwiQ29sbGVjdGlvbiIsIm1hcCIsInN1YkFubm90YXRpb25PYmplY3QiLCJzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXgiLCJwYXJzZUFubm90YXRpb25PYmplY3QiLCJsZW5ndGgiLCJoYXNPd25Qcm9wZXJ0eSIsIiRQYXRoIiwidW5kZWZpbmVkIiwiUGF0aCIsIiREZWNpbWFsIiwiRGVjaW1hbCIsInBhcnNlRmxvYXQiLCIkUHJvcGVydHlQYXRoIiwiUHJvcGVydHlQYXRoIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiJElmIiwiSWYiLCIkQW5kIiwiQW5kIiwiJE9yIiwiT3IiLCIkTm90IiwiTm90IiwiJEVxIiwiRXEiLCIkTmUiLCJOZSIsIiRHdCIsIkd0IiwiJEdlIiwiR2UiLCIkTHQiLCJMdCIsIiRMZSIsIkxlIiwiJEFwcGx5IiwiQXBwbHkiLCJGdW5jdGlvbiIsIiRGdW5jdGlvbiIsIiRBbm5vdGF0aW9uUGF0aCIsIkFubm90YXRpb25QYXRoIiwiJEVudW1NZW1iZXIiLCJFbnVtTWVtYmVyIiwiUmVjb3JkIiwibmFtZSIsImN1cnJlbnRPYmplY3RUYXJnZXQiLCJwYXJzZWRBbm5vdGF0aW9uT2JqZWN0IiwidHlwZU9mT2JqZWN0IiwicGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24iLCJjb2xsZWN0aW9uIiwic3ViQW5ub3RhdGlvbkluZGV4IiwiJFR5cGUiLCJ0eXBlVmFsdWUiLCJwcm9wZXJ0eVZhbHVlcyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwic3RhcnRzV2l0aCIsInB1c2giLCJjcmVhdGVBbm5vdGF0aW9uTGlzdHMiLCJnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0IiwidGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJjcmVhdGVSZWZlcmVuY2VGYWNldElkIiwicmVmZXJlbmNlRmFjZXQiLCJpZCIsIklEIiwiVGFyZ2V0IiwicHJlcGFyZUlkIiwicmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyIsImZpbHRlciIsIm9SZWNvcmQiLCJpbmRleE9mIiwicmVtb3ZlSUJOQW5ub3RhdGlvbnMiLCJoYW5kbGVQcmVzZW50YXRpb25WYXJpYW50IiwiYW5ub3RhdGlvbk9iamVjdHMiLCJhbm5vdGF0aW9uVGFyZ2V0IiwiYW5ub3RhdGlvbkxpc3RzIiwib3V0QW5ub3RhdGlvbk9iamVjdCIsImFubm90YXRpb25PYmplY3RLZXkiLCJhbm5vdGF0aW9uS2V5IiwiRGF0YSIsIlZpc3VhbGl6YXRpb25zIiwiRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsInNvbWUiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluY2x1ZGVzIiwiQWxsb3dlZEV4cHJlc3Npb25zIiwiY3VycmVudE91dEFubm90YXRpb25PYmplY3QiLCJhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQiLCJzcGxpdCIsImFubm90YXRpb25RdWFsaWZpZXJTcGxpdCIsInF1YWxpZmllciIsInRlcm0iLCJjdXJyZW50QW5ub3RhdGlvblRhcmdldCIsImlzQ29sbGVjdGlvbiIsInR5cGVvZkFubm90YXRpb24iLCJyZWNvcmQiLCJwcmVwYXJlUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJlbnRpdHlUeXBlT2JqZWN0IiwicHJvcGVydHlOYW1lIiwiX3R5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwicHJlY2lzaW9uIiwiJFByZWNpc2lvbiIsInNjYWxlIiwiJFNjYWxlIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5IiwibmF2UHJvcGVydHlEZWZpbml0aW9uIiwibmF2UHJvcGVydHlOYW1lIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwiJFJlZmVyZW50aWFsQ29uc3RyYWludCIsInNvdXJjZVByb3BlcnR5TmFtZSIsInNvdXJjZVR5cGVOYW1lIiwic291cmNlUHJvcGVydHkiLCJ0YXJnZXRUeXBlTmFtZSIsInRhcmdldFByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsIiRQYXJ0bmVyIiwiJGlzQ29sbGVjdGlvbiIsImNvbnRhaW5zVGFyZ2V0IiwiJENvbnRhaW5zVGFyZ2V0IiwicHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiZW50aXR5Q29udGFpbmVyTmFtZSIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsInBhdGgiLCJwcmVwYXJlRW50aXR5U2V0IiwiZW50aXR5U2V0RGVmaW5pdGlvbiIsImVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsImVudGl0eVR5cGVOYW1lIiwicHJlcGFyZVNpbmdsZXRvbiIsInNpbmdsZXRvbkRlZmluaXRpb24iLCJzaW5nbGV0b25OYW1lIiwicHJlcGFyZUFjdGlvbkltcG9ydCIsImFjdGlvbkltcG9ydCIsImFjdGlvbkltcG9ydE5hbWUiLCJhY3Rpb25OYW1lIiwiJEFjdGlvbiIsInByZXBhcmVUeXBlRGVmaW5pdGlvbiIsInR5cGVEZWZpbml0aW9uIiwidHlwZU5hbWUiLCJuYW1lc3BhY2VQcmVmaXgiLCJ0eXBlT2JqZWN0Iiwic3Vic3RyaW5nIiwidW5kZXJseWluZ1R5cGUiLCIkVW5kZXJseWluZ1R5cGUiLCJwcmVwYXJlQ29tcGxleFR5cGUiLCJjb21wbGV4VHlwZURlZmluaXRpb24iLCJjb21wbGV4VHlwZU5hbWUiLCJjb21wbGV4VHlwZU9iamVjdCIsInByb3BlcnRpZXMiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsImNvbXBsZXhUeXBlUHJvcGVydGllcyIsInByb3BlcnR5TmFtZU9yTm90IiwiJGtpbmQiLCJzb3J0IiwiYSIsImIiLCJjb21wbGV4VHlwZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicHJlcGFyZUVudGl0eUtleXMiLCJlbnRpdHlUeXBlRGVmaW5pdGlvbiIsIm9NZXRhTW9kZWxEYXRhIiwiJEtleSIsIiRCYXNlVHlwZSIsInByZXBhcmVFbnRpdHlUeXBlIiwibWV0YU1vZGVsRGF0YSIsImVudGl0eVR5cGUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiYWN0aW9ucyIsImtleSIsInByb3BlcnR5IiwiZW50aXR5S2V5IiwiZmluZCIsIiRBbm5vdGF0aW9ucyIsImZpbHRlckZhY2V0QW5ub3RhdGlvbiIsImhlYWRlckluZm9Bbm5vdGF0aW9uIiwiVHlwZU5hbWUiLCJUeXBlTmFtZVBsdXJhbCIsIlRpdGxlIiwiVmFsdWUiLCJlbnRpdHlQcm9wZXJ0eSIsInByZXBhcmVBY3Rpb24iLCJhY3Rpb25SYXdEYXRhIiwib3ZlcmxvYWRQYXJhbWV0ZXJzIiwiJFBhcmFtZXRlciIsIiRJc0JvdW5kIiwib3ZlcmxvYWQiLCJwYXJhbWV0ZXIiLCJqb2luIiwicGFyYW1ldGVycyIsImlzQm91bmQiLCJpc0Z1bmN0aW9uIiwic291cmNlVHlwZSIsInJldHVyblR5cGUiLCIkUmV0dXJuVHlwZSIsInBhcmFtIiwiJE5hbWUiLCJwYXJzZUVudGl0eUNvbnRhaW5lciIsImVudGl0eUNvbnRhaW5lck1ldGFkYXRhIiwic2NoZW1hIiwiZW50aXR5Q29udGFpbmVyIiwiZWxlbWVudE5hbWUiLCJlbGVtZW50VmFsdWUiLCJlbnRpdHlTZXRzIiwic2luZ2xldG9ucyIsImFjdGlvbkltcG9ydHMiLCJwYXJzZUFubm90YXRpb25zIiwiY2FwYWJpbGl0aWVzIiwidmFsdWVzIiwicGFyc2VTY2hlbWEiLCJuYW1lc3BhY2UiLCJzbGljZSIsImVudGl0eVR5cGVzIiwiY29tcGxleFR5cGVzIiwidHlwZURlZmluaXRpb25zIiwiYXNzb2NpYXRpb25zIiwiYXNzb2NpYXRpb25TZXRzIiwicGFyc2VNZXRhTW9kZWxFbGVtZW50Iiwic3ViRWxlbWVudFZhbHVlIiwicGFyc2VNZXRhTW9kZWwiLCJtZXRhTW9kZWwiLCJyZXN1bHQiLCJpZGVudGlmaWNhdGlvbiIsInZlcnNpb24iLCJyZWZlcmVuY2VzIiwiQW5ub3RhdGlvbkNvbnZlcnRlciIsImxhenkiLCJnZXRPYmplY3QiLCJtTWV0YU1vZGVsTWFwIiwiY29udmVydFR5cGVzIiwib01ldGFNb2RlbCIsInNNZXRhTW9kZWxJZCIsInBhcnNlZE91dHB1dCIsImNvbnZlcnQiLCJvRXJyb3IiLCJFcnJvciIsImdldENvbnZlcnRlZFR5cGVzIiwib0NvbnRleHQiLCJnZXRNb2RlbCIsImlzQSIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsQ29udGV4dCIsImJJbmNsdWRlVmlzaXRlZE9iamVjdHMiLCJvQ29udmVydGVkTWV0YWRhdGEiLCJzUGF0aCIsImdldFBhdGgiLCJhUGF0aFNwbGl0IiwiZmlyc3RQYXJ0IiwiYmVnaW5JbmRleCIsInRhcmdldEVudGl0eVNldCIsImVudGl0eVNldCIsInNpbmdsZXRvbiIsInJlbGF0aXZlUGF0aCIsImxvY2FsT2JqZWN0cyIsInJlbGF0aXZlU3BsaXQiLCJpZHgiLCJjdXJyZW50RW50aXR5U2V0Iiwic05hdlByb3BUb0NoZWNrIiwicmVwbGFjZSIsImFOYXZQcm9wcyIsInRhcmdldEVudGl0eVR5cGUiLCJzTmF2UHJvcCIsInRhcmdldE5hdlByb3AiLCJuYXZQcm9wIiwidGFyZ2V0VHlwZSIsInNoaWZ0Iiwib1RhcmdldCIsInJlc29sdmVQYXRoIiwidmlzaXRlZE9iamVjdHMiLCJjb25jYXQiLCJhY3Rpb24iLCJwYXJhbWV0ZXJOYW1lIiwiZW5kc1dpdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCIsIm1ldGFNb2RlbENvbnRleHQiLCJ0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGgiLCJjb252ZXJ0ZWRUeXBlcyIsIm9ubHlTZXJ2aWNlT2JqZWN0cyIsImRhdGFNb2RlbE9iamVjdHMiLCJ2aXNpdGVkT2JqZWN0IiwiaXNTZXJ2aWNlT2JqZWN0IiwiaXNFbnRpdHlUeXBlIiwiaXNFbnRpdHlDb250YWluZXIiLCJyb290RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJjdXJyZW50T2JqZWN0IiwibmF2aWdhdGVkUGF0aCIsImkiLCJpc05hdmlnYXRpb25Qcm9wZXJ0eSIsImJvdW5kRW50aXR5U2V0IiwiaXNFbnRpdHlTZXQiLCJpc1NpbmdsZXRvbiIsInN0YXJ0aW5nRW50aXR5U2V0Iiwic3RhcnRpbmdJbmRleCIsInJlcXVpcmVkRGF0YU1vZGVsT2JqZWN0cyIsIm91dERhdGFNb2RlbFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250ZXh0TG9jYXRpb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1ldGFNb2RlbENvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgcmV0cmlldmVkIGZyb20gQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlciwgc2hhcmVkIGNvZGUgd2l0aCB0b29sIHN1aXRlXG5cbmltcG9ydCB0eXBlIHtcblx0QWN0aW9uUGFyYW1ldGVyLFxuXHRBbm5vdGF0aW9uLFxuXHRBbm5vdGF0aW9uTGlzdCxcblx0QW5ub3RhdGlvblJlY29yZCxcblx0Q29udmVydGVkTWV0YWRhdGEsXG5cdEVudGl0eVNldCxcblx0RW50aXR5VHlwZSxcblx0RXhwcmVzc2lvbixcblx0TmF2aWdhdGlvblByb3BlcnR5LFxuXHRSYXdBY3Rpb24sXG5cdFJhd0FjdGlvbkltcG9ydCxcblx0UmF3Q29tcGxleFR5cGUsXG5cdFJhd0VudGl0eVNldCxcblx0UmF3RW50aXR5VHlwZSxcblx0UmF3TWV0YWRhdGEsXG5cdFJhd05hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcsXG5cdFJhd1Byb3BlcnR5LFxuXHRSYXdTY2hlbWEsXG5cdFJhd1NpbmdsZXRvbixcblx0UmF3VHlwZURlZmluaXRpb24sXG5cdFJhd1Y0TmF2aWdhdGlvblByb3BlcnR5LFxuXHRSZWZlcmVudGlhbENvbnN0cmFpbnQsXG5cdFNlcnZpY2VPYmplY3QsXG5cdFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uLFxuXHRTaW5nbGV0b25cbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFJlY29yZENvbXBsZXhUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkNvbnZlcnRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbW1vblwiO1xuaW1wb3J0IHtcblx0aXNFbnRpdHlDb250YWluZXIsXG5cdGlzRW50aXR5U2V0LFxuXHRpc0VudGl0eVR5cGUsXG5cdGlzTmF2aWdhdGlvblByb3BlcnR5LFxuXHRpc1NlcnZpY2VPYmplY3QsXG5cdGlzU2luZ2xldG9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBwcmVwYXJlSWQgfSBmcm9tIFwiLi4vaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IHtcblx0Q2hhcnQ6IGJvb2xlYW47XG5cdE1pY3JvQ2hhcnQ6IGJvb2xlYW47XG5cdFVTaGVsbDogYm9vbGVhbjtcblx0SW50ZW50QmFzZWROYXZpZ2F0aW9uOiBib29sZWFuO1xuXHRBcHBTdGF0ZTogYm9vbGVhbjtcblx0SW5zaWdodHNTdXBwb3J0ZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0ge1xuXHRDaGFydDogdHJ1ZSxcblx0TWljcm9DaGFydDogdHJ1ZSxcblx0VVNoZWxsOiB0cnVlLFxuXHRJbnRlbnRCYXNlZE5hdmlnYXRpb246IHRydWUsXG5cdEFwcFN0YXRlOiB0cnVlLFxuXHRJbnNpZ2h0c1N1cHBvcnRlZDogZmFsc2Vcbn07XG5cbmV4cG9ydCB0eXBlIE1ldGFNb2RlbEFjdGlvbiA9IHtcblx0JGtpbmQ6IFwiQWN0aW9uXCIgfCBcIkZ1bmN0aW9uXCI7XG5cdCRJc0JvdW5kOiBib29sZWFuO1xuXHQkRW50aXR5U2V0UGF0aDogc3RyaW5nO1xuXHQkUGFyYW1ldGVyOiB7XG5cdFx0JFR5cGU6IHN0cmluZztcblx0XHQkTmFtZTogc3RyaW5nO1xuXHRcdCROdWxsYWJsZT86IGJvb2xlYW47XG5cdFx0JE1heExlbmd0aD86IG51bWJlcjtcblx0XHQkUHJlY2lzaW9uPzogbnVtYmVyO1xuXHRcdCRTY2FsZT86IG51bWJlcjtcblx0XHQkaXNDb2xsZWN0aW9uPzogYm9vbGVhbjtcblx0fVtdO1xuXHQkUmV0dXJuVHlwZToge1xuXHRcdCRUeXBlOiBzdHJpbmc7XG5cdH07XG59O1xuXG5mdW5jdGlvbiBwYXJzZVByb3BlcnR5VmFsdWUoXG5cdGFubm90YXRpb25PYmplY3Q6IGFueSxcblx0cHJvcGVydHlLZXk6IHN0cmluZyxcblx0Y3VycmVudFRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4sXG5cdG9DYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pOiBhbnkge1xuXHRsZXQgdmFsdWU7XG5cdGNvbnN0IHR5cGVPZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0aWYgKGFubm90YXRpb25PYmplY3QgPT09IG51bGwpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOdWxsXCIsIE51bGw6IG51bGwgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZBbm5vdGF0aW9uID09PSBcInN0cmluZ1wiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZkFubm90YXRpb24gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mQW5ub3RhdGlvbiA9PT0gXCJudW1iZXJcIikge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIkNvbGxlY3Rpb25cIixcblx0XHRcdENvbGxlY3Rpb246IGFubm90YXRpb25PYmplY3QubWFwKChzdWJBbm5vdGF0aW9uT2JqZWN0LCBzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXgpID0+XG5cdFx0XHRcdHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0XHRcdFx0XHRzdWJBbm5vdGF0aW9uT2JqZWN0LFxuXHRcdFx0XHRcdGAke2N1cnJlbnRUYXJnZXR9LyR7cHJvcGVydHlLZXl9LyR7c3ViQW5ub3RhdGlvbk9iamVjdEluZGV4fWAsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNMaXN0cyxcblx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHR9O1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlByb3BlcnR5UGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFubm90YXRpb25QYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkVHlwZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJElmXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiSWZcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRPclwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk9yXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQW5kXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkRXFcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJFcVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5lXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTmVcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROb3RcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOb3RcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHdFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkd0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR2VcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEx0XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTHRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkxlXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQXBwbHlcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBcHBseVwiO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgYW5ub3RhdGlvbk9iamVjdFswXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHQvLyAkVHlwZSBpcyBvcHRpb25hbC4uLlxuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJTdHJpbmdcIjtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiUGF0aFwiLCBQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRGVjaW1hbFwiLCBEZWNpbWFsOiBwYXJzZUZsb2F0KGFubm90YXRpb25PYmplY3QuJERlY2ltYWwpIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJQcm9wZXJ0eVBhdGhcIiwgUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQcm9wZXJ0eVBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRJZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5kICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRPciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTm90ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFcSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEd0ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJExlICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIiwgQW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRW51bU1lbWJlclwiLCBFbnVtTWVtYmVyOiBhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyIH07XG5cdH0gZWxzZSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiUmVjb3JkXCIsIFJlY29yZDogcGFyc2VBbm5vdGF0aW9uT2JqZWN0KGFubm90YXRpb25PYmplY3QsIGN1cnJlbnRUYXJnZXQsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpIH07XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdG5hbWU6IHByb3BlcnR5S2V5LFxuXHRcdHZhbHVlXG5cdH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0YW5ub3RhdGlvbk9iamVjdDogYW55LFxuXHRjdXJyZW50T2JqZWN0VGFyZ2V0OiBzdHJpbmcsXG5cdGFubm90YXRpb25zTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbik6IEV4cHJlc3Npb24gfCBBbm5vdGF0aW9uUmVjb3JkIHwgQW5ub3RhdGlvbiB7XG5cdGxldCBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0OiBhbnkgPSB7fTtcblx0Y29uc3QgdHlwZU9mT2JqZWN0ID0gdHlwZW9mIGFubm90YXRpb25PYmplY3Q7XG5cdGlmIChhbm5vdGF0aW9uT2JqZWN0ID09PSBudWxsKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJOdWxsXCIsIE51bGw6IG51bGwgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwic3RyaW5nXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlN0cmluZ1wiLCBTdHJpbmc6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJCb29sXCIsIEJvb2w6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwibnVtYmVyXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLCBBbm5vdGF0aW9uUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlBhdGhcIiwgUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJERlY2ltYWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiRGVjaW1hbFwiLCBEZWNpbWFsOiBwYXJzZUZsb2F0KGFubm90YXRpb25PYmplY3QuJERlY2ltYWwpIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlByb3BlcnR5UGF0aFwiLCBQcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJFByb3BlcnR5UGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIklmXCIsIElmOiBhbm5vdGF0aW9uT2JqZWN0LiRJZiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFuZCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRPciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJPclwiLCBPcjogYW5ub3RhdGlvbk9iamVjdC4kT3IgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTm90XCIsIE5vdDogYW5ub3RhdGlvbk9iamVjdC4kTm90IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRXEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTmVcIiwgTmU6IGFubm90YXRpb25PYmplY3QuJE5lIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiR3RcIiwgR3Q6IGFubm90YXRpb25PYmplY3QuJEd0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR2UgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTHRcIiwgTHQ6IGFubm90YXRpb25PYmplY3QuJEx0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTGVcIiwgTGU6IGFubm90YXRpb25PYmplY3QuJExlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQXBwbHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0ge1xuXHRcdFx0dHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsXG5cdFx0XHROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXG5cdFx0fTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0ge1xuXHRcdFx0dHlwZTogXCJFbnVtTWVtYmVyXCIsXG5cdFx0XHRFbnVtTWVtYmVyOiBhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyXG5cdFx0fTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24gPSBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0O1xuXHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gPSBhbm5vdGF0aW9uT2JqZWN0Lm1hcCgoc3ViQW5ub3RhdGlvbk9iamVjdCwgc3ViQW5ub3RhdGlvbkluZGV4KSA9PlxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uT2JqZWN0KHN1YkFubm90YXRpb25PYmplY3QsIGAke2N1cnJlbnRPYmplY3RUYXJnZXR9LyR7c3ViQW5ub3RhdGlvbkluZGV4fWAsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpXG5cdFx0KTtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQYXRoXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRJZlwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIklmXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiQW5kXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkT3JcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJPclwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEVxXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiRXFcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROZVwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIk5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTm90XCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiTm90XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR3RcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJHdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEdlXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiR2VcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMdFwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIkx0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTGVcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJMZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiQXBwbHlcIjtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFubm90YXRpb25PYmplY3RbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0LiRUeXBlKSB7XG5cdFx0XHRjb25zdCB0eXBlVmFsdWUgPSBhbm5vdGF0aW9uT2JqZWN0LiRUeXBlO1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC50eXBlID0gdHlwZVZhbHVlOyAvL2Ake3R5cGVBbGlhc30uJHt0eXBlVGVybX1gO1xuXHRcdH1cblx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlczogYW55ID0gW107XG5cdFx0T2JqZWN0LmtleXMoYW5ub3RhdGlvbk9iamVjdCkuZm9yRWFjaCgocHJvcGVydHlLZXkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJFR5cGVcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkSWZcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQXBwbHlcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQW5kXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE9yXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5lXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEd0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEdlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEx0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJExlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5vdFwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRFcVwiICYmXG5cdFx0XHRcdCFwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHByb3BlcnR5VmFsdWVzLnB1c2goXG5cdFx0XHRcdFx0cGFyc2VQcm9wZXJ0eVZhbHVlKGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldLCBwcm9wZXJ0eUtleSwgY3VycmVudE9iamVjdFRhcmdldCwgYW5ub3RhdGlvbnNMaXN0cywgb0NhcGFiaWxpdGllcylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0Ly8gQW5ub3RhdGlvbiBvZiBhbm5vdGF0aW9uXG5cdFx0XHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0XHRcdFx0XHR7IFtwcm9wZXJ0eUtleV06IGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldIH0sXG5cdFx0XHRcdFx0Y3VycmVudE9iamVjdFRhcmdldCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc0xpc3RzLFxuXHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnByb3BlcnR5VmFsdWVzID0gcHJvcGVydHlWYWx1ZXM7XG5cdH1cblx0cmV0dXJuIHBhcnNlZEFubm90YXRpb25PYmplY3Q7XG59XG5mdW5jdGlvbiBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KHRhcmdldDogc3RyaW5nLCBhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4pOiBBbm5vdGF0aW9uTGlzdCB7XG5cdGlmICghYW5ub3RhdGlvbnNMaXN0cy5oYXNPd25Qcm9wZXJ0eSh0YXJnZXQpKSB7XG5cdFx0YW5ub3RhdGlvbnNMaXN0c1t0YXJnZXRdID0ge1xuXHRcdFx0dGFyZ2V0OiB0YXJnZXQsXG5cdFx0XHRhbm5vdGF0aW9uczogW11cblx0XHR9O1xuXHR9XG5cdHJldHVybiBhbm5vdGF0aW9uc0xpc3RzW3RhcmdldF07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQocmVmZXJlbmNlRmFjZXQ6IGFueSkge1xuXHRjb25zdCBpZCA9IHJlZmVyZW5jZUZhY2V0LklEID8/IHJlZmVyZW5jZUZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGg7XG5cdHJldHVybiBpZCA/IHByZXBhcmVJZChpZCkgOiBpZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0OiBhbnkpIHtcblx0cmV0dXJuIGFubm90YXRpb25PYmplY3QuZmlsdGVyKChvUmVjb3JkOiBhbnkpID0+IHtcblx0XHRpZiAob1JlY29yZC5UYXJnZXQgJiYgb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRyZXR1cm4gb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoLmluZGV4T2YoYEAke1VJQW5ub3RhdGlvblRlcm1zLkNoYXJ0fWApID09PSAtMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJEFubm90YXRpb25QYXRoICE9PSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuQ2hhcnR9YDtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0YW5ub3RhdGlvbk9iamVjdHM6IGFueSxcblx0YW5ub3RhdGlvblRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbikge1xuXHRpZiAoT2JqZWN0LmtleXMoYW5ub3RhdGlvbk9iamVjdHMpLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBvdXRBbm5vdGF0aW9uT2JqZWN0ID0gZ2V0T3JDcmVhdGVBbm5vdGF0aW9uTGlzdChhbm5vdGF0aW9uVGFyZ2V0LCBhbm5vdGF0aW9uTGlzdHMpO1xuXHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdGRlbGV0ZSBhbm5vdGF0aW9uT2JqZWN0c1tgQCR7VUlBbm5vdGF0aW9uVGVybXMuQ2hhcnR9YF07XG5cdH1cblxuXHRmb3IgKGNvbnN0IGFubm90YXRpb25PYmplY3RLZXkgaW4gYW5ub3RhdGlvbk9iamVjdHMpIHtcblx0XHRsZXQgYW5ub3RhdGlvbktleSA9IGFubm90YXRpb25PYmplY3RLZXk7XG5cdFx0bGV0IGFubm90YXRpb25PYmplY3QgPSBhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XTtcblx0XHRzd2l0Y2ggKGFubm90YXRpb25LZXkpIHtcblx0XHRcdGNhc2UgYEAke1VJQW5ub3RhdGlvblRlcm1zLkhlYWRlckZhY2V0c31gOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVDaGFydEFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgYEAke1VJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9ufWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDpcblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLkludGVudEJhc2VkTmF2aWdhdGlvbikge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwfWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0LkRhdGEgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0LkRhdGEpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QuRGF0YSA9IHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdC5EYXRhKTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50fWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5DaGFydCAmJiBhbm5vdGF0aW9uT2JqZWN0LlZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyA9IGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RgOlxuXHRcdFx0XHQvLyBUaGlzIHNjZW5hcmlvIGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgc2VtYW50aWMgZmlsdGVyaW5nIG9uIERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhLWZpbHRlcnMuIEFzIG9mIG5vdyB0aGUgU2luZ2xlUmFuZ2UgYW5ub3RhdGlvbiBpcyByZWFkIGJ5IHRoZVxuXHRcdFx0XHQvLyBGaWVsZEhlbHBlciwgd2hpY2ggc2hvdWxkIG5vdCBpbmNsdWRlIGFueSBwcm9wZXJ0eXNwZWNpZmljIGxvZ2ljLiBXZSB3aWxsIHJlbW92ZSB0aGlzIG9uY2UgdGhlIEZpZWxkSGVscGVyIHJlY2VpdmVzIHRoZSBTaW5nbGVSYW5nZSBkYXRhIGZyb21cblx0XHRcdFx0Ly8gdGhlIGNvbnZlcnRlciBvciBoYXZpbmcgaXQgc2V0IGlzIG5vIGxvbmdlciBhIHByZXJlcXVpc2l0ZSBmb3IgdGhlIHNlbWFudGljIGZpbHRlcmluZy5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXSAmJlxuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zPy5sZW5ndGhcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0IWFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLnNvbWUoXG5cdFx0XHRcdFx0XHRcdChGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb246IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb24/LlByb3BlcnR5Py4kUHJvcGVydHlQYXRoLmluY2x1ZGVzKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLnB1c2goXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRBbGxvd2VkRXhwcmVzc2lvbnM6IFwiU2luZ2xlUmFuZ2VcIixcblx0XHRcdFx0XHRcdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9DcmVhdGlvbkRhdGVUaW1lXCJcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRBbGxvd2VkRXhwcmVzc2lvbnM6IFwiU2luZ2xlUmFuZ2VcIixcblx0XHRcdFx0XHRcdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlRGF0ZVRpbWVcIlxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRsZXQgY3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBvdXRBbm5vdGF0aW9uT2JqZWN0O1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGFubm90YXRpb24gb2YgYW5ub3RhdGlvblxuXHRcdGNvbnN0IGFubm90YXRpb25PZkFubm90YXRpb25TcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCJAXCIpO1xuXHRcdGlmIChhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQubGVuZ3RoID4gMikge1xuXHRcdFx0Y3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KFxuXHRcdFx0XHRgJHthbm5vdGF0aW9uVGFyZ2V0fUAke2Fubm90YXRpb25PZkFubm90YXRpb25TcGxpdFsxXX1gLFxuXHRcdFx0XHRhbm5vdGF0aW9uTGlzdHNcblx0XHRcdCk7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzJdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzFdO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCIjXCIpO1xuXHRcdGNvbnN0IHF1YWxpZmllciA9IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdFsxXTtcblx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzBdO1xuXG5cdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbk9iamVjdDogYW55ID0ge1xuXHRcdFx0dGVybTogYW5ub3RhdGlvbktleSxcblx0XHRcdHF1YWxpZmllcjogcXVhbGlmaWVyXG5cdFx0fTtcblx0XHRsZXQgY3VycmVudEFubm90YXRpb25UYXJnZXQgPSBgJHthbm5vdGF0aW9uVGFyZ2V0fUAke3BhcnNlZEFubm90YXRpb25PYmplY3QudGVybX1gO1xuXHRcdGlmIChxdWFsaWZpZXIpIHtcblx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0ICs9IGAjJHtxdWFsaWZpZXJ9YDtcblx0XHR9XG5cdFx0bGV0IGlzQ29sbGVjdGlvbiA9IGZhbHNlO1xuXHRcdGNvbnN0IHR5cGVvZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdCA9PT0gbnVsbCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOdWxsXCIgfTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZkFubm90YXRpb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mQW5ub3RhdGlvbiA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2ZBbm5vdGF0aW9uID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbmQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVxICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEdlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFwcGx5ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJQYXRoXCIsIFBhdGg6IGFubm90YXRpb25PYmplY3QuJFBhdGggfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7XG5cdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0QW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkRlY2ltYWxcIiwgRGVjaW1hbDogcGFyc2VGbG9hdChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsKSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0ge1xuXHRcdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdFx0RW51bU1lbWJlcjogYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlclxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbk9iamVjdCkpIHtcblx0XHRcdGlzQ29sbGVjdGlvbiA9IHRydWU7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gPSBhbm5vdGF0aW9uT2JqZWN0Lm1hcCgoc3ViQW5ub3RhdGlvbk9iamVjdCwgc3ViQW5ub3RhdGlvbkluZGV4KSA9PlxuXHRcdFx0XHRwYXJzZUFubm90YXRpb25PYmplY3QoXG5cdFx0XHRcdFx0c3ViQW5ub3RhdGlvbk9iamVjdCxcblx0XHRcdFx0XHRgJHtjdXJyZW50QW5ub3RhdGlvblRhcmdldH0vJHtzdWJBbm5vdGF0aW9uSW5kZXh9YCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uTGlzdHMsXG5cdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiUHJvcGVydHlQYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQYXRoXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIlBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiQW5ub3RhdGlvblBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRJZlwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJJZlwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkT3JcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiT3JcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEVxXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkVxXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROZVwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJOZVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTm90XCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIk5vdFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR3RcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiR3RcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEdlXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkdlXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMdFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJMdFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTGVcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiTGVcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFuZFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJBbmRcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkFwcGx5XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFubm90YXRpb25PYmplY3RbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIlN0cmluZ1wiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJlY29yZDogQW5ub3RhdGlvblJlY29yZCA9IHtcblx0XHRcdFx0cHJvcGVydHlWYWx1ZXM6IFtdXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QuJFR5cGUpIHtcblx0XHRcdFx0Y29uc3QgdHlwZVZhbHVlID0gYW5ub3RhdGlvbk9iamVjdC4kVHlwZTtcblx0XHRcdFx0cmVjb3JkLnR5cGUgPSBgJHt0eXBlVmFsdWV9YDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzOiBhbnlbXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBwcm9wZXJ0eUtleSBpbiBhbm5vdGF0aW9uT2JqZWN0KSB7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUtleSAhPT0gXCIkVHlwZVwiICYmICFwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKSkge1xuXHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzLnB1c2goXG5cdFx0XHRcdFx0XHRwYXJzZVByb3BlcnR5VmFsdWUoXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldLFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eUtleSxcblx0XHRcdFx0XHRcdFx0Y3VycmVudEFubm90YXRpb25UYXJnZXQsXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25MaXN0cyxcblx0XHRcdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0XHQvLyBBbm5vdGF0aW9uIG9mIHJlY29yZFxuXHRcdFx0XHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0XHRcdFx0XHRcdHsgW3Byb3BlcnR5S2V5XTogYW5ub3RhdGlvbk9iamVjdFtwcm9wZXJ0eUtleV0gfSxcblx0XHRcdFx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0LFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvbkxpc3RzLFxuXHRcdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJlY29yZC5wcm9wZXJ0eVZhbHVlcyA9IHByb3BlcnR5VmFsdWVzO1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5yZWNvcmQgPSByZWNvcmQ7XG5cdFx0fVxuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuaXNDb2xsZWN0aW9uID0gaXNDb2xsZWN0aW9uO1xuXHRcdGN1cnJlbnRPdXRBbm5vdGF0aW9uT2JqZWN0LmFubm90YXRpb25zLnB1c2gocGFyc2VkQW5ub3RhdGlvbk9iamVjdCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJlcGFyZVByb3BlcnR5KHByb3BlcnR5RGVmaW5pdGlvbjogYW55LCBlbnRpdHlUeXBlT2JqZWN0OiBSYXdFbnRpdHlUeXBlIHwgUmF3Q29tcGxleFR5cGUsIHByb3BlcnR5TmFtZTogc3RyaW5nKTogUmF3UHJvcGVydHkge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIlByb3BlcnR5XCIsXG5cdFx0bmFtZTogcHJvcGVydHlOYW1lLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5VHlwZU9iamVjdC5mdWxseVF1YWxpZmllZE5hbWV9LyR7cHJvcGVydHlOYW1lfWAsXG5cdFx0dHlwZTogcHJvcGVydHlEZWZpbml0aW9uLiRUeXBlLFxuXHRcdG1heExlbmd0aDogcHJvcGVydHlEZWZpbml0aW9uLiRNYXhMZW5ndGgsXG5cdFx0cHJlY2lzaW9uOiBwcm9wZXJ0eURlZmluaXRpb24uJFByZWNpc2lvbixcblx0XHRzY2FsZTogcHJvcGVydHlEZWZpbml0aW9uLiRTY2FsZSxcblx0XHRudWxsYWJsZTogcHJvcGVydHlEZWZpbml0aW9uLiROdWxsYWJsZVxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5KFxuXHRuYXZQcm9wZXJ0eURlZmluaXRpb246IGFueSxcblx0ZW50aXR5VHlwZU9iamVjdDogUmF3RW50aXR5VHlwZSB8IFJhd0NvbXBsZXhUeXBlLFxuXHRuYXZQcm9wZXJ0eU5hbWU6IHN0cmluZ1xuKTogUmF3VjROYXZpZ2F0aW9uUHJvcGVydHkge1xuXHRsZXQgcmVmZXJlbnRpYWxDb25zdHJhaW50OiBSZWZlcmVudGlhbENvbnN0cmFpbnRbXSA9IFtdO1xuXHRpZiAobmF2UHJvcGVydHlEZWZpbml0aW9uLiRSZWZlcmVudGlhbENvbnN0cmFpbnQpIHtcblx0XHRyZWZlcmVudGlhbENvbnN0cmFpbnQgPSBPYmplY3Qua2V5cyhuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludCkubWFwKChzb3VyY2VQcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNvdXJjZVR5cGVOYW1lOiBlbnRpdHlUeXBlT2JqZWN0Lm5hbWUsXG5cdFx0XHRcdHNvdXJjZVByb3BlcnR5OiBzb3VyY2VQcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHRhcmdldFR5cGVOYW1lOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFR5cGUsXG5cdFx0XHRcdHRhcmdldFByb3BlcnR5OiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludFtzb3VyY2VQcm9wZXJ0eU5hbWVdXG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eTogUmF3VjROYXZpZ2F0aW9uUHJvcGVydHkgPSB7XG5cdFx0X3R5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5XCIsXG5cdFx0bmFtZTogbmF2UHJvcGVydHlOYW1lLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5VHlwZU9iamVjdC5mdWxseVF1YWxpZmllZE5hbWV9LyR7bmF2UHJvcGVydHlOYW1lfWAsXG5cdFx0cGFydG5lcjogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRQYXJ0bmVyLFxuXHRcdGlzQ29sbGVjdGlvbjogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRpc0NvbGxlY3Rpb24gPyBuYXZQcm9wZXJ0eURlZmluaXRpb24uJGlzQ29sbGVjdGlvbiA6IGZhbHNlLFxuXHRcdGNvbnRhaW5zVGFyZ2V0OiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJENvbnRhaW5zVGFyZ2V0LFxuXHRcdHRhcmdldFR5cGVOYW1lOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFR5cGUsXG5cdFx0cmVmZXJlbnRpYWxDb25zdHJhaW50XG5cdH07XG5cblx0cmV0dXJuIG5hdmlnYXRpb25Qcm9wZXJ0eTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcoXG5cdG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQsXG5cdGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZ1xuKTogUmF3TmF2aWdhdGlvblByb3BlcnR5QmluZGluZyB7XG5cdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRcdE9iamVjdC5lbnRyaWVzKG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpLm1hcCgoW3BhdGgsIHRhcmdldF0pID0+IFtwYXRoLCBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke3RhcmdldH1gXSlcblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlRW50aXR5U2V0KGVudGl0eVNldERlZmluaXRpb246IGFueSwgZW50aXR5U2V0TmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBSYXdFbnRpdHlTZXQge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIkVudGl0eVNldFwiLFxuXHRcdG5hbWU6IGVudGl0eVNldE5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzogcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcoZW50aXR5U2V0RGVmaW5pdGlvbi4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZywgZW50aXR5Q29udGFpbmVyTmFtZSksXG5cdFx0ZW50aXR5VHlwZU5hbWU6IGVudGl0eVNldERlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke2VudGl0eVNldE5hbWV9YFxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlU2luZ2xldG9uKHNpbmdsZXRvbkRlZmluaXRpb246IGFueSwgc2luZ2xldG9uTmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBSYXdTaW5nbGV0b24ge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIlNpbmdsZXRvblwiLFxuXHRcdG5hbWU6IHNpbmdsZXRvbk5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzogcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcoc2luZ2xldG9uRGVmaW5pdGlvbi4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZywgZW50aXR5Q29udGFpbmVyTmFtZSksXG5cdFx0ZW50aXR5VHlwZU5hbWU6IHNpbmdsZXRvbkRlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke3NpbmdsZXRvbk5hbWV9YCxcblx0XHRudWxsYWJsZTogdHJ1ZVxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQWN0aW9uSW1wb3J0KGFjdGlvbkltcG9ydDogYW55LCBhY3Rpb25JbXBvcnROYW1lOiBzdHJpbmcsIGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyk6IFJhd0FjdGlvbkltcG9ydCB7XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiQWN0aW9uSW1wb3J0XCIsXG5cdFx0bmFtZTogYWN0aW9uSW1wb3J0TmFtZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eUNvbnRhaW5lck5hbWV9LyR7YWN0aW9uSW1wb3J0TmFtZX1gLFxuXHRcdGFjdGlvbk5hbWU6IGFjdGlvbkltcG9ydC4kQWN0aW9uXG5cdH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVUeXBlRGVmaW5pdGlvbih0eXBlRGVmaW5pdGlvbjogYW55LCB0eXBlTmFtZTogc3RyaW5nLCBuYW1lc3BhY2VQcmVmaXg6IHN0cmluZyk6IFJhd1R5cGVEZWZpbml0aW9uIHtcblx0Y29uc3QgdHlwZU9iamVjdDogUmF3VHlwZURlZmluaXRpb24gPSB7XG5cdFx0X3R5cGU6IFwiVHlwZURlZmluaXRpb25cIixcblx0XHRuYW1lOiB0eXBlTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiB0eXBlTmFtZSxcblx0XHR1bmRlcmx5aW5nVHlwZTogdHlwZURlZmluaXRpb24uJFVuZGVybHlpbmdUeXBlXG5cdH07XG5cdHJldHVybiB0eXBlT2JqZWN0O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ29tcGxleFR5cGUoY29tcGxleFR5cGVEZWZpbml0aW9uOiBhbnksIGNvbXBsZXhUeXBlTmFtZTogc3RyaW5nLCBuYW1lc3BhY2VQcmVmaXg6IHN0cmluZyk6IFJhd0NvbXBsZXhUeXBlIHtcblx0Y29uc3QgY29tcGxleFR5cGVPYmplY3Q6IFJhd0NvbXBsZXhUeXBlID0ge1xuXHRcdF90eXBlOiBcIkNvbXBsZXhUeXBlXCIsXG5cdFx0bmFtZTogY29tcGxleFR5cGVOYW1lLnN1YnN0cmluZyhuYW1lc3BhY2VQcmVmaXgubGVuZ3RoKSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGNvbXBsZXhUeXBlTmFtZSxcblx0XHRwcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW11cblx0fTtcblxuXHRjb25zdCBjb21wbGV4VHlwZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhjb21wbGV4VHlwZURlZmluaXRpb24pXG5cdFx0LmZpbHRlcigocHJvcGVydHlOYW1lT3JOb3QpID0+IHtcblx0XHRcdGlmIChwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRLZXlcIiAmJiBwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRraW5kXCIpIHtcblx0XHRcdFx0cmV0dXJuIGNvbXBsZXhUeXBlRGVmaW5pdGlvbltwcm9wZXJ0eU5hbWVPck5vdF0uJGtpbmQgPT09IFwiUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAoKHByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVQcm9wZXJ0eShjb21wbGV4VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lXSwgY29tcGxleFR5cGVPYmplY3QsIHByb3BlcnR5TmFtZSk7XG5cdFx0fSk7XG5cblx0Y29tcGxleFR5cGVPYmplY3QucHJvcGVydGllcyA9IGNvbXBsZXhUeXBlUHJvcGVydGllcztcblx0Y29uc3QgY29tcGxleFR5cGVOYXZpZ2F0aW9uUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGNvbXBsZXhUeXBlRGVmaW5pdGlvbilcblx0XHQuZmlsdGVyKChwcm9wZXJ0eU5hbWVPck5vdCkgPT4ge1xuXHRcdFx0aWYgKHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJEtleVwiICYmIHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJGtpbmRcIikge1xuXHRcdFx0XHRyZXR1cm4gY29tcGxleFR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZU9yTm90XS4ka2luZCA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAoKG5hdlByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkoY29tcGxleFR5cGVEZWZpbml0aW9uW25hdlByb3BlcnR5TmFtZV0sIGNvbXBsZXhUeXBlT2JqZWN0LCBuYXZQcm9wZXJ0eU5hbWUpO1xuXHRcdH0pO1xuXHRjb21wbGV4VHlwZU9iamVjdC5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbXBsZXhUeXBlTmF2aWdhdGlvblByb3BlcnRpZXM7XG5cdHJldHVybiBjb21wbGV4VHlwZU9iamVjdDtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eUtleXMoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgb01ldGFNb2RlbERhdGE6IGFueSk6IHN0cmluZ1tdIHtcblx0aWYgKCFlbnRpdHlUeXBlRGVmaW5pdGlvbi4kS2V5ICYmIGVudGl0eVR5cGVEZWZpbml0aW9uLiRCYXNlVHlwZSkge1xuXHRcdHJldHVybiBwcmVwYXJlRW50aXR5S2V5cyhvTWV0YU1vZGVsRGF0YVtlbnRpdHlUeXBlRGVmaW5pdGlvbi4kQmFzZVR5cGVdLCBvTWV0YU1vZGVsRGF0YSk7XG5cdH1cblx0cmV0dXJuIGVudGl0eVR5cGVEZWZpbml0aW9uLiRLZXkgPz8gW107IC8vaGFuZGxpbmcgb2YgZW50aXR5IHR5cGVzIHdpdGhvdXQga2V5IGFzIHdlbGwgYXMgYmFzZXR5cGVcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eVR5cGUoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgZW50aXR5VHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlUHJlZml4OiBzdHJpbmcsIG1ldGFNb2RlbERhdGE6IGFueSk6IFJhd0VudGl0eVR5cGUge1xuXHRjb25zdCBlbnRpdHlUeXBlOiBSYXdFbnRpdHlUeXBlID0ge1xuXHRcdF90eXBlOiBcIkVudGl0eVR5cGVcIixcblx0XHRuYW1lOiBlbnRpdHlUeXBlTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBlbnRpdHlUeXBlTmFtZSxcblx0XHRrZXlzOiBbXSxcblx0XHRlbnRpdHlQcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW10sXG5cdFx0YWN0aW9uczoge31cblx0fTtcblxuXHRmb3IgKGNvbnN0IGtleSBpbiBlbnRpdHlUeXBlRGVmaW5pdGlvbikge1xuXHRcdGNvbnN0IHZhbHVlID0gZW50aXR5VHlwZURlZmluaXRpb25ba2V5XTtcblxuXHRcdHN3aXRjaCAodmFsdWUuJGtpbmQpIHtcblx0XHRcdGNhc2UgXCJQcm9wZXJ0eVwiOlxuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHByZXBhcmVQcm9wZXJ0eSh2YWx1ZSwgZW50aXR5VHlwZSwga2V5KTtcblx0XHRcdFx0ZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjpcblx0XHRcdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnR5ID0gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eSh2YWx1ZSwgZW50aXR5VHlwZSwga2V5KTtcblx0XHRcdFx0ZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGVudGl0eVR5cGUua2V5cyA9IHByZXBhcmVFbnRpdHlLZXlzKGVudGl0eVR5cGVEZWZpbml0aW9uLCBtZXRhTW9kZWxEYXRhKVxuXHRcdC5tYXAoKGVudGl0eUtleSkgPT4gZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBlbnRpdHlLZXkpKVxuXHRcdC5maWx0ZXIoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSBhcyBSYXdFbnRpdHlUeXBlW1wia2V5c1wiXTtcblxuXHQvLyBDaGVjayBpZiB0aGVyZSBhcmUgZmlsdGVyIGZhY2V0cyBkZWZpbmVkIGZvciB0aGUgZW50aXR5VHlwZSBhbmQgaWYgeWVzLCBjaGVjayBpZiBhbGwgb2YgdGhlbSBoYXZlIGFuIElEXG5cdC8vIFRoZSBJRCBpcyBvcHRpb25hbCwgYnV0IGl0IGlzIGludGVybmFsbHkgdGFrZW4gZm9yIGdyb3VwaW5nIGZpbHRlciBmaWVsZHMgYW5kIGlmIGl0J3Mgbm90IHByZXNlbnRcblx0Ly8gYSBmYWxsYmFjayBJRCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQgaGVyZS5cblx0bWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdPy5bYEAke1VJQW5ub3RhdGlvblRlcm1zLkZpbHRlckZhY2V0c31gXT8uZm9yRWFjaChcblx0XHQoZmlsdGVyRmFjZXRBbm5vdGF0aW9uOiBhbnkpID0+IHtcblx0XHRcdGZpbHRlckZhY2V0QW5ub3RhdGlvbi5JRCA9IGNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQoZmlsdGVyRmFjZXRBbm5vdGF0aW9uKTtcblx0XHR9XG5cdCk7XG5cblx0Ly8gQ2hlY2sgaWYgZW50aXR5VHlwZSBoYXMgbm90IG1hbmRhdG9yeSBIZWFkZXJJbmZvXG5cdGlmIChcblx0XHQhIWVudGl0eVR5cGU/LmtleXMubGVuZ3RoICYmXG5cdFx0bWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdICYmXG5cdFx0IW1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lXT8uW2BAJHtVSUFubm90YXRpb25UZXJtcy5IZWFkZXJJbmZvfWBdXG5cdCkge1xuXHRcdGNvbnN0IGhlYWRlckluZm9Bbm5vdGF0aW9uID0ge1xuXHRcdFx0JFR5cGU6IGAke1VJQW5ub3RhdGlvblR5cGVzLkhlYWRlckluZm9UeXBlfWAsXG5cdFx0XHRUeXBlTmFtZTogYCR7ZW50aXR5VHlwZS5uYW1lfWAsXG5cdFx0XHRUeXBlTmFtZVBsdXJhbDogXCJcIixcblx0XHRcdFRpdGxlOiB7XG5cdFx0XHRcdCRUeXBlOiBgJHtVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGR9YCxcblx0XHRcdFx0VmFsdWU6IHtcblx0XHRcdFx0XHQkUGF0aDogYCR7ZW50aXR5VHlwZS5rZXlzWzBdLm5hbWV9YFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyBBZGQgdGhlIG1pc3NpbmcgSGVhZGVySW5mb1xuXHRcdG1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lXVtgQCR7VUlBbm5vdGF0aW9uVGVybXMuSGVhZGVySW5mb31gXSA9IGhlYWRlckluZm9Bbm5vdGF0aW9uO1xuXHR9XG5cblx0Zm9yIChjb25zdCBlbnRpdHlQcm9wZXJ0eSBvZiBlbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMpIHtcblx0XHRpZiAoIW1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV0pIHtcblx0XHRcdG1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSB7fTtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdW2BAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWBdKSB7XG5cdFx0XHRtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdW2BAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWBdID0ge1xuXHRcdFx0XHQkVHlwZTogVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkLFxuXHRcdFx0XHRWYWx1ZTogeyAkUGF0aDogZW50aXR5UHJvcGVydHkubmFtZSB9XG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbnRpdHlUeXBlO1xufVxuZnVuY3Rpb24gcHJlcGFyZUFjdGlvbihhY3Rpb25SYXdEYXRhOiBNZXRhTW9kZWxBY3Rpb24sIGFjdGlvbk5hbWU6IHN0cmluZywgbmFtZXNwYWNlUHJlZml4OiBzdHJpbmcpOiBSYXdBY3Rpb24ge1xuXHRsZXQgb3ZlcmxvYWRQYXJhbWV0ZXJzOiBNZXRhTW9kZWxBY3Rpb25bXCIkUGFyYW1ldGVyXCJdO1xuXHRpZiAoYWN0aW9uUmF3RGF0YS4ka2luZCA9PT0gXCJGdW5jdGlvblwiKSB7XG5cdFx0Ly8gZnVuY3Rpb24gLSBvdmVybG9hZCBpbmNsdWRlcyBhbGwgcGFyYW1ldGVycyAoYm91bmQgZW50aXR5IHR5cGUgX2FuZF8gb3RoZXIgcGFyYW1ldGVycylcblx0XHRvdmVybG9hZFBhcmFtZXRlcnMgPSBhY3Rpb25SYXdEYXRhLiRQYXJhbWV0ZXIgPz8gW107XG5cdH0gZWxzZSB7XG5cdFx0Ly8gYWN0aW9uIC0gb3ZlcmxvYWQgaXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvciB0aGUgZW1wdHkgdW5ib3VuZCBvdmVybG9hZCBpbiBjYXNlIG9mIGFuIHVuYm91bmQgYWN0aW9uXG5cdFx0b3ZlcmxvYWRQYXJhbWV0ZXJzID0gYWN0aW9uUmF3RGF0YS4kSXNCb3VuZCA/IFthY3Rpb25SYXdEYXRhLiRQYXJhbWV0ZXJbMF1dIDogW107XG5cdH1cblxuXHRjb25zdCBvdmVybG9hZCA9IG92ZXJsb2FkUGFyYW1ldGVyc1xuXHRcdC5tYXAoKHBhcmFtZXRlcikgPT4gKHBhcmFtZXRlci4kaXNDb2xsZWN0aW9uID8gYENvbGxlY3Rpb24oJHtwYXJhbWV0ZXIuJFR5cGV9KWAgOiBwYXJhbWV0ZXIuJFR5cGUpKVxuXHRcdC5qb2luKFwiLFwiKTtcblxuXHRjb25zdCBmdWxseVF1YWxpZmllZE5hbWUgPSBgJHthY3Rpb25OYW1lfSgke292ZXJsb2FkfSlgO1xuXG5cdGNvbnN0IHBhcmFtZXRlcnMgPSBhY3Rpb25SYXdEYXRhLiRQYXJhbWV0ZXIgPz8gW107XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiQWN0aW9uXCIsXG5cdFx0bmFtZTogYWN0aW9uTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdGlzQm91bmQ6IGFjdGlvblJhd0RhdGEuJElzQm91bmQgPz8gZmFsc2UsXG5cdFx0aXNGdW5jdGlvbjogYWN0aW9uUmF3RGF0YS4ka2luZCA9PT0gXCJGdW5jdGlvblwiLFxuXHRcdHNvdXJjZVR5cGU6IG92ZXJsb2FkUGFyYW1ldGVyc1swXT8uJFR5cGUgPz8gXCJcIixcblx0XHRyZXR1cm5UeXBlOiBhY3Rpb25SYXdEYXRhLiRSZXR1cm5UeXBlPy4kVHlwZSA/PyBcIlwiLFxuXHRcdHBhcmFtZXRlcnM6IHBhcmFtZXRlcnMubWFwKChwYXJhbSkgPT4gKHtcblx0XHRcdF90eXBlOiBcIkFjdGlvblBhcmFtZXRlclwiLFxuXHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtmdWxseVF1YWxpZmllZE5hbWV9LyR7cGFyYW0uJE5hbWV9YCxcblx0XHRcdGlzQ29sbGVjdGlvbjogcGFyYW0uJGlzQ29sbGVjdGlvbiA/PyBmYWxzZSxcblx0XHRcdG5hbWU6IHBhcmFtLiROYW1lLFxuXHRcdFx0dHlwZTogcGFyYW0uJFR5cGUsXG5cdFx0XHRudWxsYWJsZTogcGFyYW0uJE51bGxhYmxlID8/IGZhbHNlLFxuXHRcdFx0bWF4TGVuZ3RoOiBwYXJhbS4kTWF4TGVuZ3RoLFxuXHRcdFx0cHJlY2lzaW9uOiBwYXJhbS4kUHJlY2lzaW9uLFxuXHRcdFx0c2NhbGU6IHBhcmFtLiRTY2FsZVxuXHRcdH0pKVxuXHR9O1xufVxuXG5mdW5jdGlvbiBwYXJzZUVudGl0eUNvbnRhaW5lcihcblx0bmFtZXNwYWNlUHJlZml4OiBzdHJpbmcsXG5cdGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyxcblx0ZW50aXR5Q29udGFpbmVyTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG5cdHNjaGVtYTogUmF3U2NoZW1hXG4pIHtcblx0c2NoZW1hLmVudGl0eUNvbnRhaW5lciA9IHtcblx0XHRfdHlwZTogXCJFbnRpdHlDb250YWluZXJcIixcblx0XHRuYW1lOiBlbnRpdHlDb250YWluZXJOYW1lLnN1YnN0cmluZyhuYW1lc3BhY2VQcmVmaXgubGVuZ3RoKSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGVudGl0eUNvbnRhaW5lck5hbWVcblx0fTtcblxuXHRmb3IgKGNvbnN0IGVsZW1lbnROYW1lIGluIGVudGl0eUNvbnRhaW5lck1ldGFkYXRhKSB7XG5cdFx0Y29uc3QgZWxlbWVudFZhbHVlID0gZW50aXR5Q29udGFpbmVyTWV0YWRhdGFbZWxlbWVudE5hbWVdO1xuXHRcdHN3aXRjaCAoZWxlbWVudFZhbHVlLiRraW5kKSB7XG5cdFx0XHRjYXNlIFwiRW50aXR5U2V0XCI6XG5cdFx0XHRcdHNjaGVtYS5lbnRpdHlTZXRzLnB1c2gocHJlcGFyZUVudGl0eVNldChlbGVtZW50VmFsdWUsIGVsZW1lbnROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiU2luZ2xldG9uXCI6XG5cdFx0XHRcdHNjaGVtYS5zaW5nbGV0b25zLnB1c2gocHJlcGFyZVNpbmdsZXRvbihlbGVtZW50VmFsdWUsIGVsZW1lbnROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiQWN0aW9uSW1wb3J0XCI6XG5cdFx0XHRcdHNjaGVtYS5hY3Rpb25JbXBvcnRzLnB1c2gocHJlcGFyZUFjdGlvbkltcG9ydChlbGVtZW50VmFsdWUsIGVsZW1lbnROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZUFubm90YXRpb25zKGFubm90YXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKSB7XG5cdGNvbnN0IGFubm90YXRpb25MaXN0czogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvbkxpc3Q+ID0ge307XG5cdGZvciAoY29uc3QgdGFyZ2V0IGluIGFubm90YXRpb25zKSB7XG5cdFx0Y3JlYXRlQW5ub3RhdGlvbkxpc3RzKGFubm90YXRpb25zW3RhcmdldF0sIHRhcmdldCwgYW5ub3RhdGlvbkxpc3RzLCBjYXBhYmlsaXRpZXMpO1xuXHR9XG5cdHJldHVybiBPYmplY3QudmFsdWVzKGFubm90YXRpb25MaXN0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2NoZW1hKG1ldGFNb2RlbERhdGE6IGFueSkge1xuXHQvLyBhc3N1bWluZyB0aGVyZSBpcyBvbmx5IG9uZSBzY2hlbWEvbmFtZXNwYWNlXG5cdGNvbnN0IG5hbWVzcGFjZVByZWZpeCA9IE9iamVjdC5rZXlzKG1ldGFNb2RlbERhdGEpLmZpbmQoKGtleSkgPT4gbWV0YU1vZGVsRGF0YVtrZXldLiRraW5kID09PSBcIlNjaGVtYVwiKSA/PyBcIlwiO1xuXG5cdGNvbnN0IHNjaGVtYTogUmF3U2NoZW1hID0ge1xuXHRcdG5hbWVzcGFjZTogbmFtZXNwYWNlUHJlZml4LnNsaWNlKDAsIC0xKSxcblx0XHRlbnRpdHlDb250YWluZXI6IHsgX3R5cGU6IFwiRW50aXR5Q29udGFpbmVyXCIsIG5hbWU6IFwiXCIsIGZ1bGx5UXVhbGlmaWVkTmFtZTogXCJcIiB9LFxuXHRcdGVudGl0eVNldHM6IFtdLFxuXHRcdGVudGl0eVR5cGVzOiBbXSxcblx0XHRjb21wbGV4VHlwZXM6IFtdLFxuXHRcdHR5cGVEZWZpbml0aW9uczogW10sXG5cdFx0c2luZ2xldG9uczogW10sXG5cdFx0YXNzb2NpYXRpb25zOiBbXSxcblx0XHRhc3NvY2lhdGlvblNldHM6IFtdLFxuXHRcdGFjdGlvbnM6IFtdLFxuXHRcdGFjdGlvbkltcG9ydHM6IFtdLFxuXHRcdGFubm90YXRpb25zOiB7fVxuXHR9O1xuXG5cdGNvbnN0IHBhcnNlTWV0YU1vZGVsRWxlbWVudCA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHRzd2l0Y2ggKHZhbHVlLiRraW5kKSB7XG5cdFx0XHRjYXNlIFwiRW50aXR5Q29udGFpbmVyXCI6XG5cdFx0XHRcdHBhcnNlRW50aXR5Q29udGFpbmVyKG5hbWVzcGFjZVByZWZpeCwgbmFtZSwgdmFsdWUsIHNjaGVtYSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiQWN0aW9uXCI6XG5cdFx0XHRjYXNlIFwiRnVuY3Rpb25cIjpcblx0XHRcdFx0c2NoZW1hLmFjdGlvbnMucHVzaChwcmVwYXJlQWN0aW9uKHZhbHVlLCBuYW1lLCBuYW1lc3BhY2VQcmVmaXgpKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJFbnRpdHlUeXBlXCI6XG5cdFx0XHRcdHNjaGVtYS5lbnRpdHlUeXBlcy5wdXNoKHByZXBhcmVFbnRpdHlUeXBlKHZhbHVlLCBuYW1lLCBuYW1lc3BhY2VQcmVmaXgsIG1ldGFNb2RlbERhdGEpKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJDb21wbGV4VHlwZVwiOlxuXHRcdFx0XHRzY2hlbWEuY29tcGxleFR5cGVzLnB1c2gocHJlcGFyZUNvbXBsZXhUeXBlKHZhbHVlLCBuYW1lLCBuYW1lc3BhY2VQcmVmaXgpKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJUeXBlRGVmaW5pdGlvblwiOlxuXHRcdFx0XHRzY2hlbWEudHlwZURlZmluaXRpb25zLnB1c2gocHJlcGFyZVR5cGVEZWZpbml0aW9uKHZhbHVlLCBuYW1lLCBuYW1lc3BhY2VQcmVmaXgpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9O1xuXG5cdGZvciAoY29uc3QgZWxlbWVudE5hbWUgaW4gbWV0YU1vZGVsRGF0YSkge1xuXHRcdGNvbnN0IGVsZW1lbnRWYWx1ZSA9IG1ldGFNb2RlbERhdGFbZWxlbWVudE5hbWVdO1xuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudFZhbHVlKSkge1xuXHRcdFx0Ly8gdmFsdWUgY2FuIGJlIGFuIGFycmF5IGluIGNhc2Ugb2YgYWN0aW9ucyBvciBmdW5jdGlvbnNcblx0XHRcdGZvciAoY29uc3Qgc3ViRWxlbWVudFZhbHVlIG9mIGVsZW1lbnRWYWx1ZSkge1xuXHRcdFx0XHRwYXJzZU1ldGFNb2RlbEVsZW1lbnQoZWxlbWVudE5hbWUsIHN1YkVsZW1lbnRWYWx1ZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhcnNlTWV0YU1vZGVsRWxlbWVudChlbGVtZW50TmFtZSwgZWxlbWVudFZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gc2NoZW1hO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNZXRhTW9kZWwoXG5cdG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdGNhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbik6IFJhd01ldGFkYXRhIHtcblx0Y29uc3QgcmVzdWx0OiBPbWl0PFJhd01ldGFkYXRhLCBcInNjaGVtYVwiPiA9IHtcblx0XHRpZGVudGlmaWNhdGlvbjogXCJtZXRhbW9kZWxSZXN1bHRcIixcblx0XHR2ZXJzaW9uOiBcIjQuMFwiLFxuXHRcdHJlZmVyZW5jZXM6IFtdXG5cdH07XG5cblx0Ly8gcGFyc2UgdGhlIHNjaGVtYSB3aGVuIGl0IGlzIGFjY2Vzc2VkIGZvciB0aGUgZmlyc3QgdGltZVxuXHRBbm5vdGF0aW9uQ29udmVydGVyLmxhenkocmVzdWx0IGFzIFJhd01ldGFkYXRhLCBcInNjaGVtYVwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsRGF0YSA9IG1ldGFNb2RlbC5nZXRPYmplY3QoXCIvJFwiKTtcblx0XHRjb25zdCBzY2hlbWEgPSBwYXJzZVNjaGVtYShtZXRhTW9kZWxEYXRhKTtcblxuXHRcdEFubm90YXRpb25Db252ZXJ0ZXIubGF6eShzY2hlbWEuYW5ub3RhdGlvbnMsIFwibWV0YW1vZGVsUmVzdWx0XCIsICgpID0+IHBhcnNlQW5ub3RhdGlvbnMobWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnMsIGNhcGFiaWxpdGllcykpO1xuXG5cdFx0cmV0dXJuIHNjaGVtYTtcblx0fSk7XG5cblx0cmV0dXJuIHJlc3VsdCBhcyBSYXdNZXRhZGF0YTtcbn1cblxuY29uc3QgbU1ldGFNb2RlbE1hcDogUmVjb3JkPHN0cmluZywgQ29udmVydGVkTWV0YWRhdGE+ID0ge307XG5cbi8qKlxuICogQ29udmVydCB0aGUgT0RhdGFNZXRhTW9kZWwgaW50byBhbm90aGVyIGZvcm1hdCB0aGF0IGFsbG93IGZvciBlYXN5IG1hbmlwdWxhdGlvbiBvZiB0aGUgYW5ub3RhdGlvbnMuXG4gKlxuICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIE9EYXRhTWV0YU1vZGVsXG4gKiBAcGFyYW0gb0NhcGFiaWxpdGllcyBUaGUgY3VycmVudCBjYXBhYmlsaXRpZXNcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIG9iamVjdC1saWtlIGFubm90YXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHlwZXMob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIG9DYXBhYmlsaXRpZXM/OiBFbnZpcm9ubWVudENhcGFiaWxpdGllcyk6IENvbnZlcnRlZE1ldGFkYXRhIHtcblx0Y29uc3Qgc01ldGFNb2RlbElkID0gKG9NZXRhTW9kZWwgYXMgYW55KS5pZDtcblx0aWYgKCFtTWV0YU1vZGVsTWFwLmhhc093blByb3BlcnR5KHNNZXRhTW9kZWxJZCkpIHtcblx0XHRjb25zdCBwYXJzZWRPdXRwdXQgPSBwYXJzZU1ldGFNb2RlbChvTWV0YU1vZGVsLCBvQ2FwYWJpbGl0aWVzKTtcblx0XHR0cnkge1xuXHRcdFx0bU1ldGFNb2RlbE1hcFtzTWV0YU1vZGVsSWRdID0gQW5ub3RhdGlvbkNvbnZlcnRlci5jb252ZXJ0KHBhcnNlZE91dHB1dCk7XG5cdFx0fSBjYXRjaCAob0Vycm9yKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3Iob0Vycm9yIGFzIGFueSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtTWV0YU1vZGVsTWFwW3NNZXRhTW9kZWxJZF0gYXMgYW55IGFzIENvbnZlcnRlZE1ldGFkYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udmVydGVkVHlwZXMob0NvbnRleHQ6IENvbnRleHQpIHtcblx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCkgYXMgdW5rbm93biBhcyBPRGF0YU1ldGFNb2RlbDtcblx0aWYgKCFvTWV0YU1vZGVsLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1ldGFNb2RlbFwiKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIGEgT0RhdGFNZXRhTW9kZWxcIik7XG5cdH1cblx0cmV0dXJuIGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdGRlbGV0ZSBtTWV0YU1vZGVsTWFwWyhvTWV0YU1vZGVsIGFzIGFueSkuaWRdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE1ldGFNb2RlbENvbnRleHQob01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQsIGJJbmNsdWRlVmlzaXRlZE9iamVjdHM6IHRydWUpOiB1bmRlZmluZWQgfCBSZXNvbHZlZFRhcmdldDtcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TWV0YU1vZGVsQ29udGV4dChvTWV0YU1vZGVsQ29udGV4dDogQ29udGV4dCk6IHVuZGVmaW5lZCB8IFNlcnZpY2VPYmplY3QgfCBBY3Rpb25QYXJhbWV0ZXIgfCBSZWNvcmRDb21wbGV4VHlwZTtcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TWV0YU1vZGVsQ29udGV4dChcblx0b01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQsXG5cdGJJbmNsdWRlVmlzaXRlZE9iamVjdHMgPSBmYWxzZVxuKTogdW5kZWZpbmVkIHwgU2VydmljZU9iamVjdCB8IEFjdGlvblBhcmFtZXRlciB8IFJlY29yZENvbXBsZXhUeXBlIHwgUmVzb2x2ZWRUYXJnZXQge1xuXHRjb25zdCBvQ29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbENvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdGNvbnN0IHNQYXRoID0gb01ldGFNb2RlbENvbnRleHQuZ2V0UGF0aCgpO1xuXG5cdGNvbnN0IGFQYXRoU3BsaXQgPSBzUGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCBmaXJzdFBhcnQgPSBhUGF0aFNwbGl0WzFdO1xuXHRsZXQgYmVnaW5JbmRleCA9IDI7XG5cdGlmIChvQ29udmVydGVkTWV0YWRhdGEuZW50aXR5Q29udGFpbmVyLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZmlyc3RQYXJ0KSB7XG5cdFx0Zmlyc3RQYXJ0ID0gYVBhdGhTcGxpdFsyXTtcblx0XHRiZWdpbkluZGV4Kys7XG5cdH1cblx0bGV0IHRhcmdldEVudGl0eVNldDogRW50aXR5U2V0IHwgU2luZ2xldG9uID0gb0NvbnZlcnRlZE1ldGFkYXRhLmVudGl0eVNldHMuZmluZChcblx0XHQoZW50aXR5U2V0KSA9PiBlbnRpdHlTZXQubmFtZSA9PT0gZmlyc3RQYXJ0XG5cdCkgYXMgRW50aXR5U2V0O1xuXHRpZiAoIXRhcmdldEVudGl0eVNldCkge1xuXHRcdHRhcmdldEVudGl0eVNldCA9IG9Db252ZXJ0ZWRNZXRhZGF0YS5zaW5nbGV0b25zLmZpbmQoKHNpbmdsZXRvbikgPT4gc2luZ2xldG9uLm5hbWUgPT09IGZpcnN0UGFydCkgYXMgU2luZ2xldG9uO1xuXHR9XG5cdGxldCByZWxhdGl2ZVBhdGggPSBhUGF0aFNwbGl0LnNsaWNlKGJlZ2luSW5kZXgpLmpvaW4oXCIvXCIpO1xuXG5cdGNvbnN0IGxvY2FsT2JqZWN0czogYW55W10gPSBbdGFyZ2V0RW50aXR5U2V0XTtcblx0d2hpbGUgKHJlbGF0aXZlUGF0aCAmJiByZWxhdGl2ZVBhdGgubGVuZ3RoID4gMCAmJiByZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCIpKSB7XG5cdFx0bGV0IHJlbGF0aXZlU3BsaXQgPSByZWxhdGl2ZVBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdGxldCBpZHggPSAwO1xuXHRcdGxldCBjdXJyZW50RW50aXR5U2V0LCBzTmF2UHJvcFRvQ2hlY2s7XG5cblx0XHRyZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVTcGxpdC5zbGljZSgxKTsgLy8gUmVtb3ZpbmcgXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiXG5cdFx0d2hpbGUgKCFjdXJyZW50RW50aXR5U2V0ICYmIHJlbGF0aXZlU3BsaXQubGVuZ3RoID4gaWR4KSB7XG5cdFx0XHRpZiAocmVsYXRpdmVTcGxpdFtpZHhdICE9PSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCIpIHtcblx0XHRcdFx0Ly8gRmluZGluZyB0aGUgY29ycmVjdCBlbnRpdHlTZXQgZm9yIHRoZSBuYXZpZ2FpdG9uIHByb3BlcnR5IGJpbmRpbmcgZXhhbXBsZTogXCJTZXQvX1NhbGVzT3JkZXJcIlxuXHRcdFx0XHRzTmF2UHJvcFRvQ2hlY2sgPSByZWxhdGl2ZVNwbGl0XG5cdFx0XHRcdFx0LnNsaWNlKDAsIGlkeCArIDEpXG5cdFx0XHRcdFx0LmpvaW4oXCIvXCIpXG5cdFx0XHRcdFx0LnJlcGxhY2UoXCIvJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIiwgXCJcIik7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSB0YXJnZXRFbnRpdHlTZXQgJiYgdGFyZ2V0RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdlByb3BUb0NoZWNrXTtcblx0XHRcdH1cblx0XHRcdGlkeCsrO1xuXHRcdH1cblx0XHRpZiAoIWN1cnJlbnRFbnRpdHlTZXQpIHtcblx0XHRcdC8vIEZhbGwgYmFjayB0byBTaW5nbGUgbmF2IHByb3AgaWYgZW50aXR5U2V0IGlzIG5vdCBmb3VuZC5cblx0XHRcdHNOYXZQcm9wVG9DaGVjayA9IHJlbGF0aXZlU3BsaXRbMF07XG5cdFx0fVxuXHRcdGNvbnN0IGFOYXZQcm9wcyA9IHNOYXZQcm9wVG9DaGVjaz8uc3BsaXQoXCIvXCIpIHx8IFtdO1xuXHRcdGxldCB0YXJnZXRFbnRpdHlUeXBlID0gdGFyZ2V0RW50aXR5U2V0ICYmIHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlO1xuXHRcdGZvciAoY29uc3Qgc05hdlByb3Agb2YgYU5hdlByb3BzKSB7XG5cdFx0XHQvLyBQdXNoaW5nIGFsbCBuYXYgcHJvcHMgdG8gdGhlIHZpc2l0ZWQgb2JqZWN0cy4gZXhhbXBsZTogXCJTZXRcIiwgXCJfU2FsZXNPcmRlclwiIGZvciBcIlNldC9fU2FsZXNPcmRlclwiKGluIE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpXG5cdFx0XHRjb25zdCB0YXJnZXROYXZQcm9wID0gdGFyZ2V0RW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5hdlByb3ApID0+IG5hdlByb3AubmFtZSA9PT0gc05hdlByb3ApO1xuXHRcdFx0aWYgKHRhcmdldE5hdlByb3ApIHtcblx0XHRcdFx0bG9jYWxPYmplY3RzLnB1c2godGFyZ2V0TmF2UHJvcCk7XG5cdFx0XHRcdHRhcmdldEVudGl0eVR5cGUgPSB0YXJnZXROYXZQcm9wLnRhcmdldFR5cGU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0dGFyZ2V0RW50aXR5U2V0ID1cblx0XHRcdCh0YXJnZXRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldCkgfHwgKHRhcmdldEVudGl0eVNldCAmJiB0YXJnZXRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tyZWxhdGl2ZVNwbGl0WzBdXSk7XG5cdFx0aWYgKHRhcmdldEVudGl0eVNldCkge1xuXHRcdFx0Ly8gUHVzaGluZyB0aGUgdGFyZ2V0IGVudGl0eVNldCB0byB2aXNpdGVkIG9iamVjdHNcblx0XHRcdGxvY2FsT2JqZWN0cy5wdXNoKHRhcmdldEVudGl0eVNldCk7XG5cdFx0fVxuXHRcdC8vIFJlLWNhbGN1bGF0aW5nIHRoZSByZWxhdGl2ZSBwYXRoXG5cdFx0Ly8gQXMgZWFjaCBuYXZpZ2F0aW9uIG5hbWUgaXMgZW5jbG9zZWQgYmV0d2VlbiAnJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcnIGFuZCAnJCcgKHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBlbnRpdHlzZXQgZWFzaWx5IGluIHRoZSBtZXRhbW9kZWwpXG5cdFx0Ly8gd2UgbmVlZCB0byByZW1vdmUgdGhlIGNsb3NpbmcgJyQnIHRvIGJlIGFibGUgdG8gc3dpdGNoIHRvIHRoZSBuZXh0IG5hdmlnYXRpb25cblx0XHRyZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVTcGxpdC5zbGljZShhTmF2UHJvcHMubGVuZ3RoIHx8IDEpO1xuXHRcdGlmIChyZWxhdGl2ZVNwbGl0Lmxlbmd0aCAmJiByZWxhdGl2ZVNwbGl0WzBdID09PSBcIiRcIikge1xuXHRcdFx0cmVsYXRpdmVTcGxpdC5zaGlmdCgpO1xuXHRcdH1cblx0XHRyZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVNwbGl0LmpvaW4oXCIvXCIpO1xuXHR9XG5cdGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIiRUeXBlXCIpKSB7XG5cdFx0Ly8gQXMgJFR5cGVAIGlzIGFsbG93ZWQgYXMgd2VsbFxuXHRcdGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIiRUeXBlQFwiKSkge1xuXHRcdFx0cmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoLnJlcGxhY2UoXCIkVHlwZVwiLCBcIlwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gV2UncmUgYW55d2F5IGdvaW5nIHRvIGxvb2sgb24gdGhlIGVudGl0eVR5cGUuLi5cblx0XHRcdHJlbGF0aXZlUGF0aCA9IGFQYXRoU3BsaXQuc2xpY2UoMykuam9pbihcIi9cIik7XG5cdFx0fVxuXHR9XG5cdGlmICh0YXJnZXRFbnRpdHlTZXQgJiYgcmVsYXRpdmVQYXRoLmxlbmd0aCkge1xuXHRcdGNvbnN0IG9UYXJnZXQgPSB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5yZXNvbHZlUGF0aChyZWxhdGl2ZVBhdGgsIGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpO1xuXHRcdGlmIChvVGFyZ2V0KSB7XG5cdFx0XHRpZiAoYkluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuXHRcdFx0XHRvVGFyZ2V0LnZpc2l0ZWRPYmplY3RzID0gbG9jYWxPYmplY3RzLmNvbmNhdChvVGFyZ2V0LnZpc2l0ZWRPYmplY3RzKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlICYmIHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlLmFjdGlvbnMpIHtcblx0XHRcdC8vIGlmIHRhcmdldCBpcyBhbiBhY3Rpb24gb3IgYW4gYWN0aW9uIHBhcmFtZXRlclxuXHRcdFx0Y29uc3QgYWN0aW9ucyA9IHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlICYmIHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlLmFjdGlvbnM7XG5cdFx0XHRjb25zdCByZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdGlmIChhY3Rpb25zW3JlbGF0aXZlU3BsaXRbMF1dKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbiA9IGFjdGlvbnNbcmVsYXRpdmVTcGxpdFswXV07XG5cdFx0XHRcdGlmIChyZWxhdGl2ZVNwbGl0WzFdICYmIGFjdGlvbi5wYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFyYW1ldGVyTmFtZSA9IHJlbGF0aXZlU3BsaXRbMV07XG5cdFx0XHRcdFx0cmV0dXJuIGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtZXRlcikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtZXRlci5mdWxseVF1YWxpZmllZE5hbWUuZW5kc1dpdGgoYC8ke3BhcmFtZXRlck5hbWV9YCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdHJldHVybiBhY3Rpb247XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9UYXJnZXQ7XG5cdH0gZWxzZSB7XG5cdFx0aWYgKGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRhcmdldDogdGFyZ2V0RW50aXR5U2V0LFxuXHRcdFx0XHR2aXNpdGVkT2JqZWN0czogbG9jYWxPYmplY3RzXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGFyZ2V0RW50aXR5U2V0O1xuXHR9XG59XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkVGFyZ2V0ID0ge1xuXHR0YXJnZXQ/OiBTZXJ2aWNlT2JqZWN0O1xuXHR2aXNpdGVkT2JqZWN0czogU2VydmljZU9iamVjdEFuZEFubm90YXRpb25bXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQsIG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0PzogQ29udGV4dCk6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRjb25zdCBvQ29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbENvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdGNvbnN0IG1ldGFNb2RlbENvbnRleHQgPSBjb252ZXJ0TWV0YU1vZGVsQ29udGV4dChvTWV0YU1vZGVsQ29udGV4dCwgdHJ1ZSkgYXMgUmVzb2x2ZWRUYXJnZXQ7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbjtcblx0aWYgKG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0ICYmIG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0LmdldFBhdGgoKSAhPT0gXCIvXCIpIHtcblx0XHR0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCk7XG5cdH1cblx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGgobWV0YU1vZGVsQ29udGV4dCwgb0NvbnZlcnRlZE1ldGFkYXRhLCB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoKFxuXHRtZXRhTW9kZWxDb250ZXh0OiBSZXNvbHZlZFRhcmdldCxcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLFxuXHR0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdG9ubHlTZXJ2aWNlT2JqZWN0cyA9IGZhbHNlXG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0cyA9IG1ldGFNb2RlbENvbnRleHQudmlzaXRlZE9iamVjdHMuZmlsdGVyKFxuXHRcdCh2aXNpdGVkT2JqZWN0KSA9PiBpc1NlcnZpY2VPYmplY3QodmlzaXRlZE9iamVjdCkgJiYgIWlzRW50aXR5VHlwZSh2aXNpdGVkT2JqZWN0KSAmJiAhaXNFbnRpdHlDb250YWluZXIodmlzaXRlZE9iamVjdClcblx0KTtcblx0aWYgKFxuXHRcdGlzU2VydmljZU9iamVjdChtZXRhTW9kZWxDb250ZXh0LnRhcmdldCkgJiZcblx0XHQhaXNFbnRpdHlUeXBlKG1ldGFNb2RlbENvbnRleHQudGFyZ2V0KSAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdHNbZGF0YU1vZGVsT2JqZWN0cy5sZW5ndGggLSAxXSAhPT0gbWV0YU1vZGVsQ29udGV4dC50YXJnZXQgJiZcblx0XHQhb25seVNlcnZpY2VPYmplY3RzXG5cdCkge1xuXHRcdGRhdGFNb2RlbE9iamVjdHMucHVzaChtZXRhTW9kZWxDb250ZXh0LnRhcmdldCk7XG5cdH1cblxuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0Y29uc3Qgcm9vdEVudGl0eVNldDogRW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0c1swXSBhcyBFbnRpdHlTZXQ7XG5cblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiB8IHVuZGVmaW5lZCA9IHJvb3RFbnRpdHlTZXQ7XG5cdGxldCBjdXJyZW50RW50aXR5VHlwZTogRW50aXR5VHlwZSA9IHJvb3RFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0bGV0IGN1cnJlbnRPYmplY3Q6IFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uIHwgdW5kZWZpbmVkO1xuXHRsZXQgbmF2aWdhdGVkUGF0aCA9IFtdO1xuXG5cdGZvciAobGV0IGkgPSAxOyBpIDwgZGF0YU1vZGVsT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuXHRcdGN1cnJlbnRPYmplY3QgPSBkYXRhTW9kZWxPYmplY3RzW2ldO1xuXG5cdFx0aWYgKGlzTmF2aWdhdGlvblByb3BlcnR5KGN1cnJlbnRPYmplY3QpKSB7XG5cdFx0XHRuYXZpZ2F0ZWRQYXRoLnB1c2goY3VycmVudE9iamVjdC5uYW1lKTtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2goY3VycmVudE9iamVjdCk7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IGN1cnJlbnRPYmplY3QudGFyZ2V0VHlwZTtcblx0XHRcdGNvbnN0IGJvdW5kRW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCB1bmRlZmluZWQgPSBjdXJyZW50RW50aXR5U2V0Py5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW25hdmlnYXRlZFBhdGguam9pbihcIi9cIildO1xuXHRcdFx0aWYgKGJvdW5kRW50aXR5U2V0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGJvdW5kRW50aXR5U2V0O1xuXHRcdFx0XHRuYXZpZ2F0ZWRQYXRoID0gW107XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpc0VudGl0eVNldChjdXJyZW50T2JqZWN0KSB8fCBpc1NpbmdsZXRvbihjdXJyZW50T2JqZWN0KSkge1xuXHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRPYmplY3Q7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IGN1cnJlbnRFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHR9XG5cdH1cblxuXHRpZiAobmF2aWdhdGVkUGF0aC5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gUGF0aCB3aXRob3V0IE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgLS0+IG5vIHRhcmdldCBlbnRpdHkgc2V0XG5cdFx0Y3VycmVudEVudGl0eVNldCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICh0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiAmJiB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5zdGFydGluZ0VudGl0eVNldCAhPT0gcm9vdEVudGl0eVNldCkge1xuXHRcdC8vIEluIGNhc2UgdGhlIGVudGl0eXNldCBpcyBub3Qgc3RhcnRpbmcgZnJvbSB0aGUgc2FtZSBsb2NhdGlvbiBpdCBtYXkgbWVhbiB0aGF0IHdlIGFyZSBkb2luZyB0b28gbXVjaCB3b3JrIGVhcmxpZXIgZm9yIHNvbWUgcmVhc29uXG5cdFx0Ly8gQXMgc3VjaCB3ZSBuZWVkIHRvIHJlZGVmaW5lIHRoZSBjb250ZXh0IHNvdXJjZSBmb3IgdGhlIHRhcmdldEVudGl0eVNldExvY2F0aW9uXG5cdFx0Y29uc3Qgc3RhcnRpbmdJbmRleCA9IGRhdGFNb2RlbE9iamVjdHMuaW5kZXhPZih0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5zdGFydGluZ0VudGl0eVNldCk7XG5cdFx0aWYgKHN0YXJ0aW5nSW5kZXggIT09IC0xKSB7XG5cdFx0XHQvLyBJZiBpdCdzIG5vdCBmb3VuZCBJIGRvbid0IGtub3cgd2hhdCB3ZSBjYW4gZG8gKHByb2JhYmx5IG5vdGhpbmcpXG5cdFx0XHRjb25zdCByZXF1aXJlZERhdGFNb2RlbE9iamVjdHMgPSBkYXRhTW9kZWxPYmplY3RzLnNsaWNlKDAsIHN0YXJ0aW5nSW5kZXgpO1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQgPSByb290RW50aXR5U2V0O1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgPSByZXF1aXJlZERhdGFNb2RlbE9iamVjdHNcblx0XHRcdFx0LmZpbHRlcihpc05hdmlnYXRpb25Qcm9wZXJ0eSlcblx0XHRcdFx0LmNvbmNhdCh0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcyBhcyBOYXZpZ2F0aW9uUHJvcGVydHlbXSk7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IG91dERhdGFNb2RlbFBhdGggPSB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IHJvb3RFbnRpdHlTZXQsXG5cdFx0dGFyZ2V0RW50aXR5U2V0OiBjdXJyZW50RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IGN1cnJlbnRFbnRpdHlUeXBlLFxuXHRcdHRhcmdldE9iamVjdDogbWV0YU1vZGVsQ29udGV4dC50YXJnZXQsXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXMsXG5cdFx0Y29udGV4dExvY2F0aW9uOiB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbixcblx0XHRjb252ZXJ0ZWRUeXBlczogY29udmVydGVkVHlwZXNcblx0fTtcblx0aWYgKCFpc1NlcnZpY2VPYmplY3Qob3V0RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QpICYmIG9ubHlTZXJ2aWNlT2JqZWN0cykge1xuXHRcdG91dERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0ID0gaXNTZXJ2aWNlT2JqZWN0KGN1cnJlbnRPYmplY3QpID8gY3VycmVudE9iamVjdCA6IHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoIW91dERhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uKSB7XG5cdFx0b3V0RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24gPSBvdXREYXRhTW9kZWxQYXRoO1xuXHR9XG5cdHJldHVybiBvdXREYXRhTW9kZWxQYXRoO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7RUFzRE8sTUFBTUEsOEJBQThCLEdBQUc7SUFDN0NDLEtBQUssRUFB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QWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FBRyxJQUFJO1FBQ3RDLENBQUMsTUFBTSxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRTtVQUNyRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FBRyxLQUFLO1FBQ3ZDLENBQUMsTUFBTSxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FBRyxJQUFJO1FBQ3RDLENBQUMsTUFBTSxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FBRyxJQUFJO1FBQ3RDLENBQUMsTUFBTSxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRTtVQUNyRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FBRyxLQUFLO1FBQ3ZDLENBQUMsTUFBTSxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FBRyxJQUFJO1FBQ3RDLENBQUMsTUFBTSxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FBRyxJQUFJO1FBQ3RDLENBQUMsTUFBTSxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwRGYsS0FBSyxDQUFDUyxVQUFVLENBQVNQLElBQUksR0FB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
|