@o3r/rules-engine 10.0.0-prerelease.94 → 10.0.0-prerelease.96

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.
@@ -94,10 +94,5 @@ export declare class RulesetExecutor {
94
94
  * Plug ruleset to fact streams and trigger a first evaluation
95
95
  */
96
96
  protected plugRuleset(): EngineRuleset;
97
- /**
98
- * Plug ruleset to fact streams and trigger a first evaluation
99
- * @deprecated This function is not made to be accessible from Outside of the class, will be removed in v10
100
- */
101
- prepareRuleset(): EngineRuleset;
102
97
  }
103
98
  //# sourceMappingURL=ruleset-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ruleset-executor.d.ts","sourceRoot":"","sources":["../../src/engine/ruleset-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,UAAU,EAAM,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAA0D,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AASzD,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,IAAI,EACJ,OAAO,EACR,MAAM,aAAa,CAAC;AAErB,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAG,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAE3F,qBAAa,eAAe;IAE1B,uBAAuB;IACvB,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,iCAAiC;IACjC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzE,gDAAgD;IAChD,SAAgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1C,gDAAgD;IAChD,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,8EAA8E;IAC9E,SAAgB,aAAa,EAAE,aAAa,CAAC;IAE7C,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;;;OAIG;gBACS,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;IAOtD;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;IAU7D;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAehK;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAI1H;;;;;;;;OAQG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAE,WAAW,EAAO;IAc/J;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,2BAA2B;IAIrG;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAoB/J;;OAEG;IACH,SAAS,CAAC,WAAW;IA0GrB;;;OAGG;IACI,cAAc;CAGtB"}
1
+ {"version":3,"file":"ruleset-executor.d.ts","sourceRoot":"","sources":["../../src/engine/ruleset-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,UAAU,EAAM,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAA0D,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AASzD,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,IAAI,EACJ,OAAO,EACR,MAAM,aAAa,CAAC;AAErB,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAG,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAE3F,qBAAa,eAAe;IAE1B,uBAAuB;IACvB,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,iCAAiC;IACjC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzE,gDAAgD;IAChD,SAAgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1C,gDAAgD;IAChD,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,8EAA8E;IAC9E,SAAgB,aAAa,EAAE,aAAa,CAAC;IAE7C,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;;;OAIG;gBACS,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;IAOtD;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;IAU7D;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAehK;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAI1H;;;;;;;;OAQG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAE,WAAW,EAAO;IAc/J;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,2BAA2B;IAIrG;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAoB/J;;OAEG;IACH,SAAS,CAAC,WAAW;CAyGtB"}
@@ -247,12 +247,5 @@ export class RulesetExecutor {
247
247
  rulesResultsSubject$: result$
248
248
  };
249
249
  }
250
- /**
251
- * Plug ruleset to fact streams and trigger a first evaluation
252
- * @deprecated This function is not made to be accessible from Outside of the class, will be removed in v10
253
- */
254
- prepareRuleset() {
255
- return this.plugRuleset();
256
- }
257
250
  }
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1leGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmdpbmUvcnVsZXNldC1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUI7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUk1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3JCLE1BQU0scUJBQXFCLENBQUM7QUFlN0IsTUFBTSxPQUFPLGVBQWU7SUFtQjFCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWdCLEVBQUUsV0FBd0I7UUFQOUMscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBUTNCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxxQkFBcUIsQ0FBQyxhQUE2RCxFQUFFLGNBQTJCO1FBQ3RILElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRTtZ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RSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3pDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7WUFDN0Msb0JBQW9CLEVBQUUsT0FBTztTQUNiLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFJ1bGVzZXQgZXhlY3V0b3IgKi9cbmltcG9ydCB7IEpTT05QYXRoIH0gZnJvbSAnanNvbnBhdGgtcGx1cyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgcGFpcndpc2UsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaGFuZGxlUnVsZUV2YWx1YXRpb25EZWJ1ZyB9IGZyb20gJy4vZGVidWcvaGVscGVycyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGVzRW5naW5lIH0gZnJvbSAnLi9lbmdpbmUnO1xuaW1wb3J0IHR5cGUgeyBGYWN0cyB9IGZyb20gJy4vZmFjdCc7XG5pbXBvcnQgeyBFbmdpbmVSdWxlc2V0LCBFdmFsdWF0aW9uUmVhc29uLCBSdWxlRXZhbHVhdGlvbiwgUnVsZUV2YWx1YXRpb25PdXRwdXQgfSBmcm9tICcuL2VuZ2luZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZXhlY3V0ZU9wZXJhdG9yIH0gZnJvbSAnLi9vcGVyYXRvci9vcGVyYXRvci5oZWxwZXJzJztcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi9vcGVyYXRvci9vcGVyYXRvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgaXNBbGxDb25kaXRpb25zLFxuICBpc0NvbmRpdGlvblByb3BlcnRpZXMsXG4gIGlzTm90Q29uZGl0aW9uLFxuICBpc09wZXJhbmRGYWN0LFxuICBpc09wZXJhbmRMaXRlcmFsLFxuICBpc09wZXJhbmRSdW50aW1lRmFjdFxufSBmcm9tICcuL3J1bGUvcnVsZS5oZWxwZXJzJztcbmltcG9ydCB7XG4gIEFjdGlvbkJsb2NrLFxuICBBY3Rpb25TZXRUZW1wb3JhcnlGYWN0QmxvY2ssXG4gIEFsbEJsb2NrLFxuICBHZW5lcmljT3BlcmFuZCxcbiAgSWZFbHNlQmxvY2ssXG4gIE5lc3RlZENvbmRpdGlvbixcbiAgUnVsZSxcbiAgUnVsZXNldFxufSBmcm9tICcuL3N0cnVjdHVyZSc7XG5cbi8qKiBUeXBlIG9mIHRoZSByZXRyaWV2ZSBmYWN0IGZ1bmN0aW9uICovXG5leHBvcnQgdHlwZSBSZXRyaWV2ZUZhY3RGdW5jVHlwZSA9IDxUID0gdW5rbm93bj4gKGlkOiBzdHJpbmcpID0+IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBSdWxlc2V0RXhlY3V0b3Ige1xuXG4gIC8qKiByZXRyaWV2ZUZhY3RGdW5jICovXG4gIHByb3RlY3RlZCByZWFkb25seSBydWxlc0VuZ2luZTogUnVsZXNFbmdpbmU7XG5cbiAgLyoqIE1hcCBvZiBhdmFpbGFibGUgb3BlcmF0b3JzICovXG4gIHByb3RlY3RlZCByZWFkb25seSBvcGVyYXRvcnM6IFJlY29yZDxzdHJpbmcsIE9wZXJhdG9yPHVua25vd24sIHVua25vd24+PjtcblxuICAvKiogRGVsYXkgYmVmb3JlIGZhY3Qgc3RyZWFtIGRlZmF1bHRpbmcgdmFsdWUgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZhY3REZWZhdWx0RGVsYXk/OiBudW1iZXI7XG5cbiAgLyoqIFJ1bGVzZXQgYXNzb2NpYXRlZCB0byB0aGUgY3VycmVudCBleGVjdXRvciovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc2V0OiBSdWxlc2V0O1xuXG4gIC8qKiBSdWxlc2V0IHBsdWdnZWQgdG8gdGhlIGZhY3Qgc3RyZWFtLCB0aGF0IGNvbnRhaW5zIGFjdGlvbnMgc3RyZWFtIHJlc3VsdCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lUnVsZXNldDogRW5naW5lUnVsZXNldDtcblxuICBwcml2YXRlIGV4ZWN1dGlvbkNvdW50ZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcnVsZXNldCBleGVjdXRvclxuICAgKiBAcGFyYW0gcnVsZXNldCBSdWxlc2V0IHRvIGV2YWx1YXRlXG4gICAqIEBwYXJhbSBydWxlc0VuZ2luZSBJbnN0YW5jZSBvZiB0aGUgcnVsZXMgZW5naW5lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihydWxlc2V0OiBSdWxlc2V0LCBydWxlc0VuZ2luZTogUnVsZXNFbmdpbmUpIHtcbiAgICB0aGlzLnJ1bGVzZXQgPSBydWxlc2V0O1xuICAgIHRoaXMucnVsZXNFbmdpbmUgPSBydWxlc0VuZ2luZTtcbiAgICB0aGlzLm9wZXJhdG9ycyA9IHJ1bGVzRW5naW5lLm9wZXJhdG9ycztcbiAgICB0aGlzLmVuZ2luZVJ1bGVzZXQgPSB0aGlzLnBsdWdSdWxlc2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZXhwbG9yZXMgYSBydWxlIHRvIGlkZW50aWZ5IGFuZCBjb2xsZWN0IGlucHV0IGZhY3RzLlxuICAgKiBJbnB1dCBmYWN0cyBhcmUgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgJ0ZBQ1QnIHR5cGUgYW5kIG9wZXJhdG9yLXNwZWNpZmljIGltcGxpY2l0IGRlcGVuZGVuY2llcy5cbiAgICogQHBhcmFtIGN1cnJlbnRPYmplY3QgVGhlIGN1cnJlbnQgb2JqZWN0IGJlaW5nIGV4cGxvcmVkLlxuICAgKiBAcGFyYW0gcnVsZUlucHV0RmFjdHMgQSBzZXQgdG8gc3RvcmUgdGhlIGlkZW50aWZpZWQgaW5wdXQgZmFjdHMgZm9yIHRoZSBydWxlLlxuICAgKi9cbiAgcHJpdmF0ZSBjb2xsZWN0UnVsZUlucHV0RmFjdHMoY3VycmVudE9iamVjdDogQWxsQmxvY2sgfCBOZXN0ZWRDb25kaXRpb24gfCBOZXN0ZWRDb25kaXRpb25bXSwgcnVsZUlucHV0RmFjdHM6IFNldDxzdHJpbmc+KSB7XG4gICAgaWYgKGN1cnJlbnRPYmplY3QgJiYgaXNPcGVyYW5kRmFjdChjdXJyZW50T2JqZWN0KSkge1xuICAgICAgcnVsZUlucHV0RmFjdHMuYWRkKGN1cnJlbnRPYmplY3QudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50T2JqZWN0KSkge1xuICAgICAgY3VycmVudE9iamVjdC5mb3JFYWNoKChlbGVtKSA9PiB0aGlzLmNvbGxlY3RSdWxlSW5wdXRGYWN0cyhlbGVtLCBydWxlSW5wdXRGYWN0cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50T2JqZWN0KSB7XG4gICAgICAgIGlmICgoa2V5ID09PSAnb3BlcmF0b3InKSAmJiBpc0NvbmRpdGlvblByb3BlcnRpZXMoY3VycmVudE9iamVjdCkpIHtcbiAgICAgICAgICBjb25zdCBvcCA9IHRoaXMub3BlcmF0b3JzW2N1cnJlbnRPYmplY3Rba2V5XV07XG4gICAgICAgICAgaWYgKG9wICYmIG9wLmZhY3RJbXBsaWNpdERlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgb3AuZmFjdEltcGxpY2l0RGVwZW5kZW5jaWVzLmZvckVhY2goZGVwID0+IHJ1bGVJbnB1dEZhY3RzLmFkZChkZXApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGN1cnJlbnRPYmplY3Rba2V5IGFzIGtleW9mIChBbGxCbG9jayB8IE5lc3RlZENvbmRpdGlvbildID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRoaXMuY29sbGVjdFJ1bGVJbnB1dEZhY3RzKGN1cnJlbnRPYmplY3Rba2V5IGFzIGtleW9mIChBbGxCbG9jayB8IE5lc3RlZENvbmRpdGlvbildLCBydWxlSW5wdXRGYWN0cyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwb3J0IHBlcmZvcm1hbmNlIG1hcmsgZm9yIGEgcnVsZSBydW5cbiAgICogQHBhcmFtIHJ1bGUgUnVsZSB0byBtZWFzdXJlXG4gICAqIEBwYXJhbSBzdGF0dXMgc3RhdHVzIG9mIHRoZSBydWxlIGV2YWx1YXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBwZXJmb3JtYW5jZU1hcmsocnVsZTogUnVsZSwgc3RhdHVzOiAnc3RhcnQnIHwgJ2VuZCcpIHtcbiAgICBpZiAodGhpcy5ydWxlc0VuZ2luZS5wZXJmb3JtYW5jZSkge1xuICAgICAgY29uc3QgbWFya05hbWUgPSBgcnVsZXMtZW5naW5lOiR7dGhpcy5ydWxlc0VuZ2luZS5ydWxlc0VuZ2luZUluc3RhbmNlTmFtZX06JHt0aGlzLnJ1bGVzZXQubmFtZX06JHtydWxlLm5hbWV9YDtcbiAgICAgIHRoaXMucnVsZXNFbmdpbmUucGVyZm9ybWFuY2UubWFyayhgJHttYXJrTmFtZX06JHtzdGF0dXN9YCk7XG4gICAgICBpZiAoc3RhdHVzID09PSAnZW5kJykge1xuICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLnBlcmZvcm1hbmNlLm1lYXN1cmUobWFya05hbWUsIGAke21hcmtOYW1lfTpzdGFydGAsIGAke21hcmtOYW1lfTplbmRgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IG9wZXJhbmQgdmFsdWUgc3RyZWFtIGFjY29yZGluZyB0byBpdHMgdHlwZVxuICAgKiBAcGFyYW0gb3BlcmFuZCBvcGVyYW5kIG9mIHRoZSBjb25kaXRpb25cbiAgICogQHBhcmFtIGZhY3RzVmFsdWVcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0T3BlcmFuZFZhbHVlKG9wZXJhbmQ6IEdlbmVyaWNPcGVyYW5kIHwgdW5kZWZpbmVkLCBmYWN0c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cyB8IHVuZGVmaW5lZD4sIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4pOiB1bmtub3duIHtcbiAgICBpZiAodHlwZW9mIG9wZXJhbmQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kRmFjdChvcGVyYW5kKSkge1xuICAgICAgY29uc3QgZmFjdFZhbHVlID0gZmFjdHNWYWx1ZVtvcGVyYW5kLnZhbHVlXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICByZXR1cm4gb3BlcmFuZC5wYXRoID8gZmFjdFZhbHVlICYmIEpTT05QYXRoKHt3cmFwOiBmYWxzZSwganNvbjogZmFjdFZhbHVlLCBwYXRoOiBvcGVyYW5kLnBhdGh9KSA6IGZhY3RWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZExpdGVyYWwob3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiBvcGVyYW5kLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kUnVudGltZUZhY3Qob3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiBydW50aW1lRmFjdFZhbHVlc1tvcGVyYW5kLnZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgcm9vdCBydWxlIGZyb20gYSBydWxlc2V0LCBhbmQgcmV0dXJuIHRoZSBhc3NvY2lhdGVkIGFjdGlvbnMgdG8gYmUgcHJvY2Vzc2VkXG4gICAqIFdpbGwgYWxzbyB1cGRhdGUgdGhlIHJ1bnRpbWVGYWN0VmFsdWVzIG1hcCB0aGF0IGlzIHJ1bGVzZXQgd2lzZVxuICAgKiBOb3RlIHRoYXQgcnVudGltZUZhY3RWYWx1ZXMgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBydWxlXG4gICAqIEBwYXJhbSBmYWN0c1ZhbHVlXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZXZhbHVhdGVSdWxlKHJ1bGU6IFJ1bGUsIGZhY3RzVmFsdWU6IFJlY29yZDxzdHJpbmcsIEZhY3RzIHwgdW5kZWZpbmVkPiwgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPikge1xuICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQmxvY2socnVsZS5yb290RWxlbWVudCwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgYSBibG9jayB0byBleHRyYWN0IGFsbCB0aGUgYWN0aW9ucyBrZWVwaW5nIHRoZSBvcmRlclxuICAgKiBOb3RlIHRoYXQgcnVudGltZUZhY3RWYWx1ZXMgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwYXJhbSBhY3Rpb25zXG4gICAqIEBwYXJhbSBmYWN0c1ZhbHVlXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlcyBUaGlzIHJ1bnRpbWUgZmFjdCBtYXAgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBldmFsdWF0ZUJsb2NrKGVsZW1lbnQ6IEFsbEJsb2NrLCBmYWN0c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cyB8IHVuZGVmaW5lZD4sIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sIGFjdGlvbnM6IEFjdGlvbkJsb2NrW10gPSBbXSkge1xuICAgIGlmICh0aGlzLmlzSWZFbHNlQmxvY2soZWxlbWVudCkpIHtcbiAgICAgICghZWxlbWVudC5jb25kaXRpb24gfHwgdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihlbGVtZW50LmNvbmRpdGlvbiwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpID8gZWxlbWVudC5zdWNjZXNzRWxlbWVudHMgOiBlbGVtZW50LmZhaWx1cmVFbGVtZW50cylcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnRSZXN1bHQpID0+IHRoaXMuZXZhbHVhdGVCbG9jayhlbGVtZW50UmVzdWx0LCBmYWN0c1ZhbHVlLCBydW50aW1lRmFjdFZhbHVlcywgYWN0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGlvbkJsb2NrKGVsZW1lbnQpKSB7XG4gICAgICBpZiAodGhpcy5pc0FjdGlvblNldFRlbXBvcmFyeUZhY3RCbG9jayhlbGVtZW50KSkge1xuICAgICAgICBydW50aW1lRmFjdFZhbHVlc1tlbGVtZW50LmZhY3RdID0gZWxlbWVudC52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgSWZFbHNlIGJsb2NrXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpc0lmRWxzZUJsb2NrKGVsZW1lbnQ6IEFsbEJsb2NrKTogZWxlbWVudCBpcyBJZkVsc2VCbG9jayB7XG4gICAgcmV0dXJuIGVsZW1lbnQuYmxvY2tUeXBlID09PSAnSUZfRUxTRSc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGFuIGFjdGlvbiBibG9ja1xuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNBY3Rpb25CbG9jayhlbGVtZW50OiBBbGxCbG9jayk6IGVsZW1lbnQgaXMgQWN0aW9uQmxvY2sge1xuICAgIHJldHVybiAnZWxlbWVudFR5cGUnIGluIGVsZW1lbnQgJiYgZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0FDVElPTic7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBhY3Rpb24gc2V0cyBhIHRlbXBvcmFyeSBmYWN0XG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpc0FjdGlvblNldFRlbXBvcmFyeUZhY3RCbG9jayhlbGVtZW50OiBBY3Rpb25CbG9jayk6IGVsZW1lbnQgaXMgQWN0aW9uU2V0VGVtcG9yYXJ5RmFjdEJsb2NrIHtcbiAgICByZXR1cm4gJ2FjdGlvblR5cGUnIGluIGVsZW1lbnQgJiYgZWxlbWVudC5hY3Rpb25UeXBlID09PSAnU0VUX0ZBQ1QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIGEgY29uZGl0aW9uIGJsb2NrXG4gICAqIEBwYXJhbSBuZXN0ZWRDb25kaXRpb25cbiAgICogQHBhcmFtIGZhY3RzVmFsdWVcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBldmFsdWF0ZUNvbmRpdGlvbihuZXN0ZWRDb25kaXRpb246IE5lc3RlZENvbmRpdGlvbiwgZmFjdHNWYWx1ZTogUmVjb3JkPHN0cmluZywgRmFjdHMgfCB1bmRlZmluZWQ+LCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+KTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQ29uZGl0aW9uUHJvcGVydGllcyhuZXN0ZWRDb25kaXRpb24pKSB7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzW25lc3RlZENvbmRpdGlvbi5vcGVyYXRvcl07XG4gICAgICBpZiAob3BlcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gb3BlcmF0b3IgOiAke25lc3RlZENvbmRpdGlvbi5vcGVyYXRvcn0sIHNraXBwaW5nIHRoZSBydWxlIGV4ZWN1dGlvbi4uLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV4ZWN1dGVPcGVyYXRvcih0aGlzLmdldE9wZXJhbmRWYWx1ZShuZXN0ZWRDb25kaXRpb24ubGhzLCBmYWN0c1ZhbHVlLCBydW50aW1lRmFjdFZhbHVlcyksXG4gICAgICAgIHRoaXMuZ2V0T3BlcmFuZFZhbHVlKCdyaHMnIGluIG5lc3RlZENvbmRpdGlvbiA/IG5lc3RlZENvbmRpdGlvbi5yaHMgOiB1bmRlZmluZWQsIGZhY3RzVmFsdWUsIHJ1bnRpbWVGYWN0VmFsdWVzKSwgb3BlcmF0b3IsIGZhY3RzVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChpc05vdENvbmRpdGlvbihuZXN0ZWRDb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gIXRoaXMuZXZhbHVhdGVDb25kaXRpb24obmVzdGVkQ29uZGl0aW9uLm5vdCwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpO1xuICAgIH1cbiAgICBpZiAobmVzdGVkQ29uZGl0aW9uLmFsbCB8fCBuZXN0ZWRDb25kaXRpb24uYW55KSB7XG4gICAgICBjb25zdCBldmFsdWF0ZSA9IChjb25kaXRpb246IE5lc3RlZENvbmRpdGlvbikgPT4gdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihjb25kaXRpb24sIGZhY3RzVmFsdWUsIHJ1bnRpbWVGYWN0VmFsdWVzKTtcbiAgICAgIHJldHVybiBpc0FsbENvbmRpdGlvbnMobmVzdGVkQ29uZGl0aW9uKSA/IG5lc3RlZENvbmRpdGlvbi5hbGwuZXZlcnkoZXZhbHVhdGUpIDogbmVzdGVkQ29uZGl0aW9uLmFueS5zb21lKGV2YWx1YXRlKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbmRpdGlvbiBibG9jayBtZXQgOiAke0pTT04uc3RyaW5naWZ5KG5lc3RlZENvbmRpdGlvbil9YCk7XG4gIH1cblxuICAvKipcbiAgICogUGx1ZyBydWxlc2V0IHRvIGZhY3Qgc3RyZWFtcyBhbmQgdHJpZ2dlciBhIGZpcnN0IGV2YWx1YXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBwbHVnUnVsZXNldCgpIHtcbiAgICBjb25zdCBpbnB1dEZhY3RzRm9yUnVsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gICAgY29uc3QgZmluZFJ1bGVJbnB1dEZhY3RzID0gKG9iajogQWxsQmxvY2spOiBzdHJpbmdbXSA9PiB7XG4gICAgICBjb25zdCBydWxlSW5wdXRGYWN0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgdGhpcy5jb2xsZWN0UnVsZUlucHV0RmFjdHMob2JqLCBydWxlSW5wdXRGYWN0cyk7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbShydWxlSW5wdXRGYWN0cyk7XG4gICAgfTtcbiAgICB0aGlzLnJ1bGVzZXQucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4gaW5wdXRGYWN0c0ZvclJ1bGVbcnVsZS5pZF0gPSBmaW5kUnVsZUlucHV0RmFjdHMocnVsZS5yb290RWxlbWVudCkpO1xuICAgIGNvbnN0IGZhY3RzVGhhdFJlcnVuRXZlcnl0aGluZzogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLnJ1bGVzZXQucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgaWYgKHJ1bGUub3V0cHV0UnVudGltZUZhY3RzLmxlbmd0aCA+IDAgfHwgcnVsZS5pbnB1dFJ1bnRpbWVGYWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZhY3RzVGhhdFJlcnVuRXZlcnl0aGluZy5wdXNoKC4uLmlucHV0RmFjdHNGb3JSdWxlW3J1bGUuaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlckZ1bGwkOiBPYnNlcnZhYmxlPHVua25vd25bXT4gPSBmYWN0c1RoYXRSZXJ1bkV2ZXJ5dGhpbmcubGVuZ3RoID09PSAwID8gb2YoW10pIDpcbiAgICAgIGNvbWJpbmVMYXRlc3QoZmFjdHNUaGF0UmVydW5FdmVyeXRoaW5nLm1hcCgoZmFjdCkgPT4gdGhpcy5ydWxlc0VuZ2luZS5yZXRyaWV2ZU9yQ3JlYXRlRmFjdFN0cmVhbShmYWN0KSkpO1xuICAgIGNvbnN0IHJlc3VsdCQgPSB0cmlnZ2VyRnVsbCQucGlwZShzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgY29uc3QgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPiA9IHt9O1xuXG4gICAgICBsZXQgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdO1xuICAgICAgaWYgKHRoaXMucnVsZXNFbmdpbmUuZGVidWdNb2RlKSB7XG4gICAgICAgIHJ1bGVzZXRJbnB1dEZhY3RzID0gQXJyYXkuZnJvbSh0aGlzLnJ1bGVzZXQucnVsZXMucmVkdWNlKChhY2MsIHJ1bGUpID0+IHtcbiAgICAgICAgICBpbnB1dEZhY3RzRm9yUnVsZVtydWxlLmlkXS5mb3JFYWNoKChmYWN0TmFtZSkgPT4gYWNjLmFkZChmYWN0TmFtZSkpO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIG5ldyBTZXQ8c3RyaW5nPigpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHRoaXMucnVsZXNldC5ydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRGYWN0cyA9IGlucHV0RmFjdHNGb3JSdWxlW3J1bGUuaWRdO1xuICAgICAgICBjb25zdCB2YWx1ZXMkID0gaW5wdXRGYWN0cy5tYXAoKGZhY3QpID0+IHRoaXMucnVsZXNFbmdpbmUucmV0cmlldmVPckNyZWF0ZUZhY3RTdHJlYW0oZmFjdCkpO1xuICAgICAgICByZXR1cm4gKHZhbHVlcyQubGVuZ3RoID8gY29tYmluZUxhdGVzdCh2YWx1ZXMkKSA6IG9mKFtbXV0gYXMgKEZhY3RzIHwgdW5kZWZpbmVkKVtdKSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnBlcmZvcm1hbmNlTWFyayhydWxlLCAnc3RhcnQnKSksXG4gICAgICAgICAgICBtYXAoKFtvbGRGYWN0VmFsdWVzLCBmYWN0VmFsdWVzXSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBvdXRwdXQ6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0ID0ge2FjdGlvbnM6IHVuZGVmaW5lZH07XG5cbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuYWN0aW9ucyA9IHRoaXMuZXZhbHVhdGVSdWxlKHJ1bGUsIGlucHV0RmFjdHMucmVkdWNlPFJlY29yZDxzdHJpbmcsIEZhY3RzIHwgdW5kZWZpbmVkPj4oKGFjYywgaWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICBhY2NbaWRdID0gZmFjdFZhbHVlcyFbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9LCB7fSksIHJ1bnRpbWVGYWN0VmFsdWVzKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBvdXRwdXQuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnJ1bGVzRW5naW5lLmRlYnVnTW9kZSkge1xuICAgICAgICAgICAgICAgIG91dHB1dC5ldmFsdWF0aW9uID0gaGFuZGxlUnVsZUV2YWx1YXRpb25EZWJ1Zyh7IC4uLnJ1bGUsIGlucHV0RmFjdHMgfSwgdGhpcy5ydWxlc2V0Lm5hbWUsIG91dHB1dC5hY3Rpb25zLCBvdXRwdXQuZXJyb3IsIHJ1bnRpbWVGYWN0VmFsdWVzLCBmYWN0VmFsdWVzLCBvbGRGYWN0VmFsdWVzKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvdXRwdXQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmxvZ2dlcj8uZXJyb3Iob3V0cHV0LmVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmxvZ2dlcj8ud2FybihgU2tpcHBpbmcgcnVsZSAke3J1bGUubmFtZX0sIGFuZCB0aGUgYXNzb2NpYXRlZCBydWxlc2V0YCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMucGVyZm9ybWFuY2VNYXJrKHJ1bGUsICdlbmQnKSlcbiAgICAgICAgICApO1xuICAgICAgfSkpLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICBtYXAoKFtwcmV2UmVzLCBjdXJyUmVzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnNMaXN0cyA9IGN1cnJSZXMhLm1hcChyID0+IHIuYWN0aW9ucyk7XG4gICAgICAgICAgY29uc3QgYWxsRXhlY3V0aW9uc1ZhbGlkID0gYWN0aW9uc0xpc3RzLmV2ZXJ5KChhY3Rpb25zKSA9PiAhIWFjdGlvbnMpO1xuXG4gICAgICAgICAgbGV0IGV4ZWNJbmZvOiB7XG4gICAgICAgICAgICBleGVjdXRpb25Db3VudGVyPzogbnVtYmVyO1xuICAgICAgICAgICAgYWN0aW9uc0xpc3RzOiBBY3Rpb25CbG9ja1tdW107XG4gICAgICAgICAgICBydWxlc2V0T3V0cHV0RXhlY3V0aW9uPzogUnVsZUV2YWx1YXRpb25bXTtcbiAgICAgICAgICAgIGFsbEV4ZWN1dGlvbnNWYWxpZD86IGJvb2xlYW47XG4gICAgICAgICAgICBydWxlc2V0VHJpZ2dlcnM/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj47XG4gICAgICAgICAgfSA9IHthY3Rpb25zTGlzdHM6IChhbGxFeGVjdXRpb25zVmFsaWQgPyBhY3Rpb25zTGlzdHMgOiBbW11dKSBhcyBBY3Rpb25CbG9ja1tdW119O1xuXG4gICAgICAgICAgaWYgKHRoaXMucnVsZXNFbmdpbmUuZW5naW5lRGVidWcpIHtcbiAgICAgICAgICAgIGV4ZWNJbmZvID0ge1xuICAgICAgICAgICAgICAuLi5leGVjSW5mbyxcbiAgICAgICAgICAgICAgLi4udGhpcy5ydWxlc0VuZ2luZS5lbmdpbmVEZWJ1Zy5oYW5kbGVEZWJ1Z1J1bGVzZXRFeGVjdXRpb25JbmZvKFxuICAgICAgICAgICAgICAgIGN1cnJSZXMhLCBwcmV2UmVzLCBhbGxFeGVjdXRpb25zVmFsaWQsIHJ1bGVzZXRJbnB1dEZhY3RzLCBydW50aW1lRmFjdFZhbHVlcywgKyt0aGlzLmV4ZWN1dGlvbkNvdW50ZXIsIHRoaXMucnVsZXNldClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGVjSW5mbztcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0QWN0aW9ucyA9IChbXSBhcyBBY3Rpb25CbG9ja1tdKS5jb25jYXQoLi4ub3V0cHV0LmFjdGlvbnNMaXN0cyk7XG5cbiAgICAgICAgICBpZiAodGhpcy5ydWxlc0VuZ2luZS5lbmdpbmVEZWJ1ZyAmJiBvdXRwdXQuYWxsRXhlY3V0aW9uc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmVuZ2luZURlYnVnLmFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudCh0aGlzLnJ1bGVzZXQsIG91dHB1dC5leGVjdXRpb25Db3VudGVyISxcbiAgICAgICAgICAgICAgcnVsZXNldElucHV0RmFjdHMsIG91dHB1dEFjdGlvbnMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBvdXRwdXQucnVsZXNldFRyaWdnZXJzISxcbiAgICAgICAgICAgICAgb3V0cHV0LnJ1bGVzZXRPdXRwdXRFeGVjdXRpb24hKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb3V0cHV0QWN0aW9ucztcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBwcmV2Lmxlbmd0aCA9PT0gMCAmJiBjdXJyLmxlbmd0aCA9PT0gMClcbiAgICAgICk7XG4gICAgfSksIHNoYXJlUmVwbGF5KHtidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZX0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5ydWxlc2V0LmlkLFxuICAgICAgdmFsaWRpdHlSYW5nZTogdGhpcy5ydWxlc2V0LnZhbGlkaXR5UmFuZ2UsXG4gICAgICBsaW5rZWRDb21wb25lbnQ6IHRoaXMucnVsZXNldC5saW5rZWRDb21wb25lbnQsXG4gICAgICBydWxlc1Jlc3VsdHNTdWJqZWN0JDogcmVzdWx0JFxuICAgIH0gYXMgRW5naW5lUnVsZXNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbHVnIHJ1bGVzZXQgdG8gZmFjdCBzdHJlYW1zIGFuZCB0cmlnZ2VyIGEgZmlyc3QgZXZhbHVhdGlvblxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBtYWRlIHRvIGJlIGFjY2Vzc2libGUgZnJvbSBPdXRzaWRlIG9mIHRoZSBjbGFzcywgd2lsbCBiZSByZW1vdmVkIGluIHYxMFxuICAgKi9cbiAgcHVibGljIHByZXBhcmVSdWxlc2V0KCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdSdWxlc2V0KCk7XG4gIH1cbn1cbiJdfQ==
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1leGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmdpbmUvcnVsZXNldC1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUI7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUk1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3JCLE1BQU0scUJBQXFCLENBQUM7QUFlN0IsTUFBTSxPQUFPLGVBQWU7SUFtQjFCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWdCLEVBQUUsV0FBd0I7UUFQOUMscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBUTNCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxxQkFBcUIsQ0FBQyxhQUE2RCxFQUFFLGNBQTJCO1FBQ3RILElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRTtZ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RSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3pDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7WUFDN0Msb0JBQW9CLEVBQUUsT0FBTztTQUNiLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFJ1bGVzZXQgZXhlY3V0b3IgKi9cbmltcG9ydCB7IEpTT05QYXRoIH0gZnJvbSAnanNvbnBhdGgtcGx1cyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgcGFpcndpc2UsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaGFuZGxlUnVsZUV2YWx1YXRpb25EZWJ1ZyB9IGZyb20gJy4vZGVidWcvaGVscGVycyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGVzRW5naW5lIH0gZnJvbSAnLi9lbmdpbmUnO1xuaW1wb3J0IHR5cGUgeyBGYWN0cyB9IGZyb20gJy4vZmFjdCc7XG5pbXBvcnQgeyBFbmdpbmVSdWxlc2V0LCBFdmFsdWF0aW9uUmVhc29uLCBSdWxlRXZhbHVhdGlvbiwgUnVsZUV2YWx1YXRpb25PdXRwdXQgfSBmcm9tICcuL2VuZ2luZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZXhlY3V0ZU9wZXJhdG9yIH0gZnJvbSAnLi9vcGVyYXRvci9vcGVyYXRvci5oZWxwZXJzJztcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi9vcGVyYXRvci9vcGVyYXRvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgaXNBbGxDb25kaXRpb25zLFxuICBpc0NvbmRpdGlvblByb3BlcnRpZXMsXG4gIGlzTm90Q29uZGl0aW9uLFxuICBpc09wZXJhbmRGYWN0LFxuICBpc09wZXJhbmRMaXRlcmFsLFxuICBpc09wZXJhbmRSdW50aW1lRmFjdFxufSBmcm9tICcuL3J1bGUvcnVsZS5oZWxwZXJzJztcbmltcG9ydCB7XG4gIEFjdGlvbkJsb2NrLFxuICBBY3Rpb25TZXRUZW1wb3JhcnlGYWN0QmxvY2ssXG4gIEFsbEJsb2NrLFxuICBHZW5lcmljT3BlcmFuZCxcbiAgSWZFbHNlQmxvY2ssXG4gIE5lc3RlZENvbmRpdGlvbixcbiAgUnVsZSxcbiAgUnVsZXNldFxufSBmcm9tICcuL3N0cnVjdHVyZSc7XG5cbi8qKiBUeXBlIG9mIHRoZSByZXRyaWV2ZSBmYWN0IGZ1bmN0aW9uICovXG5leHBvcnQgdHlwZSBSZXRyaWV2ZUZhY3RGdW5jVHlwZSA9IDxUID0gdW5rbm93bj4gKGlkOiBzdHJpbmcpID0+IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBSdWxlc2V0RXhlY3V0b3Ige1xuXG4gIC8qKiByZXRyaWV2ZUZhY3RGdW5jICovXG4gIHByb3RlY3RlZCByZWFkb25seSBydWxlc0VuZ2luZTogUnVsZXNFbmdpbmU7XG5cbiAgLyoqIE1hcCBvZiBhdmFpbGFibGUgb3BlcmF0b3JzICovXG4gIHByb3RlY3RlZCByZWFkb25seSBvcGVyYXRvcnM6IFJlY29yZDxzdHJpbmcsIE9wZXJhdG9yPHVua25vd24sIHVua25vd24+PjtcblxuICAvKiogRGVsYXkgYmVmb3JlIGZhY3Qgc3RyZWFtIGRlZmF1bHRpbmcgdmFsdWUgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZhY3REZWZhdWx0RGVsYXk/OiBudW1iZXI7XG5cbiAgLyoqIFJ1bGVzZXQgYXNzb2NpYXRlZCB0byB0aGUgY3VycmVudCBleGVjdXRvciovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc2V0OiBSdWxlc2V0O1xuXG4gIC8qKiBSdWxlc2V0IHBsdWdnZWQgdG8gdGhlIGZhY3Qgc3RyZWFtLCB0aGF0IGNvbnRhaW5zIGFjdGlvbnMgc3RyZWFtIHJlc3VsdCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lUnVsZXNldDogRW5naW5lUnVsZXNldDtcblxuICBwcml2YXRlIGV4ZWN1dGlvbkNvdW50ZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcnVsZXNldCBleGVjdXRvclxuICAgKiBAcGFyYW0gcnVsZXNldCBSdWxlc2V0IHRvIGV2YWx1YXRlXG4gICAqIEBwYXJhbSBydWxlc0VuZ2luZSBJbnN0YW5jZSBvZiB0aGUgcnVsZXMgZW5naW5lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihydWxlc2V0OiBSdWxlc2V0LCBydWxlc0VuZ2luZTogUnVsZXNFbmdpbmUpIHtcbiAgICB0aGlzLnJ1bGVzZXQgPSBydWxlc2V0O1xuICAgIHRoaXMucnVsZXNFbmdpbmUgPSBydWxlc0VuZ2luZTtcbiAgICB0aGlzLm9wZXJhdG9ycyA9IHJ1bGVzRW5naW5lLm9wZXJhdG9ycztcbiAgICB0aGlzLmVuZ2luZVJ1bGVzZXQgPSB0aGlzLnBsdWdSdWxlc2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZXhwbG9yZXMgYSBydWxlIHRvIGlkZW50aWZ5IGFuZCBjb2xsZWN0IGlucHV0IGZhY3RzLlxuICAgKiBJbnB1dCBmYWN0cyBhcmUgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgJ0ZBQ1QnIHR5cGUgYW5kIG9wZXJhdG9yLXNwZWNpZmljIGltcGxpY2l0IGRlcGVuZGVuY2llcy5cbiAgICogQHBhcmFtIGN1cnJlbnRPYmplY3QgVGhlIGN1cnJlbnQgb2JqZWN0IGJlaW5nIGV4cGxvcmVkLlxuICAgKiBAcGFyYW0gcnVsZUlucHV0RmFjdHMgQSBzZXQgdG8gc3RvcmUgdGhlIGlkZW50aWZpZWQgaW5wdXQgZmFjdHMgZm9yIHRoZSBydWxlLlxuICAgKi9cbiAgcHJpdmF0ZSBjb2xsZWN0UnVsZUlucHV0RmFjdHMoY3VycmVudE9iamVjdDogQWxsQmxvY2sgfCBOZXN0ZWRDb25kaXRpb24gfCBOZXN0ZWRDb25kaXRpb25bXSwgcnVsZUlucHV0RmFjdHM6IFNldDxzdHJpbmc+KSB7XG4gICAgaWYgKGN1cnJlbnRPYmplY3QgJiYgaXNPcGVyYW5kRmFjdChjdXJyZW50T2JqZWN0KSkge1xuICAgICAgcnVsZUlucHV0RmFjdHMuYWRkKGN1cnJlbnRPYmplY3QudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50T2JqZWN0KSkge1xuICAgICAgY3VycmVudE9iamVjdC5mb3JFYWNoKChlbGVtKSA9PiB0aGlzLmNvbGxlY3RSdWxlSW5wdXRGYWN0cyhlbGVtLCBydWxlSW5wdXRGYWN0cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50T2JqZWN0KSB7XG4gICAgICAgIGlmICgoa2V5ID09PSAnb3BlcmF0b3InKSAmJiBpc0NvbmRpdGlvblByb3BlcnRpZXMoY3VycmVudE9iamVjdCkpIHtcbiAgICAgICAgICBjb25zdCBvcCA9IHRoaXMub3BlcmF0b3JzW2N1cnJlbnRPYmplY3Rba2V5XV07XG4gICAgICAgICAgaWYgKG9wICYmIG9wLmZhY3RJbXBsaWNpdERlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgb3AuZmFjdEltcGxpY2l0RGVwZW5kZW5jaWVzLmZvckVhY2goZGVwID0+IHJ1bGVJbnB1dEZhY3RzLmFkZChkZXApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGN1cnJlbnRPYmplY3Rba2V5IGFzIGtleW9mIChBbGxCbG9jayB8IE5lc3RlZENvbmRpdGlvbildID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRoaXMuY29sbGVjdFJ1bGVJbnB1dEZhY3RzKGN1cnJlbnRPYmplY3Rba2V5IGFzIGtleW9mIChBbGxCbG9jayB8IE5lc3RlZENvbmRpdGlvbildLCBydWxlSW5wdXRGYWN0cyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwb3J0IHBlcmZvcm1hbmNlIG1hcmsgZm9yIGEgcnVsZSBydW5cbiAgICogQHBhcmFtIHJ1bGUgUnVsZSB0byBtZWFzdXJlXG4gICAqIEBwYXJhbSBzdGF0dXMgc3RhdHVzIG9mIHRoZSBydWxlIGV2YWx1YXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBwZXJmb3JtYW5jZU1hcmsocnVsZTogUnVsZSwgc3RhdHVzOiAnc3RhcnQnIHwgJ2VuZCcpIHtcbiAgICBpZiAodGhpcy5ydWxlc0VuZ2luZS5wZXJmb3JtYW5jZSkge1xuICAgICAgY29uc3QgbWFya05hbWUgPSBgcnVsZXMtZW5naW5lOiR7dGhpcy5ydWxlc0VuZ2luZS5ydWxlc0VuZ2luZUluc3RhbmNlTmFtZX06JHt0aGlzLnJ1bGVzZXQubmFtZX06JHtydWxlLm5hbWV9YDtcbiAgICAgIHRoaXMucnVsZXNFbmdpbmUucGVyZm9ybWFuY2UubWFyayhgJHttYXJrTmFtZX06JHtzdGF0dXN9YCk7XG4gICAgICBpZiAoc3RhdHVzID09PSAnZW5kJykge1xuICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLnBlcmZvcm1hbmNlLm1lYXN1cmUobWFya05hbWUsIGAke21hcmtOYW1lfTpzdGFydGAsIGAke21hcmtOYW1lfTplbmRgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IG9wZXJhbmQgdmFsdWUgc3RyZWFtIGFjY29yZGluZyB0byBpdHMgdHlwZVxuICAgKiBAcGFyYW0gb3BlcmFuZCBvcGVyYW5kIG9mIHRoZSBjb25kaXRpb25cbiAgICogQHBhcmFtIGZhY3RzVmFsdWVcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0T3BlcmFuZFZhbHVlKG9wZXJhbmQ6IEdlbmVyaWNPcGVyYW5kIHwgdW5kZWZpbmVkLCBmYWN0c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cyB8IHVuZGVmaW5lZD4sIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4pOiB1bmtub3duIHtcbiAgICBpZiAodHlwZW9mIG9wZXJhbmQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kRmFjdChvcGVyYW5kKSkge1xuICAgICAgY29uc3QgZmFjdFZhbHVlID0gZmFjdHNWYWx1ZVtvcGVyYW5kLnZhbHVlXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICByZXR1cm4gb3BlcmFuZC5wYXRoID8gZmFjdFZhbHVlICYmIEpTT05QYXRoKHt3cmFwOiBmYWxzZSwganNvbjogZmFjdFZhbHVlLCBwYXRoOiBvcGVyYW5kLnBhdGh9KSA6IGZhY3RWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZExpdGVyYWwob3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiBvcGVyYW5kLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kUnVudGltZUZhY3Qob3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiBydW50aW1lRmFjdFZhbHVlc1tvcGVyYW5kLnZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgcm9vdCBydWxlIGZyb20gYSBydWxlc2V0LCBhbmQgcmV0dXJuIHRoZSBhc3NvY2lhdGVkIGFjdGlvbnMgdG8gYmUgcHJvY2Vzc2VkXG4gICAqIFdpbGwgYWxzbyB1cGRhdGUgdGhlIHJ1bnRpbWVGYWN0VmFsdWVzIG1hcCB0aGF0IGlzIHJ1bGVzZXQgd2lzZVxuICAgKiBOb3RlIHRoYXQgcnVudGltZUZhY3RWYWx1ZXMgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBydWxlXG4gICAqIEBwYXJhbSBmYWN0c1ZhbHVlXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZXZhbHVhdGVSdWxlKHJ1bGU6IFJ1bGUsIGZhY3RzVmFsdWU6IFJlY29yZDxzdHJpbmcsIEZhY3RzIHwgdW5kZWZpbmVkPiwgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPikge1xuICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQmxvY2socnVsZS5yb290RWxlbWVudCwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgYSBibG9jayB0byBleHRyYWN0IGFsbCB0aGUgYWN0aW9ucyBrZWVwaW5nIHRoZSBvcmRlclxuICAgKiBOb3RlIHRoYXQgcnVudGltZUZhY3RWYWx1ZXMgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwYXJhbSBhY3Rpb25zXG4gICAqIEBwYXJhbSBmYWN0c1ZhbHVlXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlcyBUaGlzIHJ1bnRpbWUgZmFjdCBtYXAgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBldmFsdWF0ZUJsb2NrKGVsZW1lbnQ6IEFsbEJsb2NrLCBmYWN0c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cyB8IHVuZGVmaW5lZD4sIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sIGFjdGlvbnM6IEFjdGlvbkJsb2NrW10gPSBbXSkge1xuICAgIGlmICh0aGlzLmlzSWZFbHNlQmxvY2soZWxlbWVudCkpIHtcbiAgICAgICghZWxlbWVudC5jb25kaXRpb24gfHwgdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihlbGVtZW50LmNvbmRpdGlvbiwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpID8gZWxlbWVudC5zdWNjZXNzRWxlbWVudHMgOiBlbGVtZW50LmZhaWx1cmVFbGVtZW50cylcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnRSZXN1bHQpID0+IHRoaXMuZXZhbHVhdGVCbG9jayhlbGVtZW50UmVzdWx0LCBmYWN0c1ZhbHVlLCBydW50aW1lRmFjdFZhbHVlcywgYWN0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGlvbkJsb2NrKGVsZW1lbnQpKSB7XG4gICAgICBpZiAodGhpcy5pc0FjdGlvblNldFRlbXBvcmFyeUZhY3RCbG9jayhlbGVtZW50KSkge1xuICAgICAgICBydW50aW1lRmFjdFZhbHVlc1tlbGVtZW50LmZhY3RdID0gZWxlbWVudC52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgSWZFbHNlIGJsb2NrXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpc0lmRWxzZUJsb2NrKGVsZW1lbnQ6IEFsbEJsb2NrKTogZWxlbWVudCBpcyBJZkVsc2VCbG9jayB7XG4gICAgcmV0dXJuIGVsZW1lbnQuYmxvY2tUeXBlID09PSAnSUZfRUxTRSc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGFuIGFjdGlvbiBibG9ja1xuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNBY3Rpb25CbG9jayhlbGVtZW50OiBBbGxCbG9jayk6IGVsZW1lbnQgaXMgQWN0aW9uQmxvY2sge1xuICAgIHJldHVybiAnZWxlbWVudFR5cGUnIGluIGVsZW1lbnQgJiYgZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0FDVElPTic7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBhY3Rpb24gc2V0cyBhIHRlbXBvcmFyeSBmYWN0XG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpc0FjdGlvblNldFRlbXBvcmFyeUZhY3RCbG9jayhlbGVtZW50OiBBY3Rpb25CbG9jayk6IGVsZW1lbnQgaXMgQWN0aW9uU2V0VGVtcG9yYXJ5RmFjdEJsb2NrIHtcbiAgICByZXR1cm4gJ2FjdGlvblR5cGUnIGluIGVsZW1lbnQgJiYgZWxlbWVudC5hY3Rpb25UeXBlID09PSAnU0VUX0ZBQ1QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIGEgY29uZGl0aW9uIGJsb2NrXG4gICAqIEBwYXJhbSBuZXN0ZWRDb25kaXRpb25cbiAgICogQHBhcmFtIGZhY3RzVmFsdWVcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBldmFsdWF0ZUNvbmRpdGlvbihuZXN0ZWRDb25kaXRpb246IE5lc3RlZENvbmRpdGlvbiwgZmFjdHNWYWx1ZTogUmVjb3JkPHN0cmluZywgRmFjdHMgfCB1bmRlZmluZWQ+LCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+KTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQ29uZGl0aW9uUHJvcGVydGllcyhuZXN0ZWRDb25kaXRpb24pKSB7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzW25lc3RlZENvbmRpdGlvbi5vcGVyYXRvcl07XG4gICAgICBpZiAob3BlcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gb3BlcmF0b3IgOiAke25lc3RlZENvbmRpdGlvbi5vcGVyYXRvcn0sIHNraXBwaW5nIHRoZSBydWxlIGV4ZWN1dGlvbi4uLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV4ZWN1dGVPcGVyYXRvcih0aGlzLmdldE9wZXJhbmRWYWx1ZShuZXN0ZWRDb25kaXRpb24ubGhzLCBmYWN0c1ZhbHVlLCBydW50aW1lRmFjdFZhbHVlcyksXG4gICAgICAgIHRoaXMuZ2V0T3BlcmFuZFZhbHVlKCdyaHMnIGluIG5lc3RlZENvbmRpdGlvbiA/IG5lc3RlZENvbmRpdGlvbi5yaHMgOiB1bmRlZmluZWQsIGZhY3RzVmFsdWUsIHJ1bnRpbWVGYWN0VmFsdWVzKSwgb3BlcmF0b3IsIGZhY3RzVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChpc05vdENvbmRpdGlvbihuZXN0ZWRDb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gIXRoaXMuZXZhbHVhdGVDb25kaXRpb24obmVzdGVkQ29uZGl0aW9uLm5vdCwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpO1xuICAgIH1cbiAgICBpZiAobmVzdGVkQ29uZGl0aW9uLmFsbCB8fCBuZXN0ZWRDb25kaXRpb24uYW55KSB7XG4gICAgICBjb25zdCBldmFsdWF0ZSA9IChjb25kaXRpb246IE5lc3RlZENvbmRpdGlvbikgPT4gdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihjb25kaXRpb24sIGZhY3RzVmFsdWUsIHJ1bnRpbWVGYWN0VmFsdWVzKTtcbiAgICAgIHJldHVybiBpc0FsbENvbmRpdGlvbnMobmVzdGVkQ29uZGl0aW9uKSA/IG5lc3RlZENvbmRpdGlvbi5hbGwuZXZlcnkoZXZhbHVhdGUpIDogbmVzdGVkQ29uZGl0aW9uLmFueS5zb21lKGV2YWx1YXRlKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbmRpdGlvbiBibG9jayBtZXQgOiAke0pTT04uc3RyaW5naWZ5KG5lc3RlZENvbmRpdGlvbil9YCk7XG4gIH1cblxuICAvKipcbiAgICogUGx1ZyBydWxlc2V0IHRvIGZhY3Qgc3RyZWFtcyBhbmQgdHJpZ2dlciBhIGZpcnN0IGV2YWx1YXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBwbHVnUnVsZXNldCgpIHtcbiAgICBjb25zdCBpbnB1dEZhY3RzRm9yUnVsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gICAgY29uc3QgZmluZFJ1bGVJbnB1dEZhY3RzID0gKG9iajogQWxsQmxvY2spOiBzdHJpbmdbXSA9PiB7XG4gICAgICBjb25zdCBydWxlSW5wdXRGYWN0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgdGhpcy5jb2xsZWN0UnVsZUlucHV0RmFjdHMob2JqLCBydWxlSW5wdXRGYWN0cyk7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbShydWxlSW5wdXRGYWN0cyk7XG4gICAgfTtcbiAgICB0aGlzLnJ1bGVzZXQucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4gaW5wdXRGYWN0c0ZvclJ1bGVbcnVsZS5pZF0gPSBmaW5kUnVsZUlucHV0RmFjdHMocnVsZS5yb290RWxlbWVudCkpO1xuICAgIGNvbnN0IGZhY3RzVGhhdFJlcnVuRXZlcnl0aGluZzogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLnJ1bGVzZXQucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgaWYgKHJ1bGUub3V0cHV0UnVudGltZUZhY3RzLmxlbmd0aCA+IDAgfHwgcnVsZS5pbnB1dFJ1bnRpbWVGYWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZhY3RzVGhhdFJlcnVuRXZlcnl0aGluZy5wdXNoKC4uLmlucHV0RmFjdHNGb3JSdWxlW3J1bGUuaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlckZ1bGwkOiBPYnNlcnZhYmxlPHVua25vd25bXT4gPSBmYWN0c1RoYXRSZXJ1bkV2ZXJ5dGhpbmcubGVuZ3RoID09PSAwID8gb2YoW10pIDpcbiAgICAgIGNvbWJpbmVMYXRlc3QoZmFjdHNUaGF0UmVydW5FdmVyeXRoaW5nLm1hcCgoZmFjdCkgPT4gdGhpcy5ydWxlc0VuZ2luZS5yZXRyaWV2ZU9yQ3JlYXRlRmFjdFN0cmVhbShmYWN0KSkpO1xuICAgIGNvbnN0IHJlc3VsdCQgPSB0cmlnZ2VyRnVsbCQucGlwZShzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgY29uc3QgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPiA9IHt9O1xuXG4gICAgICBsZXQgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdO1xuICAgICAgaWYgKHRoaXMucnVsZXNFbmdpbmUuZGVidWdNb2RlKSB7XG4gICAgICAgIHJ1bGVzZXRJbnB1dEZhY3RzID0gQXJyYXkuZnJvbSh0aGlzLnJ1bGVzZXQucnVsZXMucmVkdWNlKChhY2MsIHJ1bGUpID0+IHtcbiAgICAgICAgICBpbnB1dEZhY3RzRm9yUnVsZVtydWxlLmlkXS5mb3JFYWNoKChmYWN0TmFtZSkgPT4gYWNjLmFkZChmYWN0TmFtZSkpO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIG5ldyBTZXQ8c3RyaW5nPigpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHRoaXMucnVsZXNldC5ydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRGYWN0cyA9IGlucHV0RmFjdHNGb3JSdWxlW3J1bGUuaWRdO1xuICAgICAgICBjb25zdCB2YWx1ZXMkID0gaW5wdXRGYWN0cy5tYXAoKGZhY3QpID0+IHRoaXMucnVsZXNFbmdpbmUucmV0cmlldmVPckNyZWF0ZUZhY3RTdHJlYW0oZmFjdCkpO1xuICAgICAgICByZXR1cm4gKHZhbHVlcyQubGVuZ3RoID8gY29tYmluZUxhdGVzdCh2YWx1ZXMkKSA6IG9mKFtbXV0gYXMgKEZhY3RzIHwgdW5kZWZpbmVkKVtdKSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnBlcmZvcm1hbmNlTWFyayhydWxlLCAnc3RhcnQnKSksXG4gICAgICAgICAgICBtYXAoKFtvbGRGYWN0VmFsdWVzLCBmYWN0VmFsdWVzXSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBvdXRwdXQ6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0ID0ge2FjdGlvbnM6IHVuZGVmaW5lZH07XG5cbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuYWN0aW9ucyA9IHRoaXMuZXZhbHVhdGVSdWxlKHJ1bGUsIGlucHV0RmFjdHMucmVkdWNlPFJlY29yZDxzdHJpbmcsIEZhY3RzIHwgdW5kZWZpbmVkPj4oKGFjYywgaWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICBhY2NbaWRdID0gZmFjdFZhbHVlcyFbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9LCB7fSksIHJ1bnRpbWVGYWN0VmFsdWVzKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBvdXRwdXQuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnJ1bGVzRW5naW5lLmRlYnVnTW9kZSkge1xuICAgICAgICAgICAgICAgIG91dHB1dC5ldmFsdWF0aW9uID0gaGFuZGxlUnVsZUV2YWx1YXRpb25EZWJ1Zyh7IC4uLnJ1bGUsIGlucHV0RmFjdHMgfSwgdGhpcy5ydWxlc2V0Lm5hbWUsIG91dHB1dC5hY3Rpb25zLCBvdXRwdXQuZXJyb3IsIHJ1bnRpbWVGYWN0VmFsdWVzLCBmYWN0VmFsdWVzLCBvbGRGYWN0VmFsdWVzKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvdXRwdXQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmxvZ2dlcj8uZXJyb3Iob3V0cHV0LmVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmxvZ2dlcj8ud2FybihgU2tpcHBpbmcgcnVsZSAke3J1bGUubmFtZX0sIGFuZCB0aGUgYXNzb2NpYXRlZCBydWxlc2V0YCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMucGVyZm9ybWFuY2VNYXJrKHJ1bGUsICdlbmQnKSlcbiAgICAgICAgICApO1xuICAgICAgfSkpLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICBtYXAoKFtwcmV2UmVzLCBjdXJyUmVzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnNMaXN0cyA9IGN1cnJSZXMhLm1hcChyID0+IHIuYWN0aW9ucyk7XG4gICAgICAgICAgY29uc3QgYWxsRXhlY3V0aW9uc1ZhbGlkID0gYWN0aW9uc0xpc3RzLmV2ZXJ5KChhY3Rpb25zKSA9PiAhIWFjdGlvbnMpO1xuXG4gICAgICAgICAgbGV0IGV4ZWNJbmZvOiB7XG4gICAgICAgICAgICBleGVjdXRpb25Db3VudGVyPzogbnVtYmVyO1xuICAgICAgICAgICAgYWN0aW9uc0xpc3RzOiBBY3Rpb25CbG9ja1tdW107XG4gICAgICAgICAgICBydWxlc2V0T3V0cHV0RXhlY3V0aW9uPzogUnVsZUV2YWx1YXRpb25bXTtcbiAgICAgICAgICAgIGFsbEV4ZWN1dGlvbnNWYWxpZD86IGJvb2xlYW47XG4gICAgICAgICAgICBydWxlc2V0VHJpZ2dlcnM/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj47XG4gICAgICAgICAgfSA9IHthY3Rpb25zTGlzdHM6IChhbGxFeGVjdXRpb25zVmFsaWQgPyBhY3Rpb25zTGlzdHMgOiBbW11dKSBhcyBBY3Rpb25CbG9ja1tdW119O1xuXG4gICAgICAgICAgaWYgKHRoaXMucnVsZXNFbmdpbmUuZW5naW5lRGVidWcpIHtcbiAgICAgICAgICAgIGV4ZWNJbmZvID0ge1xuICAgICAgICAgICAgICAuLi5leGVjSW5mbyxcbiAgICAgICAgICAgICAgLi4udGhpcy5ydWxlc0VuZ2luZS5lbmdpbmVEZWJ1Zy5oYW5kbGVEZWJ1Z1J1bGVzZXRFeGVjdXRpb25JbmZvKFxuICAgICAgICAgICAgICAgIGN1cnJSZXMhLCBwcmV2UmVzLCBhbGxFeGVjdXRpb25zVmFsaWQsIHJ1bGVzZXRJbnB1dEZhY3RzLCBydW50aW1lRmFjdFZhbHVlcywgKyt0aGlzLmV4ZWN1dGlvbkNvdW50ZXIsIHRoaXMucnVsZXNldClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGVjSW5mbztcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0QWN0aW9ucyA9IChbXSBhcyBBY3Rpb25CbG9ja1tdKS5jb25jYXQoLi4ub3V0cHV0LmFjdGlvbnNMaXN0cyk7XG5cbiAgICAgICAgICBpZiAodGhpcy5ydWxlc0VuZ2luZS5lbmdpbmVEZWJ1ZyAmJiBvdXRwdXQuYWxsRXhlY3V0aW9uc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmVuZ2luZURlYnVnLmFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudCh0aGlzLnJ1bGVzZXQsIG91dHB1dC5leGVjdXRpb25Db3VudGVyISxcbiAgICAgICAgICAgICAgcnVsZXNldElucHV0RmFjdHMsIG91dHB1dEFjdGlvbnMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBvdXRwdXQucnVsZXNldFRyaWdnZXJzISxcbiAgICAgICAgICAgICAgb3V0cHV0LnJ1bGVzZXRPdXRwdXRFeGVjdXRpb24hKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb3V0cHV0QWN0aW9ucztcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBwcmV2Lmxlbmd0aCA9PT0gMCAmJiBjdXJyLmxlbmd0aCA9PT0gMClcbiAgICAgICk7XG4gICAgfSksIHNoYXJlUmVwbGF5KHtidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZX0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5ydWxlc2V0LmlkLFxuICAgICAgdmFsaWRpdHlSYW5nZTogdGhpcy5ydWxlc2V0LnZhbGlkaXR5UmFuZ2UsXG4gICAgICBsaW5rZWRDb21wb25lbnQ6IHRoaXMucnVsZXNldC5saW5rZWRDb21wb25lbnQsXG4gICAgICBydWxlc1Jlc3VsdHNTdWJqZWN0JDogcmVzdWx0JFxuICAgIH0gYXMgRW5naW5lUnVsZXNldDtcbiAgfVxufVxuIl19
@@ -1747,13 +1747,6 @@ class RulesetExecutor {
1747
1747
  rulesResultsSubject$: result$
1748
1748
  };
1749
1749
  }
1750
- /**
1751
- * Plug ruleset to fact streams and trigger a first evaluation
1752
- * @deprecated This function is not made to be accessible from Outside of the class, will be removed in v10
1753
- */
1754
- prepareRuleset() {
1755
- return this.plugRuleset();
1756
- }
1757
1750
  }
1758
1751
 
1759
1752
  /** Rules engine */