@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 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.toJson_FirestartrGithubRepositorySpecContextBackendRef = exports.toJson_FirestartrGithubRepositorySpecWriteConnectionSecretToRefOutputs = 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_FirestartrGithubGroupSpecWriteConnectionSecretToRef = exports.toJson_FirestartrGithubGroupSpecFirestartr = exports.toJson_FirestartrGithubGroupSpecContext = exports.toJson_FirestartrGithubGroupSpecMembers = exports.FirestartrGithubGroupSpecPrivacy = exports.toJson_FirestartrGithubGroupSpec = exports.toJson_FirestartrGithubGroupProps = exports.FirestartrGithubGroup = void 0;
228163
- exports.toJson_FirestartrTerraformWorkspacePlanSpecReferencesRef = exports.toJson_FirestartrTerraformWorkspacePlanSpecContextProviders = 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 = void 0;
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__(38555);
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__(29244);
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: renderer_1.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBbUQ7QUFBMUMscUdBQUEsYUFBYSxPQUFBO0FBQ3RCLHdFQUFrRjtBQUF6RSwrSEFBQSwyQkFBMkIsT0FBQTtBQUNwQyxnREFBMEQ7QUFBakQsdUdBQUEsZUFBZSxPQUFBO0FBQ3hCLG9EQUE4RDtBQUFyRCwyR0FBQSxpQkFBaUIsT0FBQTtBQUMxQiwrQ0FBd0Q7QUFBL0Msc0dBQUEsY0FBYyxPQUFBO0FBQ3ZCLGdEQUFzRDtBQUE3Qyx1R0FBQSxhQUFhLE9BQUE7QUFDdEIsMERBQWdFO0FBQXZELGlIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHdEQUFrRTtBQUF6RCwrR0FBQSxtQkFBbUIsT0FBQTtBQUM1QixzRkFBc0Y7QUFBN0UscUlBQUEseUJBQXlCLE9BQUE7QUFDbEMsZ0RBQTRFO0FBQW5FLG1HQUFBLGtCQUFrQixPQUFlO0FBRTFDLDZDQUE2QztBQUM3Qyx5Q0FBaUg7QUFDakgscURBQTZFO0FBRTdFLDZDQUFzSDtBQUN0SCxpQ0FBNEM7QUFFNUMsdUNBQW1FO0FBQTFELDBHQUFBLGdCQUFnQixPQUFBO0FBQUUsMkdBQUEsaUJBQWlCLE9BQUE7QUFFNUMsNkRBQStEO0FBRS9ELG1EQUF3RTtBQUN4RSx5Q0FBdUM7QUFDdkMsaUVBQXVFO0FBQ3ZFLCtEQUFrRTtBQUVsRSxrQkFBZTtJQUViLGlCQUFpQixFQUFqQiw0QkFBaUI7SUFFakIsTUFBTSxFQUFOLGlCQUFNO0lBRU4sT0FBTyxFQUFQLGdCQUFPO0lBRVAsWUFBWSxFQUFaLDJCQUFZO0lBRVoseUJBQXlCLEVBQXpCLHdDQUF5QjtJQUV6QixXQUFXLEVBQVgseUJBQVc7SUFFWCxnQkFBZ0IsRUFBaEIseUJBQWdCO0lBRWhCLFdBQVcsRUFBWCxzQkFBVztJQUVYLGVBQWUsRUFBZiw0QkFBZTtJQUVmLE9BQU8sRUFBUCxnQkFBTztJQUVQLGlCQUFpQixFQUFqQiw0QkFBaUI7SUFFakIsb0JBQW9CLEVBQXBCLCtCQUFvQjtJQUVwQixtQ0FBbUMsRUFBbkMsOENBQW1DO0lBRW5DLHNCQUFzQixFQUF0QixvQ0FBc0I7SUFFdEIsaUJBQWlCLEVBQWpCLCtCQUFpQjtDQUlsQixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUMvQixXQUFtQixFQUNuQixnQkFBd0IsRUFDeEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLGNBQXNCLEVBQ3RCLGdCQUF3QixFQUN4QixXQUFtQixFQUNuQixjQUF1QixFQUN2QixRQUEwQixFQUMxQixnQkFBMEIsRUFBRTtJQUc1QixJQUFBLDBCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzNCLElBQUEsZ0JBQU8sRUFBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUN6QyxJQUFBLGdCQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLElBQUEsZ0JBQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0IsSUFBQSxnQkFBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM3QixJQUFBLGdCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDekMsSUFBQSwwQkFBaUIsRUFBQyxjQUFjLENBQUMsQ0FBQTtJQUNqQyxJQUFBLHlCQUFnQixFQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRS9CLE1BQU0sVUFBVSxHQUFHLElBQUksV0FBRyxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixjQUFjLEVBQUUsc0JBQWMsQ0FBQyxpQkFBaUI7S0FDakQsQ0FBQyxDQUFBO0lBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxXQUFHLENBQUM7UUFDNUIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixjQUFjLEVBQUUsc0JBQWMsQ0FBQyxpQkFBaUI7S0FDakQsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFBLGlCQUFNLEVBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXhDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNsQixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUE7QUFDdkIsQ0FBQztBQXRDRCxrQ0FzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBHbG9iYWxTZWN0aW9uIH0gZnJvbSBcIi4vc3JjL2dsb2JhbHMvYmFzZVwiO1xuZXhwb3J0IHsgQnJhbmNoU3RyYXRlZ2llc0luaXRpYWxpemVyIH0gZnJvbSBcIi4vc3JjL2luaXRpYWxpemVycy9icmFuY2hTdHJhdGVnaWVzXCI7XG5leHBvcnQgeyBVVUlESW5pdGlhbGl6ZXIgfSBmcm9tIFwiLi9zcmMvaW5pdGlhbGl6ZXJzL3V1aWRcIjtcbmV4cG9ydCB7IEltcG9ydEluaXRpYWxpemVyIH0gZnJvbSBcIi4vc3JjL2luaXRpYWxpemVycy9pbXBvcnRcIjtcbmV4cG9ydCB7IE5hbWVOb3JtYWxpemVyIH0gZnJvbSBcIi4vc3JjL25vcm1hbGl6ZXJzL25hbWVcIjtcbmV4cG9ydCB7IEdsb2JhbERlZmF1bHQgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMvZ2xvYmFsXCI7XG5leHBvcnQgeyBJbml0aWFsaXplckRlZmF1bHQgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMvaW5pdGlhbGl6ZXJcIjtcbmV4cG9ydCB7IEluaXRpYWxpemVyQ2xhaW1SZWYgfSBmcm9tIFwiLi9zcmMvaW5pdGlhbGl6ZXJzL2NsYWltUmVmXCI7XG5leHBvcnQgeyBHaXRodWJSZXBvc2l0b3J5T3ZlcnJpZGVyIH0gZnJvbSBcIi4vc3JjL292ZXJyaWRlcnMvZ2l0aHViUmVwb3NpdG9yeU92ZXJyaWRlXCI7XG5leHBvcnQgeyBJbml0aWFsaXplclBhdGNoZXMgYXMgSW5pdGlhbGl6ZXIgfSBmcm9tIFwiLi9zcmMvaW5pdGlhbGl6ZXJzL2Jhc2VcIjtcbmV4cG9ydCB7IFJlbmRlckNsYWltRGF0YSwgUmVuZGVyQ2xhaW1zIH0gZnJvbSBcIi4vc3JjL3JlbmRlcmVyXCI7XG5pbXBvcnQgeyBydW5Db21wYXJlciB9IGZyb20gXCIuL3NyYy9jb21wYXJlclwiO1xuaW1wb3J0IHsgQWxsb3dlZFByb3ZpZGVycywgY29uZmlndXJlUHJvdmlkZXIsIHNldFBhdGgsIHNldFJlbmFtZXNFbmFibGVkLCBzZXRFeGNsdWRlZFBhdGhzIH0gZnJvbSBcIi4vc3JjL2NvbmZpZ1wiO1xuaW1wb3J0IHsgSU5JVElBTElaRVJTLCBJTklUSUFMSVpFUlNfQllfRklMRV9OQU1FIH0gZnJvbSBcIi4vc3JjL2luaXRpYWxpemVyc1wiO1xuXG5pbXBvcnQgeyByZW5kZXIsIHJlbmRlckZyb21JbXBvcnRzLCByZW5kZXJXb3Jrc3BhY2VQbGFucywgYWRkTGFzdFN0YXRlQW5kTGFzdENsYWltQW5ub3RhdGlvbnMgfSBmcm9tIFwiLi9zcmMvcmVuZGVyZXJcIjtcbmltcG9ydCB7IEFwcCwgWWFtbE91dHB1dFR5cGUgfSBmcm9tIFwiY2RrOHNcIjtcblxuZXhwb3J0IHsgQWxsb3dlZFByb3ZpZGVycywgY29uZmlndXJlUHJvdmlkZXIgfSBmcm9tIFwiLi9zcmMvY29uZmlnXCI7XG5cbmltcG9ydCB7IGlzQ2F0YWxvZ0VudGl0eSB9IGZyb20gXCIuL3NyYy92YWxpZGF0aW9ucy9yZWZlcmVuY2VzXCI7XG5cbmltcG9ydCB7IE5PUk1BTElaRVJTLCBub3JtYWxpemVNb2R1bGVDb250ZW50IH0gZnJvbSBcIi4vc3JjL25vcm1hbGl6ZXJzXCI7XG5pbXBvcnQgeyBsb2FkQ1JzIH0gZnJvbSBcIi4vc3JjL2xvYWRlclwiO1xuaW1wb3J0IHsgcmVuZGVyVGZXb3Jrc3BhY2UgfSBmcm9tIFwiLi9zcmMvY2xhaW1zL3Rmd29ya3NwYWNlcy9yZW5kZXJlclwiO1xuaW1wb3J0IHsgdmFsaWRhdGVrOHNMaW1pdHMgfSBmcm9tIFwiLi9zcmMvbm9ybWFsaXplcnMvdGZ3b3Jrc3BhY2VcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuXG4gIHJlbmRlckZyb21JbXBvcnRzLFxuXG4gIHJlbmRlcixcblxuICBzZXRQYXRoLFxuXG4gIElOSVRJQUxJWkVSUyxcblxuICBJTklUSUFMSVpFUlNfQllfRklMRV9OQU1FLFxuXG4gIE5PUk1BTElaRVJTLFxuXG4gIEFsbG93ZWRQcm92aWRlcnMsXG5cbiAgcnVuQ29tcGFyZXIsXG5cbiAgaXNDYXRhbG9nRW50aXR5LFxuXG4gIGxvYWRDUnMsXG5cbiAgcmVuZGVyVGZXb3Jrc3BhY2UsXG5cbiAgcmVuZGVyV29ya3NwYWNlUGxhbnMsXG5cbiAgYWRkTGFzdFN0YXRlQW5kTGFzdENsYWltQW5ub3RhdGlvbnMsXG5cbiAgbm9ybWFsaXplTW9kdWxlQ29udGVudCxcblxuICB2YWxpZGF0ZWs4c0xpbWl0cyxcblxuXG5cbn1cblxuLypcbiAqIE1haW4gZnVuY3Rpb24gb2YgdGhlIG1vZHVsZS4gUmVuZGVycyBjbGFpbSBmaWxlcyBpbnRvIGN1c3RvbSByZXNvdXJjZXMsXG4gKiBhbmQgdXBsb2FkcyB0aGVtIHRvIGEgS3ViZXJuZXRlcyBjbHVzdGVyLlxuICpcbiAqIElucHV0OlxuICogLSBnbG9iYWxzUGF0aDogc3RyaW5nLCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBnbG9iYWwgZmlsZXMgZm9sZGVyXG4gKiAtIGluaXRpYWxpemVyc1BhdGg6IHN0cmluZywgYWJzb2x1dGUgcGF0aCB0byB0aGUgaW5pdGlhbGl6ZXJzIGZpbGVzIGZvbGRlclxuICogLSBjbGFpbXNQYXRoOiBzdHJpbmcsIGFic29sdXRlIHBhdGggdG8gdGhlIGNsYWltcyBmaWxlcyBmb2xkZXJcbiAqIC0gY3JzUGF0aDogc3RyaW5nLCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBjcnMgZmlsZXMgZm9sZGVyXG4gKiAtIG91dHB1dERpcjogc3RyaW5nLCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvdXRwdXQgZm9sZGVyIHdoZXJlIHRoZSByZW5kZXJlZFxuICogICBjdXN0b20gcmVzb3VyY2UgZmlsZXMgd2lsbCBiZSBwdXRcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm90aGluZy5cbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5SZW5kZXJlcihcbiAgZ2xvYmFsc1BhdGg6IHN0cmluZyxcbiAgaW5pdGlhbGl6ZXJzUGF0aDogc3RyaW5nLFxuICBjbGFpbXNQYXRoOiBzdHJpbmcsXG4gIGNyc1BhdGg6IHN0cmluZyxcbiAgY2xhaW1zRGVmYXVsdHM6IHN0cmluZyxcbiAgb3V0cHV0Q2F0YWxvZ0Rpcjogc3RyaW5nLFxuICBvdXRwdXRDckRpcjogc3RyaW5nLFxuICByZW5hbWVzRW5hYmxlZDogYm9vbGVhbixcbiAgcHJvdmlkZXI6IEFsbG93ZWRQcm92aWRlcnMsXG4gIGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdID0gW10sXG4pIHtcblxuICBjb25maWd1cmVQcm92aWRlcihwcm92aWRlcilcbiAgc2V0UGF0aChcImluaXRpYWxpemVyc1wiLCBpbml0aWFsaXplcnNQYXRoKVxuICBzZXRQYXRoKFwiY3JzXCIsIGNyc1BhdGgpXG4gIHNldFBhdGgoXCJnbG9iYWxzXCIsIGdsb2JhbHNQYXRoKVxuICBzZXRQYXRoKFwiY2xhaW1zXCIsIGNsYWltc1BhdGgpXG4gIHNldFBhdGgoXCJjbGFpbXNEZWZhdWx0c1wiLCBjbGFpbXNEZWZhdWx0cylcbiAgc2V0UmVuYW1lc0VuYWJsZWQocmVuYW1lc0VuYWJsZWQpXG4gIHNldEV4Y2x1ZGVkUGF0aHMoZXhjbHVkZWRQYXRocylcblxuICBjb25zdCBjYXRhbG9nQXBwID0gbmV3IEFwcCh7XG4gICAgb3V0ZGlyOiBvdXRwdXRDYXRhbG9nRGlyLFxuICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcbiAgICB5YW1sT3V0cHV0VHlwZTogWWFtbE91dHB1dFR5cGUuRklMRV9QRVJfUkVTT1VSQ0UsXG4gIH0pXG5cbiAgY29uc3QgZmlyZXN0YXJ0ckFwcCA9IG5ldyBBcHAoe1xuICAgIG91dGRpcjogb3V0cHV0Q3JEaXIsXG4gICAgb3V0cHV0RmlsZUV4dGVuc2lvbjogXCIueWFtbFwiLFxuICAgIHlhbWxPdXRwdXRUeXBlOiBZYW1sT3V0cHV0VHlwZS5GSUxFX1BFUl9SRVNPVVJDRSxcbiAgfSlcblxuICBhd2FpdCByZW5kZXIoY2F0YWxvZ0FwcCwgZmlyZXN0YXJ0ckFwcCk7XG5cbiAgY2F0YWxvZ0FwcC5zeW50aCgpXG4gIGZpcmVzdGFydHJBcHAuc3ludGgoKVxufVxuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBDbGFpbUNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9naXRodWIvZ3JvdXBDbGFpbUNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFnRTtBQUNoRSxvRUFFeUM7QUFHekMsbURBQW9EO0FBRXBELGlDQUF5QztBQUV6QyxNQUFhLGdCQUFpQixTQUFRLHNCQUFlO0lBRW5ELFFBQVE7UUFFTixNQUFNLEtBQUssR0FBcUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxNQUFNLFlBQVksR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRELE1BQU0sYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUVoQyxLQUFLLE1BQU0sZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRTtZQUVuRCxJQUFJLE1BQVcsQ0FBQztZQUVoQixNQUFNLEdBQUcsSUFBQSxtQ0FBc0IsRUFBQyxlQUFlLENBQUMsQ0FBQztZQUVqRCxNQUFNLElBQUksR0FBRyxJQUFBLDZCQUFlLEVBRTFCLE1BQU0sQ0FBQyxJQUFJLEtBQUssdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUVwRSxNQUFNLENBQUMsSUFBSSxDQUVaLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUVoQixhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUVqQixHQUFHLEVBQUU7b0JBRUgsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUVqQixJQUFJO29CQUVKLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7aUJBRXBFO2FBRUYsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPO1lBRUwsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUUvQyxJQUFJLEVBQUU7Z0JBRUosR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBRS9CLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksUUFBUTtnQkFFbkQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUU5QixPQUFPLEVBQUUsYUFBYTtnQkFFdEIsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRTtnQkFFeEMsMEJBQTBCLEVBQUU7b0JBRTFCLElBQUksRUFBRSx5QkFBeUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFO29CQUVsRixPQUFPLEVBQUU7d0JBRVAsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO3dCQUViLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTt3QkFFakIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO3FCQUVoQjtpQkFFRjthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxzQ0FBcUIsQ0FBQyxHQUFHLENBQUE7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWE7UUFFN0IsT0FBTyxJQUFJLHNDQUFxQixDQUU5QixJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUV2QyxDQUFBO0lBRUgsQ0FBQztDQUVGO0FBeEZELDRDQXdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlc29sdmVTdHJpbmdSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi91dGlscy9jbGFpbVV0aWxzJztcbmltcG9ydCB7XG4gIEZpcmVzdGFydHJHaXRodWJHcm91cCwgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHNcbn0gZnJvbSAnLi4vLi4vLi4vaW1wb3J0cy9maXJlc3RhcnRyLmRldic7XG5pbXBvcnQgeyBJVW5pdGlhbGl6ZWRTdGF0ZUtleSB9IGZyb20gJy4uLy4uL2NsYWltcy9iYXNlJztcbmltcG9ydCB7IElHaXRodWJUZWFtQ2xhaW0gfSBmcm9tICcuLi8uLi9jbGFpbXMvZ2l0aHViL2dyb3VwJztcbmltcG9ydCB7IHJlc29sdmVDbGFpbVJlZiB9IGZyb20gJy4uLy4uL3JlZnJlc29sdmVyJztcbmltcG9ydCB7IEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBCYXNlR2l0aHViQ2hhcnQgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY2xhc3MgR2l0aHViR3JvdXBDaGFydCBleHRlbmRzIEJhc2VHaXRodWJDaGFydCB7XG5cbiAgdGVtcGxhdGUoKTogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgfCBJVW5pdGlhbGl6ZWRTdGF0ZUtleSB7XG5cbiAgICBjb25zdCBjbGFpbTogSUdpdGh1YlRlYW1DbGFpbSA9IHRoaXMuZ2V0KFwiY2xhaW1cIik7XG5cbiAgICBjb25zdCBmaXJlc3RhcnRySWQ6IHN0cmluZyA9IHRoaXMuZ2V0KFwiZmlyZXN0YXJ0cklkXCIpO1xuXG4gICAgY29uc3QgbWVtYmVyUmVmTGlzdDogYW55W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgbWVtYmVyU3RyaW5nUmVmIG9mIChjbGFpbS5tZW1iZXJzIHx8IFtdKSkge1xuXG4gICAgICBsZXQgbWVtYmVyOiBhbnk7XG5cbiAgICAgIG1lbWJlciA9IHJlc29sdmVTdHJpbmdSZWZlcmVuY2UobWVtYmVyU3RyaW5nUmVmKTtcblxuICAgICAgY29uc3QgbmFtZSA9IHJlc29sdmVDbGFpbVJlZihcblxuICAgICAgICBtZW1iZXIua2luZCA9PT0gXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIiA/IFwiR3JvdXBDbGFpbVwiIDogXCJVc2VyQ2xhaW1cIixcblxuICAgICAgICBtZW1iZXIubmFtZVxuXG4gICAgICApLm1ldGFkYXRhLm5hbWU7XG5cbiAgICAgIG1lbWJlclJlZkxpc3QucHVzaCh7XG5cbiAgICAgICAgcmVmOiB7XG5cbiAgICAgICAgICBraW5kOiBtZW1iZXIua2luZCxcblxuICAgICAgICAgIG5hbWUsXG5cbiAgICAgICAgICBuZWVkc1NlY3JldDogbWVtYmVyLmtpbmQgPT09IFwiRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXCIgPyB0cnVlIDogZmFsc2UsXG5cbiAgICAgICAgfVxuXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICBtZXRhZGF0YTogeyBuYW1lOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm5hbWUgfSxcblxuICAgICAgc3BlYzoge1xuXG4gICAgICAgIG9yZzogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmcsXG5cbiAgICAgICAgcHJpdmFjeTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5wcml2YWN5IHx8ICdjbG9zZWQnLFxuXG4gICAgICAgIGRlc2NyaXB0aW9uOiBjbGFpbS5kZXNjcmlwdGlvbixcblxuICAgICAgICBtZW1iZXJzOiBtZW1iZXJSZWZMaXN0LFxuXG4gICAgICAgIGZpcmVzdGFydHI6IHsgdGZTdGF0ZUtleTogZmlyZXN0YXJ0cklkIH0sXG5cbiAgICAgICAgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY6IHtcblxuICAgICAgICAgIG5hbWU6IGBmaXJlc3RhcnRyZ2l0aHViZ3JvdXAtJHtjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm5hbWV9LW91dHB1dHNgLnRvTG93ZXJDYXNlKCksXG5cbiAgICAgICAgICBvdXRwdXRzOiBbXG5cbiAgICAgICAgICAgIHsga2V5OiBcImlkXCIgfSxcblxuICAgICAgICAgICAgeyBrZXk6IFwibm9kZUlkXCIgfSxcblxuICAgICAgICAgICAgeyBrZXk6IFwic2x1Z1wiIH1cblxuICAgICAgICAgIF1cblxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGd2aygpOiBHcm91cFZlcnNpb25LaW5kIHtcbiAgICByZXR1cm4gRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwLkdWS1xuICB9XG5cbiAgaW5zdGFuY2VBcGlPYmplY3QodGVtcGxhdGU6IGFueSk6IEZpcmVzdGFydHJHaXRodWJHcm91cCB7XG5cbiAgICByZXR1cm4gbmV3IEZpcmVzdGFydHJHaXRodWJHcm91cChcblxuICAgICAgdGhpcywgdGVtcGxhdGUubWV0YWRhdGEubmFtZSwgdGVtcGxhdGVcblxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xhaW1zL3ZpcnR1YWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsTUFBYyxrQkFBa0I7SUFFNUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUEwQixFQUFFLFNBQWMsRUFBRTtRQUVyRCxNQUFNLEVBQUMsR0FBRyxFQUFDLEdBQVEsTUFBTSxDQUFDO1FBRTFCLE1BQU0sVUFBVSxHQUFnQjtZQUU1QixJQUFJLEVBQUUsWUFBWTtZQUVsQixPQUFPLEVBQUUsS0FBSztZQUVkLFFBQVEsRUFBRSxFQUFFO1lBRVosSUFBSSxFQUFFLEdBQUcsR0FBRyxNQUFNO1lBRWxCLFdBQVcsRUFBRSx1Q0FBdUM7WUFFcEQsSUFBSSxFQUFFLGVBQWU7WUFFckIsT0FBTyxFQUFFO2dCQUVMLFdBQVcsRUFBRSxnQkFBZ0I7Z0JBRTdCLEtBQUssRUFBRSwrQkFBK0I7Z0JBRXRDLE9BQU8sRUFBRSxtREFBbUQ7YUFFL0Q7WUFFRCxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFFekMsU0FBUyxFQUFFO2dCQUVYLE1BQU0sRUFBRTtvQkFFSixJQUFJLEVBQUUsR0FBRyxHQUFHLE1BQU07b0JBRWxCLE9BQU8sRUFBRSxRQUFRO29CQUVqQixHQUFHO2lCQUVOO2FBQ0E7U0FFSixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFFdEIsQ0FBQztJQUdELGFBQWEsQ0FBQyxZQUEwQjtRQUVwQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZ0MsRUFBQyxFQUFFO1lBRTFFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFBO1FBRXJELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUVmLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1lBQy9CLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1lBRS9CLElBQUcsVUFBVSxHQUFHLFVBQVUsRUFBQztnQkFDdkIsT0FBTyxDQUFDLENBQUE7YUFDWDtZQUVELElBQUcsVUFBVSxHQUFHLFVBQVUsRUFBQztnQkFDdkIsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUNaO1lBRUQsT0FBTyxDQUFDLENBQUE7UUFFVixDQUFDLENBQUMsQ0FBQyxHQUFHLENBRUYsQ0FBQyxlQUFnQyxFQUFDLEVBQUU7WUFFaEMsT0FBTyxRQUFRLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFL0MsQ0FBQyxDQUVKLENBQUE7SUFFTCxDQUFDO0NBQ0o7QUFwRkQsZ0RBb0ZDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBSZW5kZXJDbGFpbURhdGEsIFJlbmRlckNsYWltcyB9IGZyb20gXCIuLi8uLi9yZW5kZXJlclwiO1xuaW1wb3J0IHsgSUNsYWltIH0gZnJvbSBcIi4uL2Jhc2VcIjtcbmltcG9ydCB7IElHcm91cENsYWltIH0gZnJvbSBcIi4uL2Jhc2UvZ3JvdXBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJVmlydHVhbENsYWltICB7XG5cbiAgICBleHBhbmQocmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXMsIGNvbmZpZz86IGFueSk6IFByb21pc2U8SUNsYWltPjtcbn1cblxuXG5leHBvcnQgY2xhc3MgIEZpcmVzdGFydHJBbGxDbGFpbSAgaW1wbGVtZW50cyBJVmlydHVhbENsYWltIHtcblxuICAgIGFzeW5jIGV4cGFuZChyZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcywgY29uZmlnOiBhbnkgPSB7fSk6IFByb21pc2U8SUNsYWltPiB7XG5cbiAgICAgICAgY29uc3Qge29yZ306IGFueSA9IGNvbmZpZztcblxuICAgICAgICBjb25zdCBncm91cENsYWltOiBJR3JvdXBDbGFpbSA9IHtcblxuICAgICAgICAgICAga2luZDogXCJHcm91cENsYWltXCIsXG5cbiAgICAgICAgICAgIHZlcnNpb246IFwiMS4wXCIsXG5cbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcblxuICAgICAgICAgICAgbmFtZTogYCR7b3JnfS1hbGxgLFxuXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaXJlc3RhcnRyIGdyb3VwIHdpdGggYWxsIG9yZyBtZW1iZXJzXCIsXG5cbiAgICAgICAgICAgIHR5cGU6IFwiYnVzaW5lc3MtdW5pdFwiLFxuXG4gICAgICAgICAgICBwcm9maWxlOiB7XG5cbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogXCJmaXJlc3RhcnRyLWFsbFwiLFxuXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiZmlyZXN0YXJ0ci1hbGxAZmlyZXN0YXJ0ci5kZXZcIixcblxuICAgICAgICAgICAgICAgIHBpY3R1cmU6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9ncm91cHMvYnUtaW5mcmFzdHJ1Y3R1cmUuanBlZ1wiXG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1lbWJlcnM6IHRoaXMuZXhwYW5kTWVtYmVycyhyZW5kZXJDbGFpbXMpLFxuXG4gICAgICAgICAgICBwcm92aWRlcnM6IHtcblxuICAgICAgICAgICAgZ2l0aHViOiB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiBgJHtvcmd9LWFsbGAsXG5cbiAgICAgICAgICAgICAgICBwcml2YWN5OiBcImNsb3NlZFwiLFxuXG4gICAgICAgICAgICAgICAgb3JnXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBncm91cENsYWltO1xuXG4gICAgfVxuXG5cbiAgICBleHBhbmRNZW1iZXJzKHJlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zKTogc3RyaW5nW10ge1xuXG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJlbmRlckNsYWltcykuZmlsdGVyKChyZW5kZXJDbGFpbURhdGE6IFJlbmRlckNsYWltRGF0YSk9PiB7XG5cbiAgICAgICAgICAgIHJldHVybiByZW5kZXJDbGFpbURhdGEuY2xhaW0ua2luZCA9PT0gXCJVc2VyQ2xhaW1cIlxuXG4gICAgICAgIH0pLnNvcnQoKGEsIGIpID0+IHtcblxuICAgICAgICAgIGNvbnN0IGNsYWltQU5hbWUgPSBhLmNsYWltLm5hbWVcbiAgICAgICAgICBjb25zdCBjbGFpbUJOYW1lID0gYi5jbGFpbS5uYW1lXG5cbiAgICAgICAgICBpZihjbGFpbUFOYW1lID4gY2xhaW1CTmFtZSl7XG4gICAgICAgICAgICAgIHJldHVybiAxXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYoY2xhaW1BTmFtZSA8IGNsYWltQk5hbWUpe1xuICAgICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gMFxuXG4gICAgICAgIH0pLm1hcChcblxuICAgICAgICAgICAgKHJlbmRlckNsYWltRGF0YTogUmVuZGVyQ2xhaW1EYXRhKT0+IHtcblxuICAgICAgICAgICAgICAgIHJldHVybiBgdXNlcjoke3JlbmRlckNsYWltRGF0YS5jbGFpbS5uYW1lfWBcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIClcblxuICAgIH1cbn1cbiJdfQ==
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__(38555);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcGFyZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBNEM7QUFDNUMsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUNoQywrREFBaUQ7QUFDakQsbUNBQStFO0FBQy9FLHNDQUFvQztBQUNwQywwQ0FBcUM7QUFDckMsZ0RBQXFEO0FBMEJyRCxNQUFNLHNCQUFzQixHQUFXLGlDQUFpQyxDQUFDO0FBQ3pFLE1BQU0sb0JBQW9CLEdBQVcsK0JBQStCLENBQUM7QUFJckU7Ozs7O0tBS0s7QUFDRSxLQUFLLFVBQVUsdUJBQXVCLENBRXpDLGlCQUF5QixFQUV6QixlQUF1QixFQUV2Qix5QkFBaUM7SUFJakM7OztPQUdHO0lBQ0gsSUFBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUV6QyxFQUFFLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FFdEM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSx1QkFBdUIsR0FBOEIsRUFBRSxDQUFBO0lBRTdEOzs7OztPQUtHO0lBQ0gsTUFBTSxpQkFBaUIsR0FBc0IsRUFBRSxDQUFBO0lBRS9DLG1DQUFtQztJQUNuQyxNQUFNLHFCQUFxQixHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWxHLHFEQUFxRDtJQUNyRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTNELHlDQUF5QztJQUN6QyxJQUFBLGdCQUFPLEVBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFckMseUJBQXlCO0lBQ3pCLElBQUEsa0NBQTBCLEdBQUUsQ0FBQztJQUU3QixNQUFNLHVCQUF1QixHQUFHLElBQUksV0FBRyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUIsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixjQUFjLEVBQUUsc0JBQWMsQ0FBQyxpQkFBaUI7S0FDbkQsQ0FBQyxDQUFBO0lBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLFdBQUcsQ0FBQztRQUNqQyxNQUFNLEVBQUUsZUFBZTtRQUN2QixtQkFBbUIsRUFBRSxPQUFPO1FBQzVCLGNBQWMsRUFBRSxzQkFBYyxDQUFDLGlCQUFpQjtLQUNuRCxDQUFDLENBQUE7SUFFRix5QkFBeUI7SUFDekIsSUFBSSxvQkFBb0IsR0FBUSxNQUFNLElBQUEsaUJBQU0sRUFBQyxvQkFBb0IsRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO0lBRTNGLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWhDLElBQUEsaUNBQW1CLEdBQUUsQ0FBQztJQUV0QiwwQ0FBMEM7SUFDMUMsSUFBQSxnQkFBTyxFQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUVsQyxNQUFNLElBQUksR0FBRyxJQUFJLFdBQUcsQ0FBQztRQUNqQixNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLG1CQUFtQixFQUFFLE9BQU87UUFDNUIsY0FBYyxFQUFFLHNCQUFjLENBQUMsaUJBQWlCO0tBQ25ELENBQUMsQ0FBQTtJQUNGLHVCQUF1QjtJQUN2QixNQUFNLGtCQUFrQixHQUFRLE1BQU0sSUFBQSxpQkFBTSxFQUFDLElBQUksV0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFN0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWIsa0RBQWtEO0lBQ2xELEtBQUksTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFDO1FBRS9DLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUUzQyxtREFBbUQ7UUFDbkQsSUFBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUV2QixzQ0FBc0M7WUFDdEMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUU1QixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFFekIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBRTFCLENBQUE7WUFFRCxJQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUM7Z0JBRXJCLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0NBQXdCLEVBQ3pDLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsSUFBSSxDQUNQLENBQUE7Z0JBRUQsdUJBQXVCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFBO2dCQUUxRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRztvQkFFckIsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPO29CQUU5QixNQUFNLEVBQUUsVUFBVTtpQkFDckIsQ0FBQTthQUVKO1NBRUo7YUFBTTtZQUVIOzs7ZUFHRztZQUNILE1BQU0sWUFBWSxHQUFHLElBQUEsZ0NBQXdCLEVBQ3pDLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsSUFBSSxDQUNQLENBQUE7WUFFRCx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUE7WUFFMUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUc7Z0JBRXJCLE9BQU8sRUFBRSxFQUFFO2dCQUVYLE1BQU0sRUFBRSxpQkFBaUI7YUFDNUIsQ0FBQTtTQUVKO0tBQ0o7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUM7UUFFN0MsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRXpDLHlEQUF5RDtRQUN6RCxJQUFHLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFFMUIsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQ0FBd0IsRUFDekMsU0FBUyxFQUNULHFCQUFxQixFQUNyQixJQUFJLENBQ1AsQ0FBQTtZQUVELHVCQUF1QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQTtZQUUxRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRztnQkFFckIsT0FBTyxFQUFFLEVBQUU7Z0JBRVgsTUFBTSxFQUFFLGFBQWE7YUFFeEIsQ0FBQTtTQUNKO0tBRUo7SUFFRCxPQUFPO1FBRUgsS0FBSyxFQUFFLHVCQUF1QjtRQUU5QixnQkFBZ0IsRUFBRSxpQkFBaUI7S0FDdEMsQ0FBQTtBQUNMLENBQUM7QUFoTEQsMERBZ0xDO0FBRUQ7Ozs7S0FJSztBQUNMLFNBQVMsVUFBVSxDQUFDLElBQVMsRUFBRSxJQUFTO0lBRXBDLElBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFDO1FBRXZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7S0FFN0U7SUFFRCxNQUFNLGFBQWEsR0FBRyxhQUFhO1NBRWxDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBRW5CLE1BQU07SUFFSDs7OztPQUlHO0lBQ0gsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUNWLEVBQUUsQ0FBQyxJQUFJLEtBQUssNkJBQTZCO1FBQ3pDLEVBQUUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCO1FBQzVCLEVBQUUsQ0FBQyxJQUFJLEtBQUssdUNBQXVDLENBRXhELENBQUE7SUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQTtBQUUxRSxDQUFDO0FBR0QsU0FBZ0IsZ0NBQWdDLENBQUMsS0FBZ0MsRUFBRSxJQUFZO0lBRTNGLEVBQUUsQ0FBQyxhQUFhLENBRVosSUFBSSxFQUVKLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FFakMsQ0FBQTtBQUVMLENBQUM7QUFWRCw0RUFVQztBQUdNLEtBQUssVUFBVSxXQUFXLENBQzdCLGlCQUF5QixFQUN6QixlQUF1QixFQUN2QixrQkFBMEIsRUFDMUIseUJBQWlDLEVBQ2pDLHdCQUFnQztJQUloQyxJQUFBLGdCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUU5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixDQUV4QyxpQkFBaUIsRUFFakIsZUFBZSxFQUVmLHlCQUF5QixDQUM1QixDQUFDO0lBRUYsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBRTdFLENBQUM7QUF0QkQsa0NBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwLCBZYW1sT3V0cHV0VHlwZSB9IGZyb20gXCJjZGs4c1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gXCJqcy15YW1sXCI7XG5pbXBvcnQgKiBhcyBmYXN0SnNvblBhdGNoICBmcm9tIFwiZmFzdC1qc29uLXBhdGNoXCJcbmltcG9ydCB7IGNvbmZpZ3VyZVBhdGhzRm9yUmVuZGVyaW5nLCBnZXRBZmZlY3RlZFdldFJlcG9zaXRvcnkgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgc2V0UGF0aCB9IGZyb20gXCIuLi9jb25maWdcIjtcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuLi9yZW5kZXJlclwiO1xuaW1wb3J0IHsgZW1wdHlSZW5kZXJlZENsYWltcyB9IGZyb20gXCIuLi9yZWZyZXNvbHZlclwiO1xuLy8gaW1wb3J0IGNvbW1vbiBmcm9tIFwiY2F0YWxvZ19jb21tb25cIjtcbi8vIGltcG9ydCB7IGlzQ2F0YWxvZ0VudGl0eSB9IGZyb20gXCIuLi92YWxpZGF0aW9ucy9yZWZlcmVuY2VzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgd2l0aCB0aGUgYWZmZWN0ZWQgd2V0IHJlcG9zaXRvcmllc1xuICovXG50eXBlIEFmZmVjdGVkUmVzb3VyY2UgPSB7XG5cbiAgICAvLyBDaGFuZ2VzIGluIHRoZSByZXNvdXJjZSB3aXRoIHRoZSBmb3JtYXQgb2YgZmFzdC1qc29uLXBhdGNoXG4gICAgY2hhbmdlczogZmFzdEpzb25QYXRjaC5PcGVyYXRpb25bXSxcblxuICAgIC8vIFRoZSByZWFzb24gd2h5IHRoZSByZXNvdXJjZSBpcyBhZmZlY3RlZFxuICAgIHJlYXNvbjogXCJNT0RJRklFRFwiIHwgXCJERUxFVEVEX0ZST01fUFJcIiAgfCBcIkFEREVEX1RPX1BSXCJcblxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPYmplY3Qgd2l0aCB0aGUgYWZmZWN0ZWQgd2V0IHJlcG9zaXRvcmllc1xuICovXG50eXBlIEFmZmVjdGVkUmVzb3VyY2VzID0ge1xuXG4gICAgW2tleTogc3RyaW5nXTogQWZmZWN0ZWRSZXNvdXJjZVxuXG59XG5cbmNvbnN0IE1BSU5fQlJBTkNIX09VVFBVVF9ESVI6IHN0cmluZyA9IFwiL3RtcC9yZXNvdXJjZXNfZnJvbV9tYWluX2JyYW5jaFwiO1xuY29uc3QgUFJfQlJBTkNIX09VVFBVVF9ESVI6IHN0cmluZyA9IFwiL3RtcC9yZXNvdXJjZXNfZnJvbV9wcl9icmFuY2hcIjtcblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldCB0aGUgYWZmZWN0ZWQgd2V0IHJlcG9zaXRvcmllcyBieSBhIFBSXG4gKiBAcGFyYW0gY2xhaW1QYXRoRnJvbU1haW4gUGF0aCB0byB0aGUgY2xhaW1zIGZyb20gdGhlIG1haW4gYnJhbmNoXG4gKiBAcGFyYW0gY2xhaW1QYXRoRnJvbVBSIFBhdGggdG8gdGhlIGNsYWltcyBmcm9tIHRoZSBQUiBicmFuY2hcbiAqIEBwYXJhbSB3ZXRSZXBvc2l0b3JpZXNDb25maWdQYXRoIFBhdGggdG8gdGhlIHdldCByZXBvc2l0b3JpZXMgY29uZmlnXG4gKiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFmZmVjdGVkUmVwb3NpdG9yaWVzKFxuXG4gICAgY2xhaW1QYXRoRnJvbU1haW46IHN0cmluZyxcblxuICAgIGNsYWltUGF0aEZyb21QUjogc3RyaW5nLFxuXG4gICAgd2V0UmVwb3NpdG9yaWVzQ29uZmlnUGF0aDogc3RyaW5nXG5cbikgOiBQcm9taXNlPHsgcmVwb3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nfSwgY2hhbmdlZFJlc291cmNlczogQWZmZWN0ZWRSZXNvdXJjZXMgfT4ge1xuXG4gICAgLypcbiAgICAgKiBXZSBuZWVkIHRoaXMgZm9sZGVyIHRvIGV4aXN0LCBzbyB3ZSBjcmVhdGUgaXQgYmVmb3JlaGFuZFxuICAgICAqXG4gICAgICovXG4gICAgaWYoIWZzLmV4aXN0c1N5bmMoTUFJTl9CUkFOQ0hfT1VUUFVUX0RJUikpIHtcblxuICAgICAgZnMubWtkaXJTeW5jKE1BSU5fQlJBTkNIX09VVFBVVF9ESVIpO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHdpdGggdGhlIGFmZmVjdGVkIHdldCByZXBvc2l0b3JpZXNcbiAgICAgKiBUaGlzIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgdG8gdHJpZ2dlclxuICAgICAqIHRoZSBwaXBlbGluZXMgb2YgdGhlIGFmZmVjdGVkIHdldCByZXBvc2l0b3JpZXNcbiAgICAgKi9cbiAgICBjb25zdCBhZmZlY3RlZFdldFJlcG9zaXRvcmllczogIHsgW2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3Qgd2l0aCB0aGUgYWZmZWN0ZWQgcmVzb3VyY2VzXG4gICAgICogVGhpcyB3aWxsIGJlIHJldHVybmVkIGZvciBhIHN1bW1hcnkgb2YgdGhlIGNoYW5nZXMsXG4gICAgICogYW5kIHRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBzZWUgdGhlIGNoYW5nZXMgaW4gdGhlXG4gICAgICogcGlwZWxpbmUgbG9ncy5cbiAgICAgKi9cbiAgICBjb25zdCBhZmZlY3RlZFJlc291cmNlczogQWZmZWN0ZWRSZXNvdXJjZXMgPSB7fVxuXG4gICAgLy8gTG9hZCB0aGUgd2V0IHJlcG9zaXRvcmllcyBjb25maWdcbiAgICBjb25zdCB3ZXRSZXBvc2l0b3JpZXNDb25maWc6IGFueSA9IHlhbWwubG9hZChmcy5yZWFkRmlsZVN5bmMod2V0UmVwb3NpdG9yaWVzQ29uZmlnUGF0aCwgXCJ1dGYtOFwiKSk7XG5cbiAgICAvLyBHZXQgdGhlIHByb3ZpZGVycyBmcm9tIHRoZSB3ZXQgcmVwb3NpdG9yaWVzIGNvbmZpZ1xuICAgIGNvbnN0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKHdldFJlcG9zaXRvcmllc0NvbmZpZy5zdGF0ZXMpXG5cbiAgICAvLyBTZXQgdGhlIGNsYWltcyBwYXRoIHRvIHRoZSBtYWluIGJyYW5jaFxuICAgIHNldFBhdGgoXCJjbGFpbXNcIiwgY2xhaW1QYXRoRnJvbU1haW4pO1xuXG4gICAgLy8gQ29uZmlndXJlIHRoZSByZW5kZXJlclxuICAgIGNvbmZpZ3VyZVBhdGhzRm9yUmVuZGVyaW5nKCk7XG5cbiAgICBjb25zdCBtYWluQnJhbmNoRmlyZXN0YXJ0ckFwcCA9IG5ldyBBcHAoe1xuICAgICAgICBvdXRkaXI6IE1BSU5fQlJBTkNIX09VVFBVVF9ESVIsXG4gICAgICAgIG91dHB1dEZpbGVFeHRlbnNpb246IFwiLnlhbWxcIixcbiAgICAgICAgeWFtbE91dHB1dFR5cGU6IFlhbWxPdXRwdXRUeXBlLkZJTEVfUEVSX1JFU09VUkNFLFxuICAgIH0pXG5cbiAgICBjb25zdCBtYWluQnJhbmNoQ2F0YWxvZ0FwcCA9IG5ldyBBcHAoe1xuICAgICAgICBvdXRkaXI6IFwiL3RtcC8uY2F0YWxvZ1wiLFxuICAgICAgICBvdXRwdXRGaWxlRXh0ZW5zaW9uOiBcIi55YW1sXCIsXG4gICAgICAgIHlhbWxPdXRwdXRUeXBlOiBZYW1sT3V0cHV0VHlwZS5GSUxFX1BFUl9SRVNPVVJDRSxcbiAgICB9KVxuXG4gICAgLy8gUmVuZGVyIHRoZSBtYWluIGJyYW5jaFxuICAgIGxldCByZW5kZXJGcm9tTWFpbkJyYW5jaDogYW55ID0gYXdhaXQgcmVuZGVyKG1haW5CcmFuY2hDYXRhbG9nQXBwLCBtYWluQnJhbmNoRmlyZXN0YXJ0ckFwcClcblxuICAgIG1haW5CcmFuY2hGaXJlc3RhcnRyQXBwLnN5bnRoKCk7XG5cbiAgICBlbXB0eVJlbmRlcmVkQ2xhaW1zKCk7XG5cbiAgICAvLyBDaGFuZ2UgdGhlIGNsYWltcyBwYXRoIHRvIHRoZSBQUiBicmFuY2hcbiAgICBzZXRQYXRoKFwiY2xhaW1zXCIsIGNsYWltUGF0aEZyb21QUilcblxuICAgIGNvbnN0IGFwcDIgPSBuZXcgQXBwKHtcbiAgICAgICAgb3V0ZGlyOiBQUl9CUkFOQ0hfT1VUUFVUX0RJUixcbiAgICAgICAgb3V0cHV0RmlsZUV4dGVuc2lvbjogXCIueWFtbFwiLFxuICAgICAgICB5YW1sT3V0cHV0VHlwZTogWWFtbE91dHB1dFR5cGUuRklMRV9QRVJfUkVTT1VSQ0UsXG4gICAgfSlcbiAgICAvLyBSZW5kZXIgdGhlIFBSIGJyYW5jaFxuICAgIGNvbnN0IHJlbmRlckZyb21QUkJyYW5jaDogYW55ID0gYXdhaXQgcmVuZGVyKG5ldyBBcHAoKSwgYXBwMilcblxuICAgIGFwcDIuc3ludGgoKTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVzb3VyY2VzIGZyb20gdGhlIG1haW4gYnJhbmNoXG4gICAgZm9yKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZW5kZXJGcm9tTWFpbkJyYW5jaCkpe1xuXG4gICAgICAgIGNvbnN0IGtpbmQgPSByZW5kZXJGcm9tTWFpbkJyYW5jaFtrZXldLmtpbmRcblxuICAgICAgICAvL0NoZWNrIGlmIHRoZSByZXNvdXJjZSBpcyBwcmVzZW50IGluIHRoZSBQUiBicmFuY2hcbiAgICAgICAgaWYocmVuZGVyRnJvbVBSQnJhbmNoW2tleV0pe1xuXG4gICAgICAgICAgICAvL0NoZWNrIGlmIHRoZSByZXNvdXJjZXMgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgY29uc3QgY29tcGFyZVJlc3VsdCA9IGNvbXBhcmVDUnMoXG5cbiAgICAgICAgICAgICAgICByZW5kZXJGcm9tTWFpbkJyYW5jaFtrZXldLFxuXG4gICAgICAgICAgICAgICAgcmVuZGVyRnJvbVBSQnJhbmNoW2tleV1cblxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZihjb21wYXJlUmVzdWx0LmNoYW5nZWQpe1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWZmZWN0ZWRSZXBvID0gZ2V0QWZmZWN0ZWRXZXRSZXBvc2l0b3J5KFxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAga2luZFxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIGFmZmVjdGVkV2V0UmVwb3NpdG9yaWVzW2FmZmVjdGVkUmVwby5yZXBvXSA9IGFmZmVjdGVkUmVwby53b3JrZmxvd3Mubm90aWZ5XG5cbiAgICAgICAgICAgICAgICBhZmZlY3RlZFJlc291cmNlc1trZXldID0ge1xuXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZXM6IGNvbXBhcmVSZXN1bHQuY2hhbmdlcyxcblxuICAgICAgICAgICAgICAgICAgICByZWFzb246IFwiTU9ESUZJRURcIlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSWYgdGhlIHJlc291cmNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBQUiBicmFuY2gsXG4gICAgICAgICAgICAgKiBpdCBtZWFucyB0aGF0IGl0IGhhcyBiZWVuIGRlbGV0ZWQsIHNvIGl0IGlzIGFmZmVjdGVkXG4gICAgICAgICAgICAqKi9cbiAgICAgICAgICAgIGNvbnN0IGFmZmVjdGVkUmVwbyA9IGdldEFmZmVjdGVkV2V0UmVwb3NpdG9yeShcbiAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgd2V0UmVwb3NpdG9yaWVzQ29uZmlnLFxuICAgICAgICAgICAgICAgIGtpbmRcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWZmZWN0ZWRXZXRSZXBvc2l0b3JpZXNbYWZmZWN0ZWRSZXBvLnJlcG9dID0gYWZmZWN0ZWRSZXBvLndvcmtmbG93cy5ub3RpZnlcblxuICAgICAgICAgICAgYWZmZWN0ZWRSZXNvdXJjZXNba2V5XSA9IHtcblxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IFtdLFxuXG4gICAgICAgICAgICAgICAgcmVhc29uOiBcIkRFTEVURURfRlJPTV9QUlwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGUgb3ZlciB0aGUgcmVzb3VyY2VzIGZyb20gdGhlIFBSIGJyYW5jaCBpblxuICAgICAqIGNhc2UgdGhlcmUgYXJlIHJlc291cmNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgbWFpbiBicmFuY2gsXG4gICAgICogdGhhdCBtZWFucyB0aGF0IHRoZXkgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBQUiBicmFuY2guXG4gICAgICovXG4gICAgZm9yKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZW5kZXJGcm9tUFJCcmFuY2gpKXtcblxuICAgICAgICBjb25zdCBraW5kID0gcmVuZGVyRnJvbVBSQnJhbmNoW2tleV0ua2luZFxuXG4gICAgICAgIC8vQ2hlY2sgaWYgdGhlIHJlc291cmNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBtYWluIGJyYW5jaFxuICAgICAgICBpZighcmVuZGVyRnJvbU1haW5CcmFuY2hba2V5XSl7XG5cbiAgICAgICAgICAgIGNvbnN0IGFmZmVjdGVkUmVwbyA9IGdldEFmZmVjdGVkV2V0UmVwb3NpdG9yeShcbiAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgd2V0UmVwb3NpdG9yaWVzQ29uZmlnLFxuICAgICAgICAgICAgICAgIGtpbmRcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWZmZWN0ZWRXZXRSZXBvc2l0b3JpZXNbYWZmZWN0ZWRSZXBvLnJlcG9dID0gYWZmZWN0ZWRSZXBvLndvcmtmbG93cy5ub3RpZnlcblxuICAgICAgICAgICAgYWZmZWN0ZWRSZXNvdXJjZXNba2V5XSA9IHtcblxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IFtdLFxuXG4gICAgICAgICAgICAgICAgcmVhc29uOiBcIkFEREVEX1RPX1BSXCJcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICAgIHJlcG9zOiBhZmZlY3RlZFdldFJlcG9zaXRvcmllcyxcblxuICAgICAgICBjaGFuZ2VkUmVzb3VyY2VzOiBhZmZlY3RlZFJlc291cmNlc1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ2hlY2sgaWYgdHdvIGNycyBhcmUgZGlmZmVyZW50XG4gKiBAcGFyYW0gY3JWMSBGaXJzdCBjclxuICogQHBhcmFtIGNyVjIgU2Vjb25kIGNyXG4gKiAqL1xuZnVuY3Rpb24gY29tcGFyZUNScyhjclYxOiBhbnksIGNyVjI6IGFueSkgOiB7IGNoYW5nZWQ6IGJvb2xlYW4sIGNoYW5nZXM6IGZhc3RKc29uUGF0Y2guT3BlcmF0aW9uW10gfSB7XG5cbiAgICBpZihjclYxLmtpbmQgIT09IGNyVjIua2luZCl7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLaW5kIG1pc21hdGNoIG9uIGNvbXBhcmU6ICR7Y3JWMS5raW5kfSAhPT0gJHtjclYyLmtpbmR9YClcblxuICAgIH1cblxuICAgIGNvbnN0IGNvbXBhcmVSZXN1bHQgPSBmYXN0SnNvblBhdGNoXG5cbiAgICAuY29tcGFyZShjclYxLCBjclYyKVxuXG4gICAgLmZpbHRlcihcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyBhIGZha2UgcmVuZGVyLCBzbyB3ZSBkb24ndCB3YW50IHRvIGNvbXBhcmVcbiAgICAgICAgICogdGhlIHRmU3RhdGVLZXksIGJlY2F1c2UgaW4gdGhlIGNsYWltcyByZXBvIHdlIGRvbid0XG4gICAgICAgICAqIGhhdmUgdGhlIHByZXZpb3VzIENScy5cbiAgICAgICAgICovXG4gICAgICAgIChvcDogYW55KSA9PlxuICAgICAgICAgIG9wLnBhdGggIT09IFwiL3NwZWMvZmlyZXN0YXJ0ci90ZlN0YXRlS2V5XCIgJiZcbiAgICAgICAgICBvcC5wYXRoICE9PSBcIi9tZXRhZGF0YS9uYW1lXCIgJiZcbiAgICAgICAgICBvcC5wYXRoICE9PSBcIi9zcGVjL3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmL25hbWVcIlxuXG4gICAgKVxuXG4gICAgcmV0dXJuIHsgY2hhbmdlZDogY29tcGFyZVJlc3VsdC5sZW5ndGggIT09IDAsIGNoYW5nZXM6IGNvbXBhcmVSZXN1bHQgfVxuXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlV2V0QWZmZWN0ZWRSZXBvc2l0b3JpZXNGaWxlKHJlcG9zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCBwYXRoOiBzdHJpbmcpIHtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG5cbiAgICAgICAgcGF0aCxcblxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXBvcywgbnVsbCwgNClcblxuICAgIClcblxufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Db21wYXJlcihcbiAgICBjbGFpbVBhdGhGcm9tTWFpbjogc3RyaW5nLFxuICAgIGNsYWltUGF0aEZyb21QUjogc3RyaW5nLFxuICAgIGNsYWltc0RlZmF1bHRzUGF0aDogc3RyaW5nLFxuICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZ1BhdGg6IHN0cmluZyxcbiAgICBwYXRoRm9yQWZmZWN0ZWRSZXBvc0ZpbGU6IHN0cmluZ1xuKSB7XG5cblxuICAgIHNldFBhdGgoXCJjbGFpbXNEZWZhdWx0c1wiLCBjbGFpbXNEZWZhdWx0c1BhdGgpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QWZmZWN0ZWRSZXBvc2l0b3JpZXMoXG5cbiAgICAgICAgY2xhaW1QYXRoRnJvbU1haW4sXG5cbiAgICAgICAgY2xhaW1QYXRoRnJvbVBSLFxuXG4gICAgICAgIHdldFJlcG9zaXRvcmllc0NvbmZpZ1BhdGhcbiAgICApO1xuXG4gICAgd3JpdGVXZXRBZmZlY3RlZFJlcG9zaXRvcmllc0ZpbGUocmVzdWx0LnJlcG9zLCBwYXRoRm9yQWZmZWN0ZWRSZXBvc0ZpbGUpO1xuXG59XG4iXX0=
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
- /***/ 29244:
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub3JtYWxpemVycy9uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQTZEO0FBQzdELGlDQUFxRDtBQUNyRCxvRUFBb0M7QUFDcEMsMENBQTRCO0FBRTVCLE1BQWEsY0FBZSxTQUFRLGlCQUFVO0lBQTlDOztRQUVFLHdCQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFtSy9CLENBQUM7SUFqS0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFZO1FBRTNCLE9BQU8sSUFBSSxDQUFDO0lBRWQsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBVSxFQUFFLFVBQWU7UUFFekMsSUFBSSxjQUFzQixDQUFDO1FBRTNCLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFFdEMsTUFBTSxjQUFjLEdBQVcsSUFBSSxDQUFDLHVCQUF1QixDQUV6RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBRS9CLENBQUM7WUFFRixNQUFNLGdCQUFnQixHQUFHLG1FQUFtRSxDQUFDO1lBRTdGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBRTFDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxDQUFDO2FBRXREO1lBQ0QsT0FBTyxjQUFjLENBQUM7UUFFeEIsQ0FBQyxDQUFDO1FBR0YsT0FBTyxDQUFDO2dCQUVOLFFBQVEsQ0FBQyxFQUFPO29CQUVkLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO2dCQUU3QyxDQUFDO2dCQUVELEtBQUssQ0FBQyxFQUFPOztvQkFFWCxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxNQUFBLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FB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LENBQUMsQ0FBQTtRQUUzQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFekMsT0FBTyxRQUFRLENBQUE7SUFFakIsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFFOUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVoQyxDQUFDO0NBRUY7QUFyS0Qsd0NBcUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUN1c3RvbVJlc291cmNlUGF0Y2gsIGhlbHBlckNUWCB9IGZyb20gXCIuLi9wYXRjaGVzXCI7XG5pbXBvcnQgeyBOb3JtYWxpemVyLCBOb3JtYWxpemVyRXJyb3IgfSBmcm9tIFwiLi9iYXNlXCI7XG5pbXBvcnQgY29tbW9uIGZyb20gXCJjYXRhbG9nX2NvbW1vblwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmV4cG9ydCBjbGFzcyBOYW1lTm9ybWFsaXplciBleHRlbmRzIE5vcm1hbGl6ZXIge1xuXG4gIGFwcGxpY2FibGVQcm92aWRlcnMgPSBbXCJhbGxcIl1cblxuICBhc3luYyBfX3ZhbGlkYXRlKF9zY2hlbWE6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIGFzeW5jIF9fcGF0Y2hlcyhjbGFpbTogYW55LCBwcmV2aW91c0NSOiBhbnkpOiBQcm9taXNlPElDdXN0b21SZXNvdXJjZVBhdGNoW10+IHtcblxuICAgIGxldCBub3JtYWxpemVkTmFtZTogc3RyaW5nO1xuXG4gICAgY29uc3QgZk5vcm1hbGl6ZU5hbWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lOiBzdHJpbmcgPSB0aGlzLm5vcm1hbGl6ZU5hbWVDaGFyYWN0ZXJzKFxuXG4gICAgICAgIHRoaXMubm9ybWFsaXplTmFtZUxlbmd0aChuYW1lKVxuXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpc1ZhbGlkTmFtZVJlZ2V4ID0gL15bYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPyhcXC5bYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPykqJC87XG5cbiAgICAgIGlmICghaXNWYWxpZE5hbWVSZWdleC50ZXN0KG5vcm1hbGl6ZWROYW1lKSkge1xuXG4gICAgICAgIHRocm93IG5ldyBOb3JtYWxpemVyRXJyb3IoYElOVkFMSURfTkFNRTogJyR7bmFtZX0nYCk7XG5cbiAgICAgIH1cbiAgICAgIHJldHVybiBub3JtYWxpemVkTmFtZTtcblxuICAgIH07XG5cblxuICAgIHJldHVybiBbe1xuXG4gICAgICB2YWxpZGF0ZShjcjogYW55KSB7XG5cbiAgICAgICAgcmV0dXJuIGNyLm1ldGFkYXRhLm5hbWUgPT09IG5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICB9LFxuXG4gICAgICBhcHBseShjcjogYW55KSB7XG5cbiAgICAgICAgY3IubWV0YWRhdGEuYW5ub3RhdGlvbnMgPSBjci5tZXRhZGF0YS5hbm5vdGF0aW9ucyA/PyB7fVxuXG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gaGVscGVyQ1RYKHRoaXMpLnByb3ZpZGVyO1xuXG4gICAgICAgIGNvbnN0IGFubm90YXRpb24gPSBjb21tb24uZ2VuZXJpYy5nZXRGaXJlc3RhcnRyQW5ub3RhdGlvbihcImV4dGVybmFsLW5hbWVcIik7XG5cbiAgICAgICAgY29uc3QgcHJvdmlkZXJOYW1lID0gY2xhaW0ucHJvdmlkZXJzW3Byb3ZpZGVyXS5uYW1lO1xuXG4gICAgICAgIGlmIChwcmV2aW91c0NSICYmICFfLmlzRW1wdHkocHJldmlvdXNDUikpIHtcblxuICAgICAgICAgIGNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25dID0gcHJvdmlkZXJOYW1lO1xuXG4gICAgICAgICAgY3IubWV0YWRhdGEubmFtZSA9IHByZXZpb3VzQ1IubWV0YWRhdGEubmFtZTtcblxuICAgICAgICAgIGlmKHByZXZpb3VzQ1Iud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgJiYgIV8uaXNFbXB0eShwcmV2aW91c0NSLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSl7XG5cbiAgICAgICAgICAgIGNyLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmLm5hbWUgPSBwcmV2aW91c0NSLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmLm5hbWU7XG5cbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIHJldHVybiBjcjtcblxuICAgICAgICB9XG5cbiAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBmTm9ybWFsaXplTmFtZShwcm92aWRlck5hbWUpO1xuXG4gICAgICAgIGNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25dID0gcHJvdmlkZXJOYW1lO1xuXG4gICAgICAgIGNyLm1ldGFkYXRhLm5hbWUgPSBub3JtYWxpemVkTmFtZTtcblxuICAgICAgICByZXR1cm4gY3I7XG5cbiAgICAgIH0sXG5cbiAgICAgIGlkZW50aWZ5KCkge1xuXG4gICAgICAgIHJldHVybiBcIm5vcm1hbGl6ZXIvbmFtZVwiO1xuXG4gICAgICB9LFxuXG4gICAgICBhcHBsaWNhYmxlKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYXBwbGljYWJsZVByb3ZpZGVyczogW1wiXmNhdGFsb2dcIl1cbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9LCB7XG4gICAgICAgIHZhbGlkYXRlKGNyOiBhbnkpIHtcblxuICAgICAgICAgIHJldHVybiBjci5tZXRhZGF0YS5uYW1lID09PSBub3JtYWxpemVkTmFtZTtcblxuICAgICAgICB9LFxuICAgICAgICBhcHBseShjcjogYW55KSB7XG5cbiAgICAgICAgICBjci5tZXRhZGF0YS5hbm5vdGF0aW9ucyA9IGNyLm1ldGFkYXRhLmFubm90YXRpb25zID8/IHt9XG5cbiAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uID0gXCJ0aXRsZVwiXG5cbiAgICAgICAgICBjb25zdCBwcm92aWRlck5hbWUgPSBjbGFpbS5uYW1lXG5cbiAgICAgICAgICAvLyBJZiBwcm92aWRlciBpcyBjYXRhbG9nLCB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHByZXZpb3VzQ1JcblxuICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gZk5vcm1hbGl6ZU5hbWUocHJvdmlkZXJOYW1lKTtcblxuICAgICAgICAgIGNyLm1ldGFkYXRhLmFubm90YXRpb25zW2Fubm90YXRpb25dID0gcHJvdmlkZXJOYW1lO1xuXG4gICAgICAgICAgY3IubWV0YWRhdGEubmFtZSA9IG5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICAgICAgcmV0dXJuIGNyO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgaWRlbnRpZnkoKSB7XG5cbiAgICAgICAgICByZXR1cm4gXCJub3JtYWxpemVyL25hbWVcIjtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGFwcGxpY2FibGUoKSB7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXBwbGljYWJsZVByb3ZpZGVyczogW1wiY2F0YWxvZ1wiXVxuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcblxuXG5cbiAgfVxuXG4gIG5vcm1hbGl6ZU5hbWVDaGFyYWN0ZXJzKG5hbWU6IHN0cmluZykge1xuXG4gICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IHJlZ2V4ID0gL1teYS16QS1aMC05LV0vZztcblxuICAgIGNvbnN0IHJlZ2V4QmVnaW5zID0gL14tKy9cblxuICAgIGNvbnN0IHJlZ2V4RW5kID0gLy0rJC9cblxuICAgIGxldCByZXBsYWNlZCA9IG5hbWUucmVwbGFjZShyZWdleCwgXCItXCIpO1xuXG4gICAgcmVwbGFjZWQgPSByZXBsYWNlZC5yZXBsYWNlKHJlZ2V4QmVnaW5zLFwiXCIpXG5cbiAgICByZXBsYWNlZCA9IHJlcGxhY2VkLnJlcGxhY2UocmVnZXhFbmQsIFwiXCIpXG5cbiAgICByZXR1cm4gcmVwbGFjZWRcblxuICB9XG5cbiAgbm9ybWFsaXplTmFtZUxlbmd0aChuYW1lOiBzdHJpbmcpIHtcblxuICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCAyMDApO1xuXG4gIH1cblxufVxuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmc0V4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWZzU29ydGVyL3JlZnNFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esb0VBQW9DO0FBRXBDLFNBQWdCLFdBQVcsQ0FBQyxZQUEwQixFQUFFLElBQVk7SUFFaEUsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFBO0lBRXRCLEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFO1FBRTVCLE1BQU0sS0FBSyxHQUFJLFlBQVksQ0FBQyxHQUFxQixDQUFTLENBQUMsS0FBSyxDQUFBO1FBRWhFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUViLFFBQU8sSUFBSSxFQUFFO1lBRVQsS0FBSyxrQkFBa0I7Z0JBRXRCLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFFN0QsTUFBTTtZQUVOO2dCQUVJLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUE7U0FHbEQ7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ2pCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNuQyxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUE7S0FDSjtJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQWpDSCxrQ0FpQ0c7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxNQUFXLEVBQUUsYUFBb0IsRUFBRTtJQUVyRSxNQUFNLEtBQUssR0FBRyx3QkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUE7SUFFcEQsS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7UUFFdEIsUUFBUSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUV4QixLQUFLLFFBQVE7Z0JBQ1gsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO1lBRVIsS0FBSyxRQUFRO2dCQUNYLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDL0MsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUE7b0JBQzVCLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQzVCO2dCQUNELE1BQU07U0FFVDtLQUVKO0lBSUQsT0FBTyxVQUFVLENBQUE7QUFFbkIsQ0FBQztBQTNCRCxrREEyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW5kZXJDbGFpbUtleSwgUmVuZGVyQ2xhaW1zIH0gZnJvbSBcIi4uL3JlbmRlcmVyXCI7XG5pbXBvcnQgY29tbW9uIGZyb20gJ2NhdGFsb2dfY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSZWZzKHJlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zLCBraW5kOiBzdHJpbmcpIHtcblxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge31cblxuICAgIGZvciAoY29uc3Qga2V5IGluIHJlbmRlckNsYWltcykge1xuXG4gICAgICAgIGNvbnN0IGNsYWltID0gKHJlbmRlckNsYWltc1trZXkgYXMgUmVuZGVyQ2xhaW1LZXldIGFzIGFueSkuY2xhaW1cbiAgICAgICAgXG4gICAgICAgIGxldCByZWZzID0gW11cblxuICAgICAgICBzd2l0Y2goa2luZCkge1xuXG4gICAgICAgICAgICBjYXNlIFwiVEZXb3Jrc3BhY2VDbGFpbVwiOiAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgcmVmcyA9IGdldFRmV29ya3NwYWNlc1JlZnMoY2xhaW0ucHJvdmlkZXJzLnRlcnJhZm9ybS52YWx1ZXMpXG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyByZWZzIGZvciBraW5kICR7a2luZH1gKVxuICAgICAgICAgICAgXG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdFtjbGFpbS5uYW1lXSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGAke2NsYWltLmtpbmR9LSR7Y2xhaW0ubmFtZX1gLFxuICAgICAgICAgICAgcmVmczogcmVmc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0VGZXb3Jrc3BhY2VzUmVmcyh2YWx1ZXM6IGFueSwgcmVmZXJlbmNlczogYW55W10gPSBbXSl7XG4gIFxuICAgIGNvbnN0IHJlZ2V4ID0gY29tbW9uLnR5cGVzLnJlZ2V4LlRGV29ya3NwYWNlUmVmUmVnZXhcbiBcbiAgICBmb3IgKGxldCBrZXkgaW4gdmFsdWVzKSB7XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlc1trZXldKSB7XG5cbiAgICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgICAgZ2V0VGZXb3Jrc3BhY2VzUmVmcyh2YWx1ZXNba2V5XSwgcmVmZXJlbmNlcyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHZhbHVlc1trZXldLm1hdGNoQWxsKHJlZ2V4KSkge1xuICAgICAgICAgICAgICBjb25zdCBbXywgY2xhaW1OYW1lXSA9IG1hdGNoXG4gICAgICAgICAgICAgIHJlZmVyZW5jZXMucHVzaChjbGFpbU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgfVxuXG4gICAgfVxuICAgIFxuICAgIFxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXNcblxuICB9XG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmc1NvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWZzU29ydGVyL3JlZnNTb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQTZDO0FBRTdDOzs7O0dBSUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxZQUEwQixFQUFFLEtBQWU7SUFFaEYsSUFBSSxNQUFNLEdBQWlCLEVBQUUsQ0FBQTtJQUU3QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUV4QixLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRTtZQUU1QixJQUFJLFlBQVksQ0FBQyxHQUFxQixDQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBRWpFLE1BQU0sQ0FBQyxHQUFxQixDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQXFCLENBQUMsQ0FBQTthQUV0RTtTQUVKO1FBRUQsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtLQUV4QztJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQXRCRCx3REFzQkM7QUFHRCxTQUFTLGdCQUFnQixDQUFDLFlBQTBCLEVBQUUsSUFBVztJQUU3RCxJQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBRXJCLE9BQU8sWUFBWSxDQUFBO0tBRXBCO0lBRUQsTUFBTSxlQUFlLEdBQWlCLEVBQUUsQ0FBQTtJQUV4QyxNQUFNLElBQUksR0FBUSxJQUFBLDJCQUFXLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRWpELE1BQU0sT0FBTyxHQUFVLEVBQUUsQ0FBQztJQUUxQixNQUFNLFFBQVEsR0FBVSxFQUFFLENBQUM7SUFFM0IsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBRTFCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFFMUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUV2RDtLQUVGO0lBRUQsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7UUFFeEIsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBRWpEO0lBRUQsT0FBTyxlQUFlLENBQUE7QUFFeEIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVMsRUFBRSxLQUFVLEVBQUUsVUFBaUIsRUFBRSxFQUFFLFdBQWtCLEVBQUUsRUFBRSxVQUFpQixFQUFFO0lBRXJHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBRWpELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBRXJFO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUVqRCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUVkLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFFNUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRW5DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFFckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLEdBQUcseUJBQXlCLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2lCQUUxRTtnQkFFRCxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFFOUQ7U0FFRjtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUVyQjtBQUVILENBQUM7QUFHRCxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBRS9CLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUU1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVuZGVyQ2xhaW1LZXksIFJlbmRlckNsYWltcyB9IGZyb20gXCIuLi9yZW5kZXJlclwiXG5pbXBvcnQgeyBleHRyYWN0UmVmcyB9IGZyb20gXCIuL3JlZnNFeHRyYWN0b3JcIlxuXG4vKipcbiAqIEBwYXJhbSByZW5kZXJDbGFpbXMgcmVuZGVyQ2xhaW1zIHRvIHNvcnRcbiAqIEBwYXJhbSBraW5kcyBraW5kcyB0byBnZXQgZnJvbSByZW5kZXJDbGFpbXNcbiAqIEByZXR1cm5zIHJlbmRlckNsYWltcyB3aXRoIG9ubHkgdGhlIGtpbmRzIHNwZWNpZmllZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFJlbmRlckNsYWltc0J5S2luZChyZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcywga2luZHM6IHN0cmluZ1tdKTogUmVuZGVyQ2xhaW1zIHtcblxuICBsZXQgcmVzdWx0OiBSZW5kZXJDbGFpbXMgPSB7fVxuXG4gIGZvciAoY29uc3Qga2luZCBvZiBraW5kcykge1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmVuZGVyQ2xhaW1zKSB7XG5cbiAgICAgICAgaWYoKHJlbmRlckNsYWltc1trZXkgYXMgUmVuZGVyQ2xhaW1LZXldIGFzIGFueSkuY2xhaW0ua2luZCA9PT0ga2luZCkge1xuXG4gICAgICAgICAgICByZXN1bHRba2V5IGFzIFJlbmRlckNsYWltS2V5XSA9IHJlbmRlckNsYWltc1trZXkgYXMgUmVuZGVyQ2xhaW1LZXldXG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmVzdWx0ID0gc29ydFNlbGZLaW5kUmVmcyhyZXN1bHQsIGtpbmQpXG5cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcblxufVxuXG5cbmZ1bmN0aW9uIHNvcnRTZWxmS2luZFJlZnMocmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXMsIGtpbmQ6c3RyaW5nKSB7XG4gIFxuICAgIGlmKCFoYXNTZWxmUmVmcyhraW5kKSkge1xuXG4gICAgICByZXR1cm4gcmVuZGVyQ2xhaW1zXG5cbiAgICB9XG5cbiAgICBjb25zdCBuZXdSZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcyA9IHt9XG5cbiAgICBjb25zdCBkYXRhOiBhbnkgPSBleHRyYWN0UmVmcyhyZW5kZXJDbGFpbXMsIGtpbmQpXG5cbiAgICBjb25zdCBvcmRlcmVkOiBhbnlbXSA9IFtdO1xuICAgIFxuICAgIGNvbnN0IHZpc2l0aW5nOiBhbnlbXSA9IFtdO1xuICAgIFxuICAgIGNvbnN0IHZpc2l0ZWQ6IGFueVtdID0gW107XG4gIFxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGRhdGEpKSB7XG4gICAgXG4gICAgICBpZiAoIXZpc2l0ZWQuZmluZChvYmogPT4gb2JqLm5hbWUgPT09IGtleSkpIHtcbiAgICBcbiAgICAgICAgc29ydFJlZnMoZGF0YSwgZGF0YVtrZXldLCBvcmRlcmVkLCB2aXNpdGluZywgdmlzaXRlZCk7XG4gICAgXG4gICAgICB9XG4gICAgICBcbiAgICB9XG4gICAgXG4gICAgZm9yIChjb25zdCBjciBvZiBvcmRlcmVkKSB7XG4gICAgXG4gICAgICBuZXdSZW5kZXJDbGFpbXNbY3IubmFtZV0gPSByZW5kZXJDbGFpbXNbY3IubmFtZV1cbiAgICBcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3UmVuZGVyQ2xhaW1zXG5cbiAgfVxuICBcbiAgZnVuY3Rpb24gc29ydFJlZnMoZGF0YTogYW55LCBjbGFpbTogYW55LCBvcmRlcmVkOiBhbnlbXSA9IFtdLCB2aXNpdGluZzogYW55W10gPSBbXSwgdmlzaXRlZDogYW55W10gPSBbXSkge1xuXG4gICAgaWYgKHZpc2l0aW5nLmZpbmQob2JqID0+IG9iai5uYW1lID09PSBjbGFpbS5uYW1lKSkge1xuICAgIFxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkIGZvciBcIiR7Y2xhaW0ubmFtZX1cImApO1xuICAgIFxuICAgIH1cbiAgXG4gICAgaWYgKCF2aXNpdGVkLmZpbmQob2JqID0+IG9iai5uYW1lID09PSBjbGFpbS5uYW1lKSkge1xuICAgICAgXG4gICAgICB2aXNpdGluZy5wdXNoKGNsYWltKTtcbiAgXG4gICAgICBpZiAoY2xhaW0ucmVmcykge1xuICBcbiAgICAgICAgZm9yIChjb25zdCByZWYgb2YgY2xhaW0ucmVmcykge1xuICAgICAgICAgXG4gICAgICAgICAgY29uc3QgcmVmZXJlbmNlZE9iamVjdCA9IGRhdGFbcmVmXTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoIXJlZmVyZW5jZWRPYmplY3QpIHtcbiAgXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBcIiR7cmVmfVwiIGRvZXMgbm90IGV4aXN0IGZvciBcIiR7Y2xhaW0ubmFtZX1cImApO1xuICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgc29ydFJlZnMoZGF0YSwgcmVmZXJlbmNlZE9iamVjdCwgb3JkZXJlZCwgdmlzaXRpbmcsIHZpc2l0ZWQpO1xuICAgICAgXG4gICAgICAgIH1cbiAgICAgIFxuICAgICAgfVxuICBcbiAgICAgIHZpc2l0ZWQucHVzaCh2aXNpdGluZy5wb3AoKSk7XG4gIFxuICAgICAgb3JkZXJlZC5wdXNoKGNsYWltKTtcbiAgICBcbiAgICB9XG4gIFxuICB9XG5cblxuICBmdW5jdGlvbiBoYXNTZWxmUmVmcyhraW5kOiBzdHJpbmcpe1xuXG4gICAgcmV0dXJuIFtcIlRGV29ya3NwYWNlQ2xhaW1cIl0uaW5jbHVkZXMoa2luZClcblxuICB9XG4iXX0=
235541
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmc1NvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWZzU29ydGVyL3JlZnNTb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQTZDO0FBRTdDOzs7O0dBSUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxZQUEwQixFQUFFLEtBQWU7SUFFaEYsSUFBSSxNQUFNLEdBQWlCLEVBQUUsQ0FBQTtJQUU3QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUV4QixLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRTtZQUU1QixJQUFJLFlBQVksQ0FBQyxHQUFxQixDQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBRWpFLE1BQU0sQ0FBQyxHQUFxQixDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQXFCLENBQUMsQ0FBQTthQUV0RTtTQUVKO1FBRUQsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtLQUN4QztJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQXJCRCx3REFxQkM7QUFHRCxTQUFTLGdCQUFnQixDQUFDLFlBQTBCLEVBQUUsSUFBVztJQUU3RCxJQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBRXJCLE9BQU8sWUFBWSxDQUFBO0tBRXBCO0lBRUQsTUFBTSxlQUFlLEdBQWlCLEVBQUUsQ0FBQTtJQUV4QyxNQUFNLElBQUksR0FBUSxJQUFBLDJCQUFXLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRWpELE1BQU0sT0FBTyxHQUFVLEVBQUUsQ0FBQztJQUUxQixNQUFNLFFBQVEsR0FBVSxFQUFFLENBQUM7SUFFM0IsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBRTFCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFFMUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUV2RDtLQUVGO0lBRUQsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7UUFFeEIsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBRWpEO0lBRUQsT0FBTyxlQUFlLENBQUE7QUFFeEIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVMsRUFBRSxLQUFVLEVBQUUsVUFBaUIsRUFBRSxFQUFFLFdBQWtCLEVBQUUsRUFBRSxVQUFpQixFQUFFO0lBRXJHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBRWpELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBRXJFO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUVqRCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUVkLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFFNUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRW5DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFFckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLEdBQUcseUJBQXlCLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2lCQUUxRTtnQkFFRCxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFFOUQ7U0FFRjtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUVyQjtBQUVILENBQUM7QUFHRCxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBRS9CLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7QUFFMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbmRlckNsYWltS2V5LCBSZW5kZXJDbGFpbXMgfSBmcm9tIFwiLi4vcmVuZGVyZXIvdHlwZXNcIlxuaW1wb3J0IHsgZXh0cmFjdFJlZnMgfSBmcm9tIFwiLi9yZWZzRXh0cmFjdG9yXCJcblxuLyoqXG4gKiBAcGFyYW0gcmVuZGVyQ2xhaW1zIHJlbmRlckNsYWltcyB0byBzb3J0XG4gKiBAcGFyYW0ga2luZHMga2luZHMgdG8gZ2V0IGZyb20gcmVuZGVyQ2xhaW1zXG4gKiBAcmV0dXJucyByZW5kZXJDbGFpbXMgd2l0aCBvbmx5IHRoZSBraW5kcyBzcGVjaWZpZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRSZW5kZXJDbGFpbXNCeUtpbmQocmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXMsIGtpbmRzOiBzdHJpbmdbXSk6IFJlbmRlckNsYWltcyB7XG5cbiAgbGV0IHJlc3VsdDogUmVuZGVyQ2xhaW1zID0ge31cblxuICBmb3IgKGNvbnN0IGtpbmQgb2Yga2luZHMpIHtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHJlbmRlckNsYWltcykge1xuXG4gICAgICAgIGlmKChyZW5kZXJDbGFpbXNba2V5IGFzIFJlbmRlckNsYWltS2V5XSBhcyBhbnkpLmNsYWltLmtpbmQgPT09IGtpbmQpIHtcblxuICAgICAgICAgICAgcmVzdWx0W2tleSBhcyBSZW5kZXJDbGFpbUtleV0gPSByZW5kZXJDbGFpbXNba2V5IGFzIFJlbmRlckNsYWltS2V5XVxuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHJlc3VsdCA9IHNvcnRTZWxmS2luZFJlZnMocmVzdWx0LCBraW5kKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxuXG59XG5cblxuZnVuY3Rpb24gc29ydFNlbGZLaW5kUmVmcyhyZW5kZXJDbGFpbXM6IFJlbmRlckNsYWltcywga2luZDpzdHJpbmcpIHtcbiAgXG4gICAgaWYoIWhhc1NlbGZSZWZzKGtpbmQpKSB7XG5cbiAgICAgIHJldHVybiByZW5kZXJDbGFpbXNcblxuICAgIH1cblxuICAgIGNvbnN0IG5ld1JlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zID0ge31cblxuICAgIGNvbnN0IGRhdGE6IGFueSA9IGV4dHJhY3RSZWZzKHJlbmRlckNsYWltcywga2luZClcblxuICAgIGNvbnN0IG9yZGVyZWQ6IGFueVtdID0gW107XG4gICAgXG4gICAgY29uc3QgdmlzaXRpbmc6IGFueVtdID0gW107XG4gICAgXG4gICAgY29uc3QgdmlzaXRlZDogYW55W10gPSBbXTtcbiAgXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICBcbiAgICAgIGlmICghdmlzaXRlZC5maW5kKG9iaiA9PiBvYmoubmFtZSA9PT0ga2V5KSkge1xuICAgIFxuICAgICAgICBzb3J0UmVmcyhkYXRhLCBkYXRhW2tleV0sIG9yZGVyZWQsIHZpc2l0aW5nLCB2aXNpdGVkKTtcbiAgICBcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgICBcbiAgICBmb3IgKGNvbnN0IGNyIG9mIG9yZGVyZWQpIHtcbiAgICBcbiAgICAgIG5ld1JlbmRlckNsYWltc1tjci5uYW1lXSA9IHJlbmRlckNsYWltc1tjci5uYW1lXVxuICAgIFxuICAgIH1cblxuICAgIHJldHVybiBuZXdSZW5kZXJDbGFpbXNcblxuICB9XG4gIFxuICBmdW5jdGlvbiBzb3J0UmVmcyhkYXRhOiBhbnksIGNsYWltOiBhbnksIG9yZGVyZWQ6IGFueVtdID0gW10sIHZpc2l0aW5nOiBhbnlbXSA9IFtdLCB2aXNpdGVkOiBhbnlbXSA9IFtdKSB7XG5cbiAgICBpZiAodmlzaXRpbmcuZmluZChvYmogPT4gb2JqLm5hbWUgPT09IGNsYWltLm5hbWUpKSB7XG4gICAgXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgZm9yIFwiJHtjbGFpbS5uYW1lfVwiYCk7XG4gICAgXG4gICAgfVxuICBcbiAgICBpZiAoIXZpc2l0ZWQuZmluZChvYmogPT4gb2JqLm5hbWUgPT09IGNsYWltLm5hbWUpKSB7XG4gICAgICBcbiAgICAgIHZpc2l0aW5nLnB1c2goY2xhaW0pO1xuICBcbiAgICAgIGlmIChjbGFpbS5yZWZzKSB7XG4gIFxuICAgICAgICBmb3IgKGNvbnN0IHJlZiBvZiBjbGFpbS5yZWZzKSB7XG4gICAgICAgICBcbiAgICAgICAgICBjb25zdCByZWZlcmVuY2VkT2JqZWN0ID0gZGF0YVtyZWZdO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghcmVmZXJlbmNlZE9iamVjdCkge1xuICBcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIFwiJHtyZWZ9XCIgZG9lcyBub3QgZXhpc3QgZm9yIFwiJHtjbGFpbS5uYW1lfVwiYCk7XG4gICAgICAgICAgXG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBzb3J0UmVmcyhkYXRhLCByZWZlcmVuY2VkT2JqZWN0LCBvcmRlcmVkLCB2aXNpdGluZywgdmlzaXRlZCk7XG4gICAgICBcbiAgICAgICAgfVxuICAgICAgXG4gICAgICB9XG4gIFxuICAgICAgdmlzaXRlZC5wdXNoKHZpc2l0aW5nLnBvcCgpKTtcbiAgXG4gICAgICBvcmRlcmVkLnB1c2goY2xhaW0pO1xuICAgIFxuICAgIH1cbiAgXG4gIH1cblxuXG4gIGZ1bmN0aW9uIGhhc1NlbGZSZWZzKGtpbmQ6IHN0cmluZyl7XG5cbiAgICByZXR1cm4gW1wiVEZXb3Jrc3BhY2VDbGFpbVwiLCBcIkdyb3VwQ2xhaW1cIl0uaW5jbHVkZXMoa2luZClcblxuICB9XG4iXX0=
235479
235542
 
235480
235543
  /***/ }),
235481
235544
 
235482
- /***/ 38555:
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.addLastStateAndLastClaimAnnotations = exports.renderWorkspacePlans = exports.render = exports.renderFromImports = void 0;
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 refsSorter_1 = __nccwpck_require__(47015);
235524
- const crawler_1 = __nccwpck_require__(26675);
235525
- const fs_1 = __importDefault(__nccwpck_require__(57147));
235526
- const path_1 = __importDefault(__nccwpck_require__(71017));
235527
- const catalog_common_1 = __importDefault(__nccwpck_require__(74100));
235528
- const github_1 = __importDefault(__nccwpck_require__(39759));
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 = sortKinds(["UserClaim", "GroupClaim", "ComponentClaim", "DomainClaim", "SystemClaim", "TFWorkspaceClaim", "ArgoDeployClaim"], renderClaims);
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
- async function extractPatches(claimToRenderData, previousCR) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxxQ0FBa0Q7QUFDbEQsaURBQWtDO0FBQ2xDLGtEQUEwQjtBQUUxQixpQ0FBdUQ7QUFFdkQscUVBQTBFO0FBRzFFLHlEQUF1SDtBQUN2SCwrQ0FBa0Q7QUFDbEQscUNBQW1FO0FBRW5FLHdEQUFpRTtBQUNqRSx1Q0FBa0M7QUFDbEMsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixvRUFBb0M7QUFDcEMsb0RBQTRCO0FBQzVCLE1BQU0sb0JBQW9CLEdBQUcsMEJBQTBCLENBQUE7QUFHdkQsTUFBTSxHQUFHLEdBQUcsSUFBQSxlQUFLLEVBQUMscUJBQXFCLENBQUMsQ0FBQTtBQXFDeEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBRXJDLFlBQTBCLEVBRTFCLE1BQVcsRUFBRSxFQUViLG1CQUEyQixlQUFlLEVBRTFDLGNBQXNCLGlCQUFpQjtJQUl2QyxNQUFNLFlBQVksR0FBRyxJQUFJLFdBQUcsQ0FBQztRQUUzQixNQUFNLEVBQUUsZ0JBQWdCO1FBRXhCLG1CQUFtQixFQUFFLE9BQU87UUFFNUIsY0FBYyxFQUFFLHNCQUFjLENBQUMsaUJBQWlCO0tBRWpELENBQUMsQ0FBQTtJQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksV0FBRyxDQUFDO1FBRTlCLE1BQU0sRUFBRSxXQUFXO1FBRW5CLG1CQUFtQixFQUFFLE9BQU87UUFFNUIsY0FBYyxFQUFFLHNCQUFjLENBQUMsaUJBQWlCO0tBRWpELENBQUMsQ0FBQTtJQUVGLE1BQU0sTUFBTSxHQUFRLE1BQU0sYUFBYSxDQUVyQyxZQUFZLEVBRVosZUFBZSxFQUVmO1FBQ0UsWUFBWTtRQUVaLEdBQUc7UUFFSCxPQUFPLEVBQUUsRUFBRTtLQUNaLENBQ0YsQ0FBQTtJQUVELGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUV2QixPQUFPLE1BQU0sQ0FBQTtBQUVmLENBQUM7QUFuREQsOENBbURDO0FBR0Q7Ozs7Ozs7Ozs7R0FVRztBQUNJLEtBQUssVUFBVSxNQUFNLENBRTFCLFlBQXVCLEVBRXZCLGVBQTBCO0lBSTFCLE1BQU0sSUFBSSxHQVFOLE1BQU0sSUFBQSxnQkFBTyxHQUFFLENBQUE7SUFFbkIsTUFBTSxNQUFNLEdBQVEsTUFBTSxhQUFhLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUU1RSxJQUFBLHlDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRXBDLElBQUEseUNBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUE7SUFFcEMsT0FBTyxNQUFNLENBQUE7QUFFZixDQUFDO0FBMUJELHdCQTBCQztBQUVEOzs7RUFHRTtBQUNLLEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLE1BQWMsRUFBRSxHQUFXLEVBQUUsUUFBYSxnQkFBTTtJQUUxSCxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFN0MsTUFBTSxDQUFFLEdBQUcsRUFBRSxJQUFJLENBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXhDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FDbEQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUNsQixJQUFJLEVBQ0osR0FBRyxDQUNKLENBQUE7SUFFRCxJQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBQztRQUUzRCxNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUV6QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUVqQixJQUFJLEVBRUosR0FBRyxDQUVKLENBQUE7UUFFRCxNQUFNLFNBQVMsR0FBUSx3QkFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFbEQsU0FBUyxDQUFDLElBQUksR0FBRyxrQ0FBa0MsQ0FBQTtRQUVuRCxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsbUNBRXpCLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUVqQyxDQUFDLHdCQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBRXJFLENBQUMsd0JBQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBRTFELENBQUE7UUFFRCxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FFNUIsd0JBQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBRWpELEdBQUcsU0FBUyxDQUFBO1FBRWIsTUFBTSxhQUFhLEdBQUcsd0JBQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxtQkFFaEMsU0FBUyxHQUViLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FFcEMsQ0FBQTtRQUVELE1BQU0sUUFBUSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFFckUsWUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFFekMsT0FBTTtLQUNQO0lBRUQsMEVBQTBFO0lBQzFFLE1BQU0sSUFBQSxlQUFLLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQWEsRUFBRSxJQUFTLEVBQUUsRUFBRTtRQUUzRCxNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFFekQsTUFBTSxTQUFTLEdBQVEsd0JBQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRS9DLFNBQVMsQ0FBQyxJQUFJLEdBQUcsa0NBQWtDLENBQUE7UUFDbkQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLG1DQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FDakMsQ0FBQyx3QkFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUNyRSxDQUFDLHdCQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUMxRCxDQUFBO1FBRUQsTUFBTSxhQUFhLEdBQUcsd0JBQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxtQkFDakMsU0FBUyxHQUNYLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRXZDLFlBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBRTNDLENBQUMsQ0FBQyxDQUFBO0FBRUosQ0FBQztBQWpGRCxvREFpRkM7QUFFTSxLQUFLLFVBQVUsbUNBQW1DLENBQ3ZELFFBQWdCLEVBQUUsZUFBdUIsRUFBRSxlQUF1QjtJQUdsRSwwRUFBMEU7SUFFMUUsTUFBTSxTQUFTLEdBQVEsd0JBQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFOUUsTUFBTSxnQkFBZ0IsR0FBYSxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELE1BQU0sb0JBQW9CLEdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRTNHLE1BQU0sZ0JBQWdCLEdBQWEsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RCxNQUFNLG9CQUFvQixHQUFXLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUUzRyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsbUNBQ3pCLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUNqQyxDQUFDLHdCQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQy9FLENBQUMsd0JBQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsR0FDaEYsQ0FBQTtJQUVELFlBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLHdCQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sbUJBQ3BDLFNBQVMsR0FBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ3RELENBQUMsQ0FBQTtBQUVKLENBQUM7QUF4QkQsa0ZBd0JDO0FBRUQsS0FBSyxVQUFVLGFBQWEsQ0FFMUIsWUFBdUIsRUFFdkIsZUFBMEIsRUFFMUIsSUFRQztJQUlELE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUE7SUFFaEMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7SUFFbEMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFFL0osS0FBSyxNQUFNLFlBQVksSUFBSSxXQUFXLEVBQUU7UUFFdEMsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBRWhELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUEwQixDQUFDLENBQUMsS0FBSyxDQUFBO1lBRTVELE1BQU0sa0JBQWtCLEdBQUcsSUFBQSw4QkFBcUIsR0FBRSxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBRTdELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBRTVDLElBQUcsa0JBQWtCLElBQUkseUJBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFDO2dCQUV2RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FFMUIsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssa0JBQWtCLENBRXRELENBQUE7YUFFRjtZQUdELE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUVyRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxZQUFZLENBQUMsUUFBMEIsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBRTFGLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBRWYsR0FBRyxDQUFDLHlCQUF5QixRQUFRLG9DQUFvQyxDQUFDLENBQUE7YUFFM0U7WUFFRCxNQUFNLEVBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBQyxHQUFJLE1BQU0sV0FBVyxDQUV2RSxZQUFZLEVBRVosZUFBZSxFQUVmLEtBQUssRUFFTCxPQUFPLEVBRVAsVUFBVSxDQUVYLENBQUE7WUFFRCxJQUFHLGFBQWEsRUFBRTtnQkFFaEIsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFBO2FBRXhGO1lBRUQ7Ozs7Y0FJRTtZQUVGLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQUUsU0FBUztZQUVoQyxNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFBO1lBRXRELElBQUEsOEJBQWdCLEVBQUMsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUE7WUFFN0MsS0FBSSxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUM7Z0JBRWxDLE1BQU0sRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLEdBQUcsVUFBVSxDQUFBO2dCQUVqQyxJQUFBLDhCQUFnQixFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtnQkFFdkMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO2FBRWhFO1lBRUQsSUFBRyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSTtnQkFBRSxNQUFNLG9CQUFvQixDQUFBO1lBRWhILE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLElBQUksSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxvQkFBb0IsQ0FBQTtTQUVoRztLQUVGO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFFZixDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FFM0IsaUJBQWtDLEVBQUUsVUFBZTtJQUluRCxJQUFJLFlBQVksR0FBMkIsRUFBRSxDQUFBO0lBRzdDLEtBQUssTUFBTSxVQUFVLElBQUksaUJBQWlCLENBQUMsV0FBVyxFQUFFO1FBRXRELE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVoRixZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtLQUVuRDtJQUVELEtBQUssTUFBTSxXQUFXLElBQUksaUJBQWlCLENBQUMsWUFBWSxFQUFFO1FBRXhELE1BQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVqRixZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtLQUVuRDtJQUVELEtBQUssTUFBTSxTQUFTLElBQUksaUJBQWlCLENBQUMsU0FBUyxFQUFFO1FBRW5ELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUUvRSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtLQUVuRDtJQUdELElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtRQUVyRCxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBQSx5Q0FBdUIsRUFBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7S0FFcEc7SUFHRCxLQUFLLE1BQU0sTUFBTSxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtRQUU5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRXpFLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0tBRW5EO0lBRUQsT0FBTyxZQUFZLENBQUE7QUFFckIsQ0FBQztBQVFELEtBQUssVUFBVSxXQUFXLENBRXhCLFlBQXVCLEVBRXZCLGVBQTBCLEVBRTFCLEtBQVUsRUFFVixPQUErQixFQUUvQixhQUF5QixJQUFJOztJQUk3QixJQUFJLGFBQWEsR0FBMEIsU0FBUyxDQUFDO0lBQ3JELElBQUksZ0JBQWdCLEdBQTBCLFNBQVMsQ0FBQztJQUV4RCxNQUFNLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELElBQUksWUFBWSxHQUFrQixJQUFJLENBQUM7SUFFdkMsSUFBSSxVQUFVLEVBQUU7UUFFZCxZQUFZLEdBQUcsQ0FBQSxNQUFBLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksMENBQUUsVUFBVSwwQ0FBRSxVQUFVLEtBQUksSUFBSSxDQUFDO0tBRWpFO0lBRUQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDeEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRXBFLE1BQU0sUUFBUSxHQUFHLElBQUEsOEJBQXFCLEdBQUUsQ0FBQTtJQUV4QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFFbEIsS0FBSyxhQUFhO1lBRWhCLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQ25ELFlBQVksRUFDWixXQUFXLE9BQU8sRUFBRSxFQUNwQixZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO1lBRUYsTUFBTTtRQUVSLEtBQUssYUFBYTtZQUVoQixhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUNuRCxZQUFZLEVBQ1osV0FBVyxPQUFPLEVBQUUsRUFDcEIsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQztZQUVGLE1BQU07UUFFUixLQUFLLFlBQVk7WUFFZixhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxXQUFXLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFN0gsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsS0FBSyx5QkFBZ0IsQ0FBQyxNQUFNLElBQUksUUFBUSxLQUFLLHlCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUV6RyxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQ3BELGVBQWUsRUFDZixVQUFVLE9BQU8sRUFBRSxFQUNuQixZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO2FBRUg7WUFFRCxNQUFNO1FBRVIsS0FBSyxXQUFXO1lBRWQsYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFL0csSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsS0FBSyx5QkFBZ0IsQ0FBQyxNQUFNLElBQUksUUFBUSxLQUFLLHlCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUV6RyxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQ3pELGVBQWUsRUFDZixVQUFVLE9BQU8sRUFBRSxFQUNuQixZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO2FBRUg7WUFFRCxNQUFNO1FBRVIsS0FBSyxnQkFBZ0I7WUFFbkIsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsS0FBSyx5QkFBZ0IsQ0FBQyxNQUFNLElBQUksUUFBUSxLQUFLLHlCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUV6RyxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQ3pELGVBQWUsRUFDZixVQUFVLE9BQU8sRUFBRSxFQUNuQixZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO2FBRUg7WUFDRCxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUN0RCxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUMxRCxDQUFDO1lBRUYsTUFBTTtRQUVSLEtBQUssa0JBQWtCO1lBRXJCLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksQ0FBQyxRQUFRLEtBQUsseUJBQWdCLENBQUMsU0FBUyxJQUFJLFFBQVEsS0FBSyx5QkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFFL0csZ0JBQWdCLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUNwRCxlQUFlLEVBQ2YsYUFBYSxPQUFPLEVBQUUsRUFDdEIsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQzthQUVIO1lBQ0QsYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FDeEQsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FDMUQsQ0FBQztZQUVGLE1BQU07UUFFUixLQUFLLGlCQUFpQjtZQUVwQixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxLQUFLLHlCQUFnQixDQUFDLE1BQU0sSUFBSSxRQUFRLEtBQUsseUJBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBRXpHLGdCQUFnQixHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQ25ELGVBQWUsRUFDZixVQUFVLE9BQU8sRUFBRSxFQUNuQixZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO2FBRUg7WUFFRCxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUN2RCxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUMxRCxDQUFDO1lBRUYsTUFBTTtRQUdSO1lBRUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFbkQsTUFBTTtLQUNUO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsYUFBYSxFQUFFO1FBRWxCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FFdkU7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FFN0Q7UUFDRSxRQUFRLEtBQUsseUJBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBRXZGLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLE1BQU0sRUFBRTtLQUUzQixDQUVGLENBQUE7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTztRQUVMLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUV0RixnQkFBZ0IsRUFBRSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTdHLFdBQVcsRUFBRSxNQUFNLENBQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsV0FBVyxFQUFFLENBQUEsSUFBSSxFQUFFO0tBQ3pELENBQUM7QUFFSixDQUFDO0FBSUQsU0FBUyxTQUFTLENBQUMsWUFBc0IsRUFBRSxNQUFvQjtJQUU3RCxNQUFNLE1BQU0sR0FBbUIsRUFBRSxDQUFBO0lBRWpDLEtBQUssTUFBTSxJQUFJLElBQUksWUFBWSxFQUFFO1FBRS9CLE1BQU0sZ0JBQWdCLEdBQVEsSUFBQSxtQ0FBc0IsRUFBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXBFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtLQUU5QjtJQUVELE9BQU8sTUFBTSxDQUFBO0FBRWYsQ0FBQztBQU1ELFNBQVMsc0JBQXNCLENBQUMsS0FBVSxFQUFFLFdBQWdCO0lBRTFELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFaEQsS0FBSSxNQUFNLGFBQWEsSUFBSSxlQUFlLEVBQUM7UUFFekMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTdDLElBQUcsSUFBQSw0QkFBZSxFQUFDLFVBQVUsQ0FBQztZQUFFLFNBQVE7UUFFeEMsSUFBRyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUUsU0FBUTtRQUV0RCxJQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBQztZQUV6RixPQUFPLFVBQVUsQ0FBQTtTQUVsQjtLQUVGO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFFZCxDQUFDO0FBR0QsU0FBUyx3QkFBd0IsQ0FBQyxNQUFjO0lBRzlDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUcvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElSZW5hbWVSZXN1bHQsIGxvYWRBbGwgfSBmcm9tIFwiLi9sb2FkZXJcIjtcbmltcG9ydCAqIGFzIGNoYXJ0cyBmcm9tIFwiLi9jaGFydHNcIlxuaW1wb3J0IERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHsgQmFzZUNoYXJ0IH0gZnJvbSBcIi4vY2hhcnRzL2Jhc2VcIjtcbmltcG9ydCB7IEFwaU9iamVjdCwgQXBwLCBZYW1sT3V0cHV0VHlwZSB9IGZyb20gXCJjZGs4c1wiO1xuaW1wb3J0IHsgR2xvYmFsU2VjdGlvbiB9IGZyb20gXCIuL2dsb2JhbHMvYmFzZVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGZWF0dXJlc1BhdGNoZXMgfSBmcm9tIFwiLi9jaGFydHMvZ2l0aHViL2ZlYXR1cmVSZW5kZXJlclwiO1xuaW1wb3J0IHsgT3ZlcnJpZGVyUGF0Y2hlcyB9IGZyb20gXCIuL292ZXJyaWRlcnMvYmFzZVwiO1xuaW1wb3J0IHsgSUN1c3RvbVJlc291cmNlUGF0Y2ggfSBmcm9tIFwiLi9wYXRjaGVzXCI7XG5pbXBvcnQgeyBpc0NhdGFsb2dFbnRpdHksIHZhbGlkYXRlUmVmZXJlbnRpYWxJbnRlZ3JpdHksIHZhbGlkYXRlVGZTdGF0ZUtleVVuaXF1ZW5lc3MgfSBmcm9tIFwiLi92YWxpZGF0aW9ucy9yZWZlcmVuY2VzXCI7XG5pbXBvcnQgeyAgc2V0UmVuZGVyZWRDbGFpbSB9IGZyb20gXCIuL3JlZnJlc29sdmVyXCI7XG5pbXBvcnQgeyBBbGxvd2VkUHJvdmlkZXJzLCBnZXRDb25maWd1cmVkUHJvdmlkZXIgfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IE5vcm1hbGl6ZXIgfSBmcm9tIFwiLi9ub3JtYWxpemVycy9iYXNlXCI7XG5pbXBvcnQgeyBzb3J0UmVuZGVyQ2xhaW1zQnlLaW5kIH0gZnJvbSBcIi4vcmVmc1NvcnRlci9yZWZzU29ydGVyXCI7XG5pbXBvcnQgeyBjcmF3bCB9IGZyb20gXCIuL2NyYXdsZXJcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgY29tbW9uIGZyb20gXCJjYXRhbG9nX2NvbW1vblwiO1xuaW1wb3J0IGdpdGh1YiBmcm9tIFwiZ2l0aHViXCI7XG5jb25zdCBDTEFJTV9SRUZfQU5OT1RBVElPTiA9IFwiZmlyZXN0YXJ0ci5kZXYvY2xhaW0tcmVmXCJcblxuXG5jb25zdCBsb2cgPSBEZWJ1ZyhcImZpcmVzdGFydHI6cmVuZGVyZXJcIilcblxuZXhwb3J0IHR5cGUgUmVuZGVyQ2xhaW1EYXRhID0ge1xuXG4gIGNsYWltOiBhbnlcblxuICBjbGFpbVBhdGg/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, [path.join(resourcesPath, ".github"), path.join(resourcesPath, ".config"), path.join(resourcesPath, ".import")]);
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}`] = true;
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
- return false;
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
- return false;
242814
- return foundPolicy.allowedOps.includes(op);
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
- if (!(0, policies_1.policyAllowsOp)(policy, op, item)) {
242896
- return errorPolicyNotAllowsOp(item, op, policy, handler);
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, policy, handler) {
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, errorMessage);
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: errorMessage
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: errorMessage
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: errorMessage
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: errorMessage
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: errorMessage
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: errorMessage
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: errorMessage
243552
+ message: msg
243400
243553
  };
243401
- await handler.writeTerraformOutputInTfResult(item, errorMessage);
243554
+ await handler.writeTerraformOutputInTfResult(item, msg);
243402
243555
  handler.error();
243403
243556
  }
243404
243557
  /**