construct-hub 0.4.523 → 0.4.524

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/.jsii CHANGED
@@ -22299,6 +22299,6 @@
22299
22299
  "symbolId": "src/package-sources/npmjs:NpmJsProps"
22300
22300
  }
22301
22301
  },
22302
- "version": "0.4.523",
22303
- "fingerprint": "vjehXzFrRKv6CO8BJw4uKJqYXy4PRSmi6hSmrR5j5+U="
22302
+ "version": "0.4.524",
22303
+ "fingerprint": "Vyt7Nt9RU4JCkyXs3heSb+jTcTOtLMDWQAEVJ2Elj3Y="
22304
22304
  }
@@ -253,12 +253,9 @@ class Orchestration extends constructs_1.Construct {
253
253
  .otherwise(new aws_stepfunctions_1.Succeed(this, 'Done')));
254
254
  // @cdktn/provider-awscc is the biggest known package (3,979 submodules) and runs in ~15min,
255
255
  // (aws-cdk-lib runs in ~8min).
256
- // We give the task some extra allowance to complete.
256
+ // We give the task some generous extra allowance to complete.
257
257
  // If the task exceeds the runtime, it's very likely that there is an issue with the task execution.
258
- //
259
- // The timeout value is deliberately set close to the expected execution time,
260
- // to avoid an excessive cumulative runtime with retries and to not normalize longer than necessary runtime.
261
- const transliteratorTimeout = aws_cdk_lib_1.Duration.minutes(18);
258
+ const transliteratorTimeout = aws_cdk_lib_1.Duration.minutes(30);
262
259
  this.ecsCluster = new aws_ecs_1.Cluster(this, 'Cluster', {
263
260
  containerInsights: true,
264
261
  enableFargateCapacityProviders: true,
@@ -709,4 +706,4 @@ function stateMachineNameFrom(nodePath) {
709
706
  // Poor man's replace all...
710
707
  return nodePath.split(/[^a-z0-9+!@.()=_'-]+/i).join('.');
711
708
  }
712
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC9vcmNoZXN0cmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUF1QztBQUN2QywrREFRb0M7QUFFcEMsaURBQXdEO0FBQ3hELHVEQUE0RDtBQUc1RCxpREFBcUU7QUFDckUscUVBWXVDO0FBQ3ZDLDJFQUE2RDtBQUM3RCwyQ0FBdUM7QUFDdkMsaUVBQTREO0FBQzVELG1FQUE4RDtBQUM5RCxpRkFBNEU7QUFDNUUsbUNBQTBDO0FBRTFDLCtDQUErRDtBQUMvRCxpREFBd0Q7QUFFeEQsbURBQWdEO0FBQ2hELGtFQUFvRTtBQUNwRSx3REFBb0Q7QUFFcEQsMERBQXFEO0FBRXJELG1EQU82QjtBQUM3QixzREFBK0U7QUFFL0UsTUFBTSx3Q0FBd0MsR0FDNUMsa0NBQWtDLENBQUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixXQUFXLEVBQUUsR0FBRztJQUNoQixRQUFRLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFdBQVcsRUFBRSxFQUFFO0NBQ2hCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsUUFBUSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3Qix1RUFBdUU7SUFDdkUsV0FBVyxFQUFFLEdBQUc7SUFDaEIsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQTZERjs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBQzFDOzs7T0FHRztJQUNhLFlBQVksQ0FBZ0I7SUFFNUM7OztPQUdHO0lBQ2EsZUFBZSxDQUFTO0lBRXhDOzs7T0FHRztJQUNhLGVBQWUsQ0FBWTtJQUUzQzs7O09BR0c7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Q0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBNYXRoRXhwcmVzc2lvbixcbiAgTWF0aEV4cHJlc3Npb25PcHRpb25zLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgU3VibmV0U2VsZWN0aW9uLCBWcGMsIElTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDbHVzdGVyLCBJQ2x1c3RlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uLCBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBJUXVldWUsIFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7XG4gIENob2ljZSxcbiAgQ29uZGl0aW9uLFxuICBJbnRlZ3JhdGlvblBhdHRlcm4sXG4gIElTdGF0ZU1hY2hpbmUsXG4gIEpzb25QYXRoLFxuICBNYXAsXG4gIFBhc3MsXG4gIFN0YXRlTWFjaGluZSxcbiAgU3VjY2VlZCxcbiAgRmFpbCxcbiAgVGFza0lucHV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgKiBhcyB0YXNrcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE5lZWRzQ2F0YWxvZ1VwZGF0ZSB9IGZyb20gJy4vbmVlZHMtY2F0YWxvZy11cGRhdGUnO1xuaW1wb3J0IHsgUmVkcml2ZVN0YXRlTWFjaGluZSB9IGZyb20gJy4vcmVkcml2ZS1zdGF0ZS1tYWNoaW5lJztcbmltcG9ydCB7IFJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzIH0gZnJvbSAnLi9yZXRyeS11bmluc3RhbGxhYmxlLXBhY2thZ2VzJztcbmltcG9ydCB7IEFsYXJtU2V2ZXJpdHkgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2NvZGVhcnRpZmFjdC9yZXBvc2l0b3J5JztcbmltcG9ydCB7IHNxc1F1ZXVlVXJsLCBzdGF0ZU1hY2hpbmVVcmwgfSBmcm9tICcuLi8uLi9kZWVwLWxpbmsnO1xuaW1wb3J0IHsgTW9uaXRvcmluZywgYWRkQWxhcm0gfSBmcm9tICcuLi8uLi9tb25pdG9yaW5nJztcbmltcG9ydCB7IE92ZXJ2aWV3RGFzaGJvYXJkIH0gZnJvbSAnLi4vLi4vb3ZlcnZpZXctZGFzaGJvYXJkJztcbmltcG9ydCB7IFJVTkJPT0tfVVJMIH0gZnJvbSAnLi4vLi4vcnVuYm9vay11cmwnO1xuaW1wb3J0IHsgZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSB9IGZyb20gJy4uL19sYW1iZGEtYXJjaGl0ZWN0dXJlJztcbmltcG9ydCB7IENhdGFsb2dCdWlsZGVyIH0gZnJvbSAnLi4vY2F0YWxvZy1idWlsZGVyJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi4vZGVueS1saXN0JztcbmltcG9ydCB7IEVjc1Rhc2tNb25pdG9yIH0gZnJvbSAnLi4vZWNzLXRhc2stbW9uaXRvcic7XG5pbXBvcnQgeyBGZWVkQnVpbGRlciB9IGZyb20gJy4uL2ZlZWQtYnVpbGRlcic7XG5pbXBvcnQge1xuICBBU1NFTUJMWV9LRVlfU1VGRklYLFxuICBNRVRBREFUQV9LRVlfU1VGRklYLFxuICBQQUNLQUdFX0tFWV9TVUZGSVgsXG4gIFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgQ0FUQUxPR19LRVksXG4gIFVOUFJPQ0VTU0FCTEVfUEFDS0FHRV9FUlJPUl9OQU1FLFxufSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zbGl0ZXJhdG9yLCBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cyB9IGZyb20gJy4uL3RyYW5zbGl0ZXJhdG9yJztcblxuY29uc3QgUkVQUk9DRVNTX1BFUl9QQUNLQUdFX1NUQVRFX01BQ0hJTkVfTkFNRSA9XG4gICdSZXByb2Nlc3NEb2N1bWVudGF0aW9uUGVyUGFja2FnZSc7XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgYWxsIGl0ZW1zIGluIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogQWZ0ZXIgMzAgYXR0ZW1wdHMsIGdpdmVuIHRoZSBwYXJhbWV0ZXJzLCB0aGUgbGFzdCBhdHRlbXB0IHdpbGwgd2FpdCBqdXN0XG4gKiB1bmRlciAxNiBtaW51dGVzLCB3aGljaCBzaG91bGQgYmUgZW5vdWdoIGZvciBjdXJyZW50bHkgcnVubmluZyBMYW1iZGFcbiAqIGZ1bmN0aW9ucyB0byBjb21wbGV0ZSAob3IgdGltZSBvdXQgYWZ0ZXIgMTUgbWludXRlcykuIFRoZSB0b3RhbCB0aW1lIHNwZW50XG4gKiB3YWl0aW5nIGJldHdlZW4gcmV0cmllcyBieSB0aGlzIHRpbWUgaXMganVzdCBvdmVyIDMgaG91cnMuIFRoaXMgaXMgYSBsb3Qgb2ZcbiAqIHRpbWUsIGJ1dCBpbiBleHRyZW1lIGJ1cnN0IHNpdHVhdGlvbnMgKGkuZTogcmVwcm9jZXNzaW5nIGV2ZXJ5dGhpbmcpLCB0aGlzXG4gKiBpcyBhY3R1YWxseSBhIGdvb2QgdGhpbmcuXG4gKi9cbmNvbnN0IFRIUk9UVExFX1JFVFJZX1BPTElDWSA9IHtcbiAgYmFja29mZlJhdGU6IDEuMSxcbiAgaW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gIG1heEF0dGVtcHRzOiAzMCxcbn07XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgdHJhbnNsaXRlcmF0aW9uIHRhc2tzIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogVGhlIGludGVydmFsIGlzIGRldGVybWluZWQgYnkgdGhlIGV4ZWN1dGlvbiBkdXJhdGlvbiB3ZSBjdXJyZW50bHkgZXhwZWN0IGZyb20ganNpaS1kb2NnZW4uXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvanNpaS1kb2NnZW4vYmxvYi9tYWluL3Rlc3QvZG9jZ2VuL3ZpZXcvZG9jdW1lbnRhdGlvbi50ZXN0LnRzI0wxMy5cbiAqXG4gKiBBcHBseSBhIGJpdCBvZiBiYWNrb2ZmIGJlY2F1c2Ugb3RoZXJ3aXNlIGluIGNhc2VzIG9mIGNvbnRlbnRpb24gd2UncmUgaGFtbWVyaW5nIHRoZSBFQ1NcbiAqIGZyb250ZW5kIHNlcnZpY2UuXG4gKi9cbmNvbnN0IERPQ0dFTl9USFJPVFRMRV9SRVRSWV9QT0xJQ1kgPSB7XG4gIGludGVydmFsOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAvLyAxIG1pbnV0ZSAqIDEuMV40NSAvIGxuKDEuMSkgfj0gbWF4IDEzIGhvdXJzIHRvdGFsIHRpbWUgZm9yIGEgcGFja2FnZVxuICBiYWNrb2ZmUmF0ZTogMS4xLFxuICBtYXhBdHRlbXB0czogNDUsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yY2hlc3RyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IGluIHdoaWNoIHRvIHNvdXJjZSBhc3NlbWJsaWVzIHRvIHRyYW5zbGl0ZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2RlQXJ0aWZhY3QgcmVnaXN0cnkgdG8gdXNlIGZvciByZWd1bGFyIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjb2RlQXJ0aWZhY3Q/OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgbW9uaXRvcmluZyBoYW5kbGVyIHRvIHJlZ2lzdGVyIGFsYXJtcyB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZzogTW9uaXRvcmluZztcblxuICAvKipcbiAgICogVGhlIG92ZXJ2aWV3IGRhc2hib2FyZCB0byByZWdpc3RlciBkYXNoYm9hcmRzIHdpdGguXG4gICAqL1xuICByZWFkb25seSBvdmVydmlld0Rhc2hib2FyZDogT3ZlcnZpZXdEYXNoYm9hcmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgaW4gd2hpY2ggdG8gcGxhY2UgbmV0d29ya2VkIHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IFZwYztcblxuICAvKipcbiAgICogVGhlIFZQQyBzdWJuZXQgc2VsZWN0aW9uIHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFZQQyBlbmRwb2ludHMgdG8gdXNlIGZvciBpbnRlcmFjdGluZyB3aXRoIENvZGVBcnRpZmFjdCBhbmQgUzMuXG4gICAqL1xuICByZWFkb25seSB2cGNFbmRwb2ludHM/OiBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cztcblxuICAvKipcbiAgICogVlBDIFNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgRUNTIHRhc2tzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU2VjdXJpdHlHcm91cHM/OiBJU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyBzaG91bGQgZXhlY3V0aW9uIGxvZ3MgYmUgcmV0YWluZWQ/XG4gICAqXG4gICAqIEBkZWZhdWx0IFJldGVudGlvbkRheXMuVEVOX1lFQVJTXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBSZXRlbnRpb25EYXlzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVueUxpc3Q6IERlbnlMaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0IHRoYXQgZ2VuZXJhdGVzIFJTUy9BVE9NIGZlZWRcbiAgICovXG4gIHJlYWRvbmx5IGZlZWRCdWlsZGVyOiBGZWVkQnVpbGRlcjtcbn1cblxuLyoqXG4gKiBPcmNoZXN0cmF0ZXMgdGhlIGJhY2tlbmQgcHJvY2Vzc2luZyB0YXNrcyB1c2luZyBhIFN0ZXBGdW5jdGlvbnMgU3RhdGUgTWFjaGluZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE9yY2hlc3RyYXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIHN0YXRlIG1hY2hpbmUgdGhhdCBzaG91bGQgYmUgdHJpZ2dlcmVkIGZvciBzdGFydGluZyBiYWNrLWVuZCBwcm9jZXNzaW5nXG4gICAqIGZvciBhIG5ld2x5IGRpc2NvdmVyZWQgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZU1hY2hpbmU6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWFkIGxldHRlciBxdWV1ZSBmcm9tIHRoZSBzdGF0ZSBtYWNoaW5lLiBJbnB1dHMgYW5kIGVycm9ycyBhcmUgd3JpdHRlblxuICAgKiB0aGVyZSBpZiB0aGUgc3RhdGUgbWFjaGluZSBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWFkTGV0dGVyUXVldWU6IElRdWV1ZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJlZHJpdmUgbWVzc2FnZXMgZnJvbSB0aGUgZGVhZCBsZXR0ZXJcbiAgICogcXVldWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkcml2ZUZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBvcGVyYXRvcnMgY2FuIHVzZSB0byByZXByb2Nlc3MgYWxsIGluZGV4ZWQgcGFja2FnZXMgdGhyb3VnaFxuICAgKiB0aGUgYmFja2VuZCBkYXRhIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uOiBJU3RhdGVNYWNoaW5lO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gb3BlcmF0b3JzIGNhbiB1c2UgdG8gcmVwcm9jZXNzIGEgc3BlY2lmaWMgcGFja2FnZSB2ZXJzaW9uXG4gICAqIHRocm91Z2ggdGhlIGJhY2tlbmQgZGF0YSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2U6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBtYWNoaW5lIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJldHJ5IHByb2Nlc3NpbmcgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlczogSVN0YXRlTWFjaGluZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIHRoZSBjYXRhbG9nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2dCdWlsZGVyOiBDYXRhbG9nQnVpbGRlcjtcblxuICAvKipcbiAgICogVGhlIEVDUyBjbHVzdGVyIHVzZWQgdG8gcnVuIHRhc2tzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc0NsdXN0ZXI6IElDbHVzdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgRUNTIHRhc2sgbW9uaXRvciB0aGF0IHdhdGNoZXMgb3ZlciB0aGUgYGVjc0NsdXN0ZXJgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc1Rhc2tNb25pdG9yOiBFY3NUYXNrTW9uaXRvcjtcblxuICAvKipcbiAgICogVGhlIHRyYW5zbGl0ZXJhdG9yIHVzZWQgYnkgdGhpcyBvcmNoZXN0cmF0aW9uIHdvcmtmbG93LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zbGl0ZXJhdG9yOiBUcmFuc2xpdGVyYXRvcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE9yY2hlc3RyYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZSA9IG5ldyBRdWV1ZSh0aGlzLCAnRExRJywge1xuICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIHByb3BzLm1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdCYWNrZW5kIE9yY2hlc3RyYXRpb24gRGVhZC1MZXR0ZXIgUXVldWUgaXMgbm90IGVtcHR5JyxcbiAgICAgIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgIGV4cHJlc3Npb246ICdtMSArIG0yJyxcbiAgICAgICAgbGFiZWw6ICdEZWFkLUxldHRlciBRdWV1ZSBub3QgZW1wdHknLFxuICAgICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgICBtMTogdGhpcy5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbTI6IHRoaXMuZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSkuY3JlYXRlQWxhcm0odGhpcywgJ0RMUUFsYXJtJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuZGVhZExldHRlclF1ZXVlLm5vZGUucGF0aH0vTm90RW1wdHlgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ0JhY2tlbmQgb3JjaGVzdHJhdGlvbiBkZWFkLWxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHkuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBxdWV1ZTogJHtzcXNRdWV1ZVVybCh0aGlzLmRlYWRMZXR0ZXJRdWV1ZSl9YCxcbiAgICAgICAgICAnV2FybmluZzogU3RhdGUgTWFjaGluZXMgZXhlY3V0aW9ucyB0aGF0IHNlbnQgbWVzc2FnZXMgdG8gdGhlIERMUSB3aWxsIG5vdCBzaG93IGFzIFwiZmFpbGVkXCIuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAvLyBTUVMgZG9lcyBub3QgZW1pdCBtZXRyaWNzIGlmIHRoZSBxdWV1ZSBoYXMgYmVlbiBlbXB0eSBmb3IgYSB3aGlsZSwgd2hpY2ggaXMgR09PRC5cbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgc2VuZFRvRGVhZExldHRlclF1ZXVlID0gbmV3IHRhc2tzLlNxc1NlbmRNZXNzYWdlKFxuICAgICAgdGhpcyxcbiAgICAgICdTZW5kIHRvIERlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgIHtcbiAgICAgICAgbWVzc2FnZUJvZHk6IFRhc2tJbnB1dC5mcm9tSnNvblBhdGhBdCgnJCcpLFxuICAgICAgICBxdWV1ZTogdGhpcy5kZWFkTGV0dGVyUXVldWUsXG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9XG4gICAgKS5uZXh0KG5ldyBGYWlsKHRoaXMsICdTZW50IHRvIERMUScpKTtcblxuICAgIGNvbnN0IGlnbm9yZSA9IG5ldyBQYXNzKHRoaXMsICdJZ25vcmUnKTtcblxuICAgIHRoaXMuY2F0YWxvZ0J1aWxkZXIgPSBuZXcgQ2F0YWxvZ0J1aWxkZXIodGhpcywgJ0NhdGFsb2dCdWlsZGVyJywgcHJvcHMpO1xuXG4gICAgY29uc3QgYWRkVG9DYXRhbG9nID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZSh0aGlzLCAnQWRkIHRvIGNhdGFsb2cuanNvbicsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmNhdGFsb2dCdWlsZGVyLmZ1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQuY2F0YWxvZ0J1aWxkZXJPdXRwdXQnLFxuICAgICAgcmVzdWx0U2VsZWN0b3I6IHtcbiAgICAgICAgJ0VUYWcuJCc6ICckLlBheWxvYWQuRVRhZycsXG4gICAgICAgICdWZXJzaW9uSWQuJCc6ICckLlBheWxvYWQuVmVyc2lvbklkJyxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC8vIFRoaXMgaGFzIGEgY29uY3VycmVuY3kgb2YgMSwgc28gd2Ugd2FudCB0byBhZ2dyZXNzaXZlbHkgcmV0cnkgYmVpbmcgdGhyb3R0bGVkIGhlcmUuXG4gICAgICAuYWRkUmV0cnkoe1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICAuLi5USFJPVFRMRV9SRVRSWV9QT0xJQ1ksXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLlRhc2tGYWlsZWQnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSlcbiAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5BTEwnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBuZWVkc0NhdGFsb2dVcGRhdGVGdW5jdGlvbiA9IG5ldyBOZWVkc0NhdGFsb2dVcGRhdGUoXG4gICAgICB0aGlzLFxuICAgICAgJ05lZWRzQ2F0YWxvZ1VwZGF0ZScsXG4gICAgICB7XG4gICAgICAgIGFyY2hpdGVjdHVyZTogZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSh0aGlzKSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ1tDb25zdHJ1Y3RIdWIvT3JjaGVzdHJhdGlvbi9OZWVkc0NhdGFsb2dVcGRhdGVdIERldGVybWluZXMgd2hldGhlciBhIHBhY2thZ2UgdmVyc2lvbiByZXF1aXJlcyBhIGNhdGFsb2cgdXBkYXRlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBDQVRBTE9HX0JVQ0tFVF9OQU1FOiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBDQVRBTE9HX09CSkVDVF9LRVk6IENBVEFMT0dfS0VZLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vcnlTaXplOiAxXzAyNCxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH1cbiAgICApO1xuICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWQobmVlZHNDYXRhbG9nVXBkYXRlRnVuY3Rpb24pO1xuXG4gICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY2F0YWxvZyBuZWVkcyB1cGRhdGluZy4gSWYgc28sIHRyaWdnZXIgYWRkVG9DYXRhbG9nLlxuICAgIGNvbnN0IGFkZFRvQ2F0YWxvZ0lmTmVlZGVkID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZShcbiAgICAgIHRoaXMsXG4gICAgICAnQ2hlY2sgd2hldGhlciBjYXRhbG9nIG5lZWRzIHVkcGF0aW5nJyxcbiAgICAgIHtcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IG5lZWRzQ2F0YWxvZ1VwZGF0ZUZ1bmN0aW9uLFxuICAgICAgICBwYXlsb2FkUmVzcG9uc2VPbmx5OiB0cnVlLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5jYXRhbG9nTmVlZHNVcGRhdGluZycsXG4gICAgICB9XG4gICAgKVxuICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgJ0xhbWJkYS5Ub29NYW55UmVxdWVzdHNFeGNlcHRpb24nLFxuICAgICAgICAgICdMYW1iZGEuVW5rbm93bicsIC8vIGhhcHBlbnMgd2hlbiBhIGxhbWJkYSB0aW1lcyBvdXQuXG4gICAgICAgIF0sXG4gICAgICAgIC4uLlRIUk9UVExFX1JFVFJZX1BPTElDWSxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydMYW1iZGEuVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uJywgJ0xhbWJkYS5Vbmtub3duJ10sXG4gICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLkFMTCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBDaG9pY2UodGhpcywgJ0lzIGNhdGFsb2cgdXBkYXRlIG5lZWRlZD8nKVxuICAgICAgICAgIC53aGVuKFxuICAgICAgICAgICAgQ29uZGl0aW9uLmJvb2xlYW5FcXVhbHMoJyQuY2F0YWxvZ05lZWRzVXBkYXRpbmcnLCB0cnVlKSxcbiAgICAgICAgICAgIGFkZFRvQ2F0YWxvZ1xuICAgICAgICAgIClcbiAgICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdEb25lJykpXG4gICAgICApO1xuXG4gICAgLy8gQGNka3RuL3Byb3ZpZGVyLWF3c2NjIGlzIHRoZSBiaWdnZXN0IGtub3duIHBhY2thZ2UgKDMsOTc5IHN1Ym1vZHVsZXMpIGFuZCBydW5zIGluIH4xNW1pbixcbiAgICAvLyAoYXdzLWNkay1saWIgcnVucyBpbiB+OG1pbikuXG4gICAgLy8gV2UgZ2l2ZSB0aGUgdGFzayBzb21lIGV4dHJhIGFsbG93YW5jZSB0byBjb21wbGV0ZS5cbiAgICAvLyBJZiB0aGUgdGFzayBleGNlZWRzIHRoZSBydW50aW1lLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhlcmUgaXMgYW4gaXNzdWUgd2l0aCB0aGUgdGFzayBleGVjdXRpb24uXG4gICAgLy9cbiAgICAvLyBUaGUgdGltZW91dCB2YWx1ZSBpcyBkZWxpYmVyYXRlbHkgc2V0IGNsb3NlIHRvIHRoZSBleHBlY3RlZCBleGVjdXRpb24gdGltZSxcbiAgICAvLyB0byBhdm9pZCBhbiBleGNlc3NpdmUgY3VtdWxhdGl2ZSBydW50aW1lIHdpdGggcmV0cmllcyBhbmQgdG8gbm90IG5vcm1hbGl6ZSBsb25nZXIgdGhhbiBuZWNlc3NhcnkgcnVudGltZS5cbiAgICBjb25zdCB0cmFuc2xpdGVyYXRvclRpbWVvdXQgPSBEdXJhdGlvbi5taW51dGVzKDE4KTtcblxuICAgIHRoaXMuZWNzQ2x1c3RlciA9IG5ldyBDbHVzdGVyKHRoaXMsICdDbHVzdGVyJywge1xuICAgICAgY29udGFpbmVySW5zaWdodHM6IHRydWUsXG4gICAgICBlbmFibGVGYXJnYXRlQ2FwYWNpdHlQcm92aWRlcnM6IHRydWUsXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICB9KTtcbiAgICB0aGlzLmVjc1Rhc2tNb25pdG9yID0gbmV3IEVjc1Rhc2tNb25pdG9yKHRoaXMuZWNzQ2x1c3RlciwgJ01vbml0b3InLCB7XG4gICAgICBjbHVzdGVyOiB0aGlzLmVjc0NsdXN0ZXIsXG4gICAgICB0aW1lb3V0OiB0cmFuc2xpdGVyYXRvclRpbWVvdXQucGx1cyhEdXJhdGlvbi5taW51dGVzKDEwKSksXG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zbGl0ZXJhdG9yID0gbmV3IFRyYW5zbGl0ZXJhdG9yKHRoaXMsICdUcmFuc2xpdGVyYXRvcicsIHByb3BzKTtcblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBuZXcgUGFzcyh0aGlzLCAnVHJhY2sgRXhlY3V0aW9uIEluZm9zJywge1xuICAgICAgaW5wdXRQYXRoOiAnJCQuRXhlY3V0aW9uJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgJ0lkLiQnOiAnJC5JZCcsXG4gICAgICAgICdOYW1lLiQnOiAnJC5OYW1lJyxcbiAgICAgICAgJ1JvbGVBcm4uJCc6ICckLlJvbGVBcm4nLFxuICAgICAgICAnU3RhcnRUaW1lLiQnOiAnJC5TdGFydFRpbWUnLFxuICAgICAgfSxcbiAgICAgIHJlc3VsdFBhdGg6ICckLiRUYXNrRXhlY3V0aW9uJyxcbiAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBQYXNzKHRoaXMsICdQcmVwYXJlIGRvYy1nZW4gRUNTIENvbW1hbmQnLCB7XG4gICAgICAgICAgcGFyYW1ldGVyczogeyAnY29tbWFuZC4kJzogJ1N0YXRlcy5BcnJheShTdGF0ZXMuSnNvblRvU3RyaW5nKCQpKScgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5kb2NHZW4nLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLm5leHQoXG4gICAgICAgIHRoaXMudHJhbnNsaXRlcmF0b3JcbiAgICAgICAgICAuY3JlYXRlRWNzUnVuVGFzayh0aGlzLCAnR2VuZXJhdGUgZG9jcycsIHtcbiAgICAgICAgICAgIGNsdXN0ZXI6IHRoaXMuZWNzQ2x1c3RlcixcbiAgICAgICAgICAgIGlucHV0UGF0aDogJyQuZG9jR2VuLmNvbW1hbmQnLFxuICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBmcm9tIHRoZSB0cmFuc2xpdGVyYXRvciB0YXNrIGlzIG5vdCB1c2VkXG4gICAgICAgICAgICAvLyB3ZSBqdXN0IG5lZWQgdG8ga25vdyBpZiBpdCBzdWNjZWVkZWRcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgICAvLyBhd3MtY2RrLWxpYiBzdWNjZWVkcyBpbiByb3VnaGx5IDEgaG91ciwgc28gdGhpcyBzaG91bGQgZ2l2ZSB1c1xuICAgICAgICAgICAgLy8gZW5vdWdoIG9mIGEgYnVmZmVyIGFuZCBwcm9iYWJseSBhY2NvdW50IGZvciBhbGwgb3RoZXIgbGlicmFyaWVzIG91dCB0aGVyZS5cbiAgICAgICAgICAgIHRpbWVvdXQ6IHRyYW5zbGl0ZXJhdG9yVGltZW91dCxcbiAgICAgICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnZwY1N1Ym5ldHMsXG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwczogcHJvcHMudnBjU2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgICAvLyBUaGUgdGFzayBjb2RlIHNlbmRzIGEgaGVhcnRiZWF0IGJhY2sgZXZlcnkgbWludXRlLCBidXQgaW4gcmFyZVxuICAgICAgICAgICAgLy8gY2FzZXMgdGhlIGZpcnN0IGhlYXJ0YmVhdCBtYXkgdGFrZSBhIHdoaWxlIHRvIGNvbWUgYmFjayBkdWUgdG9cbiAgICAgICAgICAgIC8vIHRoZSB0aW1lIGl0IHRha2VzIHRvIHByb3Zpc2lvbiB0aGUgdGFzayBpbiB0aGUgY2x1c3Rlciwgc28gd2VcbiAgICAgICAgICAgIC8vIGdpdmUgYSBtb3JlIGdlbmVyb3VzIGJ1ZmZlciBoZXJlLlxuICAgICAgICAgICAgaGVhcnRiZWF0OiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLy8gRG8gbm90IHJldHJ5IE5vU3BhY2VMZWZ0T25EZXZpY2UgZXJyb3JzLCB0aGVzZSBhcmUgdHlwaWNhbGx5IG5vdCB0cmFuc2llbnQuXG4gICAgICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgICAgIGVycm9yczogWydqc2lpLWRvY2dlbi5Ob1NwYWNlTGVmdE9uRGV2aWNlJ10sXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICBlcnJvcnM6IFtcbiAgICAgICAgICAgICAgJ0VDUy5BbWF6b25FQ1NFeGNlcHRpb24nLCAvLyBUYXNrIGZhaWxlZCBzdGFydGluZywgdXN1YWxseSBkdWUgdG8gdGhyb3R0bGUgLyBvdXQgb2YgY2FwYWNpdHlcbiAgICAgICAgICAgICAgJ0VDUy5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uJywgLy8gVGhpcyBpcyByZXR1cm5lZCB3aGVuIEVDUyBnZXRzIHRocm90dGxlZCB3aGVuIHRyeWluZyB0byBhY2Nlc3MgVlBDL1NHcy5cbiAgICAgICAgICAgICAgJ2pzaWktZG9jZ2VuLk5wbUVycm9yLkU0MjknLCAvLyBIVFRQIDQyOSAoXCJUb28gTWFueSBSZXF1ZXN0c1wiKSBmcm9tIENvZGVBcnRpZmFjdCdzIFMzIGJ1Y2tldFxuICAgICAgICAgICAgICAnanNpaS1jb2RnZW4uTnBtRXJyb3IuRVBST1RPJywgLy8gU3BvcmFkaWMgVExTIG5lZ290aWF0aW9uIGZhaWx1cmVzIHdlIHNlZSBpbiBsb2dzLCB0cmFuc2llbnRcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAuLi5ET0NHRU5fVEhST1RUTEVfUkVUUllfUE9MSUNZLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgICAgIGVycm9yczogWydqc2lpLWRvY2dlbi5OcG1FcnJvci5FVEFSR0VUJ10sIC8vIFNlZW4gd2hlbiBkZXBlbmRlbmNpZXMgYXJlbid0IGF2YWlsYWJsZSB5ZXRcbiAgICAgICAgICAgIC8vIFdlJ2xsIHdhaXQgbG9uZ2VyIGJldHdlZW4gcmV0cmllcy4gVGhpcyBpcyB0byBhY2NvdW50IGZvciBDb2RlQXJ0aWZhY3QncyBsYWcgYmVoaW5kIG5wbVxuICAgICAgICAgICAgYmFja29mZlJhdGU6IDIsXG4gICAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAzLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgICAgIC8vIFRoZSB0YXNrIGhhcyBmYWlsZWQgZm9yIGFuIHVua25vd24gcmVhc29uLCBvciBzdG9wcGVkIHJlc3BvbmRpbmcsIG9yIGlzIGp1c3QgdGFraW5nIGEgbG9uZyB0aW1lIHRvIHByb3Zpc2lvblxuICAgICAgICAgICAgLy8gV2Ugd2lsbCBhdHRlbXB0IGEgY291cGxlIG9mIHJldHJpZXMgd2l0aCBzb21lIHRpbWUgaW4gYmV0d2Vlbi5cbiAgICAgICAgICAgIC8vIFRoaXMgYWxzbyBjb3ZlcnMgdGhlICdTdGF0ZXMuVGltZW91dCcgZXJyb3IsIGJ1dCB3ZSBhcmUgbm90IGdpdmluZyB0aW1lb3V0IGVycm9yIGFueSBzcGVjaWFsIHRyZWF0bWVudC5cbiAgICAgICAgICAgIC8vIElmIHRoZSB0YXNrIHRpbWVvdXQgaXMgcmVhY2hlZCwgaXQgaXMgbW9zdCBsaWtlbHkgYW4gaXNzdWUgd2l0aCB0aGUgdGFzayB0aGF0IG5lZWRzIGludmVzdGlnYXRpb24uXG4gICAgICAgICAgICBiYWNrb2ZmUmF0ZTogMixcbiAgICAgICAgICAgIGludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAyLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKGlnbm9yZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbVU5QUk9DRVNTQUJMRV9QQUNLQUdFX0VSUk9SX05BTUVdLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5UaW1lb3V0J10sXG4gICAgICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgICAgICBlcnJvcnM6IFsnRUNTLkFtYXpvbkVDU0V4Y2VwdGlvbicsICdFQ1MuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5UYXNrRmFpbGVkJ10sXG4gICAgICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLkFMTCddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm5leHQoYWRkVG9DYXRhbG9nSWZOZWVkZWQpXG4gICAgICApO1xuXG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRlZmluaXRpb24sXG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBzdGF0ZU1hY2hpbmVOYW1lRnJvbSh0aGlzLm5vZGUucGF0aCksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5kYXlzKDEpLCAvLyBBbXBsZSB0aW1lIGZvciByZXRyaWVzLCBldGMuLi5cbiAgICAgIHRyYWNpbmdFbmFibGVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnZwYykge1xuICAgICAgLy8gRW5zdXJlIHRoZSBTdGF0ZSBNYWNoaW5lIGRvZXMgbm90IGdldCB0byBydW4gYmVmb3JlIHRoZSBWUEMgY2FuIGJlIHVzZWQuXG4gICAgICB0aGlzLnN0YXRlTWFjaGluZS5ub2RlLmFkZERlcGVuZGVuY3koXG4gICAgICAgIHByb3BzLnZwYy5pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkXG4gICAgICApO1xuICAgIH1cblxuICAgIGFkZEFsYXJtKFxuICAgICAgJ0JhY2tlbmQgT3JjaGVzdHJhdGlvbiBGYWlsZWQnLFxuICAgICAgdGhpcy5zdGF0ZU1hY2hpbmVcbiAgICAgICAgLm1ldHJpY0ZhaWxlZCgpXG4gICAgICAgIC5jcmVhdGVBbGFybSh0aGlzLCAnT3JjaGVzdHJhdGlvbkZhaWxlZCcsIHtcbiAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuc3RhdGVNYWNoaW5lLm5vZGUucGF0aH0vJHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVNYWNoaW5lLm1ldHJpY0ZhaWxlZCgpLm1ldHJpY05hbWVcbiAgICAgICAgICB9YCxcbiAgICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICAnQmFja2VuZCBvcmNoZXN0cmF0aW9uIGZhaWxlZCEnLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBgRGlyZWN0IGxpbmsgdG8gc3RhdGUgbWFjaGluZTogJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGVNYWNoaW5lXG4gICAgICAgICAgICApfWAsXG4gICAgICAgICAgICAnV2FybmluZzogbWVzc2FnZXMgdGhhdCByZXN1bHRlZCBpbiBhIGZhaWxlZCBleGVjdHVpb24gd2lsbCBOT1QgYmUgaW4gdGhlIERMUSEnLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB9KSxcbiAgICAgIEFsYXJtU2V2ZXJpdHkuSElHSCxcbiAgICAgIHByb3BzLm1vbml0b3JpbmdcbiAgICApO1xuXG4gICAgcHJvcHMubW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgICdFeGVjdXRpb24gRmFpbHVyZSBSYXRlIGFib3ZlIDc1JScsXG4gICAgICB0aGlzLm1ldHJpY1N0YXRlc0V4ZWN1dGlvbkZhaWx1cmVSYXRlKCkuY3JlYXRlQWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdGYWlsdXJlUmF0ZUFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5zdGF0ZU1hY2hpbmUubm9kZS5wYXRofS9FeGVjdXRpb25GYWlsdXJlUmF0ZWAsXG4gICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogJ0V4ZWN1dGlvbiBGYWlsdXJlIFJhdGUgYWJvdmUgNzUlJyxcbiAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6XG4gICAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDc1LFxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgbWFudWFsbHkgdHJpZ2dlcmVkIGJ5IGFuIG9wZXJyYXRvciB0b1xuICAgIC8vIGF0dGVtcHQgcmVkcml2aW5nIG1lc3NhZ2VzIGZyb20gdGhlIERMUS5cbiAgICB0aGlzLnJlZHJpdmVGdW5jdGlvbiA9IG5ldyBSZWRyaXZlU3RhdGVNYWNoaW5lKHRoaXMsICdSZWRyaXZlJywge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdbQ29uc3RydWN0SHViL1JlZHJpdmVdIE1hbnVhbGx5IHJlZHJpdmVzIGFsbCBtZXNzYWdlcyBmcm9tIHRoZSBiYWNrZW5kIGRlYWQgbGV0dGVyIHF1ZXVlJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNUQVRFX01BQ0hJTkVfQVJOOiB0aGlzLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4sXG4gICAgICAgIFFVRVVFX1VSTDogdGhpcy5kZWFkTGV0dGVyUXVldWUucXVldWVVcmwsXG4gICAgICB9LFxuICAgICAgbWVtb3J5U2l6ZTogMV8wMjQsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lLmdyYW50U3RhcnRFeGVjdXRpb24odGhpcy5yZWRyaXZlRnVuY3Rpb24pO1xuICAgIHRoaXMuZGVhZExldHRlclF1ZXVlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKHRoaXMucmVkcml2ZUZ1bmN0aW9uKTtcbiAgICBwcm9wcy5vdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICdPcmNoZXN0cmF0aW9uIERMUScsXG4gICAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZSxcbiAgICAgIHRoaXMucmVkcml2ZUZ1bmN0aW9uXG4gICAgKTtcblxuICAgIC8vIFRoZSB3b3JrZmxvdyBpcyBpbnRlbmRlZCB0byBiZSBtYW51YWxseSB0cmlnZ2VyZWQgYnkgYW4gb3BlcmF0b3IgdG9cbiAgICAvLyByZXByb2Nlc3MgYWxsIHBhY2thZ2UgdmVyc2lvbnMgY3VycmVudGx5IGluIHN0b3JlIHRocm91Z2ggdGhlIG9yY2hlc3RyYXRvci5cbiAgICBjb25zdCByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbiA9IG5ldyBSZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24nLFxuICAgICAge1xuICAgICAgICBidWNrZXQ6IHByb3BzLmJ1Y2tldCxcbiAgICAgICAgc3RhdGVNYWNoaW5lOiB0aGlzLnN0YXRlTWFjaGluZSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24gPSByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbi5zdGF0ZU1hY2hpbmU7XG4gICAgdGhpcy5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2UgPVxuICAgICAgcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24ucHJvY2Vzc1BhY2thZ2VWZXJzaW9ucztcblxuICAgIC8vIENyZWF0ZSByZXRyeSB1bmluc3RhbGxhYmxlIHBhY2thZ2VzIHdvcmtmbG93XG4gICAgY29uc3QgcmV0cnlVbmluc3RhbGxhYmxlID0gbmV3IFJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzKFxuICAgICAgdGhpcyxcbiAgICAgICdSZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlcycsXG4gICAgICB7XG4gICAgICAgIGJ1Y2tldDogcHJvcHMuYnVja2V0LFxuICAgICAgICBvcmNoZXN0cmF0aW9uU3RhdGVNYWNoaW5lOiB0aGlzLnN0YXRlTWFjaGluZSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucmV0cnlVbmluc3RhbGxhYmxlUGFja2FnZXMgPSByZXRyeVVuaW5zdGFsbGFibGUuc3RhdGVNYWNoaW5lO1xuXG4gICAgcHJvcHMub3ZlcnZpZXdEYXNoYm9hcmQuYWRkQ29uY3VycmVudEV4ZWN1dGlvbk1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgbmVlZHNDYXRhbG9nVXBkYXRlRnVuY3Rpb24sXG4gICAgICAnTmVlZHNDYXRhbG9nVXBkYXRlTGFtYmRhJ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljU3RhdGVzRXhlY3V0aW9uRmFpbHVyZVJhdGUoXG4gICAgb3B0cz86IE1hdGhFeHByZXNzaW9uT3B0aW9uc1xuICApOiBNYXRoRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAuLi5vcHRzLFxuICAgICAgLy8gQ2FsY3VsYXRlcyB0aGUgJSBFeGVjdXRpb25zRmFpbGVkIGZyb20gdGhlIEV4ZWN1dGlvbnNTdGFydGVkLlxuICAgICAgZXhwcmVzc2lvbjogJzEwMCAqIG1leGVjdXRpb25zRmFpbGVkIC8gbWV4ZWN1dGlvbnNTdGFydGVkJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtZXhlY3V0aW9uc0ZhaWxlZDogdGhpcy5tZXRyaWNTdGF0ZXNFeGVjdXRpb25zRmFpbGVkKCksXG4gICAgICAgIG1leGVjdXRpb25zU3RhcnRlZDogdGhpcy5tZXRyaWNTdGF0ZXNFeGVjdXRpb25zU3RhcnRlZCgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNTdGF0ZXNFeGVjdXRpb25zRmFpbGVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnRXhlY3V0aW9uc0ZhaWxlZCcsXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvU3RhdGVzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNTdGF0ZXNFeGVjdXRpb25zU3RhcnRlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgRXhlY3V0aW9uTWV0cmljczogdGhpcy5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnRXhlY3V0aW9uc1N0YXJ0ZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnQVdTL1N0YXRlcycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzVGFza0NvdW50KG9wdHM6IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IEV4ZWN1dGlvbk1ldHJpY3M6IHRoaXMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybiB9LFxuICAgICAgbWV0cmljTmFtZTogJ1Rhc2tDb3VudCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc0NwdVJlc2VydmVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ0NwdVJlc2VydmVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzQ3B1VXRpbGl6ZWQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnQ3B1VXRpbGl6ZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NDcHVVdGlsaXphdGlvbihvcHRzPzogTWF0aEV4cHJlc3Npb25PcHRpb25zKTogTWF0aEV4cHJlc3Npb24ge1xuICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIC8vIENhbGN1bGF0ZXMgdGhlICUgQ1BVIHV0aWxpemF0aW9uIGZyb20gdGhlIENQVSB1bml0cyB1dGlsaXphdGlvbiAmXG4gICAgICAvLyByZXNlcnZhdGlvbi4gRklMTCBpcyB1c2VkIHRvIG1ha2UgYSBub24tc3BhcnNlIHRpbWUtc2VyaWVzICh0aGUgbWV0cmljc1xuICAgICAgLy8gYXJlIG5vdCBlbWl0dGVkIGlmIG5vIHRhc2sgcnVucylcbiAgICAgIGV4cHJlc3Npb246ICcxMDAgKiBGSUxMKG1DcHVVdGlsaXplZCwgMCkgLyBGSUxMKG1DcHVSZXNlcnZlZCwgUkVQRUFUKScsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbUNwdVJlc2VydmVkOiB0aGlzLm1ldHJpY0Vjc0NwdVJlc2VydmVkKCksXG4gICAgICAgIG1DcHVVdGlsaXplZDogdGhpcy5tZXRyaWNFY3NDcHVVdGlsaXplZCgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NNZW1vcnlSZXNlcnZlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdNZW1vcnlSZXNlcnZlZCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc01lbW9yeVV0aWxpemVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ01lbW9yeVV0aWxpemVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzTWVtb3J5VXRpbGl6YXRpb24oXG4gICAgb3B0cz86IE1hdGhFeHByZXNzaW9uT3B0aW9uc1xuICApOiBNYXRoRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAuLi5vcHRzLFxuICAgICAgLy8gQ2FsY3VsYXRlcyB0aGUgJSBtZW1vcnkgdXRpbGl6YXRpb24gZnJvbSB0aGUgUkFNIHV0aWxpemF0aW9uICZcbiAgICAgIC8vIHJlc2VydmF0aW9uLiBGSUxMIGlzIHVzZWQgdG8gbWFrZSBhIG5vbi1zcGFyc2UgdGltZS1zZXJpZXMgKHRoZSBtZXRyaWNzXG4gICAgICAvLyBhcmUgbm90IGVtaXR0ZWQgaWYgbm8gdGFzayBydW5zKVxuICAgICAgZXhwcmVzc2lvbjpcbiAgICAgICAgJzEwMCAqIEZJTEwobU1lbW9yeVV0aWxpemVkLCAwKSAvIEZJTEwobU1lbW9yeVJlc2VydmVkLCBSRVBFQVQpJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtTWVtb3J5UmVzZXJ2ZWQ6IHRoaXMubWV0cmljRWNzTWVtb3J5UmVzZXJ2ZWQoKSxcbiAgICAgICAgbU1lbW9yeVV0aWxpemVkOiB0aGlzLm1ldHJpY0Vjc01lbW9yeVV0aWxpemVkKCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc05ldHdvcmtSeEJ5dGVzKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ05ldHdvcmtSeEJ5dGVzJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzTmV0d29ya1R4Qnl0ZXMob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnTmV0d29ya1R4Qnl0ZXMnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25Qcm9wcyB7XG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBJU3RhdGVNYWNoaW5lO1xufVxuXG5jbGFzcyBSZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZU1hY2hpbmU6IFN0YXRlTWFjaGluZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnM6IFN0YXRlTWFjaGluZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBSZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBwcm9jZXNzVmVyc2lvbnMgPSBuZXcgQ2hvaWNlKHRoaXMsICdHZXQgcGFja2FnZSB2ZXJzaW9ucyBwYWdlJylcbiAgICAgIC53aGVuKFxuICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ05leHQgdmVyc2lvbnMgcGFnZScsIHtcbiAgICAgICAgICBzZXJ2aWNlOiAnczMnLFxuICAgICAgICAgIGFjdGlvbjogJ2xpc3RPYmplY3RzVjInLFxuICAgICAgICAgIGlhbUFjdGlvbjogJ3MzOkxpc3RCdWNrZXQnLFxuICAgICAgICAgIGlhbVJlc291cmNlczogW3Byb3BzLmJ1Y2tldC5idWNrZXRBcm5dLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBDb250aW51YXRpb25Ub2tlbjogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbidcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBEZWxpbWl0ZXI6ICcvJyxcbiAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAub3RoZXJ3aXNlKFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0ZpcnN0IHZlcnNpb25zIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLmFmdGVyd2FyZHMoKVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBNYXAodGhpcywgJ0ZvciBlYWNoIGtleSBwcmVmaXgnLCB7XG4gICAgICAgICAgaXRlbXNQYXRoOiAnJC5yZXNwb25zZS5Db21tb25QcmVmaXhlcycsXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkuaXRlcmF0b3IoXG4gICAgICAgICAgbmV3IHRhc2tzLlN0ZXBGdW5jdGlvbnNTdGFydEV4ZWN1dGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAnU3RhcnQgT3JjaGVzdHJhdGlvbiBXb3JrZmxvdycsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRlTWFjaGluZTogcHJvcHMuc3RhdGVNYWNoaW5lLFxuICAgICAgICAgICAgICBhc3NvY2lhdGVXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBpbnB1dDogVGFza0lucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgICAgICAgIGJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICAgICAgYXNzZW1ibHk6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICAgICAgIGBTdGF0ZXMuRm9ybWF0KCd7fSR7QVNTRU1CTFlfS0VZX1NVRkZJWC5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApfScsICQuUHJlZml4KWBcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICAgICAga2V5OiBKc29uUGF0aC5zdHJpbmdBdChcbiAgICAgICAgICAgICAgICAgICAgYFN0YXRlcy5Gb3JtYXQoJ3t9JHtNRVRBREFUQV9LRVlfU1VGRklYLnN1YnN0cihcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICl9JywgJC5QcmVmaXgpYFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhY2thZ2U6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICAgICAgIGBTdGF0ZXMuRm9ybWF0KCd7fSR7UEFDS0FHRV9LRVlfU1VGRklYLnN1YnN0cihcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICl9JywgJC5QcmVmaXgpYFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgaW50ZWdyYXRpb25QYXR0ZXJuOiBJbnRlZ3JhdGlvblBhdHRlcm4uUkVRVUVTVF9SRVNQT05TRSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgICAuYWRkUmV0cnkoeyBlcnJvcnM6IFsnU3RlcEZ1bmN0aW9ucy5FeGVjdXRpb25MaW1pdEV4Y2VlZGVkJ10gfSlcbiAgICAgICAgICAgIC5hZGRDYXRjaChuZXcgU3VjY2VlZChwcm9wcy5zdGF0ZU1hY2hpbmUsICdTdGF0ZU1hY2hpbmUgU3VjY2VzcycpLCB7XG4gICAgICAgICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgcHJvY2Vzc1ZlcnNpb25zLm5leHQoXG4gICAgICBuZXcgQ2hvaWNlKHRoaXMsICdIYXMgbW9yZSB2ZXJzaW9ucz8nKVxuICAgICAgICAud2hlbihcbiAgICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICAgIHByb2Nlc3NWZXJzaW9uc1xuICAgICAgICApXG4gICAgICAgIC5vdGhlcndpc2UobmV3IFN1Y2NlZWQodGhpcywgJ1N1Y2Nlc3MnKSlcbiAgICApO1xuICAgIGNvbnN0IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnMgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdQZXJQYWNrYWdlJywge1xuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogUkVQUk9DRVNTX1BFUl9QQUNLQUdFX1NUQVRFX01BQ0hJTkVfTkFNRSxcbiAgICAgIGRlZmluaXRpb246IHByb2Nlc3NWZXJzaW9ucyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLmhvdXJzKDEpLFxuICAgICAgdHJhY2luZ0VuYWJsZWQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9jZXNzUGFja2FnZVZlcnNpb25zID0gcHJvY2Vzc1BhY2thZ2VWZXJzaW9ucztcblxuICAgIC8vIFRoaXMgd29ya2Zsb3cgaXMgYnJva2VuIGludG8gdHdvIHN1Yi13b3JrZmxvd3MgYmVjYXVzZSBvdGhlcndpc2UgaXQgaGl0cyB0aGUgMjVLIGV2ZW50cyBsaW1pdFxuICAgIC8vIG9mIFN0ZXBGdW5jdGlvbiBleGVjdXRpb25zIHJlbGF0aXZlbHkgcXVpY2tseS5cbiAgICBjb25zdCBwcm9jZXNzTmFtZXNwYWNlID0gbmV3IENob2ljZSh0aGlzLCAnR2V0IEBzY29wZSBwYWdlJylcbiAgICAgIC53aGVuKFxuICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ05leHQgQHNjb3BlIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgQ29udGludWF0aW9uVG9rZW46IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLm90aGVyd2lzZShcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdGaXJzdCBAc2NvcGUgcGFnZScsIHtcbiAgICAgICAgICBzZXJ2aWNlOiAnczMnLFxuICAgICAgICAgIGFjdGlvbjogJ2xpc3RPYmplY3RzVjInLFxuICAgICAgICAgIGlhbUFjdGlvbjogJ3MzOkxpc3RCdWNrZXQnLFxuICAgICAgICAgIGlhbVJlc291cmNlczogW3Byb3BzLmJ1Y2tldC5idWNrZXRBcm5dLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBEZWxpbWl0ZXI6ICcvJyxcbiAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAuYWZ0ZXJ3YXJkcygpXG4gICAgICAubmV4dChcbiAgICAgICAgbmV3IE1hcCh0aGlzLCAnRm9yIGVhY2ggQHNjb3BlL3BrZycsIHtcbiAgICAgICAgICBpdGVtc1BhdGg6ICckLnJlc3BvbnNlLkNvbW1vblByZWZpeGVzJyxcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KS5pdGVyYXRvcihcbiAgICAgICAgICBuZXcgdGFza3MuU3RlcEZ1bmN0aW9uc1N0YXJ0RXhlY3V0aW9uKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICdQcm9jZXNzIHNjb3BlZCBwYWNrYWdlJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lOiBwcm9jZXNzUGFja2FnZVZlcnNpb25zLFxuICAgICAgICAgICAgICBhc3NvY2lhdGVXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBpbnB1dDogVGFza0lucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBpbnRlZ3JhdGlvblBhdHRlcm46IEludGVncmF0aW9uUGF0dGVybi5SVU5fSk9CLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnU3RlcEZ1bmN0aW9ucy5FeGVjdXRpb25MaW1pdEV4Y2VlZGVkJ10gfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICBwcm9jZXNzTmFtZXNwYWNlLm5leHQoXG4gICAgICBuZXcgQ2hvaWNlKHRoaXMsICdIYXMgbW9yZSBwYWNrYWdlcz8nKVxuICAgICAgICAud2hlbihcbiAgICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICAgIHByb2Nlc3NOYW1lc3BhY2VcbiAgICAgICAgKVxuICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdBbGwgRG9uZScpKVxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydCA9IG5ldyBDaG9pY2UodGhpcywgJ0dldCBwcmVmaXggcGFnZScpXG4gICAgICAud2hlbihcbiAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdOZXh0IHByZWZpeGVzIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgQ29udGludWF0aW9uVG9rZW46IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5vdGhlcndpc2UoXG4gICAgICAgIG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnRmlyc3QgcHJlZml4IHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5hZnRlcndhcmRzKClcbiAgICAgIC5uZXh0KFxuICAgICAgICBuZXcgTWFwKHRoaXMsICdGb3IgZWFjaCBwcmVmaXgnLCB7XG4gICAgICAgICAgaXRlbXNQYXRoOiAnJC5yZXNwb25zZS5Db21tb25QcmVmaXhlcycsXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkuaXRlcmF0b3IoXG4gICAgICAgICAgbmV3IENob2ljZSh0aGlzLCAnSXMgdGhpcyBhIEBzY29wZS8gcHJlZml4PycpXG4gICAgICAgICAgICAud2hlbihcbiAgICAgICAgICAgICAgQ29uZGl0aW9uLnN0cmluZ01hdGNoZXMoJyQuUHJlZml4JywgYCR7U1RPUkFHRV9LRVlfUFJFRklYfUAqYCksXG4gICAgICAgICAgICAgIHByb2Nlc3NOYW1lc3BhY2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5vdGhlcndpc2UoXG4gICAgICAgICAgICAgIG5ldyB0YXNrcy5TdGVwRnVuY3Rpb25zU3RhcnRFeGVjdXRpb24oXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAnUHJvY2VzcyB1bnNjb3BlZCBwYWNrYWdlJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0ZU1hY2hpbmU6IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnMsXG4gICAgICAgICAgICAgICAgICBhc3NvY2lhdGVXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgaW5wdXQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgUHJlZml4OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5QcmVmaXgnKSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgaW50ZWdyYXRpb25QYXR0ZXJuOiBJbnRlZ3JhdGlvblBhdHRlcm4uUlVOX0pPQixcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnU3RlcEZ1bmN0aW9ucy5FeGVjdXRpb25MaW1pdEV4Y2VlZGVkJ10gfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZnRlcndhcmRzKClcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIHN0YXJ0Lm5leHQoXG4gICAgICBuZXcgQ2hvaWNlKHRoaXMsICdIYXMgbW9yZSBwcmVmaXhlcz8nKVxuICAgICAgICAud2hlbihDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLCBzdGFydClcbiAgICAgICAgLm90aGVyd2lzZShuZXcgU3VjY2VlZCh0aGlzLCAnRG9uZScpKVxuICAgICk7XG5cbiAgICB0aGlzLnN0YXRlTWFjaGluZSA9IG5ldyBTdGF0ZU1hY2hpbmUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZGVmaW5pdGlvbjogc3RhcnQsXG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBzdGF0ZU1hY2hpbmVOYW1lRnJvbSh0aGlzLm5vZGUucGF0aCksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5ob3Vycyg0KSxcbiAgICAgIHRyYWNpbmdFbmFibGVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZChwcm9jZXNzUGFja2FnZVZlcnNpb25zKTtcbiAgICBwcm9wcy5idWNrZXQuZ3JhbnRSZWFkKHRoaXMuc3RhdGVNYWNoaW5lKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgdHVybnMgYSBub2RlIHBhdGggaW50byBhIHZhbGlkIHN0YXRlIG1hY2hpbmUgbmFtZSwgdG8gdHJ5IGFuZCBpbXByb3ZlXG4gKiB0aGUgU3RlcEZ1bmN0aW9uJ3MgQVdTIGNvbnNvbGUgZXhwZXJpZW5jZSB3aGlsZSBtaW5pbWl6aW5nIHRoZSByaXNrIGZvclxuICogY29sbGlzb25zLlxuICovXG5mdW5jdGlvbiBzdGF0ZU1hY2hpbmVOYW1lRnJvbShub2RlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gUG9vciBtYW4ncyByZXBsYWNlIGFsbC4uLlxuICByZXR1cm4gbm9kZVBhdGguc3BsaXQoL1teYS16MC05KyFALigpPV8nLV0rL2kpLmpvaW4oJy4nKTtcbn1cbiJdfQ==
709
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC9vcmNoZXN0cmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUF1QztBQUN2QywrREFRb0M7QUFFcEMsaURBQXdEO0FBQ3hELHVEQUE0RDtBQUc1RCxpREFBcUU7QUFDckUscUVBWXVDO0FBQ3ZDLDJFQUE2RDtBQUM3RCwyQ0FBdUM7QUFDdkMsaUVBQTREO0FBQzVELG1FQUE4RDtBQUM5RCxpRkFBNEU7QUFDNUUsbUNBQTBDO0FBRTFDLCtDQUErRDtBQUMvRCxpREFBd0Q7QUFFeEQsbURBQWdEO0FBQ2hELGtFQUFvRTtBQUNwRSx3REFBb0Q7QUFFcEQsMERBQXFEO0FBRXJELG1EQU82QjtBQUM3QixzREFBK0U7QUFFL0UsTUFBTSx3Q0FBd0MsR0FDNUMsa0NBQWtDLENBQUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixXQUFXLEVBQUUsR0FBRztJQUNoQixRQUFRLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFdBQVcsRUFBRSxFQUFFO0NBQ2hCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsUUFBUSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3Qix1RUFBdUU7SUFDdkUsV0FBVyxFQUFFLEdBQUc7SUFDaEIsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQTZERjs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBQzFDOzs7T0FHRztJQUNhLFlBQVksQ0FBZ0I7SUFFNUM7OztPQUdHO0lBQ2EsZUFBZSxDQUFTO0lBRXhDOzs7T0FHRztJQUNhLGVBQWUsQ0FBWTtJQUUzQzs7O09BR0c7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LENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBNYXRoRXhwcmVzc2lvbixcbiAgTWF0aEV4cHJlc3Npb25PcHRpb25zLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgU3VibmV0U2VsZWN0aW9uLCBWcGMsIElTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDbHVzdGVyLCBJQ2x1c3RlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uLCBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBJUXVldWUsIFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7XG4gIENob2ljZSxcbiAgQ29uZGl0aW9uLFxuICBJbnRlZ3JhdGlvblBhdHRlcm4sXG4gIElTdGF0ZU1hY2hpbmUsXG4gIEpzb25QYXRoLFxuICBNYXAsXG4gIFBhc3MsXG4gIFN0YXRlTWFjaGluZSxcbiAgU3VjY2VlZCxcbiAgRmFpbCxcbiAgVGFza0lucHV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgKiBhcyB0YXNrcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE5lZWRzQ2F0YWxvZ1VwZGF0ZSB9IGZyb20gJy4vbmVlZHMtY2F0YWxvZy11cGRhdGUnO1xuaW1wb3J0IHsgUmVkcml2ZVN0YXRlTWFjaGluZSB9IGZyb20gJy4vcmVkcml2ZS1zdGF0ZS1tYWNoaW5lJztcbmltcG9ydCB7IFJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzIH0gZnJvbSAnLi9yZXRyeS11bmluc3RhbGxhYmxlLXBhY2thZ2VzJztcbmltcG9ydCB7IEFsYXJtU2V2ZXJpdHkgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2NvZGVhcnRpZmFjdC9yZXBvc2l0b3J5JztcbmltcG9ydCB7IHNxc1F1ZXVlVXJsLCBzdGF0ZU1hY2hpbmVVcmwgfSBmcm9tICcuLi8uLi9kZWVwLWxpbmsnO1xuaW1wb3J0IHsgTW9uaXRvcmluZywgYWRkQWxhcm0gfSBmcm9tICcuLi8uLi9tb25pdG9yaW5nJztcbmltcG9ydCB7IE92ZXJ2aWV3RGFzaGJvYXJkIH0gZnJvbSAnLi4vLi4vb3ZlcnZpZXctZGFzaGJvYXJkJztcbmltcG9ydCB7IFJVTkJPT0tfVVJMIH0gZnJvbSAnLi4vLi4vcnVuYm9vay11cmwnO1xuaW1wb3J0IHsgZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSB9IGZyb20gJy4uL19sYW1iZGEtYXJjaGl0ZWN0dXJlJztcbmltcG9ydCB7IENhdGFsb2dCdWlsZGVyIH0gZnJvbSAnLi4vY2F0YWxvZy1idWlsZGVyJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi4vZGVueS1saXN0JztcbmltcG9ydCB7IEVjc1Rhc2tNb25pdG9yIH0gZnJvbSAnLi4vZWNzLXRhc2stbW9uaXRvcic7XG5pbXBvcnQgeyBGZWVkQnVpbGRlciB9IGZyb20gJy4uL2ZlZWQtYnVpbGRlcic7XG5pbXBvcnQge1xuICBBU1NFTUJMWV9LRVlfU1VGRklYLFxuICBNRVRBREFUQV9LRVlfU1VGRklYLFxuICBQQUNLQUdFX0tFWV9TVUZGSVgsXG4gIFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgQ0FUQUxPR19LRVksXG4gIFVOUFJPQ0VTU0FCTEVfUEFDS0FHRV9FUlJPUl9OQU1FLFxufSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zbGl0ZXJhdG9yLCBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cyB9IGZyb20gJy4uL3RyYW5zbGl0ZXJhdG9yJztcblxuY29uc3QgUkVQUk9DRVNTX1BFUl9QQUNLQUdFX1NUQVRFX01BQ0hJTkVfTkFNRSA9XG4gICdSZXByb2Nlc3NEb2N1bWVudGF0aW9uUGVyUGFja2FnZSc7XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgYWxsIGl0ZW1zIGluIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogQWZ0ZXIgMzAgYXR0ZW1wdHMsIGdpdmVuIHRoZSBwYXJhbWV0ZXJzLCB0aGUgbGFzdCBhdHRlbXB0IHdpbGwgd2FpdCBqdXN0XG4gKiB1bmRlciAxNiBtaW51dGVzLCB3aGljaCBzaG91bGQgYmUgZW5vdWdoIGZvciBjdXJyZW50bHkgcnVubmluZyBMYW1iZGFcbiAqIGZ1bmN0aW9ucyB0byBjb21wbGV0ZSAob3IgdGltZSBvdXQgYWZ0ZXIgMTUgbWludXRlcykuIFRoZSB0b3RhbCB0aW1lIHNwZW50XG4gKiB3YWl0aW5nIGJldHdlZW4gcmV0cmllcyBieSB0aGlzIHRpbWUgaXMganVzdCBvdmVyIDMgaG91cnMuIFRoaXMgaXMgYSBsb3Qgb2ZcbiAqIHRpbWUsIGJ1dCBpbiBleHRyZW1lIGJ1cnN0IHNpdHVhdGlvbnMgKGkuZTogcmVwcm9jZXNzaW5nIGV2ZXJ5dGhpbmcpLCB0aGlzXG4gKiBpcyBhY3R1YWxseSBhIGdvb2QgdGhpbmcuXG4gKi9cbmNvbnN0IFRIUk9UVExFX1JFVFJZX1BPTElDWSA9IHtcbiAgYmFja29mZlJhdGU6IDEuMSxcbiAgaW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gIG1heEF0dGVtcHRzOiAzMCxcbn07XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgdHJhbnNsaXRlcmF0aW9uIHRhc2tzIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogVGhlIGludGVydmFsIGlzIGRldGVybWluZWQgYnkgdGhlIGV4ZWN1dGlvbiBkdXJhdGlvbiB3ZSBjdXJyZW50bHkgZXhwZWN0IGZyb20ganNpaS1kb2NnZW4uXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvanNpaS1kb2NnZW4vYmxvYi9tYWluL3Rlc3QvZG9jZ2VuL3ZpZXcvZG9jdW1lbnRhdGlvbi50ZXN0LnRzI0wxMy5cbiAqXG4gKiBBcHBseSBhIGJpdCBvZiBiYWNrb2ZmIGJlY2F1c2Ugb3RoZXJ3aXNlIGluIGNhc2VzIG9mIGNvbnRlbnRpb24gd2UncmUgaGFtbWVyaW5nIHRoZSBFQ1NcbiAqIGZyb250ZW5kIHNlcnZpY2UuXG4gKi9cbmNvbnN0IERPQ0dFTl9USFJPVFRMRV9SRVRSWV9QT0xJQ1kgPSB7XG4gIGludGVydmFsOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAvLyAxIG1pbnV0ZSAqIDEuMV40NSAvIGxuKDEuMSkgfj0gbWF4IDEzIGhvdXJzIHRvdGFsIHRpbWUgZm9yIGEgcGFja2FnZVxuICBiYWNrb2ZmUmF0ZTogMS4xLFxuICBtYXhBdHRlbXB0czogNDUsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yY2hlc3RyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IGluIHdoaWNoIHRvIHNvdXJjZSBhc3NlbWJsaWVzIHRvIHRyYW5zbGl0ZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2RlQXJ0aWZhY3QgcmVnaXN0cnkgdG8gdXNlIGZvciByZWd1bGFyIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjb2RlQXJ0aWZhY3Q/OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgbW9uaXRvcmluZyBoYW5kbGVyIHRvIHJlZ2lzdGVyIGFsYXJtcyB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZzogTW9uaXRvcmluZztcblxuICAvKipcbiAgICogVGhlIG92ZXJ2aWV3IGRhc2hib2FyZCB0byByZWdpc3RlciBkYXNoYm9hcmRzIHdpdGguXG4gICAqL1xuICByZWFkb25seSBvdmVydmlld0Rhc2hib2FyZDogT3ZlcnZpZXdEYXNoYm9hcmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgaW4gd2hpY2ggdG8gcGxhY2UgbmV0d29ya2VkIHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IFZwYztcblxuICAvKipcbiAgICogVGhlIFZQQyBzdWJuZXQgc2VsZWN0aW9uIHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFZQQyBlbmRwb2ludHMgdG8gdXNlIGZvciBpbnRlcmFjdGluZyB3aXRoIENvZGVBcnRpZmFjdCBhbmQgUzMuXG4gICAqL1xuICByZWFkb25seSB2cGNFbmRwb2ludHM/OiBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cztcblxuICAvKipcbiAgICogVlBDIFNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgRUNTIHRhc2tzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU2VjdXJpdHlHcm91cHM/OiBJU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyBzaG91bGQgZXhlY3V0aW9uIGxvZ3MgYmUgcmV0YWluZWQ/XG4gICAqXG4gICAqIEBkZWZhdWx0IFJldGVudGlvbkRheXMuVEVOX1lFQVJTXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBSZXRlbnRpb25EYXlzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVueUxpc3Q6IERlbnlMaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0IHRoYXQgZ2VuZXJhdGVzIFJTUy9BVE9NIGZlZWRcbiAgICovXG4gIHJlYWRvbmx5IGZlZWRCdWlsZGVyOiBGZWVkQnVpbGRlcjtcbn1cblxuLyoqXG4gKiBPcmNoZXN0cmF0ZXMgdGhlIGJhY2tlbmQgcHJvY2Vzc2luZyB0YXNrcyB1c2luZyBhIFN0ZXBGdW5jdGlvbnMgU3RhdGUgTWFjaGluZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE9yY2hlc3RyYXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIHN0YXRlIG1hY2hpbmUgdGhhdCBzaG91bGQgYmUgdHJpZ2dlcmVkIGZvciBzdGFydGluZyBiYWNrLWVuZCBwcm9jZXNzaW5nXG4gICAqIGZvciBhIG5ld2x5IGRpc2NvdmVyZWQgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZU1hY2hpbmU6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWFkIGxldHRlciBxdWV1ZSBmcm9tIHRoZSBzdGF0ZSBtYWNoaW5lLiBJbnB1dHMgYW5kIGVycm9ycyBhcmUgd3JpdHRlblxuICAgKiB0aGVyZSBpZiB0aGUgc3RhdGUgbWFjaGluZSBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWFkTGV0dGVyUXVldWU6IElRdWV1ZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJlZHJpdmUgbWVzc2FnZXMgZnJvbSB0aGUgZGVhZCBsZXR0ZXJcbiAgICogcXVldWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkcml2ZUZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBvcGVyYXRvcnMgY2FuIHVzZSB0byByZXByb2Nlc3MgYWxsIGluZGV4ZWQgcGFja2FnZXMgdGhyb3VnaFxuICAgKiB0aGUgYmFja2VuZCBkYXRhIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uOiBJU3RhdGVNYWNoaW5lO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gb3BlcmF0b3JzIGNhbiB1c2UgdG8gcmVwcm9jZXNzIGEgc3BlY2lmaWMgcGFja2FnZSB2ZXJzaW9uXG4gICAqIHRocm91Z2ggdGhlIGJhY2tlbmQgZGF0YSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2U6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBtYWNoaW5lIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJldHJ5IHByb2Nlc3NpbmcgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlczogSVN0YXRlTWFjaGluZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIHRoZSBjYXRhbG9nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2dCdWlsZGVyOiBDYXRhbG9nQnVpbGRlcjtcblxuICAvKipcbiAgICogVGhlIEVDUyBjbHVzdGVyIHVzZWQgdG8gcnVuIHRhc2tzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc0NsdXN0ZXI6IElDbHVzdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgRUNTIHRhc2sgbW9uaXRvciB0aGF0IHdhdGNoZXMgb3ZlciB0aGUgYGVjc0NsdXN0ZXJgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc1Rhc2tNb25pdG9yOiBFY3NUYXNrTW9uaXRvcjtcblxuICAvKipcbiAgICogVGhlIHRyYW5zbGl0ZXJhdG9yIHVzZWQgYnkgdGhpcyBvcmNoZXN0cmF0aW9uIHdvcmtmbG93LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zbGl0ZXJhdG9yOiBUcmFuc2xpdGVyYXRvcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE9yY2hlc3RyYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZSA9IG5ldyBRdWV1ZSh0aGlzLCAnRExRJywge1xuICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIHByb3BzLm1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdCYWNrZW5kIE9yY2hlc3RyYXRpb24gRGVhZC1MZXR0ZXIgUXVldWUgaXMgbm90IGVtcHR5JyxcbiAgICAgIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgIGV4cHJlc3Npb246ICdtMSArIG0yJyxcbiAgICAgICAgbGFiZWw6ICdEZWFkLUxldHRlciBRdWV1ZSBub3QgZW1wdHknLFxuICAgICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgICBtMTogdGhpcy5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbTI6IHRoaXMuZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSkuY3JlYXRlQWxhcm0odGhpcywgJ0RMUUFsYXJtJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuZGVhZExldHRlclF1ZXVlLm5vZGUucGF0aH0vTm90RW1wdHlgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ0JhY2tlbmQgb3JjaGVzdHJhdGlvbiBkZWFkLWxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHkuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBxdWV1ZTogJHtzcXNRdWV1ZVVybCh0aGlzLmRlYWRMZXR0ZXJRdWV1ZSl9YCxcbiAgICAgICAgICAnV2FybmluZzogU3RhdGUgTWFjaGluZXMgZXhlY3V0aW9ucyB0aGF0IHNlbnQgbWVzc2FnZXMgdG8gdGhlIERMUSB3aWxsIG5vdCBzaG93IGFzIFwiZmFpbGVkXCIuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAvLyBTUVMgZG9lcyBub3QgZW1pdCBtZXRyaWNzIGlmIHRoZSBxdWV1ZSBoYXMgYmVlbiBlbXB0eSBmb3IgYSB3aGlsZSwgd2hpY2ggaXMgR09PRC5cbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgc2VuZFRvRGVhZExldHRlclF1ZXVlID0gbmV3IHRhc2tzLlNxc1NlbmRNZXNzYWdlKFxuICAgICAgdGhpcyxcbiAgICAgICdTZW5kIHRvIERlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgIHtcbiAgICAgICAgbWVzc2FnZUJvZHk6IFRhc2tJbnB1dC5mcm9tSnNvblBhdGhBdCgnJCcpLFxuICAgICAgICBxdWV1ZTogdGhpcy5kZWFkTGV0dGVyUXVldWUsXG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9XG4gICAgKS5uZXh0KG5ldyBGYWlsKHRoaXMsICdTZW50IHRvIERMUScpKTtcblxuICAgIGNvbnN0IGlnbm9yZSA9IG5ldyBQYXNzKHRoaXMsICdJZ25vcmUnKTtcblxuICAgIHRoaXMuY2F0YWxvZ0J1aWxkZXIgPSBuZXcgQ2F0YWxvZ0J1aWxkZXIodGhpcywgJ0NhdGFsb2dCdWlsZGVyJywgcHJvcHMpO1xuXG4gICAgY29uc3QgYWRkVG9DYXRhbG9nID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZSh0aGlzLCAnQWRkIHRvIGNhdGFsb2cuanNvbicsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmNhdGFsb2dCdWlsZGVyLmZ1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQuY2F0YWxvZ0J1aWxkZXJPdXRwdXQnLFxuICAgICAgcmVzdWx0U2VsZWN0b3I6IHtcbiAgICAgICAgJ0VUYWcuJCc6ICckLlBheWxvYWQuRVRhZycsXG4gICAgICAgICdWZXJzaW9uSWQuJCc6ICckLlBheWxvYWQuVmVyc2lvbklkJyxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC8vIFRoaXMgaGFzIGEgY29uY3VycmVuY3kgb2YgMSwgc28gd2Ugd2FudCB0byBhZ2dyZXNzaXZlbHkgcmV0cnkgYmVpbmcgdGhyb3R0bGVkIGhlcmUuXG4gICAgICAuYWRkUmV0cnkoe1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICAuLi5USFJPVFRMRV9SRVRSWV9QT0xJQ1ksXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLlRhc2tGYWlsZWQnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSlcbiAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5BTEwnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBuZWVkc0NhdGFsb2dVcGRhdGVGdW5jdGlvbiA9IG5ldyBOZWVkc0NhdGFsb2dVcGRhdGUoXG4gICAgICB0aGlzLFxuICAgICAgJ05lZWRzQ2F0YWxvZ1VwZGF0ZScsXG4gICAgICB7XG4gICAgICAgIGFyY2hpdGVjdHVyZTogZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSh0aGlzKSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ1tDb25zdHJ1Y3RIdWIvT3JjaGVzdHJhdGlvbi9OZWVkc0NhdGFsb2dVcGRhdGVdIERldGVybWluZXMgd2hldGhlciBhIHBhY2thZ2UgdmVyc2lvbiByZXF1aXJlcyBhIGNhdGFsb2cgdXBkYXRlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBDQVRBTE9HX0JVQ0tFVF9OQU1FOiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBDQVRBTE9HX09CSkVDVF9LRVk6IENBVEFMT0dfS0VZLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vcnlTaXplOiAxXzAyNCxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH1cbiAgICApO1xuICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWQobmVlZHNDYXRhbG9nVXBkYXRlRnVuY3Rpb24pO1xuXG4gICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY2F0YWxvZyBuZWVkcyB1cGRhdGluZy4gSWYgc28sIHRyaWdnZXIgYWRkVG9DYXRhbG9nLlxuICAgIGNvbnN0IGFkZFRvQ2F0YWxvZ0lmTmVlZGVkID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZShcbiAgICAgIHRoaXMsXG4gICAgICAnQ2hlY2sgd2hldGhlciBjYXRhbG9nIG5lZWRzIHVkcGF0aW5nJyxcbiAgICAgIHtcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IG5lZWRzQ2F0YWxvZ1VwZGF0ZUZ1bmN0aW9uLFxuICAgICAgICBwYXlsb2FkUmVzcG9uc2VPbmx5OiB0cnVlLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5jYXRhbG9nTmVlZHNVcGRhdGluZycsXG4gICAgICB9XG4gICAgKVxuICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgJ0xhbWJkYS5Ub29NYW55UmVxdWVzdHNFeGNlcHRpb24nLFxuICAgICAgICAgICdMYW1iZGEuVW5rbm93bicsIC8vIGhhcHBlbnMgd2hlbiBhIGxhbWJkYSB0aW1lcyBvdXQuXG4gICAgICAgIF0sXG4gICAgICAgIC4uLlRIUk9UVExFX1JFVFJZX1BPTElDWSxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydMYW1iZGEuVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uJywgJ0xhbWJkYS5Vbmtub3duJ10sXG4gICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLkFMTCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBDaG9pY2UodGhpcywgJ0lzIGNhdGFsb2cgdXBkYXRlIG5lZWRlZD8nKVxuICAgICAgICAgIC53aGVuKFxuICAgICAgICAgICAgQ29uZGl0aW9uLmJvb2xlYW5FcXVhbHMoJyQuY2F0YWxvZ05lZWRzVXBkYXRpbmcnLCB0cnVlKSxcbiAgICAgICAgICAgIGFkZFRvQ2F0YWxvZ1xuICAgICAgICAgIClcbiAgICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdEb25lJykpXG4gICAgICApO1xuXG4gICAgLy8gQGNka3RuL3Byb3ZpZGVyLWF3c2NjIGlzIHRoZSBiaWdnZXN0IGtub3duIHBhY2thZ2UgKDMsOTc5IHN1Ym1vZHVsZXMpIGFuZCBydW5zIGluIH4xNW1pbixcbiAgICAvLyAoYXdzLWNkay1saWIgcnVucyBpbiB+OG1pbikuXG4gICAgLy8gV2UgZ2l2ZSB0aGUgdGFzayBzb21lIGdlbmVyb3VzIGV4dHJhIGFsbG93YW5jZSB0byBjb21wbGV0ZS5cbiAgICAvLyBJZiB0aGUgdGFzayBleGNlZWRzIHRoZSBydW50aW1lLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhlcmUgaXMgYW4gaXNzdWUgd2l0aCB0aGUgdGFzayBleGVjdXRpb24uXG4gICAgY29uc3QgdHJhbnNsaXRlcmF0b3JUaW1lb3V0ID0gRHVyYXRpb24ubWludXRlcygzMCk7XG5cbiAgICB0aGlzLmVjc0NsdXN0ZXIgPSBuZXcgQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgIGNvbnRhaW5lckluc2lnaHRzOiB0cnVlLFxuICAgICAgZW5hYmxlRmFyZ2F0ZUNhcGFjaXR5UHJvdmlkZXJzOiB0cnVlLFxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgfSk7XG4gICAgdGhpcy5lY3NUYXNrTW9uaXRvciA9IG5ldyBFY3NUYXNrTW9uaXRvcih0aGlzLmVjc0NsdXN0ZXIsICdNb25pdG9yJywge1xuICAgICAgY2x1c3RlcjogdGhpcy5lY3NDbHVzdGVyLFxuICAgICAgdGltZW91dDogdHJhbnNsaXRlcmF0b3JUaW1lb3V0LnBsdXMoRHVyYXRpb24ubWludXRlcygxMCkpLFxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2xpdGVyYXRvciA9IG5ldyBUcmFuc2xpdGVyYXRvcih0aGlzLCAnVHJhbnNsaXRlcmF0b3InLCBwcm9wcyk7XG5cbiAgICBjb25zdCBkZWZpbml0aW9uID0gbmV3IFBhc3ModGhpcywgJ1RyYWNrIEV4ZWN1dGlvbiBJbmZvcycsIHtcbiAgICAgIGlucHV0UGF0aDogJyQkLkV4ZWN1dGlvbicsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICdJZC4kJzogJyQuSWQnLFxuICAgICAgICAnTmFtZS4kJzogJyQuTmFtZScsXG4gICAgICAgICdSb2xlQXJuLiQnOiAnJC5Sb2xlQXJuJyxcbiAgICAgICAgJ1N0YXJ0VGltZS4kJzogJyQuU3RhcnRUaW1lJyxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiAnJC4kVGFza0V4ZWN1dGlvbicsXG4gICAgfSlcbiAgICAgIC5uZXh0KFxuICAgICAgICBuZXcgUGFzcyh0aGlzLCAnUHJlcGFyZSBkb2MtZ2VuIEVDUyBDb21tYW5kJywge1xuICAgICAgICAgIHBhcmFtZXRlcnM6IHsgJ2NvbW1hbmQuJCc6ICdTdGF0ZXMuQXJyYXkoU3RhdGVzLkpzb25Ub1N0cmluZygkKSknIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuZG9jR2VuJyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5uZXh0KFxuICAgICAgICB0aGlzLnRyYW5zbGl0ZXJhdG9yXG4gICAgICAgICAgLmNyZWF0ZUVjc1J1blRhc2sodGhpcywgJ0dlbmVyYXRlIGRvY3MnLCB7XG4gICAgICAgICAgICBjbHVzdGVyOiB0aGlzLmVjc0NsdXN0ZXIsXG4gICAgICAgICAgICBpbnB1dFBhdGg6ICckLmRvY0dlbi5jb21tYW5kJyxcbiAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgZnJvbSB0aGUgdHJhbnNsaXRlcmF0b3IgdGFzayBpcyBub3QgdXNlZFxuICAgICAgICAgICAgLy8gd2UganVzdCBuZWVkIHRvIGtub3cgaWYgaXQgc3VjY2VlZGVkXG4gICAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICAgICAgLy8gYXdzLWNkay1saWIgc3VjY2VlZHMgaW4gcm91Z2hseSAxIGhvdXIsIHNvIHRoaXMgc2hvdWxkIGdpdmUgdXNcbiAgICAgICAgICAgIC8vIGVub3VnaCBvZiBhIGJ1ZmZlciBhbmQgcHJvYmFibHkgYWNjb3VudCBmb3IgYWxsIG90aGVyIGxpYnJhcmllcyBvdXQgdGhlcmUuXG4gICAgICAgICAgICB0aW1lb3V0OiB0cmFuc2xpdGVyYXRvclRpbWVvdXQsXG4gICAgICAgICAgICB2cGNTdWJuZXRzOiBwcm9wcy52cGNTdWJuZXRzLFxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnZwY1NlY3VyaXR5R3JvdXBzLFxuICAgICAgICAgICAgLy8gVGhlIHRhc2sgY29kZSBzZW5kcyBhIGhlYXJ0YmVhdCBiYWNrIGV2ZXJ5IG1pbnV0ZSwgYnV0IGluIHJhcmVcbiAgICAgICAgICAgIC8vIGNhc2VzIHRoZSBmaXJzdCBoZWFydGJlYXQgbWF5IHRha2UgYSB3aGlsZSB0byBjb21lIGJhY2sgZHVlIHRvXG4gICAgICAgICAgICAvLyB0aGUgdGltZSBpdCB0YWtlcyB0byBwcm92aXNpb24gdGhlIHRhc2sgaW4gdGhlIGNsdXN0ZXIsIHNvIHdlXG4gICAgICAgICAgICAvLyBnaXZlIGEgbW9yZSBnZW5lcm91cyBidWZmZXIgaGVyZS5cbiAgICAgICAgICAgIGhlYXJ0YmVhdDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC8vIERvIG5vdCByZXRyeSBOb1NwYWNlTGVmdE9uRGV2aWNlIGVycm9ycywgdGhlc2UgYXJlIHR5cGljYWxseSBub3QgdHJhbnNpZW50LlxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICBlcnJvcnM6IFsnanNpaS1kb2NnZW4uTm9TcGFjZUxlZnRPbkRldmljZSddLFxuICAgICAgICAgICAgbWF4QXR0ZW1wdHM6IDAsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkUmV0cnkoe1xuICAgICAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgICAgICdFQ1MuQW1hem9uRUNTRXhjZXB0aW9uJywgLy8gVGFzayBmYWlsZWQgc3RhcnRpbmcsIHVzdWFsbHkgZHVlIHRvIHRocm90dGxlIC8gb3V0IG9mIGNhcGFjaXR5XG4gICAgICAgICAgICAgICdFQ1MuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbicsIC8vIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBFQ1MgZ2V0cyB0aHJvdHRsZWQgd2hlbiB0cnlpbmcgdG8gYWNjZXNzIFZQQy9TR3MuXG4gICAgICAgICAgICAgICdqc2lpLWRvY2dlbi5OcG1FcnJvci5FNDI5JywgLy8gSFRUUCA0MjkgKFwiVG9vIE1hbnkgUmVxdWVzdHNcIikgZnJvbSBDb2RlQXJ0aWZhY3QncyBTMyBidWNrZXRcbiAgICAgICAgICAgICAgJ2pzaWktY29kZ2VuLk5wbUVycm9yLkVQUk9UTycsIC8vIFNwb3JhZGljIFRMUyBuZWdvdGlhdGlvbiBmYWlsdXJlcyB3ZSBzZWUgaW4gbG9ncywgdHJhbnNpZW50XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLi4uRE9DR0VOX1RIUk9UVExFX1JFVFJZX1BPTElDWSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICBlcnJvcnM6IFsnanNpaS1kb2NnZW4uTnBtRXJyb3IuRVRBUkdFVCddLCAvLyBTZWVuIHdoZW4gZGVwZW5kZW5jaWVzIGFyZW4ndCBhdmFpbGFibGUgeWV0XG4gICAgICAgICAgICAvLyBXZSdsbCB3YWl0IGxvbmdlciBiZXR3ZWVuIHJldHJpZXMuIFRoaXMgaXMgdG8gYWNjb3VudCBmb3IgQ29kZUFydGlmYWN0J3MgbGFnIGJlaGluZCBucG1cbiAgICAgICAgICAgIGJhY2tvZmZSYXRlOiAyLFxuICAgICAgICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICAvLyBUaGUgdGFzayBoYXMgZmFpbGVkIGZvciBhbiB1bmtub3duIHJlYXNvbiwgb3Igc3RvcHBlZCByZXNwb25kaW5nLCBvciBpcyBqdXN0IHRha2luZyBhIGxvbmcgdGltZSB0byBwcm92aXNpb25cbiAgICAgICAgICAgIC8vIFdlIHdpbGwgYXR0ZW1wdCBhIGNvdXBsZSBvZiByZXRyaWVzIHdpdGggc29tZSB0aW1lIGluIGJldHdlZW4uXG4gICAgICAgICAgICAvLyBUaGlzIGFsc28gY292ZXJzIHRoZSAnU3RhdGVzLlRpbWVvdXQnIGVycm9yLCBidXQgd2UgYXJlIG5vdCBnaXZpbmcgdGltZW91dCBlcnJvciBhbnkgc3BlY2lhbCB0cmVhdG1lbnQuXG4gICAgICAgICAgICAvLyBJZiB0aGUgdGFzayB0aW1lb3V0IGlzIHJlYWNoZWQsIGl0IGlzIG1vc3QgbGlrZWx5IGFuIGlzc3VlIHdpdGggdGhlIHRhc2sgdGhhdCBuZWVkcyBpbnZlc3RpZ2F0aW9uLlxuICAgICAgICAgICAgYmFja29mZlJhdGU6IDIsXG4gICAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRDYXRjaChpZ25vcmUsIHtcbiAgICAgICAgICAgIGVycm9yczogW1VOUFJPQ0VTU0FCTEVfUEFDS0FHRV9FUlJPUl9OQU1FXSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgICAgIGVycm9yczogWydTdGF0ZXMuVGltZW91dCddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ0VDUy5BbWF6b25FQ1NFeGNlcHRpb24nLCAnRUNTLkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24nXSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5BTEwnXSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5uZXh0KGFkZFRvQ2F0YWxvZ0lmTmVlZGVkKVxuICAgICAgKTtcblxuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gbmV3IFN0YXRlTWFjaGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBkZWZpbml0aW9uLFxuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogc3RhdGVNYWNoaW5lTmFtZUZyb20odGhpcy5ub2RlLnBhdGgpLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uZGF5cygxKSwgLy8gQW1wbGUgdGltZSBmb3IgcmV0cmllcywgZXRjLi4uXG4gICAgICB0cmFjaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy52cGMpIHtcbiAgICAgIC8vIEVuc3VyZSB0aGUgU3RhdGUgTWFjaGluZSBkb2VzIG5vdCBnZXQgdG8gcnVuIGJlZm9yZSB0aGUgVlBDIGNhbiBiZSB1c2VkLlxuICAgICAgdGhpcy5zdGF0ZU1hY2hpbmUubm9kZS5hZGREZXBlbmRlbmN5KFxuICAgICAgICBwcm9wcy52cGMuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBhZGRBbGFybShcbiAgICAgICdCYWNrZW5kIE9yY2hlc3RyYXRpb24gRmFpbGVkJyxcbiAgICAgIHRoaXMuc3RhdGVNYWNoaW5lXG4gICAgICAgIC5tZXRyaWNGYWlsZWQoKVxuICAgICAgICAuY3JlYXRlQWxhcm0odGhpcywgJ09yY2hlc3RyYXRpb25GYWlsZWQnLCB7XG4gICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLnN0YXRlTWFjaGluZS5ub2RlLnBhdGh9LyR7XG4gICAgICAgICAgICB0aGlzLnN0YXRlTWFjaGluZS5tZXRyaWNGYWlsZWQoKS5tZXRyaWNOYW1lXG4gICAgICAgICAgfWAsXG4gICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgICAgJ0JhY2tlbmQgb3JjaGVzdHJhdGlvbiBmYWlsZWQhJyxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgYERpcmVjdCBsaW5rIHRvIHN0YXRlIG1hY2hpbmU6ICR7c3RhdGVNYWNoaW5lVXJsKFxuICAgICAgICAgICAgICB0aGlzLnN0YXRlTWFjaGluZVxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICAgJ1dhcm5pbmc6IG1lc3NhZ2VzIHRoYXQgcmVzdWx0ZWQgaW4gYSBmYWlsZWQgZXhlY3R1aW9uIHdpbGwgTk9UIGJlIGluIHRoZSBETFEhJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgfSksXG4gICAgICBBbGFybVNldmVyaXR5LkhJR0gsXG4gICAgICBwcm9wcy5tb25pdG9yaW5nXG4gICAgKTtcblxuICAgIHByb3BzLm1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oXG4gICAgICAnRXhlY3V0aW9uIEZhaWx1cmUgUmF0ZSBhYm92ZSA3NSUnLFxuICAgICAgdGhpcy5tZXRyaWNTdGF0ZXNFeGVjdXRpb25GYWlsdXJlUmF0ZSgpLmNyZWF0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnRmFpbHVyZVJhdGVBbGFybScsXG4gICAgICAgIHtcbiAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuc3RhdGVNYWNoaW5lLm5vZGUucGF0aH0vRXhlY3V0aW9uRmFpbHVyZVJhdGVgLFxuICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246ICdFeGVjdXRpb24gRmFpbHVyZSBSYXRlIGFib3ZlIDc1JScsXG4gICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgICAgdGhyZXNob2xkOiA3NSxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIG1hbnVhbGx5IHRyaWdnZXJlZCBieSBhbiBvcGVycmF0b3IgdG9cbiAgICAvLyBhdHRlbXB0IHJlZHJpdmluZyBtZXNzYWdlcyBmcm9tIHRoZSBETFEuXG4gICAgdGhpcy5yZWRyaXZlRnVuY3Rpb24gPSBuZXcgUmVkcml2ZVN0YXRlTWFjaGluZSh0aGlzLCAnUmVkcml2ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnW0NvbnN0cnVjdEh1Yi9SZWRyaXZlXSBNYW51YWxseSByZWRyaXZlcyBhbGwgbWVzc2FnZXMgZnJvbSB0aGUgYmFja2VuZCBkZWFkIGxldHRlciBxdWV1ZScsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTVEFURV9NQUNISU5FX0FSTjogdGhpcy5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICBRVUVVRV9VUkw6IHRoaXMuZGVhZExldHRlclF1ZXVlLnF1ZXVlVXJsLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDFfMDI0LFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlTWFjaGluZS5ncmFudFN0YXJ0RXhlY3V0aW9uKHRoaXMucmVkcml2ZUZ1bmN0aW9uKTtcbiAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyh0aGlzLnJlZHJpdmVGdW5jdGlvbik7XG4gICAgcHJvcHMub3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICAnT3JjaGVzdHJhdGlvbiBETFEnLFxuICAgICAgdGhpcy5kZWFkTGV0dGVyUXVldWUsXG4gICAgICB0aGlzLnJlZHJpdmVGdW5jdGlvblxuICAgICk7XG5cbiAgICAvLyBUaGUgd29ya2Zsb3cgaXMgaW50ZW5kZWQgdG8gYmUgbWFudWFsbHkgdHJpZ2dlcmVkIGJ5IGFuIG9wZXJhdG9yIHRvXG4gICAgLy8gcmVwcm9jZXNzIGFsbCBwYWNrYWdlIHZlcnNpb25zIGN1cnJlbnRseSBpbiBzdG9yZSB0aHJvdWdoIHRoZSBvcmNoZXN0cmF0b3IuXG4gICAgY29uc3QgcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24gPSBuZXcgUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ1JlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgYnVja2V0OiBwcm9wcy5idWNrZXQsXG4gICAgICAgIHN0YXRlTWFjaGluZTogdGhpcy5zdGF0ZU1hY2hpbmUsXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uID0gcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24uc3RhdGVNYWNoaW5lO1xuICAgIHRoaXMucmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25QZXJQYWNrYWdlID1cbiAgICAgIHJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uLnByb2Nlc3NQYWNrYWdlVmVyc2lvbnM7XG5cbiAgICAvLyBDcmVhdGUgcmV0cnkgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcyB3b3JrZmxvd1xuICAgIGNvbnN0IHJldHJ5VW5pbnN0YWxsYWJsZSA9IG5ldyBSZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlcyhcbiAgICAgIHRoaXMsXG4gICAgICAnUmV0cnlVbmluc3RhbGxhYmxlUGFja2FnZXMnLFxuICAgICAge1xuICAgICAgICBidWNrZXQ6IHByb3BzLmJ1Y2tldCxcbiAgICAgICAgb3JjaGVzdHJhdGlvblN0YXRlTWFjaGluZTogdGhpcy5zdGF0ZU1hY2hpbmUsXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzID0gcmV0cnlVbmluc3RhbGxhYmxlLnN0YXRlTWFjaGluZTtcblxuICAgIHByb3BzLm92ZXJ2aWV3RGFzaGJvYXJkLmFkZENvbmN1cnJlbnRFeGVjdXRpb25NZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgIG5lZWRzQ2F0YWxvZ1VwZGF0ZUZ1bmN0aW9uLFxuICAgICAgJ05lZWRzQ2F0YWxvZ1VwZGF0ZUxhbWJkYSdcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY1N0YXRlc0V4ZWN1dGlvbkZhaWx1cmVSYXRlKFxuICAgIG9wdHM/OiBNYXRoRXhwcmVzc2lvbk9wdGlvbnNcbiAgKTogTWF0aEV4cHJlc3Npb24ge1xuICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIC8vIENhbGN1bGF0ZXMgdGhlICUgRXhlY3V0aW9uc0ZhaWxlZCBmcm9tIHRoZSBFeGVjdXRpb25zU3RhcnRlZC5cbiAgICAgIGV4cHJlc3Npb246ICcxMDAgKiBtZXhlY3V0aW9uc0ZhaWxlZCAvIG1leGVjdXRpb25zU3RhcnRlZCcsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbWV4ZWN1dGlvbnNGYWlsZWQ6IHRoaXMubWV0cmljU3RhdGVzRXhlY3V0aW9uc0ZhaWxlZCgpLFxuICAgICAgICBtZXhlY3V0aW9uc1N0YXJ0ZWQ6IHRoaXMubWV0cmljU3RhdGVzRXhlY3V0aW9uc1N0YXJ0ZWQoKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljU3RhdGVzRXhlY3V0aW9uc0ZhaWxlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ0V4ZWN1dGlvbnNGYWlsZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnQVdTL1N0YXRlcycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljU3RhdGVzRXhlY3V0aW9uc1N0YXJ0ZWQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IEV4ZWN1dGlvbk1ldHJpY3M6IHRoaXMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybiB9LFxuICAgICAgbWV0cmljTmFtZTogJ0V4ZWN1dGlvbnNTdGFydGVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9TdGF0ZXMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc1Rhc2tDb3VudChvcHRzOiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBFeGVjdXRpb25NZXRyaWNzOiB0aGlzLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4gfSxcbiAgICAgIG1ldHJpY05hbWU6ICdUYXNrQ291bnQnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NDcHVSZXNlcnZlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdDcHVSZXNlcnZlZCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc0NwdVV0aWxpemVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ0NwdVV0aWxpemVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzQ3B1VXRpbGl6YXRpb24ob3B0cz86IE1hdGhFeHByZXNzaW9uT3B0aW9ucyk6IE1hdGhFeHByZXNzaW9uIHtcbiAgICByZXR1cm4gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICAvLyBDYWxjdWxhdGVzIHRoZSAlIENQVSB1dGlsaXphdGlvbiBmcm9tIHRoZSBDUFUgdW5pdHMgdXRpbGl6YXRpb24gJlxuICAgICAgLy8gcmVzZXJ2YXRpb24uIEZJTEwgaXMgdXNlZCB0byBtYWtlIGEgbm9uLXNwYXJzZSB0aW1lLXNlcmllcyAodGhlIG1ldHJpY3NcbiAgICAgIC8vIGFyZSBub3QgZW1pdHRlZCBpZiBubyB0YXNrIHJ1bnMpXG4gICAgICBleHByZXNzaW9uOiAnMTAwICogRklMTChtQ3B1VXRpbGl6ZWQsIDApIC8gRklMTChtQ3B1UmVzZXJ2ZWQsIFJFUEVBVCknLFxuICAgICAgdXNpbmdNZXRyaWNzOiB7XG4gICAgICAgIG1DcHVSZXNlcnZlZDogdGhpcy5tZXRyaWNFY3NDcHVSZXNlcnZlZCgpLFxuICAgICAgICBtQ3B1VXRpbGl6ZWQ6IHRoaXMubWV0cmljRWNzQ3B1VXRpbGl6ZWQoKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzTWVtb3J5UmVzZXJ2ZWQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnTWVtb3J5UmVzZXJ2ZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NNZW1vcnlVdGlsaXplZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdNZW1vcnlVdGlsaXplZCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc01lbW9yeVV0aWxpemF0aW9uKFxuICAgIG9wdHM/OiBNYXRoRXhwcmVzc2lvbk9wdGlvbnNcbiAgKTogTWF0aEV4cHJlc3Npb24ge1xuICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIC8vIENhbGN1bGF0ZXMgdGhlICUgbWVtb3J5IHV0aWxpemF0aW9uIGZyb20gdGhlIFJBTSB1dGlsaXphdGlvbiAmXG4gICAgICAvLyByZXNlcnZhdGlvbi4gRklMTCBpcyB1c2VkIHRvIG1ha2UgYSBub24tc3BhcnNlIHRpbWUtc2VyaWVzICh0aGUgbWV0cmljc1xuICAgICAgLy8gYXJlIG5vdCBlbWl0dGVkIGlmIG5vIHRhc2sgcnVucylcbiAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICcxMDAgKiBGSUxMKG1NZW1vcnlVdGlsaXplZCwgMCkgLyBGSUxMKG1NZW1vcnlSZXNlcnZlZCwgUkVQRUFUKScsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbU1lbW9yeVJlc2VydmVkOiB0aGlzLm1ldHJpY0Vjc01lbW9yeVJlc2VydmVkKCksXG4gICAgICAgIG1NZW1vcnlVdGlsaXplZDogdGhpcy5tZXRyaWNFY3NNZW1vcnlVdGlsaXplZCgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NOZXR3b3JrUnhCeXRlcyhvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdOZXR3b3JrUnhCeXRlcycsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc05ldHdvcmtUeEJ5dGVzKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ05ldHdvcmtUeEJ5dGVzJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uUHJvcHMge1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZTogSVN0YXRlTWFjaGluZTtcbn1cblxuY2xhc3MgUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzUGFja2FnZVZlcnNpb25zOiBTdGF0ZU1hY2hpbmU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25Qcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcHJvY2Vzc1ZlcnNpb25zID0gbmV3IENob2ljZSh0aGlzLCAnR2V0IHBhY2thZ2UgdmVyc2lvbnMgcGFnZScpXG4gICAgICAud2hlbihcbiAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdOZXh0IHZlcnNpb25zIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgQ29udGludWF0aW9uVG9rZW46IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLm90aGVyd2lzZShcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdGaXJzdCB2ZXJzaW9ucyBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5QcmVmaXgnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5hZnRlcndhcmRzKClcbiAgICAgIC5uZXh0KFxuICAgICAgICBuZXcgTWFwKHRoaXMsICdGb3IgZWFjaCBrZXkgcHJlZml4Jywge1xuICAgICAgICAgIGl0ZW1zUGF0aDogJyQucmVzcG9uc2UuQ29tbW9uUHJlZml4ZXMnLFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLml0ZXJhdG9yKFxuICAgICAgICAgIG5ldyB0YXNrcy5TdGVwRnVuY3Rpb25zU3RhcnRFeGVjdXRpb24oXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgJ1N0YXJ0IE9yY2hlc3RyYXRpb24gV29ya2Zsb3cnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0ZU1hY2hpbmU6IHByb3BzLnN0YXRlTWFjaGluZSxcbiAgICAgICAgICAgICAgYXNzb2NpYXRlV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaW5wdXQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICAgICAgICBidWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5OiB7XG4gICAgICAgICAgICAgICAgICBrZXk6IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAgICAgICBgU3RhdGVzLkZvcm1hdCgne30ke0FTU0VNQkxZX0tFWV9TVUZGSVguc3Vic3RyKFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKX0nLCAkLlByZWZpeClgXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICAgICAgIGBTdGF0ZXMuRm9ybWF0KCd7fSR7TUVUQURBVEFfS0VZX1NVRkZJWC5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApfScsICQuUHJlZml4KWBcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwYWNrYWdlOiB7XG4gICAgICAgICAgICAgICAgICBrZXk6IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAgICAgICBgU3RhdGVzLkZvcm1hdCgne30ke1BBQ0tBR0VfS0VZX1NVRkZJWC5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApfScsICQuUHJlZml4KWBcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGludGVncmF0aW9uUGF0dGVybjogSW50ZWdyYXRpb25QYXR0ZXJuLlJFUVVFU1RfUkVTUE9OU0UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1N0ZXBGdW5jdGlvbnMuRXhlY3V0aW9uTGltaXRFeGNlZWRlZCddIH0pXG4gICAgICAgICAgICAuYWRkQ2F0Y2gobmV3IFN1Y2NlZWQocHJvcHMuc3RhdGVNYWNoaW5lLCAnU3RhdGVNYWNoaW5lIFN1Y2Nlc3MnKSwge1xuICAgICAgICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLlRhc2tGYWlsZWQnXSxcbiAgICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIHByb2Nlc3NWZXJzaW9ucy5uZXh0KFxuICAgICAgbmV3IENob2ljZSh0aGlzLCAnSGFzIG1vcmUgdmVyc2lvbnM/JylcbiAgICAgICAgLndoZW4oXG4gICAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgICBwcm9jZXNzVmVyc2lvbnNcbiAgICAgICAgKVxuICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdTdWNjZXNzJykpXG4gICAgKTtcbiAgICBjb25zdCBwcm9jZXNzUGFja2FnZVZlcnNpb25zID0gbmV3IFN0YXRlTWFjaGluZSh0aGlzLCAnUGVyUGFja2FnZScsIHtcbiAgICAgIHN0YXRlTWFjaGluZU5hbWU6IFJFUFJPQ0VTU19QRVJfUEFDS0FHRV9TVEFURV9NQUNISU5FX05BTUUsXG4gICAgICBkZWZpbml0aW9uOiBwcm9jZXNzVmVyc2lvbnMsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5ob3VycygxKSxcbiAgICAgIHRyYWNpbmdFbmFibGVkOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJvY2Vzc1BhY2thZ2VWZXJzaW9ucyA9IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnM7XG5cbiAgICAvLyBUaGlzIHdvcmtmbG93IGlzIGJyb2tlbiBpbnRvIHR3byBzdWItd29ya2Zsb3dzIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IGhpdHMgdGhlIDI1SyBldmVudHMgbGltaXRcbiAgICAvLyBvZiBTdGVwRnVuY3Rpb24gZXhlY3V0aW9ucyByZWxhdGl2ZWx5IHF1aWNrbHkuXG4gICAgY29uc3QgcHJvY2Vzc05hbWVzcGFjZSA9IG5ldyBDaG9pY2UodGhpcywgJ0dldCBAc2NvcGUgcGFnZScpXG4gICAgICAud2hlbihcbiAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdOZXh0IEBzY29wZSBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIENvbnRpbnVhdGlvblRva2VuOiBKc29uUGF0aC5zdHJpbmdBdChcbiAgICAgICAgICAgICAgJyQucmVzcG9uc2UuTmV4dENvbnRpbnVhdGlvblRva2VuJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5QcmVmaXgnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5vdGhlcndpc2UoXG4gICAgICAgIG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnRmlyc3QgQHNjb3BlIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLmFmdGVyd2FyZHMoKVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBNYXAodGhpcywgJ0ZvciBlYWNoIEBzY29wZS9wa2cnLCB7XG4gICAgICAgICAgaXRlbXNQYXRoOiAnJC5yZXNwb25zZS5Db21tb25QcmVmaXhlcycsXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkuaXRlcmF0b3IoXG4gICAgICAgICAgbmV3IHRhc2tzLlN0ZXBGdW5jdGlvbnNTdGFydEV4ZWN1dGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAnUHJvY2VzcyBzY29wZWQgcGFja2FnZScsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRlTWFjaGluZTogcHJvY2Vzc1BhY2thZ2VWZXJzaW9ucyxcbiAgICAgICAgICAgICAgYXNzb2NpYXRlV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaW5wdXQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgaW50ZWdyYXRpb25QYXR0ZXJuOiBJbnRlZ3JhdGlvblBhdHRlcm4uUlVOX0pPQixcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1N0ZXBGdW5jdGlvbnMuRXhlY3V0aW9uTGltaXRFeGNlZWRlZCddIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgcHJvY2Vzc05hbWVzcGFjZS5uZXh0KFxuICAgICAgbmV3IENob2ljZSh0aGlzLCAnSGFzIG1vcmUgcGFja2FnZXM/JylcbiAgICAgICAgLndoZW4oXG4gICAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgICBwcm9jZXNzTmFtZXNwYWNlXG4gICAgICAgIClcbiAgICAgICAgLm90aGVyd2lzZShuZXcgU3VjY2VlZCh0aGlzLCAnQWxsIERvbmUnKSlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgQ2hvaWNlKHRoaXMsICdHZXQgcHJlZml4IHBhZ2UnKVxuICAgICAgLndoZW4oXG4gICAgICAgIENvbmRpdGlvbi5pc1ByZXNlbnQoJyQucmVzcG9uc2UuTmV4dENvbnRpbnVhdGlvblRva2VuJyksXG4gICAgICAgIG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnTmV4dCBwcmVmaXhlcyBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIENvbnRpbnVhdGlvblRva2VuOiBKc29uUGF0aC5zdHJpbmdBdChcbiAgICAgICAgICAgICAgJyQucmVzcG9uc2UuTmV4dENvbnRpbnVhdGlvblRva2VuJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBTVE9SQUdFX0tFWV9QUkVGSVgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAub3RoZXJ3aXNlKFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0ZpcnN0IHByZWZpeCBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBTVE9SQUdFX0tFWV9QUkVGSVgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAuYWZ0ZXJ3YXJkcygpXG4gICAgICAubmV4dChcbiAgICAgICAgbmV3IE1hcCh0aGlzLCAnRm9yIGVhY2ggcHJlZml4Jywge1xuICAgICAgICAgIGl0ZW1zUGF0aDogJyQucmVzcG9uc2UuQ29tbW9uUHJlZml4ZXMnLFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLml0ZXJhdG9yKFxuICAgICAgICAgIG5ldyBDaG9pY2UodGhpcywgJ0lzIHRoaXMgYSBAc2NvcGUvIHByZWZpeD8nKVxuICAgICAgICAgICAgLndoZW4oXG4gICAgICAgICAgICAgIENvbmRpdGlvbi5zdHJpbmdNYXRjaGVzKCckLlByZWZpeCcsIGAke1NUT1JBR0VfS0VZX1BSRUZJWH1AKmApLFxuICAgICAgICAgICAgICBwcm9jZXNzTmFtZXNwYWNlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAub3RoZXJ3aXNlKFxuICAgICAgICAgICAgICBuZXcgdGFza3MuU3RlcEZ1bmN0aW9uc1N0YXJ0RXhlY3V0aW9uKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgJ1Byb2Nlc3MgdW5zY29wZWQgcGFja2FnZScsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lOiBwcm9jZXNzUGFja2FnZVZlcnNpb25zLFxuICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGlucHV0OiBUYXNrSW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGludGVncmF0aW9uUGF0dGVybjogSW50ZWdyYXRpb25QYXR0ZXJuLlJVTl9KT0IsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1N0ZXBGdW5jdGlvbnMuRXhlY3V0aW9uTGltaXRFeGNlZWRlZCddIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYWZ0ZXJ3YXJkcygpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICBzdGFydC5uZXh0KFxuICAgICAgbmV3IENob2ljZSh0aGlzLCAnSGFzIG1vcmUgcHJlZml4ZXM/JylcbiAgICAgICAgLndoZW4oQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSwgc3RhcnQpXG4gICAgICAgIC5vdGhlcndpc2UobmV3IFN1Y2NlZWQodGhpcywgJ0RvbmUnKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRlZmluaXRpb246IHN0YXJ0LFxuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogc3RhdGVNYWNoaW5lTmFtZUZyb20odGhpcy5ub2RlLnBhdGgpLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uaG91cnMoNCksXG4gICAgICB0cmFjaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWQocHJvY2Vzc1BhY2thZ2VWZXJzaW9ucyk7XG4gICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZCh0aGlzLnN0YXRlTWFjaGluZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHR1cm5zIGEgbm9kZSBwYXRoIGludG8gYSB2YWxpZCBzdGF0ZSBtYWNoaW5lIG5hbWUsIHRvIHRyeSBhbmQgaW1wcm92ZVxuICogdGhlIFN0ZXBGdW5jdGlvbidzIEFXUyBjb25zb2xlIGV4cGVyaWVuY2Ugd2hpbGUgbWluaW1pemluZyB0aGUgcmlzayBmb3JcbiAqIGNvbGxpc29ucy5cbiAqL1xuZnVuY3Rpb24gc3RhdGVNYWNoaW5lTmFtZUZyb20obm9kZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFBvb3IgbWFuJ3MgcmVwbGFjZSBhbGwuLi5cbiAgcmV0dXJuIG5vZGVQYXRoLnNwbGl0KC9bXmEtejAtOSshQC4oKT1fJy1dKy9pKS5qb2luKCcuJyk7XG59XG4iXX0=
@@ -65,7 +65,7 @@ const webapp_1 = require("./webapp");
65
65
  * Construct Hub.
66
66
  */
67
67
  class ConstructHub extends constructs_1.Construct {
68
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.ConstructHub", version: "0.4.523" };
68
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.ConstructHub", version: "0.4.524" };
69
69
  /**
70
70
  * The function operators can use to reprocess a specific package version
71
71
  * through the backend data pipeline.
@@ -21,7 +21,7 @@ const storage_1 = require("../s3/storage");
21
21
  */
22
22
  class CodeArtifact {
23
23
  props;
24
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.523" };
24
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.524" };
25
25
  constructor(props) {
26
26
  this.props = props;
27
27
  }
@@ -45,7 +45,7 @@ const NO_CHANGES_ALARM_DURATION = aws_cdk_lib_1.Duration.hours(24);
45
45
  */
46
46
  class NpmJs {
47
47
  props;
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.523" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.524" };
49
49
  constructor(props = {}) {
50
50
  this.props = props;
51
51
  }
@@ -11,7 +11,7 @@ var TagConditionSource;
11
11
  * Condition for applying a custom tag to a package.
12
12
  */
13
13
  class TagCondition {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagCondition", version: "0.4.523" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagCondition", version: "0.4.524" };
15
15
  /**
16
16
  * Create an && condition which applies only when all condition arguments are
17
17
  * true.
@@ -107,7 +107,7 @@ class TagConditionPredicate extends TagCondition {
107
107
  */
108
108
  class TagConditionField {
109
109
  field;
110
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionField", version: "0.4.523" };
110
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionField", version: "0.4.524" };
111
111
  constructor(field) {
112
112
  this.field = field;
113
113
  }
@@ -140,7 +140,7 @@ exports.TagConditionField = TagConditionField;
140
140
  * Target the README of the package to dictate whether a tag is relevant.
141
141
  */
142
142
  class TagConditionReadme {
143
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.523" };
143
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.524" };
144
144
  constructor() { }
145
145
  /**
146
146
  * Create a `readme.includes(value)` condition which applies if the README
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PackageTagGroup = exports.FilterType = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  class FilterType {
6
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.FilterType", version: "0.4.523" };
6
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.FilterType", version: "0.4.524" };
7
7
  static checkbox() {
8
8
  return new FilterTypeCheckbox();
9
9
  }
@@ -27,7 +27,7 @@ class FilterTypeCheckbox extends FilterType {
27
27
  */
28
28
  class PackageTagGroup {
29
29
  id;
30
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.523" };
30
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.524" };
31
31
  label;
32
32
  tooltip;
33
33
  filterType;
@@ -9,7 +9,7 @@ const fs_1 = require("fs");
9
9
  */
10
10
  class PreloadFile {
11
11
  data;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PreloadFile", version: "0.4.523" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PreloadFile", version: "0.4.524" };
13
13
  /**
14
14
  * Creates a PreloadFile instance from a filepath to load
15
15
  */
package/lib/s3/storage.js CHANGED
@@ -42,7 +42,7 @@ const constructs_1 = require("constructs");
42
42
  * Create s3 storage resources.
43
43
  */
44
44
  class S3StorageFactory extends constructs_1.Construct {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.523" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.524" };
46
46
  /**
47
47
  * Retrieve or create the storage factory for the current scope.
48
48
  *
@@ -9,7 +9,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
9
9
  */
10
10
  class SpdxLicense {
11
11
  id;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.SpdxLicense", version: "0.4.523" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.SpdxLicense", version: "0.4.524" };
13
13
  static _ALL = new Map();
14
14
  //#region Individual SPDX Licenses
15
15
  /**
package/package.json CHANGED
@@ -232,7 +232,7 @@
232
232
  "built": true
233
233
  }
234
234
  },
235
- "version": "0.4.523",
235
+ "version": "0.4.524",
236
236
  "packageManager": "yarn@4.13.0",
237
237
  "jest": {
238
238
  "coverageProvider": "v8",