@firestartr/cli 0.1.17 → 0.1.19
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/build/index.js +351 -198
- package/build/provisioner/dist-cdktf/index.js +3 -1
- package/build/provisioner/dist-cdktf/index.js.map +1 -1
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/helpers/TeamsHelper.js +1 -0
- package/build/provisioner/dist-cdktf/src/handlers/index.d.ts +1 -1
- package/build/provisioner/dist-cdktf/tsconfig.cdktf.tsbuildinfo +1 -1
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -228145,9 +228145,10 @@ exports["default"] = {
|
|
|
228145
228145
|
"use strict";
|
|
228146
228146
|
|
|
228147
228147
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
228148
|
-
exports.TFWorkspaceRefCR = exports.TFWorkspaceRefRegex = void 0;
|
|
228148
|
+
exports.TFWorkspaceRefCR = exports.GroupRefRegex = exports.TFWorkspaceRefRegex = void 0;
|
|
228149
228149
|
const regModuleName = /[\w\-\.]+/;
|
|
228150
228150
|
exports.TFWorkspaceRefRegex = new RegExp(`\\$\\{\\{\\s*tfworkspace\\:(${regModuleName.source})\\:outputs\\.(${regModuleName.source})\\s*\\}\\}`, 'ig');
|
|
228151
|
+
exports.GroupRefRegex = new RegExp(`group\\:(${regModuleName.source})`, 'ig');
|
|
228151
228152
|
exports.TFWorkspaceRefCR = new RegExp(`\\$\\{\\{\\s*references\\.(${regModuleName.source})\\s*\\}\\}`, 'i');
|
|
228152
228153
|
|
|
228153
228154
|
|
|
@@ -228159,9 +228160,9 @@ exports.TFWorkspaceRefCR = new RegExp(`\\$\\{\\{\\s*references\\.(${regModuleNam
|
|
|
228159
228160
|
"use strict";
|
|
228160
228161
|
|
|
228161
228162
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
228162
|
-
exports.
|
|
228163
|
-
exports.
|
|
228164
|
-
exports.toJson_TfResultSpecReference = exports.TfResultSpecAction = exports.toJson_TfResultSpec = exports.toJson_TfResultProps = exports.TfResult = exports.FirestartrTerraformWorkspacePlanSpecContextProvidersRefKind = exports.FirestartrTerraformWorkspacePlanSpecContextBackendRefKind = exports.FirestartrTerraformWorkspacePlanSpecReferencesRefKind = exports.toJson_FirestartrTerraformWorkspacePlanSpecContextProvidersRef = exports.toJson_FirestartrTerraformWorkspacePlanSpecContextBackendRef = exports.toJson_FirestartrTerraformWorkspacePlanSpecWriteConnectionSecretToRefOutputs = void 0;
|
|
228163
|
+
exports.toJson_FirestartrGithubRepositorySpecPermissionsRef = exports.toJson_FirestartrGithubRepositorySpecPagesSource = exports.toJson_FirestartrGithubRepositorySpecActionsOidc = exports.FirestartrGithubRepositorySpecRepoVisibility = exports.toJson_FirestartrGithubRepositorySpecFirestartrTechnology = exports.toJson_FirestartrGithubRepositorySpecContextProvider = exports.toJson_FirestartrGithubRepositorySpecContextBackend = exports.toJson_FirestartrGithubRepositorySpecWriteConnectionSecretToRef = exports.toJson_FirestartrGithubRepositorySpecBranchProtections = exports.toJson_FirestartrGithubRepositorySpecPermissions = exports.toJson_FirestartrGithubRepositorySpecPages = exports.toJson_FirestartrGithubRepositorySpecActions = exports.toJson_FirestartrGithubRepositorySpecRepo = exports.toJson_FirestartrGithubRepositorySpecFirestartr = exports.toJson_FirestartrGithubRepositorySpecContext = exports.toJson_FirestartrGithubRepositorySpec = exports.toJson_FirestartrGithubRepositoryProps = exports.FirestartrGithubRepository = exports.FirestartrGithubMembershipSpecContextProviderRefKind = exports.FirestartrGithubMembershipSpecContextBackendRefKind = exports.toJson_FirestartrGithubMembershipSpecContextProviderRef = exports.toJson_FirestartrGithubMembershipSpecContextBackendRef = exports.toJson_FirestartrGithubMembershipSpecWriteConnectionSecretToRefOutputs = exports.toJson_FirestartrGithubMembershipSpecContextProvider = exports.toJson_FirestartrGithubMembershipSpecContextBackend = exports.toJson_FirestartrGithubMembershipSpecWriteConnectionSecretToRef = exports.toJson_FirestartrGithubMembershipSpecFirestartr = exports.toJson_FirestartrGithubMembershipSpecContext = exports.FirestartrGithubMembershipSpecRole = exports.toJson_FirestartrGithubMembershipSpec = exports.toJson_FirestartrGithubMembershipProps = exports.FirestartrGithubMembership = exports.FirestartrGithubGroupSpecContextProviderRefKind = exports.FirestartrGithubGroupSpecContextBackendRefKind = exports.toJson_FirestartrGithubGroupSpecContextProviderRef = exports.toJson_FirestartrGithubGroupSpecContextBackendRef = exports.toJson_FirestartrGithubGroupSpecWriteConnectionSecretToRefOutputs = exports.toJson_FirestartrGithubGroupSpecContextProvider = exports.toJson_FirestartrGithubGroupSpecContextBackend = exports.toJson_FirestartrGithubGroupSpecMembersRef = exports.toJson_FirestartrGithubGroupSpecParentTeamRef = exports.toJson_FirestartrGithubGroupSpecWriteConnectionSecretToRef = exports.toJson_FirestartrGithubGroupSpecFirestartr = exports.toJson_FirestartrGithubGroupSpecContext = exports.toJson_FirestartrGithubGroupSpecMembers = exports.toJson_FirestartrGithubGroupSpecParentTeam = exports.FirestartrGithubGroupSpecPrivacy = exports.toJson_FirestartrGithubGroupSpec = exports.toJson_FirestartrGithubGroupProps = exports.FirestartrGithubGroup = void 0;
|
|
228164
|
+
exports.toJson_FirestartrTerraformWorkspacePlanSpecContextBackend = exports.toJson_FirestartrTerraformWorkspacePlanSpecWriteConnectionSecretToRef = exports.toJson_FirestartrTerraformWorkspacePlanSpecReferences = exports.FirestartrTerraformWorkspacePlanSpecSource = exports.toJson_FirestartrTerraformWorkspacePlanSpecFirestartr = exports.toJson_FirestartrTerraformWorkspacePlanSpecContext = exports.toJson_FirestartrTerraformWorkspacePlanSpec = exports.toJson_FirestartrTerraformWorkspacePlanProps = exports.FirestartrTerraformWorkspacePlan = exports.FirestartrTerraformWorkspaceSpecContextProvidersRefKind = exports.FirestartrTerraformWorkspaceSpecContextBackendRefKind = exports.FirestartrTerraformWorkspaceSpecReferencesRefKind = exports.toJson_FirestartrTerraformWorkspaceSpecContextProvidersRef = exports.toJson_FirestartrTerraformWorkspaceSpecContextBackendRef = exports.toJson_FirestartrTerraformWorkspaceSpecWriteConnectionSecretToRefOutputs = exports.toJson_FirestartrTerraformWorkspaceSpecReferencesRef = exports.toJson_FirestartrTerraformWorkspaceSpecContextProviders = exports.toJson_FirestartrTerraformWorkspaceSpecContextBackend = exports.toJson_FirestartrTerraformWorkspaceSpecWriteConnectionSecretToRef = exports.toJson_FirestartrTerraformWorkspaceSpecReferences = exports.FirestartrTerraformWorkspaceSpecSource = exports.toJson_FirestartrTerraformWorkspaceSpecFirestartr = exports.toJson_FirestartrTerraformWorkspaceSpecContext = exports.toJson_FirestartrTerraformWorkspaceSpec = exports.toJson_FirestartrTerraformWorkspaceProps = exports.FirestartrTerraformWorkspace = exports.toJson_FirestartrProviderConfigSpecSecretsSecretRef = exports.toJson_FirestartrProviderConfigSpecSecrets = exports.toJson_FirestartrProviderConfigSpec = exports.toJson_FirestartrProviderConfigProps = exports.FirestartrProviderConfig = exports.FirestartrGithubRepositoryFeatureSpecContextProviderRefKind = exports.FirestartrGithubRepositoryFeatureSpecContextBackendRefKind = exports.toJson_FirestartrGithubRepositoryFeatureSpecContextProviderRef = exports.toJson_FirestartrGithubRepositoryFeatureSpecContextBackendRef = exports.toJson_FirestartrGithubRepositoryFeatureSpecRepositoryTargetRef = exports.toJson_FirestartrGithubRepositoryFeatureSpecContextProvider = exports.toJson_FirestartrGithubRepositoryFeatureSpecContextBackend = exports.toJson_FirestartrGithubRepositoryFeatureSpecFiles = exports.toJson_FirestartrGithubRepositoryFeatureSpecRepositoryTarget = exports.toJson_FirestartrGithubRepositoryFeatureSpecContext = exports.toJson_FirestartrGithubRepositoryFeatureSpecFirestartr = exports.toJson_FirestartrGithubRepositoryFeatureSpec = exports.toJson_FirestartrGithubRepositoryFeatureProps = exports.FirestartrGithubRepositoryFeature = exports.FirestartrGithubRepositorySpecContextProviderRefKind = exports.FirestartrGithubRepositorySpecContextBackendRefKind = exports.toJson_FirestartrGithubRepositorySpecContextProviderRef = exports.toJson_FirestartrGithubRepositorySpecContextBackendRef = exports.toJson_FirestartrGithubRepositorySpecWriteConnectionSecretToRefOutputs = void 0;
|
|
228165
|
+
exports.toJson_TfResultSpecReference = exports.TfResultSpecAction = exports.toJson_TfResultSpec = exports.toJson_TfResultProps = exports.TfResult = exports.FirestartrTerraformWorkspacePlanSpecContextProvidersRefKind = exports.FirestartrTerraformWorkspacePlanSpecContextBackendRefKind = exports.FirestartrTerraformWorkspacePlanSpecReferencesRefKind = exports.toJson_FirestartrTerraformWorkspacePlanSpecContextProvidersRef = exports.toJson_FirestartrTerraformWorkspacePlanSpecContextBackendRef = exports.toJson_FirestartrTerraformWorkspacePlanSpecWriteConnectionSecretToRefOutputs = exports.toJson_FirestartrTerraformWorkspacePlanSpecReferencesRef = exports.toJson_FirestartrTerraformWorkspacePlanSpecContextProviders = void 0;
|
|
228165
228166
|
// generated by cdk8s
|
|
228166
228167
|
const cdk8s_1 = __nccwpck_require__(77228);
|
|
228167
228168
|
/**
|
|
@@ -228234,6 +228235,7 @@ function toJson_FirestartrGithubGroupSpec(obj) {
|
|
|
228234
228235
|
'org': obj.org,
|
|
228235
228236
|
'privacy': obj.privacy,
|
|
228236
228237
|
'description': obj.description,
|
|
228238
|
+
'parentTeam': toJson_FirestartrGithubGroupSpecParentTeam(obj.parentTeam),
|
|
228237
228239
|
'members': (_a = obj.members) === null || _a === void 0 ? void 0 : _a.map(y => toJson_FirestartrGithubGroupSpecMembers(y)),
|
|
228238
228240
|
'context': toJson_FirestartrGithubGroupSpecContext(obj.context),
|
|
228239
228241
|
'firestartr': toJson_FirestartrGithubGroupSpecFirestartr(obj.firestartr),
|
|
@@ -228254,6 +228256,21 @@ var FirestartrGithubGroupSpecPrivacy;
|
|
|
228254
228256
|
/** secret */
|
|
228255
228257
|
FirestartrGithubGroupSpecPrivacy["SECRET"] = "secret";
|
|
228256
228258
|
})(FirestartrGithubGroupSpecPrivacy = exports.FirestartrGithubGroupSpecPrivacy || (exports.FirestartrGithubGroupSpecPrivacy = {}));
|
|
228259
|
+
/**
|
|
228260
|
+
* Converts an object of type 'FirestartrGithubGroupSpecParentTeam' to JSON representation.
|
|
228261
|
+
*/
|
|
228262
|
+
/* eslint-disable max-len, quote-props */
|
|
228263
|
+
function toJson_FirestartrGithubGroupSpecParentTeam(obj) {
|
|
228264
|
+
if (obj === undefined) {
|
|
228265
|
+
return undefined;
|
|
228266
|
+
}
|
|
228267
|
+
const result = {
|
|
228268
|
+
'ref': toJson_FirestartrGithubGroupSpecParentTeamRef(obj.ref),
|
|
228269
|
+
};
|
|
228270
|
+
// filter undefined values
|
|
228271
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : (Object.assign(Object.assign({}, r), { [i[0]]: i[1] })), {});
|
|
228272
|
+
}
|
|
228273
|
+
exports.toJson_FirestartrGithubGroupSpecParentTeam = toJson_FirestartrGithubGroupSpecParentTeam;
|
|
228257
228274
|
/**
|
|
228258
228275
|
* Converts an object of type 'FirestartrGithubGroupSpecMembers' to JSON representation.
|
|
228259
228276
|
*/
|
|
@@ -228317,6 +228334,23 @@ function toJson_FirestartrGithubGroupSpecWriteConnectionSecretToRef(obj) {
|
|
|
228317
228334
|
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : (Object.assign(Object.assign({}, r), { [i[0]]: i[1] })), {});
|
|
228318
228335
|
}
|
|
228319
228336
|
exports.toJson_FirestartrGithubGroupSpecWriteConnectionSecretToRef = toJson_FirestartrGithubGroupSpecWriteConnectionSecretToRef;
|
|
228337
|
+
/**
|
|
228338
|
+
* Converts an object of type 'FirestartrGithubGroupSpecParentTeamRef' to JSON representation.
|
|
228339
|
+
*/
|
|
228340
|
+
/* eslint-disable max-len, quote-props */
|
|
228341
|
+
function toJson_FirestartrGithubGroupSpecParentTeamRef(obj) {
|
|
228342
|
+
if (obj === undefined) {
|
|
228343
|
+
return undefined;
|
|
228344
|
+
}
|
|
228345
|
+
const result = {
|
|
228346
|
+
'kind': obj.kind,
|
|
228347
|
+
'name': obj.name,
|
|
228348
|
+
'needsSecret': obj.needsSecret,
|
|
228349
|
+
};
|
|
228350
|
+
// filter undefined values
|
|
228351
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : (Object.assign(Object.assign({}, r), { [i[0]]: i[1] })), {});
|
|
228352
|
+
}
|
|
228353
|
+
exports.toJson_FirestartrGithubGroupSpecParentTeamRef = toJson_FirestartrGithubGroupSpecParentTeamRef;
|
|
228320
228354
|
/**
|
|
228321
228355
|
* Converts an object of type 'FirestartrGithubGroupSpecMembersRef' to JSON representation.
|
|
228322
228356
|
*/
|
|
@@ -230063,7 +230097,7 @@ function toJson_TfResultSpecReference(obj) {
|
|
|
230063
230097
|
}
|
|
230064
230098
|
exports.toJson_TfResultSpecReference = toJson_TfResultSpecReference;
|
|
230065
230099
|
/* eslint-enable max-len, quote-props */
|
|
230066
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0YXJ0ci5kZXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbXBvcnRzL2ZpcmVzdGFydHIuZGV2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUJBQXFCO0FBQ3JCLGlDQUF1RTtBQUl2RTs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxpQkFBUztJQXVCbEQ7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQyxFQUFFO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxrQ0FDVixxQkFBcUIsQ0FBQyxHQUFHLEdBQ3pCLEtBQUssRUFDUixDQUFDO0lBQ0wsQ0FBQztJQXpCRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQW9DLEVBQUU7UUFDM0QsdUNBQ0sscUJBQXFCLENBQUMsR0FBRyxHQUN6QixpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsRUFDM0M7SUFDSixDQUFDO0lBZUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWhDLHVDQUNLLHFCQUFxQixDQUFDLEdBQUcsR0FDekIsaUNBQWlDLENBQUMsUUFBUSxDQUFDLEVBQzlDO0lBQ0osQ0FBQzs7QUE5Q0gsc0RBK0NDO0FBOUNDOztHQUVHO0FBQ29CLHlCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsSUFBSSxFQUFFLHVCQUF1QjtDQUM5QixDQUFBO0FBNERIOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLGlDQUFpQyxDQUFDLEdBQTJDO0lBQzNGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDeEIsTUFBTSxFQUFFLGdDQUFnQyxDQUFDLEdBQUcs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SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFNLENBQUMsS0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCxvRUFRQztBQUNELHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGdlbmVyYXRlZCBieSBjZGs4c1xuaW1wb3J0IHsgQXBpT2JqZWN0LCBBcGlPYmplY3RNZXRhZGF0YSwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgR2l0SHViIGdyb3Vwc1xuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyR2l0aHViR3JvdXAgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViR3JvdXAuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBHaXRIdWIgZ3JvdXBzXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cCNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXAjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFByb3BzKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNvcmdcbiAgICovXG4gIHJlYWRvbmx5IG9yZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMjcHJpdmFjeVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmFjeTogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1ByaXZhY3k7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNtZW1iZXJzXG4gICAqL1xuICByZWFkb25seSBtZW1iZXJzOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnb3JnJzogb2JqLm9yZyxcbiAgICAncHJpdmFjeSc6IG9iai5wcml2YWN5LFxuICAgICdkZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgICAnbWVtYmVycyc6IG9iai5tZW1iZXJzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMoeSkpLFxuICAgICdjb250ZXh0JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmoud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1ByaXZhY3lcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1ByaXZhY3kge1xuICAvKiogY2xvc2VkICovXG4gIENMT1NFRCA9IFwiY2xvc2VkXCIsXG4gIC8qKiBzZWNyZXQgKi9cbiAgU0VDUkVUID0gXCJzZWNyZXRcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQjYmFja2VuZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZDogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0I3Byb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlcjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JhY2tlbmQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kKG9iai5iYWNrZW5kKSxcbiAgICAncHJvdmlkZXInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlcihvYmoucHJvdmlkZXIpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyI3RmU3RhdGVLZXlcbiAgICovXG4gIHJlYWRvbmx5IHRmU3RhdGVLZXk/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0cz86IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnb3V0cHV0cyc6IG9iai5vdXRwdXRzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZiNuZWVkc1NlY3JldFxuICAgKi9cbiAgcmVhZG9ubHkgbmVlZHNTZWNyZXQ6IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnbmVlZHNTZWNyZXQnOiBvYmoubmVlZHNTZWNyZXQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZChvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXIjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlcicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlcihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgR2l0SHViIG1lbWJlcnNoaXBzIHRvIGEgR2l0SHViIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcCBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIEdpdEh1YiBtZW1iZXJzaGlwcyB0byBhIEdpdEh1YiBvcmdhbml6YXRpb24uXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcCNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMjb3JnXG4gICAqL1xuICByZWFkb25seSBvcmc6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMjcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZTogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjUm9sZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMjZmlyZXN0YXJ0clxuICAgKi9cbiAgcmVhZG9ubHkgZmlyZXN0YXJ0cjogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMjd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmPzogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcmcnOiBvYmoub3JnLFxuICAgICdyb2xlJzogb2JqLnJvbGUsXG4gICAgJ2NvbnRleHQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iai53cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNSb2xlXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1JvbGUge1xuICAvKiogbWVtYmVyICovXG4gIE1FTUJFUiA9IFwibWVtYmVyXCIsXG4gIC8qKiBhZG1pbiAqL1xuICBBRE1JTiA9IFwiYWRtaW5cIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0I3Byb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcjogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlcihvYmoucHJvdmlkZXIpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyI3RmU3RhdGVLZXlcbiAgICovXG4gIHJlYWRvbmx5IHRmU3RhdGVLZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0ciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RmU3RhdGVLZXknOiBvYmoudGZTdGF0ZUtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ291dHB1dHMnOiBvYmoub3V0cHV0cz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZChvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXIob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgdGhlIEdpdEh1YiByZXBvcyBvZiBhbiBvcmdhbml6YXRpb24uXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVxuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeScsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5LkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgdGhlIEdpdEh1YiByZXBvcyBvZiBhbiBvcmdhbml6YXRpb24uXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeSNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeSNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNvcmdcbiAgICovXG4gIHJlYWRvbmx5IG9yZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNyZXBvXG4gICAqL1xuICByZWFkb25seSByZXBvOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25zOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNwYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFnZXM/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjcGVybWlzc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNicmFuY2hQcm90ZWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoUHJvdGVjdGlvbnM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcmcnOiBvYmoub3JnLFxuICAgICdjb250ZXh0JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQob2JqLmNvbnRleHQpLFxuICAgICdmaXJlc3RhcnRyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICdyZXBvJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8ob2JqLnJlcG8pLFxuICAgICdhY3Rpb25zJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMob2JqLmFjdGlvbnMpLFxuICAgICdwYWdlcyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyhvYmoucGFnZXMpLFxuICAgICdwZXJtaXNzaW9ucyc6IG9iai5wZXJtaXNzaW9ucz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zKHkpKSxcbiAgICAnYnJhbmNoUHJvdGVjdGlvbnMnOiBvYmouYnJhbmNoUHJvdGVjdGlvbnM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyh5KSksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iai53cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQjYmFja2VuZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dCNwcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlcjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0KG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JhY2tlbmQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXIob2JqLnByb3ZpZGVyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0ciN0ZWNobm9sb2d5XG4gICAqL1xuICByZWFkb25seSB0ZWNobm9sb2d5OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0ciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RmU3RhdGVLZXknOiBvYmoudGZTdGF0ZUtleSxcbiAgICAndGVjaG5vbG9neSc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neShvYmoudGVjaG5vbG9neSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYWxsb3dNZXJnZUNvbW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dNZXJnZUNvbW1pdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd1NxdWFzaE1lcmdlXG4gICAqL1xuICByZWFkb25seSBhbGxvd1NxdWFzaE1lcmdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2FsbG93UmViYXNlTWVyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93UmViYXNlTWVyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYWxsb3dBdXRvTWVyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QXV0b01lcmdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2RlbGV0ZUJyYW5jaE9uTWVyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJyYW5jaE9uTWVyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYXV0b0luaXRcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9Jbml0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2FyY2hpdmVPbkRlc3Ryb3lcbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdmVPbkRlc3Ryb3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYWxsb3dVcGRhdGVCcmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93VXBkYXRlQnJhbmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2hhc0lzc3Vlc1xuICAgKi9cbiAgcmVhZG9ubHkgaGFzSXNzdWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2hhc1dpa2lcbiAgICovXG4gIHJlYWRvbmx5IGhhc1dpa2k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jcGFnZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VzPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jdmlzaWJpbGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgdmlzaWJpbGl0eTogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwb1Zpc2liaWxpdHk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNkZWZhdWx0QnJhbmNoXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QnJhbmNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNjb2Rlb3duZXJzXG4gICAqL1xuICByZWFkb25seSBjb2Rlb3duZXJzPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8ob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZGVzY3JpcHRpb24nOiBvYmouZGVzY3JpcHRpb24sXG4gICAgJ2FsbG93TWVyZ2VDb21taXQnOiBvYmouYWxsb3dNZXJnZUNvbW1pdCxcbiAgICAnYWxsb3dTcXVhc2hNZXJnZSc6IG9iai5hbGxvd1NxdWFzaE1lcmdlLFxuICAgICdhbGxvd1JlYmFzZU1lcmdlJzogb2JqLmFsbG93UmViYXNlTWVyZ2UsXG4gICAgJ2FsbG93QXV0b01lcmdlJzogb2JqLmFsbG93QXV0b01lcmdlLFxuICAgICdkZWxldGVCcmFuY2hPbk1lcmdlJzogb2JqLmRlbGV0ZUJyYW5jaE9uTWVyZ2UsXG4gICAgJ2F1dG9Jbml0Jzogb2JqLmF1dG9Jbml0LFxuICAgICdhcmNoaXZlT25EZXN0cm95Jzogb2JqLmFyY2hpdmVPbkRlc3Ryb3ksXG4gICAgJ2FsbG93VXBkYXRlQnJhbmNoJzogb2JqLmFsbG93VXBkYXRlQnJhbmNoLFxuICAgICdoYXNJc3N1ZXMnOiBvYmouaGFzSXNzdWVzLFxuICAgICdoYXNXaWtpJzogb2JqLmhhc1dpa2ksXG4gICAgJ3BhZ2VzJzogb2JqLnBhZ2VzLFxuICAgICd2aXNpYmlsaXR5Jzogb2JqLnZpc2liaWxpdHksXG4gICAgJ2RlZmF1bHRCcmFuY2gnOiBvYmouZGVmYXVsdEJyYW5jaCxcbiAgICAnY29kZW93bmVycyc6IG9iai5jb2Rlb3duZXJzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zI29pZGNcbiAgICovXG4gIHJlYWRvbmx5IG9pZGM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnb2lkYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyhvYmoub2lkYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMjY25hbWVcbiAgICovXG4gIHJlYWRvbmx5IGNuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzI3NvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2U7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdjbmFtZSc6IG9iai5jbmFtZSxcbiAgICAnc291cmNlJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlKG9iai5zb3VyY2UpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zI3JvbGVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMjY29sbGFib3JhdG9yXG4gICAqL1xuICByZWFkb25seSBjb2xsYWJvcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JvbGUnOiBvYmoucm9sZSxcbiAgICAnY29sbGFib3JhdG9yJzogb2JqLmNvbGxhYm9yYXRvcixcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI2JyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjc3RhdHVzQ2hlY2tzXG4gICAqL1xuICByZWFkb25seSBzdGF0dXNDaGVja3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNyZXF1aXJlZFJldmlld2Vyc0NvdW50XG4gICAqL1xuICByZWFkb25seSByZXF1aXJlZFJldmlld2Vyc0NvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI3JlcXVpcmVkQ29kZW93bmVyc1Jldmlld2Vyc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRDb2Rlb3duZXJzUmV2aWV3ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNlbmZvcmNlQWRtaW5zXG4gICAqL1xuICByZWFkb25seSBlbmZvcmNlQWRtaW5zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNyZXF1aXJlU2lnbmVkQ29tbWl0c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZVNpZ25lZENvbW1pdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI3JlcXVpcmVDb252ZXJzYXRpb25SZXNvbHV0aW9uXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlQ29udmVyc2F0aW9uUmVzb2x1dGlvbj86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdicmFuY2gnOiBvYmouYnJhbmNoLFxuICAgICdzdGF0dXNDaGVja3MnOiBvYmouc3RhdHVzQ2hlY2tzPy5tYXAoeSA9PiB5KSxcbiAgICAncmVxdWlyZWRSZXZpZXdlcnNDb3VudCc6IG9iai5yZXF1aXJlZFJldmlld2Vyc0NvdW50LFxuICAgICdyZXF1aXJlZENvZGVvd25lcnNSZXZpZXdlcnMnOiBvYmoucmVxdWlyZWRDb2Rlb3duZXJzUmV2aWV3ZXJzLFxuICAgICdlbmZvcmNlQWRtaW5zJzogb2JqLmVuZm9yY2VBZG1pbnMsXG4gICAgJ3JlcXVpcmVTaWduZWRDb21taXRzJzogb2JqLnJlcXVpcmVTaWduZWRDb21taXRzLFxuICAgICdyZXF1aXJlQ29udmVyc2F0aW9uUmVzb2x1dGlvbic6IG9iai5yZXF1aXJlQ29udmVyc2F0aW9uUmVzb2x1dGlvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ291dHB1dHMnOiBvYmoub3V0cHV0cz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZChvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXIob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neSB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5I3N0YWNrXG4gICAqL1xuICByZWFkb25seSBzdGFjaz86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neSN2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neShvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnc3RhY2snOiBvYmouc3RhY2ssXG4gICAgJ3ZlcnNpb24nOiBvYmoudmVyc2lvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG9WaXNpYmlsaXR5XG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG9WaXNpYmlsaXR5IHtcbiAgLyoqIHByaXZhdGUgKi9cbiAgUFJJVkFURSA9IFwicHJpdmF0ZVwiLFxuICAvKiogcHVibGljICovXG4gIFBVQkxJQyA9IFwicHVibGljXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMjdXNlRGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlRGVmYXVsdDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyNpbmNsdWRlQ2xhaW1LZXlzXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQ2xhaW1LZXlzOiBzdHJpbmdbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3VzZURlZmF1bHQnOiBvYmoudXNlRGVmYXVsdCxcbiAgICAnaW5jbHVkZUNsYWltS2V5cyc6IG9iai5pbmNsdWRlQ2xhaW1LZXlzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2Uge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZSNicmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZSNwYXRoXG4gICAqL1xuICByZWFkb25seSBwYXRoPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZShvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYnJhbmNoJzogb2JqLmJyYW5jaCxcbiAgICAncGF0aCc6IG9iai5wYXRoLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZiNuZWVkc1NlY3JldFxuICAgKi9cbiAgcmVhZG9ubHkgbmVlZHNTZWNyZXQ/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ25lZWRzU2VjcmV0Jzogb2JqLm5lZWRzU2VjcmV0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgZmVhdHVyZXMgZm9yIEdpdEh1YiByZXBvcy5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVxuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZScsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgZmVhdHVyZXMgZm9yIEdpdEh1YiByZXBvcy5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZSNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI3R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI29yZ1xuICAgKi9cbiAgcmVhZG9ubHkgb3JnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI3ZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI3JlcG9zaXRvcnlUYXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlUYXJnZXQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICd0eXBlJzogb2JqLnR5cGUsXG4gICAgJ29yZyc6IG9iai5vcmcsXG4gICAgJ2NvbnRleHQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQob2JqLmNvbnRleHQpLFxuICAgICd2ZXJzaW9uJzogb2JqLnZlcnNpb24sXG4gICAgJ3JlcG9zaXRvcnlUYXJnZXQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQob2JqLnJlcG9zaXRvcnlUYXJnZXQpLFxuICAgICdmaWxlcyc6IG9iai5maWxlcz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dCNwcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0KG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIob2JqLnByb3ZpZGVyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWY7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQjYnJhbmNoXG4gICAqL1xuICByZWFkb25seSBicmFuY2g6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZihvYmoucmVmKSxcbiAgICAnYnJhbmNoJzogb2JqLmJyYW5jaCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyNwYXRoXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzI3VzZXJNYW5hZ2VkXG4gICAqL1xuICByZWFkb25seSB1c2VyTWFuYWdlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMjY29udGVudFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncGF0aCc6IG9iai5wYXRoLFxuICAgICd1c2VyTWFuYWdlZCc6IG9iai51c2VyTWFuYWdlZCxcbiAgICAnY29udGVudCc6IG9iai5jb250ZW50LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZiNuZWVkc1NlY3JldFxuICAgKi9cbiAgcmVhZG9ubHkgbmVlZHNTZWNyZXQ6IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnbmVlZHNTZWNyZXQnOiBvYmoubmVlZHNTZWNyZXQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIGJhY2tlbmQgYW5kIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJQcm92aWRlckNvbmZpZy5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyUHJvdmlkZXJDb25maWcuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgYmFja2VuZCBhbmQgcHJvdmlkZXIgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzKG9iajogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyN0eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjY29uZmlnXG4gICAqL1xuICByZWFkb25seSBjb25maWc6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI2lubGluZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjZW52XG4gICAqL1xuICByZWFkb25seSBlbnY/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyNzZWNyZXRzXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyB9O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMob2JqOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndHlwZSc6IG9iai50eXBlLFxuICAgICdzb3VyY2UnOiBvYmouc291cmNlLFxuICAgICd2ZXJzaW9uJzogb2JqLnZlcnNpb24sXG4gICAgJ2NvbmZpZyc6IG9iai5jb25maWcsXG4gICAgJ2lubGluZSc6IG9iai5pbmxpbmUsXG4gICAgJ2Vudic6IG9iai5lbnYsXG4gICAgJ3NlY3JldHMnOiAoKG9iai5zZWNyZXRzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouc2VjcmV0cykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyhpWzFdKSB9KSwge30pKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyNzZWNyZXRSZWZcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldFJlZjogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzKG9iajogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzZWNyZXRSZWYnOiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYob2JqLnNlY3JldFJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmI25hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYob2JqOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnbmFtZXNwYWNlJzogb2JqLm5hbWVzcGFjZSxcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuXG4vKipcbiAqIEEgd29ya3NwYWNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gY29kZVxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVxuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZScsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHdvcmtzcGFjZSB0byBoYW5kbGUgVGVycmFmb3JtIGNvZGVcbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNtb2R1bGVcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjU291cmNlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI3ZhbHVlc1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI3JlZmVyZW5jZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyN3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQob2JqLmNvbnRleHQpLFxuICAgICdmaXJlc3RhcnRyJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ21vZHVsZSc6IG9iai5tb2R1bGUsXG4gICAgJ3NvdXJjZSc6IG9iai5zb3VyY2UsXG4gICAgJ3ZhbHVlcyc6IG9iai52YWx1ZXMsXG4gICAgJ3JlZmVyZW5jZXMnOiBvYmoucmVmZXJlbmNlcz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcyh5KSksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCNwcm92aWRlcnNcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcnMnOiBvYmoucHJvdmlkZXJzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1NvdXJjZVxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1NvdXJjZSB7XG4gIC8qKiBSZW1vdGUgKi9cbiAgUkVNT1RFID0gXCJSZW1vdGVcIixcbiAgLyoqIElubGluZSAqL1xuICBJTkxJTkUgPSBcIklubGluZVwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI291dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ291dHB1dHMnOiBvYmoub3V0cHV0cz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSAqL1xuICBGSVJFU1RBUlRSX1RFUlJBRk9STV9XT1JLU1BBQ0UgPSBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgd29ya3NwYWNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gY29kZVxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4nLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbi5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4uR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSB3b3Jrc3BhY2UgdG8gaGFuZGxlIFRlcnJhZm9ybSBjb2RlXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbiNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI21vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1NvdXJjZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjdmFsdWVzXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI3JlZmVyZW5jZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZj86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyKG9iai5maXJlc3RhcnRyKSxcbiAgICAnbW9kdWxlJzogb2JqLm1vZHVsZSxcbiAgICAnc291cmNlJzogb2JqLnNvdXJjZSxcbiAgICAndmFsdWVzJzogb2JqLnZhbHVlcyxcbiAgICAncmVmZXJlbmNlcyc6IG9iai5yZWZlcmVuY2VzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyh5KSksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iai53cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQjYmFja2VuZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dCNwcm92aWRlcnNcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVycyc6IG9iai5wcm92aWRlcnM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNTb3VyY2VcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjU291cmNlIHtcbiAgLyoqIFJlbW90ZSAqL1xuICBSRU1PVEUgPSBcIlJlbW90ZVwiLFxuICAvKiogSW5saW5lICovXG4gIElOTElORSA9IFwiSW5saW5lXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI291dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdvdXRwdXRzJzogb2JqLm91dHB1dHM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSAqL1xuICBGSVJFU1RBUlRSX1RFUlJBRk9STV9XT1JLU1BBQ0UgPSBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gcmVzdWx0cy5cbiAqXG4gKiBAc2NoZW1hIFRGUmVzdWx0XG4gKi9cbmV4cG9ydCBjbGFzcyBUZlJlc3VsdCBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIlRGUmVzdWx0XCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ1RGUmVzdWx0JyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJURlJlc3VsdFwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBUZlJlc3VsdFByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5UZlJlc3VsdC5HVkssXG4gICAgICAuLi50b0pzb25fVGZSZXN1bHRQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJURlJlc3VsdFwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGZSZXN1bHRQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5UZlJlc3VsdC5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uVGZSZXN1bHQuR1ZLLFxuICAgICAgLi4udG9Kc29uX1RmUmVzdWx0UHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gcmVzdWx0cy5cbiAqXG4gKiBAc2NoZW1hIFRGUmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZSZXN1bHRQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRGUmVzdWx0I21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRGUmVzdWx0I3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBUZlJlc3VsdFNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGZSZXN1bHRQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGZSZXN1bHRQcm9wcyhvYmo6IFRmUmVzdWx0UHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9UZlJlc3VsdFNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZSZXN1bHRTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjI2FjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uPzogVGZSZXN1bHRTcGVjQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRmUmVzdWx0U3BlYyNyZWZlcmVuY2VcbiAgICovXG4gIHJlYWRvbmx5IHJlZmVyZW5jZT86IFRmUmVzdWx0U3BlY1JlZmVyZW5jZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBUZlJlc3VsdFNwZWMjcmVzdWx0XG4gICAqL1xuICByZWFkb25seSByZXN1bHQ/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGZSZXN1bHRTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UZlJlc3VsdFNwZWMob2JqOiBUZlJlc3VsdFNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhY3Rpb24nOiBvYmouYWN0aW9uLFxuICAgICdyZWZlcmVuY2UnOiB0b0pzb25fVGZSZXN1bHRTcGVjUmVmZXJlbmNlKG9iai5yZWZlcmVuY2UpLFxuICAgICdyZXN1bHQnOiBvYmoucmVzdWx0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjQWN0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIFRmUmVzdWx0U3BlY0FjdGlvbiB7XG4gIC8qKiBpbml0ICovXG4gIElOSVQgPSBcImluaXRcIixcbiAgLyoqIHBsYW4gKi9cbiAgUExBTiA9IFwicGxhblwiLFxuICAvKiogYXBwbHkgKi9cbiAgQVBQTFkgPSBcImFwcGx5XCIsXG4gIC8qKiBkZXN0cm95ICovXG4gIERFU1RST1kgPSBcImRlc3Ryb3lcIixcbiAgLyoqIHN5bnRoICovXG4gIFNZTlRIID0gXCJzeW50aFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjUmVmZXJlbmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZSZXN1bHRTcGVjUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjUmVmZXJlbmNlI3JlZktpbmRcbiAgICovXG4gIHJlYWRvbmx5IHJlZktpbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBUZlJlc3VsdFNwZWNSZWZlcmVuY2UjcmVmTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVmTmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RmUmVzdWx0U3BlY1JlZmVyZW5jZScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGZSZXN1bHRTcGVjUmVmZXJlbmNlKG9iajogVGZSZXN1bHRTcGVjUmVmZXJlbmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmS2luZCc6IG9iai5yZWZLaW5kLFxuICAgICdyZWZOYW1lJzogb2JqLnJlZk5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbiJdfQ==
|
|
230100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0YXJ0ci5kZXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbXBvcnRzL2ZpcmVzdGFydHIuZGV2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUJBQXFCO0FBQ3JCLGlDQUF1RTtBQUl2RTs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxpQkFBUztJQXVCbEQ7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQyxFQUFFO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxrQ0FDVixxQkFBcUIsQ0FBQyxHQUFHLEdBQ3pCLEtBQUssRUFDUixDQUFDO0lBQ0wsQ0FBQztJQXpCRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQW9DLEVBQUU7UUFDM0QsdUNBQ0sscUJBQXFCLENBQUMsR0FBRyxHQUN6QixpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsRUFDM0M7SUFDSixDQUFDO0lBZUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWhDLHVDQUNLLHFCQUFxQixDQUFDLEdBQUcsR0FDekIsaUNBQWlDLENBQUMsUUFBUSxDQUFDLEVBQzlDO0lBQ0osQ0FBQzs7QUE5Q0gsc0RBK0NDO0FBOUNDOztHQUVHO0FBQ29CLHlCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsSUFBSSxFQUFFLHVCQUF1QjtDQUM5QixDQUFBO0FBNERIOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLGlDQUFpQyxDQUFDLEdBQTJDO0lBQzNGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDeEIsTUFBTSxFQUFFLGdDQUFnQyxDQUFDLEdBQUcs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O0lBQ2pGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixTQUFTLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxPQUFPO0tBQ3ZCLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFNLENBQUMsS0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCxvRUFRQztBQUNELHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGdlbmVyYXRlZCBieSBjZGs4c1xuaW1wb3J0IHsgQXBpT2JqZWN0LCBBcGlPYmplY3RNZXRhZGF0YSwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgR2l0SHViIGdyb3Vwc1xuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyR2l0aHViR3JvdXAgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViR3JvdXAuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBHaXRIdWIgZ3JvdXBzXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cCNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXAjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFByb3BzKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNvcmdcbiAgICovXG4gIHJlYWRvbmx5IG9yZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMjcHJpdmFjeVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmFjeTogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1ByaXZhY3k7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNwYXJlbnRUZWFtXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRUZWFtPzogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW07XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNtZW1iZXJzXG4gICAqL1xuICByZWFkb25seSBtZW1iZXJzOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnb3JnJzogb2JqLm9yZyxcbiAgICAncHJpdmFjeSc6IG9iai5wcml2YWN5LFxuICAgICdkZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgICAncGFyZW50VGVhbSc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbShvYmoucGFyZW50VGVhbSksXG4gICAgJ21lbWJlcnMnOiBvYmoubWVtYmVycz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzKHkpKSxcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICd3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQcml2YWN5XG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQcml2YWN5IHtcbiAgLyoqIGNsb3NlZCAqL1xuICBDTE9TRUQgPSBcImNsb3NlZFwiLFxuICAvKiogc2VjcmV0ICovXG4gIFNFQ1JFVCA9IFwic2VjcmV0XCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW0jcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbShvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQjcHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyKG9iai5wcm92aWRlciksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0ciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RmU3RhdGVLZXknOiBvYmoudGZTdGF0ZUtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzPzogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdvdXRwdXRzJzogb2JqLm91dHB1dHM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmI25lZWRzU2VjcmV0XG4gICAqL1xuICByZWFkb25seSBuZWVkc1NlY3JldDogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduZWVkc1NlY3JldCc6IG9iai5uZWVkc1NlY3JldCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmI25lZWRzU2VjcmV0XG4gICAqL1xuICByZWFkb25seSBuZWVkc1NlY3JldDogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduZWVkc1NlY3JldCc6IG9iai5uZWVkc1NlY3JldCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlciNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyhvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBHaXRIdWIgbWVtYmVyc2hpcHMgdG8gYSBHaXRIdWIgb3JnYW5pemF0aW9uLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgR2l0SHViIG1lbWJlcnNoaXBzIHRvIGEgR2l0SHViIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYzogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNvcmdcbiAgICovXG4gIHJlYWRvbmx5IG9yZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNyb2xlXG4gICAqL1xuICByZWFkb25seSByb2xlOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNSb2xlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyN3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY/OiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyhvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29yZyc6IG9iai5vcmcsXG4gICAgJ3JvbGUnOiBvYmoucm9sZSxcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyKG9iai5maXJlc3RhcnRyKSxcbiAgICAnd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1JvbGVcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjUm9sZSB7XG4gIC8qKiBtZW1iZXIgKi9cbiAgTUVNQkVSID0gXCJtZW1iZXJcIixcbiAgLyoqIGFkbWluICovXG4gIEFETUlOID0gXCJhZG1pblwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQjcHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kKG9iai5iYWNrZW5kKSxcbiAgICAncHJvdmlkZXInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyKG9iai5wcm92aWRlciksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnb3V0cHV0cyc6IG9iai5vdXRwdXRzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXIjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlcihvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyhvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSB0aGUgR2l0SHViIHJlcG9zIG9mIGFuIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeSBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5JyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeS5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeS5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSB0aGUgR2l0SHViIHJlcG9zIG9mIGFuIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5I21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5I3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI29yZ1xuICAgKi9cbiAgcmVhZG9ubHkgb3JnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2NvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI3JlcG9cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG87XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2FjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbnM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnM7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI3BhZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWdlcz86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNwZXJtaXNzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2JyYW5jaFByb3RlY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBicmFuY2hQcm90ZWN0aW9uczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnNbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29yZyc6IG9iai5vcmcsXG4gICAgJ2NvbnRleHQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ3JlcG8nOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyhvYmoucmVwbyksXG4gICAgJ2FjdGlvbnMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyhvYmouYWN0aW9ucyksXG4gICAgJ3BhZ2VzJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzKG9iai5wYWdlcyksXG4gICAgJ3Blcm1pc3Npb25zJzogb2JqLnBlcm1pc3Npb25zPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMoeSkpLFxuICAgICdicmFuY2hQcm90ZWN0aW9ucyc6IG9iai5icmFuY2hQcm90ZWN0aW9ucz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zKHkpKSxcbiAgICAnd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0I3Byb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlcihvYmoucHJvdmlkZXIpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyI3RmU3RhdGVLZXlcbiAgICovXG4gIHJlYWRvbmx5IHRmU3RhdGVLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyI3RlY2hub2xvZ3lcbiAgICovXG4gIHJlYWRvbmx5IHRlY2hub2xvZ3k6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICAgICd0ZWNobm9sb2d5JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5KG9iai50ZWNobm9sb2d5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd01lcmdlQ29tbWl0XG4gICAqL1xuICByZWFkb25seSBhbGxvd01lcmdlQ29tbWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2FsbG93U3F1YXNoTWVyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U3F1YXNoTWVyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYWxsb3dSZWJhc2VNZXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dSZWJhc2VNZXJnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd0F1dG9NZXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBdXRvTWVyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jZGVsZXRlQnJhbmNoT25NZXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnJhbmNoT25NZXJnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhdXRvSW5pdFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0luaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYXJjaGl2ZU9uRGVzdHJveVxuICAgKi9cbiAgcmVhZG9ubHkgYXJjaGl2ZU9uRGVzdHJveT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd1VwZGF0ZUJyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVcGRhdGVCcmFuY2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jaGFzSXNzdWVzXG4gICAqL1xuICByZWFkb25seSBoYXNJc3N1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jaGFzV2lraVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzV2lraT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNwYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFnZXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyN2aXNpYmlsaXR5XG4gICAqL1xuICByZWFkb25seSB2aXNpYmlsaXR5OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvVmlzaWJpbGl0eTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2RlZmF1bHRCcmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCcmFuY2g6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2NvZGVvd25lcnNcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVvd25lcnM/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdkZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgICAnYWxsb3dNZXJnZUNvbW1pdCc6IG9iai5hbGxvd01lcmdlQ29tbWl0LFxuICAgICdhbGxvd1NxdWFzaE1lcmdlJzogb2JqLmFsbG93U3F1YXNoTWVyZ2UsXG4gICAgJ2FsbG93UmViYXNlTWVyZ2UnOiBvYmouYWxsb3dSZWJhc2VNZXJnZSxcbiAgICAnYWxsb3dBdXRvTWVyZ2UnOiBvYmouYWxsb3dBdXRvTWVyZ2UsXG4gICAgJ2RlbGV0ZUJyYW5jaE9uTWVyZ2UnOiBvYmouZGVsZXRlQnJhbmNoT25NZXJnZSxcbiAgICAnYXV0b0luaXQnOiBvYmouYXV0b0luaXQsXG4gICAgJ2FyY2hpdmVPbkRlc3Ryb3knOiBvYmouYXJjaGl2ZU9uRGVzdHJveSxcbiAgICAnYWxsb3dVcGRhdGVCcmFuY2gnOiBvYmouYWxsb3dVcGRhdGVCcmFuY2gsXG4gICAgJ2hhc0lzc3Vlcyc6IG9iai5oYXNJc3N1ZXMsXG4gICAgJ2hhc1dpa2knOiBvYmouaGFzV2lraSxcbiAgICAncGFnZXMnOiBvYmoucGFnZXMsXG4gICAgJ3Zpc2liaWxpdHknOiBvYmoudmlzaWJpbGl0eSxcbiAgICAnZGVmYXVsdEJyYW5jaCc6IG9iai5kZWZhdWx0QnJhbmNoLFxuICAgICdjb2Rlb3duZXJzJzogb2JqLmNvZGVvd25lcnMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMjb2lkY1xuICAgKi9cbiAgcmVhZG9ubHkgb2lkYzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvaWRjJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjKG9iai5vaWRjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyNjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY25hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMjc291cmNlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2NuYW1lJzogb2JqLmNuYW1lLFxuICAgICdzb3VyY2UnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2Uob2JqLnNvdXJjZSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMjcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyNjb2xsYWJvcmF0b3JcbiAgICovXG4gIHJlYWRvbmx5IGNvbGxhYm9yYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZj86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncm9sZSc6IG9iai5yb2xlLFxuICAgICdjb2xsYWJvcmF0b3InOiBvYmouY29sbGFib3JhdG9yLFxuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjYnJhbmNoXG4gICAqL1xuICByZWFkb25seSBicmFuY2g6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNzdGF0dXNDaGVja3NcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1c0NoZWNrcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI3JlcXVpcmVkUmV2aWV3ZXJzQ291bnRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkUmV2aWV3ZXJzQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjcmVxdWlyZWRDb2Rlb3duZXJzUmV2aWV3ZXJzXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlZENvZGVvd25lcnNSZXZpZXdlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI2VuZm9yY2VBZG1pbnNcbiAgICovXG4gIHJlYWRvbmx5IGVuZm9yY2VBZG1pbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI3JlcXVpcmVTaWduZWRDb21taXRzXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlU2lnbmVkQ29tbWl0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjcmVxdWlyZUNvbnZlcnNhdGlvblJlc29sdXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVDb252ZXJzYXRpb25SZXNvbHV0aW9uPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JyYW5jaCc6IG9iai5icmFuY2gsXG4gICAgJ3N0YXR1c0NoZWNrcyc6IG9iai5zdGF0dXNDaGVja3M/Lm1hcCh5ID0+IHkpLFxuICAgICdyZXF1aXJlZFJldmlld2Vyc0NvdW50Jzogb2JqLnJlcXVpcmVkUmV2aWV3ZXJzQ291bnQsXG4gICAgJ3JlcXVpcmVkQ29kZW93bmVyc1Jldmlld2Vycyc6IG9iai5yZXF1aXJlZENvZGVvd25lcnNSZXZpZXdlcnMsXG4gICAgJ2VuZm9yY2VBZG1pbnMnOiBvYmouZW5mb3JjZUFkbWlucyxcbiAgICAncmVxdWlyZVNpZ25lZENvbW1pdHMnOiBvYmoucmVxdWlyZVNpZ25lZENvbW1pdHMsXG4gICAgJ3JlcXVpcmVDb252ZXJzYXRpb25SZXNvbHV0aW9uJzogb2JqLnJlcXVpcmVDb252ZXJzYXRpb25SZXNvbHV0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnb3V0cHV0cyc6IG9iai5vdXRwdXRzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXIjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlcihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kjc3RhY2tcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5I3ZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3knIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5KG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzdGFjayc6IG9iai5zdGFjayxcbiAgICAndmVyc2lvbic6IG9iai52ZXJzaW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwb1Zpc2liaWxpdHlcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwb1Zpc2liaWxpdHkge1xuICAvKiogcHJpdmF0ZSAqL1xuICBQUklWQVRFID0gXCJwcml2YXRlXCIsXG4gIC8qKiBwdWJsaWMgKi9cbiAgUFVCTElDID0gXCJwdWJsaWNcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyN1c2VEZWZhdWx0XG4gICAqL1xuICByZWFkb25seSB1c2VEZWZhdWx0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjI2luY2x1ZGVDbGFpbUtleXNcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDbGFpbUtleXM6IHN0cmluZ1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndXNlRGVmYXVsdCc6IG9iai51c2VEZWZhdWx0LFxuICAgICdpbmNsdWRlQ2xhaW1LZXlzJzogb2JqLmluY2x1ZGVDbGFpbUtleXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZSB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlI2JyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlI3BhdGhcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2UnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2UgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdicmFuY2gnOiBvYmouYnJhbmNoLFxuICAgICdwYXRoJzogb2JqLnBhdGgsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZD86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmI25lZWRzU2VjcmV0XG4gICAqL1xuICByZWFkb25seSBuZWVkc1NlY3JldD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnbmVlZHNTZWNyZXQnOiBvYmoubmVlZHNTZWNyZXQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBmZWF0dXJlcyBmb3IgR2l0SHViIHJlcG9zLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZS5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZS5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBmZWF0dXJlcyBmb3IgR2l0SHViIHJlcG9zLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUjbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjZmlyZXN0YXJ0clxuICAgKi9cbiAgcmVhZG9ubHkgZmlyZXN0YXJ0cj86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjb3JnXG4gICAqL1xuICByZWFkb25seSBvcmc6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI2NvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjcmVwb3NpdG9yeVRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeVRhcmdldDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyNmaWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ3R5cGUnOiBvYmoudHlwZSxcbiAgICAnb3JnJzogb2JqLm9yZyxcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ3ZlcnNpb24nOiBvYmoudmVyc2lvbixcbiAgICAncmVwb3NpdG9yeVRhcmdldCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldChvYmoucmVwb3NpdG9yeVRhcmdldCksXG4gICAgJ2ZpbGVzJzogb2JqLmZpbGVzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQjYmFja2VuZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0I3Byb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlcjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JhY2tlbmQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kKG9iai5iYWNrZW5kKSxcbiAgICAncHJvdmlkZXInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlcihvYmoucHJvdmlkZXIpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0I3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCNicmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaDogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldChvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmKG9iai5yZWYpLFxuICAgICdicmFuY2gnOiBvYmouYnJhbmNoLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzI3BhdGhcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMjdXNlck1hbmFnZWRcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJNYW5hZ2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyNjb250ZW50XG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdwYXRoJzogb2JqLnBhdGgsXG4gICAgJ3VzZXJNYW5hZ2VkJzogb2JqLnVzZXJNYW5hZ2VkLFxuICAgICdjb250ZW50Jzogb2JqLmNvbnRlbnQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZChvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlcicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlcihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmI25lZWRzU2VjcmV0XG4gICAqL1xuICByZWFkb25seSBuZWVkc1NlY3JldDogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduZWVkc1NlY3JldCc6IG9iai5uZWVkc1NlY3JldCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgYmFja2VuZCBhbmQgcHJvdmlkZXIgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1xuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZycsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyUHJvdmlkZXJDb25maWcuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJQcm92aWRlckNvbmZpZy5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBiYWNrZW5kIGFuZCBwcm92aWRlciBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcjbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYzogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMob2JqOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI3R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI3NvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyN2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyNjb25maWdcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjaW5saW5lXG4gICAqL1xuICByZWFkb25seSBpbmxpbmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyNlbnZcbiAgICovXG4gIHJlYWRvbmx5IGVudj86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI3NlY3JldHNcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzIH07XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyhvYmo6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0eXBlJzogb2JqLnR5cGUsXG4gICAgJ3NvdXJjZSc6IG9iai5zb3VyY2UsXG4gICAgJ3ZlcnNpb24nOiBvYmoudmVyc2lvbixcbiAgICAnY29uZmlnJzogb2JqLmNvbmZpZyxcbiAgICAnaW5saW5lJzogb2JqLmlubGluZSxcbiAgICAnZW52Jzogb2JqLmVudixcbiAgICAnc2VjcmV0cyc6ICgob2JqLnNlY3JldHMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5zZWNyZXRzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzKGlbMV0pIH0pLCB7fSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzI3NlY3JldFJlZlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0UmVmOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMob2JqOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3NlY3JldFJlZic6IHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZihvYmouc2VjcmV0UmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYjbmFtZXNwYWNlXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZiNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZihvYmo6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduYW1lc3BhY2UnOiBvYmoubmFtZXNwYWNlLFxuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG5cbi8qKlxuICogQSB3b3Jrc3BhY2UgdG8gaGFuZGxlIFRlcnJhZm9ybSBjb2RlXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgd29ya3NwYWNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gY29kZVxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UjbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI2NvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMjZmlyZXN0YXJ0clxuICAgKi9cbiAgcmVhZG9ubHkgZmlyZXN0YXJ0cjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI21vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI3NvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNTb3VyY2U7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMjdmFsdWVzXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMjcmVmZXJlbmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVmZXJlbmNlcz86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZj86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdjb250ZXh0JzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyKG9iai5maXJlc3RhcnRyKSxcbiAgICAnbW9kdWxlJzogb2JqLm1vZHVsZSxcbiAgICAnc291cmNlJzogb2JqLnNvdXJjZSxcbiAgICAndmFsdWVzJzogb2JqLnZhbHVlcyxcbiAgICAncmVmZXJlbmNlcyc6IG9iai5yZWZlcmVuY2VzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzKHkpKSxcbiAgICAnd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmoud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0I3Byb3ZpZGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXJzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JhY2tlbmQnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVycyc6IG9iai5wcm92aWRlcnM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyI3RmU3RhdGVLZXlcbiAgICovXG4gIHJlYWRvbmx5IHRmU3RhdGVLZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0ciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RmU3RhdGVLZXknOiBvYmoudGZTdGF0ZUtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjU291cmNlXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjU291cmNlIHtcbiAgLyoqIFJlbW90ZSAqL1xuICBSRU1PVEUgPSBcIlJlbW90ZVwiLFxuICAvKiogSW5saW5lICovXG4gIElOTElORSA9IFwiSW5saW5lXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXMjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXMjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnb3V0cHV0cyc6IG9iai5vdXRwdXRzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVycyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVycyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZiNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlICovXG4gIEZJUkVTVEFSVFJfVEVSUkFGT1JNX1dPUktTUEFDRSA9IFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG5cbi8qKlxuICogQSB3b3Jrc3BhY2UgdG8gaGFuZGxlIFRlcnJhZm9ybSBjb2RlXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblxuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4gZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbicsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbi5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4uR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHdvcmtzcGFjZSB0byBoYW5kbGUgVGVycmFmb3JtIGNvZGVcbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4jc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjZmlyZXN0YXJ0clxuICAgKi9cbiAgcmVhZG9ubHkgZmlyZXN0YXJ0cjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjbW9kdWxlXG4gICAqL1xuICByZWFkb25seSBtb2R1bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI3NvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjU291cmNlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyN2YWx1ZXNcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlcz86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjcmVmZXJlbmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVmZXJlbmNlcz86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdjb250ZXh0JzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQob2JqLmNvbnRleHQpLFxuICAgICdmaXJlc3RhcnRyJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICdtb2R1bGUnOiBvYmoubW9kdWxlLFxuICAgICdzb3VyY2UnOiBvYmouc291cmNlLFxuICAgICd2YWx1ZXMnOiBvYmoudmFsdWVzLFxuICAgICdyZWZlcmVuY2VzJzogb2JqLnJlZmVyZW5jZXM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzKHkpKSxcbiAgICAnd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0I3Byb3ZpZGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXJzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kKG9iai5iYWNrZW5kKSxcbiAgICAncHJvdmlkZXJzJzogb2JqLnByb3ZpZGVycz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyI3RmU3RhdGVLZXlcbiAgICovXG4gIHJlYWRvbmx5IHRmU3RhdGVLZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0ciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RmU3RhdGVLZXknOiBvYmoudGZTdGF0ZUtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1NvdXJjZVxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNTb3VyY2Uge1xuICAvKiogUmVtb3RlICovXG4gIFJFTU9URSA9IFwiUmVtb3RlXCIsXG4gIC8qKiBJbmxpbmUgKi9cbiAgSU5MSU5FID0gXCJJbmxpbmVcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ291dHB1dHMnOiBvYmoub3V0cHV0cz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZChvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZiNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlICovXG4gIEZJUkVTVEFSVFJfVEVSUkFGT1JNX1dPUktTUEFDRSA9IFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIFRlcnJhZm9ybSByZXN1bHRzLlxuICpcbiAqIEBzY2hlbWEgVEZSZXN1bHRcbiAqL1xuZXhwb3J0IGNsYXNzIFRmUmVzdWx0IGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiVEZSZXN1bHRcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnVEZSZXN1bHQnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIlRGUmVzdWx0XCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IFRmUmVzdWx0UHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlRmUmVzdWx0LkdWSyxcbiAgICAgIC4uLnRvSnNvbl9UZlJlc3VsdFByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIlRGUmVzdWx0XCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUZlJlc3VsdFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLlRmUmVzdWx0LkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5UZlJlc3VsdC5HVkssXG4gICAgICAuLi50b0pzb25fVGZSZXN1bHRQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIFRlcnJhZm9ybSByZXN1bHRzLlxuICpcbiAqIEBzY2hlbWEgVEZSZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZlJlc3VsdFByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVEZSZXN1bHQjbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVEZSZXN1bHQjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IFRmUmVzdWx0U3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUZlJlc3VsdFByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UZlJlc3VsdFByb3BzKG9iajogVGZSZXN1bHRQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX1RmUmVzdWx0U3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBUZlJlc3VsdFNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZlJlc3VsdFNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBUZlJlc3VsdFNwZWMjYWN0aW9uXG4gICAqL1xuICByZWFkb25seSBhY3Rpb24/OiBUZlJlc3VsdFNwZWNBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjI3JlZmVyZW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVmZXJlbmNlPzogVGZSZXN1bHRTcGVjUmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRmUmVzdWx0U3BlYyNyZXN1bHRcbiAgICovXG4gIHJlYWRvbmx5IHJlc3VsdD86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUZlJlc3VsdFNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RmUmVzdWx0U3BlYyhvYmo6IFRmUmVzdWx0U3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2FjdGlvbic6IG9iai5hY3Rpb24sXG4gICAgJ3JlZmVyZW5jZSc6IHRvSnNvbl9UZlJlc3VsdFNwZWNSZWZlcmVuY2Uob2JqLnJlZmVyZW5jZSksXG4gICAgJ3Jlc3VsdCc6IG9iai5yZXN1bHQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBUZlJlc3VsdFNwZWNBY3Rpb25cbiAqL1xuZXhwb3J0IGVudW0gVGZSZXN1bHRTcGVjQWN0aW9uIHtcbiAgLyoqIGluaXQgKi9cbiAgSU5JVCA9IFwiaW5pdFwiLFxuICAvKiogcGxhbiAqL1xuICBQTEFOID0gXCJwbGFuXCIsXG4gIC8qKiBhcHBseSAqL1xuICBBUFBMWSA9IFwiYXBwbHlcIixcbiAgLyoqIGRlc3Ryb3kgKi9cbiAgREVTVFJPWSA9IFwiZGVzdHJveVwiLFxuICAvKiogc3ludGggKi9cbiAgU1lOVEggPSBcInN5bnRoXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBUZlJlc3VsdFNwZWNSZWZlcmVuY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZlJlc3VsdFNwZWNSZWZlcmVuY2Uge1xuICAvKipcbiAgICogQHNjaGVtYSBUZlJlc3VsdFNwZWNSZWZlcmVuY2UjcmVmS2luZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVmS2luZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRmUmVzdWx0U3BlY1JlZmVyZW5jZSNyZWZOYW1lXG4gICAqL1xuICByZWFkb25seSByZWZOYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGZSZXN1bHRTcGVjUmVmZXJlbmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UZlJlc3VsdFNwZWNSZWZlcmVuY2Uob2JqOiBUZlJlc3VsdFNwZWNSZWZlcmVuY2UgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWZLaW5kJzogb2JqLnJlZktpbmQsXG4gICAgJ3JlZk5hbWUnOiBvYmoucmVmTmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuIl19
|
|
230067
230101
|
|
|
230068
230102
|
/***/ }),
|
|
230069
230103
|
|
|
@@ -230097,18 +230131,19 @@ Object.defineProperty(exports, "Initializer", ({ enumerable: true, get: function
|
|
|
230097
230131
|
const comparer_1 = __nccwpck_require__(46973);
|
|
230098
230132
|
const config_1 = __nccwpck_require__(56600);
|
|
230099
230133
|
const initializers_1 = __nccwpck_require__(39187);
|
|
230100
|
-
const renderer_1 = __nccwpck_require__(
|
|
230134
|
+
const renderer_1 = __nccwpck_require__(68926);
|
|
230101
230135
|
const cdk8s_1 = __nccwpck_require__(77228);
|
|
230102
230136
|
var config_2 = __nccwpck_require__(56600);
|
|
230103
230137
|
Object.defineProperty(exports, "AllowedProviders", ({ enumerable: true, get: function () { return config_2.AllowedProviders; } }));
|
|
230104
230138
|
Object.defineProperty(exports, "configureProvider", ({ enumerable: true, get: function () { return config_2.configureProvider; } }));
|
|
230105
230139
|
const references_1 = __nccwpck_require__(14461);
|
|
230106
230140
|
const normalizers_1 = __nccwpck_require__(24171);
|
|
230107
|
-
const loader_1 = __nccwpck_require__(
|
|
230141
|
+
const loader_1 = __nccwpck_require__(63530);
|
|
230108
230142
|
const renderer_2 = __nccwpck_require__(91276);
|
|
230109
230143
|
const tfworkspace_1 = __nccwpck_require__(99986);
|
|
230144
|
+
const import_renderer_1 = __nccwpck_require__(14297);
|
|
230110
230145
|
exports["default"] = {
|
|
230111
|
-
renderFromImports:
|
|
230146
|
+
renderFromImports: import_renderer_1.renderFromImports,
|
|
230112
230147
|
render: renderer_1.render,
|
|
230113
230148
|
setPath: config_1.setPath,
|
|
230114
230149
|
INITIALIZERS: initializers_1.INITIALIZERS,
|
|
@@ -230119,8 +230154,6 @@ exports["default"] = {
|
|
|
230119
230154
|
isCatalogEntity: references_1.isCatalogEntity,
|
|
230120
230155
|
loadCRs: loader_1.loadCRs,
|
|
230121
230156
|
renderTfWorkspace: renderer_2.renderTfWorkspace,
|
|
230122
|
-
renderWorkspacePlans: renderer_1.renderWorkspacePlans,
|
|
230123
|
-
addLastStateAndLastClaimAnnotations: renderer_1.addLastStateAndLastClaimAnnotations,
|
|
230124
230157
|
normalizeModuleContent: normalizers_1.normalizeModuleContent,
|
|
230125
230158
|
validatek8sLimits: tfworkspace_1.validatek8sLimits,
|
|
230126
230159
|
};
|
|
@@ -230163,7 +230196,7 @@ async function runRenderer(globalsPath, initializersPath, claimsPath, crsPath, c
|
|
|
230163
230196
|
firestartrApp.synth();
|
|
230164
230197
|
}
|
|
230165
230198
|
exports.runRenderer = runRenderer;
|
|
230166
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
230199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBbUQ7QUFBMUMscUdBQUEsYUFBYSxPQUFBO0FBQ3RCLHdFQUFrRjtBQUF6RSwrSEFBQSwyQkFBMkIsT0FBQTtBQUNwQyxnREFBMEQ7QUFBakQsdUdBQUEsZUFBZSxPQUFBO0FBQ3hCLG9EQUE4RDtBQUFyRCwyR0FBQSxpQkFBaUIsT0FBQTtBQUMxQiwrQ0FBd0Q7QUFBL0Msc0dBQUEsY0FBYyxPQUFBO0FBQ3ZCLGdEQUFzRDtBQUE3Qyx1R0FBQSxhQUFhLE9BQUE7QUFDdEIsMERBQWdFO0FBQXZELGlIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHdEQUFrRTtBQUF6RCwrR0FBQSxtQkFBbUIsT0FBQTtBQUM1QixzRkFBc0Y7QUFBN0UscUlBQUEseUJBQXlCLE9BQUE7QUFDbEMsZ0RBQTRFO0FBQW5FLG1HQUFBLGtCQUFrQixPQUFlO0FBQzFDLDZDQUE2QztBQUM3Qyx5Q0FBaUg7QUFDakgscURBQTZFO0FBQzdFLHNEQUFpRDtBQUNqRCxpQ0FBNEM7QUFDNUMsdUNBQW1FO0FBQTFELDBHQUFBLGdCQUFnQixPQUFBO0FBQUUsMkdBQUEsaUJBQWlCLE9BQUE7QUFDNUMsNkRBQStEO0FBQy9ELG1EQUF3RTtBQUN4RSxnREFBOEM7QUFDOUMsaUVBQXVFO0FBQ3ZFLCtEQUFrRTtBQUNsRSxvRUFBbUU7QUFHbkUsa0JBQWU7SUFFYixpQkFBaUIsRUFBakIsbUNBQWlCO0lBRWpCLE1BQU0sRUFBTixpQkFBTTtJQUVOLE9BQU8sRUFBUCxnQkFBTztJQUVQLFlBQVksRUFBWiwyQkFBWTtJQUVaLHlCQUF5QixFQUF6Qix3Q0FBeUI7SUFFekIsV0FBVyxFQUFYLHlCQUFXO0lBRVgsZ0JBQWdCLEVBQWhCLHlCQUFnQjtJQUVoQixXQUFXLEVBQVgsc0JBQVc7SUFFWCxlQUFlLEVBQWYsNEJBQWU7SUFFZixPQUFPLEVBQVAsZ0JBQU87SUFFUCxpQkFBaUIsRUFBakIsNEJBQWlCO0lBRWpCLHNCQUFzQixFQUF0QixvQ0FBc0I7SUFFdEIsaUJBQWlCLEVBQWpCLCtCQUFpQjtDQUVsQixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUMvQixXQUFtQixFQUNuQixnQkFBd0IsRUFDeEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLGNBQXNCLEVBQ3RCLGdCQUF3QixFQUN4QixXQUFtQixFQUNuQixjQUF1QixFQUN2QixRQUEwQixFQUMxQixnQkFBMEIsRUFBRTtJQUc1QixJQUFBLDBCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzNCLElBQUEsZ0JBQU8sRUFBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUN6QyxJQUFBLGdCQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLElBQUEsZ0JBQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0IsSUFBQSxnQkFBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM3QixJQUFBLGdCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDekMsSUFBQSwwQkFBaUIsRUFBQyxjQUFjLENBQUMsQ0FBQTtJQUNqQyxJQUFBLHlCQUFnQixFQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRS9CLE1BQU0sVUFBVSxHQUFHLElBQUksV0FBRyxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixjQUFjLEVBQUUsc0JBQWMsQ0FBQyxpQkFBaUI7S0FDakQsQ0FBQyxDQUFBO0lBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxXQUFHLENBQUM7UUFDNUIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixjQUFjLEVBQUUsc0JBQWMsQ0FBQyxpQkFBaUI7S0FDakQsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFBLGlCQUFNLEVBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXhDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNsQixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUE7QUFDdkIsQ0FBQztBQXRDRCxrQ0FzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBHbG9iYWxTZWN0aW9uIH0gZnJvbSBcIi4vc3JjL2dsb2JhbHMvYmFzZVwiO1xuZXhwb3J0IHsgQnJhbmNoU3RyYXRlZ2llc0luaXRpYWxpemVyIH0gZnJvbSBcIi4vc3JjL2luaXRpYWxpemVycy9icmFuY2hTdHJhdGVnaWVzXCI7XG5leHBvcnQgeyBVVUlESW5pdGlhbGl6ZXIgfSBmcm9tIFwiLi9zcmMvaW5pdGlhbGl6ZXJzL3V1aWRcIjtcbmV4cG9ydCB7IEltcG9ydEluaXRpYWxpemVyIH0gZnJvbSBcIi4vc3JjL2luaXRpYWxpemVycy9pbXBvcnRcIjtcbmV4cG9ydCB7IE5hbWVOb3JtYWxpemVyIH0gZnJvbSBcIi4vc3JjL25vcm1hbGl6ZXJzL25hbWVcIjtcbmV4cG9ydCB7IEdsb2JhbERlZmF1bHQgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMvZ2xvYmFsXCI7XG5leHBvcnQgeyBJbml0aWFsaXplckRlZmF1bHQgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMvaW5pdGlhbGl6ZXJcIjtcbmV4cG9ydCB7IEluaXRpYWxpemVyQ2xhaW1SZWYgfSBmcm9tIFwiLi9zcmMvaW5pdGlhbGl6ZXJzL2NsYWltUmVmXCI7XG5leHBvcnQgeyBHaXRodWJSZXBvc2l0b3J5T3ZlcnJpZGVyIH0gZnJvbSBcIi4vc3JjL292ZXJyaWRlcnMvZ2l0aHViUmVwb3NpdG9yeU92ZXJyaWRlXCI7XG5leHBvcnQgeyBJbml0aWFsaXplclBhdGNoZXMgYXMgSW5pdGlhbGl6ZXIgfSBmcm9tIFwiLi9zcmMvaW5pdGlhbGl6ZXJzL2Jhc2VcIjtcbmltcG9ydCB7IHJ1bkNvbXBhcmVyIH0gZnJvbSBcIi4vc3JjL2NvbXBhcmVyXCI7XG5pbXBvcnQgeyBBbGxvd2VkUHJvdmlkZXJzLCBjb25maWd1cmVQcm92aWRlciwgc2V0UGF0aCwgc2V0UmVuYW1lc0VuYWJsZWQsIHNldEV4Y2x1ZGVkUGF0aHMgfSBmcm9tIFwiLi9zcmMvY29uZmlnXCI7XG5pbXBvcnQgeyBJTklUSUFMSVpFUlMsIElOSVRJQUxJWkVSU19CWV9GSUxFX05BTUUgfSBmcm9tIFwiLi9zcmMvaW5pdGlhbGl6ZXJzXCI7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9zcmMvcmVuZGVyZXIvcmVuZGVyZXJcIjtcbmltcG9ydCB7IEFwcCwgWWFtbE91dHB1dFR5cGUgfSBmcm9tIFwiY2RrOHNcIjtcbmV4cG9ydCB7IEFsbG93ZWRQcm92aWRlcnMsIGNvbmZpZ3VyZVByb3ZpZGVyIH0gZnJvbSBcIi4vc3JjL2NvbmZpZ1wiO1xuaW1wb3J0IHsgaXNDYXRhbG9nRW50aXR5IH0gZnJvbSBcIi4vc3JjL3ZhbGlkYXRpb25zL3JlZmVyZW5jZXNcIjtcbmltcG9ydCB7IE5PUk1BTElaRVJTLCBub3JtYWxpemVNb2R1bGVDb250ZW50IH0gZnJvbSBcIi4vc3JjL25vcm1hbGl6ZXJzXCI7XG5pbXBvcnQgeyBsb2FkQ1JzIH0gZnJvbSBcIi4vc3JjL2xvYWRlci9sb2FkZXJcIjtcbmltcG9ydCB7IHJlbmRlclRmV29ya3NwYWNlIH0gZnJvbSBcIi4vc3JjL2NsYWltcy90ZndvcmtzcGFjZXMvcmVuZGVyZXJcIjtcbmltcG9ydCB7IHZhbGlkYXRlazhzTGltaXRzIH0gZnJvbSBcIi4vc3JjL25vcm1hbGl6ZXJzL3Rmd29ya3NwYWNlXCI7XG5pbXBvcnQgeyByZW5kZXJGcm9tSW1wb3J0cyB9IGZyb20gXCIuL3NyYy9yZW5kZXJlci9pbXBvcnQtcmVuZGVyZXJcIjtcbmV4cG9ydCB7IFJlbmRlckNsYWltcyB9IGZyb20gXCIuL3NyYy9yZW5kZXJlci90eXBlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cbiAgcmVuZGVyRnJvbUltcG9ydHMsXG5cbiAgcmVuZGVyLFxuXG4gIHNldFBhdGgsXG5cbiAgSU5JVElBTElaRVJTLFxuXG4gIElOSVRJQUxJWkVSU19CWV9GSUxFX05BTUUsXG5cbiAgTk9STUFMSVpFUlMsXG5cbiAgQWxsb3dlZFByb3ZpZGVycyxcblxuICBydW5Db21wYXJlcixcblxuICBpc0NhdGFsb2dFbnRpdHksXG5cbiAgbG9hZENScyxcblxuICByZW5kZXJUZldvcmtzcGFjZSxcblxuICBub3JtYWxpemVNb2R1bGVDb250ZW50LFxuXG4gIHZhbGlkYXRlazhzTGltaXRzLFxuXG59XG5cbi8qXG4gKiBNYWluIGZ1bmN0aW9uIG9mIHRoZSBtb2R1bGUuIFJlbmRlcnMgY2xhaW0gZmlsZXMgaW50byBjdXN0b20gcmVzb3VyY2VzLFxuICogYW5kIHVwbG9hZHMgdGhlbSB0byBhIEt1YmVybmV0ZXMgY2x1c3Rlci5cbiAqXG4gKiBJbnB1dDpcbiAqIC0gZ2xvYmFsc1BhdGg6IHN0cmluZywgYWJzb2x1dGUgcGF0aCB0byB0aGUgZ2xvYmFsIGZpbGVzIGZvbGRlclxuICogLSBpbml0aWFsaXplcnNQYXRoOiBzdHJpbmcsIGFic29sdXRlIHBhdGggdG8gdGhlIGluaXRpYWxpemVycyBmaWxlcyBmb2xkZXJcbiAqIC0gY2xhaW1zUGF0aDogc3RyaW5nLCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBjbGFpbXMgZmlsZXMgZm9sZGVyXG4gKiAtIGNyc1BhdGg6IHN0cmluZywgYWJzb2x1dGUgcGF0aCB0byB0aGUgY3JzIGZpbGVzIGZvbGRlclxuICogLSBvdXRwdXREaXI6IHN0cmluZywgYWJzb2x1dGUgcGF0aCB0byB0aGUgb3V0cHV0IGZvbGRlciB3aGVyZSB0aGUgcmVuZGVyZWRcbiAqICAgY3VzdG9tIHJlc291cmNlIGZpbGVzIHdpbGwgYmUgcHV0XG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vdGhpbmcuXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUmVuZGVyZXIoXG4gIGdsb2JhbHNQYXRoOiBzdHJpbmcsXG4gIGluaXRpYWxpemVyc1BhdGg6IHN0cmluZyxcbiAgY2xhaW1zUGF0aDogc3RyaW5nLFxuICBjcnNQYXRoOiBzdHJpbmcsXG4gIGNsYWltc0RlZmF1bHRzOiBzdHJpbmcsXG4gIG91dHB1dENhdGFsb2dEaXI6IHN0cmluZyxcbiAgb3V0cHV0Q3JEaXI6IHN0cmluZyxcbiAgcmVuYW1lc0VuYWJsZWQ6IGJvb2xlYW4sXG4gIHByb3ZpZGVyOiBBbGxvd2VkUHJvdmlkZXJzLFxuICBleGNsdWRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdLFxuKSB7XG5cbiAgY29uZmlndXJlUHJvdmlkZXIocHJvdmlkZXIpXG4gIHNldFBhdGgoXCJpbml0aWFsaXplcnNcIiwgaW5pdGlhbGl6ZXJzUGF0aClcbiAgc2V0UGF0aChcImNyc1wiLCBjcnNQYXRoKVxuICBzZXRQYXRoKFwiZ2xvYmFsc1wiLCBnbG9iYWxzUGF0aClcbiAgc2V0UGF0aChcImNsYWltc1wiLCBjbGFpbXNQYXRoKVxuICBzZXRQYXRoKFwiY2xhaW1zRGVmYXVsdHNcIiwgY2xhaW1zRGVmYXVsdHMpXG4gIHNldFJlbmFtZXNFbmFibGVkKHJlbmFtZXNFbmFibGVkKVxuICBzZXRFeGNsdWRlZFBhdGhzKGV4Y2x1ZGVkUGF0aHMpXG5cbiAgY29uc3QgY2F0YWxvZ0FwcCA9IG5ldyBBcHAoe1xuICAgIG91dGRpcjogb3V0cHV0Q2F0YWxvZ0RpcixcbiAgICBvdXRwdXRGaWxlRXh0ZW5zaW9uOiBcIi55YW1sXCIsXG4gICAgeWFtbE91dHB1dFR5cGU6IFlhbWxPdXRwdXRUeXBlLkZJTEVfUEVSX1JFU09VUkNFLFxuICB9KVxuXG4gIGNvbnN0IGZpcmVzdGFydHJBcHAgPSBuZXcgQXBwKHtcbiAgICBvdXRkaXI6IG91dHB1dENyRGlyLFxuICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcbiAgICB5YW1sT3V0cHV0VHlwZTogWWFtbE91dHB1dFR5cGUuRklMRV9QRVJfUkVTT1VSQ0UsXG4gIH0pXG5cbiAgYXdhaXQgcmVuZGVyKGNhdGFsb2dBcHAsIGZpcmVzdGFydHJBcHApO1xuXG4gIGNhdGFsb2dBcHAuc3ludGgoKVxuICBmaXJlc3RhcnRyQXBwLnN5bnRoKClcbn1cbiJdfQ==
|
|
230167
230200
|
|
|
230168
230201
|
/***/ }),
|
|
230169
230202
|
|
|
@@ -230852,6 +230885,17 @@ class GithubGroupChart extends base_1.BaseGithubChart {
|
|
|
230852
230885
|
}
|
|
230853
230886
|
});
|
|
230854
230887
|
}
|
|
230888
|
+
const parentTeam = claim.parent ? (0, refresolver_1.resolveClaimRef)("GroupClaim", (0, claimUtils_1.resolveStringReference)(claim.parent).name).metadata.name : undefined;
|
|
230889
|
+
let parentTeamRef = undefined;
|
|
230890
|
+
if (parentTeam) {
|
|
230891
|
+
parentTeamRef = {
|
|
230892
|
+
ref: {
|
|
230893
|
+
kind: "FirestartrGithubGroup",
|
|
230894
|
+
name: parentTeam,
|
|
230895
|
+
needsSecret: true
|
|
230896
|
+
}
|
|
230897
|
+
};
|
|
230898
|
+
}
|
|
230855
230899
|
return {
|
|
230856
230900
|
metadata: { name: claim.providers.github.name },
|
|
230857
230901
|
spec: {
|
|
@@ -230859,6 +230903,7 @@ class GithubGroupChart extends base_1.BaseGithubChart {
|
|
|
230859
230903
|
privacy: claim.providers.github.privacy || 'closed',
|
|
230860
230904
|
description: claim.description,
|
|
230861
230905
|
members: memberRefList,
|
|
230906
|
+
parentTeam: parentTeamRef,
|
|
230862
230907
|
firestartr: { tfStateKey: firestartrId },
|
|
230863
230908
|
writeConnectionSecretToRef: {
|
|
230864
230909
|
name: `firestartrgithubgroup-${claim.providers.github.name}-outputs`.toLowerCase(),
|
|
@@ -230879,7 +230924,7 @@ class GithubGroupChart extends base_1.BaseGithubChart {
|
|
|
230879
230924
|
}
|
|
230880
230925
|
}
|
|
230881
230926
|
exports.GithubGroupChart = GithubGroupChart;
|
|
230882
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
230927
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBDbGFpbUNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9naXRodWIvZ3JvdXBDbGFpbUNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFnRTtBQUNoRSxvRUFFeUM7QUFHekMsbURBQW9EO0FBQ3BELGlDQUF5QztBQUd6QyxNQUFhLGdCQUFpQixTQUFRLHNCQUFlO0lBRW5ELFFBQVE7UUFFTixNQUFNLEtBQUssR0FBcUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxNQUFNLFlBQVksR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRELE1BQU0sYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUVoQyxLQUFLLE1BQU0sZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRTtZQUVuRCxJQUFJLE1BQVcsQ0FBQztZQUVoQixNQUFNLEdBQUcsSUFBQSxtQ0FBc0IsRUFBQyxlQUFlLENBQUMsQ0FBQztZQUVqRCxNQUFNLElBQUksR0FBRyxJQUFBLDZCQUFlLEVBRTFCLE1BQU0sQ0FBQyxJQUFJLEtBQUssdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUVwRSxNQUFNLENBQUMsSUFBSSxDQUVaLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUVoQixhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUVqQixHQUFHLEVBQUU7b0JBRUgsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUVqQixJQUFJO29CQUVKLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7aUJBRXBFO2FBRUYsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLDZCQUFlLEVBRS9DLFlBQVksRUFFWixJQUFBLG1DQUFzQixFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBRTFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTVCLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUU5QixJQUFHLFVBQVUsRUFBQztZQUVaLGFBQWEsR0FBRztnQkFFWixHQUFHLEVBQUU7b0JBRUgsSUFBSSxFQUFFLHVCQUF1QjtvQkFFN0IsSUFBSSxFQUFFLFVBQVU7b0JBRWhCLFdBQVcsRUFBRSxJQUFJO2lCQUVsQjthQUNKLENBQUE7U0FFRjtRQUVELE9BQU87WUFFTCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBRS9DLElBQUksRUFBRTtnQkFFSixHQUFHLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRztnQkFFL0IsT0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxRQUFRO2dCQUVuRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBRTlCLE9BQU8sRUFBRSxhQUFhO2dCQUV0QixVQUFVLEVBQUUsYUFBYTtnQkFFekIsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRTtnQkFFeEMsMEJBQTBCLEVBQUU7b0JBRTFCLElBQUksRUFBRSx5QkFBeUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFO29CQUVsRixPQUFPLEVBQUU7d0JBRVAsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO3dCQUViLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTt3QkFFakIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO3FCQUVoQjtpQkFFRjthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxzQ0FBcUIsQ0FBQyxHQUFHLENBQUE7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWE7UUFFN0IsT0FBTyxJQUFJLHNDQUFxQixDQUU5QixJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUV2QyxDQUFBO0lBRUgsQ0FBQztDQUVGO0FBckhELDRDQXFIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlc29sdmVTdHJpbmdSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi91dGlscy9jbGFpbVV0aWxzJztcbmltcG9ydCB7XG4gIEZpcmVzdGFydHJHaXRodWJHcm91cCwgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHNcbn0gZnJvbSAnLi4vLi4vLi4vaW1wb3J0cy9maXJlc3RhcnRyLmRldic7XG5pbXBvcnQgeyBJVW5pdGlhbGl6ZWRTdGF0ZUtleSB9IGZyb20gJy4uLy4uL2NsYWltcy9iYXNlJztcbmltcG9ydCB7IElHaXRodWJUZWFtQ2xhaW0gfSBmcm9tICcuLi8uLi9jbGFpbXMvZ2l0aHViL2dyb3VwJztcbmltcG9ydCB7IHJlc29sdmVDbGFpbVJlZiB9IGZyb20gJy4uLy4uL3JlZnJlc29sdmVyJztcbmltcG9ydCB7IEJhc2VHaXRodWJDaGFydCB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuXG5leHBvcnQgY2xhc3MgR2l0aHViR3JvdXBDaGFydCBleHRlbmRzIEJhc2VHaXRodWJDaGFydCB7XG5cbiAgdGVtcGxhdGUoKTogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgfCBJVW5pdGlhbGl6ZWRTdGF0ZUtleSB7XG5cbiAgICBjb25zdCBjbGFpbTogSUdpdGh1YlRlYW1DbGFpbSA9IHRoaXMuZ2V0KFwiY2xhaW1cIik7XG5cbiAgICBjb25zdCBmaXJlc3RhcnRySWQ6IHN0cmluZyA9IHRoaXMuZ2V0KFwiZmlyZXN0YXJ0cklkXCIpO1xuXG4gICAgY29uc3QgbWVtYmVyUmVmTGlzdDogYW55W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgbWVtYmVyU3RyaW5nUmVmIG9mIChjbGFpbS5tZW1iZXJzIHx8IFtdKSkge1xuXG4gICAgICBsZXQgbWVtYmVyOiBhbnk7XG5cbiAgICAgIG1lbWJlciA9IHJlc29sdmVTdHJpbmdSZWZlcmVuY2UobWVtYmVyU3RyaW5nUmVmKTtcblxuICAgICAgY29uc3QgbmFtZSA9IHJlc29sdmVDbGFpbVJlZihcblxuICAgICAgICBtZW1iZXIua2luZCA9PT0gXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIiA/IFwiR3JvdXBDbGFpbVwiIDogXCJVc2VyQ2xhaW1cIixcblxuICAgICAgICBtZW1iZXIubmFtZVxuXG4gICAgICApLm1ldGFkYXRhLm5hbWU7XG5cbiAgICAgIG1lbWJlclJlZkxpc3QucHVzaCh7XG5cbiAgICAgICAgcmVmOiB7XG5cbiAgICAgICAgICBraW5kOiBtZW1iZXIua2luZCxcblxuICAgICAgICAgIG5hbWUsXG5cbiAgICAgICAgICBuZWVkc1NlY3JldDogbWVtYmVyLmtpbmQgPT09IFwiRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXCIgPyB0cnVlIDogZmFsc2UsXG5cbiAgICAgICAgfVxuXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRUZWFtID0gY2xhaW0ucGFyZW50ID8gcmVzb2x2ZUNsYWltUmVmKFxuICAgICAgXG4gICAgICBcIkdyb3VwQ2xhaW1cIiwgXG4gICAgICBcbiAgICAgIHJlc29sdmVTdHJpbmdSZWZlcmVuY2UoY2xhaW0ucGFyZW50KS5uYW1lXG4gICAgXG4gICAgKS5tZXRhZGF0YS5uYW1lIDogdW5kZWZpbmVkO1xuICAgIFxuICAgIGxldCBwYXJlbnRUZWFtUmVmID0gdW5kZWZpbmVkO1xuICAgIFxuICAgIGlmKHBhcmVudFRlYW0pe1xuICAgICAgXG4gICAgICBwYXJlbnRUZWFtUmVmID0ge1xuICAgICAgICAgIFxuICAgICAgICAgIHJlZjoge1xuICAgIFxuICAgICAgICAgICAga2luZDogXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIixcbiAgICBcbiAgICAgICAgICAgIG5hbWU6IHBhcmVudFRlYW0sXG4gICAgXG4gICAgICAgICAgICBuZWVkc1NlY3JldDogdHJ1ZVxuICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICBcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHtcblxuICAgICAgbWV0YWRhdGE6IHsgbmFtZTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5uYW1lIH0sXG5cbiAgICAgIHNwZWM6IHtcblxuICAgICAgICBvcmc6IGNsYWltLnByb3ZpZGVycy5naXRodWIub3JnLFxuXG4gICAgICAgIHByaXZhY3k6IGNsYWltLnByb3ZpZGVycy5naXRodWIucHJpdmFjeSB8fCAnY2xvc2VkJyxcblxuICAgICAgICBkZXNjcmlwdGlvbjogY2xhaW0uZGVzY3JpcHRpb24sXG5cbiAgICAgICAgbWVtYmVyczogbWVtYmVyUmVmTGlzdCxcblxuICAgICAgICBwYXJlbnRUZWFtOiBwYXJlbnRUZWFtUmVmLFxuXG4gICAgICAgIGZpcmVzdGFydHI6IHsgdGZTdGF0ZUtleTogZmlyZXN0YXJ0cklkIH0sXG5cbiAgICAgICAgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY6IHtcblxuICAgICAgICAgIG5hbWU6IGBmaXJlc3RhcnRyZ2l0aHViZ3JvdXAtJHtjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm5hbWV9LW91dHB1dHNgLnRvTG93ZXJDYXNlKCksXG5cbiAgICAgICAgICBvdXRwdXRzOiBbXG5cbiAgICAgICAgICAgIHsga2V5OiBcImlkXCIgfSxcblxuICAgICAgICAgICAgeyBrZXk6IFwibm9kZUlkXCIgfSxcblxuICAgICAgICAgICAgeyBrZXk6IFwic2x1Z1wiIH1cblxuICAgICAgICAgIF1cblxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGd2aygpOiBHcm91cFZlcnNpb25LaW5kIHtcbiAgICByZXR1cm4gRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwLkdWS1xuICB9XG5cbiAgaW5zdGFuY2VBcGlPYmplY3QodGVtcGxhdGU6IGFueSk6IEZpcmVzdGFydHJHaXRodWJHcm91cCB7XG5cbiAgICByZXR1cm4gbmV3IEZpcmVzdGFydHJHaXRodWJHcm91cChcblxuICAgICAgdGhpcywgdGVtcGxhdGUubWV0YWRhdGEubmFtZSwgdGVtcGxhdGVcblxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
|
|
230883
230928
|
|
|
230884
230929
|
/***/ }),
|
|
230885
230930
|
|
|
@@ -230989,7 +231034,7 @@ class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
|
230989
231034
|
defaultBranch: claim.providers.github.defaultBranch,
|
|
230990
231035
|
codeowners: (0, repositoryClaimUtils_1.createCodeOwnersData)(claim),
|
|
230991
231036
|
},
|
|
230992
|
-
actions: { oidc: { includeClaimKeys: [], useDefault: true } },
|
|
231037
|
+
actions: claim.providers.github.actions ? claim.providers.github.actions : { oidc: { includeClaimKeys: [], useDefault: true } },
|
|
230993
231038
|
permissions: this.createPermissions(claim),
|
|
230994
231039
|
pages: claim.providers.github.pages,
|
|
230995
231040
|
branchProtections: [],
|
|
@@ -231063,7 +231108,7 @@ class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
|
231063
231108
|
}
|
|
231064
231109
|
}
|
|
231065
231110
|
exports.GithubRepositoryChart = GithubRepositoryChart;
|
|
231066
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeUNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9naXRodWIvcmVwb3NpdG9yeUNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHlEQUFxRDtBQUNyRCwyRUFLMEM7QUFDMUMsb0VBR3lDO0FBSXpDLG9FQUFvQztBQUNwQyxpQ0FBeUM7QUFFekMsTUFBYSxxQkFBc0IsU0FBUSxzQkFBZTtJQUV4RCxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQTJCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuRCxJQUFJLFVBQVUsR0FBMkQ7WUFDdkUsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQyxXQUFXLEVBQUU7b0JBQ1gsQ0FBQyx3QkFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ3hELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWM7aUJBQ3hDO2FBQ0Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBQy9CLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUUsWUFBWSxJQUFJLEVBQUU7b0JBQzlCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO2lCQUM5QztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osV0FBVyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVc7b0JBQy9DLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtvQkFDekQsZ0JBQWdCLEVBQUUs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VSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7UUFFakUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBQztZQUMxQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUEsMENBQW1CLEVBQUUsU0FBUyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFBO1NBQzlGO2FBQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUM7WUFDOUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFBLDBDQUFtQixFQUFDLFNBQVMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtTQUN6RjtRQUVELE9BQU8sV0FBVyxDQUFBO0lBRXBCLENBQUM7SUFFRCxXQUFXO1FBRVQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUVuQyxDQUFDO0NBRUY7QUEzTEQsc0RBMkxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0LCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgRmVhdHVyZVJlcG9DaGFydCB9IGZyb20gXCIuL2ZlYXR1cmVSZXBvQ2hhcnRcIlxuaW1wb3J0IHtcbiAgUGVybWlzc2lvbixcbiAgQ29sbGFib3JhdG9yUGVybWlzc2lvbixcbiAgY3JlYXRlQ29kZU93bmVyc0RhdGEsXG4gIGNyZWF0ZVBlcm1pc3Npb25Gb3Jcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcmVwb3NpdG9yeUNsYWltVXRpbHMnO1xuaW1wb3J0IHtcbiAgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnksXG4gIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMsXG59IGZyb20gJy4uLy4uLy4uL2ltcG9ydHMvZmlyZXN0YXJ0ci5kZXYnO1xuaW1wb3J0IHsgSUdpdGh1YlJlcG9zaXRvcnlDbGFpbSB9IGZyb20gJy4uLy4uL2NsYWltcy9naXRodWIvcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBJR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVDbGFpbSB9IGZyb20gJy4uLy4uL2NsYWltcy9naXRodWIvcmVwb3NpdG9yeUZlYXR1cmUnO1xuaW1wb3J0IHsgSVVuaXRpYWxpemVkU3RhdGVLZXkgfSBmcm9tICcuLi8uLi9jbGFpbXMvYmFzZSc7XG5pbXBvcnQgY29tbW9uIGZyb20gJ2NhdGFsb2dfY29tbW9uJztcbmltcG9ydCB7IEJhc2VHaXRodWJDaGFydCB9IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjbGFzcyBHaXRodWJSZXBvc2l0b3J5Q2hhcnQgZXh0ZW5kcyBCYXNlR2l0aHViQ2hhcnQge1xuXG4gIHRlbXBsYXRlKCk6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgfCBJVW5pdGlhbGl6ZWRTdGF0ZUtleSB7XG4gICAgY29uc3QgY2xhaW06IElHaXRodWJSZXBvc2l0b3J5Q2xhaW0gPSB0aGlzLmdldChcImNsYWltXCIpO1xuICAgIGNvbnN0IGZpcmVzdGFydHJJZDogYW55ID0gdGhpcy5nZXQoXCJmaXJlc3RhcnRySWRcIik7XG5cbiAgICBsZXQgY3JUZW1wbGF0ZTogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyB8IElVbml0aWFsaXplZFN0YXRlS2V5ID0ge1xuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgbmFtZTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5uYW1lLFxuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgIFtjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbihcImJyYW5jaFN0cmF0ZWd5XCIpXTpcbiAgICAgICAgICAgIGNsYWltLnByb3ZpZGVycy5naXRodWIuYnJhbmNoU3RyYXRlZ3ksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3BlYzoge1xuICAgICAgICBvcmc6IGNsYWltLnByb3ZpZGVycy5naXRodWIub3JnLFxuICAgICAgICBmaXJlc3RhcnRyOiB7XG4gICAgICAgICAgdGZTdGF0ZUtleTogZmlyZXN0YXJ0cklkIHx8IFwiXCIsXG4gICAgICAgICAgdGVjaG5vbG9neTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi50ZWNobm9sb2d5LFxuICAgICAgICB9LFxuICAgICAgICByZXBvOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGNsYWltLnByb3ZpZGVycy5naXRodWIuZGVzY3JpcHRpb24sXG4gICAgICAgICAgYWxsb3dNZXJnZUNvbW1pdDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hbGxvd01lcmdlQ29tbWl0LFxuICAgICAgICAgIGFsbG93U3F1YXNoTWVyZ2U6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dTcXVhc2hNZXJnZSxcbiAgICAgICAgICBhbGxvd1JlYmFzZU1lcmdlOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmFsbG93UmViYXNlTWVyZ2UsXG4gICAgICAgICAgYWxsb3dBdXRvTWVyZ2U6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dBdXRvTWVyZ2UsXG4gICAgICAgICAgZGVsZXRlQnJhbmNoT25NZXJnZTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5kZWxldGVCcmFuY2hPbk1lcmdlLFxuICAgICAgICAgIGF1dG9Jbml0OiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmF1dG9Jbml0LFxuICAgICAgICAgIGFyY2hpdmVPbkRlc3Ryb3k6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYXJjaGl2ZU9uRGVzdHJveSxcbiAgICAgICAgICBhbGxvd1VwZGF0ZUJyYW5jaDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hbGxvd1VwZGF0ZUJyYW5jaCxcbiAgICAgICAgICBoYXNJc3N1ZXM6IGNsYWltLnByb3ZpZGVycy5naXRodWIuaGFzSXNzdWVzLFxuICAgICAgICAgIHZpc2liaWxpdHk6IGNsYWltLnByb3ZpZGVycy5naXRodWIudmlzaWJpbGl0eSxcbiAgICAgICAgICBkZWZhdWx0QnJhbmNoOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmRlZmF1bHRCcmFuY2gsXG4gICAgICAgICAgY29kZW93bmVyczogY3JlYXRlQ29kZU93bmVyc0RhdGEoY2xhaW0pLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpb25zOiB7IG9pZGM6IHsgaW5jbHVkZUNsYWltS2V5czogW10sIHVzZURlZmF1bHQ6IHRydWUgfSB9LFxuICAgICAgICBwZXJtaXNzaW9uczogdGhpcy5jcmVhdGVQZXJtaXNzaW9ucyhjbGFpbSksXG4gICAgICAgIHBhZ2VzOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLnBhZ2VzLFxuICAgICAgICBicmFuY2hQcm90ZWN0aW9uczogW10sXG4gICAgICAgIHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmOiB7XG4gICAgICAgICAgbmFtZTogYGZpcmVzdGFydHJnaXRodWJyZXBvc2l0b3J5LSR7Y2xhaW0ubmFtZX0tb3V0cHV0c2AudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7IGtleTogXCJpZFwiIH0sIHsga2V5OiBcIm5vZGVJZFwiIH0sIHsga2V5OiBcImZ1bGxOYW1lXCIgfSxcbiAgICAgICAgICAgIHsga2V5OiBcImh0bWxVcmxcIiB9LCB7IGtleTogXCJzc2hDbG9uZVVybFwiIH0sXG4gICAgICAgICAgICB7IGtleTogXCJwcmltYXJ5TGFuZ3VhZ2VcIiB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgLy8gV2UgZG8gdGhpcyB0byByZW1vdmUgdW5kZWZpbmVkIHZhcmlhYmxlcyBmcm9tIHRoZSB0ZW1wbGF0ZVxuICAgIGNyVGVtcGxhdGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNyVGVtcGxhdGUsIG51bGwsIDIpKTtcblxuICAgIHJldHVybiBjclRlbXBsYXRlO1xuXG4gIH1cblxuXG5cbiAgYXN5bmMgcmVuZGVyKCkge1xuXG4gICAgYXdhaXQgc3VwZXIucmVuZGVyKCk7XG5cbiAgICBhd2FpdCB0aGlzLnBvc3RSZW5kZXJGZWF0dXJlcyh0aGlzLmdldChcInJlbmRlcmVkLWNyXCIpKTtcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBndmsoKTogR3JvdXBWZXJzaW9uS2luZCB7XG4gICAgcmV0dXJuIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5LkdWS1xuICB9XG5cbiAgYXN5bmMgcG9zdFJlbmRlckZlYXR1cmVzKGNyOiBhbnkpIHtcblxuICAgIGNvbnN0IGZlYXR1cmVzUGF0Y2hlczogYW55W10gPSB0aGlzLmdldChcInBhdGNoZXNcIikuZmlsdGVyKFxuXG4gICAgICAocGF0Y2g6IGFueSkgPT4gcGF0Y2guaWRlbnRpZnkoKS5tYXRjaCgvXmZlYXR1cmVcXC8vKVxuXG4gICAgKTtcblxuICAgIGNvbnN0IGZlYXR1cmVzOiAgeyBjbGFpbToge2tpbmQ6IHN0cmluZywgbmFtZTogc3RyaW5nfSwgY2hhcnQ6IEFwaU9iamVjdH1bXSAgPSBbXVxuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlUGF0Y2ggb2YgZmVhdHVyZXNQYXRjaGVzKSB7XG5cbiAgICAgIGNvbnN0IGZlYXR1cmVDbGFpbTogSUdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlQ2xhaW0gPSBhd2FpdCBmZWF0dXJlUGF0Y2gucG9zdChjcik7XG5cbiAgICAgIGNvbnN0IHJlbmRlcmVkRmVhdHVyZSA9IGF3YWl0IChcblxuICAgICAgICBhd2FpdCAoXG5cbiAgICAgICAgICBuZXcgRmVhdHVyZVJlcG9DaGFydChcblxuICAgICAgICAgICAgdGhpcyxcblxuICAgICAgICAgICAgZmVhdHVyZUNsYWltLm5hbWUsXG5cbiAgICAgICAgICAgIGNyLnNwZWMuZmlyZXN0YXJ0ci50ZlN0YXRlS2V5LFxuXG4gICAgICAgICAgICBmZWF0dXJlQ2xhaW0sXG5cbiAgICAgICAgICAgIFtdLFxuXG4gICAgICAgICAgICBjclxuXG4gICAgICAgICAgKVxuXG4gICAgICAgIClcblxuICAgICAgICAucmVuZGVyKClcblxuICAgICAgKVxuXG4gICAgICAucG9zdFJlbmRlcmVyKFtdKVxuXG4gICAgICBmZWF0dXJlcy5wdXNoKHtcblxuICAgICAgICBjbGFpbToge1xuXG4gICAgICAgICAga2luZDogZmVhdHVyZUNsYWltLmtpbmQsXG5cbiAgICAgICAgICBuYW1lOiBmZWF0dXJlQ2xhaW0ubmFtZSxcblxuICAgICAgICB9LFxuXG4gICAgICAgIGNoYXJ0OiByZW5kZXJlZEZlYXR1cmVcblxuICAgICAgfSlcblxuICAgIH1cblxuICAgIHRoaXMuc2V0KFxuXG4gICAgICBcImZlYXR1cmVzXCIsXG5cbiAgICAgIGZlYXR1cmVzXG5cbiAgICApXG5cbiAgfVxuXG4gIGluc3RhbmNlQXBpT2JqZWN0KHRlbXBsYXRlOiBhbnkpOiBBcGlPYmplY3Qge1xuXG4gICAgICByZXR1cm4gbmV3IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5KFxuXG4gICAgICAgIHRoaXMsIHRlbXBsYXRlLm1ldGFkYXRhLm5hbWUsIHRlbXBsYXRlXG5cbiAgICAgIClcblxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1ldGhvZCBjcmVhdGVzIHRoZSBwZXJtaXNzaW9ucyBkYXRhIGZvciB0aGUgcmVwb3NpdG9yeVxuICAgKiBAcGFyYW0gY2xhaW1cbiAgICogQHJldHVybnMgUGVybWlzc2lvbltdXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVBlcm1pc3Npb25zKGNsYWltOiBhbnkpOiAoUGVybWlzc2lvbiB8IENvbGxhYm9yYXRvclBlcm1pc3Npb24pW10ge1xuXG4gICAgbGV0IHBlcm1pc3Npb25zOiAoUGVybWlzc2lvbiB8IENvbGxhYm9yYXRvclBlcm1pc3Npb24pW10gPSBbXVxuXG4gICAgaWYgKGNsYWltLm93bmVyKVxuICAgICAgcGVybWlzc2lvbnMucHVzaChjcmVhdGVQZXJtaXNzaW9uRm9yKGNsYWltLm93bmVyLCAnYWRtaW4nKSlcblxuICAgIGlmIChjbGFpbS5wbGF0Zm9ybU93bmVyKVxuICAgICAgcGVybWlzc2lvbnMucHVzaChjcmVhdGVQZXJtaXNzaW9uRm9yKFxuICAgICAgICBjbGFpbS5wbGF0Zm9ybU93bmVyLCAnYWRtaW4nXG4gICAgICApKVxuXG4gICAgaWYgKGNsYWltLm1haW50YWluZWRCeSlcbiAgICAgIGZvciAoY29uc3QgbWFpbnRhaW5lciBvZiBjbGFpbS5tYWludGFpbmVkQnkpXG4gICAgICAgIHBlcm1pc3Npb25zLnB1c2goY3JlYXRlUGVybWlzc2lvbkZvcihtYWludGFpbmVyLCAnbWFpbnRhaW4nKSlcblxuICAgIGlmIChjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm9yZ0NvbnRyaWJ1dGlvbnMpe1xuICAgICAgcGVybWlzc2lvbnMucHVzaChjcmVhdGVQZXJtaXNzaW9uRm9yKCBgZ3JvdXA6JHtjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm9yZ30tYWxsYCwgJ21haW50YWluJykpXG4gICAgfSBlbHNlIGlmIChjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm9yZ1Zpc2liaWxpdHkpe1xuICAgICAgcGVybWlzc2lvbnMucHVzaChjcmVhdGVQZXJtaXNzaW9uRm9yKGBncm91cDoke2NsYWltLnByb3ZpZGVycy5naXRodWIub3JnfS1hbGxgLCAncHVsbCcpKVxuICAgIH1cblxuICAgIHJldHVybiBwZXJtaXNzaW9uc1xuXG4gIH1cblxuICBleHRyYUNoYXJ0cygpOiAgeyBjbGFpbToge2tpbmQ6IHN0cmluZywgbmFtZTogc3RyaW5nfSwgY2hhcnQ6IEFwaU9iamVjdH1bXSAge1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0KFwiZmVhdHVyZXNcIikgfHwgW11cblxuICB9XG5cbn1cbiJdfQ==
|
|
231111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeUNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9naXRodWIvcmVwb3NpdG9yeUNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHlEQUFxRDtBQUNyRCwyRUFLMEM7QUFDMUMsb0VBR3lDO0FBSXpDLG9FQUFvQztBQUNwQyxpQ0FBeUM7QUFFekMsTUFBYSxxQkFBc0IsU0FBUSxzQkFBZTtJQUV4RCxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQTJCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuRCxJQUFJLFVBQVUsR0FBMkQ7WUFDdkUsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQyxXQUFXLEVBQUU7b0JBQ1gsQ0FBQyx3QkFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ3hELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWM7aUJBQ3hDO2FBQ0Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBQy9CLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUUsWUFBWSxJQUFJLEVBQUU7b0JBQzlCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO2lCQUM5QztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osV0FBVyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVc7b0JBQy9DLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtvQkFDekQsZ0JBQWdCLEVBQUUs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SyxDQUFDLFlBQVk7WUFDcEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWTtnQkFDekMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFBLDBDQUFtQixFQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBRWpFLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUM7WUFDMUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFBLDBDQUFtQixFQUFFLFNBQVMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtTQUM5RjthQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFDO1lBQzlDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBQSwwQ0FBbUIsRUFBQyxTQUFTLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7U0FDekY7UUFFRCxPQUFPLFdBQVcsQ0FBQTtJQUVwQixDQUFDO0lBRUQsV0FBVztRQUVULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFbkMsQ0FBQztDQUVGO0FBM0xELHNEQTJMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaU9iamVjdCwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IEZlYXR1cmVSZXBvQ2hhcnQgfSBmcm9tIFwiLi9mZWF0dXJlUmVwb0NoYXJ0XCJcbmltcG9ydCB7XG4gIFBlcm1pc3Npb24sXG4gIENvbGxhYm9yYXRvclBlcm1pc3Npb24sXG4gIGNyZWF0ZUNvZGVPd25lcnNEYXRhLFxuICBjcmVhdGVQZXJtaXNzaW9uRm9yXG59IGZyb20gJy4uLy4uL3V0aWxzL3JlcG9zaXRvcnlDbGFpbVV0aWxzJztcbmltcG9ydCB7XG4gIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5LFxuICBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzLFxufSBmcm9tICcuLi8uLi8uLi9pbXBvcnRzL2ZpcmVzdGFydHIuZGV2JztcbmltcG9ydCB7IElHaXRodWJSZXBvc2l0b3J5Q2xhaW0gfSBmcm9tICcuLi8uLi9jbGFpbXMvZ2l0aHViL3JlcG9zaXRvcnknO1xuaW1wb3J0IHsgSUdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlQ2xhaW0gfSBmcm9tICcuLi8uLi9jbGFpbXMvZ2l0aHViL3JlcG9zaXRvcnlGZWF0dXJlJztcbmltcG9ydCB7IElVbml0aWFsaXplZFN0YXRlS2V5IH0gZnJvbSAnLi4vLi4vY2xhaW1zL2Jhc2UnO1xuaW1wb3J0IGNvbW1vbiBmcm9tICdjYXRhbG9nX2NvbW1vbic7XG5pbXBvcnQgeyBCYXNlR2l0aHViQ2hhcnQgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY2xhc3MgR2l0aHViUmVwb3NpdG9yeUNoYXJ0IGV4dGVuZHMgQmFzZUdpdGh1YkNoYXJ0IHtcblxuICB0ZW1wbGF0ZSgpOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzIHwgSVVuaXRpYWxpemVkU3RhdGVLZXkge1xuICAgIGNvbnN0IGNsYWltOiBJR2l0aHViUmVwb3NpdG9yeUNsYWltID0gdGhpcy5nZXQoXCJjbGFpbVwiKTtcbiAgICBjb25zdCBmaXJlc3RhcnRySWQ6IGFueSA9IHRoaXMuZ2V0KFwiZmlyZXN0YXJ0cklkXCIpO1xuXG4gICAgbGV0IGNyVGVtcGxhdGU6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgfCBJVW5pdGlhbGl6ZWRTdGF0ZUtleSA9IHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG5hbWU6IGNsYWltLnByb3ZpZGVycy5naXRodWIubmFtZSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICBbY29tbW9uLmdlbmVyaWMuZ2V0RmlyZXN0YXJ0ckFubm90YXRpb24oXCJicmFuY2hTdHJhdGVneVwiKV06XG4gICAgICAgICAgICBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmJyYW5jaFN0cmF0ZWd5LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgb3JnOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm9yZyxcbiAgICAgICAgZmlyZXN0YXJ0cjoge1xuICAgICAgICAgIHRmU3RhdGVLZXk6IGZpcmVzdGFydHJJZCB8fCBcIlwiLFxuICAgICAgICAgIHRlY2hub2xvZ3k6IGNsYWltLnByb3ZpZGVycy5naXRodWIudGVjaG5vbG9neSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVwbzoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGFsbG93TWVyZ2VDb21taXQ6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dNZXJnZUNvbW1pdCxcbiAgICAgICAgICBhbGxvd1NxdWFzaE1lcmdlOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmFsbG93U3F1YXNoTWVyZ2UsXG4gICAgICAgICAgYWxsb3dSZWJhc2VNZXJnZTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hbGxvd1JlYmFzZU1lcmdlLFxuICAgICAgICAgIGFsbG93QXV0b01lcmdlOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmFsbG93QXV0b01lcmdlLFxuICAgICAgICAgIGRlbGV0ZUJyYW5jaE9uTWVyZ2U6IGNsYWltLnByb3ZpZGVycy5naXRodWIuZGVsZXRlQnJhbmNoT25NZXJnZSxcbiAgICAgICAgICBhdXRvSW5pdDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hdXRvSW5pdCxcbiAgICAgICAgICBhcmNoaXZlT25EZXN0cm95OiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmFyY2hpdmVPbkRlc3Ryb3ksXG4gICAgICAgICAgYWxsb3dVcGRhdGVCcmFuY2g6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dVcGRhdGVCcmFuY2gsXG4gICAgICAgICAgaGFzSXNzdWVzOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmhhc0lzc3VlcyxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLnZpc2liaWxpdHksXG4gICAgICAgICAgZGVmYXVsdEJyYW5jaDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5kZWZhdWx0QnJhbmNoLFxuICAgICAgICAgIGNvZGVvd25lcnM6IGNyZWF0ZUNvZGVPd25lcnNEYXRhKGNsYWltKSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aW9uczogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hY3Rpb25zICA/IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWN0aW9uczogeyBvaWRjOiB7IGluY2x1ZGVDbGFpbUtleXM6IFtdLCB1c2VEZWZhdWx0OiB0cnVlIH0gfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHRoaXMuY3JlYXRlUGVybWlzc2lvbnMoY2xhaW0pLFxuICAgICAgICBwYWdlczogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5wYWdlcyxcbiAgICAgICAgYnJhbmNoUHJvdGVjdGlvbnM6IFtdLFxuICAgICAgICB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjoge1xuICAgICAgICAgIG5hbWU6IGBmaXJlc3RhcnRyZ2l0aHVicmVwb3NpdG9yeS0ke2NsYWltLm5hbWV9LW91dHB1dHNgLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgeyBrZXk6IFwiaWRcIiB9LCB7IGtleTogXCJub2RlSWRcIiB9LCB7IGtleTogXCJmdWxsTmFtZVwiIH0sXG4gICAgICAgICAgICB7IGtleTogXCJodG1sVXJsXCIgfSwgeyBrZXk6IFwic3NoQ2xvbmVVcmxcIiB9LFxuICAgICAgICAgICAgeyBrZXk6IFwicHJpbWFyeUxhbmd1YWdlXCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cblxuICAgIC8vIFdlIGRvIHRoaXMgdG8gcmVtb3ZlIHVuZGVmaW5lZCB2YXJpYWJsZXMgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBjclRlbXBsYXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjclRlbXBsYXRlLCBudWxsLCAyKSk7XG5cbiAgICByZXR1cm4gY3JUZW1wbGF0ZTtcblxuICB9XG5cblxuXG4gIGFzeW5jIHJlbmRlcigpIHtcblxuICAgIGF3YWl0IHN1cGVyLnJlbmRlcigpO1xuXG4gICAgYXdhaXQgdGhpcy5wb3N0UmVuZGVyRmVhdHVyZXModGhpcy5nZXQoXCJyZW5kZXJlZC1jclwiKSk7XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ3ZrKCk6IEdyb3VwVmVyc2lvbktpbmQge1xuICAgIHJldHVybiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeS5HVktcbiAgfVxuXG4gIGFzeW5jIHBvc3RSZW5kZXJGZWF0dXJlcyhjcjogYW55KSB7XG5cbiAgICBjb25zdCBmZWF0dXJlc1BhdGNoZXM6IGFueVtdID0gdGhpcy5nZXQoXCJwYXRjaGVzXCIpLmZpbHRlcihcblxuICAgICAgKHBhdGNoOiBhbnkpID0+IHBhdGNoLmlkZW50aWZ5KCkubWF0Y2goL15mZWF0dXJlXFwvLylcblxuICAgICk7XG5cbiAgICBjb25zdCBmZWF0dXJlczogIHsgY2xhaW06IHtraW5kOiBzdHJpbmcsIG5hbWU6IHN0cmluZ30sIGNoYXJ0OiBBcGlPYmplY3R9W10gID0gW11cblxuICAgIGZvciAoY29uc3QgZmVhdHVyZVBhdGNoIG9mIGZlYXR1cmVzUGF0Y2hlcykge1xuXG4gICAgICBjb25zdCBmZWF0dXJlQ2xhaW06IElHaXRodWJSZXBvc2l0b3J5RmVhdHVyZUNsYWltID0gYXdhaXQgZmVhdHVyZVBhdGNoLnBvc3QoY3IpO1xuXG4gICAgICBjb25zdCByZW5kZXJlZEZlYXR1cmUgPSBhd2FpdCAoXG5cbiAgICAgICAgYXdhaXQgKFxuXG4gICAgICAgICAgbmV3IEZlYXR1cmVSZXBvQ2hhcnQoXG5cbiAgICAgICAgICAgIHRoaXMsXG5cbiAgICAgICAgICAgIGZlYXR1cmVDbGFpbS5uYW1lLFxuXG4gICAgICAgICAgICBjci5zcGVjLmZpcmVzdGFydHIudGZTdGF0ZUtleSxcblxuICAgICAgICAgICAgZmVhdHVyZUNsYWltLFxuXG4gICAgICAgICAgICBbXSxcblxuICAgICAgICAgICAgY3JcblxuICAgICAgICAgIClcblxuICAgICAgICApXG5cbiAgICAgICAgLnJlbmRlcigpXG5cbiAgICAgIClcblxuICAgICAgLnBvc3RSZW5kZXJlcihbXSlcblxuICAgICAgZmVhdHVyZXMucHVzaCh7XG5cbiAgICAgICAgY2xhaW06IHtcblxuICAgICAgICAgIGtpbmQ6IGZlYXR1cmVDbGFpbS5raW5kLFxuXG4gICAgICAgICAgbmFtZTogZmVhdHVyZUNsYWltLm5hbWUsXG5cbiAgICAgICAgfSxcblxuICAgICAgICBjaGFydDogcmVuZGVyZWRGZWF0dXJlXG5cbiAgICAgIH0pXG5cbiAgICB9XG5cbiAgICB0aGlzLnNldChcblxuICAgICAgXCJmZWF0dXJlc1wiLFxuXG4gICAgICBmZWF0dXJlc1xuXG4gICAgKVxuXG4gIH1cblxuICBpbnN0YW5jZUFwaU9iamVjdCh0ZW1wbGF0ZTogYW55KTogQXBpT2JqZWN0IHtcblxuICAgICAgcmV0dXJuIG5ldyBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeShcblxuICAgICAgICB0aGlzLCB0ZW1wbGF0ZS5tZXRhZGF0YS5uYW1lLCB0ZW1wbGF0ZVxuXG4gICAgICApXG5cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgY3JlYXRlcyB0aGUgcGVybWlzc2lvbnMgZGF0YSBmb3IgdGhlIHJlcG9zaXRvcnlcbiAgICogQHBhcmFtIGNsYWltXG4gICAqIEByZXR1cm5zIFBlcm1pc3Npb25bXVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVQZXJtaXNzaW9ucyhjbGFpbTogYW55KTogKFBlcm1pc3Npb24gfCBDb2xsYWJvcmF0b3JQZXJtaXNzaW9uKVtdIHtcblxuICAgIGxldCBwZXJtaXNzaW9uczogKFBlcm1pc3Npb24gfCBDb2xsYWJvcmF0b3JQZXJtaXNzaW9uKVtdID0gW11cblxuICAgIGlmIChjbGFpbS5vd25lcilcbiAgICAgIHBlcm1pc3Npb25zLnB1c2goY3JlYXRlUGVybWlzc2lvbkZvcihjbGFpbS5vd25lciwgJ2FkbWluJykpXG5cbiAgICBpZiAoY2xhaW0ucGxhdGZvcm1Pd25lcilcbiAgICAgIHBlcm1pc3Npb25zLnB1c2goY3JlYXRlUGVybWlzc2lvbkZvcihcbiAgICAgICAgY2xhaW0ucGxhdGZvcm1Pd25lciwgJ2FkbWluJ1xuICAgICAgKSlcblxuICAgIGlmIChjbGFpbS5tYWludGFpbmVkQnkpXG4gICAgICBmb3IgKGNvbnN0IG1haW50YWluZXIgb2YgY2xhaW0ubWFpbnRhaW5lZEJ5KVxuICAgICAgICBwZXJtaXNzaW9ucy5wdXNoKGNyZWF0ZVBlcm1pc3Npb25Gb3IobWFpbnRhaW5lciwgJ21haW50YWluJykpXG5cbiAgICBpZiAoY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmdDb250cmlidXRpb25zKXtcbiAgICAgIHBlcm1pc3Npb25zLnB1c2goY3JlYXRlUGVybWlzc2lvbkZvciggYGdyb3VwOiR7Y2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmd9LWFsbGAsICdtYWludGFpbicpKVxuICAgIH0gZWxzZSBpZiAoY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmdWaXNpYmlsaXR5KXtcbiAgICAgIHBlcm1pc3Npb25zLnB1c2goY3JlYXRlUGVybWlzc2lvbkZvcihgZ3JvdXA6JHtjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm9yZ30tYWxsYCwgJ3B1bGwnKSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGVybWlzc2lvbnNcblxuICB9XG5cbiAgZXh0cmFDaGFydHMoKTogIHsgY2xhaW06IHtraW5kOiBzdHJpbmcsIG5hbWU6IHN0cmluZ30sIGNoYXJ0OiBBcGlPYmplY3R9W10gIHtcblxuICAgIHJldHVybiB0aGlzLmdldChcImZlYXR1cmVzXCIpIHx8IFtdXG5cbiAgfVxuXG59XG4iXX0=
|
|
231067
231112
|
|
|
231068
231113
|
/***/ }),
|
|
231069
231114
|
|
|
@@ -232395,7 +232440,7 @@ class FirestartrAllClaim {
|
|
|
232395
232440
|
}
|
|
232396
232441
|
}
|
|
232397
232442
|
exports.FirestartrAllClaim = FirestartrAllClaim;
|
|
232398
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
232443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xhaW1zL3ZpcnR1YWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsTUFBYyxrQkFBa0I7SUFFNUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUEwQixFQUFFLFNBQWMsRUFBRTtRQUVyRCxNQUFNLEVBQUMsR0FBRyxFQUFDLEdBQVEsTUFBTSxDQUFDO1FBRTFCLE1BQU0sVUFBVSxHQUFnQjtZQUU1QixJQUFJLEVBQUUsWUFBWTtZQUVsQixPQUFPLEVBQUUsS0FBSztZQUVkLFFBQVEsRUFBRSxFQUFFO1lBRVosSUFBSSxFQUFFLEdBQUcsR0FBRyxNQUFNO1lBRWxCLFdBQVcsRUFBRSx1Q0FBdUM7WUFFcEQsSUFBSSxFQUFFLGVBQWU7WUFFckIsT0FBTyxFQUFFO2dCQUVMLFdBQVcsRUFBRSxnQkFBZ0I7Z0JBRTdCLEtBQUssRUFBRSwrQkFBK0I7Z0JBRXRDLE9BQU8sRUFBRSxtREFBbUQ7YUFFL0Q7WUFFRCxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFFekMsU0FBUyxFQUFFO2dCQUVYLE1BQU0sRUFBRTtvQkFFSixJQUFJLEVBQUUsR0FBRyxHQUFHLE1BQU07b0JBRWxCLE9BQU8sRUFBRSxRQUFRO29CQUVqQixHQUFHO2lCQUVOO2FBQ0E7U0FFSixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFFdEIsQ0FBQztJQUdELGFBQWEsQ0FBQyxZQUEwQjtRQUVwQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZ0MsRUFBQyxFQUFFO1lBRTFFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFBO1FBRXJELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUVmLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1lBQy9CLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1lBRS9CLElBQUcsVUFBVSxHQUFHLFVBQVUsRUFBQztnQkFDdkIsT0FBTyxDQUFDLENBQUE7YUFDWDtZQUVELElBQUcsVUFBVSxHQUFHLFVBQVUsRUFBQztnQkFDdkIsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUNaO1lBRUQsT0FBTyxDQUFDLENBQUE7UUFFVixDQUFDLENBQUMsQ0FBQyxHQUFHLENBRUYsQ0FBQyxlQUFnQyxFQUFDLEVBQUU7WUFFaEMsT0FBTyxRQUFRLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFL0MsQ0FBQyxDQUVKLENBQUE7SUFFTCxDQUFDO0NBQ0o7QUFwRkQsZ0RBb0ZDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBSZW5kZXJDbGFpbURhdGEsIFJlbmRlckNsYWltcyB9IGZyb20gXCIuLi8uLi9yZW5kZXJlci90eXBlc1wiO1xuaW1wb3J0IHsgSUNsYWltIH0gZnJvbSBcIi4uL2Jhc2VcIjtcbmltcG9ydCB7IElHcm91cENsYWltIH0gZnJvbSBcIi4uL2Jhc2UvZ3JvdXBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJVmlydHVhbENsYWltICB7XG5cbiAgICBleHBhbmQocmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXMsIGNvbmZpZz86IGFueSk6IFByb21pc2U8SUNsYWltPjtcbn1cblxuXG5leHBvcnQgY2xhc3MgIEZpcmVzdGFydHJBbGxDbGFpbSAgaW1wbGVtZW50cyBJVmlydHVhbENsYWltIHtcblxuICAgIGFzeW5jIGV4cGFuZChyZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcywgY29uZmlnOiBhbnkgPSB7fSk6IFByb21pc2U8SUNsYWltPiB7XG5cbiAgICAgICAgY29uc3Qge29yZ306IGFueSA9IGNvbmZpZztcblxuICAgICAgICBjb25zdCBncm91cENsYWltOiBJR3JvdXBDbGFpbSA9IHtcblxuICAgICAgICAgICAga2luZDogXCJHcm91cENsYWltXCIsXG5cbiAgICAgICAgICAgIHZlcnNpb246IFwiMS4wXCIsXG5cbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcblxuICAgICAgICAgICAgbmFtZTogYCR7b3JnfS1hbGxgLFxuXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaXJlc3RhcnRyIGdyb3VwIHdpdGggYWxsIG9yZyBtZW1iZXJzXCIsXG5cbiAgICAgICAgICAgIHR5cGU6IFwiYnVzaW5lc3MtdW5pdFwiLFxuXG4gICAgICAgICAgICBwcm9maWxlOiB7XG5cbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogXCJmaXJlc3RhcnRyLWFsbFwiLFxuXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiZmlyZXN0YXJ0ci1hbGxAZmlyZXN0YXJ0ci5kZXZcIixcblxuICAgICAgICAgICAgICAgIHBpY3R1cmU6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9ncm91cHMvYnUtaW5mcmFzdHJ1Y3R1cmUuanBlZ1wiXG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1lbWJlcnM6IHRoaXMuZXhwYW5kTWVtYmVycyhyZW5kZXJDbGFpbXMpLFxuXG4gICAgICAgICAgICBwcm92aWRlcnM6IHtcblxuICAgICAgICAgICAgZ2l0aHViOiB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiBgJHtvcmd9LWFsbGAsXG5cbiAgICAgICAgICAgICAgICBwcml2YWN5OiBcImNsb3NlZFwiLFxuXG4gICAgICAgICAgICAgICAgb3JnXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBncm91cENsYWltO1xuXG4gICAgfVxuXG5cbiAgICBleHBhbmRNZW1iZXJzKHJlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zKTogc3RyaW5nW10ge1xuXG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJlbmRlckNsYWltcykuZmlsdGVyKChyZW5kZXJDbGFpbURhdGE6IFJlbmRlckNsYWltRGF0YSk9PiB7XG5cbiAgICAgICAgICAgIHJldHVybiByZW5kZXJDbGFpbURhdGEuY2xhaW0ua2luZCA9PT0gXCJVc2VyQ2xhaW1cIlxuXG4gICAgICAgIH0pLnNvcnQoKGEsIGIpID0+IHtcblxuICAgICAgICAgIGNvbnN0IGNsYWltQU5hbWUgPSBhLmNsYWltLm5hbWVcbiAgICAgICAgICBjb25zdCBjbGFpbUJOYW1lID0gYi5jbGFpbS5uYW1lXG5cbiAgICAgICAgICBpZihjbGFpbUFOYW1lID4gY2xhaW1CTmFtZSl7XG4gICAgICAgICAgICAgIHJldHVybiAxXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYoY2xhaW1BTmFtZSA8IGNsYWltQk5hbWUpe1xuICAgICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gMFxuXG4gICAgICAgIH0pLm1hcChcblxuICAgICAgICAgICAgKHJlbmRlckNsYWltRGF0YTogUmVuZGVyQ2xhaW1EYXRhKT0+IHtcblxuICAgICAgICAgICAgICAgIHJldHVybiBgdXNlcjoke3JlbmRlckNsYWltRGF0YS5jbGFpbS5uYW1lfWBcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIClcblxuICAgIH1cbn1cbiJdfQ==
|
|
232399
232444
|
|
|
232400
232445
|
/***/ }),
|
|
232401
232446
|
|
|
@@ -232435,7 +232480,7 @@ const yaml = __importStar(__nccwpck_require__(26264));
|
|
|
232435
232480
|
const fastJsonPatch = __importStar(__nccwpck_require__(75177));
|
|
232436
232481
|
const utils_1 = __nccwpck_require__(56586);
|
|
232437
232482
|
const config_1 = __nccwpck_require__(56600);
|
|
232438
|
-
const renderer_1 = __nccwpck_require__(
|
|
232483
|
+
const renderer_1 = __nccwpck_require__(68926);
|
|
232439
232484
|
const refresolver_1 = __nccwpck_require__(68671);
|
|
232440
232485
|
const MAIN_BRANCH_OUTPUT_DIR = "/tmp/resources_from_main_branch";
|
|
232441
232486
|
const PR_BRANCH_OUTPUT_DIR = "/tmp/resources_from_pr_branch";
|
|
@@ -232582,7 +232627,7 @@ async function runComparer(claimPathFromMain, claimPathFromPR, claimsDefaultsPat
|
|
|
232582
232627
|
writeWetAffectedRepositoriesFile(result.repos, pathForAffectedReposFile);
|
|
232583
232628
|
}
|
|
232584
232629
|
exports.runComparer = runComparer;
|
|
232585
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcGFyZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBNEM7QUFDNUMsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUNoQywrREFBaUQ7QUFDakQsbUNBQStFO0FBQy9FLHNDQUFvQztBQUNwQywwQ0FBcUM7QUFDckMsZ0RBQXFEO0FBMEJyRCxNQUFNLHNCQUFzQixHQUFXLGlDQUFpQyxDQUFDO0FBQ3pFLE1BQU0sb0JBQW9CLEdBQVcsK0JBQStCLENBQUM7QUFJckU7Ozs7O0tBS0s7QUFDRSxLQUFLLFVBQVUsdUJBQXVCLENBRXpDLGlCQUF5QixFQUV6QixlQUF1QixFQUV2Qix5QkFBaUM7SUFJakM7OztPQUdHO0lBQ0gsSUFBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUV6QyxFQUFFLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FFdEM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSx1QkFBdUIsR0FBOEIsRUFBRSxDQUFBO0lBRTdEOzs7OztPQUtHO0lBQ0gsTUFBTSxpQkFBaUIsR0FBc0IsRUFBRSxDQUFBO0lBRS9DLG1DQUFtQztJQUNuQyxNQUFNLHFCQUFxQixHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWxHLHFEQUFxRDtJQUNyRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTNELHlDQUF5QztJQUN6QyxJQUFBLGdCQUFPLEVBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFckMseUJBQXlCO0lBQ3pCLElBQUEsa0NBQTBCLEdBQUUsQ0FBQztJQUU3QixNQUFN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QUFDLENBQUMsQ0FFakMsQ0FBQTtBQUVMLENBQUM7QUFWRCw0RUFVQztBQUdNLEtBQUssVUFBVSxXQUFXLENBQzdCLGlCQUF5QixFQUN6QixlQUF1QixFQUN2QixrQkFBMEIsRUFDMUIseUJBQWlDLEVBQ2pDLHdCQUFnQztJQUloQyxJQUFBLGdCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUU5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixDQUV4QyxpQkFBaUIsRUFFakIsZUFBZSxFQUVmLHlCQUF5QixDQUM1QixDQUFDO0lBRUYsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBRTdFLENBQUM7QUF0QkQsa0NBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwLCBZYW1sT3V0cHV0VHlwZSB9IGZyb20gXCJjZGs4c1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gXCJqcy15YW1sXCI7XG5pbXBvcnQgKiBhcyBmYXN0SnNvblBhdGNoICBmcm9tIFwiZmFzdC1qc29uLXBhdGNoXCJcbmltcG9ydCB7IGNvbmZpZ3VyZVBhdGhzRm9yUmVuZGVyaW5nLCBnZXRBZmZlY3RlZFdldFJlcG9zaXRvcnkgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgc2V0UGF0aCB9IGZyb20gXCIuLi9jb25maWdcIjtcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuLi9yZW5kZXJlclwiO1xuaW1wb3J0IHsgZW1wdHlSZW5kZXJlZENsYWltcyB9IGZyb20gXCIuLi9yZWZyZXNvbHZlclwiO1xuLy8gaW1wb3J0IGNvbW1vbiBmcm9tIFwiY2F0YWxvZ19jb21tb25cIjtcbi8vIGltcG9ydCB7IGlzQ2F0YWxvZ0VudGl0eSB9IGZyb20gXCIuLi92YWxpZGF0aW9ucy9yZWZlcmVuY2VzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgd2l0aCB0aGUgYWZmZWN0ZWQgd2V0IHJlcG9zaXRvcmllc1xuICovXG50eXBlIEFmZmVjdGVkUmVzb3VyY2UgPSB7XG5cbiAgICAvLyBDaGFuZ2VzIGluIHRoZSByZXNvdXJjZSB3aXRoIHRoZSBmb3JtYXQgb2YgZmFzdC1qc29uLXBhdGNoXG4gICAgY2hhbmdlczogZmFzdEpzb25QYXRjaC5PcGVyYXRpb25bXSxcblxuICAgIC8vIFRoZSByZWFzb24gd2h5IHRoZSByZXNvdXJjZSBpcyBhZmZlY3RlZFxuICAgIHJlYXNvbjogXCJNT0RJRklFRFwiIHwgXCJERUxFVEVEX0ZST01fUFJcIiAgfCBcIkFEREVEX1RPX1BSXCJcblxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPYmplY3Qgd2l0aCB0aGUgYWZmZWN0ZWQgd2V0IHJlcG9zaXRvcmllc1xuICovXG50eXBlIEFmZmVjdGVkUmVzb3VyY2VzID0ge1xuXG4gICAgW2tleTogc3RyaW5nXTogQWZmZWN0ZWRSZXNvdXJjZVxuXG59XG5cbmNvbnN0IE1BSU5fQlJBTkNIX09VVFBVVF9ESVI6IHN0cmluZyA9IFwiL3RtcC9yZXNvdXJjZXNfZnJvbV9tYWluX2JyYW5jaFwiO1xuY29uc3QgUFJfQlJBTkNIX09VVFBVVF9ESVI6IHN0cmluZyA9IFwiL3RtcC9yZXNvdXJjZXNfZnJvbV9wcl9icmFuY2hcIjtcblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldCB0aGUgYWZmZWN0ZWQgd2V0IHJlcG9zaXRvcmllcyBieSBhIFBSXG4gKiBAcGFyYW0gY2xhaW1QYXRoRnJvbU1haW4gUGF0aCB0byB0aGUgY2xhaW1zIGZyb20gdGhlIG1haW4gYnJhbmNoXG4gKiBAcGFyYW0gY2xhaW1QYXRoRnJvbVBSIFBhdGggdG8gdGhlIGNsYWltcyBmcm9tIHRoZSBQUiBicmFuY2hcbiAqIEBwYXJhbSB3ZXRSZXBvc2l0b3JpZXNDb25maWdQYXRoIFBhdGggdG8gdGhlIHdldCByZXBvc2l0b3JpZXMgY29uZmlnXG4gKiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFmZmVjdGVkUmVwb3NpdG9yaWVzKFxuXG4gICAgY2xhaW1QYXRoRnJvbU1haW46IHN0cmluZyxcblxuICAgIGNsYWltUGF0aEZyb21QUjogc3RyaW5nLFxuXG4gICAgd2V0UmVwb3NpdG9yaWVzQ29uZmlnUGF0aDogc3RyaW5nXG5cbikgOiBQcm9taXNlPHsgcmVwb3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nfSwgY2hhbmdlZFJlc291cmNlczogQWZmZWN0ZWRSZXNvdXJjZXMgfT4ge1xuXG4gICAgLypcbiAgICAgKiBXZSBuZWVkIHRoaXMgZm9sZGVyIHRvIGV4aXN0LCBzbyB3ZSBjcmVhdGUgaXQgYmVmb3JlaGFuZFxuICAgICAqXG4gICAgICovXG4gICAgaWYoIWZzLmV4aXN0c1N5bmMoTUFJTl9CUkFOQ0hfT1VUUFVUX0RJUikpIHtcblxuICAgICAgZnMubWtkaXJTeW5jKE1BSU5fQlJBTkNIX09VVFBVVF9ESVIpO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHdpdGggdGhlIGFmZmVjdGVkIHdldCByZXBvc2l0b3JpZXNcbiAgICAgKiBUaGlzIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgdG8gdHJpZ2dlclxuICAgICAqIHRoZSBwaXBlbGluZXMgb2YgdGhlIGFmZmVjdGVkIHdldCByZXBvc2l0b3JpZXNcbiAgICAgKi9cbiAgICBjb25zdCBhZmZlY3RlZFdldFJlcG9zaXRvcmllczogIHsgW2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3Qgd2l0aCB0aGUgYWZmZWN0ZWQgcmVzb3VyY2VzXG4gICAgICogVGhpcyB3aWxsIGJlIHJldHVybmVkIGZvciBhIHN1bW1hcnkgb2YgdGhlIGNoYW5nZXMsXG4gICAgICogYW5kIHRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBzZWUgdGhlIGNoYW5nZXMgaW4gdGhlXG4gICAgICogcGlwZWxpbmUgbG9ncy5cbiAgICAgKi9cbiAgICBjb25zdCBhZmZlY3RlZFJlc291cmNlczogQWZmZWN0ZWRSZXNvdXJjZXMgPSB7fVxuXG4gICAgLy8gTG9hZCB0aGUgd2V0IHJlcG9zaXRvcmllcyBjb25maWdcbiAgICBjb25zdCB3ZXRSZXBvc2l0b3JpZXNDb25maWc6IGFueSA9IHlhbWwubG9hZChmcy5yZWFkRmlsZVN5bmMod2V0UmVwb3NpdG9yaWVzQ29uZmlnUGF0aCwgXCJ1dGYtOFwiKSk7XG5cbiAgICAvLyBHZXQgdGhlIHByb3ZpZGVycyBmcm9tIHRoZSB3ZXQgcmVwb3NpdG9yaWVzIGNvbmZpZ1xuICAgIGNvbnN0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKHdldFJlcG9zaXRvcmllc0NvbmZpZy5zdGF0ZXMpXG5cbiAgICAvLyBTZXQgdGhlIGNsYWltcyBwYXRoIHRvIHRoZSBtYWluIGJyYW5jaFxuICAgIHNldFBhdGgoXCJjbGFpbXNcIiwgY2xhaW1QYXRoRnJvbU1haW4pO1xuXG4gICAgLy8gQ29uZmlndXJlIHRoZSByZW5kZXJlclxuICAgIGNvbmZpZ3VyZVBhdGhzRm9yUmVuZGVyaW5nKCk7XG5cbiAgICBjb25zdCBtYWluQnJhbmNoRmlyZXN0YXJ0ckFwcCA9IG5ldyBBcHAoe1xuICAgICAgICBvdXRkaXI6IE1BSU5fQlJBTkNIX09VVFBVVF9ESVIsXG4gICAgICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcbiAgICAgICAgeWFtbE91dHB1dFR5cGU6IFlhbWxPdXRwdXRUeXBlLkZJTEVfUEVSX1JFU09VUkNFLFxuICAgIH0pXG5cbiAgICBjb25zdCBtYWluQnJhbmNoQ2F0YWxvZ0FwcCA9IG5ldyBBcHAoe1xuICAgICAgICBvdXRkaXI6IFwiL3RtcC8uY2F0YWxvZ1wiLFxuICAgICAgICBvdXRwdXRGaWxlRXh0ZW5zaW9uOiBcIi55YW1sXCIsXG4gICAgICAgIHlhbWxPdXRwdXRUeXBlOiBZYW1sT3V0cHV0VHlwZS5GSUxFX1BFUl9SRVNPVVJDRSxcbiAgICB9KVxuXG4gICAgLy8gUmVuZGVyIHRoZSBtYWluIGJyYW5jaFxuICAgIGxldCByZW5kZXJGcm9tTWFpbkJyYW5jaDogYW55ID0gYXdhaXQgcmVuZGVyKG1haW5CcmFuY2hDYXRhbG9nQXBwLCBtYWluQnJhbmNoRmlyZXN0YXJ0ckFwcClcblxuICAgIG1haW5CcmFuY2hGaXJlc3RhcnRyQXBwLnN5bnRoKCk7XG5cbiAgICBlbXB0eVJlbmRlcmVkQ2xhaW1zKCk7XG5cbiAgICAvLyBDaGFuZ2UgdGhlIGNsYWltcyBwYXRoIHRvIHRoZSBQUiBicmFuY2hcbiAgICBzZXRQYXRoKFwiY2xhaW1zXCIsIGNsYWltUGF0aEZyb21QUilcblxuICAgIGNvbnN0IGFwcDIgPSBuZXcgQXBwKHtcbiAgICAgICAgb3V0ZGlyOiBQUl9CUkFOQ0hfT1VUUFVUX0RJUixcbiAgICAgICAgb3V0cHV0RmlsZUV4dGVuc2lvbjogXCIueWFtbFwiLFxuICAgICAgICB5YW1sT3V0cHV0VHlwZTogWWFtbE91dHB1dFR5cGUuRklMRV9QRVJfUkVTT1VSQ0UsXG4gICAgfSlcbiAgICAvLyBSZW5kZXIgdGhlIFBSIGJyYW5jaFxuICAgIGNvbnN0IHJlbmRlckZyb21QUkJyYW5jaDogYW55ID0gYXdhaXQgcmVuZGVyKG5ldyBBcHAoKSwgYXBwMilcblxuICAgIGFwcDIuc3ludGgoKTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVzb3VyY2VzIGZyb20gdGhlIG1haW4gYnJhbmNoXG4gICAgZm9yKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZW5kZXJGcm9tTWFpbkJyYW5jaCkpe1xuXG4gICAgICAgIGNvbnN0IGtpbmQgPSByZW5kZXJGcm9tTWFpbkJyYW5jaFtrZXldLmtpbmRcblxuICAgICAgICAvL0NoZWNrIGlmIHRoZSByZXNvdXJjZSBpcyBwcmVzZW50IGluIHRoZSBQUiBicmFuY2hcbiAgICAgICAgaWYocmVuZGVyRnJvbVBSQnJhbmNoW2tleV0pe1xuXG4gICAgICAgICAgICAvL0NoZWNrIGlmIHRoZSByZXNvdXJjZXMgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgY29uc3QgY29tcGFyZVJlc3VsdCA9IGNvbXBhcmVDUnMoXG5cbiAgICAgICAgICAgICAgICByZW5kZXJGcm9tTWFpbkJyYW5jaFtrZXldLFxuXG4gICAgICAgICAgICAgICAgcmVuZGVyRnJvbVBSQnJhbmNoW2tleV1cblxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZihjb21wYXJlUmVzdWx0LmNoYW5nZWQpe1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWZmZWN0ZWRSZXBvID0gZ2V0QWZmZWN0ZWRXZXRSZXBvc2l0b3J5KFxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAga2luZFxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIGFmZmVjdGVkV2V0UmVwb3NpdG9yaWVzW2FmZmVjdGVkUmVwby5yZXBvXSA9IGFmZmVjdGVkUmVwby53b3JrZmxvd3Mubm90aWZ5XG5cbiAgICAgICAgICAgICAgICBhZmZlY3RlZFJlc291cmNlc1trZXldID0ge1xuXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZXM6IGNvbXBhcmVSZXN1bHQuY2hhbmdlcyxcblxuICAgICAgICAgICAgICAgICAgICByZWFzb246IFwiTU9ESUZJRURcIlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSWYgdGhlIHJlc291cmNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBQUiBicmFuY2gsXG4gICAgICAgICAgICAgKiBpdCBtZWFucyB0aGF0IGl0IGhhcyBiZWVuIGRlbGV0ZWQsIHNvIGl0IGlzIGFmZmVjdGVkXG4gICAgICAgICAgICAqKi9cbiAgICAgICAgICAgIGNvbnN0IGFmZmVjdGVkUmVwbyA9IGdldEFmZmVjdGVkV2V0UmVwb3NpdG9yeShcbiAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgd2V0UmVwb3NpdG9yaWVzQ29uZmlnLFxuICAgICAgICAgICAgICAgIGtpbmRcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWZmZWN0ZWRXZXRSZXBvc2l0b3JpZXNbYWZmZWN0ZWRSZXBvLnJlcG9dID0gYWZmZWN0ZWRSZXBvLndvcmtmbG93cy5ub3RpZnlcblxuICAgICAgICAgICAgYWZmZWN0ZWRSZXNvdXJjZXNba2V5XSA9IHtcblxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IFtdLFxuXG4gICAgICAgICAgICAgICAgcmVhc29uOiBcIkRFTEVURURfRlJPTV9QUlwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGUgb3ZlciB0aGUgcmVzb3VyY2VzIGZyb20gdGhlIFBSIGJyYW5jaCBpblxuICAgICAqIGNhc2UgdGhlcmUgYXJlIHJlc291cmNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgbWFpbiBicmFuY2gsXG4gICAgICogdGhhdCBtZWFucyB0aGF0IHRoZXkgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBQUiBicmFuY2guXG4gICAgICovXG4gICAgZm9yKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZW5kZXJGcm9tUFJCcmFuY2gpKXtcblxuICAgICAgICBjb25zdCBraW5kID0gcmVuZGVyRnJvbVBSQnJhbmNoW2tleV0ua2luZFxuXG4gICAgICAgIC8vQ2hlY2sgaWYgdGhlIHJlc291cmNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBtYWluIGJyYW5jaFxuICAgICAgICBpZighcmVuZGVyRnJvbU1haW5CcmFuY2hba2V5XSl7XG5cbiAgICAgICAgICAgIGNvbnN0IGFmZmVjdGVkUmVwbyA9IGdldEFmZmVjdGVkV2V0UmVwb3NpdG9yeShcbiAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgd2V0UmVwb3NpdG9yaWVzQ29uZmlnLFxuICAgICAgICAgICAgICAgIGtpbmRcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWZmZWN0ZWRXZXRSZXBvc2l0b3JpZXNbYWZmZWN0ZWRSZXBvLnJlcG9dID0gYWZmZWN0ZWRSZXBvLndvcmtmbG93cy5ub3RpZnlcblxuICAgICAgICAgICAgYWZmZWN0ZWRSZXNvdXJjZXNba2V5XSA9IHtcblxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IFtdLFxuXG4gICAgICAgICAgICAgICAgcmVhc29uOiBcIkFEREVEX1RPX1BSXCJcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICAgIHJlcG9zOiBhZmZlY3RlZFdldFJlcG9zaXRvcmllcyxcblxuICAgICAgICBjaGFuZ2VkUmVzb3VyY2VzOiBhZmZlY3RlZFJlc291cmNlc1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ2hlY2sgaWYgdHdvIGNycyBhcmUgZGlmZmVyZW50XG4gKiBAcGFyYW0gY3JWMSBGaXJzdCBjclxuICogQHBhcmFtIGNyVjIgU2Vjb25kIGNyXG4gKiAqL1xuZnVuY3Rpb24gY29tcGFyZUNScyhjclYxOiBhbnksIGNyVjI6IGFueSkgOiB7IGNoYW5nZWQ6IGJvb2xlYW4sIGNoYW5nZXM6IGZhc3RKc29uUGF0Y2guT3BlcmF0aW9uW10gfSB7XG5cbiAgICBpZihjclYxLmtpbmQgIT09IGNyVjIua2luZCl7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLaW5kIG1pc21hdGNoIG9uIGNvbXBhcmU6ICR7Y3JWMS5raW5kfSAhPT0gJHtjclYyLmtpbmR9YClcblxuICAgIH1cblxuICAgIGNvbnN0IGNvbXBhcmVSZXN1bHQgPSBmYXN0SnNvblBhdGNoXG5cbiAgICAuY29tcGFyZShjclYxLCBjclYyKVxuXG4gICAgLmZpbHRlcihcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyBhIGZha2UgcmVuZGVyLCBzbyB3ZSBkb24ndCB3YW50IHRvIGNvbXBhcmVcbiAgICAgICAgICogdGhlIHRmU3RhdGVLZXksIGJlY2F1c2UgaW4gdGhlIGNsYWltcyByZXBvIHdlIGRvbid0XG4gICAgICAgICAqIGhhdmUgdGhlIHByZXZpb3VzIENScy5cbiAgICAgICAgICovXG4gICAgICAgIChvcDogYW55KSA9PlxuICAgICAgICAgIG9wLnBhdGggIT09IFwiL3NwZWMvZmlyZXN0YXJ0ci90ZlN0YXRlS2V5XCIgJiZcbiAgICAgICAgICBvcC5wYXRoICE9PSBcIi9tZXRhZGF0YS9uYW1lXCIgJiZcbiAgICAgICAgICBvcC5wYXRoICE9PSBcIi9zcGVjL3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmL25hbWVcIlxuXG4gICAgKVxuXG4gICAgcmV0dXJuIHsgY2hhbmdlZDogY29tcGFyZVJlc3VsdC5sZW5ndGggIT09IDAsIGNoYW5nZXM6IGNvbXBhcmVSZXN1bHQgfVxuXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlV2V0QWZmZWN0ZWRSZXBvc2l0b3JpZXNGaWxlKHJlcG9zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCBwYXRoOiBzdHJpbmcpIHtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG5cbiAgICAgICAgcGF0aCxcblxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXBvcywgbnVsbCwgNClcblxuICAgIClcblxufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Db21wYXJlcihcbiAgICBjbGFpbVBhdGhGcm9tTWFpbjogc3RyaW5nLFxuICAgIGNsYWltUGF0aEZyb21QUjogc3RyaW5nLFxuICAgIGNsYWltc0RlZmF1bHRzUGF0aDogc3RyaW5nLFxuICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZ1BhdGg6IHN0cmluZyxcbiAgICBwYXRoRm9yQWZmZWN0ZWRSZXBvc0ZpbGU6IHN0cmluZ1xuKSB7XG5cblxuICAgIHNldFBhdGgoXCJjbGFpbXNEZWZhdWx0c1wiLCBjbGFpbXNEZWZhdWx0c1BhdGgpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QWZmZWN0ZWRSZXBvc2l0b3JpZXMoXG5cbiAgICAgICAgY2xhaW1QYXRoRnJvbU1haW4sXG5cbiAgICAgICAgY2xhaW1QYXRoRnJvbVBSLFxuXG4gICAgICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZ1BhdGhcbiAgICApO1xuXG4gICAgd3JpdGVXZXRBZmZlY3RlZFJlcG9zaXRvcmllc0ZpbGUocmVzdWx0LnJlcG9zLCBwYXRoRm9yQWZmZWN0ZWRSZXBvc0ZpbGUpO1xuXG59XG4iXX0=
|
|
232630
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcGFyZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBNEM7QUFDNUMsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUNoQywrREFBaUQ7QUFDakQsbUNBQStFO0FBQy9FLHNDQUFvQztBQUNwQyxtREFBOEM7QUFDOUMsZ0RBQXFEO0FBd0JyRCxNQUFNLHNCQUFzQixHQUFXLGlDQUFpQyxDQUFDO0FBQ3pFLE1BQU0sb0JBQW9CLEdBQVcsK0JBQStCLENBQUM7QUFJckU7Ozs7O0tBS0s7QUFDRSxLQUFLLFVBQVUsdUJBQXVCLENBRXpDLGlCQUF5QixFQUV6QixlQUF1QixFQUV2Qix5QkFBaUM7SUFJakM7OztPQUdHO0lBQ0gsSUFBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUV6QyxFQUFFLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FFdEM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSx1QkFBdUIsR0FBOEIsRUFBRSxDQUFBO0lBRTdEOzs7OztPQUtHO0lBQ0gsTUFBTSxpQkFBaUIsR0FBc0IsRUFBRSxDQUFBO0lBRS9DLG1DQUFtQztJQUNuQyxNQUFNLHFCQUFxQixHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWxHLHFEQUFxRDtJQUNyRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTNELHlDQUF5QztJQUN6QyxJQUFBLGdCQUFPLEVBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFckMseUJBQXlCO0lBQ3pCLElBQUEsa0NBQTBCLEdBQUUsQ0FBQztJQUU3QixNQUFN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QUFDLENBQUMsQ0FFakMsQ0FBQTtBQUVMLENBQUM7QUFWRCw0RUFVQztBQUdNLEtBQUssVUFBVSxXQUFXLENBQzdCLGlCQUF5QixFQUN6QixlQUF1QixFQUN2QixrQkFBMEIsRUFDMUIseUJBQWlDLEVBQ2pDLHdCQUFnQztJQUloQyxJQUFBLGdCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUU5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixDQUV4QyxpQkFBaUIsRUFFakIsZUFBZSxFQUVmLHlCQUF5QixDQUM1QixDQUFDO0lBRUYsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBRTdFLENBQUM7QUF0QkQsa0NBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwLCBZYW1sT3V0cHV0VHlwZSB9IGZyb20gXCJjZGs4c1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gXCJqcy15YW1sXCI7XG5pbXBvcnQgKiBhcyBmYXN0SnNvblBhdGNoICBmcm9tIFwiZmFzdC1qc29uLXBhdGNoXCJcbmltcG9ydCB7IGNvbmZpZ3VyZVBhdGhzRm9yUmVuZGVyaW5nLCBnZXRBZmZlY3RlZFdldFJlcG9zaXRvcnkgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgc2V0UGF0aCB9IGZyb20gXCIuLi9jb25maWdcIjtcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJlclwiO1xuaW1wb3J0IHsgZW1wdHlSZW5kZXJlZENsYWltcyB9IGZyb20gXCIuLi9yZWZyZXNvbHZlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIHdpdGggdGhlIGFmZmVjdGVkIHdldCByZXBvc2l0b3JpZXNcbiAqL1xudHlwZSBBZmZlY3RlZFJlc291cmNlID0ge1xuXG4gICAgLy8gQ2hhbmdlcyBpbiB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgZm9ybWF0IG9mIGZhc3QtanNvbi1wYXRjaFxuICAgIGNoYW5nZXM6IGZhc3RKc29uUGF0Y2guT3BlcmF0aW9uW10sXG5cbiAgICAvLyBUaGUgcmVhc29uIHdoeSB0aGUgcmVzb3VyY2UgaXMgYWZmZWN0ZWRcbiAgICByZWFzb246IFwiTU9ESUZJRURcIiB8IFwiREVMRVRFRF9GUk9NX1BSXCIgIHwgXCJBRERFRF9UT19QUlwiXG5cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT2JqZWN0IHdpdGggdGhlIGFmZmVjdGVkIHdldCByZXBvc2l0b3JpZXNcbiAqL1xudHlwZSBBZmZlY3RlZFJlc291cmNlcyA9IHtcblxuICAgIFtrZXk6IHN0cmluZ106IEFmZmVjdGVkUmVzb3VyY2VcblxufVxuXG5jb25zdCBNQUlOX0JSQU5DSF9PVVRQVVRfRElSOiBzdHJpbmcgPSBcIi90bXAvcmVzb3VyY2VzX2Zyb21fbWFpbl9icmFuY2hcIjtcbmNvbnN0IFBSX0JSQU5DSF9PVVRQVVRfRElSOiBzdHJpbmcgPSBcIi90bXAvcmVzb3VyY2VzX2Zyb21fcHJfYnJhbmNoXCI7XG5cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZXQgdGhlIGFmZmVjdGVkIHdldCByZXBvc2l0b3JpZXMgYnkgYSBQUlxuICogQHBhcmFtIGNsYWltUGF0aEZyb21NYWluIFBhdGggdG8gdGhlIGNsYWltcyBmcm9tIHRoZSBtYWluIGJyYW5jaFxuICogQHBhcmFtIGNsYWltUGF0aEZyb21QUiBQYXRoIHRvIHRoZSBjbGFpbXMgZnJvbSB0aGUgUFIgYnJhbmNoXG4gKiBAcGFyYW0gd2V0UmVwb3NpdG9yaWVzQ29uZmlnUGF0aCBQYXRoIHRvIHRoZSB3ZXQgcmVwb3NpdG9yaWVzIGNvbmZpZ1xuICogKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBZmZlY3RlZFJlcG9zaXRvcmllcyhcblxuICAgIGNsYWltUGF0aEZyb21NYWluOiBzdHJpbmcsXG5cbiAgICBjbGFpbVBhdGhGcm9tUFI6IHN0cmluZyxcblxuICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZ1BhdGg6IHN0cmluZ1xuXG4pIDogUHJvbWlzZTx7IHJlcG9zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ30sIGNoYW5nZWRSZXNvdXJjZXM6IEFmZmVjdGVkUmVzb3VyY2VzIH0+IHtcblxuICAgIC8qXG4gICAgICogV2UgbmVlZCB0aGlzIGZvbGRlciB0byBleGlzdCwgc28gd2UgY3JlYXRlIGl0IGJlZm9yZWhhbmRcbiAgICAgKlxuICAgICAqL1xuICAgIGlmKCFmcy5leGlzdHNTeW5jKE1BSU5fQlJBTkNIX09VVFBVVF9ESVIpKSB7XG5cbiAgICAgIGZzLm1rZGlyU3luYyhNQUlOX0JSQU5DSF9PVVRQVVRfRElSKTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9iamVjdCB3aXRoIHRoZSBhZmZlY3RlZCB3ZXQgcmVwb3NpdG9yaWVzXG4gICAgICogVGhpcyB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHRvIHRyaWdnZXJcbiAgICAgKiB0aGUgcGlwZWxpbmVzIG9mIHRoZSBhZmZlY3RlZCB3ZXQgcmVwb3NpdG9yaWVzXG4gICAgICovXG4gICAgY29uc3QgYWZmZWN0ZWRXZXRSZXBvc2l0b3JpZXM6ICB7IFtrZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fVxuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHdpdGggdGhlIGFmZmVjdGVkIHJlc291cmNlc1xuICAgICAqIFRoaXMgd2lsbCBiZSByZXR1cm5lZCBmb3IgYSBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2VzLFxuICAgICAqIGFuZCB0aGUgdXNlciB3aWxsIGJlIGFibGUgdG8gc2VlIHRoZSBjaGFuZ2VzIGluIHRoZVxuICAgICAqIHBpcGVsaW5lIGxvZ3MuXG4gICAgICovXG4gICAgY29uc3QgYWZmZWN0ZWRSZXNvdXJjZXM6IEFmZmVjdGVkUmVzb3VyY2VzID0ge31cblxuICAgIC8vIExvYWQgdGhlIHdldCByZXBvc2l0b3JpZXMgY29uZmlnXG4gICAgY29uc3Qgd2V0UmVwb3NpdG9yaWVzQ29uZmlnOiBhbnkgPSB5YW1sLmxvYWQoZnMucmVhZEZpbGVTeW5jKHdldFJlcG9zaXRvcmllc0NvbmZpZ1BhdGgsIFwidXRmLThcIikpO1xuXG4gICAgLy8gR2V0IHRoZSBwcm92aWRlcnMgZnJvbSB0aGUgd2V0IHJlcG9zaXRvcmllcyBjb25maWdcbiAgICBjb25zdCBwcm92aWRlcnMgPSBPYmplY3Qua2V5cyh3ZXRSZXBvc2l0b3JpZXNDb25maWcuc3RhdGVzKVxuXG4gICAgLy8gU2V0IHRoZSBjbGFpbXMgcGF0aCB0byB0aGUgbWFpbiBicmFuY2hcbiAgICBzZXRQYXRoKFwiY2xhaW1zXCIsIGNsYWltUGF0aEZyb21NYWluKTtcblxuICAgIC8vIENvbmZpZ3VyZSB0aGUgcmVuZGVyZXJcbiAgICBjb25maWd1cmVQYXRoc0ZvclJlbmRlcmluZygpO1xuXG4gICAgY29uc3QgbWFpbkJyYW5jaEZpcmVzdGFydHJBcHAgPSBuZXcgQXBwKHtcbiAgICAgICAgb3V0ZGlyOiBNQUlOX0JSQU5DSF9PVVRQVVRfRElSLFxuICAgICAgICBvdXRwdXRGaWxlRXh0ZW5zaW9uOiBcIi55YW1sXCIsXG4gICAgICAgIHlhbWxPdXRwdXRUeXBlOiBZYW1sT3V0cHV0VHlwZS5GSUxFX1BFUl9SRVNPVVJDRSxcbiAgICB9KVxuXG4gICAgY29uc3QgbWFpbkJyYW5jaENhdGFsb2dBcHAgPSBuZXcgQXBwKHtcbiAgICAgICAgb3V0ZGlyOiBcIi90bXAvLmNhdGFsb2dcIixcbiAgICAgICAgb3V0cHV0RmlsZUV4dGVuc2lvbjogXCIueWFtbFwiLFxuICAgICAgICB5YW1sT3V0cHV0VHlwZTogWWFtbE91dHB1dFR5cGUuRklMRV9QRVJfUkVTT1VSQ0UsXG4gICAgfSlcblxuICAgIC8vIFJlbmRlciB0aGUgbWFpbiBicmFuY2hcbiAgICBsZXQgcmVuZGVyRnJvbU1haW5CcmFuY2g6IGFueSA9IGF3YWl0IHJlbmRlcihtYWluQnJhbmNoQ2F0YWxvZ0FwcCwgbWFpbkJyYW5jaEZpcmVzdGFydHJBcHApXG5cbiAgICBtYWluQnJhbmNoRmlyZXN0YXJ0ckFwcC5zeW50aCgpO1xuXG4gICAgZW1wdHlSZW5kZXJlZENsYWltcygpO1xuXG4gICAgLy8gQ2hhbmdlIHRoZSBjbGFpbXMgcGF0aCB0byB0aGUgUFIgYnJhbmNoXG4gICAgc2V0UGF0aChcImNsYWltc1wiLCBjbGFpbVBhdGhGcm9tUFIpXG5cbiAgICBjb25zdCBhcHAyID0gbmV3IEFwcCh7XG4gICAgICAgIG91dGRpcjogUFJfQlJBTkNIX09VVFBVVF9ESVIsXG4gICAgICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcbiAgICAgICAgeWFtbE91dHB1dFR5cGU6IFlhbWxPdXRwdXRUeXBlLkZJTEVfUEVSX1JFU09VUkNFLFxuICAgIH0pXG4gICAgLy8gUmVuZGVyIHRoZSBQUiBicmFuY2hcbiAgICBjb25zdCByZW5kZXJGcm9tUFJCcmFuY2g6IGFueSA9IGF3YWl0IHJlbmRlcihuZXcgQXBwKCksIGFwcDIpXG5cbiAgICBhcHAyLnN5bnRoKCk7XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlc291cmNlcyBmcm9tIHRoZSBtYWluIGJyYW5jaFxuICAgIGZvcihjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVuZGVyRnJvbU1haW5CcmFuY2gpKXtcblxuICAgICAgICBjb25zdCBraW5kID0gcmVuZGVyRnJvbU1haW5CcmFuY2hba2V5XS5raW5kXG5cbiAgICAgICAgLy9DaGVjayBpZiB0aGUgcmVzb3VyY2UgaXMgcHJlc2VudCBpbiB0aGUgUFIgYnJhbmNoXG4gICAgICAgIGlmKHJlbmRlckZyb21QUkJyYW5jaFtrZXldKXtcblxuICAgICAgICAgICAgLy9DaGVjayBpZiB0aGUgcmVzb3VyY2VzIGFyZSBkaWZmZXJlbnRcbiAgICAgICAgICAgIGNvbnN0IGNvbXBhcmVSZXN1bHQgPSBjb21wYXJlQ1JzKFxuXG4gICAgICAgICAgICAgICAgcmVuZGVyRnJvbU1haW5CcmFuY2hba2V5XSxcblxuICAgICAgICAgICAgICAgIHJlbmRlckZyb21QUkJyYW5jaFtrZXldXG5cbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgaWYoY29tcGFyZVJlc3VsdC5jaGFuZ2VkKXtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGFmZmVjdGVkUmVwbyA9IGdldEFmZmVjdGVkV2V0UmVwb3NpdG9yeShcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgICAgICB3ZXRSZXBvc2l0b3JpZXNDb25maWcsXG4gICAgICAgICAgICAgICAgICAgIGtpbmRcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICBhZmZlY3RlZFdldFJlcG9zaXRvcmllc1thZmZlY3RlZFJlcG8ucmVwb10gPSBhZmZlY3RlZFJlcG8ud29ya2Zsb3dzLm5vdGlmeVxuXG4gICAgICAgICAgICAgICAgYWZmZWN0ZWRSZXNvdXJjZXNba2V5XSA9IHtcblxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzOiBjb21wYXJlUmVzdWx0LmNoYW5nZXMsXG5cbiAgICAgICAgICAgICAgICAgICAgcmVhc29uOiBcIk1PRElGSUVEXCJcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElmIHRoZSByZXNvdXJjZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgUFIgYnJhbmNoLFxuICAgICAgICAgICAgICogaXQgbWVhbnMgdGhhdCBpdCBoYXMgYmVlbiBkZWxldGVkLCBzbyBpdCBpcyBhZmZlY3RlZFxuICAgICAgICAgICAgKiovXG4gICAgICAgICAgICBjb25zdCBhZmZlY3RlZFJlcG8gPSBnZXRBZmZlY3RlZFdldFJlcG9zaXRvcnkoXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZyxcbiAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGFmZmVjdGVkV2V0UmVwb3NpdG9yaWVzW2FmZmVjdGVkUmVwby5yZXBvXSA9IGFmZmVjdGVkUmVwby53b3JrZmxvd3Mubm90aWZ5XG5cbiAgICAgICAgICAgIGFmZmVjdGVkUmVzb3VyY2VzW2tleV0gPSB7XG5cbiAgICAgICAgICAgICAgICBjaGFuZ2VzOiBbXSxcblxuICAgICAgICAgICAgICAgIHJlYXNvbjogXCJERUxFVEVEX0ZST01fUFJcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlIG92ZXIgdGhlIHJlc291cmNlcyBmcm9tIHRoZSBQUiBicmFuY2ggaW5cbiAgICAgKiBjYXNlIHRoZXJlIGFyZSByZXNvdXJjZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgaW4gdGhlIG1haW4gYnJhbmNoLFxuICAgICAqIHRoYXQgbWVhbnMgdGhhdCB0aGV5IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgUFIgYnJhbmNoLlxuICAgICAqL1xuICAgIGZvcihjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVuZGVyRnJvbVBSQnJhbmNoKSl7XG5cbiAgICAgICAgY29uc3Qga2luZCA9IHJlbmRlckZyb21QUkJyYW5jaFtrZXldLmtpbmRcblxuICAgICAgICAvL0NoZWNrIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWFpbiBicmFuY2hcbiAgICAgICAgaWYoIXJlbmRlckZyb21NYWluQnJhbmNoW2tleV0pe1xuXG4gICAgICAgICAgICBjb25zdCBhZmZlY3RlZFJlcG8gPSBnZXRBZmZlY3RlZFdldFJlcG9zaXRvcnkoXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZyxcbiAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGFmZmVjdGVkV2V0UmVwb3NpdG9yaWVzW2FmZmVjdGVkUmVwby5yZXBvXSA9IGFmZmVjdGVkUmVwby53b3JrZmxvd3Mubm90aWZ5XG5cbiAgICAgICAgICAgIGFmZmVjdGVkUmVzb3VyY2VzW2tleV0gPSB7XG5cbiAgICAgICAgICAgICAgICBjaGFuZ2VzOiBbXSxcblxuICAgICAgICAgICAgICAgIHJlYXNvbjogXCJBRERFRF9UT19QUlwiXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcblxuICAgICAgICByZXBvczogYWZmZWN0ZWRXZXRSZXBvc2l0b3JpZXMsXG5cbiAgICAgICAgY2hhbmdlZFJlc291cmNlczogYWZmZWN0ZWRSZXNvdXJjZXNcbiAgICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENoZWNrIGlmIHR3byBjcnMgYXJlIGRpZmZlcmVudFxuICogQHBhcmFtIGNyVjEgRmlyc3QgY3JcbiAqIEBwYXJhbSBjclYyIFNlY29uZCBjclxuICogKi9cbmZ1bmN0aW9uIGNvbXBhcmVDUnMoY3JWMTogYW55LCBjclYyOiBhbnkpIDogeyBjaGFuZ2VkOiBib29sZWFuLCBjaGFuZ2VzOiBmYXN0SnNvblBhdGNoLk9wZXJhdGlvbltdIH0ge1xuXG4gICAgaWYoY3JWMS5raW5kICE9PSBjclYyLmtpbmQpe1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgS2luZCBtaXNtYXRjaCBvbiBjb21wYXJlOiAke2NyVjEua2luZH0gIT09ICR7Y3JWMi5raW5kfWApXG5cbiAgICB9XG5cbiAgICBjb25zdCBjb21wYXJlUmVzdWx0ID0gZmFzdEpzb25QYXRjaFxuXG4gICAgLmNvbXBhcmUoY3JWMSwgY3JWMilcblxuICAgIC5maWx0ZXIoXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoaXMgaXMgYSBmYWtlIHJlbmRlciwgc28gd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlXG4gICAgICAgICAqIHRoZSB0ZlN0YXRlS2V5LCBiZWNhdXNlIGluIHRoZSBjbGFpbXMgcmVwbyB3ZSBkb24ndFxuICAgICAgICAgKiBoYXZlIHRoZSBwcmV2aW91cyBDUnMuXG4gICAgICAgICAqL1xuICAgICAgICAob3A6IGFueSkgPT5cbiAgICAgICAgICBvcC5wYXRoICE9PSBcIi9zcGVjL2ZpcmVzdGFydHIvdGZTdGF0ZUtleVwiICYmXG4gICAgICAgICAgb3AucGF0aCAhPT0gXCIvbWV0YWRhdGEvbmFtZVwiICYmXG4gICAgICAgICAgb3AucGF0aCAhPT0gXCIvc3BlYy93cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZi9uYW1lXCJcblxuICAgIClcblxuICAgIHJldHVybiB7IGNoYW5nZWQ6IGNvbXBhcmVSZXN1bHQubGVuZ3RoICE9PSAwLCBjaGFuZ2VzOiBjb21wYXJlUmVzdWx0IH1cblxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVdldEFmZmVjdGVkUmVwb3NpdG9yaWVzRmlsZShyZXBvczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgcGF0aDogc3RyaW5nKSB7XG5cbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuXG4gICAgICAgIHBhdGgsXG5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVwb3MsIG51bGwsIDQpXG5cbiAgICApXG5cbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ29tcGFyZXIoXG4gICAgY2xhaW1QYXRoRnJvbU1haW46IHN0cmluZyxcbiAgICBjbGFpbVBhdGhGcm9tUFI6IHN0cmluZyxcbiAgICBjbGFpbXNEZWZhdWx0c1BhdGg6IHN0cmluZyxcbiAgICB3ZXRSZXBvc2l0b3JpZXNDb25maWdQYXRoOiBzdHJpbmcsXG4gICAgcGF0aEZvckFmZmVjdGVkUmVwb3NGaWxlOiBzdHJpbmdcbikge1xuXG5cbiAgICBzZXRQYXRoKFwiY2xhaW1zRGVmYXVsdHNcIiwgY2xhaW1zRGVmYXVsdHNQYXRoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEFmZmVjdGVkUmVwb3NpdG9yaWVzKFxuXG4gICAgICAgIGNsYWltUGF0aEZyb21NYWluLFxuXG4gICAgICAgIGNsYWltUGF0aEZyb21QUixcblxuICAgICAgICB3ZXRSZXBvc2l0b3JpZXNDb25maWdQYXRoXG4gICAgKTtcblxuICAgIHdyaXRlV2V0QWZmZWN0ZWRSZXBvc2l0b3JpZXNGaWxlKHJlc3VsdC5yZXBvcywgcGF0aEZvckFmZmVjdGVkUmVwb3NGaWxlKTtcblxufVxuIl19
|
|
232586
232631
|
|
|
232587
232632
|
/***/ }),
|
|
232588
232633
|
|
|
@@ -234112,7 +234157,7 @@ UUIDInitializer.applicableKinds = [
|
|
|
234112
234157
|
|
|
234113
234158
|
/***/ }),
|
|
234114
234159
|
|
|
234115
|
-
/***/
|
|
234160
|
+
/***/ 63530:
|
|
234116
234161
|
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
|
|
234117
234162
|
|
|
234118
234163
|
"use strict";
|
|
@@ -234529,7 +234574,7 @@ function getOrg() {
|
|
|
234529
234574
|
const groupOrg = catalog_common_1.default.environment.getFromEnvironmentWithDefault(catalog_common_1.default.types.envVars.org, "");
|
|
234530
234575
|
return groupOrg;
|
|
234531
234576
|
}
|
|
234532
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUFvRDtBQUNwRCx1Q0FBMEU7QUFDMUUsb0VBQW1DO0FBQ25DLDJDQUE0QjtBQUM1QixpREFBcUc7QUFJckcscUNBQWdHO0FBRWhHLG9GQUFpRjtBQUNqRix1Q0FBd0I7QUFDeEIsK0RBQWdEO0FBQ2hELGtEQUF5QjtBQUN6Qiw4Q0FBb0U7QUFFcEUsOENBQXFEO0FBQ3JELHFDQUEwQztBQUMxQyx5REFBbUM7QUFDbkMsNkNBQXFEO0FBRXJELCtDQUEyQztBQUMzQyw2Q0FBbUQ7QUFDbkQsc0RBQTZEO0FBQzdELHdEQUEyRDtBQUczRCxNQUFNLEdBQUcsR0FBRyxJQUFBLGVBQUssRUFBQyw0QkFBNEIsQ0FBQyxDQUFBO0FBRS9DLE1BQU0sVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBSTlDOzs7R0FHRztBQUdILE1BQU0sYUFBYSxHQUFvQjtJQUV0QyxJQUFJLDRCQUFrQixFQUFFO0NBRXhCLENBQUE7QUFFRDs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxXQUFXO0lBQ2hDLE1BQU0sTUFBTSxHQUFVLEVBQUUsQ0FBQTtJQUV4QixNQUFNLElBQUEsZUFBSyxFQUFDLElBQUEsZ0JBQU8sRUFBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1FBRWhELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUU5QixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQWEsRUFBRSxJQUFRLEVBQUUsRUFBRTtRQUVwQyxNQUFNLE1BQU0sR0FBUSx3QkFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FB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LE1BQU07SUFHZCxNQUFNLFFBQVEsR0FBVyx3QkFBTSxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsQ0FFdEUsd0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFFeEIsRUFBRSxDQUVILENBQUE7SUFFRCxPQUFPLFFBQVEsQ0FBQTtBQUVqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmF3bCwgY3Jhd2xXaXRoRXhjbHVzaW9uc30gZnJvbSBcIi4vY3Jhd2xlclwiXG5pbXBvcnQgeyBTRUNUSU9OU19CWV9GSUxFX05BTUUsIFNDSEVNQVNfQllfU0VDVElPTl9OQU1FIH0gZnJvbSBcIi4vZ2xvYmFsc1wiXG5pbXBvcnQgY29tbW9uIGZyb20gXCJjYXRhbG9nX2NvbW1vblwiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IElOSVRJQUxJWkVSUywgSU5JVElBTElaRVJTX0JZX0ZJTEVfTkFNRSwgU0NIRU1BU19CWV9JTklUSUFMSVpFUl9OQU1FIH0gZnJvbSBcIi4vaW5pdGlhbGl6ZXJzXCJcbmltcG9ydCB7IFJlbmRlckNsYWltRGF0YSwgUmVuZGVyQ2xhaW1LZXksIFJlbmRlckNsYWltcyB9IGZyb20gXCIuL3JlbmRlcmVyXCJcbmltcG9ydCB7IEluaXRpYWxpemVyUGF0Y2hlcyB9IGZyb20gXCIuL2luaXRpYWxpemVycy9iYXNlXCJcbmltcG9ydCB7IEdsb2JhbFNlY3Rpb24gfSBmcm9tIFwiLi9nbG9iYWxzL2Jhc2VcIlxuaW1wb3J0IHsgZ2V0QWRkaXRpb25hbFBhdGhzLCBnZXRDb25maWd1cmVkUHJvdmlkZXIsIGdldFBhdGgsIGdldFJlbmFtZXNFbmFibGVkIH0gZnJvbSBcIi4vY29uZmlnXCJcbmltcG9ydCB7IE92ZXJyaWRlclBhdGNoZXMgfSBmcm9tIFwiLi9vdmVycmlkZXJzL2Jhc2VcIlxuaW1wb3J0IHsgR2l0aHViUmVwb3NpdG9yeU92ZXJyaWRlciB9IGZyb20gXCIuL292ZXJyaWRlcnMvZ2l0aHViUmVwb3NpdG9yeU92ZXJyaWRlXCJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBmYXN0SnNvblBhdGNoIGZyb20gXCJmYXN0LWpzb24tcGF0Y2hcIlxuaW1wb3J0IERlYnVnIGZyb20gXCJkZWJ1Z1wiXG5pbXBvcnQgeyBGaXJlc3RhcnRyQWxsQ2xhaW0sIElWaXJ0dWFsQ2xhaW0gfSBmcm9tIFwiLi9jbGFpbXMvdmlydHVhbFwiXG5pbXBvcnQgeyBJQ2xhaW0gfSBmcm9tIFwiLi9jbGFpbXMvYmFzZVwiXG5pbXBvcnQgeyBVVUlESW5pdGlhbGl6ZXIgfSBmcm9tIFwiLi9pbml0aWFsaXplcnMvdXVpZFwiXG5pbXBvcnQgeyBDbGFpbVZhbGlkYXRpb24gfSBmcm9tIFwiLi9jbGFpbXNcIlxuaW1wb3J0ICBjbGFpbXMgZnJvbSBcIi4vY2xhaW1zL2Jhc2VcIlxuaW1wb3J0IHsgc3RyaXBLbm93blJlbGF0aW9ucyB9IGZyb20gXCIuL3V0aWxzL2NyVXRpbHNcIlxuaW1wb3J0IHsgTm9ybWFsaXplciB9IGZyb20gXCIuL25vcm1hbGl6ZXJzL2Jhc2VcIlxuaW1wb3J0IHsgTk9STUFMSVpFUlMgfSBmcm9tIFwiLi9ub3JtYWxpemVyc1wiXG5pbXBvcnQgeyBOYW1lTm9ybWFsaXplciB9IGZyb20gXCIuL25vcm1hbGl6ZXJzL25hbWVcIlxuaW1wb3J0IHsgSW5pdGlhbGl6ZXJDbGFpbVJlZiB9IGZyb20gXCIuL2luaXRpYWxpemVycy9jbGFpbVJlZlwiXG5pbXBvcnQgeyBJbml0aWFsaXplckRlZmF1bHQgfSBmcm9tIFwiLi9kZWZhdWx0cy9pbml0aWFsaXplclwiXG5cblxuY29uc3QgbG9nID0gRGVidWcoJ2ZpcmVzdGFydHI6cmVuZGVyZXI6bG9hZGVyJylcblxuY29uc3QgaXNZYW1sRmlsZSA9IG5ldyBSZWdFeHAoL1xcLih5YW1sfHltbCkkLylcblxuXG5cbi8qKlxuICpcbiAqIEByZXR1cm5zIFZpcnR1YWwgQ2xhaW1zXG4gKi9cblxuXG5jb25zdCB2aXJ0dWFsQ2xhaW1zOiBJVmlydHVhbENsYWltW10gPSBbXG5cblx0bmV3IEZpcmVzdGFydHJBbGxDbGFpbSgpXG5cbl1cblxuLypcbiAqIEZ1bmN0aW9uIHRvIGxvYWQgc3lzdGVtIGNsYWltcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIE91dHB1dDpcbiAqIC0gQW4gYW55W10sIHdpdGggYWxsIHRoZSBzeXN0ZW1zIGxvYWRlZC5cbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU3lzdGVtcygpIHtcblx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdXG5cblx0YXdhaXQgY3Jhd2woZ2V0UGF0aChcInN5c3RlbXNcIiksIChlbnRyeTpzdHJpbmcpID0+IHtcblxuXHRcdHJldHVybiBpc1lhbWxGaWxlLnRlc3QoZW50cnkpXG5cblx0fSwgYXN5bmMgKF9lbnRyeTpzdHJpbmcsIGRhdGE6YW55KSA9PiB7XG5cblx0XHRjb25zdCBzeXN0ZW06IGFueSA9IGNvbW1vbi5pby5mcm9tWWFtbChkYXRhKVxuXG5cdFx0cmVzdWx0LnB1c2goc3lzdGVtKTtcblxuXHR9KVxuXG5cdHJldHVybiByZXN1bHRcbn1cblxuLypcbiAqIEZ1bmN0aW9uIHRvIGxvYWQgZG9tYWluIGNsYWltcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIE91dHB1dDpcbiAqIC0gQW4gYW55W10sIHdpdGggYWxsIHRoZSBkb21haW5zIGxvYWRlZC5cbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkRG9tYWlucygpIHtcblxuXHRjb25zdCByZXN1bHQ6IGFueVtdID0gW11cblxuXHRhd2FpdCBjcmF3bChnZXRQYXRoKFwiZG9tYWluc1wiKSwgKGVudHJ5OnN0cmluZykgPT4ge1xuXG5cdFx0cmV0dXJuIGlzWWFtbEZpbGUudGVzdChlbnRyeSlcblxuXHR9LCBhc3luYyAoX2VudHJ5OnN0cmluZywgZGF0YTphbnkpID0+IHtcblxuXHRcdGNvbnN0IGRvbWFpbjogYW55ID0gY29tbW9uLmlvLmZyb21ZYW1sKGRhdGEpXG5cblx0XHRyZXN1bHQucHVzaChkb21haW4pO1xuXHR9KVxuXG5cdHJldHVybiByZXN1bHRcbn1cblxuXG4vKlxuICogTG9hZHMgYWxsIGFwcGxpY2FibGUgZ2xvYmFscyBmb3IgYSBnaXZlbiBjbGFpbSBhbmQgc3RvcmVzIHRoZW0gaW50byBhIGxpc3QuXG4gKlxuICogSW5wdXQ6XG4gKiAtIGNsYWltOiBvdXIgY3VzdG9tIGNsYWltIG9iamVjdCwgd2l0aCB3aGljaCB3ZSBjaGVjayBpZiB0aGUgZ2xvYmFsIGlzIGFwcGxpY2FibGVcbiAqXG4gKiBSZXR1cm5zOlxuICogLSBBIEdsb2JhbFNlY3Rpb24gYXJyYXkgcHJvbWlzZSwgY29udGFpbmluZyBhbGwgdGhlIGdsb2JhbHMgbG9hZGVkIGZvciB0aGlzIGNsYWltXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEdsb2JhbHMoY2xhaW06IGFueSk6IFByb21pc2U8R2xvYmFsU2VjdGlvbltdPiB7XG5cblx0Y29uc3QgcmVzdWx0OiBHbG9iYWxTZWN0aW9uW10gPSBbXVxuXG5cdGF3YWl0IGNyYXdsKGdldFBhdGgoXCJnbG9iYWxzXCIpLCAoZW50cnk6c3RyaW5nKSA9PiB7XG5cblx0XHRyZXR1cm4gaXNZYW1sRmlsZS50ZXN0KGVudHJ5KVxuXG5cdH0sIGFzeW5jIChlbnRyeTpzdHJpbmcsIGRhdGE6YW55KSA9PiB7XG5cblx0XHRjb25zdCBnbG9iYWxEYXRhOiBhbnkgPSBjb21tb24uaW8uZnJvbVlhbWwoZGF0YSk7XG5cblx0XHRjb25zdCBleHQ6IHN0cmluZyA9IHBhdGguZXh0bmFtZShlbnRyeSk7XG5cblx0XHRjb25zdCBuYW1lOiBzdHJpbmcgPSBwYXRoLmJhc2VuYW1lKGVudHJ5LCBleHQpO1xuXG5cdFx0aWYobmFtZSBpbiBTRUNUSU9OU19CWV9GSUxFX05BTUUpe1xuXG5cdFx0XHRjb25zdCBzZWN0aW9uOiBhbnkgPSBuZXcgU0VDVElPTlNfQllfRklMRV9OQU1FW25hbWVdKGdsb2JhbERhdGEpXG5cblx0XHRcdGlmKCEoYXdhaXQgc2VjdGlvbi52YWxpZGF0ZShTQ0hFTUFTX0JZX1NFQ1RJT05fTkFNRVtuYW1lXSB8fCB7fSkpKXtcblxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtuYW1lfSBnbG9iYWwgZmlsZWApXG5cblx0XHRcdH1cblxuXHRcdFx0aWYoZ2xvYmFsRGF0YS5raW5kID09IGNsYWltLmtpbmQpe1xuXG5cdFx0XHRcdHJlc3VsdC5wdXNoKHNlY3Rpb24pXG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0bG9nKCdTa2lwcGluZyBnbG9iYWwgJXMgYmVjYXVzZSBpdCBpcyBub3QgYXBwbGljYWJsZSB0byAlcycsIG5hbWUsIGNsYWltLmtpbmQpXG5cdFx0XHRcblx0XHRcdH1cblxuXHRcdH1cblxuXHR9KVxuXG5cdGxvZygnTG9hZGVkIGdsb2JhbHMgJU8nLCByZXN1bHQpXG5cblx0cmV0dXJuIHJlc3VsdFxuXG59XG5cbi8qXG4gKiBJZiB0aGUgaW5wdXQgY2xhaW0gaXMgYSBHaXRodWJSZXBvc2l0b3J5Q2xhaW0sIGl0IGxvYWRzIGFsbCBpdCdzIGFwcGxpY2FibGVcbiAqIG92ZXJyaWRlcyBhbmQgc3RvcmVzIHRoZW0gaW50byBhIGxpc3QuIE90aGVyd2lzZSwgaXQgcmV0dXJucyBhbiBlbXB0eSBsaXN0LlxuICpcbiAqIElucHV0OlxuICogLSBjbGFpbTogb3VyIGN1c3RvbSBjbGFpbSBvYmplY3QsIHdoaWNoIHNob3VsZCBiZSBhIEdpdGh1YlJlcG9zaXRvcnlDbGFpbVxuICpcbiAqIFJldHVybnM6XG4gKiAtIEFuIE92ZXJyaWRlciBhcnJheSwgd2l0aCBhIEdpdGh1YlJlcG9zaXRvcnlPdmVycmlkZXIgaWYgdGhlIGNsYWltXG4gKiAgIHdhcyBhIEdpdGh1YlJlcG9zaXRvcnlDbGFpbSwgb3IgZW1wdHkgaWYgaXQgd2FzIG5vdC5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkT3ZlcnJpZGVzKGNsYWltOiBhbnkpOiBPdmVycmlkZXJQYXRjaGVzW10ge1xuXG5cblx0bGV0IG92ZXJyaWRlcyA6IE92ZXJyaWRlclBhdGNoZXNbXSA9IFtdXG5cblx0aWYoY2xhaW0ua2luZCA9PT0gXCJDb21wb25lbnRDbGFpbVwiICYmIGNsYWltLnByb3ZpZGVycy5naXRodWIub3ZlcnJpZGVzKXtcblxuXHRcdG92ZXJyaWRlcy5wdXNoKG5ldyBHaXRodWJSZXBvc2l0b3J5T3ZlcnJpZGVyKCkpXG5cblx0fVxuXG5cdHJldHVybiBvdmVycmlkZXNcblxufVxuXG5cbi8qKlxuICogTG9hZCBhbGwgbm9ybWFsaXplcnMgYW5kIHN0b3JlcyB0aGVtIGludG8gYSBsaXN0LlxuICogQHBhcmFtIGNsYWltXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZE5vcm1hbGl6ZXJzKF9jbGFpbTogYW55LCBwYXRoPzogc3RyaW5nKTogUHJvbWlzZTxOb3JtYWxpemVyW10+IHtcblxuXHRsZXQgcmVzdWx0OiBOb3JtYWxpemVyW10gPSBbXVxuXG5cdGZvciAoY29uc3Qgbm9ybWFsaXplciBvZiBOT1JNQUxJWkVSUykge1xuXG5cdFx0cmVzdWx0LnB1c2gobmV3IG5vcm1hbGl6ZXIoe3BhdGg6IHBhdGh9KSk7XG5cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG5cbn1cblxuXG4vKlxuICogTG9hZHMgYWxsIGFwcGxpY2FibGUgaW5pdGlhbGl6ZXJzIGZvciBhIGdpdmVuIGNsYWltIGFuZCBzdG9yZXMgdGhlbSBpbnRvIGEgbGlzdC5cbiAqXG4gKiBJbnB1dDpcbiAqIC0gY2xhaW06IG91ciBjdXN0b20gY2xhaW0gb2JqZWN0LCB3aXRoIHdoaWNoIHdlIGNoZWNrIGlmIHRoZSBpbml0aWFsaXplciBpcyBhcHBsaWNhYmxlXG4gKlxuICogUmV0dXJuczpcbiAqIC0gQW4gSW5pdGlhbGl6ZXIgYXJyYXkgcHJvbWlzZSwgY29udGFpbmluZyBhbGwgdGhlIGluaXRpYWxpemVycyBsb2FkZWQgZm9yIHRoaXMgY2xhaW1cbiAqXG4gKi9cblxubGV0IGxvYWRlZEluaXRpYWxpemVyczogSW5pdGlhbGl6ZXJQYXRjaGVzW10gfCBmYWxzZSA9IGZhbHNlXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkSW5pdGlhbGl6ZXJzKGNsYWltOiBhbnksIGluaXRpYWxpemVyc1BhdGg6IHN0cmluZyA9IGdldFBhdGgoXCJpbml0aWFsaXplcnNcIikpOiBQcm9taXNlPEluaXRpYWxpemVyUGF0Y2hlc1tdPiB7XG5cblx0bGV0IHJlc3VsdDogSW5pdGlhbGl6ZXJQYXRjaGVzW10gPSBbXVxuXG5cdGF3YWl0IGNyYXdsKGluaXRpYWxpemVyc1BhdGgsIChlbnRyeTpzdHJpbmcpID0+IHtcblxuXHRcdHJldHVybiBpc1lhbWxGaWxlLnRlc3QoZW50cnkpXG5cblx0fSwgYXN5bmMoZW50cnk6c3RyaW5nLCBkYXRhOmFueSkgPT4ge1xuXG5cdFx0Y29uc3QgaW5pdGlhbGl6ZXJEYXRhOiBhbnkgPSBjb21tb24uaW8uZnJvbVlhbWwoZGF0YSlcblxuXHRcdGNvbnN0IGV4dDogc3RyaW5nID0gcGF0aC5leHRuYW1lKGVudHJ5KTtcblxuXHRcdGNvbnN0IG5hbWU6IHN0cmluZyA9IHBhdGguYmFzZW5hbWUoZW50cnksIGV4dCk7XG5cblx0XHRpZihuYW1lIGluIElOSVRJQUxJWkVSU19CWV9GSUxFX05BTUUpe1xuXG5cdFx0XHRjb25zdCBpbml0aWFsaXplckJmTjogYW55ID0gbmV3IElOSVRJQUxJWkVSU19CWV9GSUxFX05BTUVbbmFtZV0oaW5pdGlhbGl6ZXJEYXRhKVxuXG5cdFx0XHRpZighKGF3YWl0IGluaXRpYWxpemVyQmZOLnZhbGlkYXRlKFNDSEVNQVNfQllfSU5JVElBTElaRVJfTkFNRVtuYW1lXSB8fCB7fSkpKXtcblxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtuYW1lfSBpbml0aWFsaXplciBmaWxlYClcblxuXHRcdFx0fVxuXG5cdFx0XHRpZihpbml0aWFsaXplckRhdGEua2luZCA9PT0gY2xhaW0ua2luZCl7XG5cblx0XHRcdFx0cmVzdWx0LnB1c2goaW5pdGlhbGl6ZXJCZk4pXG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0bG9nKCdTa2lwcGluZyBpbml0aWFsaXplciAlcyBiZWNhdXNlIGl0IGlzIG5vdCBhcHBsaWNhYmxlIHRvICVzJywgbmFtZSwgY2xhaW0ua2luZClcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdH0pXG5cblx0Zm9yKGNvbnN0IGluaXRpYWxpemVyIG9mIElOSVRJQUxJWkVSUykge1xuXG5cdFx0aWYoKGluaXRpYWxpemVyLmFwcGxpY2FibGVLaW5kcykuaW5jbHVkZXMoY2xhaW0ua2luZCkpe1xuXG5cdFx0XHRyZXN1bHQucHVzaChuZXcgaW5pdGlhbGl6ZXIoKSk7XG5cblx0XHR9XG5cblx0fVxuXG5cdGxvZygnTG9hZGVkIGluaXRpYWxpemVycyAlTycsIHJlc3VsdClcblxuXHRsb2FkZWRJbml0aWFsaXplcnMgPSByZXN1bHRcblxuXHRyZXR1cm4gbG9hZGVkSW5pdGlhbGl6ZXJzXG59XG5cblxuLypcbiAqIExvYWRzIGFsbCBjbGFpbXMgYW5kIHN0b3JlcyB0aGVtIGludG8gYSBhbiBvYmplY3QuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZWNlaXZlcyBubyBpbnB1dC5cbiAqXG4gKiBSZXR1cm5zOlxuICogLSBBIFJlbmRlckNsYWltcyBwcm9taXNlLiBBIFJlbmRlckNsYWltcyBvYmplY3QgY29udGFpbnMsIGZvciBlYWNoIGNsYWltOlxuICogICDCtyBUaGUgYWN0dWFsIGNsYWltIG9iamVjdFxuICogICDCtyBUaGUgY2xhaW0ncyBwYXRoXG4gKiAgIMK3IFRoZSBjbGFpbSdzIGFwcGxpY2FibGUgaW5pdGlhbGl6ZXJzLCBnbG9iYWxzIGFuZCBvdmVycmlkZXNcbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ2xhaW1zKGNsYWltc1BhdGg6IHN0cmluZyA9IGdldFBhdGgoXCJjbGFpbXNcIikpOiBQcm9taXNlPFJlbmRlckNsYWltcz4ge1xuXG5cdGNvbnN0IHJlc3VsdDogYW55ID0ge31cblxuXHRjb25zdCBkZWZhdWx0c0NsYWltcyA9IGxvYWRDbGFpbURlZmF1bHRzKClcblxuXHRhd2FpdCBjcmF3bChjbGFpbXNQYXRoLCAoZW50cnk6c3RyaW5nKSA9PiB7XG5cblx0XHRyZXR1cm4gaXNZYW1sRmlsZS50ZXN0KGVudHJ5KVxuXG5cdH0sIGFzeW5jIChlbnRyeTpzdHJpbmcsIGRhdGE6YW55KSA9PiB7XG5cblx0XHRjb25zdCBjbGFpbTogYW55ID0gcGF0Y2hDbGFpbShjb21tb24uaW8uZnJvbVlhbWwoZGF0YSksIGRlZmF1bHRzQ2xhaW1zKVxuXG5cdFx0aWYoIShcImtpbmRcIiBpbiBjbGFpbSAmJiBcIm5hbWVcIiBpbiBjbGFpbSkpe1xuXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY2xhaW0gZmlsZSAke2VudHJ5fWApXG5cblx0XHR9XG5cblx0XHRDbGFpbVZhbGlkYXRpb24udmFsaWRhdGVDbGFpbShjbGFpbSwgKGNsYWltcyBhcyBhbnkpW2Ake2NsYWltLmtpbmR9U2NoZW1hYF0pXG5cbiAgICAgICAgICAgICAgICBhd2FpdCBDbGFpbVZhbGlkYXRpb24ub3B0aW9uYWxWYWxpZGF0aW9uKGNsYWltKVxuXG5cdFx0aWYocmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXSkge1xuXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBjbGFpbSAke2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gKVxuXHRcdH1cblxuXHRcdHJlc3VsdFtgJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YF0gPSB7fVxuXG5cdFx0cmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXVtcImNsYWltXCJdID0gY2xhaW1cblxuXHRcdHJlc3VsdFtgJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YF1bXCJjbGFpbVBhdGhcIl0gPSBlbnRyeVxuXG5cdFx0cmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXVtcImluaXRpYWxpemVyc1wiXSA9IGF3YWl0IGxvYWRJbml0aWFsaXplcnMoY2xhaW0pO1xuXG5cdFx0cmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXVtcImdsb2JhbHNcIl0gPSBhd2FpdCBsb2FkR2xvYmFscyhjbGFpbSk7XG5cblx0XHRyZXN1bHRbYCR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWBdW1wib3ZlcnJpZGVzXCJdID0gbG9hZE92ZXJyaWRlcyhjbGFpbSk7XG5cblx0XHRyZXN1bHRbYCR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWBdW1wibm9ybWFsaXplcnNcIl0gPSBhd2FpdCBsb2FkTm9ybWFsaXplcnMoY2xhaW0sIGVudHJ5KTtcblxuXHR9KVxuXG5cdHJldHVybiByZXN1bHRcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZENsYWltRGVmYXVsdHMoKXtcbiAgcmV0dXJuIGNvbW1vbi5pby5mcm9tWWFtbChmcy5yZWFkRmlsZVN5bmMoXG4gICAgYCR7Z2V0UGF0aChcImNsYWltc0RlZmF1bHRzXCIpfS9jbGFpbXNfZGVmYXVsdHMueWFtbGAsIFwidXRmLThcIlxuICApKVxufVxuXG4vKlxuICogVXNpbmcgZmFzdC1qc29uLXBhdGNoLCBjb21wYXJlcyBhIGNsYWltIHRvIGl0cyBraW5kJ3MgZGVmYXVsdHMsIHRoZW4gcGF0Y2hlcyBpdC5cbiAqXG4gKiBJbnB1dDpcbiAqIC0gY2xhaW06IG91ciBjdXN0b20gY2xhaW0gb2JqZWN0LCB3aGljaCB3ZSB3YW50IHRvIHBhdGNoXG4gKiAtIGRlZmF1bHRzQ2xhaW1zOiBhbiBvYmplY3QsIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHRzIGZvciBlYWNoIGNsYWltIGtpbmQsXG4gKiAgIHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIHRoYXQgd2UgdXNlIGZvciB0aGUgYWN0dWFsIGNsYWltc1xuICpcbiAqIFJldHVybnM6XG4gKiAtIFRoZSBwYXRjaGVkIGNsYWltXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hDbGFpbShjbGFpbTogYW55LCBkZWZhdWx0c0NsYWltczogYW55KXtcblxuXHRpZihkZWZhdWx0c0NsYWltc1tjbGFpbS5raW5kXSl7XG5cblx0XHRjb25zdCBqc29uUGF0Y2hPcHM6IGFueSA9IGZhc3RKc29uUGF0Y2guY29tcGFyZShjbGFpbSwgZGVmYXVsdHNDbGFpbXNbY2xhaW0ua2luZF0pLmZpbHRlcigoanA6YW55KSA9PiB7XG5cblx0XHRcdHJldHVybiBqcC5vcCA9PSBcImFkZFwiXG5cblx0XHR9KVxuXG5cdFx0Y2xhaW0gPSBmYXN0SnNvblBhdGNoLmFwcGx5UGF0Y2goY2xhaW0sIGpzb25QYXRjaE9wcykubmV3RG9jdW1lbnRcblxuXHR9XG5cblx0cmV0dXJuIGNsYWltXG5cbn1cblxuXG4vKlxuICogTG9hZHMgYWxsIENScyBhbmQgc3RvcmVzIHRoZW0gaW50byBhIG9iamVjdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIFJldHVybnM6XG4gKiAtIEFuIG9iamVjdCBwcm9taXNlIHdoaWNoIGNvbnRhaW5zIGVhY2ggbG9hZGVkIENSXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENScyhcblxuXHRjcnNQYXRoOiBzdHJpbmcgPSBnZXRQYXRoKFwiY3JzXCIpLFxuXG5cdGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdID0gWyBnZXRQYXRoKFwiZ2xvYmFsc1wiKSwgZ2V0UGF0aChcImluaXRpYWxpemVyc1wiKV1cblxuKSB7XG5cblx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fVxuXG5cdGF3YWl0IGNyYXdsV2l0aEV4Y2x1c2lvbnMoY3JzUGF0aCwgKGVudHJ5OnN0cmluZykgPT4ge1xuXG5cdFx0cmV0dXJuIGlzWWFtbEZpbGUudGVzdChlbnRyeSlcblxuXHR9LCBhc3luYyAoZW50cnk6c3RyaW5nLCBkYXRhOmFueSkgPT4ge1xuXG5cdFx0Y29uc3QgeWFtbERhdGE6IGFueSA9IHN0cmlwS25vd25SZWxhdGlvbnMoY29tbW9uLmlvLmZyb21ZYW1sKGRhdGEpKTtcblxuXHRcdGlmKCEoXCJraW5kXCIgaW4geWFtbERhdGEgJiYgXCJuYW1lXCIgaW4geWFtbERhdGEubWV0YWRhdGEpKXtcblxuXHRcdFx0bG9nKGBJbnZhbGlkIGNsYWltIGZpbGUgJHtlbnRyeX1gKVxuXG5cdFx0fSBlbHNlIHtcblxuICAgICAgICAgICAgaWYocmVzdWx0W2Ake3lhbWxEYXRhLmtpbmR9LSR7eWFtbERhdGEubWV0YWRhdGEubmFtZX1gXSkge1xuXG4gICAgICAgICAgICAgICAgbG9nKGBEdXBsaWNhdGUgQ1IgJHt5YW1sRGF0YS5raW5kfS0ke3lhbWxEYXRhLm1ldGFkYXRhLm5hbWV9YClcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHRbYCR7eWFtbERhdGEua2luZH0tJHt5YW1sRGF0YS5tZXRhZGF0YS5uYW1lfWBdID0geWFtbERhdGFcblxuICAgICAgICB9XG5cblx0fSxcblx0XHRleGNsdWRlZFBhdGhzLmNvbmNhdChnZXRBZGRpdGlvbmFsUGF0aHMoKSlcblx0KVxuXG5cdHJldHVybiByZXN1bHRcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSZW5hbWVSZXN1bHQge1xuXHRraW5kOiBzdHJpbmc7XG5cdGNsYWltUGF0aDogc3RyaW5nO1xuXHRjbGFpbU5hbWU6IHN0cmluZztcblx0b2xkTmFtZTogc3RyaW5nO1xuXHRuZXdOYW1lOiBzdHJpbmc7XG59XG5cbi8qXG4qIERlc2NyaXB0aW9uOiBHZXQgdGhlIHJlbmFtZWQgdXNpbmcgY2xhaW1SZWYgYW5ub3RhdGlvblxuKiBJbnB1dDogY2xhaW1zOiBhbnksIGNyczogYW55XG4qIE91dHB1dDogcmVuYW1lczogSVJlbmFtZVJlc3VsdFtdXG4qL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJlbmFtZXMoY2xhaW1zOiBhbnksIGNyczogYW55KTogUHJvbWlzZTxJUmVuYW1lUmVzdWx0W10+IHtcblxuXHQvKlxuXHQgKiBJZiBjaGVja1JlbmFtZXMgaXMgZmFsc2UsIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIHJlbmFtZXNcblx0ICovXG5cdGNvbnN0IHJlbmFtZXNFbmFibGVkID0gZ2V0UmVuYW1lc0VuYWJsZWQoKTtcblx0aWYgKCFyZW5hbWVzRW5hYmxlZCkgcmV0dXJuIFtdO1xuXG5cdGNvbnN0IHJlc3VsdDogSVJlbmFtZVJlc3VsdFtdID0gW107XG5cblx0LyoqXG5cdCAqIEZvciBlYWNoIENSLCBsb29rIGZvciBhIGNsYWltIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIG5hbWUgd2l0aCBDUidzIGZpcmVzdGFydHIuZGV2L2NsYWltLXJlZiBhbm5vdGF0aW9uXG5cdCAqL1xuXHRmb3IgKGxldCBjciBvZiBPYmplY3QudmFsdWVzKGNycykpIHtcblxuXHRcdGNvbnN0IGFueUNyOiBhbnkgPSBjcjtcblxuXHRcdGlmICghYW55Q3I/Lm1ldGFkYXRhPy5hbm5vdGF0aW9ucykgY29udGludWU7XG5cblx0XHQvLyBpZiB0aGUgYW5ub3RhdGlvbiBpcyBhIGNsYWltUmVmXG5cdFx0Y29uc3QgYW5ub3RhdGlvbk5hbWUgPSBjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbignY2xhaW0tcmVmJyk7XG5cblx0XHRpZiAoYW5ub3RhdGlvbk5hbWUgaW4gYW55Q3I/Lm1ldGFkYXRhPy5hbm5vdGF0aW9ucykge1xuXG5cdFx0XHRjb25zdCBjbGFpbVJlZiA9IGFueUNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25OYW1lXTtcblxuXHRcdFx0Ly8gc3BsaXQgdGhlIGFubm90YXRpb24gaW50byBraW5kIGFuZCBuYW1lXG5cdFx0XHRjb25zdCBba2luZCwgbmFtZV0gPSBjbGFpbVJlZi5zcGxpdChcIi9cIik7XG5cblx0XHRcdC8vIGlmIHRoZSBjbGFpbSBleGlzdHMsIGNoZWNrIGlmIHRoZSBuYW1lIGlzIGRpZmZlcmVudCBmb3IgdGhlIGdpdmVuIHByb3ZpZGVyXG5cdFx0XHRjb25zdCByZWZlcmVuY2VkQ2xhaW0gPSBjbGFpbXNbYCR7a2luZH0tJHtuYW1lfWBdLmNsYWltO1xuXG5cblx0XHRcdGNvbnN0IG9sZE5hbWUgPSBhbnlDci5tZXRhZGF0YS5uYW1lO1xuXHRcdFx0Y29uc3QgbmV3TmFtZSA9IHJlZmVyZW5jZWRDbGFpbS5wcm92aWRlcnNbZ2V0Q29uZmlndXJlZFByb3ZpZGVyKCldLm5hbWU7XG5cblx0XHRcdGlmIChvbGROYW1lICE9PSBuZXdOYW1lKSB7XG5cblx0XHRcdFx0cmVzdWx0LnB1c2goe1xuXHRcdFx0XHRcdGtpbmQ6IHJlZmVyZW5jZWRDbGFpbS5raW5kLFxuXHRcdFx0XHRcdGNsYWltUGF0aDogY2xhaW1zW2Ake2tpbmR9LSR7bmFtZX1gXS5jbGFpbVBhdGgsXG5cdFx0XHRcdFx0Y2xhaW1OYW1lOiByZWZlcmVuY2VkQ2xhaW0ubmFtZSxcblx0XHRcdFx0XHRvbGROYW1lLFxuXHRcdFx0XHRcdG5ld05hbWUsXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJEYXRhIHtcblx0Z2xvYmFscz86IGFueSxcblx0aW5pdGlhbGl6ZXJzPzogYW55LFxuXHRjbGFpbXM/OiBhbnksXG5cdHJlbmFtZXM/OiBhbnksXG5cdGNycz86IGFueVxufVxuXG4vKlxuICogTWFpbiBmdW5jdGlvbiBvZiB0aGlzIGZpbGUuIExvYWRzIGFsbCB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIG9iamVjdHMgYW5kXG4gKiBzdG9yZXMgdGhlbSBpbnRvIGFuIG9iamVjdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIE91dHB1dDpcbiAqIC0gQW4gb2JqZWN0LCB3aGljaCBjb250YWluczpcbiAqICAgwrcgQWxsIGNsYWltcyB0byBiZSByZW5kZXJlZFxuICogICDCtyBBbGwgQ1JzIHRoYXQgd2VyZSBhbHJlYWR5IGNyZWF0ZWRcbiAqICAgwrcgQWxsIHJlbmFtZSBvcGVyYXRpb25zXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEFsbCgpe1xuXG5cblx0Y29uc3QgZGF0YTogeyByZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcywgY3JzOiBhbnksIHJlbmFtZXM/OiBJUmVuYW1lUmVzdWx0W10gfSA9IHtcblxuXHRcdHJlbmRlckNsYWltczoge30sXG5cblx0XHRjcnM6IHt9LFxuXG5cdH1cblxuXHRhd2FpdCBQcm9taXNlLmFsbChbXG5cblx0XHRsb2FkQ2xhaW1zKCkudGhlbigoY2xhaW1zOmFueSkgPT4ge1xuXG5cdFx0XHRkYXRhW1wicmVuZGVyQ2xhaW1zXCJdID0gY2xhaW1zXG5cblx0XHR9KVxuXG5cdFx0LmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG5cblx0XHRcdHRocm93IGVycm9yXG5cblx0XHR9KVxuXG5cdFx0LnRoZW4oYXN5bmMoKSA9PiB7XG5cblxuXHRcdFx0Zm9yKGNvbnN0IHZpcnR1YWxDbGFpbSBvZiB2aXJ0dWFsQ2xhaW1zKXtcblxuXHRcdFx0XHRjb25zdCBleHBhbmRlZENsYWltOiBJQ2xhaW0gPSAgYXdhaXQgKHZpcnR1YWxDbGFpbS5leHBhbmQoZGF0YVtcInJlbmRlckNsYWltc1wiXSAsIHtvcmc6IGdldE9yZygpfSkpXG5cblxuXHRcdFx0XHRjb25zdCBkZWZhdWx0Q29uZmlnID0ge1xuXHRcdFx0XHRcdGtpbmQ6ICdGaXJlc3RhcnRyR2l0aHViR3JvdXAnLFxuXHRcdFx0XHRcdGRlZmF1bHRWYWx1ZXM6IHtcblx0XHRcdFx0XHQgIGNvbnRleHQ6IHtcblx0XHRcdFx0XHRcdGJhY2tlbmQ6IHtcblx0XHRcdFx0XHRcdCAgcmVmOiB7XG5cdFx0XHRcdFx0XHRcdGtpbmQ6ICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZmlyZXN0YXJ0ci10ZXJyYWZvcm0tc3RhdGUnXG5cdFx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRwcm92aWRlcjoge1xuXHRcdFx0XHRcdFx0ICByZWY6IHtcblx0XHRcdFx0XHRcdFx0a2luZDogJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZycsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdnaXRodWItYXBwJ1xuXHRcdFx0XHRcdFx0ICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ICB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgcmVuZGVyQ2xhaW06IFJlbmRlckNsYWltRGF0YSA9IHtcblxuXHRcdFx0XHRcdGNsYWltOiBleHBhbmRlZENsYWltLFxuXG5cdFx0XHRcdFx0Y2xhaW1QYXRoOiBcInZpcnR1YWxcIixcblxuXHRcdFx0XHRcdGluaXRpYWxpemVyczogW25ldyBVVUlESW5pdGlhbGl6ZXIoZXhwYW5kZWRDbGFpbSksIG5ldyBJbml0aWFsaXplckNsYWltUmVmKCksIG5ldyBJbml0aWFsaXplckRlZmF1bHQoZGVmYXVsdENvbmZpZyldLFxuXG5cdFx0XHRcdFx0b3ZlcnJpZGVzOiBbXSxcblxuXHRcdFx0XHRcdGdsb2JhbHM6IFtdLFxuXG5cdFx0XHRcdFx0bm9ybWFsaXplcnM6IFtuZXcgTmFtZU5vcm1hbGl6ZXIoKV1cblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGF0YVtcInJlbmRlckNsYWltc1wiXVtgJHtleHBhbmRlZENsYWltLmtpbmR9LSR7ZXhwYW5kZWRDbGFpbS5uYW1lfWAgYXMgUmVuZGVyQ2xhaW1LZXldID0gcmVuZGVyQ2xhaW1cblx0XHRcdH1cblxuXHRcdH0pLFxuXG5cdFx0bG9hZENScygpLnRoZW4oKGNyczphbnkpICA9PlxuXG5cdFx0XHRkYXRhW1wiY3JzXCJdID0gY3JzXG5cblx0ICAgICAgICApXG5cblx0XSlcblxuXHQvLyBXZSBuZWVkIHRvIGxvYWQgcmVuYW1lcyBhZnRlciBjcnMgYW5kIGNsYWltcyBoYXMgYmVlbiBsb2FkZWQgdG8gY29tcGFyZSB0aGVtIGJvdGhcblx0ZGF0YVtcInJlbmFtZXNcIl0gPSBhd2FpdCBsb2FkUmVuYW1lcyhkYXRhW1wicmVuZGVyQ2xhaW1zXCJdLCBkYXRhW1wiY3JzXCJdKTtcblxuXHRyZXR1cm4gZGF0YVxuXG59XG5cblxuXG5mdW5jdGlvbiBnZXRPcmcoKXtcblxuXG5cdGNvbnN0IGdyb3VwT3JnOiBzdHJpbmcgPSBjb21tb24uZW52aXJvbm1lbnQuZ2V0RnJvbUVudmlyb25tZW50V2l0aERlZmF1bHQoXG5cbiAgICBjb21tb24udHlwZXMuZW52VmFycy5vcmcsXG5cbiAgICBcIlwiXG5cbiAgKVxuXG4gIHJldHVybiBncm91cE9yZ1xuXG59XG4iXX0=
|
|
234577
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvYWRlci9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBcUQ7QUFDckQsd0NBQTJFO0FBQzNFLG9FQUFtQztBQUNuQywyQ0FBNEI7QUFDNUIsa0RBQXNHO0FBR3RHLHNDQUFpRztBQUVqRyxxRkFBa0Y7QUFDbEYsdUNBQXdCO0FBQ3hCLCtEQUFnRDtBQUNoRCxrREFBeUI7QUFDekIsK0NBQXFFO0FBRXJFLCtDQUFzRDtBQUN0RCxzQ0FBMkM7QUFDM0MsMERBQW9DO0FBQ3BDLDhDQUFzRDtBQUV0RCxnREFBNEM7QUFDNUMsOENBQW9EO0FBQ3BELHVEQUE4RDtBQUM5RCx5REFBNEQ7QUFJNUQsTUFBTSxHQUFHLEdBQUcsSUFBQSxlQUFLLEVBQUMsNEJBQTRCLENBQUMsQ0FBQTtBQUUvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUk5Qzs7O0dBR0c7QUFHSCxNQUFNLGFBQWEsR0FBb0I7SUFFdEMsSUFBSSw0QkFBa0IsRUFBRTtDQUV4QixDQUFBO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsV0FBVztJQUNoQyxNQUFNLE1BQU0sR0FBVSxFQUFFLENBQUE7SUFFeEIsTUFBTSxJQUFBLGVBQUssRUFBQyxJQUFBLGdCQUFPLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtRQUVoRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFOUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFhLEVBQUUsSUFBUSxFQUFFLEVBQUU7UUFFcEMsTUFBTSxNQUFNLEdBQVEsd0JBQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFB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O0FBSUQsU0FBUyxNQUFNO0lBR2QsTUFBTSxRQUFRLEdBQVcsd0JBQU0sQ0FBQyxXQUFXLENBQUMsNkJBQTZCLENBRXRFLHdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBRXhCLEVBQUUsQ0FFSCxDQUFBO0lBRUQsT0FBTyxRQUFRLENBQUE7QUFFakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3Jhd2wsIGNyYXdsV2l0aEV4Y2x1c2lvbnN9IGZyb20gXCIuLi9jcmF3bGVyXCJcbmltcG9ydCB7IFNFQ1RJT05TX0JZX0ZJTEVfTkFNRSwgU0NIRU1BU19CWV9TRUNUSU9OX05BTUUgfSBmcm9tIFwiLi4vZ2xvYmFsc1wiXG5pbXBvcnQgY29tbW9uIGZyb20gXCJjYXRhbG9nX2NvbW1vblwiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IElOSVRJQUxJWkVSUywgSU5JVElBTElaRVJTX0JZX0ZJTEVfTkFNRSwgU0NIRU1BU19CWV9JTklUSUFMSVpFUl9OQU1FIH0gZnJvbSBcIi4uL2luaXRpYWxpemVyc1wiXG5pbXBvcnQgeyBJbml0aWFsaXplclBhdGNoZXMgfSBmcm9tIFwiLi4vaW5pdGlhbGl6ZXJzL2Jhc2VcIlxuaW1wb3J0IHsgR2xvYmFsU2VjdGlvbiB9IGZyb20gXCIuLi9nbG9iYWxzL2Jhc2VcIlxuaW1wb3J0IHsgZ2V0QWRkaXRpb25hbFBhdGhzLCBnZXRDb25maWd1cmVkUHJvdmlkZXIsIGdldFBhdGgsIGdldFJlbmFtZXNFbmFibGVkIH0gZnJvbSBcIi4uL2NvbmZpZ1wiXG5pbXBvcnQgeyBPdmVycmlkZXJQYXRjaGVzIH0gZnJvbSBcIi4uL292ZXJyaWRlcnMvYmFzZVwiXG5pbXBvcnQgeyBHaXRodWJSZXBvc2l0b3J5T3ZlcnJpZGVyIH0gZnJvbSBcIi4uL292ZXJyaWRlcnMvZ2l0aHViUmVwb3NpdG9yeU92ZXJyaWRlXCJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBmYXN0SnNvblBhdGNoIGZyb20gXCJmYXN0LWpzb24tcGF0Y2hcIlxuaW1wb3J0IERlYnVnIGZyb20gXCJkZWJ1Z1wiXG5pbXBvcnQgeyBGaXJlc3RhcnRyQWxsQ2xhaW0sIElWaXJ0dWFsQ2xhaW0gfSBmcm9tIFwiLi4vY2xhaW1zL3ZpcnR1YWxcIlxuaW1wb3J0IHsgSUNsYWltIH0gZnJvbSBcIi4uL2NsYWltcy9iYXNlXCJcbmltcG9ydCB7IFVVSURJbml0aWFsaXplciB9IGZyb20gXCIuLi9pbml0aWFsaXplcnMvdXVpZFwiXG5pbXBvcnQgeyBDbGFpbVZhbGlkYXRpb24gfSBmcm9tIFwiLi4vY2xhaW1zXCJcbmltcG9ydCAgY2xhaW1zIGZyb20gXCIuLi9jbGFpbXMvYmFzZVwiXG5pbXBvcnQgeyBzdHJpcEtub3duUmVsYXRpb25zIH0gZnJvbSBcIi4uL3V0aWxzL2NyVXRpbHNcIlxuaW1wb3J0IHsgTm9ybWFsaXplciB9IGZyb20gXCIuLi9ub3JtYWxpemVycy9iYXNlXCJcbmltcG9ydCB7IE5PUk1BTElaRVJTIH0gZnJvbSBcIi4uL25vcm1hbGl6ZXJzXCJcbmltcG9ydCB7IE5hbWVOb3JtYWxpemVyIH0gZnJvbSBcIi4uL25vcm1hbGl6ZXJzL25hbWVcIlxuaW1wb3J0IHsgSW5pdGlhbGl6ZXJDbGFpbVJlZiB9IGZyb20gXCIuLi9pbml0aWFsaXplcnMvY2xhaW1SZWZcIlxuaW1wb3J0IHsgSW5pdGlhbGl6ZXJEZWZhdWx0IH0gZnJvbSBcIi4uL2RlZmF1bHRzL2luaXRpYWxpemVyXCJcbmltcG9ydCB7IFJlbmRlckNsYWltRGF0YSwgUmVuZGVyQ2xhaW1LZXksIFJlbmRlckNsYWltcyB9IGZyb20gXCIuLi9yZW5kZXJlci90eXBlc1wiXG5cblxuY29uc3QgbG9nID0gRGVidWcoJ2ZpcmVzdGFydHI6cmVuZGVyZXI6bG9hZGVyJylcblxuY29uc3QgaXNZYW1sRmlsZSA9IG5ldyBSZWdFeHAoL1xcLih5YW1sfHltbCkkLylcblxuXG5cbi8qKlxuICpcbiAqIEByZXR1cm5zIFZpcnR1YWwgQ2xhaW1zXG4gKi9cblxuXG5jb25zdCB2aXJ0dWFsQ2xhaW1zOiBJVmlydHVhbENsYWltW10gPSBbXG5cblx0bmV3IEZpcmVzdGFydHJBbGxDbGFpbSgpXG5cbl1cblxuLypcbiAqIEZ1bmN0aW9uIHRvIGxvYWQgc3lzdGVtIGNsYWltcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIE91dHB1dDpcbiAqIC0gQW4gYW55W10sIHdpdGggYWxsIHRoZSBzeXN0ZW1zIGxvYWRlZC5cbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU3lzdGVtcygpIHtcblx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdXG5cblx0YXdhaXQgY3Jhd2woZ2V0UGF0aChcInN5c3RlbXNcIiksIChlbnRyeTpzdHJpbmcpID0+IHtcblxuXHRcdHJldHVybiBpc1lhbWxGaWxlLnRlc3QoZW50cnkpXG5cblx0fSwgYXN5bmMgKF9lbnRyeTpzdHJpbmcsIGRhdGE6YW55KSA9PiB7XG5cblx0XHRjb25zdCBzeXN0ZW06IGFueSA9IGNvbW1vbi5pby5mcm9tWWFtbChkYXRhKVxuXG5cdFx0cmVzdWx0LnB1c2goc3lzdGVtKTtcblxuXHR9KVxuXG5cdHJldHVybiByZXN1bHRcbn1cblxuLypcbiAqIEZ1bmN0aW9uIHRvIGxvYWQgZG9tYWluIGNsYWltcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIE91dHB1dDpcbiAqIC0gQW4gYW55W10sIHdpdGggYWxsIHRoZSBkb21haW5zIGxvYWRlZC5cbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkRG9tYWlucygpIHtcblxuXHRjb25zdCByZXN1bHQ6IGFueVtdID0gW11cblxuXHRhd2FpdCBjcmF3bChnZXRQYXRoKFwiZG9tYWluc1wiKSwgKGVudHJ5OnN0cmluZykgPT4ge1xuXG5cdFx0cmV0dXJuIGlzWWFtbEZpbGUudGVzdChlbnRyeSlcblxuXHR9LCBhc3luYyAoX2VudHJ5OnN0cmluZywgZGF0YTphbnkpID0+IHtcblxuXHRcdGNvbnN0IGRvbWFpbjogYW55ID0gY29tbW9uLmlvLmZyb21ZYW1sKGRhdGEpXG5cblx0XHRyZXN1bHQucHVzaChkb21haW4pO1xuXHR9KVxuXG5cdHJldHVybiByZXN1bHRcbn1cblxuXG4vKlxuICogTG9hZHMgYWxsIGFwcGxpY2FibGUgZ2xvYmFscyBmb3IgYSBnaXZlbiBjbGFpbSBhbmQgc3RvcmVzIHRoZW0gaW50byBhIGxpc3QuXG4gKlxuICogSW5wdXQ6XG4gKiAtIGNsYWltOiBvdXIgY3VzdG9tIGNsYWltIG9iamVjdCwgd2l0aCB3aGljaCB3ZSBjaGVjayBpZiB0aGUgZ2xvYmFsIGlzIGFwcGxpY2FibGVcbiAqXG4gKiBSZXR1cm5zOlxuICogLSBBIEdsb2JhbFNlY3Rpb24gYXJyYXkgcHJvbWlzZSwgY29udGFpbmluZyBhbGwgdGhlIGdsb2JhbHMgbG9hZGVkIGZvciB0aGlzIGNsYWltXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEdsb2JhbHMoY2xhaW06IGFueSk6IFByb21pc2U8R2xvYmFsU2VjdGlvbltdPiB7XG5cblx0Y29uc3QgcmVzdWx0OiBHbG9iYWxTZWN0aW9uW10gPSBbXVxuXG5cdGF3YWl0IGNyYXdsKGdldFBhdGgoXCJnbG9iYWxzXCIpLCAoZW50cnk6c3RyaW5nKSA9PiB7XG5cblx0XHRyZXR1cm4gaXNZYW1sRmlsZS50ZXN0KGVudHJ5KVxuXG5cdH0sIGFzeW5jIChlbnRyeTpzdHJpbmcsIGRhdGE6YW55KSA9PiB7XG5cblx0XHRjb25zdCBnbG9iYWxEYXRhOiBhbnkgPSBjb21tb24uaW8uZnJvbVlhbWwoZGF0YSk7XG5cblx0XHRjb25zdCBleHQ6IHN0cmluZyA9IHBhdGguZXh0bmFtZShlbnRyeSk7XG5cblx0XHRjb25zdCBuYW1lOiBzdHJpbmcgPSBwYXRoLmJhc2VuYW1lKGVudHJ5LCBleHQpO1xuXG5cdFx0aWYobmFtZSBpbiBTRUNUSU9OU19CWV9GSUxFX05BTUUpe1xuXG5cdFx0XHRjb25zdCBzZWN0aW9uOiBhbnkgPSBuZXcgU0VDVElPTlNfQllfRklMRV9OQU1FW25hbWVdKGdsb2JhbERhdGEpXG5cblx0XHRcdGlmKCEoYXdhaXQgc2VjdGlvbi52YWxpZGF0ZShTQ0hFTUFTX0JZX1NFQ1RJT05fTkFNRVtuYW1lXSB8fCB7fSkpKXtcblxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtuYW1lfSBnbG9iYWwgZmlsZWApXG5cblx0XHRcdH1cblxuXHRcdFx0aWYoZ2xvYmFsRGF0YS5raW5kID09IGNsYWltLmtpbmQpe1xuXG5cdFx0XHRcdHJlc3VsdC5wdXNoKHNlY3Rpb24pXG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0bG9nKCdTa2lwcGluZyBnbG9iYWwgJXMgYmVjYXVzZSBpdCBpcyBub3QgYXBwbGljYWJsZSB0byAlcycsIG5hbWUsIGNsYWltLmtpbmQpXG5cdFx0XHRcblx0XHRcdH1cblxuXHRcdH1cblxuXHR9KVxuXG5cdGxvZygnTG9hZGVkIGdsb2JhbHMgJU8nLCByZXN1bHQpXG5cblx0cmV0dXJuIHJlc3VsdFxuXG59XG5cbi8qXG4gKiBJZiB0aGUgaW5wdXQgY2xhaW0gaXMgYSBHaXRodWJSZXBvc2l0b3J5Q2xhaW0sIGl0IGxvYWRzIGFsbCBpdCdzIGFwcGxpY2FibGVcbiAqIG92ZXJyaWRlcyBhbmQgc3RvcmVzIHRoZW0gaW50byBhIGxpc3QuIE90aGVyd2lzZSwgaXQgcmV0dXJucyBhbiBlbXB0eSBsaXN0LlxuICpcbiAqIElucHV0OlxuICogLSBjbGFpbTogb3VyIGN1c3RvbSBjbGFpbSBvYmplY3QsIHdoaWNoIHNob3VsZCBiZSBhIEdpdGh1YlJlcG9zaXRvcnlDbGFpbVxuICpcbiAqIFJldHVybnM6XG4gKiAtIEFuIE92ZXJyaWRlciBhcnJheSwgd2l0aCBhIEdpdGh1YlJlcG9zaXRvcnlPdmVycmlkZXIgaWYgdGhlIGNsYWltXG4gKiAgIHdhcyBhIEdpdGh1YlJlcG9zaXRvcnlDbGFpbSwgb3IgZW1wdHkgaWYgaXQgd2FzIG5vdC5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkT3ZlcnJpZGVzKGNsYWltOiBhbnkpOiBPdmVycmlkZXJQYXRjaGVzW10ge1xuXG5cblx0bGV0IG92ZXJyaWRlcyA6IE92ZXJyaWRlclBhdGNoZXNbXSA9IFtdXG5cblx0aWYoY2xhaW0ua2luZCA9PT0gXCJDb21wb25lbnRDbGFpbVwiICYmIGNsYWltLnByb3ZpZGVycy5naXRodWIub3ZlcnJpZGVzKXtcblxuXHRcdG92ZXJyaWRlcy5wdXNoKG5ldyBHaXRodWJSZXBvc2l0b3J5T3ZlcnJpZGVyKCkpXG5cblx0fVxuXG5cdHJldHVybiBvdmVycmlkZXNcblxufVxuXG5cbi8qKlxuICogTG9hZCBhbGwgbm9ybWFsaXplcnMgYW5kIHN0b3JlcyB0aGVtIGludG8gYSBsaXN0LlxuICogQHBhcmFtIGNsYWltXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZE5vcm1hbGl6ZXJzKF9jbGFpbTogYW55LCBwYXRoPzogc3RyaW5nKTogUHJvbWlzZTxOb3JtYWxpemVyW10+IHtcblxuXHRsZXQgcmVzdWx0OiBOb3JtYWxpemVyW10gPSBbXVxuXG5cdGZvciAoY29uc3Qgbm9ybWFsaXplciBvZiBOT1JNQUxJWkVSUykge1xuXG5cdFx0cmVzdWx0LnB1c2gobmV3IG5vcm1hbGl6ZXIoe3BhdGg6IHBhdGh9KSk7XG5cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG5cbn1cblxuXG4vKlxuICogTG9hZHMgYWxsIGFwcGxpY2FibGUgaW5pdGlhbGl6ZXJzIGZvciBhIGdpdmVuIGNsYWltIGFuZCBzdG9yZXMgdGhlbSBpbnRvIGEgbGlzdC5cbiAqXG4gKiBJbnB1dDpcbiAqIC0gY2xhaW06IG91ciBjdXN0b20gY2xhaW0gb2JqZWN0LCB3aXRoIHdoaWNoIHdlIGNoZWNrIGlmIHRoZSBpbml0aWFsaXplciBpcyBhcHBsaWNhYmxlXG4gKlxuICogUmV0dXJuczpcbiAqIC0gQW4gSW5pdGlhbGl6ZXIgYXJyYXkgcHJvbWlzZSwgY29udGFpbmluZyBhbGwgdGhlIGluaXRpYWxpemVycyBsb2FkZWQgZm9yIHRoaXMgY2xhaW1cbiAqXG4gKi9cblxubGV0IGxvYWRlZEluaXRpYWxpemVyczogSW5pdGlhbGl6ZXJQYXRjaGVzW10gfCBmYWxzZSA9IGZhbHNlXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkSW5pdGlhbGl6ZXJzKGNsYWltOiBhbnksIGluaXRpYWxpemVyc1BhdGg6IHN0cmluZyA9IGdldFBhdGgoXCJpbml0aWFsaXplcnNcIikpOiBQcm9taXNlPEluaXRpYWxpemVyUGF0Y2hlc1tdPiB7XG5cblx0bGV0IHJlc3VsdDogSW5pdGlhbGl6ZXJQYXRjaGVzW10gPSBbXVxuXG5cdGF3YWl0IGNyYXdsKGluaXRpYWxpemVyc1BhdGgsIChlbnRyeTpzdHJpbmcpID0+IHtcblxuXHRcdHJldHVybiBpc1lhbWxGaWxlLnRlc3QoZW50cnkpXG5cblx0fSwgYXN5bmMoZW50cnk6c3RyaW5nLCBkYXRhOmFueSkgPT4ge1xuXG5cdFx0Y29uc3QgaW5pdGlhbGl6ZXJEYXRhOiBhbnkgPSBjb21tb24uaW8uZnJvbVlhbWwoZGF0YSlcblxuXHRcdGNvbnN0IGV4dDogc3RyaW5nID0gcGF0aC5leHRuYW1lKGVudHJ5KTtcblxuXHRcdGNvbnN0IG5hbWU6IHN0cmluZyA9IHBhdGguYmFzZW5hbWUoZW50cnksIGV4dCk7XG5cblx0XHRpZihuYW1lIGluIElOSVRJQUxJWkVSU19CWV9GSUxFX05BTUUpe1xuXG5cdFx0XHRjb25zdCBpbml0aWFsaXplckJmTjogYW55ID0gbmV3IElOSVRJQUxJWkVSU19CWV9GSUxFX05BTUVbbmFtZV0oaW5pdGlhbGl6ZXJEYXRhKVxuXG5cdFx0XHRpZighKGF3YWl0IGluaXRpYWxpemVyQmZOLnZhbGlkYXRlKFNDSEVNQVNfQllfSU5JVElBTElaRVJfTkFNRVtuYW1lXSB8fCB7fSkpKXtcblxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtuYW1lfSBpbml0aWFsaXplciBmaWxlYClcblxuXHRcdFx0fVxuXG5cdFx0XHRpZihpbml0aWFsaXplckRhdGEua2luZCA9PT0gY2xhaW0ua2luZCl7XG5cblx0XHRcdFx0cmVzdWx0LnB1c2goaW5pdGlhbGl6ZXJCZk4pXG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0bG9nKCdTa2lwcGluZyBpbml0aWFsaXplciAlcyBiZWNhdXNlIGl0IGlzIG5vdCBhcHBsaWNhYmxlIHRvICVzJywgbmFtZSwgY2xhaW0ua2luZClcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdH0pXG5cblx0Zm9yKGNvbnN0IGluaXRpYWxpemVyIG9mIElOSVRJQUxJWkVSUykge1xuXG5cdFx0aWYoKGluaXRpYWxpemVyLmFwcGxpY2FibGVLaW5kcykuaW5jbHVkZXMoY2xhaW0ua2luZCkpe1xuXG5cdFx0XHRyZXN1bHQucHVzaChuZXcgaW5pdGlhbGl6ZXIoKSk7XG5cblx0XHR9XG5cblx0fVxuXG5cdGxvZygnTG9hZGVkIGluaXRpYWxpemVycyAlTycsIHJlc3VsdClcblxuXHRsb2FkZWRJbml0aWFsaXplcnMgPSByZXN1bHRcblxuXHRyZXR1cm4gbG9hZGVkSW5pdGlhbGl6ZXJzXG59XG5cblxuLypcbiAqIExvYWRzIGFsbCBjbGFpbXMgYW5kIHN0b3JlcyB0aGVtIGludG8gYSBhbiBvYmplY3QuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZWNlaXZlcyBubyBpbnB1dC5cbiAqXG4gKiBSZXR1cm5zOlxuICogLSBBIFJlbmRlckNsYWltcyBwcm9taXNlLiBBIFJlbmRlckNsYWltcyBvYmplY3QgY29udGFpbnMsIGZvciBlYWNoIGNsYWltOlxuICogICDCtyBUaGUgYWN0dWFsIGNsYWltIG9iamVjdFxuICogICDCtyBUaGUgY2xhaW0ncyBwYXRoXG4gKiAgIMK3IFRoZSBjbGFpbSdzIGFwcGxpY2FibGUgaW5pdGlhbGl6ZXJzLCBnbG9iYWxzIGFuZCBvdmVycmlkZXNcbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ2xhaW1zKGNsYWltc1BhdGg6IHN0cmluZyA9IGdldFBhdGgoXCJjbGFpbXNcIikpOiBQcm9taXNlPFJlbmRlckNsYWltcz4ge1xuXG5cdGNvbnN0IHJlc3VsdDogYW55ID0ge31cblxuXHRjb25zdCBkZWZhdWx0c0NsYWltcyA9IGxvYWRDbGFpbURlZmF1bHRzKClcblxuXHRhd2FpdCBjcmF3bChjbGFpbXNQYXRoLCAoZW50cnk6c3RyaW5nKSA9PiB7XG5cblx0XHRyZXR1cm4gaXNZYW1sRmlsZS50ZXN0KGVudHJ5KVxuXG5cdH0sIGFzeW5jIChlbnRyeTpzdHJpbmcsIGRhdGE6YW55KSA9PiB7XG5cblx0XHRjb25zdCBjbGFpbTogYW55ID0gcGF0Y2hDbGFpbShjb21tb24uaW8uZnJvbVlhbWwoZGF0YSksIGRlZmF1bHRzQ2xhaW1zKVxuXG5cdFx0aWYoIShcImtpbmRcIiBpbiBjbGFpbSAmJiBcIm5hbWVcIiBpbiBjbGFpbSkpe1xuXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY2xhaW0gZmlsZSAke2VudHJ5fWApXG5cblx0XHR9XG5cblx0XHRDbGFpbVZhbGlkYXRpb24udmFsaWRhdGVDbGFpbShjbGFpbSwgKGNsYWltcyBhcyBhbnkpW2Ake2NsYWltLmtpbmR9U2NoZW1hYF0pXG5cbiAgICAgICAgICAgICAgICBhd2FpdCBDbGFpbVZhbGlkYXRpb24ub3B0aW9uYWxWYWxpZGF0aW9uKGNsYWltKVxuXG5cdFx0aWYocmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXSkge1xuXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBjbGFpbSAke2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gKVxuXHRcdH1cblxuXHRcdHJlc3VsdFtgJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YF0gPSB7fVxuXG5cdFx0cmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXVtcImNsYWltXCJdID0gY2xhaW1cblxuXHRcdHJlc3VsdFtgJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YF1bXCJjbGFpbVBhdGhcIl0gPSBlbnRyeVxuXG5cdFx0cmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXVtcImluaXRpYWxpemVyc1wiXSA9IGF3YWl0IGxvYWRJbml0aWFsaXplcnMoY2xhaW0pO1xuXG5cdFx0cmVzdWx0W2Ake2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gXVtcImdsb2JhbHNcIl0gPSBhd2FpdCBsb2FkR2xvYmFscyhjbGFpbSk7XG5cblx0XHRyZXN1bHRbYCR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWBdW1wib3ZlcnJpZGVzXCJdID0gbG9hZE92ZXJyaWRlcyhjbGFpbSk7XG5cblx0XHRyZXN1bHRbYCR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWBdW1wibm9ybWFsaXplcnNcIl0gPSBhd2FpdCBsb2FkTm9ybWFsaXplcnMoY2xhaW0sIGVudHJ5KTtcblxuXHR9KVxuXG5cdHJldHVybiByZXN1bHRcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZENsYWltRGVmYXVsdHMoKXtcbiAgcmV0dXJuIGNvbW1vbi5pby5mcm9tWWFtbChmcy5yZWFkRmlsZVN5bmMoXG4gICAgYCR7Z2V0UGF0aChcImNsYWltc0RlZmF1bHRzXCIpfS9jbGFpbXNfZGVmYXVsdHMueWFtbGAsIFwidXRmLThcIlxuICApKVxufVxuXG4vKlxuICogVXNpbmcgZmFzdC1qc29uLXBhdGNoLCBjb21wYXJlcyBhIGNsYWltIHRvIGl0cyBraW5kJ3MgZGVmYXVsdHMsIHRoZW4gcGF0Y2hlcyBpdC5cbiAqXG4gKiBJbnB1dDpcbiAqIC0gY2xhaW06IG91ciBjdXN0b20gY2xhaW0gb2JqZWN0LCB3aGljaCB3ZSB3YW50IHRvIHBhdGNoXG4gKiAtIGRlZmF1bHRzQ2xhaW1zOiBhbiBvYmplY3QsIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHRzIGZvciBlYWNoIGNsYWltIGtpbmQsXG4gKiAgIHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIHRoYXQgd2UgdXNlIGZvciB0aGUgYWN0dWFsIGNsYWltc1xuICpcbiAqIFJldHVybnM6XG4gKiAtIFRoZSBwYXRjaGVkIGNsYWltXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hDbGFpbShjbGFpbTogYW55LCBkZWZhdWx0c0NsYWltczogYW55KXtcblxuXHRpZihkZWZhdWx0c0NsYWltc1tjbGFpbS5raW5kXSl7XG5cblx0XHRjb25zdCBqc29uUGF0Y2hPcHM6IGFueSA9IGZhc3RKc29uUGF0Y2guY29tcGFyZShjbGFpbSwgZGVmYXVsdHNDbGFpbXNbY2xhaW0ua2luZF0pLmZpbHRlcigoanA6YW55KSA9PiB7XG5cblx0XHRcdHJldHVybiBqcC5vcCA9PSBcImFkZFwiXG5cblx0XHR9KVxuXG5cdFx0Y2xhaW0gPSBmYXN0SnNvblBhdGNoLmFwcGx5UGF0Y2goY2xhaW0sIGpzb25QYXRjaE9wcykubmV3RG9jdW1lbnRcblxuXHR9XG5cblx0cmV0dXJuIGNsYWltXG5cbn1cblxuXG4vKlxuICogTG9hZHMgYWxsIENScyBhbmQgc3RvcmVzIHRoZW0gaW50byBhIG9iamVjdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIFJldHVybnM6XG4gKiAtIEFuIG9iamVjdCBwcm9taXNlIHdoaWNoIGNvbnRhaW5zIGVhY2ggbG9hZGVkIENSXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENScyhcblxuXHRjcnNQYXRoOiBzdHJpbmcgPSBnZXRQYXRoKFwiY3JzXCIpLFxuXG5cdGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdID0gWyBnZXRQYXRoKFwiZ2xvYmFsc1wiKSwgZ2V0UGF0aChcImluaXRpYWxpemVyc1wiKV1cblxuKSB7XG5cblx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fVxuXG5cdGF3YWl0IGNyYXdsV2l0aEV4Y2x1c2lvbnMoY3JzUGF0aCwgKGVudHJ5OnN0cmluZykgPT4ge1xuXG5cdFx0cmV0dXJuIGlzWWFtbEZpbGUudGVzdChlbnRyeSlcblxuXHR9LCBhc3luYyAoZW50cnk6c3RyaW5nLCBkYXRhOmFueSkgPT4ge1xuXG5cdFx0Y29uc3QgeWFtbERhdGE6IGFueSA9IHN0cmlwS25vd25SZWxhdGlvbnMoY29tbW9uLmlvLmZyb21ZYW1sKGRhdGEpKTtcblxuXHRcdGlmKCEoXCJraW5kXCIgaW4geWFtbERhdGEgJiYgXCJuYW1lXCIgaW4geWFtbERhdGEubWV0YWRhdGEpKXtcblxuXHRcdFx0bG9nKGBJbnZhbGlkIGNsYWltIGZpbGUgJHtlbnRyeX1gKVxuXG5cdFx0fSBlbHNlIHtcblxuICAgICAgICAgICAgaWYocmVzdWx0W2Ake3lhbWxEYXRhLmtpbmR9LSR7eWFtbERhdGEubWV0YWRhdGEubmFtZX1gXSkge1xuXG4gICAgICAgICAgICAgICAgbG9nKGBEdXBsaWNhdGUgQ1IgJHt5YW1sRGF0YS5raW5kfS0ke3lhbWxEYXRhLm1ldGFkYXRhLm5hbWV9YClcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHRbYCR7eWFtbERhdGEua2luZH0tJHt5YW1sRGF0YS5tZXRhZGF0YS5uYW1lfWBdID0geWFtbERhdGFcblxuICAgICAgICB9XG5cblx0fSxcblx0XHRleGNsdWRlZFBhdGhzLmNvbmNhdChnZXRBZGRpdGlvbmFsUGF0aHMoKSlcblx0KVxuXG5cdHJldHVybiByZXN1bHRcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSZW5hbWVSZXN1bHQge1xuXHRraW5kOiBzdHJpbmc7XG5cdGNsYWltUGF0aDogc3RyaW5nO1xuXHRjbGFpbU5hbWU6IHN0cmluZztcblx0b2xkTmFtZTogc3RyaW5nO1xuXHRuZXdOYW1lOiBzdHJpbmc7XG59XG5cbi8qXG4qIERlc2NyaXB0aW9uOiBHZXQgdGhlIHJlbmFtZWQgdXNpbmcgY2xhaW1SZWYgYW5ub3RhdGlvblxuKiBJbnB1dDogY2xhaW1zOiBhbnksIGNyczogYW55XG4qIE91dHB1dDogcmVuYW1lczogSVJlbmFtZVJlc3VsdFtdXG4qL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJlbmFtZXMoY2xhaW1zOiBhbnksIGNyczogYW55KTogUHJvbWlzZTxJUmVuYW1lUmVzdWx0W10+IHtcblxuXHQvKlxuXHQgKiBJZiBjaGVja1JlbmFtZXMgaXMgZmFsc2UsIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIHJlbmFtZXNcblx0ICovXG5cdGNvbnN0IHJlbmFtZXNFbmFibGVkID0gZ2V0UmVuYW1lc0VuYWJsZWQoKTtcblx0aWYgKCFyZW5hbWVzRW5hYmxlZCkgcmV0dXJuIFtdO1xuXG5cdGNvbnN0IHJlc3VsdDogSVJlbmFtZVJlc3VsdFtdID0gW107XG5cblx0LyoqXG5cdCAqIEZvciBlYWNoIENSLCBsb29rIGZvciBhIGNsYWltIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIG5hbWUgd2l0aCBDUidzIGZpcmVzdGFydHIuZGV2L2NsYWltLXJlZiBhbm5vdGF0aW9uXG5cdCAqL1xuXHRmb3IgKGxldCBjciBvZiBPYmplY3QudmFsdWVzKGNycykpIHtcblxuXHRcdGNvbnN0IGFueUNyOiBhbnkgPSBjcjtcblxuXHRcdGlmICghYW55Q3I/Lm1ldGFkYXRhPy5hbm5vdGF0aW9ucykgY29udGludWU7XG5cblx0XHQvLyBpZiB0aGUgYW5ub3RhdGlvbiBpcyBhIGNsYWltUmVmXG5cdFx0Y29uc3QgYW5ub3RhdGlvbk5hbWUgPSBjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbignY2xhaW0tcmVmJyk7XG5cblx0XHRpZiAoYW5ub3RhdGlvbk5hbWUgaW4gYW55Q3I/Lm1ldGFkYXRhPy5hbm5vdGF0aW9ucykge1xuXG5cdFx0XHRjb25zdCBjbGFpbVJlZiA9IGFueUNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25OYW1lXTtcblxuXHRcdFx0Ly8gc3BsaXQgdGhlIGFubm90YXRpb24gaW50byBraW5kIGFuZCBuYW1lXG5cdFx0XHRjb25zdCBba2luZCwgbmFtZV0gPSBjbGFpbVJlZi5zcGxpdChcIi9cIik7XG5cblx0XHRcdC8vIGlmIHRoZSBjbGFpbSBleGlzdHMsIGNoZWNrIGlmIHRoZSBuYW1lIGlzIGRpZmZlcmVudCBmb3IgdGhlIGdpdmVuIHByb3ZpZGVyXG5cdFx0XHRjb25zdCByZWZlcmVuY2VkQ2xhaW0gPSBjbGFpbXNbYCR7a2luZH0tJHtuYW1lfWBdLmNsYWltO1xuXG5cblx0XHRcdGNvbnN0IG9sZE5hbWUgPSBhbnlDci5tZXRhZGF0YS5uYW1lO1xuXHRcdFx0Y29uc3QgbmV3TmFtZSA9IHJlZmVyZW5jZWRDbGFpbS5wcm92aWRlcnNbZ2V0Q29uZmlndXJlZFByb3ZpZGVyKCldLm5hbWU7XG5cblx0XHRcdGlmIChvbGROYW1lICE9PSBuZXdOYW1lKSB7XG5cblx0XHRcdFx0cmVzdWx0LnB1c2goe1xuXHRcdFx0XHRcdGtpbmQ6IHJlZmVyZW5jZWRDbGFpbS5raW5kLFxuXHRcdFx0XHRcdGNsYWltUGF0aDogY2xhaW1zW2Ake2tpbmR9LSR7bmFtZX1gXS5jbGFpbVBhdGgsXG5cdFx0XHRcdFx0Y2xhaW1OYW1lOiByZWZlcmVuY2VkQ2xhaW0ubmFtZSxcblx0XHRcdFx0XHRvbGROYW1lLFxuXHRcdFx0XHRcdG5ld05hbWUsXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJEYXRhIHtcblx0Z2xvYmFscz86IGFueSxcblx0aW5pdGlhbGl6ZXJzPzogYW55LFxuXHRjbGFpbXM/OiBhbnksXG5cdHJlbmFtZXM/OiBhbnksXG5cdGNycz86IGFueVxufVxuXG4vKlxuICogTWFpbiBmdW5jdGlvbiBvZiB0aGlzIGZpbGUuIExvYWRzIGFsbCB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIG9iamVjdHMgYW5kXG4gKiBzdG9yZXMgdGhlbSBpbnRvIGFuIG9iamVjdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIG5vIGlucHV0LlxuICpcbiAqIE91dHB1dDpcbiAqIC0gQW4gb2JqZWN0LCB3aGljaCBjb250YWluczpcbiAqICAgwrcgQWxsIGNsYWltcyB0byBiZSByZW5kZXJlZFxuICogICDCtyBBbGwgQ1JzIHRoYXQgd2VyZSBhbHJlYWR5IGNyZWF0ZWRcbiAqICAgwrcgQWxsIHJlbmFtZSBvcGVyYXRpb25zXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEFsbCgpe1xuXG5cblx0Y29uc3QgZGF0YTogeyByZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcywgY3JzOiBhbnksIHJlbmFtZXM/OiBJUmVuYW1lUmVzdWx0W10gfSA9IHtcblxuXHRcdHJlbmRlckNsYWltczoge30sXG5cblx0XHRjcnM6IHt9LFxuXG5cdH1cblxuXHRhd2FpdCBQcm9taXNlLmFsbChbXG5cblx0XHRsb2FkQ2xhaW1zKCkudGhlbigoY2xhaW1zOmFueSkgPT4ge1xuXG5cdFx0XHRkYXRhW1wicmVuZGVyQ2xhaW1zXCJdID0gY2xhaW1zXG5cblx0XHR9KVxuXG5cdFx0LmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG5cblx0XHRcdHRocm93IGVycm9yXG5cblx0XHR9KVxuXG5cdFx0LnRoZW4oYXN5bmMoKSA9PiB7XG5cblxuXHRcdFx0Zm9yKGNvbnN0IHZpcnR1YWxDbGFpbSBvZiB2aXJ0dWFsQ2xhaW1zKXtcblxuXHRcdFx0XHRjb25zdCBleHBhbmRlZENsYWltOiBJQ2xhaW0gPSAgYXdhaXQgKHZpcnR1YWxDbGFpbS5leHBhbmQoZGF0YVtcInJlbmRlckNsYWltc1wiXSAsIHtvcmc6IGdldE9yZygpfSkpXG5cblxuXHRcdFx0XHRjb25zdCBkZWZhdWx0Q29uZmlnID0ge1xuXHRcdFx0XHRcdGtpbmQ6ICdGaXJlc3RhcnRyR2l0aHViR3JvdXAnLFxuXHRcdFx0XHRcdGRlZmF1bHRWYWx1ZXM6IHtcblx0XHRcdFx0XHQgIGNvbnRleHQ6IHtcblx0XHRcdFx0XHRcdGJhY2tlbmQ6IHtcblx0XHRcdFx0XHRcdCAgcmVmOiB7XG5cdFx0XHRcdFx0XHRcdGtpbmQ6ICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZmlyZXN0YXJ0ci10ZXJyYWZvcm0tc3RhdGUnXG5cdFx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRwcm92aWRlcjoge1xuXHRcdFx0XHRcdFx0ICByZWY6IHtcblx0XHRcdFx0XHRcdFx0a2luZDogJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZycsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdnaXRodWItYXBwJ1xuXHRcdFx0XHRcdFx0ICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ICB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgcmVuZGVyQ2xhaW06IFJlbmRlckNsYWltRGF0YSA9IHtcblxuXHRcdFx0XHRcdGNsYWltOiBleHBhbmRlZENsYWltLFxuXG5cdFx0XHRcdFx0Y2xhaW1QYXRoOiBcInZpcnR1YWxcIixcblxuXHRcdFx0XHRcdGluaXRpYWxpemVyczogW25ldyBVVUlESW5pdGlhbGl6ZXIoZXhwYW5kZWRDbGFpbSksIG5ldyBJbml0aWFsaXplckNsYWltUmVmKCksIG5ldyBJbml0aWFsaXplckRlZmF1bHQoZGVmYXVsdENvbmZpZyldLFxuXG5cdFx0XHRcdFx0b3ZlcnJpZGVzOiBbXSxcblxuXHRcdFx0XHRcdGdsb2JhbHM6IFtdLFxuXG5cdFx0XHRcdFx0bm9ybWFsaXplcnM6IFtuZXcgTmFtZU5vcm1hbGl6ZXIoKV1cblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGF0YVtcInJlbmRlckNsYWltc1wiXVtgJHtleHBhbmRlZENsYWltLmtpbmR9LSR7ZXhwYW5kZWRDbGFpbS5uYW1lfWAgYXMgUmVuZGVyQ2xhaW1LZXldID0gcmVuZGVyQ2xhaW1cblx0XHRcdH1cblxuXHRcdH0pLFxuXG5cdFx0bG9hZENScygpLnRoZW4oKGNyczphbnkpICA9PlxuXG5cdFx0XHRkYXRhW1wiY3JzXCJdID0gY3JzXG5cblx0ICAgICAgICApXG5cblx0XSlcblxuXHQvLyBXZSBuZWVkIHRvIGxvYWQgcmVuYW1lcyBhZnRlciBjcnMgYW5kIGNsYWltcyBoYXMgYmVlbiBsb2FkZWQgdG8gY29tcGFyZSB0aGVtIGJvdGhcblx0ZGF0YVtcInJlbmFtZXNcIl0gPSBhd2FpdCBsb2FkUmVuYW1lcyhkYXRhW1wicmVuZGVyQ2xhaW1zXCJdLCBkYXRhW1wiY3JzXCJdKTtcblxuXHRyZXR1cm4gZGF0YVxuXG59XG5cblxuXG5mdW5jdGlvbiBnZXRPcmcoKXtcblxuXG5cdGNvbnN0IGdyb3VwT3JnOiBzdHJpbmcgPSBjb21tb24uZW52aXJvbm1lbnQuZ2V0RnJvbUVudmlyb25tZW50V2l0aERlZmF1bHQoXG5cbiAgICBjb21tb24udHlwZXMuZW52VmFycy5vcmcsXG5cbiAgICBcIlwiXG5cbiAgKVxuXG4gIHJldHVybiBncm91cE9yZ1xuXG59XG4iXX0=
|
|
234533
234578
|
|
|
234534
234579
|
/***/ }),
|
|
234535
234580
|
|
|
@@ -234706,7 +234751,7 @@ class NameNormalizer extends base_1.Normalizer {
|
|
|
234706
234751
|
}
|
|
234707
234752
|
}
|
|
234708
234753
|
exports.NameNormalizer = NameNormalizer;
|
|
234709
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
234754
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub3JtYWxpemVycy9uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQTZEO0FBQzdELGlDQUFxRDtBQUNyRCxvRUFBb0M7QUFDcEMsMENBQTRCO0FBRTVCLE1BQWEsY0FBZSxTQUFRLGlCQUFVO0lBQTlDOztRQUVFLHdCQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFrSy9CLENBQUM7SUFoS0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFZO1FBRTNCLE9BQU8sSUFBSSxDQUFDO0lBRWQsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBVSxFQUFFLFVBQWU7UUFFekMsSUFBSSxjQUFzQixDQUFDO1FBRTNCLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFFdEMsTUFBTSxjQUFjLEdBQVcsSUFBSSxDQUFDLHVCQUF1QixDQUV6RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBRS9CLENBQUM7WUFFRixNQUFNLGdCQUFnQixHQUFHLG1FQUFtRSxDQUFDO1lBRTdGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBRTFDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxDQUFDO2FBRXREO1lBQ0QsT0FBTyxjQUFjLENBQUM7UUFFeEIsQ0FBQyxDQUFDO1FBR0YsT0FBTyxDQUFDO2dCQUVOLFFBQVEsQ0FBQyxFQUFPO29CQUVkLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO2dCQUU3QyxDQUFDO2dCQUVELEtBQUssQ0FBQyxFQUFPOztvQkFFWCxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxNQUFBLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FB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LENBQUMsQ0FBQTtRQUUzQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFekMsT0FBTyxRQUFRLENBQUE7SUFFakIsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFDOUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVoQyxDQUFDO0NBRUY7QUFwS0Qsd0NBb0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUN1c3RvbVJlc291cmNlUGF0Y2gsIGhlbHBlckNUWCB9IGZyb20gXCIuLi9wYXRjaGVzXCI7XG5pbXBvcnQgeyBOb3JtYWxpemVyLCBOb3JtYWxpemVyRXJyb3IgfSBmcm9tIFwiLi9iYXNlXCI7XG5pbXBvcnQgY29tbW9uIGZyb20gXCJjYXRhbG9nX2NvbW1vblwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmV4cG9ydCBjbGFzcyBOYW1lTm9ybWFsaXplciBleHRlbmRzIE5vcm1hbGl6ZXIge1xuXG4gIGFwcGxpY2FibGVQcm92aWRlcnMgPSBbXCJhbGxcIl1cblxuICBhc3luYyBfX3ZhbGlkYXRlKF9zY2hlbWE6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIGFzeW5jIF9fcGF0Y2hlcyhjbGFpbTogYW55LCBwcmV2aW91c0NSOiBhbnkpOiBQcm9taXNlPElDdXN0b21SZXNvdXJjZVBhdGNoW10+IHtcblxuICAgIGxldCBub3JtYWxpemVkTmFtZTogc3RyaW5nO1xuXG4gICAgY29uc3QgZk5vcm1hbGl6ZU5hbWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lOiBzdHJpbmcgPSB0aGlzLm5vcm1hbGl6ZU5hbWVDaGFyYWN0ZXJzKFxuXG4gICAgICAgIHRoaXMubm9ybWFsaXplTmFtZUxlbmd0aChuYW1lKVxuXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpc1ZhbGlkTmFtZVJlZ2V4ID0gL15bYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPyhcXC5bYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPykqJC87XG5cbiAgICAgIGlmICghaXNWYWxpZE5hbWVSZWdleC50ZXN0KG5vcm1hbGl6ZWROYW1lKSkge1xuXG4gICAgICAgIHRocm93IG5ldyBOb3JtYWxpemVyRXJyb3IoYElOVkFMSURfTkFNRTogJyR7bmFtZX0nYCk7XG5cbiAgICAgIH1cbiAgICAgIHJldHVybiBub3JtYWxpemVkTmFtZTtcblxuICAgIH07XG5cblxuICAgIHJldHVybiBbe1xuXG4gICAgICB2YWxpZGF0ZShjcjogYW55KSB7XG5cbiAgICAgICAgcmV0dXJuIGNyLm1ldGFkYXRhLm5hbWUgPT09IG5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICB9LFxuXG4gICAgICBhcHBseShjcjogYW55KSB7XG5cbiAgICAgICAgY3IubWV0YWRhdGEuYW5ub3RhdGlvbnMgPSBjci5tZXRhZGF0YS5hbm5vdGF0aW9ucyA/PyB7fVxuXG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gaGVscGVyQ1RYKHRoaXMpLnByb3ZpZGVyO1xuXG4gICAgICAgIGNvbnN0IGFubm90YXRpb24gPSBjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbihcImV4dGVybmFsLW5hbWVcIik7XG5cbiAgICAgICAgY29uc3QgcHJvdmlkZXJOYW1lID0gY2xhaW0ucHJvdmlkZXJzW3Byb3ZpZGVyXS5uYW1lO1xuXG4gICAgICAgIGlmIChwcmV2aW91c0NSICYmICFfLmlzRW1wdHkocHJldmlvdXNDUikpIHtcblxuICAgICAgICAgIGNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25dID0gcHJvdmlkZXJOYW1lO1xuXG4gICAgICAgICAgY3IubWV0YWRhdGEubmFtZSA9IHByZXZpb3VzQ1IubWV0YWRhdGEubmFtZTtcblxuICAgICAgICAgIGlmKHByZXZpb3VzQ1Iud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgJiYgIV8uaXNFbXB0eShwcmV2aW91c0NSLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSl7XG5cbiAgICAgICAgICAgIGNyLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmLm5hbWUgPSBwcmV2aW91c0NSLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmLm5hbWU7XG5cbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIHJldHVybiBjcjtcblxuICAgICAgICB9XG5cbiAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBmTm9ybWFsaXplTmFtZShwcm92aWRlck5hbWUpO1xuXG4gICAgICAgIGNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25dID0gcHJvdmlkZXJOYW1lO1xuXG4gICAgICAgIGNyLm1ldGFkYXRhLm5hbWUgPSBub3JtYWxpemVkTmFtZTtcblxuICAgICAgICByZXR1cm4gY3I7XG5cbiAgICAgIH0sXG5cbiAgICAgIGlkZW50aWZ5KCkge1xuXG4gICAgICAgIHJldHVybiBcIm5vcm1hbGl6ZXIvbmFtZVwiO1xuXG4gICAgICB9LFxuXG4gICAgICBhcHBsaWNhYmxlKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYXBwbGljYWJsZVByb3ZpZGVyczogW1wiXmNhdGFsb2dcIl1cbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9LCB7XG4gICAgICAgIHZhbGlkYXRlKGNyOiBhbnkpIHtcblxuICAgICAgICAgIHJldHVybiBjci5tZXRhZGF0YS5uYW1lID09PSBub3JtYWxpemVkTmFtZTtcblxuICAgICAgICB9LFxuICAgICAgICBhcHBseShjcjogYW55KSB7XG5cbiAgICAgICAgICBjci5tZXRhZGF0YS5hbm5vdGF0aW9ucyA9IGNyLm1ldGFkYXRhLmFubm90YXRpb25zID8/IHt9XG5cbiAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uID0gXCJ0aXRsZVwiXG5cbiAgICAgICAgICBjb25zdCBwcm92aWRlck5hbWUgPSBjbGFpbS5uYW1lXG5cbiAgICAgICAgICAvLyBJZiBwcm92aWRlciBpcyBjYXRhbG9nLCB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHByZXZpb3VzQ1JcblxuICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gZk5vcm1hbGl6ZU5hbWUocHJvdmlkZXJOYW1lKTtcblxuICAgICAgICAgIGNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25dID0gcHJvdmlkZXJOYW1lO1xuXG4gICAgICAgICAgY3IubWV0YWRhdGEubmFtZSA9IG5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICAgICAgcmV0dXJuIGNyO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgaWRlbnRpZnkoKSB7XG5cbiAgICAgICAgICByZXR1cm4gXCJub3JtYWxpemVyL25hbWVcIjtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGFwcGxpY2FibGUoKSB7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXBwbGljYWJsZVByb3ZpZGVyczogW1wiY2F0YWxvZ1wiXVxuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcblxuXG5cbiAgfVxuXG4gIG5vcm1hbGl6ZU5hbWVDaGFyYWN0ZXJzKG5hbWU6IHN0cmluZykge1xuXG4gICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IHJlZ2V4ID0gL1teYS16QS1aMC05LV0vZztcblxuICAgIGNvbnN0IHJlZ2V4QmVnaW5zID0gL14tKy9cblxuICAgIGNvbnN0IHJlZ2V4RW5kID0gLy0rJC9cblxuICAgIGxldCByZXBsYWNlZCA9IG5hbWUucmVwbGFjZShyZWdleCwgXCItXCIpO1xuXG4gICAgcmVwbGFjZWQgPSByZXBsYWNlZC5yZXBsYWNlKHJlZ2V4QmVnaW5zLFwiXCIpXG5cbiAgICByZXBsYWNlZCA9IHJlcGxhY2VkLnJlcGxhY2UocmVnZXhFbmQsIFwiXCIpXG5cbiAgICByZXR1cm4gcmVwbGFjZWRcblxuICB9XG5cbiAgbm9ybWFsaXplTmFtZUxlbmd0aChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgMjAwKTtcblxuICB9XG5cbn1cbiJdfQ==
|
|
234710
234755
|
|
|
234711
234756
|
/***/ }),
|
|
234712
234757
|
|
|
@@ -235364,7 +235409,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
235364
235409
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
235365
235410
|
};
|
|
235366
235411
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235367
|
-
exports.getTfWorkspacesRefs = exports.extractRefs = void 0;
|
|
235412
|
+
exports.getTfWorkspacesRefs = exports.getGroupParentRef = exports.extractRefs = void 0;
|
|
235368
235413
|
const catalog_common_1 = __importDefault(__nccwpck_require__(74100));
|
|
235369
235414
|
function extractRefs(renderClaims, kind) {
|
|
235370
235415
|
const result = {};
|
|
@@ -235375,6 +235420,12 @@ function extractRefs(renderClaims, kind) {
|
|
|
235375
235420
|
case "TFWorkspaceClaim":
|
|
235376
235421
|
refs = getTfWorkspacesRefs(claim.providers.terraform.values);
|
|
235377
235422
|
break;
|
|
235423
|
+
case "GroupClaim":
|
|
235424
|
+
/**
|
|
235425
|
+
* Groups can have refs to other groups in parent property
|
|
235426
|
+
**/
|
|
235427
|
+
refs = getGroupParentRef(claim.parent);
|
|
235428
|
+
break;
|
|
235378
235429
|
default:
|
|
235379
235430
|
throw new Error(`No refs for kind ${kind}`);
|
|
235380
235431
|
}
|
|
@@ -235386,6 +235437,18 @@ function extractRefs(renderClaims, kind) {
|
|
|
235386
235437
|
return result;
|
|
235387
235438
|
}
|
|
235388
235439
|
exports.extractRefs = extractRefs;
|
|
235440
|
+
function getGroupParentRef(parent, references = []) {
|
|
235441
|
+
if (!parent)
|
|
235442
|
+
return [];
|
|
235443
|
+
const regex = catalog_common_1.default.types.regex.GroupRefRegex;
|
|
235444
|
+
for (const match of parent.matchAll(regex)) {
|
|
235445
|
+
console.log(match);
|
|
235446
|
+
const [_, claimName] = match;
|
|
235447
|
+
references.push(claimName);
|
|
235448
|
+
}
|
|
235449
|
+
return references;
|
|
235450
|
+
}
|
|
235451
|
+
exports.getGroupParentRef = getGroupParentRef;
|
|
235389
235452
|
function getTfWorkspacesRefs(values, references = []) {
|
|
235390
235453
|
const regex = catalog_common_1.default.types.regex.TFWorkspaceRefRegex;
|
|
235391
235454
|
for (let key in values) {
|
|
@@ -235404,7 +235467,7 @@ function getTfWorkspacesRefs(values, references = []) {
|
|
|
235404
235467
|
return references;
|
|
235405
235468
|
}
|
|
235406
235469
|
exports.getTfWorkspacesRefs = getTfWorkspacesRefs;
|
|
235407
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
235470
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmc0V4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWZzU29ydGVyL3JlZnNFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0VBQW9DO0FBR3BDLFNBQWdCLFdBQVcsQ0FBQyxZQUEwQixFQUFFLElBQVk7SUFFaEUsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFBO0lBRXRCLEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFO1FBRTVCLE1BQU0sS0FBSyxHQUFJLFlBQVksQ0FBQyxHQUFxQixDQUFTLENBQUMsS0FBSyxDQUFBO1FBRWhFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUViLFFBQU8sSUFBSSxFQUFFO1lBRVQsS0FBSyxrQkFBa0I7Z0JBRXJCLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFFOUQsTUFBTTtZQUVOLEtBQUssWUFBWTtnQkFFZjs7b0JBRUk7Z0JBQ0osSUFBSSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFFeEMsTUFBTTtZQUVOO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUE7U0FHaEQ7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ2pCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNuQyxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUE7S0FDSjtJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQXpDSCxrQ0F5Q0c7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsYUFBb0IsRUFBRTtJQUV0RSxJQUFHLENBQUMsTUFBTTtRQUFFLE9BQU8sRUFBRSxDQUFBO0lBRXJCLE1BQU0sS0FBSyxHQUFHLHdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUE7SUFFOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEIsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDNUIsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUM1QjtJQUVELE9BQU8sVUFBVSxDQUFBO0FBRW5CLENBQUM7QUFkRCw4Q0FjQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLE1BQVcsRUFBRSxhQUFvQixFQUFFO0lBRXJFLE1BQU0sS0FBSyxHQUFHLHdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQTtJQUVwRCxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtRQUV0QixRQUFRLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBRXhCLEtBQUssUUFBUTtnQkFDWCxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLE1BQU07WUFFUixLQUFLLFFBQVE7Z0JBQ1gsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUMvQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtvQkFDNUIsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDNUI7Z0JBQ0QsTUFBTTtTQUVUO0tBRUo7SUFJRCxPQUFPLFVBQVUsQ0FBQTtBQUVuQixDQUFDO0FBM0JELGtEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tb24gZnJvbSAnY2F0YWxvZ19jb21tb24nO1xuaW1wb3J0IHsgUmVuZGVyQ2xhaW1LZXksIFJlbmRlckNsYWltcyB9IGZyb20gJy4uL3JlbmRlcmVyL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSZWZzKHJlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zLCBraW5kOiBzdHJpbmcpIHtcblxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge31cblxuICAgIGZvciAoY29uc3Qga2V5IGluIHJlbmRlckNsYWltcykge1xuXG4gICAgICAgIGNvbnN0IGNsYWltID0gKHJlbmRlckNsYWltc1trZXkgYXMgUmVuZGVyQ2xhaW1LZXldIGFzIGFueSkuY2xhaW1cbiAgICAgICAgXG4gICAgICAgIGxldCByZWZzID0gW11cblxuICAgICAgICBzd2l0Y2goa2luZCkge1xuXG4gICAgICAgICAgICBjYXNlIFwiVEZXb3Jrc3BhY2VDbGFpbVwiOiAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHJlZnMgPSBnZXRUZldvcmtzcGFjZXNSZWZzKGNsYWltLnByb3ZpZGVycy50ZXJyYWZvcm0udmFsdWVzKVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcIkdyb3VwQ2xhaW1cIjpcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBHcm91cHMgY2FuIGhhdmUgcmVmcyB0byBvdGhlciBncm91cHMgaW4gcGFyZW50IHByb3BlcnR5XG4gICAgICAgICAgICAgICAqKi8gXG4gICAgICAgICAgICAgIHJlZnMgPSBnZXRHcm91cFBhcmVudFJlZihjbGFpbS5wYXJlbnQpXG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlZnMgZm9yIGtpbmQgJHtraW5kfWApXG4gICAgICAgICAgICBcblxuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0W2NsYWltLm5hbWVdID0ge1xuICAgICAgICAgICAgbmFtZTogYCR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWAsXG4gICAgICAgICAgICByZWZzOiByZWZzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG5cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRHcm91cFBhcmVudFJlZihwYXJlbnQ6IHN0cmluZywgcmVmZXJlbmNlczogYW55W10gPSBbXSl7XG5cbiAgICBpZighcGFyZW50KSByZXR1cm4gW11cbiAgICBcbiAgICBjb25zdCByZWdleCA9IGNvbW1vbi50eXBlcy5yZWdleC5Hcm91cFJlZlJlZ2V4XG5cbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHBhcmVudC5tYXRjaEFsbChyZWdleCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKG1hdGNoKVxuICAgICAgY29uc3QgW18sIGNsYWltTmFtZV0gPSBtYXRjaFxuICAgICAgcmVmZXJlbmNlcy5wdXNoKGNsYWltTmFtZSk7XG4gICAgfVxuICAgICAgICBcbiAgICByZXR1cm4gcmVmZXJlbmNlc1xuXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0VGZXb3Jrc3BhY2VzUmVmcyh2YWx1ZXM6IGFueSwgcmVmZXJlbmNlczogYW55W10gPSBbXSl7XG4gIFxuICAgIGNvbnN0IHJlZ2V4ID0gY29tbW9uLnR5cGVzLnJlZ2V4LlRGV29ya3NwYWNlUmVmUmVnZXhcbiBcbiAgICBmb3IgKGxldCBrZXkgaW4gdmFsdWVzKSB7XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlc1trZXldKSB7XG5cbiAgICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgICAgZ2V0VGZXb3Jrc3BhY2VzUmVmcyh2YWx1ZXNba2V5XSwgcmVmZXJlbmNlcyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHZhbHVlc1trZXldLm1hdGNoQWxsKHJlZ2V4KSkge1xuICAgICAgICAgICAgICBjb25zdCBbXywgY2xhaW1OYW1lXSA9IG1hdGNoXG4gICAgICAgICAgICAgIHJlZmVyZW5jZXMucHVzaChjbGFpbU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgfVxuXG4gICAgfVxuICAgIFxuICAgIFxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXNcblxuICB9XG4iXX0=
|
|
235408
235471
|
|
|
235409
235472
|
/***/ }),
|
|
235410
235473
|
|
|
@@ -235473,13 +235536,13 @@ function sortRefs(data, claim, ordered = [], visiting = [], visited = []) {
|
|
|
235473
235536
|
}
|
|
235474
235537
|
}
|
|
235475
235538
|
function hasSelfRefs(kind) {
|
|
235476
|
-
return ["TFWorkspaceClaim"].includes(kind);
|
|
235539
|
+
return ["TFWorkspaceClaim", "GroupClaim"].includes(kind);
|
|
235477
235540
|
}
|
|
235478
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
235541
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmc1NvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWZzU29ydGVyL3JlZnNTb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQTZDO0FBRTdDOzs7O0dBSUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxZQUEwQixFQUFFLEtBQWU7SUFFaEYsSUFBSSxNQUFNLEdBQWlCLEVBQUUsQ0FBQTtJQUU3QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUV4QixLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRTtZQUU1QixJQUFJLFlBQVksQ0FBQyxHQUFxQixDQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBRWpFLE1BQU0sQ0FBQyxHQUFxQixDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQXFCLENBQUMsQ0FBQTthQUV0RTtTQUVKO1FBRUQsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtLQUN4QztJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQXJCRCx3REFxQkM7QUFHRCxTQUFTLGdCQUFnQixDQUFDLFlBQTBCLEVBQUUsSUFBVztJQUU3RCxJQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBRXJCLE9BQU8sWUFBWSxDQUFBO0tBRXBCO0lBRUQsTUFBTSxlQUFlLEdBQWlCLEVBQUUsQ0FBQTtJQUV4QyxNQUFNLElBQUksR0FBUSxJQUFBLDJCQUFXLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRWpELE1BQU0sT0FBTyxHQUFVLEVBQUUsQ0FBQztJQUUxQixNQUFNLFFBQVEsR0FBVSxFQUFFLENBQUM7SUFFM0IsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBRTFCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFFMUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUV2RDtLQUVGO0lBRUQsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7UUFFeEIsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBRWpEO0lBRUQsT0FBTyxlQUFlLENBQUE7QUFFeEIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVMsRUFBRSxLQUFVLEVBQUUsVUFBaUIsRUFBRSxFQUFFLFdBQWtCLEVBQUUsRUFBRSxVQUFpQixFQUFFO0lBRXJHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBRWpELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBRXJFO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUVqRCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUVkLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFFNUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRW5DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFFckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLEdBQUcseUJBQXlCLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2lCQUUxRTtnQkFFRCxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFFOUQ7U0FFRjtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUVyQjtBQUVILENBQUM7QUFHRCxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBRS9CLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7QUFFMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbmRlckNsYWltS2V5LCBSZW5kZXJDbGFpbXMgfSBmcm9tIFwiLi4vcmVuZGVyZXIvdHlwZXNcIlxuaW1wb3J0IHsgZXh0cmFjdFJlZnMgfSBmcm9tIFwiLi9yZWZzRXh0cmFjdG9yXCJcblxuLyoqXG4gKiBAcGFyYW0gcmVuZGVyQ2xhaW1zIHJlbmRlckNsYWltcyB0byBzb3J0XG4gKiBAcGFyYW0ga2luZHMga2luZHMgdG8gZ2V0IGZyb20gcmVuZGVyQ2xhaW1zXG4gKiBAcmV0dXJucyByZW5kZXJDbGFpbXMgd2l0aCBvbmx5IHRoZSBraW5kcyBzcGVjaWZpZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRSZW5kZXJDbGFpbXNCeUtpbmQocmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXMsIGtpbmRzOiBzdHJpbmdbXSk6IFJlbmRlckNsYWltcyB7XG5cbiAgbGV0IHJlc3VsdDogUmVuZGVyQ2xhaW1zID0ge31cblxuICBmb3IgKGNvbnN0IGtpbmQgb2Yga2luZHMpIHtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHJlbmRlckNsYWltcykge1xuXG4gICAgICAgIGlmKChyZW5kZXJDbGFpbXNba2V5IGFzIFJlbmRlckNsYWltS2V5XSBhcyBhbnkpLmNsYWltLmtpbmQgPT09IGtpbmQpIHtcblxuICAgICAgICAgICAgcmVzdWx0W2tleSBhcyBSZW5kZXJDbGFpbUtleV0gPSByZW5kZXJDbGFpbXNba2V5IGFzIFJlbmRlckNsYWltS2V5XVxuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHJlc3VsdCA9IHNvcnRTZWxmS2luZFJlZnMocmVzdWx0LCBraW5kKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxuXG59XG5cblxuZnVuY3Rpb24gc29ydFNlbGZLaW5kUmVmcyhyZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcywga2luZDpzdHJpbmcpIHtcbiAgXG4gICAgaWYoIWhhc1NlbGZSZWZzKGtpbmQpKSB7XG5cbiAgICAgIHJldHVybiByZW5kZXJDbGFpbXNcblxuICAgIH1cblxuICAgIGNvbnN0IG5ld1JlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zID0ge31cblxuICAgIGNvbnN0IGRhdGE6IGFueSA9IGV4dHJhY3RSZWZzKHJlbmRlckNsYWltcywga2luZClcblxuICAgIGNvbnN0IG9yZGVyZWQ6IGFueVtdID0gW107XG4gICAgXG4gICAgY29uc3QgdmlzaXRpbmc6IGFueVtdID0gW107XG4gICAgXG4gICAgY29uc3QgdmlzaXRlZDogYW55W10gPSBbXTtcbiAgXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICBcbiAgICAgIGlmICghdmlzaXRlZC5maW5kKG9iaiA9PiBvYmoubmFtZSA9PT0ga2V5KSkge1xuICAgIFxuICAgICAgICBzb3J0UmVmcyhkYXRhLCBkYXRhW2tleV0sIG9yZGVyZWQsIHZpc2l0aW5nLCB2aXNpdGVkKTtcbiAgICBcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgICBcbiAgICBmb3IgKGNvbnN0IGNyIG9mIG9yZGVyZWQpIHtcbiAgICBcbiAgICAgIG5ld1JlbmRlckNsYWltc1tjci5uYW1lXSA9IHJlbmRlckNsYWltc1tjci5uYW1lXVxuICAgIFxuICAgIH1cblxuICAgIHJldHVybiBuZXdSZW5kZXJDbGFpbXNcblxuICB9XG4gIFxuICBmdW5jdGlvbiBzb3J0UmVmcyhkYXRhOiBhbnksIGNsYWltOiBhbnksIG9yZGVyZWQ6IGFueVtdID0gW10sIHZpc2l0aW5nOiBhbnlbXSA9IFtdLCB2aXNpdGVkOiBhbnlbXSA9IFtdKSB7XG5cbiAgICBpZiAodmlzaXRpbmcuZmluZChvYmogPT4gb2JqLm5hbWUgPT09IGNsYWltLm5hbWUpKSB7XG4gICAgXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgZm9yIFwiJHtjbGFpbS5uYW1lfVwiYCk7XG4gICAgXG4gICAgfVxuICBcbiAgICBpZiAoIXZpc2l0ZWQuZmluZChvYmogPT4gb2JqLm5hbWUgPT09IGNsYWltLm5hbWUpKSB7XG4gICAgICBcbiAgICAgIHZpc2l0aW5nLnB1c2goY2xhaW0pO1xuICBcbiAgICAgIGlmIChjbGFpbS5yZWZzKSB7XG4gIFxuICAgICAgICBmb3IgKGNvbnN0IHJlZiBvZiBjbGFpbS5yZWZzKSB7XG4gICAgICAgICBcbiAgICAgICAgICBjb25zdCByZWZlcmVuY2VkT2JqZWN0ID0gZGF0YVtyZWZdO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghcmVmZXJlbmNlZE9iamVjdCkge1xuICBcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIFwiJHtyZWZ9XCIgZG9lcyBub3QgZXhpc3QgZm9yIFwiJHtjbGFpbS5uYW1lfVwiYCk7XG4gICAgICAgICAgXG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBzb3J0UmVmcyhkYXRhLCByZWZlcmVuY2VkT2JqZWN0LCBvcmRlcmVkLCB2aXNpdGluZywgdmlzaXRlZCk7XG4gICAgICBcbiAgICAgICAgfVxuICAgICAgXG4gICAgICB9XG4gIFxuICAgICAgdmlzaXRlZC5wdXNoKHZpc2l0aW5nLnBvcCgpKTtcbiAgXG4gICAgICBvcmRlcmVkLnB1c2goY2xhaW0pO1xuICAgIFxuICAgIH1cbiAgXG4gIH1cblxuXG4gIGZ1bmN0aW9uIGhhc1NlbGZSZWZzKGtpbmQ6IHN0cmluZyl7XG5cbiAgICByZXR1cm4gW1wiVEZXb3Jrc3BhY2VDbGFpbVwiLCBcIkdyb3VwQ2xhaW1cIl0uaW5jbHVkZXMoa2luZClcblxuICB9XG4iXX0=
|
|
235479
235542
|
|
|
235480
235543
|
/***/ }),
|
|
235481
235544
|
|
|
235482
|
-
/***/
|
|
235545
|
+
/***/ 84508:
|
|
235483
235546
|
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
|
|
235484
235547
|
|
|
235485
235548
|
"use strict";
|
|
@@ -235511,119 +235574,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
235511
235574
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
235512
235575
|
};
|
|
235513
235576
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235514
|
-
exports.
|
|
235515
|
-
const loader_1 = __nccwpck_require__(29244);
|
|
235516
|
-
const charts = __importStar(__nccwpck_require__(37753));
|
|
235517
|
-
const debug_1 = __importDefault(__nccwpck_require__(67984));
|
|
235518
|
-
const cdk8s_1 = __nccwpck_require__(77228);
|
|
235519
|
-
const featureRenderer_1 = __nccwpck_require__(488);
|
|
235520
|
-
const references_1 = __nccwpck_require__(14461);
|
|
235577
|
+
exports.renderClaim = exports.renderClaims = void 0;
|
|
235521
235578
|
const refresolver_1 = __nccwpck_require__(68671);
|
|
235579
|
+
const claims_sorter_1 = __nccwpck_require__(46742);
|
|
235522
235580
|
const config_1 = __nccwpck_require__(56600);
|
|
235523
|
-
const
|
|
235524
|
-
const
|
|
235525
|
-
const
|
|
235526
|
-
const
|
|
235527
|
-
const
|
|
235528
|
-
|
|
235529
|
-
const CLAIM_REF_ANNOTATION = "firestartr.dev/claim-ref";
|
|
235530
|
-
const log = (0, debug_1.default)("firestartr:renderer");
|
|
235531
|
-
/*
|
|
235532
|
-
* Function called when rendering from the importer class.
|
|
235533
|
-
*
|
|
235534
|
-
* Input:
|
|
235535
|
-
* - renderClaims: a RenderClaims object, which contains the list of claims
|
|
235536
|
-
* we want to render
|
|
235537
|
-
*
|
|
235538
|
-
* Return:
|
|
235539
|
-
* - The result of rendering the renderClaims object, plus the
|
|
235540
|
-
* rendered firestartr-all group
|
|
235541
|
-
*
|
|
235542
|
-
*/
|
|
235543
|
-
async function renderFromImports(renderClaims, crs = {}, catalogOutputDir = "/tmp/.catalog", crOutputDir = "/tmp/.resources") {
|
|
235544
|
-
const catalogScope = new cdk8s_1.App({
|
|
235545
|
-
outdir: catalogOutputDir,
|
|
235546
|
-
outputFileExtension: ".yaml",
|
|
235547
|
-
yamlOutputType: cdk8s_1.YamlOutputType.FILE_PER_RESOURCE,
|
|
235548
|
-
});
|
|
235549
|
-
const firestartrScope = new cdk8s_1.App({
|
|
235550
|
-
outdir: crOutputDir,
|
|
235551
|
-
outputFileExtension: ".yaml",
|
|
235552
|
-
yamlOutputType: cdk8s_1.YamlOutputType.FILE_PER_RESOURCE,
|
|
235553
|
-
});
|
|
235554
|
-
const result = await fRenderClaims(catalogScope, firestartrScope, {
|
|
235555
|
-
renderClaims,
|
|
235556
|
-
crs,
|
|
235557
|
-
renames: []
|
|
235558
|
-
});
|
|
235559
|
-
firestartrScope.synth();
|
|
235560
|
-
return result;
|
|
235561
|
-
}
|
|
235562
|
-
exports.renderFromImports = renderFromImports;
|
|
235563
|
-
/*
|
|
235564
|
-
* Function called when rendering but not importing
|
|
235565
|
-
*
|
|
235566
|
-
* Input:
|
|
235567
|
-
* - scope: an object, used to represent CDKTF's execution scope
|
|
235568
|
-
*
|
|
235569
|
-
* Return:
|
|
235570
|
-
* - The result of rendering the renderClaims object, plus the
|
|
235571
|
-
* rendered firestartr-all group
|
|
235572
|
-
*
|
|
235573
|
-
*/
|
|
235574
|
-
async function render(catalogScope, firestartrScope) {
|
|
235575
|
-
const data = await (0, loader_1.loadAll)();
|
|
235576
|
-
const result = await fRenderClaims(catalogScope, firestartrScope, data);
|
|
235577
|
-
(0, references_1.validateReferentialIntegrity)(result);
|
|
235578
|
-
(0, references_1.validateTfStateKeyUniqueness)(result);
|
|
235579
|
-
return result;
|
|
235580
|
-
}
|
|
235581
|
-
exports.render = render;
|
|
235582
|
-
/*
|
|
235583
|
-
* Function called when rendering Terraform workspaces Plans
|
|
235584
|
-
* based on the previous renderer Terraform workspaces
|
|
235585
|
-
*/
|
|
235586
|
-
async function renderWorkspacePlans(source, destiny, prLink, sha, ghCli = github_1.default) {
|
|
235587
|
-
const [orgRepo, prNumber] = prLink.split("#");
|
|
235588
|
-
const [org, repo] = orgRepo.split("/");
|
|
235589
|
-
const { data: files } = await ghCli.pulls.getPrFiles(parseInt(prNumber), repo, org);
|
|
235590
|
-
if (files && files.length > 0 && files[0].status == "removed") {
|
|
235591
|
-
const content = await ghCli.repo.getContent(files[0].filename, repo, org);
|
|
235592
|
-
const workspace = catalog_common_1.default.io.fromYaml(content);
|
|
235593
|
-
workspace.kind = "FirestartrTerraformWorkspacePlan";
|
|
235594
|
-
workspace.metadata.annotations = Object.assign(Object.assign({}, workspace.metadata.annotations), { [catalog_common_1.default.generic.getFirestartrAnnotation("pull-request-plan")]: prLink, [catalog_common_1.default.generic.getFirestartrAnnotation("plan-sha")]: sha });
|
|
235595
|
-
workspace.metadata.annotations[catalog_common_1.default.generic.getFirestartrAnnotation("policy")] = "destroy";
|
|
235596
|
-
const workspacePlan = catalog_common_1.default.io.toYaml(Object.assign({}, workspace), { quotingType: '"', lineWidth: -1 });
|
|
235597
|
-
const fileName = path_1.default.join(destiny, path_1.default.basename(files[0].filename));
|
|
235598
|
-
fs_1.default.writeFileSync(fileName, workspacePlan);
|
|
235599
|
-
return;
|
|
235600
|
-
}
|
|
235601
|
-
// Iterate over the source folder and get the list of Terraform workspaces
|
|
235602
|
-
await (0, crawler_1.crawl)(source, () => true, (entry, data) => {
|
|
235603
|
-
const fileName = path_1.default.join(destiny, path_1.default.basename(entry));
|
|
235604
|
-
const workspace = catalog_common_1.default.io.fromYaml(data);
|
|
235605
|
-
workspace.kind = "FirestartrTerraformWorkspacePlan";
|
|
235606
|
-
workspace.metadata.annotations = Object.assign(Object.assign({}, workspace.metadata.annotations), { [catalog_common_1.default.generic.getFirestartrAnnotation("pull-request-plan")]: prLink, [catalog_common_1.default.generic.getFirestartrAnnotation("plan-sha")]: sha });
|
|
235607
|
-
const workspacePlan = catalog_common_1.default.io.toYaml(Object.assign({}, workspace), { quotingType: '"', lineWidth: -1 });
|
|
235608
|
-
fs_1.default.writeFileSync(fileName, workspacePlan);
|
|
235609
|
-
});
|
|
235610
|
-
}
|
|
235611
|
-
exports.renderWorkspacePlans = renderWorkspacePlans;
|
|
235612
|
-
async function addLastStateAndLastClaimAnnotations(filePath, lastStatePRLink, lastClaimPRLink) {
|
|
235613
|
-
// Iterate over the source folder and get the list of Terraform workspaces
|
|
235614
|
-
const workspace = catalog_common_1.default.io.fromYaml(fs_1.default.readFileSync(filePath, "utf-8"));
|
|
235615
|
-
const stateLinkAsArray = lastStatePRLink.split("/");
|
|
235616
|
-
const stateAnnotationValue = `${stateLinkAsArray[3]}/${stateLinkAsArray[4]}#${stateLinkAsArray[6]}`;
|
|
235617
|
-
const claimLinkAsArray = lastClaimPRLink.split("/");
|
|
235618
|
-
const claimAnnotationValue = `${claimLinkAsArray[3]}/${claimLinkAsArray[4]}#${claimLinkAsArray[6]}`;
|
|
235619
|
-
workspace.metadata.annotations = Object.assign(Object.assign({}, workspace.metadata.annotations), { [catalog_common_1.default.generic.getFirestartrAnnotation("last-state-pr")]: stateAnnotationValue, [catalog_common_1.default.generic.getFirestartrAnnotation("last-claim-pr")]: claimAnnotationValue });
|
|
235620
|
-
fs_1.default.writeFileSync(filePath, catalog_common_1.default.io.toYaml(Object.assign({}, workspace), { quotingType: '"', lineWidth: -1 }));
|
|
235621
|
-
}
|
|
235622
|
-
exports.addLastStateAndLastClaimAnnotations = addLastStateAndLastClaimAnnotations;
|
|
235623
|
-
async function fRenderClaims(catalogScope, firestartrScope, data) {
|
|
235581
|
+
const patches_extractor_1 = __nccwpck_require__(25830);
|
|
235582
|
+
const previous_crs_extractor_1 = __nccwpck_require__(63396);
|
|
235583
|
+
const charts = __importStar(__nccwpck_require__(37753));
|
|
235584
|
+
const debug_1 = __importDefault(__nccwpck_require__(67984));
|
|
235585
|
+
const log = (0, debug_1.default)("firestartr:renderer:claims-render");
|
|
235586
|
+
async function renderClaims(catalogScope, firestartrScope, data) {
|
|
235624
235587
|
const result = {};
|
|
235625
235588
|
const { renderClaims, crs } = data;
|
|
235626
|
-
const sortedKinds =
|
|
235589
|
+
const sortedKinds = (0, claims_sorter_1.sortKinds)([
|
|
235590
|
+
"UserClaim",
|
|
235591
|
+
"GroupClaim",
|
|
235592
|
+
"ComponentClaim",
|
|
235593
|
+
"DomainClaim",
|
|
235594
|
+
"SystemClaim",
|
|
235595
|
+
"TFWorkspaceClaim",
|
|
235596
|
+
"ArgoDeployClaim"
|
|
235597
|
+
], renderClaims);
|
|
235627
235598
|
for (const renderClaims of sortedKinds) {
|
|
235628
235599
|
for (const claimKey of Object.keys(renderClaims)) {
|
|
235629
235600
|
const claim = renderClaims[claimKey].claim;
|
|
@@ -235632,8 +235603,8 @@ async function fRenderClaims(catalogScope, firestartrScope, data) {
|
|
|
235632
235603
|
if (configuredProvider != config_1.AllowedProviders.all.toString()) {
|
|
235633
235604
|
providers = providers.filter((provider) => provider === configuredProvider);
|
|
235634
235605
|
}
|
|
235635
|
-
const previousCR = getPreviousCRfromClaim(claim, crs);
|
|
235636
|
-
const patches = await extractPatches(renderClaims[claimKey], previousCR);
|
|
235606
|
+
const previousCR = (0, previous_crs_extractor_1.getPreviousCRfromClaim)(claim, crs);
|
|
235607
|
+
const patches = await (0, patches_extractor_1.extractPatches)(renderClaims[claimKey], previousCR);
|
|
235637
235608
|
if (!previousCR) {
|
|
235638
235609
|
log(`No CR found for claim ${claimKey}, it will be rendered from scratch`);
|
|
235639
235610
|
}
|
|
@@ -235662,29 +235633,7 @@ async function fRenderClaims(catalogScope, firestartrScope, data) {
|
|
|
235662
235633
|
}
|
|
235663
235634
|
return result;
|
|
235664
235635
|
}
|
|
235665
|
-
|
|
235666
|
-
let totalPatches = [];
|
|
235667
|
-
for (const normalizer of claimToRenderData.normalizers) {
|
|
235668
|
-
const patches = await normalizer.patches(claimToRenderData["claim"], previousCR);
|
|
235669
|
-
totalPatches = totalPatches.concat(patches).flat();
|
|
235670
|
-
}
|
|
235671
|
-
for (const initializer of claimToRenderData.initializers) {
|
|
235672
|
-
const patches = await initializer.patches(claimToRenderData["claim"], previousCR);
|
|
235673
|
-
totalPatches = totalPatches.concat(patches).flat();
|
|
235674
|
-
}
|
|
235675
|
-
for (const overrider of claimToRenderData.overrides) {
|
|
235676
|
-
const patches = await overrider.patches(claimToRenderData["claim"], previousCR);
|
|
235677
|
-
totalPatches = totalPatches.concat(patches).flat();
|
|
235678
|
-
}
|
|
235679
|
-
if (claimToRenderData.claim.kind === "ComponentClaim") {
|
|
235680
|
-
totalPatches = totalPatches.concat((await (0, featureRenderer_1.generateFeaturesPatches)(claimToRenderData.claim))).flat();
|
|
235681
|
-
}
|
|
235682
|
-
for (const global of claimToRenderData.globals) {
|
|
235683
|
-
const patches = await global.patches(claimToRenderData.claim, previousCR);
|
|
235684
|
-
totalPatches = totalPatches.concat(patches).flat();
|
|
235685
|
-
}
|
|
235686
|
-
return totalPatches;
|
|
235687
|
-
}
|
|
235636
|
+
exports.renderClaims = renderClaims;
|
|
235688
235637
|
async function renderClaim(catalogScope, firestartrScope, claim, patches, previousCR = null) {
|
|
235689
235638
|
var _a, _b;
|
|
235690
235639
|
let catalogEntity = undefined;
|
|
@@ -235764,6 +235713,19 @@ async function renderClaim(catalogScope, firestartrScope, claim, patches, previo
|
|
|
235764
235713
|
extraCharts: await (firestartrEntity === null || firestartrEntity === void 0 ? void 0 : firestartrEntity.extraCharts()) || []
|
|
235765
235714
|
};
|
|
235766
235715
|
}
|
|
235716
|
+
exports.renderClaim = renderClaim;
|
|
235717
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLXJlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9jbGFpbXMtcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsZ0RBQWlEO0FBR2pELG1EQUEyQztBQUMzQyxzQ0FBbUU7QUFDbkUsMkRBQW9EO0FBQ3BELHFFQUFpRTtBQUlqRSxrREFBbUM7QUFDbkMsa0RBQXlCO0FBRXpCLE1BQU0sR0FBRyxHQUFHLElBQUEsZUFBSyxFQUFDLG1DQUFtQyxDQUFDLENBQUE7QUFFL0MsS0FBSyxVQUFVLFlBQVksQ0FFOUIsWUFBdUIsRUFFdkIsZUFBMEIsRUFFMUIsSUFRQztJQUlELE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUE7SUFFaEMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7SUFFbEMsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBUyxFQUFDO1FBQzVCLFdBQVc7UUFDWCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGlCQUFpQjtLQUNsQixFQUFFLFlBQVksQ0FBQyxDQUFBO0lBRWhCLEtBQUssTUFBTSxZQUFZLElBQUksV0FBVyxFQUFFO1FBRXRDLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUVoRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBMEIsQ0FBQyxDQUFDLEtBQUssQ0FBQTtZQUU1RCxNQUFNLGtCQUFrQixHQUFHLElBQUEsOEJBQXFCLEdBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUU3RCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUU1QyxJQUFHLGtCQUFrQixJQUFJLHlCQUFnQixDQUFDLEdB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UyxDQUFDO1FBRXZGLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLE1BQU0sRUFBRTtLQUUzQixDQUVGLENBQUE7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTztRQUVMLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUV0RixnQkFBZ0IsRUFBRSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTdHLFdBQVcsRUFBRSxNQUFNLENBQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsV0FBVyxFQUFFLENBQUEsSUFBSSxFQUFFO0tBQ3pELENBQUM7QUFFSixDQUFDO0FBdk1ELGtDQXVNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IHNldFJlbmRlcmVkQ2xhaW0gfSBmcm9tIFwiLi4vcmVmcmVzb2x2ZXJcIlxuaW1wb3J0IHsgUmVuZGVyQ2xhaW1LZXksIFJlbmRlckNsYWltcywgUmVuZGVyZWRDck1hcCB9IGZyb20gXCIuL3R5cGVzXCJcbmltcG9ydCB7IElSZW5hbWVSZXN1bHQgfSBmcm9tIFwiLi4vbG9hZGVyL2xvYWRlclwiXG5pbXBvcnQgeyBzb3J0S2luZHMgfSBmcm9tIFwiLi9jbGFpbXMtc29ydGVyXCJcbmltcG9ydCB7IEFsbG93ZWRQcm92aWRlcnMsIGdldENvbmZpZ3VyZWRQcm92aWRlciB9IGZyb20gXCIuLi9jb25maWdcIlxuaW1wb3J0IHsgZXh0cmFjdFBhdGNoZXMgfSBmcm9tIFwiLi9wYXRjaGVzLWV4dHJhY3RvclwiXG5pbXBvcnQgeyBnZXRQcmV2aW91c0NSZnJvbUNsYWltIH0gZnJvbSBcIi4vcHJldmlvdXMtY3JzLWV4dHJhY3RvclwiXG5pbXBvcnQgeyBJQ3VzdG9tUmVzb3VyY2VQYXRjaCB9IGZyb20gXCIuLi9wYXRjaGVzXCJcbmltcG9ydCB7IElSZW5kZXJDbGFpbVJlc3VsdCB9IGZyb20gXCIuL2ludGVyZmFjZXNcIlxuaW1wb3J0IHsgQmFzZUNoYXJ0IH0gZnJvbSBcIi4uL2NoYXJ0cy9iYXNlXCJcbmltcG9ydCAqIGFzIGNoYXJ0cyBmcm9tIFwiLi4vY2hhcnRzXCJcbmltcG9ydCBEZWJ1ZyBmcm9tIFwiZGVidWdcIlxuXG5jb25zdCBsb2cgPSBEZWJ1ZyhcImZpcmVzdGFydHI6cmVuZGVyZXI6Y2xhaW1zLXJlbmRlclwiKVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQ2xhaW1zKFxuXG4gICAgY2F0YWxvZ1Njb3BlOiBDb25zdHJ1Y3QsXG4gIFxuICAgIGZpcmVzdGFydHJTY29wZTogQ29uc3RydWN0LFxuICBcbiAgICBkYXRhOiB7XG4gIFxuICAgICAgcmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXMsXG4gIFxuICAgICAgY3JzOiBhbnksXG4gIFxuICAgICAgcmVuYW1lcz86IElSZW5hbWVSZXN1bHRbXVxuICBcbiAgICB9LFxuICBcbiAgKTogUHJvbWlzZTxSZW5kZXJlZENyTWFwPiB7XG4gIFxuICAgIGNvbnN0IHJlc3VsdDogUmVuZGVyZWRDck1hcCA9IHt9XG4gIFxuICAgIGNvbnN0IHsgcmVuZGVyQ2xhaW1zLCBjcnMgfSA9IGRhdGFcbiAgXG4gICAgY29uc3Qgc29ydGVkS2luZHMgPSBzb3J0S2luZHMoW1xuICAgICAgXCJVc2VyQ2xhaW1cIiwgXG4gICAgICBcIkdyb3VwQ2xhaW1cIiwgXG4gICAgICBcIkNvbXBvbmVudENsYWltXCIsIFxuICAgICAgXCJEb21haW5DbGFpbVwiLCBcbiAgICAgIFwiU3lzdGVtQ2xhaW1cIiwgXG4gICAgICBcIlRGV29ya3NwYWNlQ2xhaW1cIiwgXG4gICAgICBcIkFyZ29EZXBsb3lDbGFpbVwiXG4gICAgXSwgcmVuZGVyQ2xhaW1zKVxuICBcbiAgICBmb3IgKGNvbnN0IHJlbmRlckNsYWltcyBvZiBzb3J0ZWRLaW5kcykge1xuICBcbiAgICAgIGZvciAoY29uc3QgY2xhaW1LZXkgb2YgT2JqZWN0LmtleXMocmVuZGVyQ2xhaW1zKSkge1xuICBcbiAgICAgICAgY29uc3QgY2xhaW0gPSByZW5kZXJDbGFpbXNbY2xhaW1LZXkgYXMgUmVuZGVyQ2xhaW1LZXldLmNsYWltXG4gIFxuICAgICAgICBjb25zdCBjb25maWd1cmVkUHJvdmlkZXIgPSBnZXRDb25maWd1cmVkUHJvdmlkZXIoKS50b1N0cmluZygpXG4gIFxuICAgICAgICBsZXQgcHJvdmlkZXJzID0gT2JqZWN0LmtleXMoY2xhaW0ucHJvdmlkZXJzKVxuICBcbiAgICAgICAgaWYoY29uZmlndXJlZFByb3ZpZGVyICE9IEFsbG93ZWRQcm92aWRlcnMuYWxsLnRvU3RyaW5nKCkpe1xuICBcbiAgICAgICAgICBwcm92aWRlcnMgPSBwcm92aWRlcnMuZmlsdGVyKFxuICBcbiAgICAgICAgICAgIChwcm92aWRlcjogc3RyaW5nKSA9PiBwcm92aWRlciA9PT0gY29uZmlndXJlZFByb3ZpZGVyXG4gIFxuICAgICAgICAgIClcbiAgXG4gICAgICAgIH1cbiAgXG4gIFxuICAgICAgICBjb25zdCBwcmV2aW91c0NSID0gZ2V0UHJldmlvdXNDUmZyb21DbGFpbShjbGFpbSwgY3JzKVxuICBcbiAgICAgICAgY29uc3QgcGF0Y2hlcyA9IGF3YWl0IGV4dHJhY3RQYXRjaGVzKHJlbmRlckNsYWltc1tjbGFpbUtleSBhcyBSZW5kZXJDbGFpbUtleV0sIHByZXZpb3VzQ1IpXG4gIFxuICAgICAgICBpZiAoIXByZXZpb3VzQ1IpIHtcbiAgXG4gICAgICAgICAgbG9nKGBObyBDUiBmb3VuZCBmb3IgY2xhaW0gJHtjbGFpbUtleX0sIGl0IHdpbGwgYmUgcmVuZGVyZWQgZnJvbSBzY3JhdGNoYClcbiAgXG4gICAgICAgIH1cbiAgXG4gICAgICAgIGNvbnN0IHtmaXJlc3RhcnRyRW50aXR5LCBleHRyYUNoYXJ0cywgY2F0YWxvZ0VudGl0eX0gID0gYXdhaXQgcmVuZGVyQ2xhaW0oXG4gIFxuICAgICAgICAgIGNhdGFsb2dTY29wZSxcbiAgXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICBcbiAgICAgICAgICBjbGFpbSxcbiAgXG4gICAgICAgICAgcGF0Y2hlcyxcbiAgXG4gICAgICAgICAgcHJldmlvdXNDUixcbiAgXG4gICAgICAgIClcbiAgXG4gICAgICAgIGlmKGNhdGFsb2dFbnRpdHkpIHtcbiAgXG4gICAgICAgICAgcmVzdWx0W2Ake2NhdGFsb2dFbnRpdHkua2luZH0tJHtjYXRhbG9nRW50aXR5Lm1ldGFkYXRhLm5hbWV9YF0gPSBjYXRhbG9nRW50aXR5LnRvSnNvbigpXG4gICAgICAgIFxuICAgICAgICB9XG4gIFxuICAgICAgICAvKipcbiAgXG4gICAgICAgICogSWYgdGhlcmUgaXMgbm8gcHJvdmlkZXIgZG9uJ3Qgc3RvcmUgdGhlIENSIGluIHRoZSBtYXBcbiAgXG4gICAgICAgICovXG4gIFxuICAgICAgICBpZiAoIWZpcmVzdGFydHJFbnRpdHkpIGNvbnRpbnVlO1xuICBcbiAgICAgICAgY29uc3QgZmlyZXN0YXJ0ckVudGl0eUpzb24gPSBmaXJlc3RhcnRyRW50aXR5LnRvSnNvbigpXG4gIFxuICAgICAgICBzZXRSZW5kZXJlZENsYWltKGNsYWltLCBmaXJlc3RhcnRyRW50aXR5SnNvbilcbiAgXG4gICAgICAgIGZvcihjb25zdCBleHRyYUNoYXJ0IG9mIGV4dHJhQ2hhcnRzKXtcbiAgXG4gICAgICAgICAgY29uc3Qge2NsYWltLCBjaGFydH0gPSBleHRyYUNoYXJ0XG4gIFxuICAgICAgICAgIHNldFJlbmRlcmVkQ2xhaW0oY2xhaW0sIGNoYXJ0LnRvSnNvbigpKVxuICBcbiAgICAgICAgICByZXN1bHRbYCR7Y2hhcnQua2luZH0tJHtjaGFydC5tZXRhZGF0YS5uYW1lfWBdID0gY2hhcnQudG9Kc29uKClcbiAgXG4gICAgICAgIH1cbiAgXG4gICAgICAgIGlmKCFmaXJlc3RhcnRyRW50aXR5SnNvbi5tZXRhZGF0YS5hbm5vdGF0aW9ucyB8fCAhZmlyZXN0YXJ0ckVudGl0eUpzb24ubWV0YWRhdGEubmFtZSkgdGhyb3cgZmlyZXN0YXJ0ckVudGl0eUpzb25cbiAgXG4gICAgICAgIHJlc3VsdFtgJHtmaXJlc3RhcnRyRW50aXR5LmtpbmR9LSR7ZmlyZXN0YXJ0ckVudGl0eUpzb24ubWV0YWRhdGEubmFtZX1gXSA9IGZpcmVzdGFydHJFbnRpdHlKc29uXG4gIFxuICAgICAgfVxuICBcbiAgICB9XG4gIFxuICAgIHJldHVybiByZXN1bHRcbiAgXG4gIH1cblxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQ2xhaW0oXG5cbiAgICBjYXRhbG9nU2NvcGU6IENvbnN0cnVjdCxcbiAgXG4gICAgZmlyZXN0YXJ0clNjb3BlOiBDb25zdHJ1Y3QsXG4gIFxuICAgIGNsYWltOiBhbnksXG4gIFxuICAgIHBhdGNoZXM6IElDdXN0b21SZXNvdXJjZVBhdGNoW10sXG4gIFxuICAgIHByZXZpb3VzQ1I6IGFueSB8IG51bGwgPSBudWxsXG4gIFxuICAgICk6IFByb21pc2U8SVJlbmRlckNsYWltUmVzdWx0PiB7XG4gIFxuICAgIGxldCBjYXRhbG9nRW50aXR5OiBCYXNlQ2hhcnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGZpcmVzdGFydHJFbnRpdHk6IEJhc2VDaGFydCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgXG4gICAgY29uc3QgY2hhcnRJZCA9IGAke2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gLnRvTG93ZXJDYXNlKCk7XG4gIFxuICAgIGxldCBmaXJlc3RhcnRySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBcbiAgICBpZiAocHJldmlvdXNDUikge1xuICBcbiAgICAgIGZpcmVzdGFydHJJZCA9IHByZXZpb3VzQ1I/LnNwZWM/LmZpcmVzdGFydHI/LnRmU3RhdGVLZXkgfHwgbnVsbDtcbiAgXG4gICAgfVxuICBcbiAgICBjb25zdCByZW5kZXJQYXRjaGVzID0gcGF0Y2hlcy5maWx0ZXIoKHBhdGNoOiBhbnkpID0+ICFwYXRjaC5pc1Bvc3RQYXRjaClcbiAgICBjb25zdCBwb3N0UGF0Y2hlcyA9IHBhdGNoZXMuZmlsdGVyKChwYXRjaDphbnkpID0+IHBhdGNoLmlzUG9zdFBhdGNoKVxuICBcbiAgICBjb25zdCBwcm92aWRlciA9IGdldENvbmZpZ3VyZWRQcm92aWRlcigpXG4gIFxuICAgIHN3aXRjaCAoY2xhaW0ua2luZCkge1xuICBcbiAgICAgIGNhc2UgXCJEb21haW5DbGFpbVwiOlxuICBcbiAgICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nRG9tYWluQ2hhcnQoXG4gICAgICAgICAgY2F0YWxvZ1Njb3BlLCBcbiAgICAgICAgICBgY2F0YWxvZy0ke2NoYXJ0SWR9YCwgXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLCBcbiAgICAgICAgICBjbGFpbSwgXG4gICAgICAgICAgcmVuZGVyUGF0Y2hlc1xuICAgICAgICApO1xuICBcbiAgICAgICAgYnJlYWs7XG4gIFxuICAgICAgY2FzZSBcIlN5c3RlbUNsYWltXCI6XG4gIFxuICAgICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dTeXN0ZW1DaGFydChcbiAgICAgICAgICBjYXRhbG9nU2NvcGUsIFxuICAgICAgICAgIGBjYXRhbG9nLSR7Y2hhcnRJZH1gLCBcbiAgICAgICAgICBmaXJlc3RhcnRySWQsIFxuICAgICAgICAgIGNsYWltLCBcbiAgICAgICAgICByZW5kZXJQYXRjaGVzXG4gICAgICAgICk7XG4gIFxuICAgICAgICBicmVhaztcbiAgXG4gICAgICBjYXNlIFwiR3JvdXBDbGFpbVwiOlxuICBcbiAgICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nR3JvdXBDaGFydChjYXRhbG9nU2NvcGUsIGBjYXRhbG9nLSR7Y2hhcnRJZH1gLCBmaXJlc3RhcnRySWQsIGNsYWltLCByZW5kZXJQYXRjaGVzKTtcbiAgXG4gICAgICAgIGlmIChjbGFpbS5wcm92aWRlcnMuZ2l0aHViICYmIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5naXRodWIgfHwgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsKSkge1xuICBcbiAgICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkdpdGh1Ykdyb3VwQ2hhcnQoXG4gICAgICAgICAgICBmaXJlc3RhcnRyU2NvcGUsXG4gICAgICAgICAgICBgZ2l0aHViLSR7Y2hhcnRJZH1gLFxuICAgICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgICAgY2xhaW0sXG4gICAgICAgICAgICByZW5kZXJQYXRjaGVzXG4gICAgICAgICAgKTtcbiAgXG4gICAgICAgIH1cbiAgXG4gICAgICAgIGJyZWFrO1xuICBcbiAgICAgIGNhc2UgXCJVc2VyQ2xhaW1cIjpcbiAgXG4gICAgICAgIGNhdGFsb2dFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQ2F0YWxvZ1VzZXJDaGFydChjYXRhbG9nU2NvcGUsIGNoYXJ0SWQsIGZpcmVzdGFydHJJZCwgY2xhaW0sIHJlbmRlclBhdGNoZXMpO1xuICBcbiAgICAgICAgaWYgKGNsYWltLnByb3ZpZGVycy5naXRodWIgJiYgKHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmdpdGh1YiB8fCBwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5hbGwpKSB7XG4gIFxuICAgICAgICAgIGZpcmVzdGFydHJFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuR2l0aHViTWVtYmVyc2hpcENoYXJ0KFxuICAgICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgICAgYGdpdGh1Yi0ke2NoYXJ0SWR9YCxcbiAgICAgICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgICAgIGNsYWltLFxuICAgICAgICAgICAgcmVuZGVyUGF0Y2hlc1xuICAgICAgICAgICk7XG4gIFxuICAgICAgICB9XG4gIFxuICAgICAgICBicmVhaztcbiAgXG4gICAgICBjYXNlIFwiQ29tcG9uZW50Q2xhaW1cIjpcbiAgXG4gICAgICAgIGlmIChjbGFpbS5wcm92aWRlcnMuZ2l0aHViICYmIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5naXRodWIgfHwgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsKSkge1xuICBcbiAgICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkdpdGh1YlJlcG9zaXRvcnlDaGFydChcbiAgICAgICAgICAgIGZpcmVzdGFydHJTY29wZSxcbiAgICAgICAgICAgIGBnaXRodWItJHtjaGFydElkfWAsXG4gICAgICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgICAgICBjbGFpbSxcbiAgICAgICAgICAgIHJlbmRlclBhdGNoZXNcbiAgICAgICAgICApO1xuICBcbiAgICAgICAgfVxuICAgICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dDb21wb25lbnRDaGFydChcbiAgICAgICAgICBjYXRhbG9nU2NvcGUsIGNoYXJ0SWQsIGZpcmVzdGFydHJJZCwgY2xhaW0sIHJlbmRlclBhdGNoZXNcbiAgICAgICAgKTtcbiAgXG4gICAgICAgIGJyZWFrO1xuICBcbiAgICAgIGNhc2UgXCJURldvcmtzcGFjZUNsYWltXCI6XG4gIFxuICAgICAgICBpZiAoY2xhaW0ucHJvdmlkZXJzLnRlcnJhZm9ybSAmJiAocHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMudGVycmFmb3JtIHx8IHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbCkpIHtcbiAgXG4gICAgICAgICAgZmlyZXN0YXJ0ckVudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5URldvcmtzcGFjZUNoYXJ0KFxuICAgICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLCBcbiAgICAgICAgICAgIGB0ZXJyYWZvcm0tJHtjaGFydElkfWAsIFxuICAgICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgICAgY2xhaW0sXG4gICAgICAgICAgICByZW5kZXJQYXRjaGVzXG4gICAgICAgICAgKTtcbiAgXG4gICAgICAgIH1cbiAgICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nVEZXb3Jrc3BhY2VDaGFydChcbiAgICAgICAgICBjYXRhbG9nU2NvcGUsIGNoYXJ0SWQsIGZpcmVzdGFydHJJZCwgY2xhaW0sIHJlbmRlclBhdGNoZXNcbiAgICAgICAgKTtcbiAgXG4gICAgICAgIGJyZWFrO1xuICBcbiAgICAgIGNhc2UgXCJBcmdvRGVwbG95Q2xhaW1cIjpcbiAgXG4gICAgICAgIGlmIChjbGFpbS5wcm92aWRlcnMuYXJnb2NkICYmIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5hcmdvY2QgfHwgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsKSkge1xuICBcbiAgICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkFyZ29EZXBsb3lDaGFydChcbiAgICAgICAgICAgIGZpcmVzdGFydHJTY29wZSwgXG4gICAgICAgICAgICBgYXJnb2NkLSR7Y2hhcnRJZH1gLCBcbiAgICAgICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgICAgIGNsYWltLFxuICAgICAgICAgICAgcmVuZGVyUGF0Y2hlc1xuICAgICAgICAgICk7XG4gIFxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dBcmdvRGVwbG95Q2hhcnQoXG4gICAgICAgICAgY2F0YWxvZ1Njb3BlLCBjaGFydElkLCBmaXJlc3RhcnRySWQsIGNsYWltLCByZW5kZXJQYXRjaGVzXG4gICAgICAgICk7XG4gIFxuICAgICAgICBicmVhaztcbiAgXG4gIFxuICAgICAgZGVmYXVsdDpcbiAgXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFVua25vd24gY2xhaW0ga2luZDogJHtjbGFpbS5raW5kfWApO1xuICBcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICBcbiAgICAvKipcbiAgICAgKiBUaGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgdG8gb25seSByZW5kZXIgdGhlIGNhdGFsb2cgZW50aXR5LCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kXG4gICAgICovXG4gICAgaWYgKCFjYXRhbG9nRW50aXR5KSB7XG4gIFxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcmVuZGVyIGNsYWltICR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWApO1xuICBcbiAgICB9XG4gIFxuICAgIC8qXG4gICAgICpcbiAgICAgKiBSZW5kZXIgcGhhc2VcbiAgICAgKlxuICAgICAqL1xuICAgIGNvbnN0IFtjYXRhbG9nQ2hhcnQsIGZpcmVzdGFydHJFbnRpdHlDaGFydF0gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgXG4gICAgICBbXG4gICAgICAgIHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbCA/IGNhdGFsb2dFbnRpdHkucmVuZGVyKCkgOiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKSxcbiAgXG4gICAgICAgIGZpcmVzdGFydHJFbnRpdHk/LnJlbmRlcigpLFxuICBcbiAgICAgIF1cbiAgXG4gICAgKVxuICBcbiAgICAvKlxuICAgICAqXG4gICAgICogUG9zdCByZW5kZXIgcGhhc2UgKGFuZCByZXR1cm4pXG4gICAgICpcbiAgICAgKi9cbiAgICByZXR1cm4ge1xuICBcbiAgICAgIGNhdGFsb2dFbnRpdHk6IGNhdGFsb2dDaGFydCA/IGF3YWl0IGNhdGFsb2dDaGFydC5wb3N0UmVuZGVyZXIocG9zdFBhdGNoZXMpIDogdW5kZWZpbmVkLFxuICBcbiAgICAgIGZpcmVzdGFydHJFbnRpdHk6IGF3YWl0IChmaXJlc3RhcnRyRW50aXR5Q2hhcnQgPyBmaXJlc3RhcnRyRW50aXR5Q2hhcnQucG9zdFJlbmRlcmVyKHBvc3RQYXRjaGVzKSA6IHVuZGVmaW5lZCksXG4gIFxuICAgICAgZXh0cmFDaGFydHM6IGF3YWl0IGZpcmVzdGFydHJFbnRpdHk/LmV4dHJhQ2hhcnRzKCkgfHwgW11cbiAgICB9O1xuICBcbiAgfVxuIl19
|
|
235718
|
+
|
|
235719
|
+
/***/ }),
|
|
235720
|
+
|
|
235721
|
+
/***/ 46742:
|
|
235722
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
235723
|
+
|
|
235724
|
+
"use strict";
|
|
235725
|
+
|
|
235726
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235727
|
+
exports.sortKinds = void 0;
|
|
235728
|
+
const refsSorter_1 = __nccwpck_require__(47015);
|
|
235767
235729
|
function sortKinds(orderedKinds, claims) {
|
|
235768
235730
|
const result = [];
|
|
235769
235731
|
for (const kind of orderedKinds) {
|
|
@@ -235772,6 +235734,113 @@ function sortKinds(orderedKinds, claims) {
|
|
|
235772
235734
|
}
|
|
235773
235735
|
return result;
|
|
235774
235736
|
}
|
|
235737
|
+
exports.sortKinds = sortKinds;
|
|
235738
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLXNvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9jbGFpbXMtc29ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlEQUFpRTtBQUdqRSxTQUFnQixTQUFTLENBQUMsWUFBc0IsRUFBRSxNQUFvQjtJQUVsRSxNQUFNLE1BQU0sR0FBbUIsRUFBRSxDQUFBO0lBRWpDLEtBQUssTUFBTSxJQUFJLElBQUksWUFBWSxFQUFFO1FBRS9CLE1BQU0sZ0JBQWdCLEdBQVEsSUFBQSxtQ0FBc0IsRUFBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXBFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtLQUU5QjtJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQWRILDhCQWNHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc29ydFJlbmRlckNsYWltc0J5S2luZCB9IGZyb20gXCIuLi9yZWZzU29ydGVyL3JlZnNTb3J0ZXJcIlxuaW1wb3J0IHsgUmVuZGVyQ2xhaW1zIH0gZnJvbSBcIi4vdHlwZXNcIlxuXG5leHBvcnQgZnVuY3Rpb24gc29ydEtpbmRzKG9yZGVyZWRLaW5kczogc3RyaW5nW10sIGNsYWltczogUmVuZGVyQ2xhaW1zKSB7XG5cbiAgICBjb25zdCByZXN1bHQ6IFJlbmRlckNsYWltc1tdID0gW11cbiAgXG4gICAgZm9yIChjb25zdCBraW5kIG9mIG9yZGVyZWRLaW5kcykge1xuICBcbiAgICAgIGNvbnN0IGtpbmRSZW5kZXJDbGFpbXM6IGFueSA9IHNvcnRSZW5kZXJDbGFpbXNCeUtpbmQoY2xhaW1zLCBba2luZF0pXG4gIFxuICAgICAgcmVzdWx0LnB1c2goa2luZFJlbmRlckNsYWltcylcbiAgXG4gICAgfVxuICBcbiAgICByZXR1cm4gcmVzdWx0XG4gIFxuICB9XG4iXX0=
|
|
235739
|
+
|
|
235740
|
+
/***/ }),
|
|
235741
|
+
|
|
235742
|
+
/***/ 57560:
|
|
235743
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
235744
|
+
|
|
235745
|
+
"use strict";
|
|
235746
|
+
|
|
235747
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235748
|
+
exports.CLAIM_REF_ANNOTATION = void 0;
|
|
235749
|
+
exports.CLAIM_REF_ANNOTATION = "firestartr.dev/claim-ref";
|
|
235750
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbmRlcmVyL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLG9CQUFvQixHQUFHLDBCQUEwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENMQUlNX1JFRl9BTk5PVEFUSU9OID0gXCJmaXJlc3RhcnRyLmRldi9jbGFpbS1yZWZcIlxuIl19
|
|
235751
|
+
|
|
235752
|
+
/***/ }),
|
|
235753
|
+
|
|
235754
|
+
/***/ 14297:
|
|
235755
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
235756
|
+
|
|
235757
|
+
"use strict";
|
|
235758
|
+
|
|
235759
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235760
|
+
exports.renderFromImports = void 0;
|
|
235761
|
+
const cdk8s_1 = __nccwpck_require__(77228);
|
|
235762
|
+
const claims_render_1 = __nccwpck_require__(84508);
|
|
235763
|
+
/*
|
|
235764
|
+
* Function called when rendering from the importer class.
|
|
235765
|
+
*
|
|
235766
|
+
* Input:
|
|
235767
|
+
* - renderClaims: a RenderClaims object, which contains the list of claims
|
|
235768
|
+
* we want to render
|
|
235769
|
+
*
|
|
235770
|
+
* Return:
|
|
235771
|
+
* - The result of rendering the renderClaims object, plus the
|
|
235772
|
+
* rendered firestartr-all group
|
|
235773
|
+
*
|
|
235774
|
+
*/
|
|
235775
|
+
async function renderFromImports(rClaims, crs = {}, catalogOutputDir = "/tmp/.catalog", crOutputDir = "/tmp/.resources") {
|
|
235776
|
+
const catalogScope = new cdk8s_1.App({
|
|
235777
|
+
outdir: catalogOutputDir,
|
|
235778
|
+
outputFileExtension: ".yaml",
|
|
235779
|
+
yamlOutputType: cdk8s_1.YamlOutputType.FILE_PER_RESOURCE,
|
|
235780
|
+
});
|
|
235781
|
+
const firestartrScope = new cdk8s_1.App({
|
|
235782
|
+
outdir: crOutputDir,
|
|
235783
|
+
outputFileExtension: ".yaml",
|
|
235784
|
+
yamlOutputType: cdk8s_1.YamlOutputType.FILE_PER_RESOURCE,
|
|
235785
|
+
});
|
|
235786
|
+
const result = await (0, claims_render_1.renderClaims)(catalogScope, firestartrScope, {
|
|
235787
|
+
renderClaims: rClaims,
|
|
235788
|
+
crs,
|
|
235789
|
+
renames: []
|
|
235790
|
+
});
|
|
235791
|
+
firestartrScope.synth();
|
|
235792
|
+
return result;
|
|
235793
|
+
}
|
|
235794
|
+
exports.renderFromImports = renderFromImports;
|
|
235795
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LXJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbmRlcmVyL2ltcG9ydC1yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBNEM7QUFDNUMsbURBQThDO0FBRzlDOzs7Ozs7Ozs7OztHQVdHO0FBQ0ksS0FBSyxVQUFVLGlCQUFpQixDQUVuQyxPQUFxQixFQUVyQixNQUFXLEVBQUUsRUFFYixtQkFBMkIsZUFBZSxFQUUxQyxjQUFzQixpQkFBaUI7SUFJdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxXQUFHLENBQUM7UUFFM0IsTUFBTSxFQUFFLGdCQUFnQjtRQUV4QixtQkFBbUIsRUFBRSxPQUFPO1FBRTVCLGNBQWMsRUFBRSxzQkFBYyxDQUFDLGlCQUFpQjtLQUVqRCxDQUFDLENBQUE7SUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLFdBQUcsQ0FBQztRQUU5QixNQUFNLEVBQUUsV0FBVztRQUVuQixtQkFBbUIsRUFBRSxPQUFPO1FBRTVCLGNBQWMsRUFBRSxzQkFBYyxDQUFDLGlCQUFpQjtLQUVqRCxDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBUSxNQUFNLElBQUEsNEJBQVksRUFFcEMsWUFBWSxFQUVaLGVBQWUsRUFFZjtRQUNFLFlBQVksRUFBRSxPQUFPO1FBRXJCLEdBQUc7UUFFSCxPQUFPLEVBQUUsRUFBRTtLQUNaLENBQ0YsQ0FBQTtJQUVELGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUV2QixPQUFPLE1BQU0sQ0FBQTtBQUVqQixDQUFDO0FBbkRELDhDQW1EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICBBcHAsIFlhbWxPdXRwdXRUeXBlIH0gZnJvbSBcImNkazhzXCJcbmltcG9ydCB7IHJlbmRlckNsYWltcyB9IGZyb20gXCIuL2NsYWltcy1yZW5kZXJcIlxuaW1wb3J0IHsgUmVuZGVyQ2xhaW1zIH0gZnJvbSBcIi4vdHlwZXNcIlxuXG4vKlxuICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gcmVuZGVyaW5nIGZyb20gdGhlIGltcG9ydGVyIGNsYXNzLlxuICpcbiAqIElucHV0OlxuICogLSByZW5kZXJDbGFpbXM6IGEgUmVuZGVyQ2xhaW1zIG9iamVjdCwgd2hpY2ggY29udGFpbnMgdGhlIGxpc3Qgb2YgY2xhaW1zXG4gKiAgIHdlIHdhbnQgdG8gcmVuZGVyXG4gKlxuICogUmV0dXJuOlxuICogLSBUaGUgcmVzdWx0IG9mIHJlbmRlcmluZyB0aGUgcmVuZGVyQ2xhaW1zIG9iamVjdCwgcGx1cyB0aGVcbiAqICAgcmVuZGVyZWQgZmlyZXN0YXJ0ci1hbGwgZ3JvdXBcbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJGcm9tSW1wb3J0cyhcblxuICAgIHJDbGFpbXM6IFJlbmRlckNsYWltcyxcbiAgXG4gICAgY3JzOiBhbnkgPSB7fSxcbiAgXG4gICAgY2F0YWxvZ091dHB1dERpcjogc3RyaW5nID0gXCIvdG1wLy5jYXRhbG9nXCIsXG4gIFxuICAgIGNyT3V0cHV0RGlyOiBzdHJpbmcgPSBcIi90bXAvLnJlc291cmNlc1wiLFxuICBcbiAgKSB7XG4gIFxuICAgIGNvbnN0IGNhdGFsb2dTY29wZSA9IG5ldyBBcHAoe1xuICBcbiAgICAgIG91dGRpcjogY2F0YWxvZ091dHB1dERpcixcbiAgXG4gICAgICBvdXRwdXRGaWxlRXh0ZW5zaW9uOiBcIi55YW1sXCIsXG4gIFxuICAgICAgeWFtbE91dHB1dFR5cGU6IFlhbWxPdXRwdXRUeXBlLkZJTEVfUEVSX1JFU09VUkNFLFxuICBcbiAgICB9KVxuICBcbiAgICBjb25zdCBmaXJlc3RhcnRyU2NvcGUgPSBuZXcgQXBwKHtcbiAgXG4gICAgICBvdXRkaXI6IGNyT3V0cHV0RGlyLFxuICBcbiAgICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcbiAgXG4gICAgICB5YW1sT3V0cHV0VHlwZTogWWFtbE91dHB1dFR5cGUuRklMRV9QRVJfUkVTT1VSQ0UsXG4gIFxuICAgIH0pXG4gIFxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgcmVuZGVyQ2xhaW1zKFxuICBcbiAgICAgIGNhdGFsb2dTY29wZSxcbiAgXG4gICAgICBmaXJlc3RhcnRyU2NvcGUsXG4gIFxuICAgICAge1xuICAgICAgICByZW5kZXJDbGFpbXM6IHJDbGFpbXMsXG4gIFxuICAgICAgICBjcnMsXG4gIFxuICAgICAgICByZW5hbWVzOiBbXVxuICAgICAgfSxcbiAgICApXG4gIFxuICAgIGZpcmVzdGFydHJTY29wZS5zeW50aCgpXG4gIFxuICAgIHJldHVybiByZXN1bHRcbiAgXG59XG4iXX0=
|
|
235796
|
+
|
|
235797
|
+
/***/ }),
|
|
235798
|
+
|
|
235799
|
+
/***/ 25830:
|
|
235800
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
235801
|
+
|
|
235802
|
+
"use strict";
|
|
235803
|
+
|
|
235804
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235805
|
+
exports.extractPatches = void 0;
|
|
235806
|
+
const featureRenderer_1 = __nccwpck_require__(488);
|
|
235807
|
+
async function extractPatches(claimToRenderData, previousCR) {
|
|
235808
|
+
let totalPatches = [];
|
|
235809
|
+
for (const normalizer of claimToRenderData.normalizers) {
|
|
235810
|
+
const patches = await normalizer.patches(claimToRenderData["claim"], previousCR);
|
|
235811
|
+
totalPatches = totalPatches.concat(patches).flat();
|
|
235812
|
+
}
|
|
235813
|
+
for (const initializer of claimToRenderData.initializers) {
|
|
235814
|
+
const patches = await initializer.patches(claimToRenderData["claim"], previousCR);
|
|
235815
|
+
totalPatches = totalPatches.concat(patches).flat();
|
|
235816
|
+
}
|
|
235817
|
+
for (const overrider of claimToRenderData.overrides) {
|
|
235818
|
+
const patches = await overrider.patches(claimToRenderData["claim"], previousCR);
|
|
235819
|
+
totalPatches = totalPatches.concat(patches).flat();
|
|
235820
|
+
}
|
|
235821
|
+
if (claimToRenderData.claim.kind === "ComponentClaim") {
|
|
235822
|
+
totalPatches = totalPatches.concat((await (0, featureRenderer_1.generateFeaturesPatches)(claimToRenderData.claim))).flat();
|
|
235823
|
+
}
|
|
235824
|
+
for (const global of claimToRenderData.globals) {
|
|
235825
|
+
const patches = await global.patches(claimToRenderData.claim, previousCR);
|
|
235826
|
+
totalPatches = totalPatches.concat(patches).flat();
|
|
235827
|
+
}
|
|
235828
|
+
return totalPatches;
|
|
235829
|
+
}
|
|
235830
|
+
exports.extractPatches = extractPatches;
|
|
235831
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hlcy1leHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVuZGVyZXIvcGF0Y2hlcy1leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0VBQTBFO0FBSW5FLEtBQUssVUFBVSxjQUFjLENBRWhDLGlCQUFrQyxFQUFFLFVBQWU7SUFJbkQsSUFBSSxZQUFZLEdBQTJCLEVBQUUsQ0FBQTtJQUc3QyxLQUFLLE1BQU0sVUFBVSxJQUFJLGlCQUFpQixDQUFDLFdBQVcsRUFBRTtRQUV0RCxNQUFNLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFaEYsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7S0FFbkQ7SUFFRCxLQUFLLE1BQU0sV0FBVyxJQUFJLGlCQUFpQixDQUFDLFlBQVksRUFBRTtRQUV4RCxNQUFNLE9BQU8sR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFakYsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7S0FFbkQ7SUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRTtRQUVuRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFL0UsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7S0FFbkQ7SUFHRCxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUU7UUFFckQsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUEseUNBQXVCLEVBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0tBRXBHO0lBR0QsS0FBSyxNQUFNLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7UUFFOUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUV6RSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtLQUVuRDtJQUVELE9BQU8sWUFBWSxDQUFBO0FBRXJCLENBQUM7QUFuREgsd0NBbURHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2VuZXJhdGVGZWF0dXJlc1BhdGNoZXMgfSBmcm9tIFwiLi4vY2hhcnRzL2dpdGh1Yi9mZWF0dXJlUmVuZGVyZXJcIlxuaW1wb3J0IHsgSUN1c3RvbVJlc291cmNlUGF0Y2ggfSBmcm9tIFwiLi4vcGF0Y2hlc1wiXG5pbXBvcnQgeyBSZW5kZXJDbGFpbURhdGEgfSBmcm9tIFwiLi90eXBlc1wiXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHRyYWN0UGF0Y2hlcyhcblxuICAgIGNsYWltVG9SZW5kZXJEYXRhOiBSZW5kZXJDbGFpbURhdGEsIHByZXZpb3VzQ1I6IGFueVxuICBcbiAgKTogUHJvbWlzZTxJQ3VzdG9tUmVzb3VyY2VQYXRjaFtdPiB7XG4gIFxuICAgIGxldCB0b3RhbFBhdGNoZXM6IElDdXN0b21SZXNvdXJjZVBhdGNoW10gPSBbXVxuICBcbiAgXG4gICAgZm9yIChjb25zdCBub3JtYWxpemVyIG9mIGNsYWltVG9SZW5kZXJEYXRhLm5vcm1hbGl6ZXJzKSB7XG4gIFxuICAgICAgY29uc3QgcGF0Y2hlcyA9IGF3YWl0IG5vcm1hbGl6ZXIucGF0Y2hlcyhjbGFpbVRvUmVuZGVyRGF0YVtcImNsYWltXCJdLCBwcmV2aW91c0NSKVxuICBcbiAgICAgIHRvdGFsUGF0Y2hlcyA9IHRvdGFsUGF0Y2hlcy5jb25jYXQocGF0Y2hlcykuZmxhdCgpXG4gIFxuICAgIH1cbiAgXG4gICAgZm9yIChjb25zdCBpbml0aWFsaXplciBvZiBjbGFpbVRvUmVuZGVyRGF0YS5pbml0aWFsaXplcnMpIHtcbiAgXG4gICAgICBjb25zdCBwYXRjaGVzID0gYXdhaXQgaW5pdGlhbGl6ZXIucGF0Y2hlcyhjbGFpbVRvUmVuZGVyRGF0YVtcImNsYWltXCJdLCBwcmV2aW91c0NSKVxuICBcbiAgICAgIHRvdGFsUGF0Y2hlcyA9IHRvdGFsUGF0Y2hlcy5jb25jYXQocGF0Y2hlcykuZmxhdCgpXG4gIFxuICAgIH1cbiAgXG4gICAgZm9yIChjb25zdCBvdmVycmlkZXIgb2YgY2xhaW1Ub1JlbmRlckRhdGEub3ZlcnJpZGVzKSB7XG4gIFxuICAgICAgY29uc3QgcGF0Y2hlcyA9IGF3YWl0IG92ZXJyaWRlci5wYXRjaGVzKGNsYWltVG9SZW5kZXJEYXRhW1wiY2xhaW1cIl0sIHByZXZpb3VzQ1IpXG4gIFxuICAgICAgdG90YWxQYXRjaGVzID0gdG90YWxQYXRjaGVzLmNvbmNhdChwYXRjaGVzKS5mbGF0KClcbiAgXG4gICAgfVxuICBcbiAgXG4gICAgaWYgKGNsYWltVG9SZW5kZXJEYXRhLmNsYWltLmtpbmQgPT09IFwiQ29tcG9uZW50Q2xhaW1cIikge1xuICBcbiAgICAgIHRvdGFsUGF0Y2hlcyA9IHRvdGFsUGF0Y2hlcy5jb25jYXQoKGF3YWl0IGdlbmVyYXRlRmVhdHVyZXNQYXRjaGVzKGNsYWltVG9SZW5kZXJEYXRhLmNsYWltKSkpLmZsYXQoKVxuICBcbiAgICB9XG4gIFxuICBcbiAgICBmb3IgKGNvbnN0IGdsb2JhbCBvZiBjbGFpbVRvUmVuZGVyRGF0YS5nbG9iYWxzKSB7XG4gIFxuICAgICAgY29uc3QgcGF0Y2hlcyA9IGF3YWl0IGdsb2JhbC5wYXRjaGVzKGNsYWltVG9SZW5kZXJEYXRhLmNsYWltLCBwcmV2aW91c0NSKVxuICBcbiAgICAgIHRvdGFsUGF0Y2hlcyA9IHRvdGFsUGF0Y2hlcy5jb25jYXQocGF0Y2hlcykuZmxhdCgpXG4gIFxuICAgIH1cbiAgXG4gICAgcmV0dXJuIHRvdGFsUGF0Y2hlc1xuICBcbiAgfVxuIl19
|
|
235832
|
+
|
|
235833
|
+
/***/ }),
|
|
235834
|
+
|
|
235835
|
+
/***/ 63396:
|
|
235836
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
235837
|
+
|
|
235838
|
+
"use strict";
|
|
235839
|
+
|
|
235840
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235841
|
+
exports.getPreviousCRfromClaim = void 0;
|
|
235842
|
+
const references_1 = __nccwpck_require__(14461);
|
|
235843
|
+
const constants_1 = __nccwpck_require__(57560);
|
|
235775
235844
|
function getPreviousCRfromClaim(claim, previousCRs) {
|
|
235776
235845
|
const previousCRsKeys = Object.keys(previousCRs);
|
|
235777
235846
|
for (const previousCRKey of previousCRsKeys) {
|
|
@@ -235780,16 +235849,50 @@ function getPreviousCRfromClaim(claim, previousCRs) {
|
|
|
235780
235849
|
continue;
|
|
235781
235850
|
if (isExcludedFromPreviousCR(previousCR.kind))
|
|
235782
235851
|
continue;
|
|
235783
|
-
if (previousCR.metadata.annotations[CLAIM_REF_ANNOTATION] === `${claim.kind}/${claim.name}`) {
|
|
235852
|
+
if (previousCR.metadata.annotations[constants_1.CLAIM_REF_ANNOTATION] === `${claim.kind}/${claim.name}`) {
|
|
235784
235853
|
return previousCR;
|
|
235785
235854
|
}
|
|
235786
235855
|
}
|
|
235787
235856
|
return false;
|
|
235788
235857
|
}
|
|
235858
|
+
exports.getPreviousCRfromClaim = getPreviousCRfromClaim;
|
|
235789
235859
|
function isExcludedFromPreviousCR(crKind) {
|
|
235790
235860
|
return ["FirestartrGithubRepositoryFeature"].includes(crKind);
|
|
235791
235861
|
}
|
|
235792
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxxQ0FBa0Q7QUFDbEQsaURBQWtDO0FBQ2xDLGtEQUEwQjtBQUUxQixpQ0FBdUQ7QUFFdkQscUVBQTBFO0FBRzFFLHlEQUF1SDtBQUN2SCwrQ0FBa0Q7QUFDbEQscUNBQW1FO0FBRW5FLHdEQUFpRTtBQUNqRSx1Q0FBa0M7QUFDbEMsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixvRUFBb0M7QUFDcEMsb0RBQTRCO0FBQzVCLE1BQU0sb0JBQW9CLEdBQUcsMEJBQTBCLENBQUE7QUFHdkQsTUFBTSxHQUFHLEdBQUcsSUFBQSxlQUFLLEVBQUMscUJBQXFCLENBQUMsQ0FBQTtBQXFDeEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBRXJDLFlBQTBCLEVBRTFCLE1BQVcsRUFBRSxFQUViLG1CQUEyQixlQUFlLEVBRTFDLGNBQXNCLGlCQUFpQjtJQUl2QyxNQUFNLFlBQVksR0FBRyxJQUFJLFdBQUcsQ0FBQztRQUUzQixNQUFNLEVBQUUsZ0JBQWdCO1FBRXhCLG1CQUFtQixFQUFFLE9BQU87UUFFNUIsY0FBYyxFQUFFLHNCQUFjLENBQUMsaUJBQWlCO0tBRWpELENBQUMsQ0FBQTtJQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksV0FBRyxDQUFDO1FBRTlCLE1BQU0sRUFBRSxXQUFXO1FBRW5CLG1CQUFtQixFQUFFLE9BQU87UUFFNUIsY0FBYyxFQUFFLHNCQUFjLENBQUMsaUJBQWlCO0tBRWpELENBQUMsQ0FBQTtJQUVGLE1BQU0sTUFBTSxHQUFRLE1BQU0sYUFBYSxDQUVyQyxZQUFZLEVBRVosZUFBZSxFQUVmO1FBQ0UsWUFBWTtRQUVaLEdBQUc7UUFFSCxPQUFPLEVBQUUsRUFBRTtLQUNaLENBQ0YsQ0FBQTtJQUVELGVBQWUsQ0FB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RUFBRSxNQUFvQjtJQUU3RCxNQUFNLE1BQU0sR0FBbUIsRUFBRSxDQUFBO0lBRWpDLEtBQUssTUFBTSxJQUFJLElBQUksWUFBWSxFQUFFO1FBRS9CLE1BQU0sZ0JBQWdCLEdBQVEsSUFBQSxtQ0FBc0IsRUFBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXBFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtLQUU5QjtJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQU1ELFNBQVMsc0JBQXNCLENBQUMsS0FBVSxFQUFFLFdBQWdCO0lBRTFELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFaEQsS0FBSSxNQUFNLGFBQWEsSUFBSSxlQUFlLEVBQUM7UUFFekMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTdDLElBQUcsSUFBQSw0QkFBZSxFQUFDLFVBQVUsQ0FBQztZQUFFLFNBQVE7UUFFeEMsSUFBRyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUUsU0FBUTtRQUV0RCxJQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBQztZQUV6RixPQUFPLFVBQVUsQ0FBQTtTQUVsQjtLQUVGO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFFZCxDQUFDO0FBR0QsU0FBUyx3QkFBd0IsQ0FBQyxNQUFjO0lBRzlDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUcvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElSZW5hbWVSZXN1bHQsIGxvYWRBbGwgfSBmcm9tIFwiLi9sb2FkZXJcIjtcbmltcG9ydCAqIGFzIGNoYXJ0cyBmcm9tIFwiLi9jaGFydHNcIlxuaW1wb3J0IERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHsgQmFzZUNoYXJ0IH0gZnJvbSBcIi4vY2hhcnRzL2Jhc2VcIjtcbmltcG9ydCB7IEFwaU9iamVjdCwgQXBwLCBZYW1sT3V0cHV0VHlwZSB9IGZyb20gXCJjZGs4c1wiO1xuaW1wb3J0IHsgR2xvYmFsU2VjdGlvbiB9IGZyb20gXCIuL2dsb2JhbHMvYmFzZVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGZWF0dXJlc1BhdGNoZXMgfSBmcm9tIFwiLi9jaGFydHMvZ2l0aHViL2ZlYXR1cmVSZW5kZXJlclwiO1xuaW1wb3J0IHsgT3ZlcnJpZGVyUGF0Y2hlcyB9IGZyb20gXCIuL292ZXJyaWRlcnMvYmFzZVwiO1xuaW1wb3J0IHsgSUN1c3RvbVJlc291cmNlUGF0Y2ggfSBmcm9tIFwiLi9wYXRjaGVzXCI7XG5pbXBvcnQgeyBpc0NhdGFsb2dFbnRpdHksIHZhbGlkYXRlUmVmZXJlbnRpYWxJbnRlZ3JpdHksIHZhbGlkYXRlVGZTdGF0ZUtleVVuaXF1ZW5lc3MgfSBmcm9tIFwiLi92YWxpZGF0aW9ucy9yZWZlcmVuY2VzXCI7XG5pbXBvcnQgeyAgc2V0UmVuZGVyZWRDbGFpbSB9IGZyb20gXCIuL3JlZnJlc29sdmVyXCI7XG5pbXBvcnQgeyBBbGxvd2VkUHJvdmlkZXJzLCBnZXRDb25maWd1cmVkUHJvdmlkZXIgfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IE5vcm1hbGl6ZXIgfSBmcm9tIFwiLi9ub3JtYWxpemVycy9iYXNlXCI7XG5pbXBvcnQgeyBzb3J0UmVuZGVyQ2xhaW1zQnlLaW5kIH0gZnJvbSBcIi4vcmVmc1NvcnRlci9yZWZzU29ydGVyXCI7XG5pbXBvcnQgeyBjcmF3bCB9IGZyb20gXCIuL2NyYXdsZXJcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgY29tbW9uIGZyb20gXCJjYXRhbG9nX2NvbW1vblwiO1xuaW1wb3J0IGdpdGh1YiBmcm9tIFwiZ2l0aHViXCI7XG5jb25zdCBDTEFJTV9SRUZfQU5OT1RBVElPTiA9IFwiZmlyZXN0YXJ0ci5kZXYvY2xhaW0tcmVmXCJcblxuXG5jb25zdCBsb2cgPSBEZWJ1ZyhcImZpcmVzdGFydHI6cmVuZGVyZXJcIilcblxuZXhwb3J0IHR5cGUgUmVuZGVyQ2xhaW1EYXRhID0ge1xuXG4gIGNsYWltOiBhbnlcblxuICBjbGFpbVBhdGg/OiBzdHJpbmdcblxuICBpbml0aWFsaXplcnM6IGFueSBbXVxuXG4gIG92ZXJyaWRlczogT3ZlcnJpZGVyUGF0Y2hlc1tdXG5cbiAgZ2xvYmFsczogR2xvYmFsU2VjdGlvbltdLFxuXG4gIG5vcm1hbGl6ZXJzOiBOb3JtYWxpemVyW11cblxufVxuXG50eXBlIENsYWltS2luZCA9IHN0cmluZztcbnR5cGUgQ2xhaW1OYW1lID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUmVuZGVyQ2xhaW1LZXkgPSBgJHtDbGFpbUtpbmR9LSR7Q2xhaW1OYW1lfWBcblxudHlwZSBDUktpbmQgPSBzdHJpbmc7XG50eXBlIENSTmFtZSA9IHN0cmluZztcbnR5cGUgUmVuZGVyQ1JLZXkgPSBgJHtDUktpbmR9LSR7Q1JOYW1lfWBcblxuZXhwb3J0IHR5cGUgUmVuZGVyZWRDck1hcCA9IHtcblxuICBba2V5OiBSZW5kZXJDUktleV06IEFwaU9iamVjdFxufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJDbGFpbXMgPSB7XG5cbiAgW2tleTogUmVuZGVyQ2xhaW1LZXldOiBSZW5kZXJDbGFpbURhdGFcblxufVxuXG4vKlxuICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gcmVuZGVyaW5nIGZyb20gdGhlIGltcG9ydGVyIGNsYXNzLlxuICpcbiAqIElucHV0OlxuICogLSByZW5kZXJDbGFpbXM6IGEgUmVuZGVyQ2xhaW1zIG9iamVjdCwgd2hpY2ggY29udGFpbnMgdGhlIGxpc3Qgb2YgY2xhaW1zXG4gKiAgIHdlIHdhbnQgdG8gcmVuZGVyXG4gKlxuICogUmV0dXJuOlxuICogLSBUaGUgcmVzdWx0IG9mIHJlbmRlcmluZyB0aGUgcmVuZGVyQ2xhaW1zIG9iamVjdCwgcGx1cyB0aGVcbiAqICAgcmVuZGVyZWQgZmlyZXN0YXJ0ci1hbGwgZ3JvdXBcbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJGcm9tSW1wb3J0cyhcblxuICByZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcyxcblxuICBjcnM6IGFueSA9IHt9LFxuXG4gIGNhdGFsb2dPdXRwdXREaXI6IHN0cmluZyA9IFwiL3RtcC8uY2F0YWxvZ1wiLFxuXG4gIGNyT3V0cHV0RGlyOiBzdHJpbmcgPSBcIi90bXAvLnJlc291cmNlc1wiLFxuXG4pIHtcblxuICBjb25zdCBjYXRhbG9nU2NvcGUgPSBuZXcgQXBwKHtcblxuICAgIG91dGRpcjogY2F0YWxvZ091dHB1dERpcixcblxuICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcblxuICAgIHlhbWxPdXRwdXRUeXBlOiBZYW1sT3V0cHV0VHlwZS5GSUxFX1BFUl9SRVNPVVJDRSxcblxuICB9KVxuXG4gIGNvbnN0IGZpcmVzdGFydHJTY29wZSA9IG5ldyBBcHAoe1xuXG4gICAgb3V0ZGlyOiBjck91dHB1dERpcixcblxuICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcblxuICAgIHlhbWxPdXRwdXRUeXBlOiBZYW1sT3V0cHV0VHlwZS5GSUxFX1BFUl9SRVNPVVJDRSxcblxuICB9KVxuXG4gIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgZlJlbmRlckNsYWltcyhcblxuICAgIGNhdGFsb2dTY29wZSxcblxuICAgIGZpcmVzdGFydHJTY29wZSxcblxuICAgIHtcbiAgICAgIHJlbmRlckNsYWltcyxcblxuICAgICAgY3JzLFxuXG4gICAgICByZW5hbWVzOiBbXVxuICAgIH0sXG4gIClcblxuICBmaXJlc3RhcnRyU2NvcGUuc3ludGgoKVxuXG4gIHJldHVybiByZXN1bHRcblxufVxuXG5cbi8qXG4gKiBGdW5jdGlvbiBjYWxsZWQgd2hlbiByZW5kZXJpbmcgYnV0IG5vdCBpbXBvcnRpbmdcbiAqXG4gKiBJbnB1dDpcbiAqIC0gc2NvcGU6IGFuIG9iamVjdCwgdXNlZCB0byByZXByZXNlbnQgQ0RLVEYncyBleGVjdXRpb24gc2NvcGVcbiAqXG4gKiBSZXR1cm46XG4gKiAtIFRoZSByZXN1bHQgb2YgcmVuZGVyaW5nIHRoZSByZW5kZXJDbGFpbXMgb2JqZWN0LCBwbHVzIHRoZVxuICogICByZW5kZXJlZCBmaXJlc3RhcnRyLWFsbCBncm91cFxuICpcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcihcblxuICBjYXRhbG9nU2NvcGU6IENvbnN0cnVjdCxcblxuICBmaXJlc3RhcnRyU2NvcGU6IENvbnN0cnVjdCxcblxuICApOiBQcm9taXNlPFJlbmRlcmVkQ3JNYXA+IHtcblxuICBjb25zdCBkYXRhOiB7XG5cbiAgICByZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcyxcblxuICAgIGNyczogYW55LFxuXG4gICAgcmVuYW1lcz86IElSZW5hbWVSZXN1bHRbXVxuXG4gIH0gPSBhd2FpdCBsb2FkQWxsKClcblxuICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IGZSZW5kZXJDbGFpbXMoY2F0YWxvZ1Njb3BlLCBmaXJlc3RhcnRyU2NvcGUsIGRhdGEpXG5cbiAgdmFsaWRhdGVSZWZlcmVudGlhbEludGVncml0eShyZXN1bHQpXG5cbiAgdmFsaWRhdGVUZlN0YXRlS2V5VW5pcXVlbmVzcyhyZXN1bHQpXG5cbiAgcmV0dXJuIHJlc3VsdFxuXG59XG5cbi8qXG4gKiBGdW5jdGlvbiBjYWxsZWQgd2hlbiByZW5kZXJpbmcgVGVycmFmb3JtIHdvcmtzcGFjZXMgUGxhbnNcbiAqIGJhc2VkIG9uIHRoZSBwcmV2aW91cyByZW5kZXJlciBUZXJyYWZvcm0gd29ya3NwYWNlc1xuKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJXb3Jrc3BhY2VQbGFucyhzb3VyY2U6IHN0cmluZywgZGVzdGlueTogc3RyaW5nLCBwckxpbms6IHN0cmluZywgc2hhOiBzdHJpbmcsIGdoQ2xpOiBhbnkgPSBnaXRodWIpIHtcblxuICBjb25zdCBbb3JnUmVwbywgcHJOdW1iZXJdID0gcHJMaW5rLnNwbGl0KFwiI1wiKVxuXG4gIGNvbnN0IFsgb3JnLCByZXBvIF0gPSBvcmdSZXBvLnNwbGl0KFwiL1wiKVxuXG4gIGNvbnN0IHsgZGF0YTogZmlsZXMgfSA9IGF3YWl0IGdoQ2xpLnB1bGxzLmdldFByRmlsZXMoXG4gICAgcGFyc2VJbnQocHJOdW1iZXIpLFxuICAgIHJlcG8sXG4gICAgb3JnXG4gIClcblxuICBpZihmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwICYmIGZpbGVzWzBdLnN0YXR1cyA9PSBcInJlbW92ZWRcIil7XG5cbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZ2hDbGkucmVwby5nZXRDb250ZW50KFxuICAgIFxuICAgICAgZmlsZXNbMF0uZmlsZW5hbWUsXG4gICAgXG4gICAgICByZXBvLFxuICAgIFxuICAgICAgb3JnLFxuICAgIFxuICAgIClcblxuICAgIGNvbnN0IHdvcmtzcGFjZTogYW55ID0gY29tbW9uLmlvLmZyb21ZYW1sKGNvbnRlbnQpXG5cbiAgICB3b3Jrc3BhY2Uua2luZCA9IFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cIlxuICAgIFxuICAgIHdvcmtzcGFjZS5tZXRhZGF0YS5hbm5vdGF0aW9ucyA9IHtcbiAgICBcbiAgICAgIC4uLndvcmtzcGFjZS5tZXRhZGF0YS5hbm5vdGF0aW9ucyxcbiAgICAgIFxuICAgICAgW2NvbW1vbi5nZW5lcmljLmdldEZpcmVzdGFydHJBbm5vdGF0aW9uKFwicHVsbC1yZXF1ZXN0LXBsYW5cIildOiBwckxpbmssXG4gICAgICBcbiAgICAgIFtjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbihcInBsYW4tc2hhXCIpXTogc2hhLFxuICAgIFxuICAgIH1cbiAgICBcbiAgICB3b3Jrc3BhY2UubWV0YWRhdGEuYW5ub3RhdGlvbnNbXG4gICAgXG4gICAgICBjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbihcInBvbGljeVwiKVxuICAgIFxuICAgIF0gPSBcImRlc3Ryb3lcIlxuXG4gICAgY29uc3Qgd29ya3NwYWNlUGxhbiA9IGNvbW1vbi5pby50b1lhbWwoXG4gICAgXG4gICAgICB7Li4ud29ya3NwYWNlfSwgXG4gICAgXG4gICAgICB7IHF1b3RpbmdUeXBlOiAnXCInLCBsaW5lV2lkdGg6IC0xIH1cbiAgICBcbiAgICApXG4gICAgXG4gICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmpvaW4oZGVzdGlueSwgcGF0aC5iYXNlbmFtZShmaWxlc1swXS5maWxlbmFtZSkpXG4gICAgXG4gICAgZnMud3JpdGVGaWxlU3luYyhmaWxlTmFtZSwgd29ya3NwYWNlUGxhbilcbiAgICBcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEl0ZXJhdGUgb3ZlciB0aGUgc291cmNlIGZvbGRlciBhbmQgZ2V0IHRoZSBsaXN0IG9mIFRlcnJhZm9ybSB3b3Jrc3BhY2VzXG4gIGF3YWl0IGNyYXdsKHNvdXJjZSwgKCkgPT4gdHJ1ZSwgKGVudHJ5OiBzdHJpbmcsIGRhdGE6IGFueSkgPT4ge1xuXG4gICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmpvaW4oZGVzdGlueSwgcGF0aC5iYXNlbmFtZShlbnRyeSkpXG5cbiAgICBjb25zdCB3b3Jrc3BhY2U6IGFueSA9IGNvbW1vbi5pby5mcm9tWWFtbChkYXRhKVxuXG4gICAgd29ya3NwYWNlLmtpbmQgPSBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuXCJcbiAgICB3b3Jrc3BhY2UubWV0YWRhdGEuYW5ub3RhdGlvbnMgPSB7XG4gICAgICAuLi53b3Jrc3BhY2UubWV0YWRhdGEuYW5ub3RhdGlvbnMsXG4gICAgICBbY29tbW9uLmdlbmVyaWMuZ2V0RmlyZXN0YXJ0ckFubm90YXRpb24oXCJwdWxsLXJlcXVlc3QtcGxhblwiKV06IHByTGluayxcbiAgICAgIFtjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbihcInBsYW4tc2hhXCIpXTogc2hhXG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHdvcmtzcGFjZVBsYW4gPSBjb21tb24uaW8udG9ZYW1sKHtcbiAgICAgIC4uLndvcmtzcGFjZVxuICAgIH0sIHsgcXVvdGluZ1R5cGU6ICdcIicsIGxpbmVXaWR0aDogLTEgfSlcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZU5hbWUsIHdvcmtzcGFjZVBsYW4pXG5cbiAgfSlcblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkTGFzdFN0YXRlQW5kTGFzdENsYWltQW5ub3RhdGlvbnMoXG4gIGZpbGVQYXRoOiBzdHJpbmcsIGxhc3RTdGF0ZVBSTGluazogc3RyaW5nLCBsYXN0Q2xhaW1QUkxpbms6IHN0cmluZ1xuKSB7XG5cbiAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBzb3VyY2UgZm9sZGVyIGFuZCBnZXQgdGhlIGxpc3Qgb2YgVGVycmFmb3JtIHdvcmtzcGFjZXNcblxuICBjb25zdCB3b3Jrc3BhY2U6IGFueSA9IGNvbW1vbi5pby5mcm9tWWFtbChmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIFwidXRmLThcIikpO1xuXG4gIGNvbnN0IHN0YXRlTGlua0FzQXJyYXk6IHN0cmluZ1tdID0gbGFzdFN0YXRlUFJMaW5rLnNwbGl0KFwiL1wiKTtcbiAgY29uc3Qgc3RhdGVBbm5vdGF0aW9uVmFsdWU6IHN0cmluZyA9IGAke3N0YXRlTGlua0FzQXJyYXlbM119LyR7c3RhdGVMaW5rQXNBcnJheVs0XX0jJHtzdGF0ZUxpbmtBc0FycmF5WzZdfWBcblxuICBjb25zdCBjbGFpbUxpbmtBc0FycmF5OiBzdHJpbmdbXSA9IGxhc3RDbGFpbVBSTGluay5zcGxpdChcIi9cIik7XG4gIGNvbnN0IGNsYWltQW5ub3RhdGlvblZhbHVlOiBzdHJpbmcgPSBgJHtjbGFpbUxpbmtBc0FycmF5WzNdfS8ke2NsYWltTGlua0FzQXJyYXlbNF19IyR7Y2xhaW1MaW5rQXNBcnJheVs2XX1gXG5cbiAgd29ya3NwYWNlLm1ldGFkYXRhLmFubm90YXRpb25zID0ge1xuICAgIC4uLndvcmtzcGFjZS5tZXRhZGF0YS5hbm5vdGF0aW9ucyxcbiAgICBbY29tbW9uLmdlbmVyaWMuZ2V0RmlyZXN0YXJ0ckFubm90YXRpb24oXCJsYXN0LXN0YXRlLXByXCIpXTogc3RhdGVBbm5vdGF0aW9uVmFsdWUsXG4gICAgW2NvbW1vbi5nZW5lcmljLmdldEZpcmVzdGFydHJBbm5vdGF0aW9uKFwibGFzdC1jbGFpbS1wclwiKV06IGNsYWltQW5ub3RhdGlvblZhbHVlXG4gIH1cblxuICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb21tb24uaW8udG9ZYW1sKFxuICAgIHsgLi4ud29ya3NwYWNlIH0sIHsgcXVvdGluZ1R5cGU6ICdcIicsIGxpbmVXaWR0aDogLTEgfVxuICApKVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZSZW5kZXJDbGFpbXMoXG5cbiAgY2F0YWxvZ1Njb3BlOiBDb25zdHJ1Y3QsXG5cbiAgZmlyZXN0YXJ0clNjb3BlOiBDb25zdHJ1Y3QsXG5cbiAgZGF0YToge1xuXG4gICAgcmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXMsXG5cbiAgICBjcnM6IGFueSxcblxuICAgIHJlbmFtZXM/OiBJUmVuYW1lUmVzdWx0W11cblxuICB9LFxuXG4pOiBQcm9taXNlPFJlbmRlcmVkQ3JNYXA+IHtcblxuICBjb25zdCByZXN1bHQ6IFJlbmRlcmVkQ3JNYXAgPSB7fVxuXG4gIGNvbnN0IHsgcmVuZGVyQ2xhaW1zLCBjcnMgfSA9IGRhdGFcblxuICBjb25zdCBzb3J0ZWRLaW5kcyA9IHNvcnRLaW5kcyhbXCJVc2VyQ2xhaW1cIiwgXCJHcm91cENsYWltXCIsIFwiQ29tcG9uZW50Q2xhaW1cIiwgXCJEb21haW5DbGFpbVwiLCBcIlN5c3RlbUNsYWltXCIsIFwiVEZXb3Jrc3BhY2VDbGFpbVwiLCBcIkFyZ29EZXBsb3lDbGFpbVwiXSwgcmVuZGVyQ2xhaW1zKVxuXG4gIGZvciAoY29uc3QgcmVuZGVyQ2xhaW1zIG9mIHNvcnRlZEtpbmRzKSB7XG5cbiAgICBmb3IgKGNvbnN0IGNsYWltS2V5IG9mIE9iamVjdC5rZXlzKHJlbmRlckNsYWltcykpIHtcblxuICAgICAgY29uc3QgY2xhaW0gPSByZW5kZXJDbGFpbXNbY2xhaW1LZXkgYXMgUmVuZGVyQ2xhaW1LZXldLmNsYWltXG5cbiAgICAgIGNvbnN0IGNvbmZpZ3VyZWRQcm92aWRlciA9IGdldENvbmZpZ3VyZWRQcm92aWRlcigpLnRvU3RyaW5nKClcblxuICAgICAgbGV0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKGNsYWltLnByb3ZpZGVycylcblxuICAgICAgaWYoY29uZmlndXJlZFByb3ZpZGVyICE9IEFsbG93ZWRQcm92aWRlcnMuYWxsLnRvU3RyaW5nKCkpe1xuXG4gICAgICAgIHByb3ZpZGVycyA9IHByb3ZpZGVycy5maWx0ZXIoXG5cbiAgICAgICAgICAocHJvdmlkZXI6IHN0cmluZykgPT4gcHJvdmlkZXIgPT09IGNvbmZpZ3VyZWRQcm92aWRlclxuXG4gICAgICAgIClcblxuICAgICAgfVxuXG5cbiAgICAgIGNvbnN0IHByZXZpb3VzQ1IgPSBnZXRQcmV2aW91c0NSZnJvbUNsYWltKGNsYWltLCBjcnMpXG5cbiAgICAgIGNvbnN0IHBhdGNoZXMgPSBhd2FpdCBleHRyYWN0UGF0Y2hlcyhyZW5kZXJDbGFpbXNbY2xhaW1LZXkgYXMgUmVuZGVyQ2xhaW1LZXldLCBwcmV2aW91c0NSKVxuXG4gICAgICBpZiAoIXByZXZpb3VzQ1IpIHtcblxuICAgICAgICBsb2coYE5vIENSIGZvdW5kIGZvciBjbGFpbSAke2NsYWltS2V5fSwgaXQgd2lsbCBiZSByZW5kZXJlZCBmcm9tIHNjcmF0Y2hgKVxuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHtmaXJlc3RhcnRyRW50aXR5LCBleHRyYUNoYXJ0cywgY2F0YWxvZ0VudGl0eX0gID0gYXdhaXQgcmVuZGVyQ2xhaW0oXG5cbiAgICAgICAgY2F0YWxvZ1Njb3BlLFxuXG4gICAgICAgIGZpcmVzdGFydHJTY29wZSxcblxuICAgICAgICBjbGFpbSxcblxuICAgICAgICBwYXRjaGVzLFxuXG4gICAgICAgIHByZXZpb3VzQ1IsXG5cbiAgICAgIClcblxuICAgICAgaWYoY2F0YWxvZ0VudGl0eSkge1xuXG4gICAgICAgIHJlc3VsdFtgJHtjYXRhbG9nRW50aXR5LmtpbmR9LSR7Y2F0YWxvZ0VudGl0eS5tZXRhZGF0YS5uYW1lfWBdID0gY2F0YWxvZ0VudGl0eS50b0pzb24oKVxuICAgICAgXG4gICAgICB9XG5cbiAgICAgIC8qKlxuXG4gICAgICAqIElmIHRoZXJlIGlzIG5vIHByb3ZpZGVyIGRvbid0IHN0b3JlIHRoZSBDUiBpbiB0aGUgbWFwXG5cbiAgICAgICovXG5cbiAgICAgIGlmICghZmlyZXN0YXJ0ckVudGl0eSkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IGZpcmVzdGFydHJFbnRpdHlKc29uID0gZmlyZXN0YXJ0ckVudGl0eS50b0pzb24oKVxuXG4gICAgICBzZXRSZW5kZXJlZENsYWltKGNsYWltLCBmaXJlc3RhcnRyRW50aXR5SnNvbilcblxuICAgICAgZm9yKGNvbnN0IGV4dHJhQ2hhcnQgb2YgZXh0cmFDaGFydHMpe1xuXG4gICAgICAgIGNvbnN0IHtjbGFpbSwgY2hhcnR9ID0gZXh0cmFDaGFydFxuXG4gICAgICAgIHNldFJlbmRlcmVkQ2xhaW0oY2xhaW0sIGNoYXJ0LnRvSnNvbigpKVxuXG4gICAgICAgIHJlc3VsdFtgJHtjaGFydC5raW5kfS0ke2NoYXJ0Lm1ldGFkYXRhLm5hbWV9YF0gPSBjaGFydC50b0pzb24oKVxuXG4gICAgICB9XG5cbiAgICAgIGlmKCFmaXJlc3RhcnRyRW50aXR5SnNvbi5tZXRhZGF0YS5hbm5vdGF0aW9ucyB8fCAhZmlyZXN0YXJ0ckVudGl0eUpzb24ubWV0YWRhdGEubmFtZSkgdGhyb3cgZmlyZXN0YXJ0ckVudGl0eUpzb25cblxuICAgICAgcmVzdWx0W2Ake2ZpcmVzdGFydHJFbnRpdHkua2luZH0tJHtmaXJlc3RhcnRyRW50aXR5SnNvbi5tZXRhZGF0YS5uYW1lfWBdID0gZmlyZXN0YXJ0ckVudGl0eUpzb25cblxuICAgIH1cblxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RQYXRjaGVzKFxuXG4gIGNsYWltVG9SZW5kZXJEYXRhOiBSZW5kZXJDbGFpbURhdGEsIHByZXZpb3VzQ1I6IGFueVxuXG4pOiBQcm9taXNlPElDdXN0b21SZXNvdXJjZVBhdGNoW10+IHtcblxuICBsZXQgdG90YWxQYXRjaGVzOiBJQ3VzdG9tUmVzb3VyY2VQYXRjaFtdID0gW11cblxuXG4gIGZvciAoY29uc3Qgbm9ybWFsaXplciBvZiBjbGFpbVRvUmVuZGVyRGF0YS5ub3JtYWxpemVycykge1xuXG4gICAgY29uc3QgcGF0Y2hlcyA9IGF3YWl0IG5vcm1hbGl6ZXIucGF0Y2hlcyhjbGFpbVRvUmVuZGVyRGF0YVtcImNsYWltXCJdLCBwcmV2aW91c0NSKVxuXG4gICAgdG90YWxQYXRjaGVzID0gdG90YWxQYXRjaGVzLmNvbmNhdChwYXRjaGVzKS5mbGF0KClcblxuICB9XG5cbiAgZm9yIChjb25zdCBpbml0aWFsaXplciBvZiBjbGFpbVRvUmVuZGVyRGF0YS5pbml0aWFsaXplcnMpIHtcblxuICAgIGNvbnN0IHBhdGNoZXMgPSBhd2FpdCBpbml0aWFsaXplci5wYXRjaGVzKGNsYWltVG9SZW5kZXJEYXRhW1wiY2xhaW1cIl0sIHByZXZpb3VzQ1IpXG5cbiAgICB0b3RhbFBhdGNoZXMgPSB0b3RhbFBhdGNoZXMuY29uY2F0KHBhdGNoZXMpLmZsYXQoKVxuXG4gIH1cblxuICBmb3IgKGNvbnN0IG92ZXJyaWRlciBvZiBjbGFpbVRvUmVuZGVyRGF0YS5vdmVycmlkZXMpIHtcblxuICAgIGNvbnN0IHBhdGNoZXMgPSBhd2FpdCBvdmVycmlkZXIucGF0Y2hlcyhjbGFpbVRvUmVuZGVyRGF0YVtcImNsYWltXCJdLCBwcmV2aW91c0NSKVxuXG4gICAgdG90YWxQYXRjaGVzID0gdG90YWxQYXRjaGVzLmNvbmNhdChwYXRjaGVzKS5mbGF0KClcblxuICB9XG5cblxuICBpZiAoY2xhaW1Ub1JlbmRlckRhdGEuY2xhaW0ua2luZCA9PT0gXCJDb21wb25lbnRDbGFpbVwiKSB7XG5cbiAgICB0b3RhbFBhdGNoZXMgPSB0b3RhbFBhdGNoZXMuY29uY2F0KChhd2FpdCBnZW5lcmF0ZUZlYXR1cmVzUGF0Y2hlcyhjbGFpbVRvUmVuZGVyRGF0YS5jbGFpbSkpKS5mbGF0KClcblxuICB9XG5cblxuICBmb3IgKGNvbnN0IGdsb2JhbCBvZiBjbGFpbVRvUmVuZGVyRGF0YS5nbG9iYWxzKSB7XG5cbiAgICBjb25zdCBwYXRjaGVzID0gYXdhaXQgZ2xvYmFsLnBhdGNoZXMoY2xhaW1Ub1JlbmRlckRhdGEuY2xhaW0sIHByZXZpb3VzQ1IpXG5cbiAgICB0b3RhbFBhdGNoZXMgPSB0b3RhbFBhdGNoZXMuY29uY2F0KHBhdGNoZXMpLmZsYXQoKVxuXG4gIH1cblxuICByZXR1cm4gdG90YWxQYXRjaGVzXG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVuZGVyQ2xhaW1SZXN1bHQge1xuICBjYXRhbG9nRW50aXR5PzogQXBpT2JqZWN0O1xuICBmaXJlc3RhcnRyRW50aXR5PzogQXBpT2JqZWN0O1xuICBleHRyYUNoYXJ0czogeyBjbGFpbToge2tpbmQ6IHN0cmluZywgbmFtZTogc3RyaW5nfSwgY2hhcnQ6IEFwaU9iamVjdH1bXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyQ2xhaW0oXG5cbiAgY2F0YWxvZ1Njb3BlOiBDb25zdHJ1Y3QsXG5cbiAgZmlyZXN0YXJ0clNjb3BlOiBDb25zdHJ1Y3QsXG5cbiAgY2xhaW06IGFueSxcblxuICBwYXRjaGVzOiBJQ3VzdG9tUmVzb3VyY2VQYXRjaFtdLFxuXG4gIHByZXZpb3VzQ1I6IGFueSB8IG51bGwgPSBudWxsXG5cbiAgKTogUHJvbWlzZTxJUmVuZGVyQ2xhaW1SZXN1bHQ+IHtcblxuICBsZXQgY2F0YWxvZ0VudGl0eTogQmFzZUNoYXJ0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBsZXQgZmlyZXN0YXJ0ckVudGl0eTogQmFzZUNoYXJ0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGNoYXJ0SWQgPSBgJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YC50b0xvd2VyQ2FzZSgpO1xuXG4gIGxldCBmaXJlc3RhcnRySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChwcmV2aW91c0NSKSB7XG5cbiAgICBmaXJlc3RhcnRySWQgPSBwcmV2aW91c0NSPy5zcGVjPy5maXJlc3RhcnRyPy50ZlN0YXRlS2V5IHx8IG51bGw7XG5cbiAgfVxuXG4gIGNvbnN0IHJlbmRlclBhdGNoZXMgPSBwYXRjaGVzLmZpbHRlcigocGF0Y2g6IGFueSkgPT4gIXBhdGNoLmlzUG9zdFBhdGNoKVxuICBjb25zdCBwb3N0UGF0Y2hlcyA9IHBhdGNoZXMuZmlsdGVyKChwYXRjaDphbnkpID0+IHBhdGNoLmlzUG9zdFBhdGNoKVxuXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0Q29uZmlndXJlZFByb3ZpZGVyKClcblxuICBzd2l0Y2ggKGNsYWltLmtpbmQpIHtcblxuICAgIGNhc2UgXCJEb21haW5DbGFpbVwiOlxuXG4gICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dEb21haW5DaGFydChcbiAgICAgICAgY2F0YWxvZ1Njb3BlLCBcbiAgICAgICAgYGNhdGFsb2ctJHtjaGFydElkfWAsIFxuICAgICAgICBmaXJlc3RhcnRySWQsIFxuICAgICAgICBjbGFpbSwgXG4gICAgICAgIHJlbmRlclBhdGNoZXNcbiAgICAgICk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcIlN5c3RlbUNsYWltXCI6XG5cbiAgICAgIGNhdGFsb2dFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQ2F0YWxvZ1N5c3RlbUNoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsIFxuICAgICAgICBgY2F0YWxvZy0ke2NoYXJ0SWR9YCwgXG4gICAgICAgIGZpcmVzdGFydHJJZCwgXG4gICAgICAgIGNsYWltLCBcbiAgICAgICAgcmVuZGVyUGF0Y2hlc1xuICAgICAgKTtcblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiR3JvdXBDbGFpbVwiOlxuXG4gICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dHcm91cENoYXJ0KGNhdGFsb2dTY29wZSwgYGNhdGFsb2ctJHtjaGFydElkfWAsIGZpcmVzdGFydHJJZCwgY2xhaW0sIHJlbmRlclBhdGNoZXMpO1xuXG4gICAgICBpZiAoY2xhaW0ucHJvdmlkZXJzLmdpdGh1YiAmJiAocHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuZ2l0aHViIHx8IHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbCkpIHtcblxuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkdpdGh1Ykdyb3VwQ2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgIGBnaXRodWItJHtjaGFydElkfWAsXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgIGNsYWltLFxuICAgICAgICAgIHJlbmRlclBhdGNoZXNcbiAgICAgICAgKTtcblxuICAgICAgfVxuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJVc2VyQ2xhaW1cIjpcblxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nVXNlckNoYXJ0KGNhdGFsb2dTY29wZSwgY2hhcnRJZCwgZmlyZXN0YXJ0cklkLCBjbGFpbSwgcmVuZGVyUGF0Y2hlcyk7XG5cbiAgICAgIGlmIChjbGFpbS5wcm92aWRlcnMuZ2l0aHViICYmIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5naXRodWIgfHwgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsKSkge1xuXG4gICAgICAgIGZpcmVzdGFydHJFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuR2l0aHViTWVtYmVyc2hpcENoYXJ0KFxuICAgICAgICAgIGZpcmVzdGFydHJTY29wZSxcbiAgICAgICAgICBgZ2l0aHViLSR7Y2hhcnRJZH1gLFxuICAgICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgICBjbGFpbSxcbiAgICAgICAgICByZW5kZXJQYXRjaGVzXG4gICAgICAgICk7XG5cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiQ29tcG9uZW50Q2xhaW1cIjpcblxuICAgICAgaWYgKGNsYWltLnByb3ZpZGVycy5naXRodWIgJiYgKHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmdpdGh1YiB8fCBwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5hbGwpKSB7XG5cbiAgICAgICAgZmlyZXN0YXJ0ckVudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5HaXRodWJSZXBvc2l0b3J5Q2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgIGBnaXRodWItJHtjaGFydElkfWAsXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgIGNsYWltLFxuICAgICAgICAgIHJlbmRlclBhdGNoZXNcbiAgICAgICAgKTtcblxuICAgICAgfVxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nQ29tcG9uZW50Q2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSwgY2hhcnRJZCwgZmlyZXN0YXJ0cklkLCBjbGFpbSwgcmVuZGVyUGF0Y2hlc1xuICAgICAgKTtcblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiVEZXb3Jrc3BhY2VDbGFpbVwiOlxuXG4gICAgICBpZiAoY2xhaW0ucHJvdmlkZXJzLnRlcnJhZm9ybSAmJiAocHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMudGVycmFmb3JtIHx8IHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbCkpIHtcblxuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LlRGV29ya3NwYWNlQ2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLCBcbiAgICAgICAgICBgdGVycmFmb3JtLSR7Y2hhcnRJZH1gLCBcbiAgICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgICAgY2xhaW0sXG4gICAgICAgICAgcmVuZGVyUGF0Y2hlc1xuICAgICAgICApO1xuXG4gICAgICB9XG4gICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dURldvcmtzcGFjZUNoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsIGNoYXJ0SWQsIGZpcmVzdGFydHJJZCwgY2xhaW0sIHJlbmRlclBhdGNoZXNcbiAgICAgICk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcIkFyZ29EZXBsb3lDbGFpbVwiOlxuXG4gICAgICBpZiAoY2xhaW0ucHJvdmlkZXJzLmFyZ29jZCAmJiAocHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYXJnb2NkIHx8IHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbCkpIHtcblxuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkFyZ29EZXBsb3lDaGFydChcbiAgICAgICAgICBmaXJlc3RhcnRyU2NvcGUsIFxuICAgICAgICAgIGBhcmdvY2QtJHtjaGFydElkfWAsIFxuICAgICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgICBjbGFpbSxcbiAgICAgICAgICByZW5kZXJQYXRjaGVzXG4gICAgICAgICk7XG5cbiAgICAgIH1cbiAgICAgIFxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nQXJnb0RlcGxveUNoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsIGNoYXJ0SWQsIGZpcmVzdGFydHJJZCwgY2xhaW0sIHJlbmRlclBhdGNoZXNcbiAgICAgICk7XG5cbiAgICAgIGJyZWFrO1xuXG5cbiAgICBkZWZhdWx0OlxuXG4gICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIGNsYWltIGtpbmQ6ICR7Y2xhaW0ua2luZH1gKTtcblxuICAgICAgYnJlYWs7XG4gIH1cblxuICAvKipcbiAgICogVGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHRvIG9ubHkgcmVuZGVyIHRoZSBjYXRhbG9nIGVudGl0eSwgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZFxuICAgKi9cbiAgaWYgKCFjYXRhbG9nRW50aXR5KSB7XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZW5kZXIgY2xhaW0gJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YCk7XG5cbiAgfVxuXG4gIC8qXG4gICAqXG4gICAqIFJlbmRlciBwaGFzZVxuICAgKlxuICAgKi9cbiAgY29uc3QgW2NhdGFsb2dDaGFydCwgZmlyZXN0YXJ0ckVudGl0eUNoYXJ0XSA9IGF3YWl0IFByb21pc2UuYWxsKFxuXG4gICAgW1xuICAgICAgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsID8gY2F0YWxvZ0VudGl0eS5yZW5kZXIoKSA6IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpLFxuXG4gICAgICBmaXJlc3RhcnRyRW50aXR5Py5yZW5kZXIoKSxcblxuICAgIF1cblxuICApXG5cbiAgLypcbiAgICpcbiAgICogUG9zdCByZW5kZXIgcGhhc2UgKGFuZCByZXR1cm4pXG4gICAqXG4gICAqL1xuICByZXR1cm4ge1xuXG4gICAgY2F0YWxvZ0VudGl0eTogY2F0YWxvZ0NoYXJ0ID8gYXdhaXQgY2F0YWxvZ0NoYXJ0LnBvc3RSZW5kZXJlcihwb3N0UGF0Y2hlcykgOiB1bmRlZmluZWQsXG5cbiAgICBmaXJlc3RhcnRyRW50aXR5OiBhd2FpdCAoZmlyZXN0YXJ0ckVudGl0eUNoYXJ0ID8gZmlyZXN0YXJ0ckVudGl0eUNoYXJ0LnBvc3RSZW5kZXJlcihwb3N0UGF0Y2hlcykgOiB1bmRlZmluZWQpLFxuXG4gICAgZXh0cmFDaGFydHM6IGF3YWl0IGZpcmVzdGFydHJFbnRpdHk/LmV4dHJhQ2hhcnRzKCkgfHwgW11cbiAgfTtcblxufVxuXG5cblxuZnVuY3Rpb24gc29ydEtpbmRzKG9yZGVyZWRLaW5kczogc3RyaW5nW10sIGNsYWltczogUmVuZGVyQ2xhaW1zKSB7XG5cbiAgY29uc3QgcmVzdWx0OiBSZW5kZXJDbGFpbXNbXSA9IFtdXG5cbiAgZm9yIChjb25zdCBraW5kIG9mIG9yZGVyZWRLaW5kcykge1xuXG4gICAgY29uc3Qga2luZFJlbmRlckNsYWltczogYW55ID0gc29ydFJlbmRlckNsYWltc0J5S2luZChjbGFpbXMsIFtraW5kXSlcblxuICAgIHJlc3VsdC5wdXNoKGtpbmRSZW5kZXJDbGFpbXMpXG5cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcblxufVxuXG5cblxuXG5cbmZ1bmN0aW9uIGdldFByZXZpb3VzQ1Jmcm9tQ2xhaW0oY2xhaW06IGFueSwgcHJldmlvdXNDUnM6IGFueSkge1xuXG4gIGNvbnN0IHByZXZpb3VzQ1JzS2V5cyA9IE9iamVjdC5rZXlzKHByZXZpb3VzQ1JzKVxuXG4gIGZvcihjb25zdCBwcmV2aW91c0NSS2V5IG9mIHByZXZpb3VzQ1JzS2V5cyl7XG5cbiAgICBjb25zdCBwcmV2aW91c0NSID0gcHJldmlvdXNDUnNbcHJldmlvdXNDUktleV1cblxuICAgIGlmKGlzQ2F0YWxvZ0VudGl0eShwcmV2aW91c0NSKSkgY29udGludWVcblxuICAgIGlmKGlzRXhjbHVkZWRGcm9tUHJldmlvdXNDUihwcmV2aW91c0NSLmtpbmQpKSBjb250aW51ZVxuXG4gICAgaWYocHJldmlvdXNDUi5tZXRhZGF0YS5hbm5vdGF0aW9uc1tDTEFJTV9SRUZfQU5OT1RBVElPTl0gPT09IGAke2NsYWltLmtpbmR9LyR7Y2xhaW0ubmFtZX1gKXtcblxuICAgICAgcmV0dXJuIHByZXZpb3VzQ1JcblxuICAgIH1cblxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG5cbn1cblxuXG5mdW5jdGlvbiBpc0V4Y2x1ZGVkRnJvbVByZXZpb3VzQ1IoY3JLaW5kOiBzdHJpbmcpe1xuXG5cbiAgcmV0dXJuIFtcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVwiXS5pbmNsdWRlcyhjcktpbmQpXG5cblxufVxuIl19
|
|
235862
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtY3JzLWV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9wcmV2aW91cy1jcnMtZXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBEQUEyRDtBQUMzRCwyQ0FBa0Q7QUFFbEQsU0FBZ0Isc0JBQXNCLENBQUMsS0FBVSxFQUFFLFdBQWdCO0lBRS9ELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFaEQsS0FBSSxNQUFNLGFBQWEsSUFBSSxlQUFlLEVBQUM7UUFFekMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTdDLElBQUcsSUFBQSw0QkFBZSxFQUFDLFVBQVUsQ0FBQztZQUFFLFNBQVE7UUFFeEMsSUFBRyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUUsU0FBUTtRQUV0RCxJQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGdDQUFvQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBQztZQUV6RixPQUFPLFVBQVUsQ0FBQTtTQUVsQjtLQUVGO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFFaEIsQ0FBQztBQXRCRCx3REFzQkM7QUFHRCxTQUFTLHdCQUF3QixDQUFDLE1BQWM7SUFHNUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBRy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0NhdGFsb2dFbnRpdHkgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbnMvcmVmZXJlbmNlc1wiXG5pbXBvcnQgeyBDTEFJTV9SRUZfQU5OT1RBVElPTiB9IGZyb20gXCIuL2NvbnN0YW50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2aW91c0NSZnJvbUNsYWltKGNsYWltOiBhbnksIHByZXZpb3VzQ1JzOiBhbnkpIHtcblxuICAgIGNvbnN0IHByZXZpb3VzQ1JzS2V5cyA9IE9iamVjdC5rZXlzKHByZXZpb3VzQ1JzKVxuICBcbiAgICBmb3IoY29uc3QgcHJldmlvdXNDUktleSBvZiBwcmV2aW91c0NSc0tleXMpe1xuICBcbiAgICAgIGNvbnN0IHByZXZpb3VzQ1IgPSBwcmV2aW91c0NSc1twcmV2aW91c0NSS2V5XVxuICBcbiAgICAgIGlmKGlzQ2F0YWxvZ0VudGl0eShwcmV2aW91c0NSKSkgY29udGludWVcbiAgXG4gICAgICBpZihpc0V4Y2x1ZGVkRnJvbVByZXZpb3VzQ1IocHJldmlvdXNDUi5raW5kKSkgY29udGludWVcbiAgXG4gICAgICBpZihwcmV2aW91c0NSLm1ldGFkYXRhLmFubm90YXRpb25zW0NMQUlNX1JFRl9BTk5PVEFUSU9OXSA9PT0gYCR7Y2xhaW0ua2luZH0vJHtjbGFpbS5uYW1lfWApe1xuICBcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzQ1JcbiAgXG4gICAgICB9XG4gIFxuICAgIH1cbiAgXG4gICAgcmV0dXJuIGZhbHNlXG4gIFxufVxuXG5cbmZ1bmN0aW9uIGlzRXhjbHVkZWRGcm9tUHJldmlvdXNDUihjcktpbmQ6IHN0cmluZyl7XG5cblxuICAgIHJldHVybiBbXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVcIl0uaW5jbHVkZXMoY3JLaW5kKVxuICBcbiAgXG4gIH1cbiAgIl19
|
|
235863
|
+
|
|
235864
|
+
/***/ }),
|
|
235865
|
+
|
|
235866
|
+
/***/ 68926:
|
|
235867
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
235868
|
+
|
|
235869
|
+
"use strict";
|
|
235870
|
+
|
|
235871
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
235872
|
+
exports.render = void 0;
|
|
235873
|
+
const loader_1 = __nccwpck_require__(63530);
|
|
235874
|
+
const references_1 = __nccwpck_require__(14461);
|
|
235875
|
+
const claims_render_1 = __nccwpck_require__(84508);
|
|
235876
|
+
/*
|
|
235877
|
+
* Function called when rendering but not importing
|
|
235878
|
+
*
|
|
235879
|
+
* Input:
|
|
235880
|
+
* - scope: an object, used to represent CDKTF's execution scope
|
|
235881
|
+
*
|
|
235882
|
+
* Return:
|
|
235883
|
+
* - The result of rendering the renderClaims object, plus the
|
|
235884
|
+
* rendered firestartr-all group
|
|
235885
|
+
*
|
|
235886
|
+
*/
|
|
235887
|
+
async function render(catalogScope, firestartrScope) {
|
|
235888
|
+
const data = await (0, loader_1.loadAll)();
|
|
235889
|
+
const result = await (0, claims_render_1.renderClaims)(catalogScope, firestartrScope, data);
|
|
235890
|
+
(0, references_1.validateReferentialIntegrity)(result);
|
|
235891
|
+
(0, references_1.validateTfStateKeyUniqueness)(result);
|
|
235892
|
+
return result;
|
|
235893
|
+
}
|
|
235894
|
+
exports.render = render;
|
|
235895
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVuZGVyZXIvcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQTBEO0FBQzFELDBEQUF3RztBQUV4RyxtREFBK0M7QUFHL0M7Ozs7Ozs7Ozs7R0FVRztBQUNJLEtBQUssVUFBVSxNQUFNLENBRTFCLFlBQXVCLEVBRXZCLGVBQTBCO0lBSTFCLE1BQU0sSUFBSSxHQVFOLE1BQU0sSUFBQSxnQkFBTyxHQUFFLENBQUE7SUFFbkIsTUFBTSxNQUFNLEdBQVEsTUFBTSxJQUFBLDRCQUFZLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUUzRSxJQUFBLHlDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRXBDLElBQUEseUNBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUE7SUFFcEMsT0FBTyxNQUFNLENBQUE7QUFFZixDQUFDO0FBMUJELHdCQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBJUmVuYW1lUmVzdWx0LCBsb2FkQWxsIH0gZnJvbSBcIi4uL2xvYWRlci9sb2FkZXJcIjtcbmltcG9ydCB7ICB2YWxpZGF0ZVJlZmVyZW50aWFsSW50ZWdyaXR5LCB2YWxpZGF0ZVRmU3RhdGVLZXlVbmlxdWVuZXNzIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25zL3JlZmVyZW5jZXNcIjtcbmltcG9ydCB7IFJlbmRlckNsYWltcywgUmVuZGVyZWRDck1hcCB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyByZW5kZXJDbGFpbXMgfSBmcm9tIFwiLi9jbGFpbXMtcmVuZGVyXCI7XG5cblxuLypcbiAqIEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHJlbmRlcmluZyBidXQgbm90IGltcG9ydGluZ1xuICpcbiAqIElucHV0OlxuICogLSBzY29wZTogYW4gb2JqZWN0LCB1c2VkIHRvIHJlcHJlc2VudCBDREtURidzIGV4ZWN1dGlvbiBzY29wZVxuICpcbiAqIFJldHVybjpcbiAqIC0gVGhlIHJlc3VsdCBvZiByZW5kZXJpbmcgdGhlIHJlbmRlckNsYWltcyBvYmplY3QsIHBsdXMgdGhlXG4gKiAgIHJlbmRlcmVkIGZpcmVzdGFydHItYWxsIGdyb3VwXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyKFxuXG4gIGNhdGFsb2dTY29wZTogQ29uc3RydWN0LFxuXG4gIGZpcmVzdGFydHJTY29wZTogQ29uc3RydWN0LFxuXG4gICk6IFByb21pc2U8UmVuZGVyZWRDck1hcD4ge1xuXG4gIGNvbnN0IGRhdGE6IHtcblxuICAgIHJlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zLFxuXG4gICAgY3JzOiBhbnksXG5cbiAgICByZW5hbWVzPzogSVJlbmFtZVJlc3VsdFtdXG5cbiAgfSA9IGF3YWl0IGxvYWRBbGwoKVxuXG4gIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgcmVuZGVyQ2xhaW1zKGNhdGFsb2dTY29wZSwgZmlyZXN0YXJ0clNjb3BlLCBkYXRhKVxuXG4gIHZhbGlkYXRlUmVmZXJlbnRpYWxJbnRlZ3JpdHkocmVzdWx0KVxuXG4gIHZhbGlkYXRlVGZTdGF0ZUtleVVuaXF1ZW5lc3MocmVzdWx0KVxuXG4gIHJldHVybiByZXN1bHRcblxufVxuXG5cblxuXG5cblxuIl19
|
|
235793
235896
|
|
|
235794
235897
|
/***/ }),
|
|
235795
235898
|
|
|
@@ -236664,12 +236767,6 @@ exports.cdk8s_rendererSubcommands = {
|
|
|
236664
236767
|
else if (options["compare"]) {
|
|
236665
236768
|
await cdk8s_renderer_1.default.runComparer(options["claimsFromMain"], options["claimsFromPr"], options["claimsDefaults"], options["wetReposConfig"], options["outputComparer"]);
|
|
236666
236769
|
}
|
|
236667
|
-
else if (options["render-plan"]) {
|
|
236668
|
-
await cdk8s_renderer_1.default.renderWorkspacePlans(options["inputDir"], options["outputDir"], options["prLink"], options["sha"]);
|
|
236669
|
-
}
|
|
236670
|
-
else if (options["lastStatePrLink"] && options["lastClaimPrLink"]) {
|
|
236671
|
-
await cdk8s_renderer_1.default.addLastStateAndLastClaimAnnotations(options["crLocation"], options["lastStatePrLink"], options["lastClaimPrLink"]);
|
|
236672
|
-
}
|
|
236673
236770
|
},
|
|
236674
236771
|
};
|
|
236675
236772
|
|
|
@@ -238727,6 +238824,15 @@ class GroupGithubDecanter extends base_1.GithubDecanter {
|
|
|
238727
238824
|
path: "/providers",
|
|
238728
238825
|
});
|
|
238729
238826
|
}
|
|
238827
|
+
__decantParent() {
|
|
238828
|
+
if (this.data.groupDetails.parent) {
|
|
238829
|
+
this.__patchClaim({
|
|
238830
|
+
op: "add",
|
|
238831
|
+
value: `group:${this.data.groupDetails.parent.name}`,
|
|
238832
|
+
path: "/parent",
|
|
238833
|
+
});
|
|
238834
|
+
}
|
|
238835
|
+
}
|
|
238730
238836
|
async __gatherMembers() {
|
|
238731
238837
|
this.data["members"] = (await github_1.default.team.getTeamMembers(this.data.groupDetails.name, this.org)).map((member) => { return { name: member.login, role: member.role }; });
|
|
238732
238838
|
}
|
|
@@ -238965,6 +239071,25 @@ class RepoGithubDecanter extends base_1.GithubDecanter {
|
|
|
238965
239071
|
});
|
|
238966
239072
|
}
|
|
238967
239073
|
}
|
|
239074
|
+
__decantOIDC() {
|
|
239075
|
+
if (this.data.oidc) {
|
|
239076
|
+
this.__patchClaim({
|
|
239077
|
+
op: "add",
|
|
239078
|
+
value: {},
|
|
239079
|
+
path: "/providers/github/actions"
|
|
239080
|
+
});
|
|
239081
|
+
this.__patchClaim({
|
|
239082
|
+
op: "add",
|
|
239083
|
+
path: "/providers/github/actions",
|
|
239084
|
+
value: {
|
|
239085
|
+
oidc: {
|
|
239086
|
+
useDefault: this.data.oidc.use_default,
|
|
239087
|
+
includeClaimKeys: this.data.oidc.include_claim_keys
|
|
239088
|
+
}
|
|
239089
|
+
}
|
|
239090
|
+
});
|
|
239091
|
+
}
|
|
239092
|
+
}
|
|
238968
239093
|
__decantRelations() {
|
|
238969
239094
|
const directMaintainers = this.data.teamsAndMembers.directMembers
|
|
238970
239095
|
.filter((member) => member.role == "maintain")
|
|
@@ -239272,12 +239397,16 @@ exports.isInPreviousCRs = isInPreviousCRs;
|
|
|
239272
239397
|
const randomFolder = path.join("/tmp", `claims_${catalog_common_1.default.generic.randomString(10)}`);
|
|
239273
239398
|
const tmpRenderedCrsPath = path.join("/tmp", ".resources");
|
|
239274
239399
|
async function setPreviousCRs(resourcesPath) {
|
|
239275
|
-
const crs = await cdk8s_renderer_1.default.loadCRs(resourcesPath, [
|
|
239400
|
+
const crs = await cdk8s_renderer_1.default.loadCRs(resourcesPath, [
|
|
239401
|
+
path.join(resourcesPath, ".github"),
|
|
239402
|
+
path.join(resourcesPath, ".config"),
|
|
239403
|
+
path.join(resourcesPath, ".import"),
|
|
239404
|
+
]);
|
|
239276
239405
|
const alreadyImportedCrs = {};
|
|
239277
239406
|
for (const value of Object.values(crs)) {
|
|
239278
239407
|
const resourceName = value.metadata.annotations[catalog_common_1.default.generic.getFirestartrAnnotation("external-name")];
|
|
239279
239408
|
const resourceKind = value.kind;
|
|
239280
|
-
alreadyImportedCrs[`${resourceKind}-${resourceName}`] =
|
|
239409
|
+
alreadyImportedCrs[`${resourceKind}-${resourceName}`] = value;
|
|
239281
239410
|
}
|
|
239282
239411
|
previousCRs = alreadyImportedCrs;
|
|
239283
239412
|
}
|
|
@@ -239289,6 +239418,9 @@ async function importGithubGitopsRepository(org, skipPlan, claimsPath, resources
|
|
|
239289
239418
|
log("Importing gitops repository for organization: ", org);
|
|
239290
239419
|
const data = await getDataFromKinds(org, filters);
|
|
239291
239420
|
data.crs = {};
|
|
239421
|
+
for (const k of Object.keys(previousCRs)) {
|
|
239422
|
+
data.crs[`${previousCRs[k].kind}-${previousCRs[k].metadata.name}`] = previousCRs[k];
|
|
239423
|
+
}
|
|
239292
239424
|
const crs = await renderCRs(data);
|
|
239293
239425
|
await moveCRsAndClaims(crs, org, claimsPath, resourcesPath);
|
|
239294
239426
|
}
|
|
@@ -242800,20 +242932,52 @@ const user_feedback_ops_1 = __nccwpck_require__(36322);
|
|
|
242800
242932
|
const catalog_common_1 = __importDefault(__nccwpck_require__(74100));
|
|
242801
242933
|
const log = (0, debug_1.default)("firestartr:operator:tfworkspaces:policies");
|
|
242802
242934
|
function policyAllowsOp(policy, op, item) {
|
|
242935
|
+
let msg = "";
|
|
242803
242936
|
const foundPolicy = catalog_common_1.default.policies.getPolicyByName(policy);
|
|
242804
242937
|
if (op === informer_1.OperationType.RETRY.toString() && foundPolicy?.allowedOps.includes(op)) {
|
|
242805
242938
|
if ("deletionTimestamp" in item.metadata && "full-control" !== policy) {
|
|
242806
|
-
|
|
242939
|
+
msg = `A RETRY operation is not allowed on a resource with a deletionTimestamp. It means
|
|
242940
|
+
that the resource is being deleted and it is not possible to retry the operation with policy: ${policy}.
|
|
242941
|
+
|
|
242942
|
+
To fix this issue, you must first delete the "firestatr.dev/finalizer" from finalizers array in the resource manifest,
|
|
242943
|
+
it will be automatically deleted by kubernetes. Terraform will not execute any operation on the resource.
|
|
242944
|
+
`;
|
|
242945
|
+
return { allowed: false, msg };
|
|
242807
242946
|
}
|
|
242808
242947
|
else {
|
|
242809
|
-
return true;
|
|
242948
|
+
return { allowed: true, msg };
|
|
242810
242949
|
}
|
|
242811
242950
|
}
|
|
242812
|
-
if (!foundPolicy)
|
|
242813
|
-
|
|
242814
|
-
|
|
242951
|
+
if (!foundPolicy) {
|
|
242952
|
+
msg = `Policy ${policy} not found`;
|
|
242953
|
+
return { allowed: false, msg };
|
|
242954
|
+
}
|
|
242955
|
+
const allowed = foundPolicy.allowedOps.includes(op);
|
|
242956
|
+
if (!allowed) {
|
|
242957
|
+
msg = searchAllowedPolicies(op, policy);
|
|
242958
|
+
}
|
|
242959
|
+
return { allowed, msg };
|
|
242815
242960
|
}
|
|
242816
242961
|
exports.policyAllowsOp = policyAllowsOp;
|
|
242962
|
+
function searchAllowedPolicies(op, policy) {
|
|
242963
|
+
let allowedPolicies = [];
|
|
242964
|
+
for (const policy of catalog_common_1.default.policies.FIRESTARTR_POLICIES) {
|
|
242965
|
+
if (policy.allowedOps.includes(op)) {
|
|
242966
|
+
allowedPolicies.push(policy.name);
|
|
242967
|
+
}
|
|
242968
|
+
}
|
|
242969
|
+
let policies = "";
|
|
242970
|
+
if (allowedPolicies.length > 0) {
|
|
242971
|
+
policies = allowedPolicies.join(", ");
|
|
242972
|
+
}
|
|
242973
|
+
return `
|
|
242974
|
+
|
|
242975
|
+
Operation ${op} not allowed by policy \`${policy}\`, to allow this operation,
|
|
242976
|
+
|
|
242977
|
+
switch to one of the following policies: \`${policies}\`
|
|
242978
|
+
|
|
242979
|
+
`;
|
|
242980
|
+
}
|
|
242817
242981
|
async function* errorPolicyCompatibility(syncPolicy, generalPolicy, item, op) {
|
|
242818
242982
|
const message = `Conflict: 'sync-policy': ${syncPolicy} and 'policy': ${generalPolicy} are not compatible`;
|
|
242819
242983
|
for (const typeStatus of [
|
|
@@ -242892,8 +243056,9 @@ function processOperation(item, op, handler) {
|
|
|
242892
243056
|
if (!policy || policy === "observe" || policy === "observe-only") {
|
|
242893
243057
|
return observe(item, op, handler);
|
|
242894
243058
|
}
|
|
242895
|
-
|
|
242896
|
-
|
|
243059
|
+
const { allowed, msg } = (0, policies_1.policyAllowsOp)(policy, op, item);
|
|
243060
|
+
if (!allowed) {
|
|
243061
|
+
return errorPolicyNotAllowsOp(item, op, handler, msg);
|
|
242897
243062
|
}
|
|
242898
243063
|
switch (op) {
|
|
242899
243064
|
case informer_1.OperationType.UPDATED:
|
|
@@ -243334,71 +243499,59 @@ async function* doApply(item, op, handler) {
|
|
|
243334
243499
|
}
|
|
243335
243500
|
}
|
|
243336
243501
|
}
|
|
243337
|
-
async function* errorPolicyNotAllowsOp(item, op,
|
|
243338
|
-
const fSearchAllowedPoliciesForOp = (op) => {
|
|
243339
|
-
let allowedPolicies = [];
|
|
243340
|
-
for (const policy of catalog_common_1.default.policies.FIRESTARTR_POLICIES) {
|
|
243341
|
-
if (policy.allowedOps.includes(op)) {
|
|
243342
|
-
allowedPolicies.push(policy.name);
|
|
243343
|
-
}
|
|
243344
|
-
}
|
|
243345
|
-
if (allowedPolicies.length > 0)
|
|
243346
|
-
return allowedPolicies.join(", ");
|
|
243347
|
-
return "none";
|
|
243348
|
-
};
|
|
243349
|
-
const errorMessage = `Operation ${op} not allowed by policy \`${policy}\`, to allow this operation, switch to one of the following policies: \`${fSearchAllowedPoliciesForOp(op)}\``;
|
|
243502
|
+
async function* errorPolicyNotAllowsOp(item, op, handler, msg) {
|
|
243350
243503
|
const reason = "POLICY CONFLICT";
|
|
243351
|
-
await (0, user_feedback_ops_1.tryPublishError)(item, reason,
|
|
243504
|
+
await (0, user_feedback_ops_1.tryPublishError)(item, reason, msg);
|
|
243352
243505
|
yield {
|
|
243353
243506
|
item,
|
|
243354
243507
|
reason: op,
|
|
243355
243508
|
type: "ERROR",
|
|
243356
243509
|
status: "True",
|
|
243357
|
-
message:
|
|
243510
|
+
message: msg
|
|
243358
243511
|
};
|
|
243359
243512
|
yield {
|
|
243360
243513
|
item,
|
|
243361
243514
|
reason: op,
|
|
243362
243515
|
type: "PROVISIONED",
|
|
243363
243516
|
status: "False",
|
|
243364
|
-
message:
|
|
243517
|
+
message: msg
|
|
243365
243518
|
};
|
|
243366
243519
|
yield {
|
|
243367
243520
|
item,
|
|
243368
243521
|
reason: op,
|
|
243369
243522
|
type: "PROVISIONING",
|
|
243370
243523
|
status: "False",
|
|
243371
|
-
message:
|
|
243524
|
+
message: msg
|
|
243372
243525
|
};
|
|
243373
243526
|
yield {
|
|
243374
243527
|
item,
|
|
243375
243528
|
reason: op,
|
|
243376
243529
|
type: "OUT_OF_SYNC",
|
|
243377
243530
|
status: "False",
|
|
243378
|
-
message:
|
|
243531
|
+
message: msg
|
|
243379
243532
|
};
|
|
243380
243533
|
yield {
|
|
243381
243534
|
item,
|
|
243382
243535
|
reason: op,
|
|
243383
243536
|
type: "DELETED",
|
|
243384
243537
|
status: "False",
|
|
243385
|
-
message:
|
|
243538
|
+
message: msg
|
|
243386
243539
|
};
|
|
243387
243540
|
yield {
|
|
243388
243541
|
item,
|
|
243389
243542
|
reason: op,
|
|
243390
243543
|
type: "PLANNING",
|
|
243391
243544
|
status: "False",
|
|
243392
|
-
message:
|
|
243545
|
+
message: msg
|
|
243393
243546
|
};
|
|
243394
243547
|
yield {
|
|
243395
243548
|
item,
|
|
243396
243549
|
reason: op,
|
|
243397
243550
|
type: "DELETING",
|
|
243398
243551
|
status: "False",
|
|
243399
|
-
message:
|
|
243552
|
+
message: msg
|
|
243400
243553
|
};
|
|
243401
|
-
await handler.writeTerraformOutputInTfResult(item,
|
|
243554
|
+
await handler.writeTerraformOutputInTfResult(item, msg);
|
|
243402
243555
|
handler.error();
|
|
243403
243556
|
}
|
|
243404
243557
|
/**
|