@decaf-ts/for-nest 0.11.2-refactor.4 → 0.11.2-refactor.6

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.
Files changed (39) hide show
  1. package/dist/for-nest.cjs +54 -273
  2. package/dist/for-nest.js +58 -276
  3. package/lib/cjs/controllers.cjs +4 -6
  4. package/lib/cjs/decaf-model/FromModelController.cjs +116 -305
  5. package/lib/cjs/decaf-model/decorators/ApiOperationFromModel.cjs +2 -2
  6. package/lib/cjs/events-module/utils.cjs +2 -2
  7. package/lib/cjs/factory/NestBootstraper.cjs +12 -5
  8. package/lib/cjs/factory/exceptions/DecafErrorFilter.cjs +106 -7
  9. package/lib/cjs/factory/exceptions/decorators.cjs +5 -2
  10. package/lib/cjs/index.cjs +3 -3
  11. package/lib/cjs/request/DecafRequestContext.cjs +2 -3
  12. package/lib/cjs/request/DecafResponseInterceptor.cjs +5 -3
  13. package/lib/cjs/swagger-types.cjs +2 -2
  14. package/lib/cjs/types.cjs +2 -2
  15. package/lib/cjs/webhooks/DecafWebhookModule.cjs +3 -2
  16. package/lib/cjs/webhooks/controllers.cjs +50 -55
  17. package/lib/esm/controllers.js +3 -5
  18. package/lib/esm/decaf-model/FromModelController.js +117 -306
  19. package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js +1 -1
  20. package/lib/esm/events-module/utils.js +1 -1
  21. package/lib/esm/factory/NestBootstraper.js +11 -4
  22. package/lib/esm/factory/exceptions/DecafErrorFilter.js +106 -8
  23. package/lib/esm/factory/exceptions/decorators.js +4 -1
  24. package/lib/esm/index.js +3 -3
  25. package/lib/esm/request/DecafRequestContext.js +1 -2
  26. package/lib/esm/request/DecafResponseInterceptor.js +4 -2
  27. package/lib/esm/swagger-types.js +1 -1
  28. package/lib/esm/types.js +1 -1
  29. package/lib/esm/webhooks/DecafWebhookModule.js +2 -1
  30. package/lib/esm/webhooks/controllers.js +49 -54
  31. package/lib/types/decaf-model/FromModelController.d.cts +0 -11
  32. package/lib/types/decaf-model/FromModelController.d.mts +0 -11
  33. package/lib/types/factory/NestBootstraper.d.cts +5 -0
  34. package/lib/types/factory/NestBootstraper.d.mts +5 -0
  35. package/lib/types/factory/exceptions/DecafErrorFilter.d.cts +33 -1
  36. package/lib/types/factory/exceptions/DecafErrorFilter.d.mts +33 -1
  37. package/lib/types/index.d.cts +3 -3
  38. package/lib/types/index.d.mts +3 -3
  39. package/package.json +7 -1
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NestBootstraper = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
+ const core_1 = require("@nestjs/core");
5
6
  const index_js_1 = require("./exceptions/index.cjs");
6
7
  const index_js_2 = require("./openapi/index.cjs");
7
8
  const index_js_3 = require("./errors/index.cjs");
@@ -155,9 +156,8 @@ class NestBootstraper {
155
156
  const helmet = require("helmet"); // Dynamic import to avoid hard dependency
156
157
  this.app.use(helmet(options));
157
158
  this.logger.log("Helmet middleware enabled successfully.");
158
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
159
159
  }
160
- catch (e) {
160
+ catch {
161
161
  this.logger.warn("Helmet not installed. Skipping middleware.");
162
162
  }
163
163
  return this;
@@ -217,10 +217,17 @@ class NestBootstraper {
217
217
  * set of standard exception filters for common error types like
218
218
  * `HttpException`, `ValidationException`, `ConflictException`, and others.
219
219
  *
220
+ * The default `DecafExceptionFilter` is constructed with the application's
221
+ * `ModuleRef` so it can resolve the request-scoped `DecafRequestContext` (and
222
+ * its client-bound logger) for the request that threw, instead of logging
223
+ * through the generic global logger.
224
+ *
220
225
  * @param {...ExceptionFilter[]} filters - Optional filters to apply globally.
221
226
  */
222
227
  static useGlobalFilters(...filters) {
223
- this.app.useGlobalFilters(...(filters.length > 0 ? filters : [new index_js_1.DecafExceptionFilter()]));
228
+ this.app.useGlobalFilters(...(filters.length > 0
229
+ ? filters
230
+ : [new index_js_1.DecafExceptionFilter(this.app.get(core_1.ModuleRef, { strict: false }))]));
224
231
  return this;
225
232
  }
226
233
  /**
@@ -264,5 +271,5 @@ class NestBootstraper {
264
271
  }
265
272
  }
266
273
  exports.NestBootstraper = NestBootstraper;
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZhY3RvcnkvTmVzdEJvb3RzdHJhcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsOEJBQXFCO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsMkJBQWtCO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsMEJBQWlCO0FBNENyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUkxQjs7Ozs7Ozs7O09BU0c7SUFDSyxNQUFNLEtBQUssTUFBTTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLFdBQVc7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQXFCO1FBQ3JDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQXFCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFH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QkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSU5lc3RBcHBsaWNhdGlvbixcbiAgTG9nZ2VyLFxuICBOZXN0SW50ZXJjZXB0b3IsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVjYWZFeGNlcHRpb25GaWx0ZXIgfSBmcm9tIFwiLi9leGNlcHRpb25zXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQnVpbGRlciB9IGZyb20gXCIuL29wZW5hcGlcIjtcbmltcG9ydCB7IENvcnNPcHRpb25zIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uL2ludGVyZmFjZXMvZXh0ZXJuYWwvY29ycy1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29yc0Vycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBEZWZpbmVzIGFsbCBjdXN0b21pemFibGUgcGFyYW1ldGVycyBmb3IgU3dhZ2dlciBzZXR1cC5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhpcyBpbnRlcmZhY2UgYWxsb3dzIGRldmVsb3BlcnMgdG8gY3VzdG9taXplIGhvdyBTd2FnZ2VyIFVJIGlzIGNvbmZpZ3VyZWRcbiAqIHdpdGhpbiB0aGUgTmVzdEpTIGFwcGxpY2F0aW9uLiBJdCBpbmNsdWRlcyBwYXJhbWV0ZXJzIGZvciB0aXRsZXMsIHBhdGhzLFxuICogY29sb3Igc2NoZW1lcywgYW5kIGFzc2V0IHBhdGhzIHRvIHRhaWxvciB0aGUgQVBJIGRvY3VtZW50YXRpb24gZXhwZXJpZW5jZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBUaXRsZSBkaXNwbGF5ZWQgaW4gU3dhZ2dlciBVSS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiAtIERlc2NyaXB0aW9uIHNob3duIGJlbG93IHRoZSB0aXRsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uIC0gQVBJIHZlcnNpb24gZGlzcGxheWVkIGluIHRoZSBkb2N1bWVudGF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIE9wdGlvbmFsIHBhdGggd2hlcmUgU3dhZ2dlciB3aWxsIGJlIGF2YWlsYWJsZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3BlcnNpc3RBdXRob3JpemF0aW9uXSAtIFdoZXRoZXIgYXV0aG9yaXphdGlvbiB0b2tlbnMgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXNzZXRzUGF0aF0gLSBQYXRoIHRvIGN1c3RvbSBhc3NldHMgZm9yIFN3YWdnZXIgVUkuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RvcGJhckJnQ29sb3JdIC0gQ3VzdG9tIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBTd2FnZ2VyIHRvcCBiYXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RvcGJhckljb25QYXRoXSAtIFBhdGggdG8gYSBjdXN0b20gaWNvbiBkaXNwbGF5ZWQgaW4gdGhlIHRvcCBiYXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Zhdmljb25QYXRoXSAtIFBhdGggdG8gYSBjdXN0b20gZmF2aWNvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2FnZ2VyU2V0dXBPcHRpb25zIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBwZXJzaXN0QXV0aG9yaXphdGlvbj86IGJvb2xlYW47XG4gIGFzc2V0c1BhdGg/OiBzdHJpbmc7XG4gIHRvcGJhckJnQ29sb3I/OiBzdHJpbmc7XG4gIHRvcGJhckljb25QYXRoPzogc3RyaW5nO1xuICBmYXZpY29uUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gZXhwb3NlIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gaW4gSlNPTiBmb3JtYXQuXG4gICAqIEV4YW1wbGU6IC9hcGkvb3BlbmFwaS5qc29uXG4gICAqL1xuICBvcGVuQXBpSnNvblBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHRvIGV4cG9zZSB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIFlBTUwgZm9ybWF0LlxuICAgKiBSZXF1aXJlcyAneWFtbCcgcGFja2FnZSBhcyBwZWVyIGRlcGVuZGVuY3kuXG4gICAqIEV4YW1wbGU6IC9hcGkvb3BlbmFwaS55YW1sXG4gICAqL1xuICBvcGVuQXBpWWFtbFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBIGZsdWVudCwgc3RhdGljIGJvb3RzdHJhcCBjbGFzcyBmb3IgaW5pdGlhbGl6aW5nIGFuZCBjb25maWd1cmluZyBhIE5lc3RKUyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBOZXN0Qm9vdHN0cmFwZXJgIGNsYXNzIHByb3ZpZGVzIGEgY2hhaW5hYmxlIEFQSSBmb3IgY29uZmlndXJpbmdcbiAqIGEgTmVzdEpTIGFwcGxpY2F0aW9uIGluc3RhbmNlLiBJdCBpbmNsdWRlcyBidWlsdC1pbiBtZXRob2RzIGZvciBlbmFibGluZ1xuICogQ09SUywgSGVsbWV0IHNlY3VyaXR5LCBTd2FnZ2VyIGRvY3VtZW50YXRpb24sIGdsb2JhbCBwaXBlcywgZmlsdGVycyxcbiAqIGludGVyY2VwdG9ycywgYW5kIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIuXG4gKlxuICogVGhpcyBjbGFzcyBwcm9tb3RlcyBjb25zaXN0ZW5jeSBhbmQgcmVkdWNlcyByZXBldGl0aXZlIHNldHVwIGNvZGVcbiAqIGFjcm9zcyBtdWx0aXBsZSBOZXN0SlMgcHJvamVjdHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBOZXN0RmFjdG9yeSB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbiAqIGltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuL2FwcC5tb2R1bGVcIjtcbiAqIGltcG9ydCB7IE15TG9nZ2VyIH0gZnJvbSBcIi4vTXlMb2dnZXJcIjtcbiAqIGltcG9ydCB7IE5lc3RCb290c3RyYXBlciB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLW5lc3RcIjtcbiAqXG4gKiBhc3luYyBmdW5jdGlvbiBib290c3RyYXAoKSB7XG4gKiAgIGNvbnN0IGFwcCA9IGF3YWl0IE5lc3RGYWN0b3J5LmNyZWF0ZShBcHBNb2R1bGUpO1xuICpcbiAqICAgYXdhaXQgTmVzdEJvb3RzdHJhcGVyXG4gKiAgICAgLmluaXRpYWxpemUoYXBwKVxuICogICAgIC5lbmFibGVMb2dnZXIobmV3IE15TG9nZ2VyKCkpXG4gKiAgICAgLmVuYWJsZUNvcnMoW1wiaHR0cDovL2xvY2FsaG9zdDo0MjAwXCJdKVxuICogICAgIC51c2VIZWxtZXQoKVxuICogICAgIC5zZXR1cFN3YWdnZXIoe1xuICogICAgICAgdGl0bGU6IFwiT3BlbkFQSSBieSBUcmFkZU1hcmvihKJcIixcbiAqICAgICAgIGRlc2NyaXB0aW9uOiBcIlRyYWRlTWFya+KEoiBBUEkgZG9jdW1lbnRhdGlvblwiLFxuICogICAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICogICAgICAgcGF0aDogXCJhcGlcIixcbiAqICAgICAgIHBlcnNpc3RBdXRob3JpemF0aW9uOiB0cnVlLFxuICogICAgICAgdG9wYmFyQmdDb2xvcjogXCIjMkMzRTUwXCIsXG4gKiAgICAgICB0b3BiYXJJY29uUGF0aDogXCIvYXNzZXRzL2xvZ28uc3ZnXCIsXG4gKiAgICAgICBmYXZpY29uUGF0aDogXCIvYXNzZXRzL2Zhdmljb24uaWNvXCJcbiAqICAgICB9KVxuICogICAgIC51c2VHbG9iYWxGaWx0ZXJzKClcbiAqICAgICAudXNlR2xvYmFsUGlwZXMoLi4uKVxuICogICAgIC51c2VHbG9iYWxJbnRlcmNlcHRvcnMoLi4uKVxuICogICAgIC5zdGFydCgzMDAwKTtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoKTtcbiAqIGBgYFxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXN0Qm9vdHN0cmFwZXIge1xuICBwcml2YXRlIHN0YXRpYyBhcHA6IElOZXN0QXBwbGljYXRpb247XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IExvZ2dlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgbG9nZ2VyIGluc3RhbmNlLCBjcmVhdGluZyBhIGRlZmF1bHQgb25lIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIEVuc3VyZXMgdGhhdCBhIHZhbGlkIGBMb2dnZXJgIGluc3RhbmNlIGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICogZm9yIGxvZ2dpbmcgYm9vdHN0cmFwLXJlbGF0ZWQgbWVzc2FnZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge0xvZ2dlcn0gVGhlIGFjdGl2ZSBsb2dnZXIgaW5zdGFuY2UuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXQgbG9nZ2VyKCk6IExvZ2dlciB7XG4gICAgaWYgKCF0aGlzLl9sb2dnZXIpIHtcbiAgICAgIC8vIGZhbGxiYWNrXG4gICAgICB0aGlzLl9sb2dnZXIgPSBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJvb3RzdHJhcHBlciB3aXRoIGEgZ2l2ZW4gTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBCaW5kcyB0aGUgcHJvdmlkZWQgTmVzdEpTIGFwcCBpbnN0YW5jZSB0byB0aGUgYm9vdHN0cmFwcGVyLCBlbmFibGluZ1xuICAgKiBjaGFpbmVkIGNvbmZpZ3VyYXRpb24gbWV0aG9kcy5cbiAgICpcbiAgICogQHBhcmFtIHtJTmVzdEFwcGxpY2F0aW9ufSBhcHAgLSBUaGUgTmVzdEpTIGFwcGxpY2F0aW9uIGluc3RhbmNlIHRvIGluaXRpYWxpemUuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIHN0YXRpYyBpbml0aWFsaXplKGFwcDogSU5lc3RBcHBsaWNhdGlvbikge1xuICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFbmFibGVzIG9yIHJlcGxhY2VzIHRoZSBnbG9iYWwgbG9nZ2VyIGZvciB0aGUgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJZiBhIGN1c3RvbSBsb2dnZXIgaXMgcHJvdmlkZWQsIGl0IHJlcGxhY2VzIHRoZSBkZWZhdWx0IGxvZ2dlci4gT3RoZXJ3aXNlLFxuICAgKiBhIG5ldyBsb2dnZXIgbmFtZWQgYFwiTmVzdEJvb3RzdHJhcFwiYCBpcyB1c2VkLiBUaGlzIGxvZ2dlciBpcyBhbHNvIHJlZ2lzdGVyZWRcbiAgICogd2l0aCB0aGUgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0xvZ2dlcn0gW2N1c3RvbUxvZ2dlcl0gLSBPcHRpb25hbCBjdXN0b20gbG9nZ2VyIGluc3RhbmNlLlxuICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHN0YXRpYyBlbmFibGVMb2dnZXIoY3VzdG9tTG9nZ2VyPzogTG9nZ2VyKSB7XG4gICAgdGhpcy5fbG9nZ2VyID0gY3VzdG9tTG9nZ2VyIHx8IG5ldyBMb2dnZXIoXCJOZXN0Qm9vdHN0cmFwXCIpO1xuICAgIHRoaXMuYXBwLnVzZUxvZ2dlcih0aGlzLl9sb2dnZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFbmFibGVzIENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIChDT1JTKSBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBBbGxvd3MgZGVmaW5pbmcgZWl0aGVyIGEgd2lsZGNhcmQgb3JpZ2luIChgXCIqXCJgKSBvciBhIGxpc3Qgb2YgYWxsb3dlZCBvcmlnaW5zLlxuICAgKiBBdXRvbWF0aWNhbGx5IGFjY2VwdHMgbG9jYWwgZGV2ZWxvcG1lbnQgcmVxdWVzdHMgYW5kIHRob3NlIHdpdGhvdXQgb3JpZ2luIGhlYWRlcnMuXG4gICAqIFRocm93cyBhIGBDb3JzRXJyb3JgIGZvciB1bmF1dGhvcml6ZWQgb3JpZ2lucy5cbiAgICpcbiAgICogQHBhcmFtIHsnKicgfCBzdHJpbmdbXX0gW29yaWdpbnM9W11dIC0gTGlzdCBvZiBhbGxvd2VkIG9yaWdpbnMgb3IgYFwiKlwiYCB0byBhbGxvdyBhbGwuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthbGxvd01ldGhvZHM9WydHRVQnLCAnUE9TVCcsICdQVVQnLCAnREVMRVRFJ11dIC0gQWxsb3dlZCBIVFRQIG1ldGhvZHMuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqL1xuICBzdGF0aWMgZW5hYmxlQ29ycyhcbiAgICBvcmlnaW5zOiBcIipcIiB8IHN0cmluZ1tdID0gW10sXG4gICAgYWxsb3dNZXRob2RzOiBzdHJpbmdbXSA9IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJERUxFVEVcIl1cbiAgKSB7XG4gICAgY29uc3QgYWxsb3dlZE9yaWdpbnMgPVxuICAgICAgb3JpZ2lucyA9PT0gXCIqXCIgPyBcIipcIiA6IG9yaWdpbnMubWFwKChvKSA9PiBvLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcblxuICAgIGNvbnN0IGNvcnNPcHRpb25zOiBDb3JzT3B0aW9ucyA9IHtcbiAgICAgIG9yaWdpbjogKG9yaWdpbiwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgLy8gQWxsb3cgcmVxdWVzdCB3aXRob3V0IG9yaWdpbi4uLlxuICAgICAgICBpZiAoIW9yaWdpbikgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHRydWUpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBhbGxvd2VkT3JpZ2lucyA9PT0gXCIqXCIgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShhbGxvd2VkT3JpZ2lucykgJiZcbiAgICAgICAgICAgIGFsbG93ZWRPcmlnaW5zLmluY2x1ZGVzKG9yaWdpbi50b0xvd2VyQ2FzZSgpKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2sobmV3IENvcnNFcnJvcihgT3JpZ2luICR7b3JpZ2lufSBub3QgYWxsb3dlZGApKTtcbiAgICAgIH0sXG4gICAgICBjcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIG1ldGhvZHM6IGFsbG93TWV0aG9kcy5qb2luKFwiLFwiKSxcbiAgICB9O1xuXG4gICAgdGhpcy5hcHAuZW5hYmxlQ29ycyhjb3JzT3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFwcGxpZXMgdGhlIEhlbG1ldCBtaWRkbGV3YXJlIGZvciBlbmhhbmNlZCBzZWN1cml0eS5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRHluYW1pY2FsbHkgbG9hZHMgdGhlIGBoZWxtZXRgIHBhY2thZ2UgaWYgYXZhaWxhYmxlIGFuZCByZWdpc3RlcnMgaXRcbiAgICogYXMgbWlkZGxld2FyZSB0byBpbXByb3ZlIEhUVFAgaGVhZGVyIHNlY3VyaXR5LiBJZiBub3QgaW5zdGFsbGVkLCBsb2dzIGEgd2FybmluZ1xuICAgKiBhbmQgY29udGludWVzIGV4ZWN1dGlvbiB3aXRob3V0IHRocm93aW5nIGVycm9ycy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb3B0aW9uc10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIHBhc3NlZCB0byBIZWxtZXQuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgdXNlSGVsbWV0KG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCBoZWxtZXQgPSByZXF1aXJlKFwiaGVsbWV0XCIpOyAvLyBEeW5hbWljIGltcG9ydCB0byBhdm9pZCBoYXJkIGRlcGVuZGVuY3lcbiAgICAgIHRoaXMuYXBwLnVzZShoZWxtZXQob3B0aW9ucykpO1xuICAgICAgdGhpcy5sb2dnZXIubG9nKFwiSGVsbWV0IG1pZGRsZXdhcmUgZW5hYmxlZCBzdWNjZXNzZnVsbHkuXCIpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcIkhlbG1ldCBub3QgaW5zdGFsbGVkLiBTa2lwcGluZyBtaWRkbGV3YXJlLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ29uZmlndXJlcyBhbmQgaW5pdGlhbGl6ZXMgU3dhZ2dlciBVSSBmb3IgQVBJIGRvY3VtZW50YXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIFVzZXMgdGhlIGBTd2FnZ2VyQnVpbGRlcmAgdXRpbGl0eSB0byBjb25maWd1cmUgQVBJIGRvY3VtZW50YXRpb25cbiAgICogd2l0aCBkZXRhaWxlZCBjdXN0b21pemF0aW9uIGZvciB0aXRsZSwgdmVyc2lvbiwgcGF0aHMsIGFuZCBjb2xvcnMuXG4gICAqIFN3YWdnZXIgaXMgYXV0b21hdGljYWxseSBleHBvc2VkIGF0IHRoZSBjb25maWd1cmVkIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSB7U3dhZ2dlclNldHVwT3B0aW9uc30gb3B0aW9ucyAtIFN3YWdnZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgc3RhdGljIHNldHVwU3dhZ2dlcihvcHRpb25zOiBTd2FnZ2VyU2V0dXBPcHRpb25zKSB7XG4gICAgY29uc3Qgc3dhZ2dlciA9IG5ldyBTd2FnZ2VyQnVpbGRlcih0aGlzLmFwcCwge1xuICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbixcbiAgICAgIHBhdGg6IG9wdGlvbnMucGF0aCB8fCBcImFwaVwiLFxuICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IG9wdGlvbnMucGVyc2lzdEF1dGhvcml6YXRpb24gPz8gdHJ1ZSxcbiAgICAgIGFzc2V0c1BhdGg6IG9wdGlvbnMuYXNzZXRzUGF0aCxcbiAgICAgIGZhdmljb25GaWxlUGF0aDogb3B0aW9ucy5mYXZpY29uUGF0aCxcbiAgICAgIHRvcGJhckljb25GaWxlUGF0aDogb3B0aW9ucy50b3BiYXJJY29uUGF0aCxcbiAgICAgIHRvcGJhckJnQ29sb3I6IG9wdGlvbnMudG9wYmFyQmdDb2xvcixcbiAgICAgIG9wZW5BcGlKc29uUGF0aDogb3B0aW9ucy5vcGVuQXBpSnNvblBhdGgsXG4gICAgICBvcGVuQXBpWWFtbFBhdGg6IG9wdGlvbnMub3BlbkFwaVlhbWxQYXRoLFxuICAgIH0pO1xuICAgIHN3YWdnZXIuc2V0dXBTd2FnZ2VyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgdmFsaWRhdGlvbiBwaXBlcy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRW5hYmxlcyByZXF1ZXN0IHBheWxvYWQgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24gZ2xvYmFsbHkgYWNyb3NzXG4gICAqIHRoZSBlbnRpcmUgTmVzdEpTIGFwcGxpY2F0aW9uLiBNdWx0aXBsZSBwaXBlcyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlclxuICAgKiBmb3IgbW9kdWxhciBpbnB1dCB2YWxpZGF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLlBpcGVUcmFuc2Zvcm1bXX0gcGlwZXMgLSBQaXBlIGluc3RhbmNlcyB0byByZWdpc3RlciBnbG9iYWxseS5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsUGlwZXMoLi4ucGlwZXM6IFBpcGVUcmFuc2Zvcm1bXSkge1xuICAgIGlmIChwaXBlcy5sZW5ndGggPiAwKSB0aGlzLmFwcC51c2VHbG9iYWxQaXBlcyguLi5waXBlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgZXhjZXB0aW9uIGZpbHRlcnMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIElmIG5vIGZpbHRlcnMgYXJlIHByb3ZpZGVkLCBpdCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyBhIGRlZmF1bHRcbiAgICogc2V0IG9mIHN0YW5kYXJkIGV4Y2VwdGlvbiBmaWx0ZXJzIGZvciBjb21tb24gZXJyb3IgdHlwZXMgbGlrZVxuICAgKiBgSHR0cEV4Y2VwdGlvbmAsIGBWYWxpZGF0aW9uRXhjZXB0aW9uYCwgYENvbmZsaWN0RXhjZXB0aW9uYCwgYW5kIG90aGVycy5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5FeGNlcHRpb25GaWx0ZXJbXX0gZmlsdGVycyAtIE9wdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgZ2xvYmFsbHkuXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsRmlsdGVycyguLi5maWx0ZXJzOiBhbnlbXSkge1xuICAgIHRoaXMuYXBwLnVzZUdsb2JhbEZpbHRlcnMoXG4gICAgICAuLi4oZmlsdGVycy5sZW5ndGggPiAwID8gZmlsdGVycyA6IFtuZXcgRGVjYWZFeGNlcHRpb25GaWx0ZXIoKV0pXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIGdsb2JhbCBpbnRlcmNlcHRvcnMgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHRyYW5zZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgYWR2YW5jZWQgcmVxdWVzdC9yZXNwb25zZSBtYW5pcHVsYXRpb24gc3VjaCBhc1xuICAgKiBzZXJpYWxpemF0aW9uLCBsb2dnaW5nLCBvciB0cmFuc2Zvcm1hdGlvbi4gTXVsdGlwbGUgaW50ZXJjZXB0b3JzXG4gICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLk5lc3RJbnRlcmNlcHRvcltdfSBpbnRlcmNlcHRvcnMgLSBJbnRlcmNlcHRvciBpbnN0YW5jZXMgdG8gcmVnaXN0ZXIuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9yczogTmVzdEludGVyY2VwdG9yW10pIHtcbiAgICBpZiAoaW50ZXJjZXB0b3JzLmxlbmd0aCA+IDApXG4gICAgICB0aGlzLmFwcC51c2VHbG9iYWxJbnRlcmNlcHRvcnMoLi4uaW50ZXJjZXB0b3JzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU3RhcnRzIHRoZSBOZXN0SlMgYXBwbGljYXRpb24gYW5kIGJpbmRzIGl0IHRvIHRoZSBnaXZlbiBwb3J0IGFuZCBob3N0LlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBMaXN0ZW5zIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCBhbmQgb3B0aW9uYWxseSBhIGhvc3QuIE9uY2Ugc3RhcnRlZCxcbiAgICogbG9ncyB0aGUgYXBwbGljYXRpb24gVVJMIGZvciBlYXN5IGFjY2Vzcy4gVGhlIHN0YXJ0dXAgcHJvY2VzcyByZXNvbHZlc1xuICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3J0PTMwMDBdIC0gUG9ydCBudW1iZXIgdG8gbGlzdGVuIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xvZz10cnVlXSAtIFdoZXRoZXIgdG8gbG9nIHRoZSBhcHBsaWNhdGlvbiBVUkwgdXBvbiBzdGFydHVwLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBSZXNvbHZlcyBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHMgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHN0YXJ0KFxuICAgIHBvcnQ6IG51bWJlciA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLFxuICAgIGhvc3Q6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBsb2c6IGJvb2xlYW4gPSB0cnVlXG4gICkge1xuICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0IGFzIGFueSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuYXBwLmdldFVybCgpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTmVzdEJvb3RzdHJhcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF5QztBQUN6QyxvREFBNkQ7QUFDN0QsaURBQW9EO0FBQ3BELGdEQUE4QztBQUM5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFDSCxNQUFhLGVBQWU7SUFDeEI7Ozs7Ozs7OztPQVNHO0lBQ0gsTUFBTSxLQUFLLE1BQU07UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLFdBQVc7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUNEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUc7UUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0Q7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQVk7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLElBQUksSUFBSSxlQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLFlBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQztRQUMzRSxNQUFNLGNBQWMsR0FBRyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sV0FBVyxHQUFHO1lBQ2hCLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDekIsa0NBQWtDO2dCQUNsQyxJQUFJLENBQUMsTUFBTTtvQkFDUCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksY0FBYyxLQUFLLEdBQUc7b0JBQ3RCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7d0JBQzFCLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsUUFBUSxDQUFDLElBQUksb0JBQVMsQ0FBQyxVQUFVLE1BQU0sY0FBYyxDQUFDLENBQUMsQ0FBQztZQUM1RCxDQUFDO1lBQ0QsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2xDLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0Q7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU87UUFDcEIsSUFBSSxDQUFDO1lBQ0QsaUVBQWlFO1lBQ2pFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztZQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzNELDZEQUE2RDtRQUNqRSxDQUFDO1FBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTztRQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLHlCQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN6QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxLQUFLO1lBQzNCLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxJQUFJO1lBQzFELFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtZQUM5QixlQUFlLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDcEMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDMUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtZQUN4QyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7U0FDM0MsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLO1FBQzFCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxPQUFPO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSwrQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLFlBQVk7UUFDeEMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEdBQUcsU0FBUyxFQUFFLEdBQUcsR0FBRyxJQUFJO1FBQ3BGLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDeEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDTixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQWpORCwwQ0FpTkM7QUFDRCxzdm9CQUFzdm9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2VyLCB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVjYWZFeGNlcHRpb25GaWx0ZXIgfSBmcm9tIFwiLi9leGNlcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQnVpbGRlciB9IGZyb20gXCIuL29wZW5hcGkvaW5kZXguanNcIjtcbmltcG9ydCB7IENvcnNFcnJvciB9IGZyb20gXCIuL2Vycm9ycy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgZmx1ZW50LCBzdGF0aWMgYm9vdHN0cmFwIGNsYXNzIGZvciBpbml0aWFsaXppbmcgYW5kIGNvbmZpZ3VyaW5nIGEgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE5lc3RCb290c3RyYXBlcmAgY2xhc3MgcHJvdmlkZXMgYSBjaGFpbmFibGUgQVBJIGZvciBjb25maWd1cmluZ1xuICogYSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UuIEl0IGluY2x1ZGVzIGJ1aWx0LWluIG1ldGhvZHMgZm9yIGVuYWJsaW5nXG4gKiBDT1JTLCBIZWxtZXQgc2VjdXJpdHksIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiwgZ2xvYmFsIHBpcGVzLCBmaWx0ZXJzLFxuICogaW50ZXJjZXB0b3JzLCBhbmQgc3RhcnRpbmcgdGhlIHNlcnZlci5cbiAqXG4gKiBUaGlzIGNsYXNzIHByb21vdGVzIGNvbnNpc3RlbmN5IGFuZCByZWR1Y2VzIHJlcGV0aXRpdmUgc2V0dXAgY29kZVxuICogYWNyb3NzIG11bHRpcGxlIE5lc3RKUyBwcm9qZWN0cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IE5lc3RGYWN0b3J5IH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuICogaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4vYXBwLm1vZHVsZVwiO1xuICogaW1wb3J0IHsgTXlMb2dnZXIgfSBmcm9tIFwiLi9NeUxvZ2dlclwiO1xuICogaW1wb3J0IHsgTmVzdEJvb3RzdHJhcGVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItbmVzdFwiO1xuICpcbiAqIGFzeW5jIGZ1bmN0aW9uIGJvb3RzdHJhcCgpIHtcbiAqICAgY29uc3QgYXBwID0gYXdhaXQgTmVzdEZhY3RvcnkuY3JlYXRlKEFwcE1vZHVsZSk7XG4gKlxuICogICBhd2FpdCBOZXN0Qm9vdHN0cmFwZXJcbiAqICAgICAuaW5pdGlhbGl6ZShhcHApXG4gKiAgICAgLmVuYWJsZUxvZ2dlcihuZXcgTXlMb2dnZXIoKSlcbiAqICAgICAuZW5hYmxlQ29ycyhbXCJodHRwOi8vbG9jYWxob3N0OjQyMDBcIl0pXG4gKiAgICAgLnVzZUhlbG1ldCgpXG4gKiAgICAgLnNldHVwU3dhZ2dlcih7XG4gKiAgICAgICB0aXRsZTogXCJPcGVuQVBJIGJ5IFRyYWRlTWFya+KEolwiLFxuICogICAgICAgZGVzY3JpcHRpb246IFwiVHJhZGVNYXJr4oSiIEFQSSBkb2N1bWVudGF0aW9uXCIsXG4gKiAgICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gKiAgICAgICBwYXRoOiBcImFwaVwiLFxuICogICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IHRydWUsXG4gKiAgICAgICB0b3BiYXJCZ0NvbG9yOiBcIiMyQzNFNTBcIixcbiAqICAgICAgIHRvcGJhckljb25QYXRoOiBcIi9hc3NldHMvbG9nby5zdmdcIixcbiAqICAgICAgIGZhdmljb25QYXRoOiBcIi9hc3NldHMvZmF2aWNvbi5pY29cIlxuICogICAgIH0pXG4gKiAgICAgLnVzZUdsb2JhbEZpbHRlcnMoKVxuICogICAgIC51c2VHbG9iYWxQaXBlcyguLi4pXG4gKiAgICAgLnVzZUdsb2JhbEludGVyY2VwdG9ycyguLi4pXG4gKiAgICAgLnN0YXJ0KDMwMDApO1xuICogfVxuICpcbiAqIGJvb3RzdHJhcCgpO1xuICogYGBgXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RCb290c3RyYXBlciB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBsb2dnZXIgaW5zdGFuY2UsIGNyZWF0aW5nIGEgZGVmYXVsdCBvbmUgaWYgbm90IHNldC5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogRW5zdXJlcyB0aGF0IGEgdmFsaWQgYExvZ2dlcmAgaW5zdGFuY2UgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgICAqIGZvciBsb2dnaW5nIGJvb3RzdHJhcC1yZWxhdGVkIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TG9nZ2VyfSBUaGUgYWN0aXZlIGxvZ2dlciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGxvZ2dlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9sb2dnZXIpIHtcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIgPSBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJbml0aWFsaXplcyB0aGUgYm9vdHN0cmFwcGVyIHdpdGggYSBnaXZlbiBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEJpbmRzIHRoZSBwcm92aWRlZCBOZXN0SlMgYXBwIGluc3RhbmNlIHRvIHRoZSBib290c3RyYXBwZXIsIGVuYWJsaW5nXG4gICAgICogY2hhaW5lZCBjb25maWd1cmF0aW9uIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0lOZXN0QXBwbGljYXRpb259IGFwcCAtIFRoZSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gaW5pdGlhbGl6ZS5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uIG1ldGhvZHMuXG4gICAgICovXG4gICAgc3RhdGljIGluaXRpYWxpemUoYXBwKSB7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRW5hYmxlcyBvciByZXBsYWNlcyB0aGUgZ2xvYmFsIGxvZ2dlciBmb3IgdGhlIE5lc3RKUyBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogSWYgYSBjdXN0b20gbG9nZ2VyIGlzIHByb3ZpZGVkLCBpdCByZXBsYWNlcyB0aGUgZGVmYXVsdCBsb2dnZXIuIE90aGVyd2lzZSxcbiAgICAgKiBhIG5ldyBsb2dnZXIgbmFtZWQgYFwiTmVzdEJvb3RzdHJhcFwiYCBpcyB1c2VkLiBUaGlzIGxvZ2dlciBpcyBhbHNvIHJlZ2lzdGVyZWRcbiAgICAgKiB3aXRoIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvZ2dlcn0gW2N1c3RvbUxvZ2dlcl0gLSBPcHRpb25hbCBjdXN0b20gbG9nZ2VyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHN0YXRpYyBlbmFibGVMb2dnZXIoY3VzdG9tTG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlciA9IGN1c3RvbUxvZ2dlciB8fCBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICAgICAgdGhpcy5hcHAudXNlTG9nZ2VyKHRoaXMuX2xvZ2dlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBFbmFibGVzIENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIChDT1JTKSBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBBbGxvd3MgZGVmaW5pbmcgZWl0aGVyIGEgd2lsZGNhcmQgb3JpZ2luIChgXCIqXCJgKSBvciBhIGxpc3Qgb2YgYWxsb3dlZCBvcmlnaW5zLlxuICAgICAqIEF1dG9tYXRpY2FsbHkgYWNjZXB0cyBsb2NhbCBkZXZlbG9wbWVudCByZXF1ZXN0cyBhbmQgdGhvc2Ugd2l0aG91dCBvcmlnaW4gaGVhZGVycy5cbiAgICAgKiBUaHJvd3MgYSBgQ29yc0Vycm9yYCBmb3IgdW5hdXRob3JpemVkIG9yaWdpbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geycqJyB8IHN0cmluZ1tdfSBbb3JpZ2lucz1bXV0gLSBMaXN0IG9mIGFsbG93ZWQgb3JpZ2lucyBvciBgXCIqXCJgIHRvIGFsbG93IGFsbC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYWxsb3dNZXRob2RzPVsnR0VUJywgJ1BPU1QnLCAnUFVUJywgJ0RFTEVURSddXSAtIEFsbG93ZWQgSFRUUCBtZXRob2RzLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKi9cbiAgICBzdGF0aWMgZW5hYmxlQ29ycyhvcmlnaW5zID0gW10sIGFsbG93TWV0aG9kcyA9IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJERUxFVEVcIl0pIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZE9yaWdpbnMgPSBvcmlnaW5zID09PSBcIipcIiA/IFwiKlwiIDogb3JpZ2lucy5tYXAoKG8pID0+IG8udHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBjb25zdCBjb3JzT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG9yaWdpbjogKG9yaWdpbiwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAvLyBBbGxvdyByZXF1ZXN0IHdpdGhvdXQgb3JpZ2luLi4uXG4gICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZE9yaWdpbnMgPT09IFwiKlwiIHx8XG4gICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGFsbG93ZWRPcmlnaW5zKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMob3JpZ2luLnRvTG93ZXJDYXNlKCkpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBDb3JzRXJyb3IoYE9yaWdpbiAke29yaWdpbn0gbm90IGFsbG93ZWRgKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICBtZXRob2RzOiBhbGxvd01ldGhvZHMuam9pbihcIixcIiksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXBwLmVuYWJsZUNvcnMoY29yc09wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQXBwbGllcyB0aGUgSGVsbWV0IG1pZGRsZXdhcmUgZm9yIGVuaGFuY2VkIHNlY3VyaXR5LlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBEeW5hbWljYWxseSBsb2FkcyB0aGUgYGhlbG1ldGAgcGFja2FnZSBpZiBhdmFpbGFibGUgYW5kIHJlZ2lzdGVycyBpdFxuICAgICAqIGFzIG1pZGRsZXdhcmUgdG8gaW1wcm92ZSBIVFRQIGhlYWRlciBzZWN1cml0eS4gSWYgbm90IGluc3RhbGxlZCwgbG9ncyBhIHdhcm5pbmdcbiAgICAgKiBhbmQgY29udGludWVzIGV4ZWN1dGlvbiB3aXRob3V0IHRocm93aW5nIGVycm9ycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW29wdGlvbnNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBwYXNzZWQgdG8gSGVsbWV0LlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIHVzZUhlbG1ldChvcHRpb25zKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgICAgY29uc3QgaGVsbWV0ID0gcmVxdWlyZShcImhlbG1ldFwiKTsgLy8gRHluYW1pYyBpbXBvcnQgdG8gYXZvaWQgaGFyZCBkZXBlbmRlbmN5XG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoaGVsbWV0KG9wdGlvbnMpKTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIkhlbG1ldCBtaWRkbGV3YXJlIGVuYWJsZWQgc3VjY2Vzc2Z1bGx5LlwiKTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcIkhlbG1ldCBub3QgaW5zdGFsbGVkLiBTa2lwcGluZyBtaWRkbGV3YXJlLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQ29uZmlndXJlcyBhbmQgaW5pdGlhbGl6ZXMgU3dhZ2dlciBVSSBmb3IgQVBJIGRvY3VtZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIFVzZXMgdGhlIGBTd2FnZ2VyQnVpbGRlcmAgdXRpbGl0eSB0byBjb25maWd1cmUgQVBJIGRvY3VtZW50YXRpb25cbiAgICAgKiB3aXRoIGRldGFpbGVkIGN1c3RvbWl6YXRpb24gZm9yIHRpdGxlLCB2ZXJzaW9uLCBwYXRocywgYW5kIGNvbG9ycy5cbiAgICAgKiBTd2FnZ2VyIGlzIGF1dG9tYXRpY2FsbHkgZXhwb3NlZCBhdCB0aGUgY29uZmlndXJlZCBwYXRoLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTd2FnZ2VyU2V0dXBPcHRpb25zfSBvcHRpb25zIC0gU3dhZ2dlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBzdGF0aWMgc2V0dXBTd2FnZ2VyKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3dhZ2dlciA9IG5ldyBTd2FnZ2VyQnVpbGRlcih0aGlzLmFwcCwge1xuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbixcbiAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMucGF0aCB8fCBcImFwaVwiLFxuICAgICAgICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IG9wdGlvbnMucGVyc2lzdEF1dGhvcml6YXRpb24gPz8gdHJ1ZSxcbiAgICAgICAgICAgIGFzc2V0c1BhdGg6IG9wdGlvbnMuYXNzZXRzUGF0aCxcbiAgICAgICAgICAgIGZhdmljb25GaWxlUGF0aDogb3B0aW9ucy5mYXZpY29uUGF0aCxcbiAgICAgICAgICAgIHRvcGJhckljb25GaWxlUGF0aDogb3B0aW9ucy50b3BiYXJJY29uUGF0aCxcbiAgICAgICAgICAgIHRvcGJhckJnQ29sb3I6IG9wdGlvbnMudG9wYmFyQmdDb2xvcixcbiAgICAgICAgICAgIG9wZW5BcGlKc29uUGF0aDogb3B0aW9ucy5vcGVuQXBpSnNvblBhdGgsXG4gICAgICAgICAgICBvcGVuQXBpWWFtbFBhdGg6IG9wdGlvbnMub3BlbkFwaVlhbWxQYXRoLFxuICAgICAgICB9KTtcbiAgICAgICAgc3dhZ2dlci5zZXR1cFN3YWdnZXIoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgdmFsaWRhdGlvbiBwaXBlcy5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogRW5hYmxlcyByZXF1ZXN0IHBheWxvYWQgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24gZ2xvYmFsbHkgYWNyb3NzXG4gICAgICogdGhlIGVudGlyZSBOZXN0SlMgYXBwbGljYXRpb24uIE11bHRpcGxlIHBpcGVzIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyXG4gICAgICogZm9yIG1vZHVsYXIgaW5wdXQgdmFsaWRhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uUGlwZVRyYW5zZm9ybVtdfSBwaXBlcyAtIFBpcGUgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyIGdsb2JhbGx5LlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHN0YXRpYyB1c2VHbG9iYWxQaXBlcyguLi5waXBlcykge1xuICAgICAgICBpZiAocGlwZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZUdsb2JhbFBpcGVzKC4uLnBpcGVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgZXhjZXB0aW9uIGZpbHRlcnMuXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIElmIG5vIGZpbHRlcnMgYXJlIHByb3ZpZGVkLCBpdCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyBhIGRlZmF1bHRcbiAgICAgKiBzZXQgb2Ygc3RhbmRhcmQgZXhjZXB0aW9uIGZpbHRlcnMgZm9yIGNvbW1vbiBlcnJvciB0eXBlcyBsaWtlXG4gICAgICogYEh0dHBFeGNlcHRpb25gLCBgVmFsaWRhdGlvbkV4Y2VwdGlvbmAsIGBDb25mbGljdEV4Y2VwdGlvbmAsIGFuZCBvdGhlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gey4uLkV4Y2VwdGlvbkZpbHRlcltdfSBmaWx0ZXJzIC0gT3B0aW9uYWwgZmlsdGVycyB0byBhcHBseSBnbG9iYWxseS5cbiAgICAgKi9cbiAgICBzdGF0aWMgdXNlR2xvYmFsRmlsdGVycyguLi5maWx0ZXJzKSB7XG4gICAgICAgIHRoaXMuYXBwLnVzZUdsb2JhbEZpbHRlcnMoLi4uKGZpbHRlcnMubGVuZ3RoID4gMCA/IGZpbHRlcnMgOiBbbmV3IERlY2FmRXhjZXB0aW9uRmlsdGVyKCldKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZWdpc3RlcnMgZ2xvYmFsIGludGVyY2VwdG9ycyBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgdHJhbnNmb3JtYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEludGVyY2VwdG9ycyBhbGxvdyBhZHZhbmNlZCByZXF1ZXN0L3Jlc3BvbnNlIG1hbmlwdWxhdGlvbiBzdWNoIGFzXG4gICAgICogc2VyaWFsaXphdGlvbiwgbG9nZ2luZywgb3IgdHJhbnNmb3JtYXRpb24uIE11bHRpcGxlIGludGVyY2VwdG9yc1xuICAgICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5OZXN0SW50ZXJjZXB0b3JbXX0gaW50ZXJjZXB0b3JzIC0gSW50ZXJjZXB0b3IgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbEludGVyY2VwdG9ycyguLi5pbnRlcmNlcHRvcnMpIHtcbiAgICAgICAgaWYgKGludGVyY2VwdG9ycy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhpcy5hcHAudXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9ycyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTdGFydHMgdGhlIE5lc3RKUyBhcHBsaWNhdGlvbiBhbmQgYmluZHMgaXQgdG8gdGhlIGdpdmVuIHBvcnQgYW5kIGhvc3QuXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIExpc3RlbnMgb24gdGhlIHNwZWNpZmllZCBwb3J0IGFuZCBvcHRpb25hbGx5IGEgaG9zdC4gT25jZSBzdGFydGVkLFxuICAgICAqIGxvZ3MgdGhlIGFwcGxpY2F0aW9uIFVSTCBmb3IgZWFzeSBhY2Nlc3MuIFRoZSBzdGFydHVwIHByb2Nlc3MgcmVzb2x2ZXNcbiAgICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9ydD0zMDAwXSAtIFBvcnQgbnVtYmVyIHRvIGxpc3RlbiBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbbG9nPXRydWVdIC0gV2hldGhlciB0byBsb2cgdGhlIGFwcGxpY2F0aW9uIFVSTCB1cG9uIHN0YXJ0dXAuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgb25jZSB0aGUgYXBwbGljYXRpb24gc3RhcnRzIHN1Y2Nlc3NmdWxseS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgc3RhcnQocG9ydCA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLCBob3N0ID0gdW5kZWZpbmVkLCBsb2cgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0KS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLmFwcC5nZXRVcmwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVRtVnpkRUp2YjNSemRISmhjR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZjM0pqTDJaaFkzUnZjbmt2VG1WemRFSnZiM1J6ZEhKaGNHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGRlRDeE5RVUZOTEVkQlIxQXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU40UWl4UFFVRlBMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNPRUpCUVhGQ08wRkJRM0JFTEU5QlFVOHNSVUZCUlN4alFVRmpMRVZCUVVVc01rSkJRV3RDTzBGQlJUTkRMRTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVVzTUVKQlFXbENPMEZCTkVOeVF6czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdSMEVyUTBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzWlVGQlpUdEpRVWt4UWpzN096czdPenM3TzA5QlUwYzdTVUZEU3l4TlFVRk5MRXRCUVVzc1RVRkJUVHRSUVVOMlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJRMnhDTEZkQlFWYzdXVUZEV0N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFTkJRVU03VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1NVRkRkRUlzUTBGQlF6dEpRVVZFT3pzN096czdPenM3TzA5QlZVYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRWEZDTzFGQlEzSkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlEyWXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPenM3TzA5QlYwYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExGbEJRWEZDTzFGQlEzWkRMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzV1VGQldTeEpRVUZKTEVsQlFVa3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJRek5FTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTnFReXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkRzN096czdPenM3T3pzN096dFBRV0ZITzBsQlEwZ3NUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkRaaXhWUVVFd1FpeEZRVUZGTEVWQlF6VkNMR1ZCUVhsQ0xFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1VVRkJVU3hEUVVGRE8xRkJSWHBFTEUxQlFVMHNZMEZCWXl4SFFVTnNRaXhQUVVGUExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSWEpGTEUxQlFVMHNWMEZCVnl4SFFVRm5RanRaUVVNdlFpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFVkJRVVU3WjBKQlF6TkNMR3REUVVGclF6dG5Ra0ZEYkVNc1NVRkJTU3hEUVVGRExFMUJRVTA3YjBKQlFVVXNUMEZCVHl4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVVjZReXhKUVVORkxHTkJRV01zUzBGQlN5eEhRVUZITzI5Q1FVTjBRaXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNZMEZCWXl4RFFVRkRPM2RDUVVNMVFpeGpRVUZqTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlEyaEVMRU5CUVVNN2IwSkJRMFFzVDBGQlR5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU01UWl4RFFVRkRPMmRDUVVWRUxGRkJRVkVzUTBGQlF5eEpRVUZKTEZOQlFWTXNRMEZCUXl4VlFVRlZMRTFCUVUwc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14UkN4RFFVRkRPMWxCUTBRc1YwRkJWeXhGUVVGRkxFbEJRVWs3V1VGRGFrSXNUMEZCVHl4RlFVRkZMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETzFOQlEyaERMRU5CUVVNN1VVRkZSaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOcVF5eFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPenM3VDBGWFJ6dEpRVU5JTEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJOa0k3VVVGRE5VTXNTVUZCU1N4RFFVRkRPMWxCUTBnc2FVVkJRV2xGTzFsQlEycEZMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVFd1F6dFpRVU0xUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNNVFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXg1UTBGQmVVTXNRMEZCUXl4RFFVRkRPMWxCUXpORUxEWkVRVUUyUkR0UlFVTXZSQ3hEUVVGRE8xRkJRVU1zVDBGQlR5eERRVUZOTEVWQlFVVXNRMEZCUXp0WlFVTm9RaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl3MFEwRkJORU1zUTBGQlF5eERRVUZETzFGQlEycEZMRU5CUVVNN1VVRkZSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkRzN096czdPenM3T3pzN1QwRlhSenRKUVVOSUxFMUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCTkVJN1VVRkRPVU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJUdFpRVU16UXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhEUVVGRExFdEJRVXM3V1VGRGNFSXNWMEZCVnl4RlFVRkZMRTlCUVU4c1EwRkJReXhYUVVGWE8xbEJRMmhETEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1QwRkJUenRaUVVONFFpeEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRWxCUVVrc1NVRkJTU3hMUVVGTE8xbEJRek5DTEc5Q1FVRnZRaXhGUVVGRkxFOUJRVThzUTBGQlF5eHZRa0ZCYjBJc1NVRkJTU3hKUVVGSk8xbEJRekZFTEZWQlFWVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1ZVRkJWVHRaUVVNNVFpeGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMRmRCUVZjN1dVRkRjRU1zYTBKQlFXdENMRVZCUVVVc1QwRkJUeXhEUVVGRExHTkJRV003V1VGRE1VTXNZVUZCWVN4RlFVRkZMRTlCUVU4c1EwRkJReXhoUVVGaE8xbEJRM0JETEdWQlFXVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1pVRkJaVHRaUVVONFF5eGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMR1ZCUVdVN1UwRkRla01zUTBGQlF5eERRVUZETzFGQlEwZ3NUMEZCVHl4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJRM1pDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRU96czdPenM3T3pzN096dFBRVmRITzBsQlEwZ3NUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFdEJRWE5DTzFGQlF6ZERMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzFsQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhqUVVGakxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkRzN096czdPenM3T3p0UFFWVkhPMGxCUTBnc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWRCUVVjc1QwRkJZenRSUVVOMlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMR2RDUVVGblFpeERRVU4yUWl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVU5xUlN4RFFVRkRPMUZCUTBZc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUTdPenM3T3pzN096czdPMDlCVjBjN1NVRkRTQ3hOUVVGTkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1IwRkJSeXhaUVVFclFqdFJRVU0zUkN4SlFVRkpMRmxCUVZrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF6dFpRVU42UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRGJFUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPenM3T3pzN1QwRmhSenRKUVVOSUxFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVTm9RaXhQUVVGbExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGREwwTXNUMEZCTWtJc1UwRkJVeXhGUVVOd1F5eE5RVUZsTEVsQlFVazdVVUZGYmtJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVZjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NSVUZCUlR0WlFVTnFSQ3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzJkQ1FVTlNMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRuUWtGRGNFTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zYVVOQlFXbERMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU03V1VGRE1VUXNRMEZCUXp0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMHdzUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0Y2JpQWdTVTVsYzNSQmNIQnNhV05oZEdsdmJpeGNiaUFnVEc5bloyVnlMRnh1SUNCT1pYTjBTVzUwWlhKalpYQjBiM0lzWEc0Z0lGQnBjR1ZVY21GdWMyWnZjbTBzWEc1OUlHWnliMjBnWENKQWJtVnpkR3B6TDJOdmJXMXZibHdpTzF4dWFXMXdiM0owSUhzZ1JHVmpZV1pGZUdObGNIUnBiMjVHYVd4MFpYSWdmU0JtY205dElGd2lMaTlsZUdObGNIUnBiMjV6WENJN1hHNXBiWEJ2Y25RZ2V5QlRkMkZuWjJWeVFuVnBiR1JsY2lCOUlHWnliMjBnWENJdUwyOXdaVzVoY0dsY0lqdGNibWx0Y0c5eWRDQjdJRU52Y25OUGNIUnBiMjV6SUgwZ1puSnZiU0JjSWtCdVpYTjBhbk12WTI5dGJXOXVMMmx1ZEdWeVptRmpaWE12WlhoMFpYSnVZV3d2WTI5eWN5MXZjSFJwYjI1ekxtbHVkR1Z5Wm1GalpWd2lPMXh1YVcxd2IzSjBJSHNnUTI5eWMwVnljbTl5SUgwZ1puSnZiU0JjSWk0dlpYSnliM0p6WENJN1hHNWNiaThxS2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1WEc0Z0tpQkVaV1pwYm1WeklHRnNiQ0JqZFhOMGIyMXBlbUZpYkdVZ2NHRnlZVzFsZEdWeWN5Qm1iM0lnVTNkaFoyZGxjaUJ6WlhSMWNDNWNiaUFxWEc0Z0tpQkFjM1Z0YldGeWVWeHVJQ29nVkdocGN5QnBiblJsY21aaFkyVWdZV3hzYjNkeklHUmxkbVZzYjNCbGNuTWdkRzhnWTNWemRHOXRhWHBsSUdodmR5QlRkMkZuWjJWeUlGVkpJR2x6SUdOdmJtWnBaM1Z5WldSY2JpQXFJSGRwZEdocGJpQjBhR1VnVG1WemRFcFRJR0Z3Y0d4cFkyRjBhVzl1TGlCSmRDQnBibU5zZFdSbGN5QndZWEpoYldWMFpYSnpJR1p2Y2lCMGFYUnNaWE1zSUhCaGRHaHpMRnh1SUNvZ1kyOXNiM0lnYzJOb1pXMWxjeXdnWVc1a0lHRnpjMlYwSUhCaGRHaHpJSFJ2SUhSaGFXeHZjaUIwYUdVZ1FWQkpJR1J2WTNWdFpXNTBZWFJwYjI0Z1pYaHdaWEpwWlc1alpTNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHbDBiR1VnTFNCVWFYUnNaU0JrYVhOd2JHRjVaV1FnYVc0Z1UzZGhaMmRsY2lCVlNTNWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JrWlhOamNtbHdkR2x2YmlBdElFUmxjMk55YVhCMGFXOXVJSE5vYjNkdUlHSmxiRzkzSUhSb1pTQjBhWFJzWlM1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjJaWEp6YVc5dUlDMGdRVkJKSUhabGNuTnBiMjRnWkdsemNHeGhlV1ZrSUdsdUlIUm9aU0JrYjJOMWJXVnVkR0YwYVc5dUxseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnR3WVhSb1hTQXRJRTl3ZEdsdmJtRnNJSEJoZEdnZ2QyaGxjbVVnVTNkaFoyZGxjaUIzYVd4c0lHSmxJR0YyWVdsc1lXSnNaUzVjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1czQmxjbk5wYzNSQmRYUm9iM0pwZW1GMGFXOXVYU0F0SUZkb1pYUm9aWElnWVhWMGFHOXlhWHBoZEdsdmJpQjBiMnRsYm5NZ2NHVnljMmx6ZENCaFkzSnZjM01nY21Wc2IyRmtjeTVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYllYTnpaWFJ6VUdGMGFGMGdMU0JRWVhSb0lIUnZJR04xYzNSdmJTQmhjM05sZEhNZ1ptOXlJRk4zWVdkblpYSWdWVWt1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1czUnZjR0poY2tKblEyOXNiM0pkSUMwZ1EzVnpkRzl0SUdKaFkydG5jbTkxYm1RZ1kyOXNiM0lnWm05eUlIUm9aU0JUZDJGbloyVnlJSFJ2Y0NCaVlYSXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzNSdmNHSmhja2xqYjI1UVlYUm9YU0F0SUZCaGRHZ2dkRzhnWVNCamRYTjBiMjBnYVdOdmJpQmthWE53YkdGNVpXUWdhVzRnZEdobElIUnZjQ0JpWVhJdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMlpoZG1samIyNVFZWFJvWFNBdElGQmhkR2dnZEc4Z1lTQmpkWE4wYjIwZ1ptRjJhV052Ymk1Y2JpQXFMMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JUZDJGbloyVnlVMlYwZFhCUGNIUnBiMjV6SUh0Y2JpQWdkR2wwYkdVNklITjBjbWx1Wnp0Y2JpQWdaR1Z6WTNKcGNIUnBiMjQ2SUhOMGNtbHVaenRjYmlBZ2RtVnljMmx2YmpvZ2MzUnlhVzVuTzF4dUlDQndZWFJvUHpvZ2MzUnlhVzVuTzF4dUlDQndaWEp6YVhOMFFYVjBhRzl5YVhwaGRHbHZiajg2SUdKdmIyeGxZVzQ3WEc0Z0lHRnpjMlYwYzFCaGRHZy9PaUJ6ZEhKcGJtYzdYRzRnSUhSdmNHSmhja0puUTI5c2IzSS9PaUJ6ZEhKcGJtYzdYRzRnSUhSdmNHSmhja2xqYjI1UVlYUm9Qem9nYzNSeWFXNW5PMXh1SUNCbVlYWnBZMjl1VUdGMGFEODZJSE4wY21sdVp6dGNiaUFnTHlvcVhHNGdJQ0FxSUZCaGRHZ2dkRzhnWlhod2IzTmxJSFJvWlNCUGNHVnVRVkJKSUhOd1pXTnBabWxqWVhScGIyNGdhVzRnU2xOUFRpQm1iM0p0WVhRdVhHNGdJQ0FxSUVWNFlXMXdiR1U2SUM5aGNHa3ZiM0JsYm1Gd2FTNXFjMjl1WEc0Z0lDQXFMMXh1SUNCdmNHVnVRWEJwU25OdmJsQmhkR2cvT2lCemRISnBibWM3WEc0Z0lDOHFLbHh1SUNBZ0tpQlFZWFJvSUhSdklHVjRjRzl6WlNCMGFHVWdUM0JsYmtGUVNTQnpjR1ZqYVdacFkyRjBhVzl1SUdsdUlGbEJUVXdnWm05eWJXRjBMbHh1SUNBZ0tpQlNaWEYxYVhKbGN5QW5lV0Z0YkNjZ2NHRmphMkZuWlNCaGN5QndaV1Z5SUdSbGNHVnVaR1Z1WTNrdVhHNGdJQ0FxSUVWNFlXMXdiR1U2SUM5aGNHa3ZiM0JsYm1Gd2FTNTVZVzFzWEc0Z0lDQXFMMXh1SUNCdmNHVnVRWEJwV1dGdGJGQmhkR2cvT2lCemRISnBibWM3WEc1OVhHNWNiaThxS2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1WEc0Z0tpQkJJR1pzZFdWdWRDd2djM1JoZEdsaklHSnZiM1J6ZEhKaGNDQmpiR0Z6Y3lCbWIzSWdhVzVwZEdsaGJHbDZhVzVuSUdGdVpDQmpiMjVtYVdkMWNtbHVaeUJoSUU1bGMzUktVeUJoY0hCc2FXTmhkR2x2Ymk1Y2JpQXFYRzRnS2lCQWMzVnRiV0Z5ZVZ4dUlDb2dWR2hsSUdCT1pYTjBRbTl2ZEhOMGNtRndaWEpnSUdOc1lYTnpJSEJ5YjNacFpHVnpJR0VnWTJoaGFXNWhZbXhsSUVGUVNTQm1iM0lnWTI5dVptbG5kWEpwYm1kY2JpQXFJR0VnVG1WemRFcFRJR0Z3Y0d4cFkyRjBhVzl1SUdsdWMzUmhibU5sTGlCSmRDQnBibU5zZFdSbGN5QmlkV2xzZEMxcGJpQnRaWFJvYjJSeklHWnZjaUJsYm1GaWJHbHVaMXh1SUNvZ1EwOVNVeXdnU0dWc2JXVjBJSE5sWTNWeWFYUjVMQ0JUZDJGbloyVnlJR1J2WTNWdFpXNTBZWFJwYjI0c0lHZHNiMkpoYkNCd2FYQmxjeXdnWm1sc2RHVnljeXhjYmlBcUlHbHVkR1Z5WTJWd2RHOXljeXdnWVc1a0lITjBZWEowYVc1bklIUm9aU0J6WlhKMlpYSXVYRzRnS2x4dUlDb2dWR2hwY3lCamJHRnpjeUJ3Y205dGIzUmxjeUJqYjI1emFYTjBaVzVqZVNCaGJtUWdjbVZrZFdObGN5QnlaWEJsZEdsMGFYWmxJSE5sZEhWd0lHTnZaR1ZjYmlBcUlHRmpjbTl6Y3lCdGRXeDBhWEJzWlNCT1pYTjBTbE1nY0hKdmFtVmpkSE11WEc0Z0tseHVJQ29nUUdWNFlXMXdiR1ZjYmlBcUlHQmdZSFJ6WEc0Z0tpQnBiWEJ2Y25RZ2V5Qk9aWE4wUm1GamRHOXllU0I5SUdaeWIyMGdYQ0pBYm1WemRHcHpMMk52Y21WY0lqdGNiaUFxSUdsdGNHOXlkQ0I3SUVGd2NFMXZaSFZzWlNCOUlHWnliMjBnWENJdUwyRndjQzV0YjJSMWJHVmNJanRjYmlBcUlHbHRjRzl5ZENCN0lFMTVURzluWjJWeUlIMGdabkp2YlNCY0lpNHZUWGxNYjJkblpYSmNJanRjYmlBcUlHbHRjRzl5ZENCN0lFNWxjM1JDYjI5MGMzUnlZWEJsY2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlptOXlMVzVsYzNSY0lqdGNiaUFxWEc0Z0tpQmhjM2x1WXlCbWRXNWpkR2x2YmlCaWIyOTBjM1J5WVhBb0tTQjdYRzRnS2lBZ0lHTnZibk4wSUdGd2NDQTlJR0YzWVdsMElFNWxjM1JHWVdOMGIzSjVMbU55WldGMFpTaEJjSEJOYjJSMWJHVXBPMXh1SUNwY2JpQXFJQ0FnWVhkaGFYUWdUbVZ6ZEVKdmIzUnpkSEpoY0dWeVhHNGdLaUFnSUNBZ0xtbHVhWFJwWVd4cGVtVW9ZWEJ3S1Z4dUlDb2dJQ0FnSUM1bGJtRmliR1ZNYjJkblpYSW9ibVYzSUUxNVRHOW5aMlZ5S0NrcFhHNGdLaUFnSUNBZ0xtVnVZV0pzWlVOdmNuTW9XMXdpYUhSMGNEb3ZMMnh2WTJGc2FHOXpkRG8wTWpBd1hDSmRLVnh1SUNvZ0lDQWdJQzUxYzJWSVpXeHRaWFFvS1Z4dUlDb2dJQ0FnSUM1elpYUjFjRk4zWVdkblpYSW9lMXh1SUNvZ0lDQWdJQ0FnZEdsMGJHVTZJRndpVDNCbGJrRlFTU0JpZVNCVWNtRmtaVTFoY212aWhLSmNJaXhjYmlBcUlDQWdJQ0FnSUdSbGMyTnlhWEIwYVc5dU9pQmNJbFJ5WVdSbFRXRnlhK0tFb2lCQlVFa2daRzlqZFcxbGJuUmhkR2x2Ymx3aUxGeHVJQ29nSUNBZ0lDQWdkbVZ5YzJsdmJqb2dYQ0l4TGpBdU1Gd2lMRnh1SUNvZ0lDQWdJQ0FnY0dGMGFEb2dYQ0poY0dsY0lpeGNiaUFxSUNBZ0lDQWdJSEJsY25OcGMzUkJkWFJvYjNKcGVtRjBhVzl1T2lCMGNuVmxMRnh1SUNvZ0lDQWdJQ0FnZEc5d1ltRnlRbWREYjJ4dmNqb2dYQ0lqTWtNelJUVXdYQ0lzWEc0Z0tpQWdJQ0FnSUNCMGIzQmlZWEpKWTI5dVVHRjBhRG9nWENJdllYTnpaWFJ6TDJ4dloyOHVjM1puWENJc1hHNGdLaUFnSUNBZ0lDQm1ZWFpwWTI5dVVHRjBhRG9nWENJdllYTnpaWFJ6TDJaaGRtbGpiMjR1YVdOdlhDSmNiaUFxSUNBZ0lDQjlLVnh1SUNvZ0lDQWdJQzUxYzJWSGJHOWlZV3hHYVd4MFpYSnpLQ2xjYmlBcUlDQWdJQ0F1ZFhObFIyeHZZbUZzVUdsd1pYTW9MaTR1S1Z4dUlDb2dJQ0FnSUM1MWMyVkhiRzlpWVd4SmJuUmxjbU5sY0hSdmNuTW9MaTR1S1Z4dUlDb2dJQ0FnSUM1emRHRnlkQ2d6TURBd0tUdGNiaUFxSUgxY2JpQXFYRzRnS2lCaWIyOTBjM1J5WVhBb0tUdGNiaUFxSUdCZ1lGeHVJQ29nUUdOc1lYTnpYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJPWlhOMFFtOXZkSE4wY21Gd1pYSWdlMXh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJoY0hBNklFbE9aWE4wUVhCd2JHbGpZWFJwYjI0N1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklGOXNiMmRuWlhJNklFeHZaMmRsY2p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUZKbGRIVnlibk1nZEdobElHTjFjbkpsYm5RZ2JHOW5aMlZ5SUdsdWMzUmhibU5sTENCamNtVmhkR2x1WnlCaElHUmxabUYxYkhRZ2IyNWxJR2xtSUc1dmRDQnpaWFF1WEc0Z0lDQXFYRzRnSUNBcUlFQnpkVzF0WVhKNVhHNGdJQ0FxSUVWdWMzVnlaWE1nZEdoaGRDQmhJSFpoYkdsa0lHQk1iMmRuWlhKZ0lHbHVjM1JoYm1ObElHbHpJR0ZzZDJGNWN5QmhkbUZwYkdGaWJHVmNiaUFnSUNvZ1ptOXlJR3h2WjJkcGJtY2dZbTl2ZEhOMGNtRndMWEpsYkdGMFpXUWdiV1Z6YzJGblpYTXVYRzRnSUNBcVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTB4dloyZGxjbjBnVkdobElHRmpkR2wyWlNCc2IyZG5aWElnYVc1emRHRnVZMlV1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJuWlhRZ2JHOW5aMlZ5S0NrNklFeHZaMmRsY2lCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TGw5c2IyZG5aWElwSUh0Y2JpQWdJQ0FnSUM4dklHWmhiR3hpWVdOclhHNGdJQ0FnSUNCMGFHbHpMbDlzYjJkblpYSWdQU0J1WlhjZ1RHOW5aMlZ5S0Z3aVRtVnpkRUp2YjNSemRISmhjRndpS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJ4dloyZGxjanRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNWNiaUFnSUNvZ1NXNXBkR2xoYkdsNlpYTWdkR2hsSUdKdmIzUnpkSEpoY0hCbGNpQjNhWFJvSUdFZ1oybDJaVzRnVG1WemRFcFRJR0Z3Y0d4cFkyRjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjM1Z0YldGeWVWeHVJQ0FnS2lCQ2FXNWtjeUIwYUdVZ2NISnZkbWxrWldRZ1RtVnpkRXBUSUdGd2NDQnBibk4wWVc1alpTQjBieUIwYUdVZ1ltOXZkSE4wY21Gd2NHVnlMQ0JsYm1GaWJHbHVaMXh1SUNBZ0tpQmphR0ZwYm1Wa0lHTnZibVpwWjNWeVlYUnBiMjRnYldWMGFHOWtjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0SlRtVnpkRUZ3Y0d4cFkyRjBhVzl1ZlNCaGNIQWdMU0JVYUdVZ1RtVnpkRXBUSUdGd2NHeHBZMkYwYVc5dUlHbHVjM1JoYm1ObElIUnZJR2x1YVhScFlXeHBlbVV1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVsYzNSQ2IyOTBjM1J5WVhCbGNuMGdVbVYwZFhKdWN5QjBhR1VnWTJ4aGMzTWdabTl5SUdOb1lXbHVhVzVuSUdOdmJtWnBaM1Z5WVhScGIyNGdiV1YwYUc5a2N5NWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5QnBibWwwYVdGc2FYcGxLR0Z3Y0RvZ1NVNWxjM1JCY0hCc2FXTmhkR2x2YmlrZ2UxeHVJQ0FnSUhSb2FYTXVZWEJ3SUQwZ1lYQndPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJseHVJQ0FnS2lCRmJtRmliR1Z6SUc5eUlISmxjR3hoWTJWeklIUm9aU0JuYkc5aVlXd2diRzluWjJWeUlHWnZjaUIwYUdVZ1RtVnpkRXBUSUdGd2NHeHBZMkYwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkpaaUJoSUdOMWMzUnZiU0JzYjJkblpYSWdhWE1nY0hKdmRtbGtaV1FzSUdsMElISmxjR3hoWTJWeklIUm9aU0JrWldaaGRXeDBJR3h2WjJkbGNpNGdUM1JvWlhKM2FYTmxMRnh1SUNBZ0tpQmhJRzVsZHlCc2IyZG5aWElnYm1GdFpXUWdZRndpVG1WemRFSnZiM1J6ZEhKaGNGd2lZQ0JwY3lCMWMyVmtMaUJVYUdseklHeHZaMmRsY2lCcGN5QmhiSE52SUhKbFoybHpkR1Z5WldSY2JpQWdJQ29nZDJsMGFDQjBhR1VnVG1WemRFcFRJR0Z3Y0d4cFkyRjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UweHZaMmRsY24wZ1cyTjFjM1J2YlV4dloyZGxjbDBnTFNCUGNIUnBiMjVoYkNCamRYTjBiMjBnYkc5bloyVnlJR2x1YzNSaGJtTmxMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdE9aWE4wUW05dmRITjBjbUZ3WlhKOUlGSmxkSFZ5Ym5NZ2RHaGxJR05zWVhOeklHWnZjaUJqYUdGcGJtbHVaeTVjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJsYm1GaWJHVk1iMmRuWlhJb1kzVnpkRzl0VEc5bloyVnlQem9nVEc5bloyVnlLU0I3WEc0Z0lDQWdkR2hwY3k1ZmJHOW5aMlZ5SUQwZ1kzVnpkRzl0VEc5bloyVnlJSHg4SUc1bGR5Qk1iMmRuWlhJb1hDSk9aWE4wUW05dmRITjBjbUZ3WENJcE8xeHVJQ0FnSUhSb2FYTXVZWEJ3TG5WelpVeHZaMmRsY2loMGFHbHpMbDlzYjJkblpYSXBPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJseHVJQ0FnS2lCRmJtRmliR1Z6SUVOeWIzTnpMVTl5YVdkcGJpQlNaWE52ZFhKalpTQlRhR0Z5YVc1bklDaERUMUpUS1NCbWIzSWdkR2hsSUdGd2NHeHBZMkYwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkJiR3h2ZDNNZ1pHVm1hVzVwYm1jZ1pXbDBhR1Z5SUdFZ2QybHNaR05oY21RZ2IzSnBaMmx1SUNoZ1hDSXFYQ0pnS1NCdmNpQmhJR3hwYzNRZ2IyWWdZV3hzYjNkbFpDQnZjbWxuYVc1ekxseHVJQ0FnS2lCQmRYUnZiV0YwYVdOaGJHeDVJR0ZqWTJWd2RITWdiRzlqWVd3Z1pHVjJaV3h2Y0cxbGJuUWdjbVZ4ZFdWemRITWdZVzVrSUhSb2IzTmxJSGRwZEdodmRYUWdiM0pwWjJsdUlHaGxZV1JsY25NdVhHNGdJQ0FxSUZSb2NtOTNjeUJoSUdCRGIzSnpSWEp5YjNKZ0lHWnZjaUIxYm1GMWRHaHZjbWw2WldRZ2IzSnBaMmx1Y3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIc25LaWNnZkNCemRISnBibWRiWFgwZ1cyOXlhV2RwYm5NOVcxMWRJQzBnVEdsemRDQnZaaUJoYkd4dmQyVmtJRzl5YVdkcGJuTWdiM0lnWUZ3aUtsd2lZQ0IwYnlCaGJHeHZkeUJoYkd3dVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5XMTE5SUZ0aGJHeHZkMDFsZEdodlpITTlXeWRIUlZRbkxDQW5VRTlUVkNjc0lDZFFWVlFuTENBblJFVk1SVlJGSjExZElDMGdRV3hzYjNkbFpDQklWRlJRSUcxbGRHaHZaSE11WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVsYzNSQ2IyOTBjM1J5WVhCbGNuMGdVbVYwZFhKdWN5QjBhR1VnWTJ4aGMzTWdabTl5SUdOb1lXbHVhVzVuSUdOdmJtWnBaM1Z5WVhScGIyNHVYRzRnSUNBcVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1pXNWhZbXhsUTI5eWN5aGNiaUFnSUNCdmNtbG5hVzV6T2lCY0lpcGNJaUI4SUhOMGNtbHVaMXRkSUQwZ1cxMHNYRzRnSUNBZ1lXeHNiM2ROWlhSb2IyUnpPaUJ6ZEhKcGJtZGJYU0E5SUZ0Y0lrZEZWRndpTENCY0lsQlBVMVJjSWl3Z1hDSlFWVlJjSWl3Z1hDSkVSVXhGVkVWY0lsMWNiaUFnS1NCN1hHNGdJQ0FnWTI5dWMzUWdZV3hzYjNkbFpFOXlhV2RwYm5NZ1BWeHVJQ0FnSUNBZ2IzSnBaMmx1Y3lBOVBUMGdYQ0lxWENJZ1B5QmNJaXBjSWlBNklHOXlhV2RwYm5NdWJXRndLQ2h2S1NBOVBpQnZMblJ5YVcwb0tTNTBiMHh2ZDJWeVEyRnpaU2dwS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR052Y25OUGNIUnBiMjV6T2lCRGIzSnpUM0IwYVc5dWN5QTlJSHRjYmlBZ0lDQWdJRzl5YVdkcGJqb2dLRzl5YVdkcGJpd2dZMkZzYkdKaFkyc3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdRV3hzYjNjZ2NtVnhkV1Z6ZENCM2FYUm9iM1YwSUc5eWFXZHBiaTR1TGx4dUlDQWdJQ0FnSUNCcFppQW9JVzl5YVdkcGJpa2djbVYwZFhKdUlHTmhiR3hpWVdOcktHNTFiR3dzSUhSeWRXVXBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDQWdJQ0JoYkd4dmQyVmtUM0pwWjJsdWN5QTlQVDBnWENJcVhDSWdmSHhjYmlBZ0lDQWdJQ0FnSUNBb1FYSnlZWGt1YVhOQmNuSmhlU2hoYkd4dmQyVmtUM0pwWjJsdWN5a2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lHRnNiRzkzWldSUGNtbG5hVzV6TG1sdVkyeDFaR1Z6S0c5eWFXZHBiaTUwYjB4dmQyVnlRMkZ6WlNncEtTbGNiaUFnSUNBZ0lDQWdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaGJHeGlZV05yS0c1MWJHd3NJSFJ5ZFdVcE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnWTJGc2JHSmhZMnNvYm1WM0lFTnZjbk5GY25KdmNpaGdUM0pwWjJsdUlDUjdiM0pwWjJsdWZTQnViM1FnWVd4c2IzZGxaR0FwS1R0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCamNtVmtaVzUwYVdGc2N6b2dkSEoxWlN4Y2JpQWdJQ0FnSUcxbGRHaHZaSE02SUdGc2JHOTNUV1YwYUc5a2N5NXFiMmx1S0Z3aUxGd2lLU3hjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdkR2hwY3k1aGNIQXVaVzVoWW14bFEyOXljeWhqYjNKelQzQjBhVzl1Y3lrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1WEc0Z0lDQXFJRUZ3Y0d4cFpYTWdkR2hsSUVobGJHMWxkQ0J0YVdSa2JHVjNZWEpsSUdadmNpQmxibWhoYm1ObFpDQnpaV04xY21sMGVTNWNiaUFnSUNwY2JpQWdJQ29nUUhOMWJXMWhjbmxjYmlBZ0lDb2dSSGx1WVcxcFkyRnNiSGtnYkc5aFpITWdkR2hsSUdCb1pXeHRaWFJnSUhCaFkydGhaMlVnYVdZZ1lYWmhhV3hoWW14bElHRnVaQ0J5WldkcGMzUmxjbk1nYVhSY2JpQWdJQ29nWVhNZ2JXbGtaR3hsZDJGeVpTQjBieUJwYlhCeWIzWmxJRWhVVkZBZ2FHVmhaR1Z5SUhObFkzVnlhWFI1TGlCSlppQnViM1FnYVc1emRHRnNiR1ZrTENCc2IyZHpJR0VnZDJGeWJtbHVaMXh1SUNBZ0tpQmhibVFnWTI5dWRHbHVkV1Z6SUdWNFpXTjFkR2x2YmlCM2FYUm9iM1YwSUhSb2NtOTNhVzVuSUdWeWNtOXljeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK2ZTQmJiM0IwYVc5dWMxMGdMU0JQY0hScGIyNWhiQ0JqYjI1bWFXZDFjbUYwYVc5dUlIQmhjM05sWkNCMGJ5QklaV3h0WlhRdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTA1bGMzUkNiMjkwYzNSeVlYQmxjbjBnVW1WMGRYSnVjeUIwYUdVZ1kyeGhjM01nWm05eUlHTm9ZV2x1YVc1bklHTnZibVpwWjNWeVlYUnBiMjR1WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nZFhObFNHVnNiV1YwS0c5d2RHbHZibk0vT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK0tTQjdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0JBZEhsd1pYTmpjbWx3ZEMxbGMyeHBiblF2Ym04dGNtVnhkV2x5WlMxcGJYQnZjblJ6WEc0Z0lDQWdJQ0JqYjI1emRDQm9aV3h0WlhRZ1BTQnlaWEYxYVhKbEtGd2lhR1ZzYldWMFhDSXBPeUF2THlCRWVXNWhiV2xqSUdsdGNHOXlkQ0IwYnlCaGRtOXBaQ0JvWVhKa0lHUmxjR1Z1WkdWdVkzbGNiaUFnSUNBZ0lIUm9hWE11WVhCd0xuVnpaU2hvWld4dFpYUW9iM0IwYVc5dWN5a3BPMXh1SUNBZ0lDQWdkR2hwY3k1c2IyZG5aWEl1Ykc5bktGd2lTR1ZzYldWMElHMXBaR1JzWlhkaGNtVWdaVzVoWW14bFpDQnpkV05qWlhOelpuVnNiSGt1WENJcE8xeHVJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXVieTExYm5WelpXUXRkbUZ5YzF4dUlDQWdJSDBnWTJGMFkyZ2dLR1U2SUdGdWVTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1c2IyZG5aWEl1ZDJGeWJpaGNJa2hsYkcxbGRDQnViM1FnYVc1emRHRnNiR1ZrTGlCVGEybHdjR2x1WnlCdGFXUmtiR1YzWVhKbExsd2lLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNWNiaUFnSUNvZ1EyOXVabWxuZFhKbGN5QmhibVFnYVc1cGRHbGhiR2w2WlhNZ1UzZGhaMmRsY2lCVlNTQm1iM0lnUVZCSklHUnZZM1Z0Wlc1MFlYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQnpkVzF0WVhKNVhHNGdJQ0FxSUZWelpYTWdkR2hsSUdCVGQyRm5aMlZ5UW5WcGJHUmxjbUFnZFhScGJHbDBlU0IwYnlCamIyNW1hV2QxY21VZ1FWQkpJR1J2WTNWdFpXNTBZWFJwYjI1Y2JpQWdJQ29nZDJsMGFDQmtaWFJoYVd4bFpDQmpkWE4wYjIxcGVtRjBhVzl1SUdadmNpQjBhWFJzWlN3Z2RtVnljMmx2Yml3Z2NHRjBhSE1zSUdGdVpDQmpiMnh2Y25NdVhHNGdJQ0FxSUZOM1lXZG5aWElnYVhNZ1lYVjBiMjFoZEdsallXeHNlU0JsZUhCdmMyVmtJR0YwSUhSb1pTQmpiMjVtYVdkMWNtVmtJSEJoZEdndVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVM2RoWjJkbGNsTmxkSFZ3VDNCMGFXOXVjMzBnYjNCMGFXOXVjeUF0SUZOM1lXZG5aWElnWTI5dVptbG5kWEpoZEdsdmJpQnZjSFJwYjI1ekxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0T1pYTjBRbTl2ZEhOMGNtRndaWEo5SUZKbGRIVnlibk1nZEdobElHTnNZWE56SUdadmNpQmphR0ZwYm1sdVp5QmpiMjVtYVdkMWNtRjBhVzl1TGx4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUhObGRIVndVM2RoWjJkbGNpaHZjSFJwYjI1ek9pQlRkMkZuWjJWeVUyVjBkWEJQY0hScGIyNXpLU0I3WEc0Z0lDQWdZMjl1YzNRZ2MzZGhaMmRsY2lBOUlHNWxkeUJUZDJGbloyVnlRblZwYkdSbGNpaDBhR2x6TG1Gd2NDd2dlMXh1SUNBZ0lDQWdkR2wwYkdVNklHOXdkR2x2Ym5NdWRHbDBiR1VzWEc0Z0lDQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ2IzQjBhVzl1Y3k1a1pYTmpjbWx3ZEdsdmJpeGNiaUFnSUNBZ0lIWmxjbk5wYjI0NklHOXdkR2x2Ym5NdWRtVnljMmx2Yml4Y2JpQWdJQ0FnSUhCaGRHZzZJRzl3ZEdsdmJuTXVjR0YwYUNCOGZDQmNJbUZ3YVZ3aUxGeHVJQ0FnSUNBZ2NHVnljMmx6ZEVGMWRHaHZjbWw2WVhScGIyNDZJRzl3ZEdsdmJuTXVjR1Z5YzJsemRFRjFkR2h2Y21sNllYUnBiMjRnUHo4Z2RISjFaU3hjYmlBZ0lDQWdJR0Z6YzJWMGMxQmhkR2c2SUc5d2RHbHZibk11WVhOelpYUnpVR0YwYUN4Y2JpQWdJQ0FnSUdaaGRtbGpiMjVHYVd4bFVHRjBhRG9nYjNCMGFXOXVjeTVtWVhacFkyOXVVR0YwYUN4Y2JpQWdJQ0FnSUhSdmNHSmhja2xqYjI1R2FXeGxVR0YwYURvZ2IzQjBhVzl1Y3k1MGIzQmlZWEpKWTI5dVVHRjBhQ3hjYmlBZ0lDQWdJSFJ2Y0dKaGNrSm5RMjlzYjNJNklHOXdkR2x2Ym5NdWRHOXdZbUZ5UW1kRGIyeHZjaXhjYmlBZ0lDQWdJRzl3Wlc1QmNHbEtjMjl1VUdGMGFEb2diM0IwYVc5dWN5NXZjR1Z1UVhCcFNuTnZibEJoZEdnc1hHNGdJQ0FnSUNCdmNHVnVRWEJwV1dGdGJGQmhkR2c2SUc5d2RHbHZibk11YjNCbGJrRndhVmxoYld4UVlYUm9MRnh1SUNBZ0lIMHBPMXh1SUNBZ0lITjNZV2RuWlhJdWMyVjBkWEJUZDJGbloyVnlLQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVYRzRnSUNBcUlGSmxaMmx6ZEdWeWN5QnZibVVnYjNJZ2JXOXlaU0JuYkc5aVlXd2dkbUZzYVdSaGRHbHZiaUJ3YVhCbGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhOMWJXMWhjbmxjYmlBZ0lDb2dSVzVoWW14bGN5QnlaWEYxWlhOMElIQmhlV3h2WVdRZ2RtRnNhV1JoZEdsdmJpQmhibVFnZEhKaGJuTm1iM0p0WVhScGIyNGdaMnh2WW1Gc2JIa2dZV055YjNOelhHNGdJQ0FxSUhSb1pTQmxiblJwY21VZ1RtVnpkRXBUSUdGd2NHeHBZMkYwYVc5dUxpQk5kV3gwYVhCc1pTQndhWEJsY3lCallXNGdZbVVnWTJoaGFXNWxaQ0IwYjJkbGRHaGxjbHh1SUNBZ0tpQm1iM0lnYlc5a2RXeGhjaUJwYm5CMWRDQjJZV3hwWkdGMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZXk0dUxsQnBjR1ZVY21GdWMyWnZjbTFiWFgwZ2NHbHdaWE1nTFNCUWFYQmxJR2x1YzNSaGJtTmxjeUIwYnlCeVpXZHBjM1JsY2lCbmJHOWlZV3hzZVM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3VG1WemRFSnZiM1J6ZEhKaGNHVnlmU0JTWlhSMWNtNXpJSFJvWlNCamJHRnpjeUJtYjNJZ1kyaGhhVzVwYm1jdVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2RYTmxSMnh2WW1Gc1VHbHdaWE1vTGk0dWNHbHdaWE02SUZCcGNHVlVjbUZ1YzJadmNtMWJYU2tnZTF4dUlDQWdJR2xtSUNod2FYQmxjeTVzWlc1bmRHZ2dQaUF3S1NCMGFHbHpMbUZ3Y0M1MWMyVkhiRzlpWVd4UWFYQmxjeWd1TGk1d2FYQmxjeWs3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVYRzRnSUNBcUlGSmxaMmx6ZEdWeWN5QnZibVVnYjNJZ2JXOXlaU0JuYkc5aVlXd2daWGhqWlhCMGFXOXVJR1pwYkhSbGNuTXVYRzRnSUNBcVhHNGdJQ0FxSUVCemRXMXRZWEo1WEc0Z0lDQXFJRWxtSUc1dklHWnBiSFJsY25NZ1lYSmxJSEJ5YjNacFpHVmtMQ0JwZENCaGRYUnZiV0YwYVdOaGJHeDVJSEpsWjJsemRHVnljeUJoSUdSbFptRjFiSFJjYmlBZ0lDb2djMlYwSUc5bUlITjBZVzVrWVhKa0lHVjRZMlZ3ZEdsdmJpQm1hV3gwWlhKeklHWnZjaUJqYjIxdGIyNGdaWEp5YjNJZ2RIbHdaWE1nYkdsclpWeHVJQ0FnS2lCZ1NIUjBjRVY0WTJWd2RHbHZibUFzSUdCV1lXeHBaR0YwYVc5dVJYaGpaWEIwYVc5dVlDd2dZRU52Ym1ac2FXTjBSWGhqWlhCMGFXOXVZQ3dnWVc1a0lHOTBhR1Z5Y3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIc3VMaTVGZUdObGNIUnBiMjVHYVd4MFpYSmJYWDBnWm1sc2RHVnljeUF0SUU5d2RHbHZibUZzSUdacGJIUmxjbk1nZEc4Z1lYQndiSGtnWjJ4dlltRnNiSGt1WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nZFhObFIyeHZZbUZzUm1sc2RHVnljeWd1TGk1bWFXeDBaWEp6T2lCaGJubGJYU2tnZTF4dUlDQWdJSFJvYVhNdVlYQndMblZ6WlVkc2IySmhiRVpwYkhSbGNuTW9YRzRnSUNBZ0lDQXVMaTRvWm1sc2RHVnljeTVzWlc1bmRHZ2dQaUF3SUQ4Z1ptbHNkR1Z5Y3lBNklGdHVaWGNnUkdWallXWkZlR05sY0hScGIyNUdhV3gwWlhJb0tWMHBYRzRnSUNBZ0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI1Y2JpQWdJQ29nVW1WbmFYTjBaWEp6SUdkc2IySmhiQ0JwYm5SbGNtTmxjSFJ2Y25NZ1ptOXlJSEpsY1hWbGMzUWdZVzVrSUhKbGMzQnZibk5sSUhSeVlXNXpabTl5YldGMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzVnRiV0Z5ZVZ4dUlDQWdLaUJKYm5SbGNtTmxjSFJ2Y25NZ1lXeHNiM2NnWVdSMllXNWpaV1FnY21WeGRXVnpkQzl5WlhOd2IyNXpaU0J0WVc1cGNIVnNZWFJwYjI0Z2MzVmphQ0JoYzF4dUlDQWdLaUJ6WlhKcFlXeHBlbUYwYVc5dUxDQnNiMmRuYVc1bkxDQnZjaUIwY21GdWMyWnZjbTFoZEdsdmJpNGdUWFZzZEdsd2JHVWdhVzUwWlhKalpYQjBiM0p6WEc0Z0lDQXFJR05oYmlCaVpTQmhaR1JsWkNCbWIzSWdiVzlrZFd4aGNpQmpiMjVtYVdkMWNtRjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5NHVMazVsYzNSSmJuUmxjbU5sY0hSdmNsdGRmU0JwYm5SbGNtTmxjSFJ2Y25NZ0xTQkpiblJsY21ObGNIUnZjaUJwYm5OMFlXNWpaWE1nZEc4Z2NtVm5hWE4wWlhJdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTA1bGMzUkNiMjkwYzNSeVlYQmxjbjBnVW1WMGRYSnVjeUIwYUdVZ1kyeGhjM01nWm05eUlHTm9ZV2x1YVc1bklHTnZibVpwWjNWeVlYUnBiMjR1WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nZFhObFIyeHZZbUZzU1c1MFpYSmpaWEIwYjNKektDNHVMbWx1ZEdWeVkyVndkRzl5Y3pvZ1RtVnpkRWx1ZEdWeVkyVndkRzl5VzEwcElIdGNiaUFnSUNCcFppQW9hVzUwWlhKalpYQjBiM0p6TG14bGJtZDBhQ0ErSURBcFhHNGdJQ0FnSUNCMGFHbHpMbUZ3Y0M1MWMyVkhiRzlpWVd4SmJuUmxjbU5sY0hSdmNuTW9MaTR1YVc1MFpYSmpaWEIwYjNKektUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI1Y2JpQWdJQ29nVTNSaGNuUnpJSFJvWlNCT1pYTjBTbE1nWVhCd2JHbGpZWFJwYjI0Z1lXNWtJR0pwYm1SeklHbDBJSFJ2SUhSb1pTQm5hWFpsYmlCd2IzSjBJR0Z1WkNCb2IzTjBMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzVnRiV0Z5ZVZ4dUlDQWdLaUJNYVhOMFpXNXpJRzl1SUhSb1pTQnpjR1ZqYVdacFpXUWdjRzl5ZENCaGJtUWdiM0IwYVc5dVlXeHNlU0JoSUdodmMzUXVJRTl1WTJVZ2MzUmhjblJsWkN4Y2JpQWdJQ29nYkc5bmN5QjBhR1VnWVhCd2JHbGpZWFJwYjI0Z1ZWSk1JR1p2Y2lCbFlYTjVJR0ZqWTJWemN5NGdWR2hsSUhOMFlYSjBkWEFnY0hKdlkyVnpjeUJ5WlhOdmJIWmxjMXh1SUNBZ0tpQnZibU5sSUhSb1pTQmhjSEJzYVdOaGRHbHZiaUJwY3lCemRXTmpaWE56Wm5Wc2JIa2djblZ1Ym1sdVp5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR3YjNKMFBUTXdNREJkSUMwZ1VHOXlkQ0J1ZFcxaVpYSWdkRzhnYkdsemRHVnVJRzl1TGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMmh2YzNSZElDMGdUM0IwYVc5dVlXd2dhRzl6ZENCdmNpQkpVQ0JoWkdSeVpYTnpJSFJ2SUdKcGJtUWdkRzh1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMnh2WnoxMGNuVmxYU0F0SUZkb1pYUm9aWElnZEc4Z2JHOW5JSFJvWlNCaGNIQnNhV05oZEdsdmJpQlZVa3dnZFhCdmJpQnpkR0Z5ZEhWd0xseHVJQ0FnS2lCQWNtVjBkWEp1SUh0UWNtOXRhWE5sUEhadmFXUStmU0JTWlhOdmJIWmxjeUJ2Ym1ObElIUm9aU0JoY0hCc2FXTmhkR2x2YmlCemRHRnlkSE1nYzNWalkyVnpjMloxYkd4NUxseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHRnplVzVqSUhOMFlYSjBLRnh1SUNBZ0lIQnZjblE2SUc1MWJXSmxjaUE5SUU1MWJXSmxjaWh3Y205alpYTnpMbVZ1ZGk1UVQxSlVLU0I4ZkNBek1EQXdMRnh1SUNBZ0lHaHZjM1E2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkNBOUlIVnVaR1ZtYVc1bFpDeGNiaUFnSUNCc2IyYzZJR0p2YjJ4bFlXNGdQU0IwY25WbFhHNGdJQ2tnZTF4dUlDQWdJSFJvYVhNdVlYQndMbXhwYzNSbGJpaHdiM0owTENCb2IzTjBJR0Z6SUdGdWVTa3VkR2hsYmloaGMzbHVZeUFvS1NBOVBpQjdYRzRnSUNBZ0lDQnBaaUFvYkc5bktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElIVnliQ0E5SUdGM1lXbDBJSFJvYVhNdVlYQndMbWRsZEZWeWJDZ3BPMXh1SUNBZ0lDQWdJQ0IwYUdsekxteHZaMmRsY2k1c2IyY29ZUENmbW9BZ1FYQndiR2xqWVhScGIyNGdhWE1nY25WdWJtbHVaeUJoZERvZ0pIdDFjbXg5WUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJSDFjYm4xY2JpSmRmUT09Il19
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZhY3RvcnkvTmVzdEJvb3RzdHJhcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSw4QkFBcUI7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBa0I7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSwwQkFBaUI7QUE0Q3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBSTFCOzs7Ozs7Ozs7T0FTRztJQUNLLE1BQU0sS0FBSyxNQUFNO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsV0FBVztZQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBcUI7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBcUI7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLElBQUksSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8s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SUFBSSxFQUFFO1lBQ2pELElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJTmVzdEFwcGxpY2F0aW9uLFxuICBMb2dnZXIsXG4gIE5lc3RJbnRlcmNlcHRvcixcbiAgUGlwZVRyYW5zZm9ybSxcbn0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBNb2R1bGVSZWYgfSBmcm9tIFwiQG5lc3Rqcy9jb3JlXCI7XG5pbXBvcnQgeyBEZWNhZkV4Y2VwdGlvbkZpbHRlciB9IGZyb20gXCIuL2V4Y2VwdGlvbnNcIjtcbmltcG9ydCB7IFN3YWdnZXJCdWlsZGVyIH0gZnJvbSBcIi4vb3BlbmFwaVwiO1xuaW1wb3J0IHsgQ29yc09wdGlvbnMgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb24vaW50ZXJmYWNlcy9leHRlcm5hbC9jb3JzLW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBDb3JzRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIERlZmluZXMgYWxsIGN1c3RvbWl6YWJsZSBwYXJhbWV0ZXJzIGZvciBTd2FnZ2VyIHNldHVwLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGlzIGludGVyZmFjZSBhbGxvd3MgZGV2ZWxvcGVycyB0byBjdXN0b21pemUgaG93IFN3YWdnZXIgVUkgaXMgY29uZmlndXJlZFxuICogd2l0aGluIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uIEl0IGluY2x1ZGVzIHBhcmFtZXRlcnMgZm9yIHRpdGxlcywgcGF0aHMsXG4gKiBjb2xvciBzY2hlbWVzLCBhbmQgYXNzZXQgcGF0aHMgdG8gdGFpbG9yIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBleHBlcmllbmNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRpdGxlIGRpc3BsYXllZCBpbiBTd2FnZ2VyIFVJLlxuICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIC0gRGVzY3JpcHRpb24gc2hvd24gYmVsb3cgdGhlIHRpdGxlLlxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gLSBBUEkgdmVyc2lvbiBkaXNwbGF5ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gT3B0aW9uYWwgcGF0aCB3aGVyZSBTd2FnZ2VyIHdpbGwgYmUgYXZhaWxhYmxlLlxuICogQHBhcmFtIHtib29sZWFufSBbcGVyc2lzdEF1dGhvcml6YXRpb25dIC0gV2hldGhlciBhdXRob3JpemF0aW9uIHRva2VucyBwZXJzaXN0IGFjcm9zcyByZWxvYWRzLlxuICogQHBhcmFtIHtzdHJpbmd9IFthc3NldHNQYXRoXSAtIFBhdGggdG8gY3VzdG9tIGFzc2V0cyBmb3IgU3dhZ2dlciBVSS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdG9wYmFyQmdDb2xvcl0gLSBDdXN0b20gYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIFN3YWdnZXIgdG9wIGJhci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdG9wYmFySWNvblBhdGhdIC0gUGF0aCB0byBhIGN1c3RvbSBpY29uIGRpc3BsYXllZCBpbiB0aGUgdG9wIGJhci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmF2aWNvblBhdGhdIC0gUGF0aCB0byBhIGN1c3RvbSBmYXZpY29uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3YWdnZXJTZXR1cE9wdGlvbnMge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHBlcnNpc3RBdXRob3JpemF0aW9uPzogYm9vbGVhbjtcbiAgYXNzZXRzUGF0aD86IHN0cmluZztcbiAgdG9wYmFyQmdDb2xvcj86IHN0cmluZztcbiAgdG9wYmFySWNvblBhdGg/OiBzdHJpbmc7XG4gIGZhdmljb25QYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byBleHBvc2UgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpbiBKU09OIGZvcm1hdC5cbiAgICogRXhhbXBsZTogL2FwaS9vcGVuYXBpLmpzb25cbiAgICovXG4gIG9wZW5BcGlKc29uUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gZXhwb3NlIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gaW4gWUFNTCBmb3JtYXQuXG4gICAqIFJlcXVpcmVzICd5YW1sJyBwYWNrYWdlIGFzIHBlZXIgZGVwZW5kZW5jeS5cbiAgICogRXhhbXBsZTogL2FwaS9vcGVuYXBpLnlhbWxcbiAgICovXG4gIG9wZW5BcGlZYW1sUGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgZmx1ZW50LCBzdGF0aWMgYm9vdHN0cmFwIGNsYXNzIGZvciBpbml0aWFsaXppbmcgYW5kIGNvbmZpZ3VyaW5nIGEgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE5lc3RCb290c3RyYXBlcmAgY2xhc3MgcHJvdmlkZXMgYSBjaGFpbmFibGUgQVBJIGZvciBjb25maWd1cmluZ1xuICogYSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UuIEl0IGluY2x1ZGVzIGJ1aWx0LWluIG1ldGhvZHMgZm9yIGVuYWJsaW5nXG4gKiBDT1JTLCBIZWxtZXQgc2VjdXJpdHksIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiwgZ2xvYmFsIHBpcGVzLCBmaWx0ZXJzLFxuICogaW50ZXJjZXB0b3JzLCBhbmQgc3RhcnRpbmcgdGhlIHNlcnZlci5cbiAqXG4gKiBUaGlzIGNsYXNzIHByb21vdGVzIGNvbnNpc3RlbmN5IGFuZCByZWR1Y2VzIHJlcGV0aXRpdmUgc2V0dXAgY29kZVxuICogYWNyb3NzIG11bHRpcGxlIE5lc3RKUyBwcm9qZWN0cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IE5lc3RGYWN0b3J5IH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuICogaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4vYXBwLm1vZHVsZVwiO1xuICogaW1wb3J0IHsgTXlMb2dnZXIgfSBmcm9tIFwiLi9NeUxvZ2dlclwiO1xuICogaW1wb3J0IHsgTmVzdEJvb3RzdHJhcGVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItbmVzdFwiO1xuICpcbiAqIGFzeW5jIGZ1bmN0aW9uIGJvb3RzdHJhcCgpIHtcbiAqICAgY29uc3QgYXBwID0gYXdhaXQgTmVzdEZhY3RvcnkuY3JlYXRlKEFwcE1vZHVsZSk7XG4gKlxuICogICBhd2FpdCBOZXN0Qm9vdHN0cmFwZXJcbiAqICAgICAuaW5pdGlhbGl6ZShhcHApXG4gKiAgICAgLmVuYWJsZUxvZ2dlcihuZXcgTXlMb2dnZXIoKSlcbiAqICAgICAuZW5hYmxlQ29ycyhbXCJodHRwOi8vbG9jYWxob3N0OjQyMDBcIl0pXG4gKiAgICAgLnVzZUhlbG1ldCgpXG4gKiAgICAgLnNldHVwU3dhZ2dlcih7XG4gKiAgICAgICB0aXRsZTogXCJPcGVuQVBJIGJ5IFRyYWRlTWFya+KEolwiLFxuICogICAgICAgZGVzY3JpcHRpb246IFwiVHJhZGVNYXJr4oSiIEFQSSBkb2N1bWVudGF0aW9uXCIsXG4gKiAgICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gKiAgICAgICBwYXRoOiBcImFwaVwiLFxuICogICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IHRydWUsXG4gKiAgICAgICB0b3BiYXJCZ0NvbG9yOiBcIiMyQzNFNTBcIixcbiAqICAgICAgIHRvcGJhckljb25QYXRoOiBcIi9hc3NldHMvbG9nby5zdmdcIixcbiAqICAgICAgIGZhdmljb25QYXRoOiBcIi9hc3NldHMvZmF2aWNvbi5pY29cIlxuICogICAgIH0pXG4gKiAgICAgLnVzZUdsb2JhbEZpbHRlcnMoKVxuICogICAgIC51c2VHbG9iYWxQaXBlcyguLi4pXG4gKiAgICAgLnVzZUdsb2JhbEludGVyY2VwdG9ycyguLi4pXG4gKiAgICAgLnN0YXJ0KDMwMDApO1xuICogfVxuICpcbiAqIGJvb3RzdHJhcCgpO1xuICogYGBgXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RCb290c3RyYXBlciB7XG4gIHByaXZhdGUgc3RhdGljIGFwcDogSU5lc3RBcHBsaWNhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBsb2dnZXIgaW5zdGFuY2UsIGNyZWF0aW5nIGEgZGVmYXVsdCBvbmUgaWYgbm90IHNldC5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRW5zdXJlcyB0aGF0IGEgdmFsaWQgYExvZ2dlcmAgaW5zdGFuY2UgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgKiBmb3IgbG9nZ2luZyBib290c3RyYXAtcmVsYXRlZCBtZXNzYWdlcy5cbiAgICpcbiAgICogQHJldHVybiB7TG9nZ2VyfSBUaGUgYWN0aXZlIGxvZ2dlciBpbnN0YW5jZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldCBsb2dnZXIoKTogTG9nZ2VyIHtcbiAgICBpZiAoIXRoaXMuX2xvZ2dlcikge1xuICAgICAgLy8gZmFsbGJhY2tcbiAgICAgIHRoaXMuX2xvZ2dlciA9IG5ldyBMb2dnZXIoXCJOZXN0Qm9vdHN0cmFwXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJbml0aWFsaXplcyB0aGUgYm9vdHN0cmFwcGVyIHdpdGggYSBnaXZlbiBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIEJpbmRzIHRoZSBwcm92aWRlZCBOZXN0SlMgYXBwIGluc3RhbmNlIHRvIHRoZSBib290c3RyYXBwZXIsIGVuYWJsaW5nXG4gICAqIGNoYWluZWQgY29uZmlndXJhdGlvbiBtZXRob2RzLlxuICAgKlxuICAgKiBAcGFyYW0ge0lOZXN0QXBwbGljYXRpb259IGFwcCAtIFRoZSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gaW5pdGlhbGl6ZS5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbiBtZXRob2RzLlxuICAgKi9cbiAgc3RhdGljIGluaXRpYWxpemUoYXBwOiBJTmVzdEFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVuYWJsZXMgb3IgcmVwbGFjZXMgdGhlIGdsb2JhbCBsb2dnZXIgZm9yIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIElmIGEgY3VzdG9tIGxvZ2dlciBpcyBwcm92aWRlZCwgaXQgcmVwbGFjZXMgdGhlIGRlZmF1bHQgbG9nZ2VyLiBPdGhlcndpc2UsXG4gICAqIGEgbmV3IGxvZ2dlciBuYW1lZCBgXCJOZXN0Qm9vdHN0cmFwXCJgIGlzIHVzZWQuIFRoaXMgbG9nZ2VyIGlzIGFsc28gcmVnaXN0ZXJlZFxuICAgKiB3aXRoIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7TG9nZ2VyfSBbY3VzdG9tTG9nZ2VyXSAtIE9wdGlvbmFsIGN1c3RvbSBsb2dnZXIgaW5zdGFuY2UuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgc3RhdGljIGVuYWJsZUxvZ2dlcihjdXN0b21Mb2dnZXI/OiBMb2dnZXIpIHtcbiAgICB0aGlzLl9sb2dnZXIgPSBjdXN0b21Mb2dnZXIgfHwgbmV3IExvZ2dlcihcIk5lc3RCb290c3RyYXBcIik7XG4gICAgdGhpcy5hcHAudXNlTG9nZ2VyKHRoaXMuX2xvZ2dlcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVuYWJsZXMgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgKENPUlMpIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIEFsbG93cyBkZWZpbmluZyBlaXRoZXIgYSB3aWxkY2FyZCBvcmlnaW4gKGBcIipcImApIG9yIGEgbGlzdCBvZiBhbGxvd2VkIG9yaWdpbnMuXG4gICAqIEF1dG9tYXRpY2FsbHkgYWNjZXB0cyBsb2NhbCBkZXZlbG9wbWVudCByZXF1ZXN0cyBhbmQgdGhvc2Ugd2l0aG91dCBvcmlnaW4gaGVhZGVycy5cbiAgICogVGhyb3dzIGEgYENvcnNFcnJvcmAgZm9yIHVuYXV0aG9yaXplZCBvcmlnaW5zLlxuICAgKlxuICAgKiBAcGFyYW0geycqJyB8IHN0cmluZ1tdfSBbb3JpZ2lucz1bXV0gLSBMaXN0IG9mIGFsbG93ZWQgb3JpZ2lucyBvciBgXCIqXCJgIHRvIGFsbG93IGFsbC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FsbG93TWV0aG9kcz1bJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnXV0gLSBBbGxvd2VkIEhUVFAgbWV0aG9kcy5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICovXG4gIHN0YXRpYyBlbmFibGVDb3JzKFxuICAgIG9yaWdpbnM6IFwiKlwiIHwgc3RyaW5nW10gPSBbXSxcbiAgICBhbGxvd01ldGhvZHM6IHN0cmluZ1tdID0gW1wiR0VUXCIsIFwiUE9TVFwiLCBcIlBVVFwiLCBcIkRFTEVURVwiXVxuICApIHtcbiAgICBjb25zdCBhbGxvd2VkT3JpZ2lucyA9XG4gICAgICBvcmlnaW5zID09PSBcIipcIiA/IFwiKlwiIDogb3JpZ2lucy5tYXAoKG8pID0+IG8udHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgY29uc3QgY29yc09wdGlvbnM6IENvcnNPcHRpb25zID0ge1xuICAgICAgb3JpZ2luOiAob3JpZ2luLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAvLyBBbGxvdyByZXF1ZXN0IHdpdGhvdXQgb3JpZ2luLi4uXG4gICAgICAgIGlmICghb3JpZ2luKSByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFsbG93ZWRPcmlnaW5zID09PSBcIipcIiB8fFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KGFsbG93ZWRPcmlnaW5zKSAmJlxuICAgICAgICAgICAgYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMob3JpZ2luLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjYWxsYmFjayhuZXcgQ29yc0Vycm9yKGBPcmlnaW4gJHtvcmlnaW59IG5vdCBhbGxvd2VkYCkpO1xuICAgICAgfSxcbiAgICAgIGNyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgbWV0aG9kczogYWxsb3dNZXRob2RzLmpvaW4oXCIsXCIpLFxuICAgIH07XG5cbiAgICB0aGlzLmFwcC5lbmFibGVDb3JzKGNvcnNPcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQXBwbGllcyB0aGUgSGVsbWV0IG1pZGRsZXdhcmUgZm9yIGVuaGFuY2VkIHNlY3VyaXR5LlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBEeW5hbWljYWxseSBsb2FkcyB0aGUgYGhlbG1ldGAgcGFja2FnZSBpZiBhdmFpbGFibGUgYW5kIHJlZ2lzdGVycyBpdFxuICAgKiBhcyBtaWRkbGV3YXJlIHRvIGltcHJvdmUgSFRUUCBoZWFkZXIgc2VjdXJpdHkuIElmIG5vdCBpbnN0YWxsZWQsIGxvZ3MgYSB3YXJuaW5nXG4gICAqIGFuZCBjb250aW51ZXMgZXhlY3V0aW9uIHdpdGhvdXQgdGhyb3dpbmcgZXJyb3JzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gcGFzc2VkIHRvIEhlbG1ldC5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyB1c2VIZWxtZXQob3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgIGNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7IC8vIER5bmFtaWMgaW1wb3J0IHRvIGF2b2lkIGhhcmQgZGVwZW5kZW5jeVxuICAgICAgdGhpcy5hcHAudXNlKGhlbG1ldChvcHRpb25zKSk7XG4gICAgICB0aGlzLmxvZ2dlci5sb2coXCJIZWxtZXQgbWlkZGxld2FyZSBlbmFibGVkIHN1Y2Nlc3NmdWxseS5cIik7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFwiSGVsbWV0IG5vdCBpbnN0YWxsZWQuIFNraXBwaW5nIG1pZGRsZXdhcmUuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDb25maWd1cmVzIGFuZCBpbml0aWFsaXplcyBTd2FnZ2VyIFVJIGZvciBBUEkgZG9jdW1lbnRhdGlvbi5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogVXNlcyB0aGUgYFN3YWdnZXJCdWlsZGVyYCB1dGlsaXR5IHRvIGNvbmZpZ3VyZSBBUEkgZG9jdW1lbnRhdGlvblxuICAgKiB3aXRoIGRldGFpbGVkIGN1c3RvbWl6YXRpb24gZm9yIHRpdGxlLCB2ZXJzaW9uLCBwYXRocywgYW5kIGNvbG9ycy5cbiAgICogU3dhZ2dlciBpcyBhdXRvbWF0aWNhbGx5IGV4cG9zZWQgYXQgdGhlIGNvbmZpZ3VyZWQgcGF0aC5cbiAgICpcbiAgICogQHBhcmFtIHtTd2FnZ2VyU2V0dXBPcHRpb25zfSBvcHRpb25zIC0gU3dhZ2dlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgc2V0dXBTd2FnZ2VyKG9wdGlvbnM6IFN3YWdnZXJTZXR1cE9wdGlvbnMpIHtcbiAgICBjb25zdCBzd2FnZ2VyID0gbmV3IFN3YWdnZXJCdWlsZGVyKHRoaXMuYXBwLCB7XG4gICAgICB0aXRsZTogb3B0aW9ucy50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uLFxuICAgICAgcGF0aDogb3B0aW9ucy5wYXRoIHx8IFwiYXBpXCIsXG4gICAgICBwZXJzaXN0QXV0aG9yaXphdGlvbjogb3B0aW9ucy5wZXJzaXN0QXV0aG9yaXphdGlvbiA/PyB0cnVlLFxuICAgICAgYXNzZXRzUGF0aDogb3B0aW9ucy5hc3NldHNQYXRoLFxuICAgICAgZmF2aWNvbkZpbGVQYXRoOiBvcHRpb25zLmZhdmljb25QYXRoLFxuICAgICAgdG9wYmFySWNvbkZpbGVQYXRoOiBvcHRpb25zLnRvcGJhckljb25QYXRoLFxuICAgICAgdG9wYmFyQmdDb2xvcjogb3B0aW9ucy50b3BiYXJCZ0NvbG9yLFxuICAgICAgb3BlbkFwaUpzb25QYXRoOiBvcHRpb25zLm9wZW5BcGlKc29uUGF0aCxcbiAgICAgIG9wZW5BcGlZYW1sUGF0aDogb3B0aW9ucy5vcGVuQXBpWWFtbFBhdGgsXG4gICAgfSk7XG4gICAgc3dhZ2dlci5zZXR1cFN3YWdnZXIoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCB2YWxpZGF0aW9uIHBpcGVzLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBFbmFibGVzIHJlcXVlc3QgcGF5bG9hZCB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvbiBnbG9iYWxseSBhY3Jvc3NcbiAgICogdGhlIGVudGlyZSBOZXN0SlMgYXBwbGljYXRpb24uIE11bHRpcGxlIHBpcGVzIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyXG4gICAqIGZvciBtb2R1bGFyIGlucHV0IHZhbGlkYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uUGlwZVRyYW5zZm9ybVtdfSBwaXBlcyAtIFBpcGUgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyIGdsb2JhbGx5LlxuICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHN0YXRpYyB1c2VHbG9iYWxQaXBlcyguLi5waXBlczogUGlwZVRyYW5zZm9ybVtdKSB7XG4gICAgaWYgKHBpcGVzLmxlbmd0aCA+IDApIHRoaXMuYXBwLnVzZUdsb2JhbFBpcGVzKC4uLnBpcGVzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCBleGNlcHRpb24gZmlsdGVycy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogSWYgbm8gZmlsdGVycyBhcmUgcHJvdmlkZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIGEgZGVmYXVsdFxuICAgKiBzZXQgb2Ygc3RhbmRhcmQgZXhjZXB0aW9uIGZpbHRlcnMgZm9yIGNvbW1vbiBlcnJvciB0eXBlcyBsaWtlXG4gICAqIGBIdHRwRXhjZXB0aW9uYCwgYFZhbGlkYXRpb25FeGNlcHRpb25gLCBgQ29uZmxpY3RFeGNlcHRpb25gLCBhbmQgb3RoZXJzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBgRGVjYWZFeGNlcHRpb25GaWx0ZXJgIGlzIGNvbnN0cnVjdGVkIHdpdGggdGhlIGFwcGxpY2F0aW9uJ3NcbiAgICogYE1vZHVsZVJlZmAgc28gaXQgY2FuIHJlc29sdmUgdGhlIHJlcXVlc3Qtc2NvcGVkIGBEZWNhZlJlcXVlc3RDb250ZXh0YCAoYW5kXG4gICAqIGl0cyBjbGllbnQtYm91bmQgbG9nZ2VyKSBmb3IgdGhlIHJlcXVlc3QgdGhhdCB0aHJldywgaW5zdGVhZCBvZiBsb2dnaW5nXG4gICAqIHRocm91Z2ggdGhlIGdlbmVyaWMgZ2xvYmFsIGxvZ2dlci5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5FeGNlcHRpb25GaWx0ZXJbXX0gZmlsdGVycyAtIE9wdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgZ2xvYmFsbHkuXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsRmlsdGVycyguLi5maWx0ZXJzOiBhbnlbXSkge1xuICAgIHRoaXMuYXBwLnVzZUdsb2JhbEZpbHRlcnMoXG4gICAgICAuLi4oZmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgID8gZmlsdGVyc1xuICAgICAgICA6IFtuZXcgRGVjYWZFeGNlcHRpb25GaWx0ZXIodGhpcy5hcHAuZ2V0KE1vZHVsZVJlZiwgeyBzdHJpY3Q6IGZhbHNlIH0pKV0pXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIGdsb2JhbCBpbnRlcmNlcHRvcnMgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHRyYW5zZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgYWR2YW5jZWQgcmVxdWVzdC9yZXNwb25zZSBtYW5pcHVsYXRpb24gc3VjaCBhc1xuICAgKiBzZXJpYWxpemF0aW9uLCBsb2dnaW5nLCBvciB0cmFuc2Zvcm1hdGlvbi4gTXVsdGlwbGUgaW50ZXJjZXB0b3JzXG4gICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLk5lc3RJbnRlcmNlcHRvcltdfSBpbnRlcmNlcHRvcnMgLSBJbnRlcmNlcHRvciBpbnN0YW5jZXMgdG8gcmVnaXN0ZXIuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9yczogTmVzdEludGVyY2VwdG9yW10pIHtcbiAgICBpZiAoaW50ZXJjZXB0b3JzLmxlbmd0aCA+IDApXG4gICAgICB0aGlzLmFwcC51c2VHbG9iYWxJbnRlcmNlcHRvcnMoLi4uaW50ZXJjZXB0b3JzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU3RhcnRzIHRoZSBOZXN0SlMgYXBwbGljYXRpb24gYW5kIGJpbmRzIGl0IHRvIHRoZSBnaXZlbiBwb3J0IGFuZCBob3N0LlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBMaXN0ZW5zIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCBhbmQgb3B0aW9uYWxseSBhIGhvc3QuIE9uY2Ugc3RhcnRlZCxcbiAgICogbG9ncyB0aGUgYXBwbGljYXRpb24gVVJMIGZvciBlYXN5IGFjY2Vzcy4gVGhlIHN0YXJ0dXAgcHJvY2VzcyByZXNvbHZlc1xuICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3J0PTMwMDBdIC0gUG9ydCBudW1iZXIgdG8gbGlzdGVuIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xvZz10cnVlXSAtIFdoZXRoZXIgdG8gbG9nIHRoZSBhcHBsaWNhdGlvbiBVUkwgdXBvbiBzdGFydHVwLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBSZXNvbHZlcyBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHMgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHN0YXJ0KFxuICAgIHBvcnQ6IG51bWJlciA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLFxuICAgIGhvc3Q6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBsb2c6IGJvb2xlYW4gPSB0cnVlXG4gICkge1xuICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0IGFzIGFueSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuYXBwLmdldFVybCgpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTmVzdEJvb3RzdHJhcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF5QztBQUN6Qyx1Q0FBeUM7QUFDekMsb0RBQTZEO0FBQzdELGlEQUFvRDtBQUNwRCxnREFBOEM7QUFDOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NHO0FBQ0gsTUFBYSxlQUFlO0lBQ3hCOzs7Ozs7Ozs7T0FTRztJQUNILE1BQU0sS0FBSyxNQUFNO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixXQUFXO1lBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGVBQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksZUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0Q7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUM7UUFD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R0FBRyxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQXZORCwwQ0F1TkM7QUFDRCwweHBCQUEweHBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2VyLCB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgTW9kdWxlUmVmIH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuaW1wb3J0IHsgRGVjYWZFeGNlcHRpb25GaWx0ZXIgfSBmcm9tIFwiLi9leGNlcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQnVpbGRlciB9IGZyb20gXCIuL29wZW5hcGkvaW5kZXguanNcIjtcbmltcG9ydCB7IENvcnNFcnJvciB9IGZyb20gXCIuL2Vycm9ycy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgZmx1ZW50LCBzdGF0aWMgYm9vdHN0cmFwIGNsYXNzIGZvciBpbml0aWFsaXppbmcgYW5kIGNvbmZpZ3VyaW5nIGEgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE5lc3RCb290c3RyYXBlcmAgY2xhc3MgcHJvdmlkZXMgYSBjaGFpbmFibGUgQVBJIGZvciBjb25maWd1cmluZ1xuICogYSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UuIEl0IGluY2x1ZGVzIGJ1aWx0LWluIG1ldGhvZHMgZm9yIGVuYWJsaW5nXG4gKiBDT1JTLCBIZWxtZXQgc2VjdXJpdHksIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiwgZ2xvYmFsIHBpcGVzLCBmaWx0ZXJzLFxuICogaW50ZXJjZXB0b3JzLCBhbmQgc3RhcnRpbmcgdGhlIHNlcnZlci5cbiAqXG4gKiBUaGlzIGNsYXNzIHByb21vdGVzIGNvbnNpc3RlbmN5IGFuZCByZWR1Y2VzIHJlcGV0aXRpdmUgc2V0dXAgY29kZVxuICogYWNyb3NzIG11bHRpcGxlIE5lc3RKUyBwcm9qZWN0cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IE5lc3RGYWN0b3J5IH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuICogaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4vYXBwLm1vZHVsZVwiO1xuICogaW1wb3J0IHsgTXlMb2dnZXIgfSBmcm9tIFwiLi9NeUxvZ2dlclwiO1xuICogaW1wb3J0IHsgTmVzdEJvb3RzdHJhcGVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItbmVzdFwiO1xuICpcbiAqIGFzeW5jIGZ1bmN0aW9uIGJvb3RzdHJhcCgpIHtcbiAqICAgY29uc3QgYXBwID0gYXdhaXQgTmVzdEZhY3RvcnkuY3JlYXRlKEFwcE1vZHVsZSk7XG4gKlxuICogICBhd2FpdCBOZXN0Qm9vdHN0cmFwZXJcbiAqICAgICAuaW5pdGlhbGl6ZShhcHApXG4gKiAgICAgLmVuYWJsZUxvZ2dlcihuZXcgTXlMb2dnZXIoKSlcbiAqICAgICAuZW5hYmxlQ29ycyhbXCJodHRwOi8vbG9jYWxob3N0OjQyMDBcIl0pXG4gKiAgICAgLnVzZUhlbG1ldCgpXG4gKiAgICAgLnNldHVwU3dhZ2dlcih7XG4gKiAgICAgICB0aXRsZTogXCJPcGVuQVBJIGJ5IFRyYWRlTWFya+KEolwiLFxuICogICAgICAgZGVzY3JpcHRpb246IFwiVHJhZGVNYXJr4oSiIEFQSSBkb2N1bWVudGF0aW9uXCIsXG4gKiAgICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gKiAgICAgICBwYXRoOiBcImFwaVwiLFxuICogICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IHRydWUsXG4gKiAgICAgICB0b3BiYXJCZ0NvbG9yOiBcIiMyQzNFNTBcIixcbiAqICAgICAgIHRvcGJhckljb25QYXRoOiBcIi9hc3NldHMvbG9nby5zdmdcIixcbiAqICAgICAgIGZhdmljb25QYXRoOiBcIi9hc3NldHMvZmF2aWNvbi5pY29cIlxuICogICAgIH0pXG4gKiAgICAgLnVzZUdsb2JhbEZpbHRlcnMoKVxuICogICAgIC51c2VHbG9iYWxQaXBlcyguLi4pXG4gKiAgICAgLnVzZUdsb2JhbEludGVyY2VwdG9ycyguLi4pXG4gKiAgICAgLnN0YXJ0KDMwMDApO1xuICogfVxuICpcbiAqIGJvb3RzdHJhcCgpO1xuICogYGBgXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RCb290c3RyYXBlciB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBsb2dnZXIgaW5zdGFuY2UsIGNyZWF0aW5nIGEgZGVmYXVsdCBvbmUgaWYgbm90IHNldC5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogRW5zdXJlcyB0aGF0IGEgdmFsaWQgYExvZ2dlcmAgaW5zdGFuY2UgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgICAqIGZvciBsb2dnaW5nIGJvb3RzdHJhcC1yZWxhdGVkIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TG9nZ2VyfSBUaGUgYWN0aXZlIGxvZ2dlciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGxvZ2dlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9sb2dnZXIpIHtcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIgPSBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJbml0aWFsaXplcyB0aGUgYm9vdHN0cmFwcGVyIHdpdGggYSBnaXZlbiBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEJpbmRzIHRoZSBwcm92aWRlZCBOZXN0SlMgYXBwIGluc3RhbmNlIHRvIHRoZSBib290c3RyYXBwZXIsIGVuYWJsaW5nXG4gICAgICogY2hhaW5lZCBjb25maWd1cmF0aW9uIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0lOZXN0QXBwbGljYXRpb259IGFwcCAtIFRoZSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gaW5pdGlhbGl6ZS5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uIG1ldGhvZHMuXG4gICAgICovXG4gICAgc3RhdGljIGluaXRpYWxpemUoYXBwKSB7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRW5hYmxlcyBvciByZXBsYWNlcyB0aGUgZ2xvYmFsIGxvZ2dlciBmb3IgdGhlIE5lc3RKUyBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogSWYgYSBjdXN0b20gbG9nZ2VyIGlzIHByb3ZpZGVkLCBpdCByZXBsYWNlcyB0aGUgZGVmYXVsdCBsb2dnZXIuIE90aGVyd2lzZSxcbiAgICAgKiBhIG5ldyBsb2dnZXIgbmFtZWQgYFwiTmVzdEJvb3RzdHJhcFwiYCBpcyB1c2VkLiBUaGlzIGxvZ2dlciBpcyBhbHNvIHJlZ2lzdGVyZWRcbiAgICAgKiB3aXRoIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvZ2dlcn0gW2N1c3RvbUxvZ2dlcl0gLSBPcHRpb25hbCBjdXN0b20gbG9nZ2VyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHN0YXRpYyBlbmFibGVMb2dnZXIoY3VzdG9tTG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlciA9IGN1c3RvbUxvZ2dlciB8fCBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICAgICAgdGhpcy5hcHAudXNlTG9nZ2VyKHRoaXMuX2xvZ2dlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBFbmFibGVzIENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIChDT1JTKSBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBBbGxvd3MgZGVmaW5pbmcgZWl0aGVyIGEgd2lsZGNhcmQgb3JpZ2luIChgXCIqXCJgKSBvciBhIGxpc3Qgb2YgYWxsb3dlZCBvcmlnaW5zLlxuICAgICAqIEF1dG9tYXRpY2FsbHkgYWNjZXB0cyBsb2NhbCBkZXZlbG9wbWVudCByZXF1ZXN0cyBhbmQgdGhvc2Ugd2l0aG91dCBvcmlnaW4gaGVhZGVycy5cbiAgICAgKiBUaHJvd3MgYSBgQ29yc0Vycm9yYCBmb3IgdW5hdXRob3JpemVkIG9yaWdpbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geycqJyB8IHN0cmluZ1tdfSBbb3JpZ2lucz1bXV0gLSBMaXN0IG9mIGFsbG93ZWQgb3JpZ2lucyBvciBgXCIqXCJgIHRvIGFsbG93IGFsbC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYWxsb3dNZXRob2RzPVsnR0VUJywgJ1BPU1QnLCAnUFVUJywgJ0RFTEVURSddXSAtIEFsbG93ZWQgSFRUUCBtZXRob2RzLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKi9cbiAgICBzdGF0aWMgZW5hYmxlQ29ycyhvcmlnaW5zID0gW10sIGFsbG93TWV0aG9kcyA9IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJERUxFVEVcIl0pIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZE9yaWdpbnMgPSBvcmlnaW5zID09PSBcIipcIiA/IFwiKlwiIDogb3JpZ2lucy5tYXAoKG8pID0+IG8udHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBjb25zdCBjb3JzT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG9yaWdpbjogKG9yaWdpbiwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAvLyBBbGxvdyByZXF1ZXN0IHdpdGhvdXQgb3JpZ2luLi4uXG4gICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZE9yaWdpbnMgPT09IFwiKlwiIHx8XG4gICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGFsbG93ZWRPcmlnaW5zKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMob3JpZ2luLnRvTG93ZXJDYXNlKCkpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBDb3JzRXJyb3IoYE9yaWdpbiAke29yaWdpbn0gbm90IGFsbG93ZWRgKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICBtZXRob2RzOiBhbGxvd01ldGhvZHMuam9pbihcIixcIiksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXBwLmVuYWJsZUNvcnMoY29yc09wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQXBwbGllcyB0aGUgSGVsbWV0IG1pZGRsZXdhcmUgZm9yIGVuaGFuY2VkIHNlY3VyaXR5LlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBEeW5hbWljYWxseSBsb2FkcyB0aGUgYGhlbG1ldGAgcGFja2FnZSBpZiBhdmFpbGFibGUgYW5kIHJlZ2lzdGVycyBpdFxuICAgICAqIGFzIG1pZGRsZXdhcmUgdG8gaW1wcm92ZSBIVFRQIGhlYWRlciBzZWN1cml0eS4gSWYgbm90IGluc3RhbGxlZCwgbG9ncyBhIHdhcm5pbmdcbiAgICAgKiBhbmQgY29udGludWVzIGV4ZWN1dGlvbiB3aXRob3V0IHRocm93aW5nIGVycm9ycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW29wdGlvbnNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBwYXNzZWQgdG8gSGVsbWV0LlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIHVzZUhlbG1ldChvcHRpb25zKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgICAgY29uc3QgaGVsbWV0ID0gcmVxdWlyZShcImhlbG1ldFwiKTsgLy8gRHluYW1pYyBpbXBvcnQgdG8gYXZvaWQgaGFyZCBkZXBlbmRlbmN5XG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoaGVsbWV0KG9wdGlvbnMpKTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIkhlbG1ldCBtaWRkbGV3YXJlIGVuYWJsZWQgc3VjY2Vzc2Z1bGx5LlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFwiSGVsbWV0IG5vdCBpbnN0YWxsZWQuIFNraXBwaW5nIG1pZGRsZXdhcmUuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBDb25maWd1cmVzIGFuZCBpbml0aWFsaXplcyBTd2FnZ2VyIFVJIGZvciBBUEkgZG9jdW1lbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogVXNlcyB0aGUgYFN3YWdnZXJCdWlsZGVyYCB1dGlsaXR5IHRvIGNvbmZpZ3VyZSBBUEkgZG9jdW1lbnRhdGlvblxuICAgICAqIHdpdGggZGV0YWlsZWQgY3VzdG9taXphdGlvbiBmb3IgdGl0bGUsIHZlcnNpb24sIHBhdGhzLCBhbmQgY29sb3JzLlxuICAgICAqIFN3YWdnZXIgaXMgYXV0b21hdGljYWxseSBleHBvc2VkIGF0IHRoZSBjb25maWd1cmVkIHBhdGguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N3YWdnZXJTZXR1cE9wdGlvbnN9IG9wdGlvbnMgLSBTd2FnZ2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHN0YXRpYyBzZXR1cFN3YWdnZXIob3B0aW9ucykge1xuICAgICAgICBjb25zdCBzd2FnZ2VyID0gbmV3IFN3YWdnZXJCdWlsZGVyKHRoaXMuYXBwLCB7XG4gICAgICAgICAgICB0aXRsZTogb3B0aW9ucy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uLFxuICAgICAgICAgICAgcGF0aDogb3B0aW9ucy5wYXRoIHx8IFwiYXBpXCIsXG4gICAgICAgICAgICBwZXJzaXN0QXV0aG9yaXphdGlvbjogb3B0aW9ucy5wZXJzaXN0QXV0aG9yaXphdGlvbiA/PyB0cnVlLFxuICAgICAgICAgICAgYXNzZXRzUGF0aDogb3B0aW9ucy5hc3NldHNQYXRoLFxuICAgICAgICAgICAgZmF2aWNvbkZpbGVQYXRoOiBvcHRpb25zLmZhdmljb25QYXRoLFxuICAgICAgICAgICAgdG9wYmFySWNvbkZpbGVQYXRoOiBvcHRpb25zLnRvcGJhckljb25QYXRoLFxuICAgICAgICAgICAgdG9wYmFyQmdDb2xvcjogb3B0aW9ucy50b3BiYXJCZ0NvbG9yLFxuICAgICAgICAgICAgb3BlbkFwaUpzb25QYXRoOiBvcHRpb25zLm9wZW5BcGlKc29uUGF0aCxcbiAgICAgICAgICAgIG9wZW5BcGlZYW1sUGF0aDogb3B0aW9ucy5vcGVuQXBpWWFtbFBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBzd2FnZ2VyLnNldHVwU3dhZ2dlcigpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCB2YWxpZGF0aW9uIHBpcGVzLlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBFbmFibGVzIHJlcXVlc3QgcGF5bG9hZCB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvbiBnbG9iYWxseSBhY3Jvc3NcbiAgICAgKiB0aGUgZW50aXJlIE5lc3RKUyBhcHBsaWNhdGlvbi4gTXVsdGlwbGUgcGlwZXMgY2FuIGJlIGNoYWluZWQgdG9nZXRoZXJcbiAgICAgKiBmb3IgbW9kdWxhciBpbnB1dCB2YWxpZGF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5QaXBlVHJhbnNmb3JtW119IHBpcGVzIC0gUGlwZSBpbnN0YW5jZXMgdG8gcmVnaXN0ZXIgZ2xvYmFsbHkuXG4gICAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcuXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbFBpcGVzKC4uLnBpcGVzKSB7XG4gICAgICAgIGlmIChwaXBlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhpcy5hcHAudXNlR2xvYmFsUGlwZXMoLi4ucGlwZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCBleGNlcHRpb24gZmlsdGVycy5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogSWYgbm8gZmlsdGVycyBhcmUgcHJvdmlkZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIGEgZGVmYXVsdFxuICAgICAqIHNldCBvZiBzdGFuZGFyZCBleGNlcHRpb24gZmlsdGVycyBmb3IgY29tbW9uIGVycm9yIHR5cGVzIGxpa2VcbiAgICAgKiBgSHR0cEV4Y2VwdGlvbmAsIGBWYWxpZGF0aW9uRXhjZXB0aW9uYCwgYENvbmZsaWN0RXhjZXB0aW9uYCwgYW5kIG90aGVycy5cbiAgICAgKlxuICAgICAqIFRoZSBkZWZhdWx0IGBEZWNhZkV4Y2VwdGlvbkZpbHRlcmAgaXMgY29uc3RydWN0ZWQgd2l0aCB0aGUgYXBwbGljYXRpb24nc1xuICAgICAqIGBNb2R1bGVSZWZgIHNvIGl0IGNhbiByZXNvbHZlIHRoZSByZXF1ZXN0LXNjb3BlZCBgRGVjYWZSZXF1ZXN0Q29udGV4dGAgKGFuZFxuICAgICAqIGl0cyBjbGllbnQtYm91bmQgbG9nZ2VyKSBmb3IgdGhlIHJlcXVlc3QgdGhhdCB0aHJldywgaW5zdGVhZCBvZiBsb2dnaW5nXG4gICAgICogdGhyb3VnaCB0aGUgZ2VuZXJpYyBnbG9iYWwgbG9nZ2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5FeGNlcHRpb25GaWx0ZXJbXX0gZmlsdGVycyAtIE9wdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgZ2xvYmFsbHkuXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbEZpbHRlcnMoLi4uZmlsdGVycykge1xuICAgICAgICB0aGlzLmFwcC51c2VHbG9iYWxGaWx0ZXJzKC4uLihmaWx0ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gZmlsdGVyc1xuICAgICAgICAgICAgOiBbbmV3IERlY2FmRXhjZXB0aW9uRmlsdGVyKHRoaXMuYXBwLmdldChNb2R1bGVSZWYsIHsgc3RyaWN0OiBmYWxzZSB9KSldKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZWdpc3RlcnMgZ2xvYmFsIGludGVyY2VwdG9ycyBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgdHJhbnNmb3JtYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEludGVyY2VwdG9ycyBhbGxvdyBhZHZhbmNlZCByZXF1ZXN0L3Jlc3BvbnNlIG1hbmlwdWxhdGlvbiBzdWNoIGFzXG4gICAgICogc2VyaWFsaXphdGlvbiwgbG9nZ2luZywgb3IgdHJhbnNmb3JtYXRpb24uIE11bHRpcGxlIGludGVyY2VwdG9yc1xuICAgICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5OZXN0SW50ZXJjZXB0b3JbXX0gaW50ZXJjZXB0b3JzIC0gSW50ZXJjZXB0b3IgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbEludGVyY2VwdG9ycyguLi5pbnRlcmNlcHRvcnMpIHtcbiAgICAgICAgaWYgKGludGVyY2VwdG9ycy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhpcy5hcHAudXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9ycyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTdGFydHMgdGhlIE5lc3RKUyBhcHBsaWNhdGlvbiBhbmQgYmluZHMgaXQgdG8gdGhlIGdpdmVuIHBvcnQgYW5kIGhvc3QuXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIExpc3RlbnMgb24gdGhlIHNwZWNpZmllZCBwb3J0IGFuZCBvcHRpb25hbGx5IGEgaG9zdC4gT25jZSBzdGFydGVkLFxuICAgICAqIGxvZ3MgdGhlIGFwcGxpY2F0aW9uIFVSTCBmb3IgZWFzeSBhY2Nlc3MuIFRoZSBzdGFydHVwIHByb2Nlc3MgcmVzb2x2ZXNcbiAgICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9ydD0zMDAwXSAtIFBvcnQgbnVtYmVyIHRvIGxpc3RlbiBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbbG9nPXRydWVdIC0gV2hldGhlciB0byBsb2cgdGhlIGFwcGxpY2F0aW9uIFVSTCB1cG9uIHN0YXJ0dXAuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgb25jZSB0aGUgYXBwbGljYXRpb24gc3RhcnRzIHN1Y2Nlc3NmdWxseS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgc3RhcnQocG9ydCA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLCBob3N0ID0gdW5kZWZpbmVkLCBsb2cgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0KS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLmFwcC5nZXRVcmwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVRtVnpkRUp2YjNSemRISmhjR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZjM0pqTDJaaFkzUnZjbmt2VG1WemRFSnZiM1J6ZEhKaGNHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGRlRDeE5RVUZOTEVkQlIxQXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU40UWl4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzWTBGQll5eERRVUZETzBGQlEzcERMRTlCUVU4c1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN3NFFrRkJjVUk3UVVGRGNFUXNUMEZCVHl4RlFVRkZMR05CUVdNc1JVRkJSU3d5UWtGQmEwSTdRVUZGTTBNc1QwRkJUeXhGUVVGRkxGTkJRVk1zUlVGQlJTd3dRa0ZCYVVJN1FVRTBRM0pET3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0SFFTdERSenRCUVVOSUxFMUJRVTBzVDBGQlR5eGxRVUZsTzBsQlNURkNPenM3T3pzN096czdUMEZUUnp0SlFVTkxMRTFCUVUwc1MwRkJTeXhOUVVGTk8xRkJRM1pDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03V1VGRGJFSXNWMEZCVnp0WlFVTllMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkROME1zUTBGQlF6dFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRKUVVOMFFpeERRVUZETzBsQlJVUTdPenM3T3pzN096czdUMEZWUnp0SlFVTklMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQmNVSTdVVUZEY2tNc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEWml4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdUMEZYUnp0SlFVTklMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zV1VGQmNVSTdVVUZEZGtNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFpRVUZaTEVsQlFVa3NTVUZCU1N4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03VVVGRE0wUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJwRExFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPenM3TzA5QllVYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVObUxGVkJRVEJDTEVWQlFVVXNSVUZETlVJc1pVRkJlVUlzUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJSU3hSUVVGUkxFTkJRVU03VVVGRmVrUXNUVUZCVFN4alFVRmpMRWRCUTJ4Q0xFOUJRVThzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRmNrVXNUVUZCVFN4WFFVRlhMRWRCUVdkQ08xbEJReTlDTEUxQlFVMHNSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJUdG5Ra0ZETTBJc2EwTkJRV3RETzJkQ1FVTnNReXhKUVVGSkxFTkJRVU1zVFVGQlRUdHZRa0ZCUlN4UFFVRlBMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUlhwRExFbEJRMFVzWTBGQll5eExRVUZMTEVkQlFVYzdiMEpCUTNSQ0xFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4alFVRmpMRU5CUVVNN2QwSkJRelZDTEdOQlFXTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZEYUVRc1EwRkJRenR2UWtGRFJDeFBRVUZQTEZGQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlF6bENMRU5CUVVNN1owSkJSVVFzVVVGQlVTeERRVUZETEVsQlFVa3NVMEZCVXl4RFFVRkRMRlZCUVZVc1RVRkJUU3hqUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkVMRU5CUVVNN1dVRkRSQ3hYUVVGWExFVkJRVVVzU1VGQlNUdFpRVU5xUWl4UFFVRlBMRVZCUVVVc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdVMEZEYUVNc1EwRkJRenRSUVVWR0xFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMnBETEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRU96czdPenM3T3pzN096dFBRVmRITzBsQlEwZ3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVFMlFqdFJRVU0xUXl4SlFVRkpMRU5CUVVNN1dVRkRTQ3hwUlVGQmFVVTdXVUZEYWtVc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc01FTkJRVEJETzFsQlF6VkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExIbERRVUY1UXl4RFFVRkRMRU5CUVVNN1VVRkROMFFzUTBGQlF6dFJRVUZETEUxQlFVMHNRMEZCUXp0WlFVTlFMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETERSRFFVRTBReXhEUVVGRExFTkJRVU03VVVGRGFrVXNRMEZCUXp0UlFVVkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFT3pzN096czdPenM3T3p0UFFWZEhPMGxCUTBnc1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUUwUWp0UlFVTTVReXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRk8xbEJRek5ETEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVNc1MwRkJTenRaUVVOd1FpeFhRVUZYTEVWQlFVVXNUMEZCVHl4RFFVRkRMRmRCUVZjN1dVRkRhRU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4UFFVRlBPMWxCUTNoQ0xFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFVTXNTVUZCU1N4SlFVRkpMRXRCUVVzN1dVRkRNMElzYjBKQlFXOUNMRVZCUVVVc1QwRkJUeXhEUVVGRExHOUNRVUZ2UWl4SlFVRkpMRWxCUVVrN1dVRkRNVVFzVlVGQlZTeEZRVUZGTEU5QlFVOHNRMEZCUXl4VlFVRlZPMWxCUXpsQ0xHVkJRV1VzUlVGQlJTeFBRVUZQTEVOQlFVTXNWMEZCVnp0WlFVTndReXhyUWtGQmEwSXNSVUZCUlN4UFFVRlBMRU5CUVVNc1kwRkJZenRaUVVNeFF5eGhRVUZoTEVWQlFVVXNUMEZCVHl4RFFVRkRMR0ZCUVdFN1dVRkRjRU1zWlVGQlpTeEZRVUZGTEU5QlFVOHNRMEZCUXl4bFFVRmxPMWxCUTNoRExHVkJRV1VzUlVGQlJTeFBRVUZQTEVOQlFVTXNaVUZCWlR0VFFVTjZReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1VVRkRka0lzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRN096czdPenM3T3pzN08wOUJWMGM3U1VGRFNDeE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWRCUVVjc1MwRkJjMEk3VVVGRE4wTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU03V1VGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzaEVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFT3pzN096czdPenM3T3pzN096czdUMEZsUnp0SlFVTklMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRkhMRTlCUVdNN1VVRkRka01zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUTBGRGRrSXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF6dFpRVU53UWl4RFFVRkRMRU5CUVVNc1QwRkJUenRaUVVOVUxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFVkJRVVVzVFVGQlRTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRelZGTEVOQlFVTTdVVUZEUml4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdUMEZYUnp0SlFVTklMRTFCUVUwc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SFFVRkhMRmxCUVN0Q08xRkJRemRFTEVsQlFVa3NXVUZCV1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8xbEJRM3BDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVOc1JDeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPenM3T3p0UFFXRkhPMGxCUTBnc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlEyaENMRTlCUVdVc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hGUVVNdlF5eFBRVUV5UWl4VFFVRlRMRVZCUTNCRExFMUJRV1VzU1VGQlNUdFJRVVZ1UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCVnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEycEVMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlExSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMmRDUVVOd1F5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhwUTBGQmFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVNeFJDeERRVUZETzFGQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRUQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTF4dUlDQkpUbVZ6ZEVGd2NHeHBZMkYwYVc5dUxGeHVJQ0JNYjJkblpYSXNYRzRnSUU1bGMzUkpiblJsY21ObGNIUnZjaXhjYmlBZ1VHbHdaVlJ5WVc1elptOXliU3hjYm4wZ1puSnZiU0JjSWtCdVpYTjBhbk12WTI5dGJXOXVYQ0k3WEc1cGJYQnZjblFnZXlCTmIyUjFiR1ZTWldZZ2ZTQm1jbTl0SUZ3aVFHNWxjM1JxY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZXlCRVpXTmhaa1Y0WTJWd2RHbHZia1pwYkhSbGNpQjlJR1p5YjIwZ1hDSXVMMlY0WTJWd2RHbHZibk5jSWp0Y2JtbHRjRzl5ZENCN0lGTjNZV2RuWlhKQ2RXbHNaR1Z5SUgwZ1puSnZiU0JjSWk0dmIzQmxibUZ3YVZ3aU8xeHVhVzF3YjNKMElIc2dRMjl5YzA5d2RHbHZibk1nZlNCbWNtOXRJRndpUUc1bGMzUnFjeTlqYjIxdGIyNHZhVzUwWlhKbVlXTmxjeTlsZUhSbGNtNWhiQzlqYjNKekxXOXdkR2x2Ym5NdWFXNTBaWEptWVdObFhDSTdYRzVwYlhCdmNuUWdleUJEYjNKelJYSnliM0lnZlNCbWNtOXRJRndpTGk5bGNuSnZjbk5jSWp0Y2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBcUlFUmxabWx1WlhNZ1lXeHNJR04xYzNSdmJXbDZZV0pzWlNCd1lYSmhiV1YwWlhKeklHWnZjaUJUZDJGbloyVnlJSE5sZEhWd0xseHVJQ3BjYmlBcUlFQnpkVzF0WVhKNVhHNGdLaUJVYUdseklHbHVkR1Z5Wm1GalpTQmhiR3h2ZDNNZ1pHVjJaV3h2Y0dWeWN5QjBieUJqZFhOMGIyMXBlbVVnYUc5M0lGTjNZV2RuWlhJZ1ZVa2dhWE1nWTI5dVptbG5kWEpsWkZ4dUlDb2dkMmwwYUdsdUlIUm9aU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjR1SUVsMElHbHVZMngxWkdWeklIQmhjbUZ0WlhSbGNuTWdabTl5SUhScGRHeGxjeXdnY0dGMGFITXNYRzRnS2lCamIyeHZjaUJ6WTJobGJXVnpMQ0JoYm1RZ1lYTnpaWFFnY0dGMGFITWdkRzhnZEdGcGJHOXlJSFJvWlNCQlVFa2daRzlqZFcxbGJuUmhkR2x2YmlCbGVIQmxjbWxsYm1ObExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMGFYUnNaU0F0SUZScGRHeGxJR1JwYzNCc1lYbGxaQ0JwYmlCVGQyRm5aMlZ5SUZWSkxseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR1JsYzJOeWFYQjBhVzl1SUMwZ1JHVnpZM0pwY0hScGIyNGdjMmh2ZDI0Z1ltVnNiM2NnZEdobElIUnBkR3hsTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIWmxjbk5wYjI0Z0xTQkJVRWtnZG1WeWMybHZiaUJrYVhOd2JHRjVaV1FnYVc0Z2RHaGxJR1J2WTNWdFpXNTBZWFJwYjI0dVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXM0JoZEdoZElDMGdUM0IwYVc5dVlXd2djR0YwYUNCM2FHVnlaU0JUZDJGbloyVnlJSGRwYkd3Z1ltVWdZWFpoYVd4aFlteGxMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNHVnljMmx6ZEVGMWRHaHZjbWw2WVhScGIyNWRJQzBnVjJobGRHaGxjaUJoZFhSb2IzSnBlbUYwYVc5dUlIUnZhMlZ1Y3lCd1pYSnphWE4wSUdGamNtOXpjeUJ5Wld4dllXUnpMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0aGMzTmxkSE5RWVhSb1hTQXRJRkJoZEdnZ2RHOGdZM1Z6ZEc5dElHRnpjMlYwY3lCbWIzSWdVM2RoWjJkbGNpQlZTUzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmRHOXdZbUZ5UW1kRGIyeHZjbDBnTFNCRGRYTjBiMjBnWW1GamEyZHliM1Z1WkNCamIyeHZjaUJtYjNJZ2RHaGxJRk4zWVdkblpYSWdkRzl3SUdKaGNpNWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JiZEc5d1ltRnlTV052YmxCaGRHaGRJQzBnVUdGMGFDQjBieUJoSUdOMWMzUnZiU0JwWTI5dUlHUnBjM0JzWVhsbFpDQnBiaUIwYUdVZ2RHOXdJR0poY2k1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJabUYyYVdOdmJsQmhkR2hkSUMwZ1VHRjBhQ0IwYnlCaElHTjFjM1J2YlNCbVlYWnBZMjl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRk4zWVdkblpYSlRaWFIxY0U5d2RHbHZibk1nZTF4dUlDQjBhWFJzWlRvZ2MzUnlhVzVuTzF4dUlDQmtaWE5qY21sd2RHbHZiam9nYzNSeWFXNW5PMXh1SUNCMlpYSnphVzl1T2lCemRISnBibWM3WEc0Z0lIQmhkR2cvT2lCemRISnBibWM3WEc0Z0lIQmxjbk5wYzNSQmRYUm9iM0pwZW1GMGFXOXVQem9nWW05dmJHVmhianRjYmlBZ1lYTnpaWFJ6VUdGMGFEODZJSE4wY21sdVp6dGNiaUFnZEc5d1ltRnlRbWREYjJ4dmNqODZJSE4wY21sdVp6dGNiaUFnZEc5d1ltRnlTV052YmxCaGRHZy9PaUJ6ZEhKcGJtYzdYRzRnSUdaaGRtbGpiMjVRWVhSb1B6b2djM1J5YVc1bk8xeHVJQ0F2S2lwY2JpQWdJQ29nVUdGMGFDQjBieUJsZUhCdmMyVWdkR2hsSUU5d1pXNUJVRWtnYzNCbFkybG1hV05oZEdsdmJpQnBiaUJLVTA5T0lHWnZjbTFoZEM1Y2JpQWdJQ29nUlhoaGJYQnNaVG9nTDJGd2FTOXZjR1Z1WVhCcExtcHpiMjVjYmlBZ0lDb3ZYRzRnSUc5d1pXNUJjR2xLYzI5dVVHRjBhRDg2SUhOMGNtbHVaenRjYmlBZ0x5b3FYRzRnSUNBcUlGQmhkR2dnZEc4Z1pYaHdiM05sSUhSb1pTQlBjR1Z1UVZCSklITndaV05wWm1sallYUnBiMjRnYVc0Z1dVRk5UQ0JtYjNKdFlYUXVYRzRnSUNBcUlGSmxjWFZwY21WeklDZDVZVzFzSnlCd1lXTnJZV2RsSUdGeklIQmxaWElnWkdWd1pXNWtaVzVqZVM1Y2JpQWdJQ29nUlhoaGJYQnNaVG9nTDJGd2FTOXZjR1Z1WVhCcExubGhiV3hjYmlBZ0lDb3ZYRzRnSUc5d1pXNUJjR2xaWVcxc1VHRjBhRDg2SUhOMGNtbHVaenRjYm4xY2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBcUlFRWdabXgxWlc1MExDQnpkR0YwYVdNZ1ltOXZkSE4wY21Gd0lHTnNZWE56SUdadmNpQnBibWwwYVdGc2FYcHBibWNnWVc1a0lHTnZibVpwWjNWeWFXNW5JR0VnVG1WemRFcFRJR0Z3Y0d4cFkyRjBhVzl1TGx4dUlDcGNiaUFxSUVCemRXMXRZWEo1WEc0Z0tpQlVhR1VnWUU1bGMzUkNiMjkwYzNSeVlYQmxjbUFnWTJ4aGMzTWdjSEp2ZG1sa1pYTWdZU0JqYUdGcGJtRmliR1VnUVZCSklHWnZjaUJqYjI1bWFXZDFjbWx1WjF4dUlDb2dZU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjRnYVc1emRHRnVZMlV1SUVsMElHbHVZMngxWkdWeklHSjFhV3gwTFdsdUlHMWxkR2h2WkhNZ1ptOXlJR1Z1WVdKc2FXNW5YRzRnS2lCRFQxSlRMQ0JJWld4dFpYUWdjMlZqZFhKcGRIa3NJRk4zWVdkblpYSWdaRzlqZFcxbGJuUmhkR2x2Yml3Z1oyeHZZbUZzSUhCcGNHVnpMQ0JtYVd4MFpYSnpMRnh1SUNvZ2FXNTBaWEpqWlhCMGIzSnpMQ0JoYm1RZ2MzUmhjblJwYm1jZ2RHaGxJSE5sY25abGNpNWNiaUFxWEc0Z0tpQlVhR2x6SUdOc1lYTnpJSEJ5YjIxdmRHVnpJR052Ym5OcGMzUmxibU41SUdGdVpDQnlaV1IxWTJWeklISmxjR1YwYVhScGRtVWdjMlYwZFhBZ1kyOWtaVnh1SUNvZ1lXTnliM056SUcxMWJIUnBjR3hsSUU1bGMzUktVeUJ3Y205cVpXTjBjeTVjYmlBcVhHNGdLaUJBWlhoaGJYQnNaVnh1SUNvZ1lHQmdkSE5jYmlBcUlHbHRjRzl5ZENCN0lFNWxjM1JHWVdOMGIzSjVJSDBnWm5KdmJTQmNJa0J1WlhOMGFuTXZZMjl5WlZ3aU8xeHVJQ29nYVcxd2IzSjBJSHNnUVhCd1RXOWtkV3hsSUgwZ1puSnZiU0JjSWk0dllYQndMbTF2WkhWc1pWd2lPMXh1SUNvZ2FXMXdiM0owSUhzZ1RYbE1iMmRuWlhJZ2ZTQm1jbTl0SUZ3aUxpOU5lVXh2WjJkbGNsd2lPMXh1SUNvZ2FXMXdiM0owSUhzZ1RtVnpkRUp2YjNSemRISmhjR1Z5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5bWIzSXRibVZ6ZEZ3aU8xeHVJQ3BjYmlBcUlHRnplVzVqSUdaMWJtTjBhVzl1SUdKdmIzUnpkSEpoY0NncElIdGNiaUFxSUNBZ1kyOXVjM1FnWVhCd0lEMGdZWGRoYVhRZ1RtVnpkRVpoWTNSdmNua3VZM0psWVhSbEtFRndjRTF2WkhWc1pTazdYRzRnS2x4dUlDb2dJQ0JoZDJGcGRDQk9aWE4wUW05dmRITjBjbUZ3WlhKY2JpQXFJQ0FnSUNBdWFXNXBkR2xoYkdsNlpTaGhjSEFwWEc0Z0tpQWdJQ0FnTG1WdVlXSnNaVXh2WjJkbGNpaHVaWGNnVFhsTWIyZG5aWElvS1NsY2JpQXFJQ0FnSUNBdVpXNWhZbXhsUTI5eWN5aGJYQ0pvZEhSd09pOHZiRzlqWVd4b2IzTjBPalF5TURCY0lsMHBYRzRnS2lBZ0lDQWdMblZ6WlVobGJHMWxkQ2dwWEc0Z0tpQWdJQ0FnTG5ObGRIVndVM2RoWjJkbGNpaDdYRzRnS2lBZ0lDQWdJQ0IwYVhSc1pUb2dYQ0pQY0dWdVFWQkpJR0o1SUZSeVlXUmxUV0Z5YStLRW9sd2lMRnh1SUNvZ0lDQWdJQ0FnWkdWelkzSnBjSFJwYjI0NklGd2lWSEpoWkdWTllYSnI0b1NpSUVGUVNTQmtiMk4xYldWdWRHRjBhVzl1WENJc1hHNGdLaUFnSUNBZ0lDQjJaWEp6YVc5dU9pQmNJakV1TUM0d1hDSXNYRzRnS2lBZ0lDQWdJQ0J3WVhSb09pQmNJbUZ3YVZ3aUxGeHVJQ29nSUNBZ0lDQWdjR1Z5YzJsemRFRjFkR2h2Y21sNllYUnBiMjQ2SUhSeWRXVXNYRzRnS2lBZ0lDQWdJQ0IwYjNCaVlYSkNaME52Ykc5eU9pQmNJaU15UXpORk5UQmNJaXhjYmlBcUlDQWdJQ0FnSUhSdmNHSmhja2xqYjI1UVlYUm9PaUJjSWk5aGMzTmxkSE12Ykc5bmJ5NXpkbWRjSWl4Y2JpQXFJQ0FnSUNBZ0lHWmhkbWxqYjI1UVlYUm9PaUJjSWk5aGMzTmxkSE12Wm1GMmFXTnZiaTVwWTI5Y0lseHVJQ29nSUNBZ0lIMHBYRzRnS2lBZ0lDQWdMblZ6WlVkc2IySmhiRVpwYkhSbGNuTW9LVnh1SUNvZ0lDQWdJQzUxYzJWSGJHOWlZV3hRYVhCbGN5Z3VMaTRwWEc0Z0tpQWdJQ0FnTG5WelpVZHNiMkpoYkVsdWRHVnlZMlZ3ZEc5eWN5Z3VMaTRwWEc0Z0tpQWdJQ0FnTG5OMFlYSjBLRE13TURBcE8xeHVJQ29nZlZ4dUlDcGNiaUFxSUdKdmIzUnpkSEpoY0NncE8xeHVJQ29nWUdCZ1hHNGdLaUJBWTJ4aGMzTmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRTVsYzNSQ2IyOTBjM1J5WVhCbGNpQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR0Z3Y0RvZ1NVNWxjM1JCY0hCc2FXTmhkR2x2Ymp0Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1gyeHZaMmRsY2pvZ1RHOW5aMlZ5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI1Y2JpQWdJQ29nVW1WMGRYSnVjeUIwYUdVZ1kzVnljbVZ1ZENCc2IyZG5aWElnYVc1emRHRnVZMlVzSUdOeVpXRjBhVzVuSUdFZ1pHVm1ZWFZzZENCdmJtVWdhV1lnYm05MElITmxkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FITjFiVzFoY25sY2JpQWdJQ29nUlc1emRYSmxjeUIwYUdGMElHRWdkbUZzYVdRZ1lFeHZaMmRsY21BZ2FXNXpkR0Z1WTJVZ2FYTWdZV3gzWVhseklHRjJZV2xzWVdKc1pWeHVJQ0FnS2lCbWIzSWdiRzluWjJsdVp5QmliMjkwYzNSeVlYQXRjbVZzWVhSbFpDQnRaWE56WVdkbGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnliaUI3VEc5bloyVnlmU0JVYUdVZ1lXTjBhWFpsSUd4dloyZGxjaUJwYm5OMFlXNWpaUzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2RsZENCc2IyZG5aWElvS1RvZ1RHOW5aMlZ5SUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11WDJ4dloyZGxjaWtnZTF4dUlDQWdJQ0FnTHk4Z1ptRnNiR0poWTJ0Y2JpQWdJQ0FnSUhSb2FYTXVYMnh2WjJkbGNpQTlJRzVsZHlCTWIyZG5aWElvWENKT1pYTjBRbTl2ZEhOMGNtRndYQ0lwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYkc5bloyVnlPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJseHVJQ0FnS2lCSmJtbDBhV0ZzYVhwbGN5QjBhR1VnWW05dmRITjBjbUZ3Y0dWeUlIZHBkR2dnWVNCbmFYWmxiaUJPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQnpkVzF0WVhKNVhHNGdJQ0FxSUVKcGJtUnpJSFJvWlNCd2NtOTJhV1JsWkNCT1pYTjBTbE1nWVhCd0lHbHVjM1JoYm1ObElIUnZJSFJvWlNCaWIyOTBjM1J5WVhCd1pYSXNJR1Z1WVdKc2FXNW5YRzRnSUNBcUlHTm9ZV2x1WldRZ1kyOXVabWxuZFhKaGRHbHZiaUJ0WlhSb2IyUnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTBsT1pYTjBRWEJ3YkdsallYUnBiMjU5SUdGd2NDQXRJRlJvWlNCT1pYTjBTbE1nWVhCd2JHbGpZWFJwYjI0Z2FXNXpkR0Z1WTJVZ2RHOGdhVzVwZEdsaGJHbDZaUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUbVZ6ZEVKdmIzUnpkSEpoY0dWeWZTQlNaWFIxY201eklIUm9aU0JqYkdGemN5Qm1iM0lnWTJoaGFXNXBibWNnWTI5dVptbG5kWEpoZEdsdmJpQnRaWFJvYjJSekxseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHbHVhWFJwWVd4cGVtVW9ZWEJ3T2lCSlRtVnpkRUZ3Y0d4cFkyRjBhVzl1S1NCN1hHNGdJQ0FnZEdocGN5NWhjSEFnUFNCaGNIQTdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUVWdVlXSnNaWE1nYjNJZ2NtVndiR0ZqWlhNZ2RHaGxJR2RzYjJKaGJDQnNiMmRuWlhJZ1ptOXlJSFJvWlNCT1pYTjBTbE1nWVhCd2JHbGpZWFJwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVYRzRnSUNBcUlFbG1JR0VnWTNWemRHOXRJR3h2WjJkbGNpQnBjeUJ3Y205MmFXUmxaQ3dnYVhRZ2NtVndiR0ZqWlhNZ2RHaGxJR1JsWm1GMWJIUWdiRzluWjJWeUxpQlBkR2hsY25kcGMyVXNYRzRnSUNBcUlHRWdibVYzSUd4dloyZGxjaUJ1WVcxbFpDQmdYQ0pPWlhOMFFtOXZkSE4wY21Gd1hDSmdJR2x6SUhWelpXUXVJRlJvYVhNZ2JHOW5aMlZ5SUdseklHRnNjMjhnY21WbmFYTjBaWEpsWkZ4dUlDQWdLaUIzYVhSb0lIUm9aU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1RHOW5aMlZ5ZlNCYlkzVnpkRzl0VEc5bloyVnlYU0F0SUU5d2RHbHZibUZzSUdOMWMzUnZiU0JzYjJkblpYSWdhVzV6ZEdGdVkyVXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwNWxjM1JDYjI5MGMzUnlZWEJsY24wZ1VtVjBkWEp1Y3lCMGFHVWdZMnhoYzNNZ1ptOXlJR05vWVdsdWFXNW5MbHh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR1Z1WVdKc1pVeHZaMmRsY2loamRYTjBiMjFNYjJkblpYSS9PaUJNYjJkblpYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5c2IyZG5aWElnUFNCamRYTjBiMjFNYjJkblpYSWdmSHdnYm1WM0lFeHZaMmRsY2loY0lrNWxjM1JDYjI5MGMzUnlZWEJjSWlrN1hHNGdJQ0FnZEdocGN5NWhjSEF1ZFhObFRHOW5aMlZ5S0hSb2FYTXVYMnh2WjJkbGNpazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUVWdVlXSnNaWE1nUTNKdmMzTXRUM0pwWjJsdUlGSmxjMjkxY21ObElGTm9ZWEpwYm1jZ0tFTlBVbE1wSUdadmNpQjBhR1VnWVhCd2JHbGpZWFJwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVYRzRnSUNBcUlFRnNiRzkzY3lCa1pXWnBibWx1WnlCbGFYUm9aWElnWVNCM2FXeGtZMkZ5WkNCdmNtbG5hVzRnS0dCY0lpcGNJbUFwSUc5eUlHRWdiR2x6ZENCdlppQmhiR3h2ZDJWa0lHOXlhV2RwYm5NdVhHNGdJQ0FxSUVGMWRHOXRZWFJwWTJGc2JIa2dZV05qWlhCMGN5QnNiMk5oYkNCa1pYWmxiRzl3YldWdWRDQnlaWEYxWlhOMGN5QmhibVFnZEdodmMyVWdkMmwwYUc5MWRDQnZjbWxuYVc0Z2FHVmhaR1Z5Y3k1Y2JpQWdJQ29nVkdoeWIzZHpJR0VnWUVOdmNuTkZjbkp2Y21BZ1ptOXlJSFZ1WVhWMGFHOXlhWHBsWkNCdmNtbG5hVzV6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5Y3FKeUI4SUhOMGNtbHVaMXRkZlNCYmIzSnBaMmx1Y3oxYlhWMGdMU0JNYVhOMElHOW1JR0ZzYkc5M1pXUWdiM0pwWjJsdWN5QnZjaUJnWENJcVhDSmdJSFJ2SUdGc2JHOTNJR0ZzYkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZGJYWDBnVzJGc2JHOTNUV1YwYUc5a2N6MWJKMGRGVkNjc0lDZFFUMU5VSnl3Z0oxQlZWQ2NzSUNkRVJVeEZWRVVuWFYwZ0xTQkJiR3h2ZDJWa0lFaFVWRkFnYldWMGFHOWtjeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUbVZ6ZEVKdmIzUnpkSEpoY0dWeWZTQlNaWFIxY201eklIUm9aU0JqYkdGemN5Qm1iM0lnWTJoaGFXNXBibWNnWTI5dVptbG5kWEpoZEdsdmJpNWNiaUFnSUNwY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCbGJtRmliR1ZEYjNKektGeHVJQ0FnSUc5eWFXZHBibk02SUZ3aUtsd2lJSHdnYzNSeWFXNW5XMTBnUFNCYlhTeGNiaUFnSUNCaGJHeHZkMDFsZEdodlpITTZJSE4wY21sdVoxdGRJRDBnVzF3aVIwVlVYQ0lzSUZ3aVVFOVRWRndpTENCY0lsQlZWRndpTENCY0lrUkZURVZVUlZ3aVhWeHVJQ0FwSUh0Y2JpQWdJQ0JqYjI1emRDQmhiR3h2ZDJWa1QzSnBaMmx1Y3lBOVhHNGdJQ0FnSUNCdmNtbG5hVzV6SUQwOVBTQmNJaXBjSWlBL0lGd2lLbHdpSURvZ2IzSnBaMmx1Y3k1dFlYQW9LRzhwSUQwK0lHOHVkSEpwYlNncExuUnZURzkzWlhKRFlYTmxLQ2twTzF4dVhHNGdJQ0FnWTI5dWMzUWdZMjl5YzA5d2RHbHZibk02SUVOdmNuTlBjSFJwYjI1eklEMGdlMXh1SUNBZ0lDQWdiM0pwWjJsdU9pQW9iM0pwWjJsdUxDQmpZV3hzWW1GamF5a2dQVDRnZTF4dUlDQWdJQ0FnSUNBdkx5QkJiR3h2ZHlCeVpYRjFaWE4wSUhkcGRHaHZkWFFnYjNKcFoybHVMaTR1WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hiM0pwWjJsdUtTQnlaWFIxY200Z1kyRnNiR0poWTJzb2JuVnNiQ3dnZEhKMVpTazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQWdJR0ZzYkc5M1pXUlBjbWxuYVc1eklEMDlQU0JjSWlwY0lpQjhmRnh1SUNBZ0lDQWdJQ0FnSUNoQmNuSmhlUzVwYzBGeWNtRjVLR0ZzYkc5M1pXUlBjbWxuYVc1ektTQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ1lXeHNiM2RsWkU5eWFXZHBibk11YVc1amJIVmtaWE1vYjNKcFoybHVMblJ2VEc5M1pYSkRZWE5sS0NrcEtWeHVJQ0FnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWTJGc2JHSmhZMnNvYm5Wc2JDd2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqWVd4c1ltRmpheWh1WlhjZ1EyOXljMFZ5Y205eUtHQlBjbWxuYVc0Z0pIdHZjbWxuYVc1OUlHNXZkQ0JoYkd4dmQyVmtZQ2twTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUdOeVpXUmxiblJwWVd4ek9pQjBjblZsTEZ4dUlDQWdJQ0FnYldWMGFHOWtjem9nWVd4c2IzZE5aWFJvYjJSekxtcHZhVzRvWENJc1hDSXBMRnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjBhR2x6TG1Gd2NDNWxibUZpYkdWRGIzSnpLR052Y25OUGNIUnBiMjV6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dRWEJ3YkdsbGN5QjBhR1VnU0dWc2JXVjBJRzFwWkdSc1pYZGhjbVVnWm05eUlHVnVhR0Z1WTJWa0lITmxZM1Z5YVhSNUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkVlVzVoYldsallXeHNlU0JzYjJGa2N5QjBhR1VnWUdobGJHMWxkR0FnY0dGamEyRm5aU0JwWmlCaGRtRnBiR0ZpYkdVZ1lXNWtJSEpsWjJsemRHVnljeUJwZEZ4dUlDQWdLaUJoY3lCdGFXUmtiR1YzWVhKbElIUnZJR2x0Y0hKdmRtVWdTRlJVVUNCb1pXRmtaWElnYzJWamRYSnBkSGt1SUVsbUlHNXZkQ0JwYm5OMFlXeHNaV1FzSUd4dlozTWdZU0IzWVhKdWFXNW5YRzRnSUNBcUlHRnVaQ0JqYjI1MGFXNTFaWE1nWlhobFkzVjBhVzl1SUhkcGRHaHZkWFFnZEdoeWIzZHBibWNnWlhKeWIzSnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ1OUlGdHZjSFJwYjI1elhTQXRJRTl3ZEdsdmJtRnNJR052Ym1acFozVnlZWFJwYjI0Z2NHRnpjMlZrSUhSdklFaGxiRzFsZEM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3VG1WemRFSnZiM1J6ZEhKaGNHVnlmU0JTWlhSMWNtNXpJSFJvWlNCamJHRnpjeUJtYjNJZ1kyaGhhVzVwYm1jZ1kyOXVabWxuZFhKaGRHbHZiaTVjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUIxYzJWSVpXeHRaWFFvYjNCMGFXOXVjejg2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ0cElIdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1YnkxeVpYRjFhWEpsTFdsdGNHOXlkSE5jYmlBZ0lDQWdJR052Ym5OMElHaGxiRzFsZENBOUlISmxjWFZwY21Vb1hDSm9aV3h0WlhSY0lpazdJQzh2SUVSNWJtRnRhV01nYVcxd2IzSjBJSFJ2SUdGMmIybGtJR2hoY21RZ1pHVndaVzVrWlc1amVWeHVJQ0FnSUNBZ2RHaHBjeTVoY0hBdWRYTmxLR2hsYkcxbGRDaHZjSFJwYjI1ektTazdYRzRnSUNBZ0lDQjBhR2x6TG14dloyZGxjaTVzYjJjb1hDSklaV3h0WlhRZ2JXbGtaR3hsZDJGeVpTQmxibUZpYkdWa0lITjFZMk5sYzNObWRXeHNlUzVjSWlrN1hHNGdJQ0FnZlNCallYUmphQ0I3WEc0Z0lDQWdJQ0IwYUdsekxteHZaMmRsY2k1M1lYSnVLRndpU0dWc2JXVjBJRzV2ZENCcGJuTjBZV3hzWldRdUlGTnJhWEJ3YVc1bklHMXBaR1JzWlhkaGNtVXVYQ0lwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZibHh1SUNBZ0tpQkRiMjVtYVdkMWNtVnpJR0Z1WkNCcGJtbDBhV0ZzYVhwbGN5QlRkMkZuWjJWeUlGVkpJR1p2Y2lCQlVFa2daRzlqZFcxbGJuUmhkR2x2Ymk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSE4xYlcxaGNubGNiaUFnSUNvZ1ZYTmxjeUIwYUdVZ1lGTjNZV2RuWlhKQ2RXbHNaR1Z5WUNCMWRHbHNhWFI1SUhSdklHTnZibVpwWjNWeVpTQkJVRWtnWkc5amRXMWxiblJoZEdsdmJseHVJQ0FnS2lCM2FYUm9JR1JsZEdGcGJHVmtJR04xYzNSdmJXbDZZWFJwYjI0Z1ptOXlJSFJwZEd4bExDQjJaWEp6YVc5dUxDQndZWFJvY3l3Z1lXNWtJR052Ykc5eWN5NWNiaUFnSUNvZ1UzZGhaMmRsY2lCcGN5QmhkWFJ2YldGMGFXTmhiR3g1SUdWNGNHOXpaV1FnWVhRZ2RHaGxJR052Ym1acFozVnlaV1FnY0dGMGFDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRUZDJGbloyVnlVMlYwZFhCUGNIUnBiMjV6ZlNCdmNIUnBiMjV6SUMwZ1UzZGhaMmRsY2lCamIyNW1hV2QxY21GMGFXOXVJRzl3ZEdsdmJuTXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwNWxjM1JDYjI5MGMzUnlZWEJsY24wZ1VtVjBkWEp1Y3lCMGFHVWdZMnhoYzNNZ1ptOXlJR05vWVdsdWFXNW5JR052Ym1acFozVnlZWFJwYjI0dVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2MyVjBkWEJUZDJGbloyVnlLRzl3ZEdsdmJuTTZJRk4zWVdkblpYSlRaWFIxY0U5d2RHbHZibk1wSUh0Y2JpQWdJQ0JqYjI1emRDQnpkMkZuWjJWeUlEMGdibVYzSUZOM1lXZG5aWEpDZFdsc1pHVnlLSFJvYVhNdVlYQndMQ0I3WEc0Z0lDQWdJQ0IwYVhSc1pUb2diM0IwYVc5dWN5NTBhWFJzWlN4Y2JpQWdJQ0FnSUdSbGMyTnlhWEIwYVc5dU9pQnZjSFJwYjI1ekxtUmxjMk55YVhCMGFXOXVMRnh1SUNBZ0lDQWdkbVZ5YzJsdmJqb2diM0IwYVc5dWN5NTJaWEp6YVc5dUxGeHVJQ0FnSUNBZ2NHRjBhRG9nYjNCMGFXOXVjeTV3WVhSb0lIeDhJRndpWVhCcFhDSXNYRzRnSUNBZ0lDQndaWEp6YVhOMFFYVjBhRzl5YVhwaGRHbHZiam9nYjNCMGFXOXVjeTV3WlhKemFYTjBRWFYwYUc5eWFYcGhkR2x2YmlBL1B5QjBjblZsTEZ4dUlDQWdJQ0FnWVhOelpYUnpVR0YwYURvZ2IzQjBhVzl1Y3k1aGMzTmxkSE5RWVhSb0xGeHVJQ0FnSUNBZ1ptRjJhV052YmtacGJHVlFZWFJvT2lCdmNIUnBiMjV6TG1aaGRtbGpiMjVRWVhSb0xGeHVJQ0FnSUNBZ2RHOXdZbUZ5U1dOdmJrWnBiR1ZRWVhSb09pQnZjSFJwYjI1ekxuUnZjR0poY2tsamIyNVFZWFJvTEZ4dUlDQWdJQ0FnZEc5d1ltRnlRbWREYjJ4dmNqb2diM0IwYVc5dWN5NTBiM0JpWVhKQ1owTnZiRzl5TEZ4dUlDQWdJQ0FnYjNCbGJrRndhVXB6YjI1UVlYUm9PaUJ2Y0hScGIyNXpMbTl3Wlc1QmNHbEtjMjl1VUdGMGFDeGNiaUFnSUNBZ0lHOXdaVzVCY0dsWllXMXNVR0YwYURvZ2IzQjBhVzl1Y3k1dmNHVnVRWEJwV1dGdGJGQmhkR2dzWEc0Z0lDQWdmU2s3WEc0Z0lDQWdjM2RoWjJkbGNpNXpaWFIxY0ZOM1lXZG5aWElvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVbVZuYVhOMFpYSnpJRzl1WlNCdmNpQnRiM0psSUdkc2IySmhiQ0IyWVd4cFpHRjBhVzl1SUhCcGNHVnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzVnRiV0Z5ZVZ4dUlDQWdLaUJGYm1GaWJHVnpJSEpsY1hWbGMzUWdjR0Y1Ykc5aFpDQjJZV3hwWkdGMGFXOXVJR0Z1WkNCMGNtRnVjMlp2Y20xaGRHbHZiaUJuYkc5aVlXeHNlU0JoWTNKdmMzTmNiaUFnSUNvZ2RHaGxJR1Z1ZEdseVpTQk9aWE4wU2xNZ1lYQndiR2xqWVhScGIyNHVJRTExYkhScGNHeGxJSEJwY0dWeklHTmhiaUJpWlNCamFHRnBibVZrSUhSdloyVjBhR1Z5WEc0Z0lDQXFJR1p2Y2lCdGIyUjFiR0Z5SUdsdWNIVjBJSFpoYkdsa1lYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN0xpNHVVR2x3WlZSeVlXNXpabTl5YlZ0ZGZTQndhWEJsY3lBdElGQnBjR1VnYVc1emRHRnVZMlZ6SUhSdklISmxaMmx6ZEdWeUlHZHNiMkpoYkd4NUxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0T1pYTjBRbTl2ZEhOMGNtRndaWEo5SUZKbGRIVnlibk1nZEdobElHTnNZWE56SUdadmNpQmphR0ZwYm1sdVp5NWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5QjFjMlZIYkc5aVlXeFFhWEJsY3lndUxpNXdhWEJsY3pvZ1VHbHdaVlJ5WVc1elptOXliVnRkS1NCN1hHNGdJQ0FnYVdZZ0tIQnBjR1Z6TG14bGJtZDBhQ0ErSURBcElIUm9hWE11WVhCd0xuVnpaVWRzYjJKaGJGQnBjR1Z6S0M0dUxuQnBjR1Z6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVbVZuYVhOMFpYSnpJRzl1WlNCdmNpQnRiM0psSUdkc2IySmhiQ0JsZUdObGNIUnBiMjRnWm1sc2RHVnljeTVjYmlBZ0lDcGNiaUFnSUNvZ1FITjFiVzFoY25sY2JpQWdJQ29nU1dZZ2JtOGdabWxzZEdWeWN5QmhjbVVnY0hKdmRtbGtaV1FzSUdsMElHRjFkRzl0WVhScFkyRnNiSGtnY21WbmFYTjBaWEp6SUdFZ1pHVm1ZWFZzZEZ4dUlDQWdLaUJ6WlhRZ2IyWWdjM1JoYm1SaGNtUWdaWGhqWlhCMGFXOXVJR1pwYkhSbGNuTWdabTl5SUdOdmJXMXZiaUJsY25KdmNpQjBlWEJsY3lCc2FXdGxYRzRnSUNBcUlHQklkSFJ3UlhoalpYQjBhVzl1WUN3Z1lGWmhiR2xrWVhScGIyNUZlR05sY0hScGIyNWdMQ0JnUTI5dVpteHBZM1JGZUdObGNIUnBiMjVnTENCaGJtUWdiM1JvWlhKekxseHVJQ0FnS2x4dUlDQWdLaUJVYUdVZ1pHVm1ZWFZzZENCZ1JHVmpZV1pGZUdObGNIUnBiMjVHYVd4MFpYSmdJR2x6SUdOdmJuTjBjblZqZEdWa0lIZHBkR2dnZEdobElHRndjR3hwWTJGMGFXOXVKM05jYmlBZ0lDb2dZRTF2WkhWc1pWSmxabUFnYzI4Z2FYUWdZMkZ1SUhKbGMyOXNkbVVnZEdobElISmxjWFZsYzNRdGMyTnZjR1ZrSUdCRVpXTmhabEpsY1hWbGMzUkRiMjUwWlhoMFlDQW9ZVzVrWEc0Z0lDQXFJR2wwY3lCamJHbGxiblF0WW05MWJtUWdiRzluWjJWeUtTQm1iM0lnZEdobElISmxjWFZsYzNRZ2RHaGhkQ0IwYUhKbGR5d2dhVzV6ZEdWaFpDQnZaaUJzYjJkbmFXNW5YRzRnSUNBcUlIUm9jbTkxWjJnZ2RHaGxJR2RsYm1WeWFXTWdaMnh2WW1Gc0lHeHZaMmRsY2k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIc3VMaTVGZUdObGNIUnBiMjVHYVd4MFpYSmJYWDBnWm1sc2RHVnljeUF0SUU5d2RHbHZibUZzSUdacGJIUmxjbk1nZEc4Z1lYQndiSGtnWjJ4dlltRnNiSGt1WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nZFhObFIyeHZZbUZzUm1sc2RHVnljeWd1TGk1bWFXeDBaWEp6T2lCaGJubGJYU2tnZTF4dUlDQWdJSFJvYVhNdVlYQndMblZ6WlVkc2IySmhiRVpwYkhSbGNuTW9YRzRnSUNBZ0lDQXVMaTRvWm1sc2RHVnljeTVzWlc1bmRHZ2dQaUF3WEc0Z0lDQWdJQ0FnSUQ4Z1ptbHNkR1Z5YzF4dUlDQWdJQ0FnSUNBNklGdHVaWGNnUkdWallXWkZlR05sY0hScGIyNUdhV3gwWlhJb2RHaHBjeTVoY0hBdVoyVjBLRTF2WkhWc1pWSmxaaXdnZXlCemRISnBZM1E2SUdaaGJITmxJSDBwS1YwcFhHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVbVZuYVhOMFpYSnpJR2RzYjJKaGJDQnBiblJsY21ObGNIUnZjbk1nWm05eUlISmxjWFZsYzNRZ1lXNWtJSEpsYzNCdmJuTmxJSFJ5WVc1elptOXliV0YwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkpiblJsY21ObGNIUnZjbk1nWVd4c2IzY2dZV1IyWVc1alpXUWdjbVZ4ZFdWemRDOXlaWE53YjI1elpTQnRZVzVwY0hWc1lYUnBiMjRnYzNWamFDQmhjMXh1SUNBZ0tpQnpaWEpwWVd4cGVtRjBhVzl1TENCc2IyZG5hVzVuTENCdmNpQjBjbUZ1YzJadmNtMWhkR2x2Ymk0Z1RYVnNkR2x3YkdVZ2FXNTBaWEpqWlhCMGIzSnpYRzRnSUNBcUlHTmhiaUJpWlNCaFpHUmxaQ0JtYjNJZ2JXOWtkV3hoY2lCamIyNW1hV2QxY21GMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZXk0dUxrNWxjM1JKYm5SbGNtTmxjSFJ2Y2x0ZGZTQnBiblJsY21ObGNIUnZjbk1nTFNCSmJuUmxjbU5sY0hSdmNpQnBibk4wWVc1alpYTWdkRzhnY21WbmFYTjBaWEl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVsYzNSQ2IyOTBjM1J5WVhCbGNuMGdVbVYwZFhKdWN5QjBhR1VnWTJ4aGMzTWdabTl5SUdOb1lXbHVhVzVuSUdOdmJtWnBaM1Z5WVhScGIyNHVYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdkWE5sUjJ4dlltRnNTVzUwWlhKalpYQjBiM0p6S0M0dUxtbHVkR1Z5WTJWd2RHOXljem9nVG1WemRFbHVkR1Z5WTJWd2RHOXlXMTBwSUh0Y2JpQWdJQ0JwWmlBb2FXNTBaWEpqWlhCMGIzSnpMbXhsYm1kMGFDQStJREFwWEc0Z0lDQWdJQ0IwYUdsekxtRndjQzUxYzJWSGJHOWlZV3hKYm5SbGNtTmxjSFJ2Y25Nb0xpNHVhVzUwWlhKalpYQjBiM0p6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVM1JoY25SeklIUm9aU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjRnWVc1a0lHSnBibVJ6SUdsMElIUnZJSFJvWlNCbmFYWmxiaUJ3YjNKMElHRnVaQ0JvYjNOMExseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQk1hWE4wWlc1eklHOXVJSFJvWlNCemNHVmphV1pwWldRZ2NHOXlkQ0JoYm1RZ2IzQjBhVzl1WVd4c2VTQmhJR2h2YzNRdUlFOXVZMlVnYzNSaGNuUmxaQ3hjYmlBZ0lDb2diRzluY3lCMGFHVWdZWEJ3YkdsallYUnBiMjRnVlZKTUlHWnZjaUJsWVhONUlHRmpZMlZ6Y3k0Z1ZHaGxJSE4wWVhKMGRYQWdjSEp2WTJWemN5QnlaWE52YkhabGMxeHVJQ0FnS2lCdmJtTmxJSFJvWlNCaGNIQnNhV05oZEdsdmJpQnBjeUJ6ZFdOalpYTnpablZzYkhrZ2NuVnVibWx1Wnk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHdiM0owUFRNd01EQmRJQzBnVUc5eWRDQnVkVzFpWlhJZ2RHOGdiR2x6ZEdWdUlHOXVMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyaHZjM1JkSUMwZ1QzQjBhVzl1WVd3Z2FHOXpkQ0J2Y2lCSlVDQmhaR1J5WlhOeklIUnZJR0pwYm1RZ2RHOHVYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cyeHZaejEwY25WbFhTQXRJRmRvWlhSb1pYSWdkRzhnYkc5bklIUm9aU0JoY0hCc2FXTmhkR2x2YmlCVlVrd2dkWEJ2YmlCemRHRnlkSFZ3TGx4dUlDQWdLaUJBY21WMGRYSnVJSHRRY205dGFYTmxQSFp2YVdRK2ZTQlNaWE52YkhabGN5QnZibU5sSUhSb1pTQmhjSEJzYVdOaGRHbHZiaUJ6ZEdGeWRITWdjM1ZqWTJWemMyWjFiR3g1TGx4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdGemVXNWpJSE4wWVhKMEtGeHVJQ0FnSUhCdmNuUTZJRzUxYldKbGNpQTlJRTUxYldKbGNpaHdjbTlqWlhOekxtVnVkaTVRVDFKVUtTQjhmQ0F6TURBd0xGeHVJQ0FnSUdodmMzUTZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ0E5SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0JzYjJjNklHSnZiMnhsWVc0Z1BTQjBjblZsWEc0Z0lDa2dlMXh1SUNBZ0lIUm9hWE11WVhCd0xteHBjM1JsYmlod2IzSjBMQ0JvYjNOMElHRnpJR0Z1ZVNrdWRHaGxiaWhoYzNsdVl5QW9LU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9iRzluS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhWeWJDQTlJR0YzWVdsMElIUm9hWE11WVhCd0xtZGxkRlZ5YkNncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG14dloyZGxjaTVzYjJjb1lQQ2Ztb0FnUVhCd2JHbGpZWFJwYjI0Z2FYTWdjblZ1Ym1sdVp5QmhkRG9nSkh0MWNteDlZQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=