@wolsok/thanos 1.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm2020/index.mjs CHANGED
@@ -3,8 +3,8 @@
3
3
  */
4
4
  export * from './lib/ws-thanos.service';
5
5
  export * from './lib/ws-thanos.directive';
6
- export * from './lib/ws-thanos.module';
7
- export * from './lib/ws-thanos.options';
8
6
  export * from './lib/ws-thanos-options.token';
7
+ export * from './lib/ws-thanos.options';
9
8
  export * from './lib/create-ws-thanos-options';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHdzLXRoYW5vc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3Muc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3MuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dzLXRoYW5vcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd3MtdGhhbm9zLm9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd3MtdGhhbm9zLW9wdGlvbnMudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zJztcbiJdfQ==
9
+ export * from './lib/simplex-noise';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygd3MtdGhhbm9zXHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3Muc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dzLXRoYW5vcy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dzLXRoYW5vcy5vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2ltcGxleC1ub2lzZSc7XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxleC1ub2lzZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wdWJsaWMvd3MtdGhhbm9zL3NyYy9saWIvc2ltcGxleC1ub2lzZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNpbXBsZXhOb2lzZU9wdGlvbnMge1xuICBhbXBsaXR1ZGU6IG51bWJlcjsgLy8gVGhlIGJhc2UgYW1wbGl0dWRlIChkZWZhdWx0OiAxLjApXG4gIGZyZXF1ZW5jeTogbnVtYmVyOyAvLyBUaGUgYmFzZSBmcmVxdWVuY3kgKGRlZmF1bHQ6IDEuMClcbiAgbWF4OiBudW1iZXI7IC8vIFRoZSBtYXhpbXVtIHNjYWxlZCB2YWx1ZSB0byByZXR1cm4gKGVmZmVjdGl2ZSBkZWZhdWx0OiAxLjApXG4gIG1pbjogbnVtYmVyOyAvLyBUaGUgbWluaW11bSBzY2FsZWQgdmFsdWUgdG8gcmV0dXJuIChlZmZlY3RpdmUgZGVmYXVsdDogLTEuMClcbiAgb2N0YXZlczogbnVtYmVyOyAvLyBJbnRlZ2VyOyB0aGUgbnVtYmVyIG9mIG9jdGF2ZXMgdG8gc3VtIGZvciBub2lzZSBnZW5lcmF0aW9uIChkZWZhdWx0OiAxKVxuICBwZXJzaXN0ZW5jZTogbnVtYmVyOyAvLyBUaGUgcGVyc2lzdGVuY2Ugb2YgYW1wbGl0dWRlIHBlciBvY3RhdmUgKGRlZmF1bHQ6IDAuNSlcbiAgcmFuZG9tOiAoKSA9PiBudW1iZXI7IC8vIEEgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmFuZG9tIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEgKGRlZmF1bHQ6IE1hdGgucmFuZG9tKVxufVxuIl19
@@ -1,45 +1,3 @@
1
- function createOptionsWithDefaults(options) {
2
- if (options != null) {
3
- if (options['amplitude'] && typeof options.amplitude !== 'number') {
4
- throw new Error('options.amplitude must be a number');
5
- }
6
- if (options['frequency'] && typeof options.frequency !== 'number') {
7
- throw new Error('options.frequency must be a number');
8
- }
9
- if (options['octaves'] &&
10
- (typeof options.octaves !== 'number' ||
11
- !isFinite(options.octaves) ||
12
- Math.floor(options.octaves) !== options.octaves)) {
13
- throw new Error('options.octaves must be an integer');
14
- }
15
- if (options['persistence'] && typeof options.persistence !== 'number') {
16
- throw new Error('options.persistence must be a number');
17
- }
18
- if (options['random'] && typeof options.random !== 'function') {
19
- throw new Error('options.random must be a function');
20
- }
21
- if (options['min'] && typeof options.min !== 'number') {
22
- throw new Error('options.min must be a number');
23
- }
24
- if (options['max'] && typeof options.max !== 'number') {
25
- throw new Error('options.max must be a number');
26
- }
27
- }
28
- const optionsResult = {
29
- amplitude: 1.0,
30
- frequency: 1.0,
31
- max: 1.0,
32
- min: -1.0,
33
- octaves: 1,
34
- persistence: 0.5,
35
- random: Math.random,
36
- ...options,
37
- };
38
- if (optionsResult.min > optionsResult.max) {
39
- throw new Error('min must be smaller max');
40
- }
41
- return optionsResult;
42
- }
43
1
  export class SimplexNoise {
44
2
  constructor(options) {
45
3
  this.memScale3D = {};
@@ -196,4 +154,46 @@ SimplexNoise.GRAD3D = [
196
154
  [0, 1, -1],
197
155
  [0, -1, -1],
198
156
  ];
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxleC1ub2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3NpbXBsZXgtbm9pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsU0FBUyx5QkFBeUIsQ0FBQyxPQUEwQjtJQUMzRCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7UUFDbkIsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksT0FBTyxPQUFPLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUN2RDtRQUVELElBQ0UsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNsQixDQUFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRO2dCQUNsQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ2xEO1lBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxPQUFPLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtZQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDekQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFO1lBQzdELE1BQU0sSUFBSSxL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LENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFFNUMsbUVBQW1FO1FBQ25FLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbkIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNuQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sR0FBRyxHQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sR0FBRyxHQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNFLG1EQUFtRDtRQUNuRCxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDN0MsTUFBTSxFQUFFLEdBQ04sRUFBRSxHQUFHLENBQUM7WUFDSixDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzdDLE1BQU0sRUFBRSxHQUNOLEVBQUUsR0FBRyxDQUFDO1lBQ0osQ0FBQyxDQUFDLEdBQUc7WUFDTCxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUM3QyxNQUFNLEVBQUUsR0FDTixFQUFFLEdBQUcsQ0FBQztZQUNKLENBQUMsQ0FBQyxHQUFHO1lBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDN0MsTUFBTSxFQUFFLEdBQ04sRUFBRSxHQUFHLENBQUM7WUFDSixDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekUsbUVBQW1FO1FBQ25FLGtEQUFrRDtRQUNsRCxPQUFPLGlCQUFpQixHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxVQUFrQjtRQUMxRCxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ3pELENBQUMsR0FBRyxVQUFVLENBQ2YsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQ25CLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxLQUFLO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDdEUsWUFBWSxJQUFJLFNBQVMsQ0FBQztZQUMxQixTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM5QixTQUFTLElBQUksQ0FBQyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7QUFsSk0sZUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFFZixtQkFBTSxHQUFHO0lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgYW1wbGl0dWRlOiBudW1iZXI7IC8vIFRoZSBiYXNlIGFtcGxpdHVkZSAoZGVmYXVsdDogMS4wKVxuICBmcmVxdWVuY3k6IG51bWJlcjsgLy8gVGhlIGJhc2UgZnJlcXVlbmN5IChkZWZhdWx0OiAxLjApXG4gIG1heDogbnVtYmVyOyAvLyBUaGUgbWF4aW11bSBzY2FsZWQgdmFsdWUgdG8gcmV0dXJuIChlZmZlY3RpdmUgZGVmYXVsdDogMS4wKVxuICBtaW46IG51bWJlcjsgLy8gVGhlIG1pbmltdW0gc2NhbGVkIHZhbHVlIHRvIHJldHVybiAoZWZmZWN0aXZlIGRlZmF1bHQ6IC0xLjApXG4gIG9jdGF2ZXM6IG51bWJlcjsgLy8gSW50ZWdlcjsgdGhlIG51bWJlciBvZiBvY3RhdmVzIHRvIHN1bSBmb3Igbm9pc2UgZ2VuZXJhdGlvbiAoZGVmYXVsdDogMSlcbiAgcGVyc2lzdGVuY2U6IG51bWJlcjsgLy8gVGhlIHBlcnNpc3RlbmNlIG9mIGFtcGxpdHVkZSBwZXIgb2N0YXZlIChkZWZhdWx0OiAwLjUpXG4gIHJhbmRvbTogKCkgPT4gbnVtYmVyOyAvLyBBIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJhbmRvbSB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxIChkZWZhdWx0OiBNYXRoLnJhbmRvbSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlT3B0aW9uc1dpdGhEZWZhdWx0cyhvcHRpb25zPzogUGFydGlhbDxPcHRpb25zPikge1xuICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgaWYgKG9wdGlvbnNbJ2FtcGxpdHVkZSddICYmIHR5cGVvZiBvcHRpb25zLmFtcGxpdHVkZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5hbXBsaXR1ZGUgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zWydmcmVxdWVuY3knXSAmJiB0eXBlb2Ygb3B0aW9ucy5mcmVxdWVuY3kgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMuZnJlcXVlbmN5IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBvcHRpb25zWydvY3RhdmVzJ10gJiZcbiAgICAgICh0eXBlb2Ygb3B0aW9ucy5vY3RhdmVzICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICAhaXNGaW5pdGUob3B0aW9ucy5vY3RhdmVzKSB8fFxuICAgICAgICBNYXRoLmZsb29yKG9wdGlvbnMub2N0YXZlcykgIT09IG9wdGlvbnMub2N0YXZlcylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5vY3RhdmVzIG11c3QgYmUgYW4gaW50ZWdlcicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zWydwZXJzaXN0ZW5jZSddICYmIHR5cGVvZiBvcHRpb25zLnBlcnNpc3RlbmNlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnBlcnNpc3RlbmNlIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uc1sncmFuZG9tJ10gJiYgdHlwZW9mIG9wdGlvbnMucmFuZG9tICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMucmFuZG9tIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zWydtaW4nXSAmJiB0eXBlb2Ygb3B0aW9ucy5taW4gIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMubWluIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uc1snbWF4J10gJiYgdHlwZW9mIG9wdGlvbnMubWF4ICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLm1heCBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uc1Jlc3VsdCA9IHtcbiAgICBhbXBsaXR1ZGU6IDEuMCxcbiAgICBmcmVxdWVuY3k6IDEuMCxcbiAgICBtYXg6IDEuMCxcbiAgICBtaW46IC0xLjAsXG4gICAgb2N0YXZlczogMSxcbiAgICBwZXJzaXN0ZW5jZTogMC41LFxuICAgIHJhbmRvbTogTWF0aC5yYW5kb20sXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcbiAgaWYgKG9wdGlvbnNSZXN1bHQubWluID4gb3B0aW9uc1Jlc3VsdC5tYXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgbWF4Jyk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNSZXN1bHQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGV4Tm9pc2Uge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxPcHRpb25zPikge1xuICAgIGNvbnN0IHsgbWluLCBtYXgsIHJhbmRvbSwgYW1wbGl0dWRlLCBmcmVxdWVuY3ksIG9jdGF2ZXMsIHBlcnNpc3RlbmNlIH0gPVxuICAgICAgY3JlYXRlT3B0aW9uc1dpdGhEZWZhdWx0cyhvcHRpb25zKTtcblxuICAgIHRoaXMucmFuZG9tID0gcmFuZG9tO1xuICAgIHRoaXMuYW1wbGl0dWRlID0gYW1wbGl0dWRlO1xuICAgIHRoaXMuZnJlcXVlbmN5ID0gZnJlcXVlbmN5O1xuICAgIHRoaXMub2N0YXZlcyA9IG9jdGF2ZXM7XG4gICAgdGhpcy5wZXJzaXN0ZW5jZSA9IHBlcnNpc3RlbmNlO1xuXG4gICAgdGhpcy5zY2FsZSA9XG4gICAgICBtaW4gPT09IC0xICYmIG1heCA9PT0gMVxuICAgICAgICA/ICh2YWx1ZSkgPT4gdmFsdWVcbiAgICAgICAgOiAodmFsdWUpID0+IG1pbiArICgodmFsdWUgKyAxKSAvIDIpICogKG1heCAtIG1pbik7XG5cbiAgICBjb25zdCBwID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG4gICAgICBwW2ldID0gaTtcbiAgICB9XG5cbiAgICBsZXQgbjogbnVtYmVyO1xuICAgIGxldCBxOiBudW1iZXI7XG4gICAgZm9yIChsZXQgaSA9IDI1NTsgaSA+IDA7IGktLSkge1xuICAgICAgbiA9IE1hdGguZmxvb3IoKGkgKyAxKSAqIHRoaXMucmFuZG9tKCkpO1xuICAgICAgcSA9IHBbaV07XG4gICAgICBwW2ldID0gcFtuXTtcbiAgICAgIHBbbl0gPSBxO1xuICAgIH1cblxuICAgIHRoaXMucGVybSA9IG5ldyBVaW50OEFycmF5KDUxMik7XG4gICAgdGhpcy5wZXJtTW9kMTIgPSBuZXcgVWludDhBcnJheSg1MTIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTEyOyBpKyspIHtcbiAgICAgIHRoaXMucGVybVtpXSA9IHBbaSAmIDI1NV07XG4gICAgICB0aGlzLnBlcm1Nb2QxMltpXSA9IHRoaXMucGVybVtpXSAlIDEyO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBHMyA9IDEuMCAvIDYuMDtcblxuICBzdGF0aWMgR1JBRDNEID0gW1xuICAgIFsxLCAxLCAwXSxcbiAgICBbLTEsIDEsIDBdLFxuICAgIFsxLCAtMSwgMF0sXG4gICAgWy0xLCAtMSwgMF0sXG4gICAgWzEsIDAsIDFdLFxuICAgIFstMSwgMCwgMV0sXG4gICAgWzEsIDAsIC0xXSxcbiAgICBbLTEsIDAsIC0xXSxcbiAgICBbMCwgMSwgMV0sXG4gICAgWzAsIC0xLCAtMV0sXG4gICAgWzAsIDEsIC0xXSxcbiAgICBbMCwgLTEsIC0xXSxcbiAgXTtcblxuICByZWFkb25seSBhbXBsaXR1ZGU6IG51bWJlcjtcbiAgcmVhZG9ubHkgZnJlcXVlbmN5OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9jdGF2ZXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgcGVybTogVWludDhBcnJheTtcbiAgcmVhZG9ubHkgcGVybU1vZDEyOiBVaW50OEFycmF5O1xuICByZWFkb25seSBwZXJzaXN0ZW5jZTogbnVtYmVyO1xuICByZWFkb25seSByYW5kb206ICgpID0+IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NhbGU6ICh2YWx1ZTogbnVtYmVyKSA9PiBudW1iZXI7XG4gIHByaXZhdGUgbWVtU2NhbGUzRDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gIGRvdChnczogbnVtYmVyW10sIGNvb3JkczogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIHJldHVybiBnc1xuICAgICAgLnNsaWNlKDAsIE1hdGgubWluKGdzLmxlbmd0aCwgY29vcmRzLmxlbmd0aCkpXG4gICAgICAucmVkdWNlKCh0b3RhbCwgZywgaSkgPT4gdG90YWwgKyBnICogY29vcmRzW2ldLCAwKTtcbiAgfVxuXG4gIHJhdzNEKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpOiBudW1iZXIge1xuICAgIC8vIFNrZXcgdGhlIGlucHV0IHNwYWNlIHRvIGRldGVybWluZSB3aGljaCBzaW1wbGV4IGNlbGwgd2UncmUgaW5cbiAgICBjb25zdCBzID0gKHggKyB5ICsgeikgLyAzLjA7IC8vIFZlcnkgbmljZSBhbmQgc2ltcGxlIHNrZXcgZmFjdG9yIGZvciAzRFxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKHggKyBzKTtcbiAgICBjb25zdCBqID0gTWF0aC5mbG9vcih5ICsgcyk7XG4gICAgY29uc3QgayA9IE1hdGguZmxvb3IoeiArIHMpO1xuICAgIGNvbnN0IHQgPSAoaSArIGogKyBrKSAqIFNpbXBsZXhOb2lzZS5HMztcbiAgICBjb25zdCBYMCA9IGkgLSB0OyAvLyBVbnNrZXcgdGhlIGNlbGwgb3JpZ2luIGJhY2sgdG8gKHgseSx6KSBzcGFjZVxuICAgIGNvbnN0IFkwID0gaiAtIHQ7XG4gICAgY29uc3QgWjAgPSBrIC0gdDtcbiAgICBjb25zdCB4MCA9IHggLSBYMDsgLy8gVGhlIHgseSx6IGRpc3RhbmNlcyBmcm9tIHRoZSBjZWxsIG9yaWdpblxuICAgIGNvbnN0IHkwID0geSAtIFkwO1xuICAgIGNvbnN0IHowID0geiAtIFowO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHNpbXBsZXggd2UgYXJlIGluXG4gICAgbGV0IGkxOiBudW1iZXIsIGoxOiBudW1iZXIsIGsxOiBudW1iZXI7IC8vIE9mZnNldHMgZm9yIHNlY29uZCBjb3JuZXIgb2Ygc2ltcGxleCBpbiAoaSxqLGspIGNvb3Jkc1xuICAgIGxldCBpMjogbnVtYmVyLCBqMjogbnVtYmVyLCBrMjogbnVtYmVyOyAvLyBPZmZzZXRzIGZvciB0aGlyZCBjb3JuZXIgb2Ygc2ltcGxleCBpbiAoaSxqLGspIGNvb3Jkc1xuICAgIGlmICh4MCA+PSB5MCkge1xuICAgICAgaWYgKHkwID49IHowKSB7XG4gICAgICAgIGkxID0gaTIgPSBqMiA9IDE7XG4gICAgICAgIGoxID0gazEgPSBrMiA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHgwID49IHowKSB7XG4gICAgICAgIGkxID0gaTIgPSBrMiA9IDE7XG4gICAgICAgIGoxID0gazEgPSBqMiA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrMSA9IGkyID0gazIgPSAxO1xuICAgICAgICBpMSA9IGoxID0gajIgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoeTAgPCB6MCkge1xuICAgICAgICBrMSA9IGoyID0gazIgPSAxO1xuICAgICAgICBpMSA9IGoxID0gaTIgPSAwO1xuICAgICAgfSBlbHNlIGlmICh4MCA8IHowKSB7XG4gICAgICAgIGoxID0gajIgPSBrMiA9IDE7XG4gICAgICAgIGkxID0gazEgPSBpMiA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqMSA9IGkyID0gajIgPSAxO1xuICAgICAgICBpMSA9IGsxID0gazIgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHgxID0geDAgLSBpMSArIFNpbXBsZXhOb2lzZS5HMzsgLy8gT2Zmc2V0cyBmb3Igc2Vjb25kIGNvcm5lciBpbiAoeCx5LHopIGNvb3Jkc1xuICAgIGNvbnN0IHkxID0geTAgLSBqMSArIFNpbXBsZXhOb2lzZS5HMztcbiAgICBjb25zdCB6MSA9IHowIC0gazEgKyBTaW1wbGV4Tm9pc2UuRzM7XG4gICAgY29uc3QgeDIgPSB4MCAtIGkyICsgMi4wICogU2ltcGxleE5vaXNlLkczOyAvLyBPZmZzZXRzIGZvciB0aGlyZCBjb3JuZXIgaW4gKHgseSx6KSBjb29yZHNcbiAgICBjb25zdCB5MiA9IHkwIC0gajIgKyAyLjAgKiBTaW1wbGV4Tm9pc2UuRzM7XG4gICAgY29uc3QgejIgPSB6MCAtIGsyICsgMi4wICogU2ltcGxleE5vaXNlLkczO1xuICAgIGNvbnN0IHgzID0geDAgLSAxLjAgKyAzLjAgKiBTaW1wbGV4Tm9pc2UuRzM7IC8vIE9mZnNldHMgZm9yIGxhc3QgY29ybmVyIGluICh4LHkseikgY29vcmRzXG4gICAgY29uc3QgeTMgPSB5MCAtIDEuMCArIDMuMCAqIFNpbXBsZXhOb2lzZS5HMztcbiAgICBjb25zdCB6MyA9IHowIC0gMS4wICsgMy4wICogU2ltcGxleE5vaXNlLkczO1xuXG4gICAgLy8gV29yayBvdXQgdGhlIGhhc2hlZCBncmFkaWVudCBpbmRpY2VzIG9mIHRoZSBmb3VyIHNpbXBsZXggY29ybmVyc1xuICAgIGNvbnN0IGlpID0gaSAmIDI1NTtcbiAgICBjb25zdCBqaiA9IGogJiAyNTU7XG4gICAgY29uc3Qga2sgPSBrICYgMjU1O1xuICAgIGNvbnN0IGdpMCA9IHRoaXMucGVybU1vZDEyW2lpICsgdGhpcy5wZXJtW2pqICsgdGhpcy5wZXJtW2trXV1dO1xuICAgIGNvbnN0IGdpMSA9XG4gICAgICB0aGlzLnBlcm1Nb2QxMltpaSArIGkxICsgdGhpcy5wZXJtW2pqICsgajEgKyB0aGlzLnBlcm1ba2sgKyBrMV1dXTtcbiAgICBjb25zdCBnaTIgPVxuICAgICAgdGhpcy5wZXJtTW9kMTJbaWkgKyBpMiArIHRoaXMucGVybVtqaiArIGoyICsgdGhpcy5wZXJtW2trICsgazJdXV07XG4gICAgY29uc3QgZ2kzID0gdGhpcy5wZXJtTW9kMTJbaWkgKyAxICsgdGhpcy5wZXJtW2pqICsgMSArIHRoaXMucGVybVtrayArIDFdXV07XG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIGNvbnRyaWJ1dGlvbiBmcm9tIHRoZSBmb3VyIGNvcm5lcnNcbiAgICBjb25zdCB0MCA9IDAuNSAtIHgwICogeDAgLSB5MCAqIHkwIC0gejAgKiB6MDtcbiAgICBjb25zdCBuMCA9XG4gICAgICB0MCA8IDBcbiAgICAgICAgPyAwLjBcbiAgICAgICAgOiBNYXRoLnBvdyh0MCwgNCkgKiB0aGlzLmRvdChTaW1wbGV4Tm9pc2UuR1JBRDNEW2dpMF0sIFt4MCwgeTAsIHowXSk7XG4gICAgY29uc3QgdDEgPSAwLjUgLSB4MSAqIHgxIC0geTEgKiB5MSAtIHoxICogejE7XG4gICAgY29uc3QgbjEgPVxuICAgICAgdDEgPCAwXG4gICAgICAgID8gMC4wXG4gICAgICAgIDogTWF0aC5wb3codDEsIDQpICogdGhpcy5kb3QoU2ltcGxleE5vaXNlLkdSQUQzRFtnaTFdLCBbeDEsIHkxLCB6MV0pO1xuICAgIGNvbnN0IHQyID0gMC41IC0geDIgKiB4MiAtIHkyICogeTIgLSB6MiAqIHoyO1xuICAgIGNvbnN0IG4yID1cbiAgICAgIHQyIDwgMFxuICAgICAgICA/IDAuMFxuICAgICAgICA6IE1hdGgucG93KHQyLCA0KSAqIHRoaXMuZG90KFNpbXBsZXhOb2lzZS5HUkFEM0RbZ2kyXSwgW3gyLCB5MiwgejJdKTtcbiAgICBjb25zdCB0MyA9IDAuNSAtIHgzICogeDMgLSB5MyAqIHkzIC0gejMgKiB6MztcbiAgICBjb25zdCBuMyA9XG4gICAgICB0MyA8IDBcbiAgICAgICAgPyAwLjBcbiAgICAgICAgOiBNYXRoLnBvdyh0MywgNCkgKiB0aGlzLmRvdChTaW1wbGV4Tm9pc2UuR1JBRDNEW2dpM10sIFt4MywgeTMsIHozXSk7XG5cbiAgICAvLyBBZGQgY29udHJpYnV0aW9ucyBmcm9tIGVhY2ggY29ybmVyIHRvIGdldCB0aGUgZmluYWwgbm9pc2UgdmFsdWUuXG4gICAgLy8gVGhlIHJlc3VsdCBpcyBzY2FsZWQgdG8gc3RheSBqdXN0IGluc2lkZSBbLTEsMV1cbiAgICByZXR1cm4gOTQuNjg0OTMxNTA2ODE5NzIgKiAobjAgKyBuMSArIG4yICsgbjMpO1xuICB9XG5cbiAgc2NhbGVkM0QoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgcmVzb2x1dGlvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBtZW1JbmRleCA9IGAke01hdGgucm91bmQoeCAqIHJlc29sdXRpb24pfSR7TWF0aC5yb3VuZChcbiAgICAgIHkgKiByZXNvbHV0aW9uXG4gICAgKX0ke01hdGgucm91bmQoeiAqIHJlc29sdXRpb24pfWA7XG4gICAgY29uc3QgbWVtRWxlbSA9IHRoaXMubWVtU2NhbGUzRFttZW1JbmRleF07XG4gICAgaWYgKG1lbUVsZW0gIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1lbUVsZW07XG4gICAgfVxuXG4gICAgbGV0IGFtcGxpdHVkZSA9IHRoaXMuYW1wbGl0dWRlO1xuICAgIGxldCBmcmVxdWVuY3kgPSB0aGlzLmZyZXF1ZW5jeTtcbiAgICBsZXQgbWF4QW1wbGl0dWRlID0gMDtcbiAgICBsZXQgbm9pc2UgPSAwO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9jdGF2ZXM7IGkrKykge1xuICAgICAgbm9pc2UgKz1cbiAgICAgICAgdGhpcy5yYXczRCh4ICogZnJlcXVlbmN5LCB5ICogZnJlcXVlbmN5LCB6ICogZnJlcXVlbmN5KSAqIGFtcGxpdHVkZTtcbiAgICAgIG1heEFtcGxpdHVkZSArPSBhbXBsaXR1ZGU7XG4gICAgICBhbXBsaXR1ZGUgKj0gdGhpcy5wZXJzaXN0ZW5jZTtcbiAgICAgIGZyZXF1ZW5jeSAqPSAyO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNjYWxlKG5vaXNlIC8gbWF4QW1wbGl0dWRlKTtcbiAgICB0aGlzLm1lbVNjYWxlM0RbbWVtSW5kZXhdID0gcmVzdWx0O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
157
+ function createOptionsWithDefaults(options) {
158
+ if (options != null) {
159
+ if (options['amplitude'] && typeof options.amplitude !== 'number') {
160
+ throw new Error('options.amplitude must be a number');
161
+ }
162
+ if (options['frequency'] && typeof options.frequency !== 'number') {
163
+ throw new Error('options.frequency must be a number');
164
+ }
165
+ if (options['octaves'] &&
166
+ (typeof options.octaves !== 'number' ||
167
+ !isFinite(options.octaves) ||
168
+ Math.floor(options.octaves) !== options.octaves)) {
169
+ throw new Error('options.octaves must be an integer');
170
+ }
171
+ if (options['persistence'] && typeof options.persistence !== 'number') {
172
+ throw new Error('options.persistence must be a number');
173
+ }
174
+ if (options['random'] && typeof options.random !== 'function') {
175
+ throw new Error('options.random must be a function');
176
+ }
177
+ if (options['min'] && typeof options.min !== 'number') {
178
+ throw new Error('options.min must be a number');
179
+ }
180
+ if (options['max'] && typeof options.max !== 'number') {
181
+ throw new Error('options.max must be a number');
182
+ }
183
+ }
184
+ const optionsResult = {
185
+ amplitude: 1.0,
186
+ frequency: 1.0,
187
+ max: 1.0,
188
+ min: -1.0,
189
+ octaves: 1,
190
+ persistence: 0.5,
191
+ random: Math.random,
192
+ ...options,
193
+ };
194
+ if (optionsResult.min > optionsResult.max) {
195
+ throw new Error('min must be smaller max');
196
+ }
197
+ return optionsResult;
198
+ }
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxleC1ub2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3NpbXBsZXgtbm9pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBWSxPQUFzQztRQThEMUMsZUFBVSxHQUE4QixFQUFFLENBQUM7UUE3RGpELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FDcEUseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0IsSUFBSSxDQUFDLEtBQUs7WUFDUixHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztnQkFDbEIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUV2RCxNQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksQ0FBUyxDQUFDO1FBQ2QsSUFBSSxDQUFTLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBNkJELEdBQUcsQ0FBQyxFQUFZLEVBQUUsTUFBZ0I7UUFDaEMsT0FBTyxFQUFFO2FBQ04sS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzVDLE1BQU0sQ0FBQyxDQUFD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LEVBQUU7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBQzVDO0lBQ0QsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2ltcGxleE5vaXNlT3B0aW9ucyB9IGZyb20gJy4vc2ltcGxleC1ub2lzZS1vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIFNpbXBsZXhOb2lzZSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPFNpbXBsZXhOb2lzZU9wdGlvbnM+KSB7XG4gICAgY29uc3QgeyBtaW4sIG1heCwgcmFuZG9tLCBhbXBsaXR1ZGUsIGZyZXF1ZW5jeSwgb2N0YXZlcywgcGVyc2lzdGVuY2UgfSA9XG4gICAgICBjcmVhdGVPcHRpb25zV2l0aERlZmF1bHRzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5yYW5kb20gPSByYW5kb207XG4gICAgdGhpcy5hbXBsaXR1ZGUgPSBhbXBsaXR1ZGU7XG4gICAgdGhpcy5mcmVxdWVuY3kgPSBmcmVxdWVuY3k7XG4gICAgdGhpcy5vY3RhdmVzID0gb2N0YXZlcztcbiAgICB0aGlzLnBlcnNpc3RlbmNlID0gcGVyc2lzdGVuY2U7XG5cbiAgICB0aGlzLnNjYWxlID1cbiAgICAgIG1pbiA9PT0gLTEgJiYgbWF4ID09PSAxXG4gICAgICAgID8gKHZhbHVlKSA9PiB2YWx1ZVxuICAgICAgICA6ICh2YWx1ZSkgPT4gbWluICsgKCh2YWx1ZSArIDEpIC8gMikgKiAobWF4IC0gbWluKTtcblxuICAgIGNvbnN0IHAgPSBuZXcgVWludDhBcnJheSgyNTYpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgICAgIHBbaV0gPSBpO1xuICAgIH1cblxuICAgIGxldCBuOiBudW1iZXI7XG4gICAgbGV0IHE6IG51bWJlcjtcbiAgICBmb3IgKGxldCBpID0gMjU1OyBpID4gMDsgaS0tKSB7XG4gICAgICBuID0gTWF0aC5mbG9vcigoaSArIDEpICogdGhpcy5yYW5kb20oKSk7XG4gICAgICBxID0gcFtpXTtcbiAgICAgIHBbaV0gPSBwW25dO1xuICAgICAgcFtuXSA9IHE7XG4gICAgfVxuXG4gICAgdGhpcy5wZXJtID0gbmV3IFVpbnQ4QXJyYXkoNTEyKTtcbiAgICB0aGlzLnBlcm1Nb2QxMiA9IG5ldyBVaW50OEFycmF5KDUxMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MTI7IGkrKykge1xuICAgICAgdGhpcy5wZXJtW2ldID0gcFtpICYgMjU1XTtcbiAgICAgIHRoaXMucGVybU1vZDEyW2ldID0gdGhpcy5wZXJtW2ldICUgMTI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIEczID0gMS4wIC8gNi4wO1xuXG4gIHN0YXRpYyBHUkFEM0QgPSBbXG4gICAgWzEsIDEsIDBdLFxuICAgIFstMSwgMSwgMF0sXG4gICAgWzEsIC0xLCAwXSxcbiAgICBbLTEsIC0xLCAwXSxcbiAgICBbMSwgMCwgMV0sXG4gICAgWy0xLCAwLCAxXSxcbiAgICBbMSwgMCwgLTFdLFxuICAgIFstMSwgMCwgLTFdLFxuICAgIFswLCAxLCAxXSxcbiAgICBbMCwgLTEsIC0xXSxcbiAgICBbMCwgMSwgLTFdLFxuICAgIFswLCAtMSwgLTFdLFxuICBdO1xuXG4gIHJlYWRvbmx5IGFtcGxpdHVkZTogbnVtYmVyO1xuICByZWFkb25seSBmcmVxdWVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgb2N0YXZlczogbnVtYmVyO1xuICByZWFkb25seSBwZXJtOiBVaW50OEFycmF5O1xuICByZWFkb25seSBwZXJtTW9kMTI6IFVpbnQ4QXJyYXk7XG4gIHJlYWRvbmx5IHBlcnNpc3RlbmNlOiBudW1iZXI7XG4gIHJlYWRvbmx5IHJhbmRvbTogKCkgPT4gbnVtYmVyO1xuICByZWFkb25seSBzY2FsZTogKHZhbHVlOiBudW1iZXIpID0+IG51bWJlcjtcbiAgcHJpdmF0ZSBtZW1TY2FsZTNEOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbiAgZG90KGdzOiBudW1iZXJbXSwgY29vcmRzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGdzXG4gICAgICAuc2xpY2UoMCwgTWF0aC5taW4oZ3MubGVuZ3RoLCBjb29yZHMubGVuZ3RoKSlcbiAgICAgIC5yZWR1Y2UoKHRvdGFsLCBnLCBpKSA9PiB0b3RhbCArIGcgKiBjb29yZHNbaV0sIDApO1xuICB9XG5cbiAgcmF3M0QoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcik6IG51bWJlciB7XG4gICAgLy8gU2tldyB0aGUgaW5wdXQgc3BhY2UgdG8gZGV0ZXJtaW5lIHdoaWNoIHNpbXBsZXggY2VsbCB3ZSdyZSBpblxuICAgIGNvbnN0IHMgPSAoeCArIHkgKyB6KSAvIDMuMDsgLy8gVmVyeSBuaWNlIGFuZCBzaW1wbGUgc2tldyBmYWN0b3IgZm9yIDNEXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoeCArIHMpO1xuICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKHkgKyBzKTtcbiAgICBjb25zdCBrID0gTWF0aC5mbG9vcih6ICsgcyk7XG4gICAgY29uc3QgdCA9IChpICsgaiArIGspICogU2ltcGxleE5vaXNlLkczO1xuICAgIGNvbnN0IFgwID0gaSAtIHQ7IC8vIFVuc2tldyB0aGUgY2VsbCBvcmlnaW4gYmFjayB0byAoeCx5LHopIHNwYWNlXG4gICAgY29uc3QgWTAgPSBqIC0gdDtcbiAgICBjb25zdCBaMCA9IGsgLSB0O1xuICAgIGNvbnN0IHgwID0geCAtIFgwOyAvLyBUaGUgeCx5LHogZGlzdGFuY2VzIGZyb20gdGhlIGNlbGwgb3JpZ2luXG4gICAgY29uc3QgeTAgPSB5IC0gWTA7XG4gICAgY29uc3QgejAgPSB6IC0gWjA7XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggc2ltcGxleCB3ZSBhcmUgaW5cbiAgICBsZXQgaTE6IG51bWJlciwgajE6IG51bWJlciwgazE6IG51bWJlcjsgLy8gT2Zmc2V0cyBmb3Igc2Vjb25kIGNvcm5lciBvZiBzaW1wbGV4IGluIChpLGosaykgY29vcmRzXG4gICAgbGV0IGkyOiBudW1iZXIsIGoyOiBudW1iZXIsIGsyOiBudW1iZXI7IC8vIE9mZnNldHMgZm9yIHRoaXJkIGNvcm5lciBvZiBzaW1wbGV4IGluIChpLGosaykgY29vcmRzXG4gICAgaWYgKHgwID49IHkwKSB7XG4gICAgICBpZiAoeTAgPj0gejApIHtcbiAgICAgICAgaTEgPSBpMiA9IGoyID0gMTtcbiAgICAgICAgajEgPSBrMSA9IGsyID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoeDAgPj0gejApIHtcbiAgICAgICAgaTEgPSBpMiA9IGsyID0gMTtcbiAgICAgICAgajEgPSBrMSA9IGoyID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGsxID0gaTIgPSBrMiA9IDE7XG4gICAgICAgIGkxID0gajEgPSBqMiA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh5MCA8IHowKSB7XG4gICAgICAgIGsxID0gajIgPSBrMiA9IDE7XG4gICAgICAgIGkxID0gajEgPSBpMiA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHgwIDwgejApIHtcbiAgICAgICAgajEgPSBqMiA9IGsyID0gMTtcbiAgICAgICAgaTEgPSBrMSA9IGkyID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGoxID0gaTIgPSBqMiA9IDE7XG4gICAgICAgIGkxID0gazEgPSBrMiA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeDEgPSB4MCAtIGkxICsgU2ltcGxleE5vaXNlLkczOyAvLyBPZmZzZXRzIGZvciBzZWNvbmQgY29ybmVyIGluICh4LHkseikgY29vcmRzXG4gICAgY29uc3QgeTEgPSB5MCAtIGoxICsgU2ltcGxleE5vaXNlLkczO1xuICAgIGNvbnN0IHoxID0gejAgLSBrMSArIFNpbXBsZXhOb2lzZS5HMztcbiAgICBjb25zdCB4MiA9IHgwIC0gaTIgKyAyLjAgKiBTaW1wbGV4Tm9pc2UuRzM7IC8vIE9mZnNldHMgZm9yIHRoaXJkIGNvcm5lciBpbiAoeCx5LHopIGNvb3Jkc1xuICAgIGNvbnN0IHkyID0geTAgLSBqMiArIDIuMCAqIFNpbXBsZXhOb2lzZS5HMztcbiAgICBjb25zdCB6MiA9IHowIC0gazIgKyAyLjAgKiBTaW1wbGV4Tm9pc2UuRzM7XG4gICAgY29uc3QgeDMgPSB4MCAtIDEuMCArIDMuMCAqIFNpbXBsZXhOb2lzZS5HMzsgLy8gT2Zmc2V0cyBmb3IgbGFzdCBjb3JuZXIgaW4gKHgseSx6KSBjb29yZHNcbiAgICBjb25zdCB5MyA9IHkwIC0gMS4wICsgMy4wICogU2ltcGxleE5vaXNlLkczO1xuICAgIGNvbnN0IHozID0gejAgLSAxLjAgKyAzLjAgKiBTaW1wbGV4Tm9pc2UuRzM7XG5cbiAgICAvLyBXb3JrIG91dCB0aGUgaGFzaGVkIGdyYWRpZW50IGluZGljZXMgb2YgdGhlIGZvdXIgc2ltcGxleCBjb3JuZXJzXG4gICAgY29uc3QgaWkgPSBpICYgMjU1O1xuICAgIGNvbnN0IGpqID0gaiAmIDI1NTtcbiAgICBjb25zdCBrayA9IGsgJiAyNTU7XG4gICAgY29uc3QgZ2kwID0gdGhpcy5wZXJtTW9kMTJbaWkgKyB0aGlzLnBlcm1bamogKyB0aGlzLnBlcm1ba2tdXV07XG4gICAgY29uc3QgZ2kxID1cbiAgICAgIHRoaXMucGVybU1vZDEyW2lpICsgaTEgKyB0aGlzLnBlcm1bamogKyBqMSArIHRoaXMucGVybVtrayArIGsxXV1dO1xuICAgIGNvbnN0IGdpMiA9XG4gICAgICB0aGlzLnBlcm1Nb2QxMltpaSArIGkyICsgdGhpcy5wZXJtW2pqICsgajIgKyB0aGlzLnBlcm1ba2sgKyBrMl1dXTtcbiAgICBjb25zdCBnaTMgPSB0aGlzLnBlcm1Nb2QxMltpaSArIDEgKyB0aGlzLnBlcm1bamogKyAxICsgdGhpcy5wZXJtW2trICsgMV1dXTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgY29udHJpYnV0aW9uIGZyb20gdGhlIGZvdXIgY29ybmVyc1xuICAgIGNvbnN0IHQwID0gMC41IC0geDAgKiB4MCAtIHkwICogeTAgLSB6MCAqIHowO1xuICAgIGNvbnN0IG4wID1cbiAgICAgIHQwIDwgMFxuICAgICAgICA/IDAuMFxuICAgICAgICA6IE1hdGgucG93KHQwLCA0KSAqIHRoaXMuZG90KFNpbXBsZXhOb2lzZS5HUkFEM0RbZ2kwXSwgW3gwLCB5MCwgejBdKTtcbiAgICBjb25zdCB0MSA9IDAuNSAtIHgxICogeDEgLSB5MSAqIHkxIC0gejEgKiB6MTtcbiAgICBjb25zdCBuMSA9XG4gICAgICB0MSA8IDBcbiAgICAgICAgPyAwLjBcbiAgICAgICAgOiBNYXRoLnBvdyh0MSwgNCkgKiB0aGlzLmRvdChTaW1wbGV4Tm9pc2UuR1JBRDNEW2dpMV0sIFt4MSwgeTEsIHoxXSk7XG4gICAgY29uc3QgdDIgPSAwLjUgLSB4MiAqIHgyIC0geTIgKiB5MiAtIHoyICogejI7XG4gICAgY29uc3QgbjIgPVxuICAgICAgdDIgPCAwXG4gICAgICAgID8gMC4wXG4gICAgICAgIDogTWF0aC5wb3codDIsIDQpICogdGhpcy5kb3QoU2ltcGxleE5vaXNlLkdSQUQzRFtnaTJdLCBbeDIsIHkyLCB6Ml0pO1xuICAgIGNvbnN0IHQzID0gMC41IC0geDMgKiB4MyAtIHkzICogeTMgLSB6MyAqIHozO1xuICAgIGNvbnN0IG4zID1cbiAgICAgIHQzIDwgMFxuICAgICAgICA/IDAuMFxuICAgICAgICA6IE1hdGgucG93KHQzLCA0KSAqIHRoaXMuZG90KFNpbXBsZXhOb2lzZS5HUkFEM0RbZ2kzXSwgW3gzLCB5MywgejNdKTtcblxuICAgIC8vIEFkZCBjb250cmlidXRpb25zIGZyb20gZWFjaCBjb3JuZXIgdG8gZ2V0IHRoZSBmaW5hbCBub2lzZSB2YWx1ZS5cbiAgICAvLyBUaGUgcmVzdWx0IGlzIHNjYWxlZCB0byBzdGF5IGp1c3QgaW5zaWRlIFstMSwxXVxuICAgIHJldHVybiA5NC42ODQ5MzE1MDY4MTk3MiAqIChuMCArIG4xICsgbjIgKyBuMyk7XG4gIH1cblxuICBzY2FsZWQzRCh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCByZXNvbHV0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1lbUluZGV4ID0gYCR7TWF0aC5yb3VuZCh4ICogcmVzb2x1dGlvbil9JHtNYXRoLnJvdW5kKFxuICAgICAgeSAqIHJlc29sdXRpb25cbiAgICApfSR7TWF0aC5yb3VuZCh6ICogcmVzb2x1dGlvbil9YDtcbiAgICBjb25zdCBtZW1FbGVtID0gdGhpcy5tZW1TY2FsZTNEW21lbUluZGV4XTtcbiAgICBpZiAobWVtRWxlbSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gbWVtRWxlbTtcbiAgICB9XG5cbiAgICBsZXQgYW1wbGl0dWRlID0gdGhpcy5hbXBsaXR1ZGU7XG4gICAgbGV0IGZyZXF1ZW5jeSA9IHRoaXMuZnJlcXVlbmN5O1xuICAgIGxldCBtYXhBbXBsaXR1ZGUgPSAwO1xuICAgIGxldCBub2lzZSA9IDA7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub2N0YXZlczsgaSsrKSB7XG4gICAgICBub2lzZSArPVxuICAgICAgICB0aGlzLnJhdzNEKHggKiBmcmVxdWVuY3ksIHkgKiBmcmVxdWVuY3ksIHogKiBmcmVxdWVuY3kpICogYW1wbGl0dWRlO1xuICAgICAgbWF4QW1wbGl0dWRlICs9IGFtcGxpdHVkZTtcbiAgICAgIGFtcGxpdHVkZSAqPSB0aGlzLnBlcnNpc3RlbmNlO1xuICAgICAgZnJlcXVlbmN5ICo9IDI7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2NhbGUobm9pc2UgLyBtYXhBbXBsaXR1ZGUpO1xuICAgIHRoaXMubWVtU2NhbGUzRFttZW1JbmRleF0gPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zV2l0aERlZmF1bHRzKG9wdGlvbnM/OiBQYXJ0aWFsPFNpbXBsZXhOb2lzZU9wdGlvbnM+KSB7XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICBpZiAob3B0aW9uc1snYW1wbGl0dWRlJ10gJiYgdHlwZW9mIG9wdGlvbnMuYW1wbGl0dWRlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLmFtcGxpdHVkZSBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNbJ2ZyZXF1ZW5jeSddICYmIHR5cGVvZiBvcHRpb25zLmZyZXF1ZW5jeSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5mcmVxdWVuY3kgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG9wdGlvbnNbJ29jdGF2ZXMnXSAmJlxuICAgICAgKHR5cGVvZiBvcHRpb25zLm9jdGF2ZXMgIT09ICdudW1iZXInIHx8XG4gICAgICAgICFpc0Zpbml0ZShvcHRpb25zLm9jdGF2ZXMpIHx8XG4gICAgICAgIE1hdGguZmxvb3Iob3B0aW9ucy5vY3RhdmVzKSAhPT0gb3B0aW9ucy5vY3RhdmVzKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLm9jdGF2ZXMgbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNbJ3BlcnNpc3RlbmNlJ10gJiYgdHlwZW9mIG9wdGlvbnMucGVyc2lzdGVuY2UgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMucGVyc2lzdGVuY2UgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zWydyYW5kb20nXSAmJiB0eXBlb2Ygb3B0aW9ucy5yYW5kb20gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5yYW5kb20gbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNbJ21pbiddICYmIHR5cGVvZiBvcHRpb25zLm1pbiAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5taW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zWydtYXgnXSAmJiB0eXBlb2Ygb3B0aW9ucy5tYXggIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMubWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zUmVzdWx0ID0ge1xuICAgIGFtcGxpdHVkZTogMS4wLFxuICAgIGZyZXF1ZW5jeTogMS4wLFxuICAgIG1heDogMS4wLFxuICAgIG1pbjogLTEuMCxcbiAgICBvY3RhdmVzOiAxLFxuICAgIHBlcnNpc3RlbmNlOiAwLjUsXG4gICAgcmFuZG9tOiBNYXRoLnJhbmRvbSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuICBpZiAob3B0aW9uc1Jlc3VsdC5taW4gPiBvcHRpb25zUmVzdWx0Lm1heCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWluIG11c3QgYmUgc21hbGxlciBtYXgnKTtcbiAgfVxuICByZXR1cm4gb3B0aW9uc1Jlc3VsdDtcbn1cbiJdfQ==
@@ -2,6 +2,12 @@ import { InjectionToken } from '@angular/core';
2
2
  import { createWsThanosOptions } from './create-ws-thanos-options';
3
3
  export const WS_THANOS_OPTIONS_TOKEN = new InjectionToken('thanosOptions', {
4
4
  providedIn: 'root',
5
- factory: createWsThanosOptions,
5
+ factory: () => createWsThanosOptions(),
6
6
  });
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLW9wdGlvbnMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Mtb3B0aW9ucy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR25FLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCxlQUFlLEVBQ2Y7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUscUJBQXFCO0NBQy9CLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL2NyZWF0ZS13cy10aGFub3Mtb3B0aW9ucyc7XG5pbXBvcnQgeyBXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL3dzLXRoYW5vcy5vcHRpb25zJztcblxuZXhwb3J0IGNvbnN0IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFdzVGhhbm9zT3B0aW9ucz4oXG4gICd0aGFub3NPcHRpb25zJyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiBjcmVhdGVXc1RoYW5vc09wdGlvbnMsXG4gIH1cbik7XG4iXX0=
7
+ export function provideWsThanosOptions(options) {
8
+ return {
9
+ provide: WS_THANOS_OPTIONS_TOKEN,
10
+ useValue: createWsThanosOptions(options),
11
+ };
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLW9wdGlvbnMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Mtb3B0aW9ucy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR25FLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCxlQUFlLEVBQ2Y7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUU7Q0FDdkMsQ0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxPQUFrQztJQUVsQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLHVCQUF1QjtRQUNoQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO0tBQ3pDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL2NyZWF0ZS13cy10aGFub3Mtb3B0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgV1NfVEhBTk9TX09QVElPTlNfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48V3NUaGFub3NPcHRpb25zPihcbiAgJ3RoYW5vc09wdGlvbnMnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IGNyZWF0ZVdzVGhhbm9zT3B0aW9ucygpLFxuICB9XG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVdzVGhhbm9zT3B0aW9ucyhcbiAgb3B0aW9ucz86IFBhcnRpYWw8V3NUaGFub3NPcHRpb25zPlxuKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOLFxuICAgIHVzZVZhbHVlOiBjcmVhdGVXc1RoYW5vc09wdGlvbnMob3B0aW9ucyksXG4gIH07XG59XG4iXX0=
@@ -38,21 +38,19 @@ export class WsThanosDirective {
38
38
  this.subscription?.unsubscribe();
39
39
  }
40
40
  }
41
- WsThanosDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosDirective, deps: [{ token: i0.ElementRef }, { token: i1.WsThanosService }, { token: WS_THANOS_OPTIONS_TOKEN }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Directive });
42
- WsThanosDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.5", type: WsThanosDirective, selector: "[wsThanos], ws-thanos", outputs: { wsThanosComplete: "wsThanosComplete" }, exportAs: ["thanos"], ngImport: i0 });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosDirective, decorators: [{
41
+ WsThanosDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosDirective, deps: [{ token: i0.ElementRef }, { token: i1.WsThanosService }, { token: WS_THANOS_OPTIONS_TOKEN }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
42
+ WsThanosDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.9", type: WsThanosDirective, isStandalone: true, selector: "[wsThanos], ws-thanos", outputs: { wsThanosComplete: "wsThanosComplete" }, exportAs: ["thanos"], ngImport: i0 });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosDirective, decorators: [{
44
44
  type: Directive,
45
45
  args: [{
46
+ standalone: true,
46
47
  selector: '[wsThanos], ws-thanos',
47
48
  exportAs: 'thanos',
48
49
  }]
49
50
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.WsThanosService }, { type: undefined, decorators: [{
50
51
  type: Inject,
51
52
  args: [WS_THANOS_OPTIONS_TOKEN]
52
- }] }, { type: i0.NgZone, decorators: [{
53
- type: Inject,
54
- args: [NgZone]
55
- }] }]; }, propDecorators: { wsThanosComplete: [{
53
+ }] }, { type: i0.NgZone }]; }, propDecorators: { wsThanosComplete: [{
56
54
  type: Output
57
55
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3dzLXRoYW5vcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBRU4sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTXRELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDbUIsZUFBd0MsRUFDeEMsYUFBOEIsRUFFOUIsYUFBOEIsRUFDZCxNQUFjO1FBSjlCLG9CQUFlLEdBQWYsZUFBZSxDQUF5QjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFFOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVB6QyxxQkFBZ0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQVFyRSxDQUFDO0lBRUcsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzlELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNuQixJQUFJLFVBQVUsRUFBRTt3QkFDZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7cUJBQ2Y7eUJBQU07d0JBQ0wscUJBQXFCO3dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUM7d0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztxQkFDMUI7b0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0IsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs4R0F4Q1UsaUJBQWlCLDJFQVNsQix1QkFBdUIsYUFFdkIsTUFBTTtrR0FYTCxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsUUFBUTtpQkFDbkI7OzBCQVVJLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxNQUFNOzRDQVBSLGdCQUFnQjtzQkFEdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXU19USEFOT1NfT1BUSU9OU19UT0tFTiB9IGZyb20gJy4vd3MtdGhhbm9zLW9wdGlvbnMudG9rZW4nO1xuaW1wb3J0IHsgV3NUaGFub3NPcHRpb25zIH0gZnJvbSAnLi93cy10aGFub3Mub3B0aW9ucyc7XG5pbXBvcnQgeyBXc1RoYW5vc1NlcnZpY2UgfSBmcm9tICcuL3dzLXRoYW5vcy5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3dzVGhhbm9zXSwgd3MtdGhhbm9zJyxcbiAgZXhwb3J0QXM6ICd0aGFub3MnLFxufSlcbmV4cG9ydCBjbGFzcyBXc1RoYW5vc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIHdzVGhhbm9zQ29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhcG9yaXplRG9tRWxlbTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGFub3NTZXJ2aWNlOiBXc1RoYW5vc1NlcnZpY2UsXG4gICAgQEluamVjdChXU19USEFOT1NfT1BUSU9OU19UT0tFTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRoYW5vc09wdGlvbnM6IFdzVGhhbm9zT3B0aW9ucyxcbiAgICBASW5qZWN0KE5nWm9uZSkgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgcHVibGljIHZhcG9yaXplKHJlbW92ZUVsZW0gPSB0cnVlKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZWxlbSA9IHRoaXMudmFwb3JpemVEb21FbGVtLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRoYW5vc1NlcnZpY2UudmFwb3JpemUoZWxlbSkuc3Vic2NyaWJlKHtcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlbW92ZUVsZW0pIHtcbiAgICAgICAgICAgIGVsZW0ucmVtb3ZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdmlzaWJsZSBhZ2FpblxuICAgICAgICAgICAgZWxlbS5zdHlsZS50cmFuc2l0aW9uID0gJ29wYWNpdHkgNzAwbXMnO1xuICAgICAgICAgICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLndzVGhhbm9zQ29tcGxldGUuZW1pdCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIGVtaXR0ZWQgYnkgdmFwb3JpemUnLCBlcnJvcik7XG4gICAgICAgIHRoaXMud3NUaGFub3NDb21wbGV0ZS5lbWl0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMud3NUaGFub3NDb21wbGV0ZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3dzLXRoYW5vcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBRU4sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBT3RELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDbUIsZUFBd0MsRUFDeEMsYUFBOEIsRUFFOUIsYUFBOEIsRUFDOUIsTUFBYztRQUpkLG9CQUFlLEdBQWYsZUFBZSxDQUF5QjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFFOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFQekIscUJBQWdCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFRckUsQ0FBQztJQUVHLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSTtRQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM5RCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsSUFBSSxVQUFVLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3FCQUNmO3lCQUFNO3dCQUNMLHFCQUFxQjt3QkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO3dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7cUJBQzFCO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OEdBeENVLGlCQUFpQiwyRUFTbEIsdUJBQXVCO2tHQVR0QixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLFFBQVE7aUJBQ25COzswQkFVSSxNQUFNOzJCQUFDLHVCQUF1QjtpRUFMekIsZ0JBQWdCO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOIH0gZnJvbSAnLi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XG5pbXBvcnQgdHlwZSB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xuaW1wb3J0IHsgV3NUaGFub3NTZXJ2aWNlIH0gZnJvbSAnLi93cy10aGFub3Muc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1t3c1RoYW5vc10sIHdzLXRoYW5vcycsXG4gIGV4cG9ydEFzOiAndGhhbm9zJyxcbn0pXG5leHBvcnQgY2xhc3MgV3NUaGFub3NEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSB3c1RoYW5vc0NvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YXBvcml6ZURvbUVsZW06IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhhbm9zU2VydmljZTogV3NUaGFub3NTZXJ2aWNlLFxuICAgIEBJbmplY3QoV1NfVEhBTk9TX09QVElPTlNfVE9LRU4pXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGFub3NPcHRpb25zOiBXc1RoYW5vc09wdGlvbnMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgcHVibGljIHZhcG9yaXplKHJlbW92ZUVsZW0gPSB0cnVlKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZWxlbSA9IHRoaXMudmFwb3JpemVEb21FbGVtLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRoYW5vc1NlcnZpY2UudmFwb3JpemUoZWxlbSkuc3Vic2NyaWJlKHtcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlbW92ZUVsZW0pIHtcbiAgICAgICAgICAgIGVsZW0ucmVtb3ZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdmlzaWJsZSBhZ2FpblxuICAgICAgICAgICAgZWxlbS5zdHlsZS50cmFuc2l0aW9uID0gJ29wYWNpdHkgNzAwbXMnO1xuICAgICAgICAgICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLndzVGhhbm9zQ29tcGxldGUuZW1pdCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIGVtaXR0ZWQgYnkgdmFwb3JpemUnLCBlcnJvcik7XG4gICAgICAgIHRoaXMud3NUaGFub3NDb21wbGV0ZS5lbWl0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMud3NUaGFub3NDb21wbGV0ZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
1
  import { Inject, Injectable, NgZone } from '@angular/core';
2
2
  import { default as html2canvas } from 'html2canvas';
3
- import { animationFrameScheduler, from, interval } from 'rxjs';
4
- import { map, switchMap, takeWhile, tap, timeInterval } from 'rxjs/operators';
3
+ import { animationFrameScheduler, from, interval, map, switchMap, takeWhile, tap, timeInterval, } from 'rxjs';
5
4
  import { SimplexNoise } from './simplex-noise';
6
5
  import { WS_THANOS_OPTIONS_TOKEN } from './ws-thanos-options.token';
7
6
  import * as i0 from "@angular/core";
@@ -11,9 +10,9 @@ const HEIGHT_SCALE = 5;
11
10
  const WIDTH_SCALE = 2;
12
11
  const FLOW_FIELD_RES = 0.05;
13
12
  export class WsThanosService {
14
- constructor(thanosOptions, _ngZone) {
13
+ constructor(thanosOptions, ngZone) {
15
14
  this.thanosOptions = thanosOptions;
16
- this._ngZone = _ngZone;
15
+ this.ngZone = ngZone;
17
16
  }
18
17
  static getParticleIndicesForBase(base) {
19
18
  return {
@@ -180,12 +179,12 @@ export class WsThanosService {
180
179
  return [sampleX, sampleY];
181
180
  }
182
181
  /**
183
- * start the vaporize effect.
182
+ * start the vaporize-effect.
184
183
  *
185
184
  * It's running outside the ngZone.
186
185
  */
187
186
  vaporize(elem) {
188
- return this._ngZone.runOutsideAngular(() => this.vaporizeIntern(elem));
187
+ return this.ngZone.runOutsideAngular(() => this.vaporizeIntern(elem));
189
188
  }
190
189
  vaporizeIntern(elem) {
191
190
  elem.style.opacity = elem.style.opacity || '1';
@@ -249,15 +248,13 @@ export class WsThanosService {
249
248
  }));
250
249
  }
251
250
  }
252
- WsThanosService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosService, deps: [{ token: WS_THANOS_OPTIONS_TOKEN }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
253
- WsThanosService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosService });
254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosService, decorators: [{
255
- type: Injectable
251
+ WsThanosService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosService, deps: [{ token: WS_THANOS_OPTIONS_TOKEN }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
252
+ WsThanosService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosService, providedIn: 'root' });
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosService, decorators: [{
254
+ type: Injectable,
255
+ args: [{ providedIn: 'root' }]
256
256
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
257
257
  type: Inject,
258
258
  args: [WS_THANOS_OPTIONS_TOKEN]
259
- }] }, { type: i0.NgZone, decorators: [{
260
- type: Inject,
261
- args: [NgZone]
262
- }] }]; } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBR3BFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBcUM1QixNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUVVLGFBQThCLEVBQ2QsT0FBZTtRQUQvQixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQ3RDLENBQUM7SUFFSSxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBWTtRQUNuRCxPQUFPO1lBQ0wsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSSxHQUFH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QUM7b0JBQzlCLGFBQWE7b0JBQ2IsY0FBYztvQkFDZCxhQUFhLEVBQUU7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjtxQkFDckI7b0JBQ0QsS0FBSztvQkFDTCxJQUFJO2lCQUNMLENBQUMsQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLE9BQU8sRUFBRTtvQkFDWCxlQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ2pFO1lBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxFQUM3RCxHQUFHLENBQUM7Z0JBQ0YsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQzthQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OzRHQWpWVSxlQUFlLGtCQUVoQix1QkFBdUIsYUFFdkIsTUFBTTtnSEFKTCxlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IGRlZmF1bHQgYXMgaHRtbDJjYW52YXMgfSBmcm9tICdodG1sMmNhbnZhcyc7XHJcbmltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBmcm9tLCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZVdoaWxlLCB0YXAsIHRpbWVJbnRlcnZhbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2ltcGxleE5vaXNlIH0gZnJvbSAnLi9zaW1wbGV4LW5vaXNlJztcclxuaW1wb3J0IHsgV1NfVEhBTk9TX09QVElPTlNfVE9LRU4gfSBmcm9tICcuL3dzLXRoYW5vcy1vcHRpb25zLnRva2VuJztcclxuaW1wb3J0IHsgV3NUaGFub3NPcHRpb25zIH0gZnJvbSAnLi93cy10aGFub3Mub3B0aW9ucyc7XHJcblxyXG5jb25zdCBQQVJUSUNMRV9CWVRFX0xFTkdUSCA9IDEwO1xyXG5jb25zdCBNSU5fUEFSVElDTEVfQUxQSEEgPSB+figyNTUgKiAwLjAxKTtcclxuY29uc3QgSEVJR0hUX1NDQUxFID0gNTtcclxuY29uc3QgV0lEVEhfU0NBTEUgPSAyO1xyXG5jb25zdCBGTE9XX0ZJRUxEX1JFUyA9IDAuMDU7XHJcblxyXG5pbnRlcmZhY2UgUGFydGljbGVzRGF0YSB7XHJcbiAgcGFydGljbGVzOiBGbG9hdDMyQXJyYXk7XHJcbiAgbWF4UGFydGljbGVYOiBudW1iZXI7XHJcbiAgbWluUGFydGljbGVZOiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBBbmltYXRpb25TdGF0ZSB7XHJcbiAgZGVsdGFUU2VjOiBudW1iZXI7XHJcbiAgYW5pbWF0aW9uVDogbnVtYmVyO1xyXG4gIG1heFdpZHRoOiBudW1iZXI7XHJcbiAgbWF4SGVpZ2h0OiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBVcGRhdGVQYXJ0aWNsZVBhcmFtcyB7XHJcbiAgcGFydGljbGVzRGF0YTogUGFydGljbGVzRGF0YTtcclxuICBhbmltYXRpb25TdGF0ZTogQW5pbWF0aW9uU3RhdGU7XHJcbiAgdGhhbm9zT3B0aW9uczogV3NUaGFub3NPcHRpb25zO1xyXG4gIG5vaXNlOiBTaW1wbGV4Tm9pc2U7XHJcbiAgc2VlZDogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUGFydGljbGVJbmRpY2VzIHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG4gIGR4OiBudW1iZXI7XHJcbiAgZHk6IG51bWJlcjtcclxuICBheDogbnVtYmVyO1xyXG4gIGF5OiBudW1iZXI7XHJcbiAgcjogbnVtYmVyO1xyXG4gIGc6IG51bWJlcjtcclxuICBiOiBudW1iZXI7XHJcbiAgYTogbnVtYmVyO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBXc1RoYW5vc1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChXU19USEFOT1NfT1BUSU9OU19UT0tFTilcclxuICAgIHByaXZhdGUgdGhhbm9zT3B0aW9uczogV3NUaGFub3NPcHRpb25zLFxyXG4gICAgQEluamVjdChOZ1pvbmUpIHByaXZhdGUgX25nWm9uZTogTmdab25lXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGJhc2U6IG51bWJlcik6IFBhcnRpY2xlSW5kaWNlcyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB4OiBiYXNlLFxyXG4gICAgICB5OiBiYXNlICsgMSxcclxuICAgICAgZHg6IGJhc2UgKyAyLFxyXG4gICAgICBkeTogYmFzZSArIDMsXHJcbiAgICAgIGF4OiBiYXNlICsgNCxcclxuICAgICAgYXk6IGJhc2UgKyA1LFxyXG4gICAgICByOiBiYXNlICsgNixcclxuICAgICAgZzogYmFzZSArIDcsXHJcbiAgICAgIGI6IGJhc2UgKyA4LFxyXG4gICAgICBhOiBiYXNlICsgOSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRDb2xvckluZGljZXNGb3JDb29yZChcclxuICAgIHg6IG51bWJlcixcclxuICAgIHk6IG51bWJlcixcclxuICAgIHdpZHRoOiBudW1iZXJcclxuICApOiB7IGE6IG51bWJlcjsgcjogbnVtYmVyOyBiOiBudW1iZXI7IGc6IG51bWJlciB9IHtcclxuICAgIGNvbnN0IHJlZCA9IHkgKiAod2lkdGggKiA0KSArIHggKiA0O1xyXG4gICAgcmV0dXJuIHsgcjogcmVkLCBnOiByZWQgKyAxLCBiOiByZWQgKyAyLCBhOiByZWQgKyAzIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyB1cGRhdGVQYXJ0aWNsZXMoe1xyXG4gICAgc2VlZCxcclxuICAgIG5vaXNlLFxyXG4gICAgcGFydGljbGVzRGF0YSxcclxuICAgIHRoYW5vc09wdGlvbnMsXHJcbiAgICBhbmltYXRpb25TdGF0ZSxcclxuICB9OiBVcGRhdGVQYXJ0aWNsZVBhcmFtcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBkZWx0YVRTZWMsIGFuaW1hdGlvblQsIG1heFdpZHRoLCBtYXhIZWlnaHQgfSA9IGFuaW1hdGlvblN0YXRlO1xyXG4gICAgY29uc3QgeyBwYXJ0aWNsZUFjY2VsZXJhdGlvbiB9ID0gdGhhbm9zT3B0aW9ucztcclxuICAgIGNvbnN0IHsgcGFydGljbGVzLCBtYXhQYXJ0aWNsZVgsIG1pblBhcnRpY2xlWSB9ID0gcGFydGljbGVzRGF0YTtcclxuXHJcbiAgICAvLyB0aGUgdGltZSBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgdmFwb3JpemF0aW9uIGZyb250LlxyXG4gICAgY29uc3QgdGltZSA9IE1hdGguc2luKGFuaW1hdGlvblQgKiAoTWF0aC5QSSAvIDIpKSAqIDEuMTtcclxuXHJcbiAgICBjb25zdCBzdGFydEFjY2VsZXJhdGVYID0gbWF4UGFydGljbGVYIC0gdGltZSAqIG1heFBhcnRpY2xlWDtcclxuICAgIGNvbnN0IHN0YXJ0QWNjZWxlcmF0ZVkgPSB0aW1lICogKG1heEhlaWdodCAtIG1pblBhcnRpY2xlWSkgKyBtaW5QYXJ0aWNsZVk7XHJcblxyXG4gICAgY29uc3QgbGVuZ3RoWSA9IG1heEhlaWdodCAtIHN0YXJ0QWNjZWxlcmF0ZVk7XHJcbiAgICBjb25zdCBhY2NlbGVyYXRlUmFkaXVzUG93ID1cclxuICAgICAgc3RhcnRBY2NlbGVyYXRlWCAqIHN0YXJ0QWNjZWxlcmF0ZVggKyBsZW5ndGhZICogbGVuZ3RoWTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlcy5sZW5ndGg7IGkgKz0gUEFSVElDTEVfQllURV9MRU5HVEgpIHtcclxuICAgICAgY29uc3QgeyB4LCB5LCBkeCwgZHksIGF4LCBheSwgYSB9ID1cclxuICAgICAgICBXc1RoYW5vc1NlcnZpY2UuZ2V0UGFydGljbGVJbmRpY2VzRm9yQmFzZShpKTtcclxuICAgICAgY29uc3QgcGFydGljbGVYID0gcGFydGljbGVzW3hdO1xyXG4gICAgICBjb25zdCBwYXJ0aWNsZVkgPSBwYXJ0aWNsZXNbeV07XHJcblxyXG4gICAgICAvLyBvbmx5IHVwZGF0ZSBwYXJ0aWNsZXMgdGhhdCBhcmUgaW5zaWRlIHZpZXcgYW5kIHZpc2libGVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHBhcnRpY2xlWCA+IG1heFdpZHRoIHx8XHJcbiAgICAgICAgcGFydGljbGVYIDwgMCB8fFxyXG4gICAgICAgIHBhcnRpY2xlWSA+IG1heEhlaWdodCB8fFxyXG4gICAgICAgIHBhcnRpY2xlWSA8IDAgfHxcclxuICAgICAgICBwYXJ0aWNsZXNbYV0gPCBNSU5fUEFSVElDTEVfQUxQSEFcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghKE1hdGguYWJzKHBhcnRpY2xlc1theF0pID4gMCB8fCBNYXRoLmFicyhwYXJ0aWNsZXNbYXldKSA+IDApKSB7XHJcbiAgICAgICAgbGV0IHBZTGVuZ3RoID0gbWF4SGVpZ2h0IC0gcGFydGljbGVZO1xyXG4gICAgICAgIGxldCBwWExlbmd0aCA9IHBhcnRpY2xlWDtcclxuXHJcbiAgICAgICAgLy8gd2UgY2FsY3VsYXRlIHNvbWUgcmFuZG9tIGxvb2tpbmcgbnVtYmVycyBhbmQgZnVuY3Rpb25zIHRvIGhhdmUgbmljZSBsb29raW5nIHZhcG9yaXppbmcgZnJvbnQgb2YgcGFydGljbGVzXHJcbiAgICAgICAgLy8gdG9kbyBjb25zaWRlciB0byB1c2Ugbm9pc2U7XHJcbiAgICAgICAgcFhMZW5ndGggKz0gTWF0aC50YW4oKHBYTGVuZ3RoIC8gMjAuMTIpICogdGltZSArIHNlZWQpICogMC41O1xyXG4gICAgICAgIHBYTGVuZ3RoICs9IChwYXJ0aWNsZVggJSBkZWx0YVRTZWMpICogMC41O1xyXG4gICAgICAgIHBYTGVuZ3RoICs9XHJcbiAgICAgICAgICBNYXRoLnNpbigocFhMZW5ndGggLyAzMCArIDcyMy4zOTQpICogdGltZSArIHNlZWQgKiAxMi41KSAqIDExO1xyXG4gICAgICAgIHBZTGVuZ3RoICs9IE1hdGgudGFuKChwWUxlbmd0aCAvIDAuNDUpICogdGltZSArIHNlZWQgKiAxLjUpICogMC41O1xyXG4gICAgICAgIHBZTGVuZ3RoICs9XHJcbiAgICAgICAgICBNYXRoLmNvcygocFlMZW5ndGggLyAxMDAgKyAyMzIzLjIzNCkgKiB0aW1lICsgc2VlZCAqIDQ1Ni4xKSAqIDIzO1xyXG5cclxuICAgICAgICBjb25zdCBwTGVuZ3RoID0gcFhMZW5ndGggKiBwWExlbmd0aCArIHBZTGVuZ3RoICogcFlMZW5ndGg7XHJcbiAgICAgICAgaWYgKHBMZW5ndGggPiBhY2NlbGVyYXRlUmFkaXVzUG93KSB7XHJcbiAgICAgICAgICBwYXJ0aWNsZXNbYXhdID0gTWF0aC5yYW5kb20oKTtcclxuICAgICAgICAgIHBhcnRpY2xlc1theV0gPSBNYXRoLnJhbmRvbSgpICogLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHVzZSBub2lzZSB0byBmbG93IGFsb25nIHZlbG9jaXR5IGZpZWxkXHJcbiAgICAgICAgY29uc3QgZmxvd0ZpZWxkQWNjID0gV3NUaGFub3NTZXJ2aWNlLmdldFhZRnJvbUZsb3dGaWVsZChcclxuICAgICAgICAgIG5vaXNlLFxyXG4gICAgICAgICAgc2VlZCxcclxuICAgICAgICAgIHBhcnRpY2xlWCxcclxuICAgICAgICAgIHBhcnRpY2xlWVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgYWNjZWxlcmF0aW9uWCA9IGZsb3dGaWVsZEFjY1swXTtcclxuICAgICAgICBjb25zdCBhY2NlbGVyYXRpb25ZID0gZmxvd0ZpZWxkQWNjWzFdO1xyXG4gICAgICAgIHBhcnRpY2xlc1theF0gKz0gYWNjZWxlcmF0aW9uWDtcclxuICAgICAgICBwYXJ0aWNsZXNbYXldICs9IGFjY2VsZXJhdGlvblk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vICogTWF0aC5wb3coMSArIGFuaW1hdGlvblQsIDQpXHJcbiAgICAgIHBhcnRpY2xlc1tkeF0gKz0gcGFydGljbGVzW2F4XSAqIHBhcnRpY2xlQWNjZWxlcmF0aW9uICogZGVsdGFUU2VjO1xyXG4gICAgICBwYXJ0aWNsZXNbZHldICs9IHBhcnRpY2xlc1theV0gKiBwYXJ0aWNsZUFjY2VsZXJhdGlvbiAqIGRlbHRhVFNlYztcclxuICAgICAgcGFydGljbGVzW3hdICs9IHBhcnRpY2xlc1tkeF0gKiBkZWx0YVRTZWM7XHJcbiAgICAgIHBhcnRpY2xlc1t5XSArPSBwYXJ0aWNsZXNbZHldICogZGVsdGFUU2VjO1xyXG4gICAgICAvLyBmYWRlIHBhcnRpY2xlIG91dCAoIHZlcnkgbGF0ZSk7XHJcbiAgICAgIHBhcnRpY2xlc1thXSAqPSAxIC0gTWF0aC5wb3coYW5pbWF0aW9uVCwgMTUpOyAvLyAyNTUgLSBNYXRoLnNxcnQocGFydGljbGVzW2R4XSAqIHBhcnRpY2xlc1tkeF0gKyBwYXJ0aWNsZXNbZHldICogcGFydGljbGVzW2R5XSkgLyAxLjI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBkcmF3UGFydGljbGVzKFxyXG4gICAgZHJhd0N0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxyXG4gICAgcGFydGljbGVzOiBGbG9hdDMyQXJyYXlcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZHJhd0N0eC5jYW52YXM7XHJcbiAgICBkcmF3Q3R4LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcclxuICAgIGNvbnN0IGltYWdlID0gZHJhd0N0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XHJcbiAgICBjb25zdCBpbWFnZURhdGEgPSBpbWFnZS5kYXRhO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0aWNsZXMubGVuZ3RoOyBpICs9IFBBUlRJQ0xFX0JZVEVfTEVOR1RIKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRpY2xlWCA9IHBhcnRpY2xlc1tpXTtcclxuICAgICAgY29uc3QgcGFydGljbGVZID0gcGFydGljbGVzW2kgKyAxXTtcclxuICAgICAgY29uc3QgcEkgPSBXc1RoYW5vc1NlcnZpY2UuZ2V0UGFydGljbGVJbmRpY2VzRm9yQmFzZShpKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHBhcnRpY2xlWCA+IHdpZHRoIHx8XHJcbiAgICAgICAgcGFydGljbGVYIDwgMCB8fFxyXG4gICAgICAgIHBhcnRpY2xlWSA+IGhlaWdodCB8fFxyXG4gICAgICAgIHBhcnRpY2xlWSA8IDAgfHxcclxuICAgICAgICBwYXJ0aWNsZXNbcEkuYV0gPCBNSU5fUEFSVElDTEVfQUxQSEFcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgeyByLCBnLCBiLCBhIH0gPSBXc1RoYW5vc1NlcnZpY2UuZ2V0Q29sb3JJbmRpY2VzRm9yQ29vcmQoXHJcbiAgICAgICAgfn5wYXJ0aWNsZXNbcEkueF0sXHJcbiAgICAgICAgfn5wYXJ0aWNsZXNbcEkueV0sXHJcbiAgICAgICAgd2lkdGhcclxuICAgICAgKTtcclxuICAgICAgaW1hZ2VEYXRhW3JdID0gfn5wYXJ0aWNsZXNbcEkucl07XHJcbiAgICAgIGltYWdlRGF0YVtnXSA9IH5+cGFydGljbGVzW3BJLmddO1xyXG4gICAgICBpbWFnZURhdGFbYl0gPSB+fnBhcnRpY2xlc1twSS5iXTtcclxuICAgICAgaW1hZ2VEYXRhW2FdID0gfn5wYXJ0aWNsZXNbcEkuYV07XHJcbiAgICB9XHJcbiAgICBkcmF3Q3R4LnB1dEltYWdlRGF0YShpbWFnZSwgMCwgMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBwcmVwYXJlQ2FudmFzRm9yVmFwb3JpemUoXHJcbiAgICBkaXZDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LFxyXG4gICAgbWF4UGFydGljbGVDb3VudDogbnVtYmVyXHJcbiAgKToge1xyXG4gICAgcGFydGljbGVzRGF0YTogUGFydGljbGVzRGF0YTtcclxuICAgIHJlc3VsdENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgfSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGRpdkNhbnZhcztcclxuXHJcbiAgICAvLyBzY2FsZSByZXN1bHQgY2FudmFzIHRvIGhhdmUgbW9yZSByb29tIHRvIGRyYXcgcGFydGljbGVzIHdoaWxlIHZhcG9yaXppbmc7XHJcbiAgICBjb25zdCByZXN1bHRIZWlnaHQgPSBoZWlnaHQgKiBIRUlHSFRfU0NBTEU7XHJcbiAgICBjb25zdCByZXN1bHRXaWR0aCA9IHdpZHRoICogV0lEVEhfU0NBTEU7XHJcbiAgICBjb25zdCByZXN1bHRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICByZXN1bHRDYW52YXMuaGVpZ2h0ID0gcmVzdWx0SGVpZ2h0O1xyXG4gICAgcmVzdWx0Q2FudmFzLndpZHRoID0gcmVzdWx0V2lkdGg7XHJcblxyXG4gICAgY29uc3QgaW1hZ2VEYXRhID0gZGl2Q2FudmFzXHJcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpXHJcbiAgICAgID8uZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgaWYgKGltYWdlRGF0YSA9PSBudWxsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJ0aWNsZXNEYXRhID0gV3NUaGFub3NTZXJ2aWNlLmNyZWF0ZVBhcnRpY2xlc0ZvckltYWdlRGF0YShcclxuICAgICAgaW1hZ2VEYXRhLFxyXG4gICAgICBtYXhQYXJ0aWNsZUNvdW50LFxyXG4gICAgICByZXN1bHRIZWlnaHRcclxuICAgICk7XHJcbiAgICByZXR1cm4geyByZXN1bHRDYW52YXMsIHBhcnRpY2xlc0RhdGEgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZVBhcnRpY2xlc0ZvckltYWdlRGF0YShcclxuICAgIGltYWdlRGF0YTogSW1hZ2VEYXRhLFxyXG4gICAgbWF4UGFydGljbGVDb3VudDogbnVtYmVyLFxyXG4gICAgcmVzdWx0SGVpZ2h0OiBudW1iZXJcclxuICApOiB7IG1pblBhcnRpY2xlWTogbnVtYmVyOyBtYXhQYXJ0aWNsZVg6IG51bWJlcjsgcGFydGljbGVzOiBGbG9hdDMyQXJyYXkgfSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGltYWdlRGF0YTtcclxuICAgIGxldCBwYXJ0aWNsZUNhbmRpZGF0ZXMgPSAwO1xyXG4gICAgbGV0IHBhcnRpY2xlQ291bnQgPSAwO1xyXG5cclxuICAgIGNvbnN0IHBhcnRpY2xlQ2FuZGlhdGVzTGlzdDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9W10gPSBbXTtcclxuICAgIGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcclxuICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XHJcbiAgICAgICAgY29uc3QgeyBhIH0gPSBXc1RoYW5vc1NlcnZpY2UuZ2V0Q29sb3JJbmRpY2VzRm9yQ29vcmQoeCwgeSwgd2lkdGgpO1xyXG4gICAgICAgIGlmIChpbWFnZURhdGEuZGF0YVthXSA+PSBNSU5fUEFSVElDTEVfQUxQSEEpIHtcclxuICAgICAgICAgIHBhcnRpY2xlQ2FuZGlkYXRlcysrO1xyXG4gICAgICAgICAgcGFydGljbGVDYW5kaWF0ZXNMaXN0LnB1c2goeyB4LCB5IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1heE51bVBhcnRpY2xlcyA9IE1hdGgubWluKHBhcnRpY2xlQ2FuZGlkYXRlcywgbWF4UGFydGljbGVDb3VudCk7XHJcbiAgICBjb25zdCBwYXJ0aWNsZXMgPSBuZXcgRmxvYXQzMkFycmF5KFxyXG4gICAgICBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiBtYXhOdW1QYXJ0aWNsZXMgKiBQQVJUSUNMRV9CWVRFX0xFTkdUSFxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgbWF4UGFydGljbGVYID0gMDtcclxuICAgIGxldCBtaW5QYXJ0aWNsZVkgPSByZXN1bHRIZWlnaHQ7XHJcbiAgICB3aGlsZSAocGFydGljbGVDb3VudCA8IG1heE51bVBhcnRpY2xlcykge1xyXG4gICAgICAvLyBzZWxlY3QgcmFuZG9tIGluZGV4IGZyb20gY2FuZGlhdGVzXHJcbiAgICAgIGNvbnN0IGluZGV4ID0gfn4oTWF0aC5yYW5kb20oKSAqIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdC5sZW5ndGgpO1xyXG4gICAgICBjb25zdCB7IHgsIHkgfSA9IHBhcnRpY2xlQ2FuZGlhdGVzTGlzdFtpbmRleF07XHJcblxyXG4gICAgICAvLyBvdmVyd3JpdGUgaW5kZXggd2l0aCBsYXN0IGVsZW1lbnQgdG8gcHJldmVudCBkb3VibGUgc2VsZWN0aW9uIG9mIHBhcnRpY2xlc1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICBwYXJ0aWNsZUNhbmRpYXRlc0xpc3RbaW5kZXhdID0gcGFydGljbGVDYW5kaWF0ZXNMaXN0LnBvcCgpITtcclxuXHJcbiAgICAgIG1heFBhcnRpY2xlWCA9IE1hdGgubWF4KG1heFBhcnRpY2xlWCwgeCk7XHJcbiAgICAgIG1pblBhcnRpY2xlWSA9IE1hdGgubWluKG1pblBhcnRpY2xlWSwgeSk7XHJcbiAgICAgIGNvbnN0IHsgZHgsIGR5LCBheCwgYXksIHIsIGcsIGIsIGEsIC4uLnh5IH0gPVxyXG4gICAgICAgIFdzVGhhbm9zU2VydmljZS5nZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKFxyXG4gICAgICAgICAgcGFydGljbGVDb3VudCAqIFBBUlRJQ0xFX0JZVEVfTEVOR1RIXHJcbiAgICAgICAgKTtcclxuICAgICAgcGFydGljbGVzW3h5LnhdID0geDtcclxuICAgICAgcGFydGljbGVzW3h5LnldID0geSArIHJlc3VsdEhlaWdodCAtIGhlaWdodDtcclxuICAgICAgcGFydGljbGVzW2R4XSA9IDA7XHJcbiAgICAgIHBhcnRpY2xlc1tkeV0gPSAwO1xyXG4gICAgICBwYXJ0aWNsZXNbYXhdID0gMDtcclxuICAgICAgcGFydGljbGVzW2F5XSA9IDA7XHJcblxyXG4gICAgICBjb25zdCBpbmRpY2VzSW1hZ2UgPSBXc1RoYW5vc1NlcnZpY2UuZ2V0Q29sb3JJbmRpY2VzRm9yQ29vcmQoeCwgeSwgd2lkdGgpO1xyXG5cclxuICAgICAgcGFydGljbGVzW3JdID0gaW1hZ2VEYXRhLmRhdGFbaW5kaWNlc0ltYWdlLnJdO1xyXG4gICAgICBwYXJ0aWNsZXNbZ10gPSBpbWFnZURhdGEuZGF0YVtpbmRpY2VzSW1hZ2UuZ107XHJcbiAgICAgIHBhcnRpY2xlc1tiXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5iXTtcclxuICAgICAgcGFydGljbGVzW2FdID0gaW1hZ2VEYXRhLmRhdGFbaW5kaWNlc0ltYWdlLmFdO1xyXG4gICAgICBwYXJ0aWNsZUNvdW50Kys7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBwYXJ0aWNsZXMsIG1heFBhcnRpY2xlWCwgbWluUGFydGljbGVZIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRYWUZyb21GbG93RmllbGQoXHJcbiAgICBub2lzZTogU2ltcGxleE5vaXNlLFxyXG4gICAgc2VlZDogbnVtYmVyLFxyXG4gICAgeDogbnVtYmVyLFxyXG4gICAgeTogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzYW1wbGVYID0gbm9pc2Uuc2NhbGVkM0QoeCwgeSwgc2VlZCArIDMzLjIzLCBGTE9XX0ZJRUxEX1JFUyk7XHJcbiAgICBjb25zdCBzYW1wbGVZID0gbm9pc2Uuc2NhbGVkM0QoeCwgc2VlZCAvIDEzLjIzLCB5LCBGTE9XX0ZJRUxEX1JFUykgKiAtMTtcclxuICAgIHJldHVybiBbc2FtcGxlWCwgc2FtcGxlWV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzdGFydCB0aGUgdmFwb3JpemUgZWZmZWN0LlxyXG4gICAqXHJcbiAgICogSXQncyBydW5uaW5nIG91dHNpZGUgdGhlIG5nWm9uZS5cclxuICAgKi9cclxuICB2YXBvcml6ZShlbGVtOiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8QW5pbWF0aW9uU3RhdGU+IHtcclxuICAgIHJldHVybiB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy52YXBvcml6ZUludGVybihlbGVtKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhcG9yaXplSW50ZXJuKGVsZW06IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxBbmltYXRpb25TdGF0ZT4ge1xyXG4gICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gZWxlbS5zdHlsZS5vcGFjaXR5IHx8ICcxJztcclxuICAgIGVsZW0uc3R5bGUudHJhbnNpdGlvbiA9IGBvcGFjaXR5ICR7TWF0aC5mbG9vcihcclxuICAgICAgdGhpcy50aGFub3NPcHRpb25zLmFuaW1hdGlvbkxlbmd0aCAqIDAuOFxyXG4gICAgKX1tcyBlYXNlLW91dGA7XHJcbiAgICBjb25zdCBub2lzZSA9IG5ldyBTaW1wbGV4Tm9pc2UoeyBmcmVxdWVuY3k6IDAuMDEsIG1pbjogMCB9KTtcclxuICAgIGNvbnN0IHNlZWQgPSBuZXcgRGF0ZSgpLmdldERhdGUoKSAqIE1hdGgucmFuZG9tKCk7XHJcbiAgICBjb25zdCBodG1sMkNhbnZhc1Byb21pc2U6IFByb21pc2U8SFRNTENhbnZhc0VsZW1lbnQ+ID0gaHRtbDJjYW52YXMoZWxlbSwge1xyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bGwsXHJcbiAgICAgIHNjYWxlOiAxLFxyXG4gICAgICBhbGxvd1RhaW50OiB0cnVlLFxyXG4gICAgICB3aW5kb3dIZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcclxuICAgICAgd2luZG93V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxyXG4gICAgICBzY3JvbGxZOiAtd2luZG93LnNjcm9sbFksXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZnJvbShodG1sMkNhbnZhc1Byb21pc2UpLnBpcGUoXHJcbiAgICAgIG1hcCgoY2FudmFzRnJvbUh0bWxFbGVtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2FudmFzQW5kUGFydGljbGVzID0gV3NUaGFub3NTZXJ2aWNlLnByZXBhcmVDYW52YXNGb3JWYXBvcml6ZShcclxuICAgICAgICAgIGNhbnZhc0Zyb21IdG1sRWxlbSxcclxuICAgICAgICAgIHRoaXMudGhhbm9zT3B0aW9ucy5tYXhQYXJ0aWNsZUNvdW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCB7IHJlc3VsdENhbnZhcyB9ID0gY2FudmFzQW5kUGFydGljbGVzO1xyXG4gICAgICAgIGlmIChlbGVtLnBhcmVudEVsZW1lbnQpIHtcclxuICAgICAgICAgIGVsZW0ucGFyZW50RWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9XHJcbiAgICAgICAgICAgIGVsZW0ucGFyZW50RWxlbWVudC5zdHlsZS5wb3NpdGlvbiB8fCAncmVsYXRpdmUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHRDYW52YXMuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS5sZWZ0ID0gMCArICdweCc7XHJcbiAgICAgICAgcmVzdWx0Q2FudmFzLnN0eWxlLnRvcCA9XHJcbiAgICAgICAgICAnLScgKyBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAqIChIRUlHSFRfU0NBTEUgLSAxKSArICdweCc7XHJcbiAgICAgICAgcmVzdWx0Q2FudmFzLnN0eWxlLnpJbmRleCA9ICcyMDAwJztcclxuICAgICAgICByZXN1bHRDYW52YXMuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcclxuXHJcbiAgICAgICAgZWxlbS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWJlZ2luJywgcmVzdWx0Q2FudmFzKTtcclxuICAgICAgICAvLyB0aGlzIHNob3VsZCBzdGFydCB0aGUgdHJhbnNpdGlvbiBhYm92ZSBkZWZpbmVkXHJcbiAgICAgICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xyXG4gICAgICAgIHJldHVybiBjYW52YXNBbmRQYXJ0aWNsZXM7XHJcbiAgICAgIH0pLFxyXG4gICAgICBzd2l0Y2hNYXAoKHsgcmVzdWx0Q2FudmFzLCBwYXJ0aWNsZXNEYXRhIH0pID0+IHtcclxuICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgY29uc3QgeyBhbmltYXRpb25MZW5ndGgsIG1heFBhcnRpY2xlQ291bnQsIHBhcnRpY2xlQWNjZWxlcmF0aW9uIH0gPVxyXG4gICAgICAgICAgdGhpcy50aGFub3NPcHRpb25zO1xyXG4gICAgICAgIHJldHVybiBpbnRlcnZhbCgxMDAwIC8gNjAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKS5waXBlKFxyXG4gICAgICAgICAgdGltZUludGVydmFsKCksXHJcbiAgICAgICAgICB0YXAoKGRlbHRhVCkgPT4gKHRpbWUgKz0gZGVsdGFULmludGVydmFsKSksXHJcbiAgICAgICAgICBtYXAoXHJcbiAgICAgICAgICAgIChkZWx0YVQpID0+XHJcbiAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgIGRlbHRhVFNlYzogZGVsdGFULmludGVydmFsIC8gMTAwMCxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGlvblQ6IHRpbWUgLyBhbmltYXRpb25MZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogcmVzdWx0Q2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiByZXN1bHRDYW52YXMuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgIH0gYXMgQW5pbWF0aW9uU3RhdGUpXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgdGFwKChhbmltYXRpb25TdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgICBXc1RoYW5vc1NlcnZpY2UudXBkYXRlUGFydGljbGVzKHtcclxuICAgICAgICAgICAgICBwYXJ0aWNsZXNEYXRhLFxyXG4gICAgICAgICAgICAgIGFuaW1hdGlvblN0YXRlLFxyXG4gICAgICAgICAgICAgIHRoYW5vc09wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkxlbmd0aCxcclxuICAgICAgICAgICAgICAgIG1heFBhcnRpY2xlQ291bnQsXHJcbiAgICAgICAgICAgICAgICBwYXJ0aWNsZUFjY2VsZXJhdGlvbixcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG5vaXNlLFxyXG4gICAgICAgICAgICAgIHNlZWQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gcmVzdWx0Q2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgV3NUaGFub3NTZXJ2aWNlLmRyYXdQYXJ0aWNsZXMoY29udGV4dCwgcGFydGljbGVzRGF0YS5wYXJ0aWNsZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHRha2VXaGlsZSgoYW5pbWF0aW9uU3RhdGUpID0+IGFuaW1hdGlvblN0YXRlLmFuaW1hdGlvblQgPD0gMSksXHJcbiAgICAgICAgICB0YXAoe1xyXG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHRDYW52YXMucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
259
+ }] }, { type: i0.NgZone }]; } });
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFFSCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsRUFDSCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBR3BFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBcUM1QixNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUVVLGFBQThCLEVBQzlCLE1BQWM7UUFEZCxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUksTUFBTSxDQUFDLHlCQUF5QixDQUFDLElBQVk7UUFDbkQsT0FBTztZQUNMLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDO1lBQ1gsRUFBRSxFQUFFLElBQUksR0FBRyxD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YUFBYSxFQUFFO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixvQkFBb0I7cUJBQ3JCO29CQUNELEtBQUs7b0JBQ0wsSUFBSTtpQkFDTCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsZUFBZSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqRTtZQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsRUFDN0QsR0FBRyxDQUFDO2dCQUNGLFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQ2IsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQy9CLENBQUM7YUFDRixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs0R0FqVlUsZUFBZSxrQkFFaEIsdUJBQXVCO2dIQUZ0QixlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUc3QixNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRlZmF1bHQgYXMgaHRtbDJjYW52YXMgfSBmcm9tICdodG1sMmNhbnZhcyc7XG5pbXBvcnQge1xuICBhbmltYXRpb25GcmFtZVNjaGVkdWxlcixcbiAgZnJvbSxcbiAgaW50ZXJ2YWwsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3dpdGNoTWFwLFxuICB0YWtlV2hpbGUsXG4gIHRhcCxcbiAgdGltZUludGVydmFsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpbXBsZXhOb2lzZSB9IGZyb20gJy4vc2ltcGxleC1ub2lzZSc7XG5pbXBvcnQgeyBXU19USEFOT1NfT1BUSU9OU19UT0tFTiB9IGZyb20gJy4vd3MtdGhhbm9zLW9wdGlvbnMudG9rZW4nO1xuaW1wb3J0IHR5cGUgeyBXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL3dzLXRoYW5vcy5vcHRpb25zJztcblxuY29uc3QgUEFSVElDTEVfQllURV9MRU5HVEggPSAxMDtcbmNvbnN0IE1JTl9QQVJUSUNMRV9BTFBIQSA9IH5+KDI1NSAqIDAuMDEpO1xuY29uc3QgSEVJR0hUX1NDQUxFID0gNTtcbmNvbnN0IFdJRFRIX1NDQUxFID0gMjtcbmNvbnN0IEZMT1dfRklFTERfUkVTID0gMC4wNTtcblxuaW50ZXJmYWNlIFBhcnRpY2xlc0RhdGEge1xuICBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheTtcbiAgbWF4UGFydGljbGVYOiBudW1iZXI7XG4gIG1pblBhcnRpY2xlWTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQW5pbWF0aW9uU3RhdGUge1xuICBkZWx0YVRTZWM6IG51bWJlcjtcbiAgYW5pbWF0aW9uVDogbnVtYmVyO1xuICBtYXhXaWR0aDogbnVtYmVyO1xuICBtYXhIZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFVwZGF0ZVBhcnRpY2xlUGFyYW1zIHtcbiAgcGFydGljbGVzRGF0YTogUGFydGljbGVzRGF0YTtcbiAgYW5pbWF0aW9uU3RhdGU6IEFuaW1hdGlvblN0YXRlO1xuICB0aGFub3NPcHRpb25zOiBXc1RoYW5vc09wdGlvbnM7XG4gIG5vaXNlOiBTaW1wbGV4Tm9pc2U7XG4gIHNlZWQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFBhcnRpY2xlSW5kaWNlcyB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBkeDogbnVtYmVyO1xuICBkeTogbnVtYmVyO1xuICBheDogbnVtYmVyO1xuICBheTogbnVtYmVyO1xuICByOiBudW1iZXI7XG4gIGc6IG51bWJlcjtcbiAgYjogbnVtYmVyO1xuICBhOiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV3NUaGFub3NTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChXU19USEFOT1NfT1BUSU9OU19UT0tFTilcbiAgICBwcml2YXRlIHRoYW5vc09wdGlvbnM6IFdzVGhhbm9zT3B0aW9ucyxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge31cblxuICBwcml2YXRlIHN0YXRpYyBnZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGJhc2U6IG51bWJlcik6IFBhcnRpY2xlSW5kaWNlcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGJhc2UsXG4gICAgICB5OiBiYXNlICsgMSxcbiAgICAgIGR4OiBiYXNlICsgMixcbiAgICAgIGR5OiBiYXNlICsgMyxcbiAgICAgIGF4OiBiYXNlICsgNCxcbiAgICAgIGF5OiBiYXNlICsgNSxcbiAgICAgIHI6IGJhc2UgKyA2LFxuICAgICAgZzogYmFzZSArIDcsXG4gICAgICBiOiBiYXNlICsgOCxcbiAgICAgIGE6IGJhc2UgKyA5LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRDb2xvckluZGljZXNGb3JDb29yZChcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIHdpZHRoOiBudW1iZXJcbiAgKTogeyBhOiBudW1iZXI7IHI6IG51bWJlcjsgYjogbnVtYmVyOyBnOiBudW1iZXIgfSB7XG4gICAgY29uc3QgcmVkID0geSAqICh3aWR0aCAqIDQpICsgeCAqIDQ7XG4gICAgcmV0dXJuIHsgcjogcmVkLCBnOiByZWQgKyAxLCBiOiByZWQgKyAyLCBhOiByZWQgKyAzIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB1cGRhdGVQYXJ0aWNsZXMoe1xuICAgIHNlZWQsXG4gICAgbm9pc2UsXG4gICAgcGFydGljbGVzRGF0YSxcbiAgICB0aGFub3NPcHRpb25zLFxuICAgIGFuaW1hdGlvblN0YXRlLFxuICB9OiBVcGRhdGVQYXJ0aWNsZVBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgZGVsdGFUU2VjLCBhbmltYXRpb25ULCBtYXhXaWR0aCwgbWF4SGVpZ2h0IH0gPSBhbmltYXRpb25TdGF0ZTtcbiAgICBjb25zdCB7IHBhcnRpY2xlQWNjZWxlcmF0aW9uIH0gPSB0aGFub3NPcHRpb25zO1xuICAgIGNvbnN0IHsgcGFydGljbGVzLCBtYXhQYXJ0aWNsZVgsIG1pblBhcnRpY2xlWSB9ID0gcGFydGljbGVzRGF0YTtcblxuICAgIC8vIHRoZSB0aW1lIGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSB2YXBvcml6YXRpb24gZnJvbnQuXG4gICAgY29uc3QgdGltZSA9IE1hdGguc2luKGFuaW1hdGlvblQgKiAoTWF0aC5QSSAvIDIpKSAqIDEuMTtcblxuICAgIGNvbnN0IHN0YXJ0QWNjZWxlcmF0ZVggPSBtYXhQYXJ0aWNsZVggLSB0aW1lICogbWF4UGFydGljbGVYO1xuICAgIGNvbnN0IHN0YXJ0QWNjZWxlcmF0ZVkgPSB0aW1lICogKG1heEhlaWdodCAtIG1pblBhcnRpY2xlWSkgKyBtaW5QYXJ0aWNsZVk7XG5cbiAgICBjb25zdCBsZW5ndGhZID0gbWF4SGVpZ2h0IC0gc3RhcnRBY2NlbGVyYXRlWTtcbiAgICBjb25zdCBhY2NlbGVyYXRlUmFkaXVzUG93ID1cbiAgICAgIHN0YXJ0QWNjZWxlcmF0ZVggKiBzdGFydEFjY2VsZXJhdGVYICsgbGVuZ3RoWSAqIGxlbmd0aFk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlcy5sZW5ndGg7IGkgKz0gUEFSVElDTEVfQllURV9MRU5HVEgpIHtcbiAgICAgIGNvbnN0IHsgeCwgeSwgZHgsIGR5LCBheCwgYXksIGEgfSA9XG4gICAgICAgIFdzVGhhbm9zU2VydmljZS5nZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGkpO1xuICAgICAgY29uc3QgcGFydGljbGVYID0gcGFydGljbGVzW3hdO1xuICAgICAgY29uc3QgcGFydGljbGVZID0gcGFydGljbGVzW3ldO1xuXG4gICAgICAvLyBvbmx5IHVwZGF0ZSBwYXJ0aWNsZXMgdGhhdCBhcmUgaW5zaWRlIHZpZXcgYW5kIHZpc2libGVcbiAgICAgIGlmIChcbiAgICAgICAgcGFydGljbGVYID4gbWF4V2lkdGggfHxcbiAgICAgICAgcGFydGljbGVYIDwgMCB8fFxuICAgICAgICBwYXJ0aWNsZVkgPiBtYXhIZWlnaHQgfHxcbiAgICAgICAgcGFydGljbGVZIDwgMCB8fFxuICAgICAgICBwYXJ0aWNsZXNbYV0gPCBNSU5fUEFSVElDTEVfQUxQSEFcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEoTWF0aC5hYnMocGFydGljbGVzW2F4XSkgPiAwIHx8IE1hdGguYWJzKHBhcnRpY2xlc1theV0pID4gMCkpIHtcbiAgICAgICAgbGV0IHBZTGVuZ3RoID0gbWF4SGVpZ2h0IC0gcGFydGljbGVZO1xuICAgICAgICBsZXQgcFhMZW5ndGggPSBwYXJ0aWNsZVg7XG5cbiAgICAgICAgLy8gd2UgY2FsY3VsYXRlIHNvbWUgcmFuZG9tIGxvb2tpbmcgbnVtYmVycyBhbmQgZnVuY3Rpb25zIHRvIGhhdmUgbmljZSBsb29raW5nIHZhcG9yaXppbmcgZnJvbnQgb2YgcGFydGljbGVzXG4gICAgICAgIC8vIHRvZG8gY29uc2lkZXIgdG8gdXNlIG5vaXNlO1xuICAgICAgICBwWExlbmd0aCArPSBNYXRoLnRhbigocFhMZW5ndGggLyAyMC4xMikgKiB0aW1lICsgc2VlZCkgKiAwLjU7XG4gICAgICAgIHBYTGVuZ3RoICs9IChwYXJ0aWNsZVggJSBkZWx0YVRTZWMpICogMC41O1xuICAgICAgICBwWExlbmd0aCArPVxuICAgICAgICAgIE1hdGguc2luKChwWExlbmd0aCAvIDMwICsgNzIzLjM5NCkgKiB0aW1lICsgc2VlZCAqIDEyLjUpICogMTE7XG4gICAgICAgIHBZTGVuZ3RoICs9IE1hdGgudGFuKChwWUxlbmd0aCAvIDAuNDUpICogdGltZSArIHNlZWQgKiAxLjUpICogMC41O1xuICAgICAgICBwWUxlbmd0aCArPVxuICAgICAgICAgIE1hdGguY29zKChwWUxlbmd0aCAvIDEwMCArIDIzMjMuMjM0KSAqIHRpbWUgKyBzZWVkICogNDU2LjEpICogMjM7XG5cbiAgICAgICAgY29uc3QgcExlbmd0aCA9IHBYTGVuZ3RoICogcFhMZW5ndGggKyBwWUxlbmd0aCAqIHBZTGVuZ3RoO1xuICAgICAgICBpZiAocExlbmd0aCA+IGFjY2VsZXJhdGVSYWRpdXNQb3cpIHtcbiAgICAgICAgICBwYXJ0aWNsZXNbYXhdID0gTWF0aC5yYW5kb20oKTtcbiAgICAgICAgICBwYXJ0aWNsZXNbYXldID0gTWF0aC5yYW5kb20oKSAqIC0xO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1c2Ugbm9pc2UgdG8gZmxvdyBhbG9uZyB2ZWxvY2l0eSBmaWVsZFxuICAgICAgICBjb25zdCBmbG93RmllbGRBY2MgPSBXc1RoYW5vc1NlcnZpY2UuZ2V0WFlGcm9tRmxvd0ZpZWxkKFxuICAgICAgICAgIG5vaXNlLFxuICAgICAgICAgIHNlZWQsXG4gICAgICAgICAgcGFydGljbGVYLFxuICAgICAgICAgIHBhcnRpY2xlWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBhY2NlbGVyYXRpb25YID0gZmxvd0ZpZWxkQWNjWzBdO1xuICAgICAgICBjb25zdCBhY2NlbGVyYXRpb25ZID0gZmxvd0ZpZWxkQWNjWzFdO1xuICAgICAgICBwYXJ0aWNsZXNbYXhdICs9IGFjY2VsZXJhdGlvblg7XG4gICAgICAgIHBhcnRpY2xlc1theV0gKz0gYWNjZWxlcmF0aW9uWTtcbiAgICAgIH1cblxuICAgICAgLy8gKiBNYXRoLnBvdygxICsgYW5pbWF0aW9uVCwgNClcbiAgICAgIHBhcnRpY2xlc1tkeF0gKz0gcGFydGljbGVzW2F4XSAqIHBhcnRpY2xlQWNjZWxlcmF0aW9uICogZGVsdGFUU2VjO1xuICAgICAgcGFydGljbGVzW2R5XSArPSBwYXJ0aWNsZXNbYXldICogcGFydGljbGVBY2NlbGVyYXRpb24gKiBkZWx0YVRTZWM7XG4gICAgICBwYXJ0aWNsZXNbeF0gKz0gcGFydGljbGVzW2R4XSAqIGRlbHRhVFNlYztcbiAgICAgIHBhcnRpY2xlc1t5XSArPSBwYXJ0aWNsZXNbZHldICogZGVsdGFUU2VjO1xuICAgICAgLy8gZmFkZSBwYXJ0aWNsZSBvdXQgKCB2ZXJ5IGxhdGUpO1xuICAgICAgcGFydGljbGVzW2FdICo9IDEgLSBNYXRoLnBvdyhhbmltYXRpb25ULCAxNSk7IC8vIDI1NSAtIE1hdGguc3FydChwYXJ0aWNsZXNbZHhdICogcGFydGljbGVzW2R4XSArIHBhcnRpY2xlc1tkeV0gKiBwYXJ0aWNsZXNbZHldKSAvIDEuMjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBkcmF3UGFydGljbGVzKFxuICAgIGRyYXdDdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheVxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGRyYXdDdHguY2FudmFzO1xuICAgIGRyYXdDdHguY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIGNvbnN0IGltYWdlID0gZHJhd0N0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgY29uc3QgaW1hZ2VEYXRhID0gaW1hZ2UuZGF0YTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlcy5sZW5ndGg7IGkgKz0gUEFSVElDTEVfQllURV9MRU5HVEgpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2xlWCA9IHBhcnRpY2xlc1tpXTtcbiAgICAgIGNvbnN0IHBhcnRpY2xlWSA9IHBhcnRpY2xlc1tpICsgMV07XG4gICAgICBjb25zdCBwSSA9IFdzVGhhbm9zU2VydmljZS5nZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGkpO1xuICAgICAgaWYgKFxuICAgICAgICBwYXJ0aWNsZVggPiB3aWR0aCB8fFxuICAgICAgICBwYXJ0aWNsZVggPCAwIHx8XG4gICAgICAgIHBhcnRpY2xlWSA+IGhlaWdodCB8fFxuICAgICAgICBwYXJ0aWNsZVkgPCAwIHx8XG4gICAgICAgIHBhcnRpY2xlc1twSS5hXSA8IE1JTl9QQVJUSUNMRV9BTFBIQVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgeyByLCBnLCBiLCBhIH0gPSBXc1RoYW5vc1NlcnZpY2UuZ2V0Q29sb3JJbmRpY2VzRm9yQ29vcmQoXG4gICAgICAgIH5+cGFydGljbGVzW3BJLnhdLFxuICAgICAgICB+fnBhcnRpY2xlc1twSS55XSxcbiAgICAgICAgd2lkdGhcbiAgICAgICk7XG4gICAgICBpbWFnZURhdGFbcl0gPSB+fnBhcnRpY2xlc1twSS5yXTtcbiAgICAgIGltYWdlRGF0YVtnXSA9IH5+cGFydGljbGVzW3BJLmddO1xuICAgICAgaW1hZ2VEYXRhW2JdID0gfn5wYXJ0aWNsZXNbcEkuYl07XG4gICAgICBpbWFnZURhdGFbYV0gPSB+fnBhcnRpY2xlc1twSS5hXTtcbiAgICB9XG4gICAgZHJhd0N0eC5wdXRJbWFnZURhdGEoaW1hZ2UsIDAsIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZUNhbnZhc0ZvclZhcG9yaXplKFxuICAgIGRpdkNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXG4gICAgbWF4UGFydGljbGVDb3VudDogbnVtYmVyXG4gICk6IHtcbiAgICBwYXJ0aWNsZXNEYXRhOiBQYXJ0aWNsZXNEYXRhO1xuICAgIHJlc3VsdENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIH0ge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZGl2Q2FudmFzO1xuXG4gICAgLy8gc2NhbGUgcmVzdWx0IGNhbnZhcyB0byBoYXZlIG1vcmUgcm9vbSB0byBkcmF3IHBhcnRpY2xlcyB3aGlsZSB2YXBvcml6aW5nO1xuICAgIGNvbnN0IHJlc3VsdEhlaWdodCA9IGhlaWdodCAqIEhFSUdIVF9TQ0FMRTtcbiAgICBjb25zdCByZXN1bHRXaWR0aCA9IHdpZHRoICogV0lEVEhfU0NBTEU7XG4gICAgY29uc3QgcmVzdWx0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIHJlc3VsdENhbnZhcy5oZWlnaHQgPSByZXN1bHRIZWlnaHQ7XG4gICAgcmVzdWx0Q2FudmFzLndpZHRoID0gcmVzdWx0V2lkdGg7XG5cbiAgICBjb25zdCBpbWFnZURhdGEgPSBkaXZDYW52YXNcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpXG4gICAgICA/LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICBpZiAoaW1hZ2VEYXRhID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzJyk7XG4gICAgfVxuICAgIGNvbnN0IHBhcnRpY2xlc0RhdGEgPSBXc1RoYW5vc1NlcnZpY2UuY3JlYXRlUGFydGljbGVzRm9ySW1hZ2VEYXRhKFxuICAgICAgaW1hZ2VEYXRhLFxuICAgICAgbWF4UGFydGljbGVDb3VudCxcbiAgICAgIHJlc3VsdEhlaWdodFxuICAgICk7XG4gICAgcmV0dXJuIHsgcmVzdWx0Q2FudmFzLCBwYXJ0aWNsZXNEYXRhIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVQYXJ0aWNsZXNGb3JJbWFnZURhdGEoXG4gICAgaW1hZ2VEYXRhOiBJbWFnZURhdGEsXG4gICAgbWF4UGFydGljbGVDb3VudDogbnVtYmVyLFxuICAgIHJlc3VsdEhlaWdodDogbnVtYmVyXG4gICk6IHsgbWluUGFydGljbGVZOiBudW1iZXI7IG1heFBhcnRpY2xlWDogbnVtYmVyOyBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheSB9IHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGltYWdlRGF0YTtcbiAgICBsZXQgcGFydGljbGVDYW5kaWRhdGVzID0gMDtcbiAgICBsZXQgcGFydGljbGVDb3VudCA9IDA7XG5cbiAgICBjb25zdCBwYXJ0aWNsZUNhbmRpYXRlc0xpc3Q6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVtdID0gW107XG4gICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgIGNvbnN0IHsgYSB9ID0gV3NUaGFub3NTZXJ2aWNlLmdldENvbG9ySW5kaWNlc0ZvckNvb3JkKHgsIHksIHdpZHRoKTtcbiAgICAgICAgaWYgKGltYWdlRGF0YS5kYXRhW2FdID49IE1JTl9QQVJUSUNMRV9BTFBIQSkge1xuICAgICAgICAgIHBhcnRpY2xlQ2FuZGlkYXRlcysrO1xuICAgICAgICAgIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdC5wdXNoKHsgeCwgeSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1heE51bVBhcnRpY2xlcyA9IE1hdGgubWluKHBhcnRpY2xlQ2FuZGlkYXRlcywgbWF4UGFydGljbGVDb3VudCk7XG4gICAgY29uc3QgcGFydGljbGVzID0gbmV3IEZsb2F0MzJBcnJheShcbiAgICAgIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIG1heE51bVBhcnRpY2xlcyAqIFBBUlRJQ0xFX0JZVEVfTEVOR1RIXG4gICAgKTtcblxuICAgIGxldCBtYXhQYXJ0aWNsZVggPSAwO1xuICAgIGxldCBtaW5QYXJ0aWNsZVkgPSByZXN1bHRIZWlnaHQ7XG4gICAgd2hpbGUgKHBhcnRpY2xlQ291bnQgPCBtYXhOdW1QYXJ0aWNsZXMpIHtcbiAgICAgIC8vIHNlbGVjdCByYW5kb20gaW5kZXggZnJvbSBjYW5kaWF0ZXNcbiAgICAgIGNvbnN0IGluZGV4ID0gfn4oTWF0aC5yYW5kb20oKSAqIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdC5sZW5ndGgpO1xuICAgICAgY29uc3QgeyB4LCB5IH0gPSBwYXJ0aWNsZUNhbmRpYXRlc0xpc3RbaW5kZXhdO1xuXG4gICAgICAvLyBvdmVyd3JpdGUgaW5kZXggd2l0aCBsYXN0IGVsZW1lbnQgdG8gcHJldmVudCBkb3VibGUgc2VsZWN0aW9uIG9mIHBhcnRpY2xlc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdFtpbmRleF0gPSBwYXJ0aWNsZUNhbmRpYXRlc0xpc3QucG9wKCkhO1xuXG4gICAgICBtYXhQYXJ0aWNsZVggPSBNYXRoLm1heChtYXhQYXJ0aWNsZVgsIHgpO1xuICAgICAgbWluUGFydGljbGVZID0gTWF0aC5taW4obWluUGFydGljbGVZLCB5KTtcbiAgICAgIGNvbnN0IHsgZHgsIGR5LCBheCwgYXksIHIsIGcsIGIsIGEsIC4uLnh5IH0gPVxuICAgICAgICBXc1RoYW5vc1NlcnZpY2UuZ2V0UGFydGljbGVJbmRpY2VzRm9yQmFzZShcbiAgICAgICAgICBwYXJ0aWNsZUNvdW50ICogUEFSVElDTEVfQllURV9MRU5HVEhcbiAgICAgICAgKTtcbiAgICAgIHBhcnRpY2xlc1t4eS54XSA9IHg7XG4gICAgICBwYXJ0aWNsZXNbeHkueV0gPSB5ICsgcmVzdWx0SGVpZ2h0IC0gaGVpZ2h0O1xuICAgICAgcGFydGljbGVzW2R4XSA9IDA7XG4gICAgICBwYXJ0aWNsZXNbZHldID0gMDtcbiAgICAgIHBhcnRpY2xlc1theF0gPSAwO1xuICAgICAgcGFydGljbGVzW2F5XSA9IDA7XG5cbiAgICAgIGNvbnN0IGluZGljZXNJbWFnZSA9IFdzVGhhbm9zU2VydmljZS5nZXRDb2xvckluZGljZXNGb3JDb29yZCh4LCB5LCB3aWR0aCk7XG5cbiAgICAgIHBhcnRpY2xlc1tyXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5yXTtcbiAgICAgIHBhcnRpY2xlc1tnXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5nXTtcbiAgICAgIHBhcnRpY2xlc1tiXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5iXTtcbiAgICAgIHBhcnRpY2xlc1thXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5hXTtcbiAgICAgIHBhcnRpY2xlQ291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIHsgcGFydGljbGVzLCBtYXhQYXJ0aWNsZVgsIG1pblBhcnRpY2xlWSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0WFlGcm9tRmxvd0ZpZWxkKFxuICAgIG5vaXNlOiBTaW1wbGV4Tm9pc2UsXG4gICAgc2VlZDogbnVtYmVyLFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXJcbiAgKSB7XG4gICAgY29uc3Qgc2FtcGxlWCA9IG5vaXNlLnNjYWxlZDNEKHgsIHksIHNlZWQgKyAzMy4yMywgRkxPV19GSUVMRF9SRVMpO1xuICAgIGNvbnN0IHNhbXBsZVkgPSBub2lzZS5zY2FsZWQzRCh4LCBzZWVkIC8gMTMuMjMsIHksIEZMT1dfRklFTERfUkVTKSAqIC0xO1xuICAgIHJldHVybiBbc2FtcGxlWCwgc2FtcGxlWV07XG4gIH1cblxuICAvKipcbiAgICogc3RhcnQgdGhlIHZhcG9yaXplLWVmZmVjdC5cbiAgICpcbiAgICogSXQncyBydW5uaW5nIG91dHNpZGUgdGhlIG5nWm9uZS5cbiAgICovXG4gIHZhcG9yaXplKGVsZW06IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxBbmltYXRpb25TdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLnZhcG9yaXplSW50ZXJuKGVsZW0pKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFwb3JpemVJbnRlcm4oZWxlbTogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPEFuaW1hdGlvblN0YXRlPiB7XG4gICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gZWxlbS5zdHlsZS5vcGFjaXR5IHx8ICcxJztcbiAgICBlbGVtLnN0eWxlLnRyYW5zaXRpb24gPSBgb3BhY2l0eSAke01hdGguZmxvb3IoXG4gICAgICB0aGlzLnRoYW5vc09wdGlvbnMuYW5pbWF0aW9uTGVuZ3RoICogMC44XG4gICAgKX1tcyBlYXNlLW91dGA7XG4gICAgY29uc3Qgbm9pc2UgPSBuZXcgU2ltcGxleE5vaXNlKHsgZnJlcXVlbmN5OiAwLjAxLCBtaW46IDAgfSk7XG4gICAgY29uc3Qgc2VlZCA9IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICogTWF0aC5yYW5kb20oKTtcbiAgICBjb25zdCBodG1sMkNhbnZhc1Byb21pc2U6IFByb21pc2U8SFRNTENhbnZhc0VsZW1lbnQ+ID0gaHRtbDJjYW52YXMoZWxlbSwge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBudWxsLFxuICAgICAgc2NhbGU6IDEsXG4gICAgICBhbGxvd1RhaW50OiB0cnVlLFxuICAgICAgd2luZG93SGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICB3aW5kb3dXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICBzY3JvbGxZOiAtd2luZG93LnNjcm9sbFksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJvbShodG1sMkNhbnZhc1Byb21pc2UpLnBpcGUoXG4gICAgICBtYXAoKGNhbnZhc0Zyb21IdG1sRWxlbSkgPT4ge1xuICAgICAgICBjb25zdCBjYW52YXNBbmRQYXJ0aWNsZXMgPSBXc1RoYW5vc1NlcnZpY2UucHJlcGFyZUNhbnZhc0ZvclZhcG9yaXplKFxuICAgICAgICAgIGNhbnZhc0Zyb21IdG1sRWxlbSxcbiAgICAgICAgICB0aGlzLnRoYW5vc09wdGlvbnMubWF4UGFydGljbGVDb3VudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB7IHJlc3VsdENhbnZhcyB9ID0gY2FudmFzQW5kUGFydGljbGVzO1xuICAgICAgICBpZiAoZWxlbS5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgZWxlbS5wYXJlbnRFbGVtZW50LnN0eWxlLnBvc2l0aW9uID1cbiAgICAgICAgICAgIGVsZW0ucGFyZW50RWxlbWVudC5zdHlsZS5wb3NpdGlvbiB8fCAncmVsYXRpdmUnO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS5sZWZ0ID0gMCArICdweCc7XG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS50b3AgPVxuICAgICAgICAgICctJyArIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ICogKEhFSUdIVF9TQ0FMRSAtIDEpICsgJ3B4JztcbiAgICAgICAgcmVzdWx0Q2FudmFzLnN0eWxlLnpJbmRleCA9ICcyMDAwJztcbiAgICAgICAgcmVzdWx0Q2FudmFzLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG5cbiAgICAgICAgZWxlbS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWJlZ2luJywgcmVzdWx0Q2FudmFzKTtcbiAgICAgICAgLy8gdGhpcyBzaG91bGQgc3RhcnQgdGhlIHRyYW5zaXRpb24gYWJvdmUgZGVmaW5lZFxuICAgICAgICBlbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIHJldHVybiBjYW52YXNBbmRQYXJ0aWNsZXM7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoeyByZXN1bHRDYW52YXMsIHBhcnRpY2xlc0RhdGEgfSkgPT4ge1xuICAgICAgICBsZXQgdGltZSA9IDA7XG4gICAgICAgIGNvbnN0IHsgYW5pbWF0aW9uTGVuZ3RoLCBtYXhQYXJ0aWNsZUNvdW50LCBwYXJ0aWNsZUFjY2VsZXJhdGlvbiB9ID1cbiAgICAgICAgICB0aGlzLnRoYW5vc09wdGlvbnM7XG4gICAgICAgIHJldHVybiBpbnRlcnZhbCgxMDAwIC8gNjAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKS5waXBlKFxuICAgICAgICAgIHRpbWVJbnRlcnZhbCgpLFxuICAgICAgICAgIHRhcCgoZGVsdGFUKSA9PiAodGltZSArPSBkZWx0YVQuaW50ZXJ2YWwpKSxcbiAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAoZGVsdGFUKSA9PlxuICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgIGRlbHRhVFNlYzogZGVsdGFULmludGVydmFsIC8gMTAwMCxcbiAgICAgICAgICAgICAgICBhbmltYXRpb25UOiB0aW1lIC8gYW5pbWF0aW9uTGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiByZXN1bHRDYW52YXMud2lkdGgsXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiByZXN1bHRDYW52YXMuaGVpZ2h0LFxuICAgICAgICAgICAgICB9IGFzIEFuaW1hdGlvblN0YXRlKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKChhbmltYXRpb25TdGF0ZSkgPT4ge1xuICAgICAgICAgICAgV3NUaGFub3NTZXJ2aWNlLnVwZGF0ZVBhcnRpY2xlcyh7XG4gICAgICAgICAgICAgIHBhcnRpY2xlc0RhdGEsXG4gICAgICAgICAgICAgIGFuaW1hdGlvblN0YXRlLFxuICAgICAgICAgICAgICB0aGFub3NPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uTGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1heFBhcnRpY2xlQ291bnQsXG4gICAgICAgICAgICAgICAgcGFydGljbGVBY2NlbGVyYXRpb24sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5vaXNlLFxuICAgICAgICAgICAgICBzZWVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gcmVzdWx0Q2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgICBXc1RoYW5vc1NlcnZpY2UuZHJhd1BhcnRpY2xlcyhjb250ZXh0LCBwYXJ0aWNsZXNEYXRhLnBhcnRpY2xlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVdoaWxlKChhbmltYXRpb25TdGF0ZSkgPT4gYW5pbWF0aW9uU3RhdGUuYW5pbWF0aW9uVCA8PSAxKSxcbiAgICAgICAgICB0YXAoe1xuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdENhbnZhcy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './lib/ws-thanos.service';
2
2
  export * from './lib/ws-thanos.directive';
3
- export * from './lib/ws-thanos.module';
4
- export * from './lib/ws-thanos.options';
5
3
  export * from './lib/ws-thanos-options.token';
4
+ export * from './lib/ws-thanos.options';
6
5
  export * from './lib/create-ws-thanos-options';
6
+ export * from './lib/simplex-noise';
@@ -0,0 +1,9 @@
1
+ export interface SimplexNoiseOptions {
2
+ amplitude: number;
3
+ frequency: number;
4
+ max: number;
5
+ min: number;
6
+ octaves: number;
7
+ persistence: number;
8
+ random: () => number;
9
+ }
@@ -1,14 +1,6 @@
1
- export interface Options {
2
- amplitude: number;
3
- frequency: number;
4
- max: number;
5
- min: number;
6
- octaves: number;
7
- persistence: number;
8
- random: () => number;
9
- }
1
+ import type { SimplexNoiseOptions } from './simplex-noise-options';
10
2
  export declare class SimplexNoise {
11
- constructor(options?: Partial<Options>);
3
+ constructor(options?: Partial<SimplexNoiseOptions>);
12
4
  static G3: number;
13
5
  static GRAD3D: number[][];
14
6
  readonly amplitude: number;
@@ -1,3 +1,4 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { WsThanosOptions } from './ws-thanos.options';
1
+ import { InjectionToken, Provider } from '@angular/core';
2
+ import type { WsThanosOptions } from './ws-thanos.options';
3
3
  export declare const WS_THANOS_OPTIONS_TOKEN: InjectionToken<WsThanosOptions>;
4
+ export declare function provideWsThanosOptions(options?: Partial<WsThanosOptions>): Provider;
@@ -1,6 +1,6 @@
1
1
  import { ElementRef, NgZone, OnDestroy } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { WsThanosOptions } from './ws-thanos.options';
3
+ import type { WsThanosOptions } from './ws-thanos.options';
4
4
  import { WsThanosService } from './ws-thanos.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class WsThanosDirective implements OnDestroy {
@@ -14,5 +14,5 @@ export declare class WsThanosDirective implements OnDestroy {
14
14
  vaporize(removeElem?: boolean): Observable<void>;
15
15
  ngOnDestroy(): void;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<WsThanosDirective, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<WsThanosDirective, "[wsThanos], ws-thanos", ["thanos"], {}, { "wsThanosComplete": "wsThanosComplete"; }, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WsThanosDirective, "[wsThanos], ws-thanos", ["thanos"], {}, { "wsThanosComplete": "wsThanosComplete"; }, never, never, true>;
18
18
  }
@@ -1,6 +1,6 @@
1
1
  import { NgZone } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { WsThanosOptions } from './ws-thanos.options';
3
+ import type { WsThanosOptions } from './ws-thanos.options';
4
4
  import * as i0 from "@angular/core";
5
5
  interface AnimationState {
6
6
  deltaTSec: number;
@@ -10,8 +10,8 @@ interface AnimationState {
10
10
  }
11
11
  export declare class WsThanosService {
12
12
  private thanosOptions;
13
- private _ngZone;
14
- constructor(thanosOptions: WsThanosOptions, _ngZone: NgZone);
13
+ private ngZone;
14
+ constructor(thanosOptions: WsThanosOptions, ngZone: NgZone);
15
15
  private static getParticleIndicesForBase;
16
16
  private static getColorIndicesForCoord;
17
17
  private static updateParticles;
@@ -20,7 +20,7 @@ export declare class WsThanosService {
20
20
  private static createParticlesForImageData;
21
21
  private static getXYFromFlowField;
22
22
  /**
23
- * start the vaporize effect.
23
+ * start the vaporize-effect.
24
24
  *
25
25
  * It's running outside the ngZone.
26
26
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wolsok/thanos",
3
- "version": "1.0.1",
3
+ "version": "3.0.0",
4
4
  "description": "wolsok's implementation of a cool thanos vaporizing effect for destroying dom elements",
5
5
  "bugs": {
6
6
  "url": "https://github.com/WolfSoko/wol-sok-mono/issues"
@@ -15,24 +15,38 @@
15
15
  "particles",
16
16
  "animations",
17
17
  "effects",
18
- "html2canvas",
19
- "rxjs"
18
+ "thanos",
19
+ "vaporize",
20
+ "vaporizing",
21
+ "Avengers",
22
+ "Marvel"
20
23
  ],
21
24
  "peerDependencies": {
22
- "html2canvas": "^1.3.2",
23
- "@angular/common": "^13.0.1",
24
- "@angular/core": "^13.0.1",
25
- "@angular/platform-browser": "13.2.5",
26
- "rxjs": "7.5.4",
27
- "zone.js": "0.11.4",
28
- "@angular/platform-browser-dynamic": "13.2.5"
25
+ "@angular/common": "^14.2.9",
26
+ "@angular/core": "^14.2.9",
27
+ "html2canvas": "^1.4.1",
28
+ "@angular/platform-browser": "14.2.9",
29
+ "rxjs": "7.5.7",
30
+ "zone.js": "0.11.8",
31
+ "@angular/platform-browser-dynamic": "14.2.9"
29
32
  },
30
33
  "dependencies": {
31
- "tslib": "^2.3.0"
34
+ "tslib": "2.4.1"
32
35
  },
33
36
  "module": "esm2020/wolsok-thanos.mjs",
34
37
  "es2020": "esm2020/wolsok-thanos.mjs",
35
38
  "esm2020": "esm2020/wolsok-thanos.mjs",
36
- "typings": "wolsok-thanos.d.ts",
39
+ "typings": "index.d.ts",
40
+ "exports": {
41
+ "./package.json": {
42
+ "default": "./package.json"
43
+ },
44
+ ".": {
45
+ "types": "./index.d.ts",
46
+ "es2020": "./esm2020/wolsok-thanos.mjs",
47
+ "esm2020": "./esm2020/wolsok-thanos.mjs",
48
+ "default": "./esm2020/wolsok-thanos.mjs"
49
+ }
50
+ },
37
51
  "sideEffects": false
38
52
  }
package/README.md DELETED
@@ -1,89 +0,0 @@
1
- # public-ws-thanos
2
-
3
- An angular directive that vaporizes your DOM Elements like Thanos. This library is generated with [Nx](https://nx.dev).
4
-
5
- #### Live Demo:
6
-
7
- Click the technology cards on https://angularexamples.wolsok.de
8
-
9
- ## Usage
10
-
11
- #### Dependencies:
12
-
13
- To install run
14
-
15
- ```
16
- npm install @wolsok/thanos --save
17
- ```
18
-
19
- This lib uses html2canvas. So please run
20
-
21
- ```
22
- npm install html2canvas --save.
23
- ```
24
-
25
- #### Prepare your angular app:
26
-
27
- Add to your root app module.
28
-
29
- ```
30
- @NgModule({
31
- ...
32
- imports: [...
33
- WsThanosModule.forRoot(options)
34
- ]
35
- })
36
- export class AppModule {...}
37
- ```
38
-
39
- And add PublicWsThanosModule to your shared module exports to make the directive available.
40
-
41
- ```
42
- @NgModule({
43
- ...
44
- exports: [...
45
- WsThanosModule
46
- ]
47
- })
48
- export class SharedModule {...}
49
- ]
50
- ```
51
-
52
- #### `WsThanosOptions` to configure public-ws-thanos:
53
-
54
- | field | type | default | description |
55
- | -------------------- | :----: | ------: | ---------------------------------: |
56
- | animationLength | number | 5000 | the animation length in ms |
57
- | maxParticleCount | number | 400000 | max amount of particles |
58
- | particleAcceleration | number | 30 | speed of the particle acceleration |
59
-
60
- ### `WsThanosDirective` usage
61
-
62
- Use the directive `wsThanos` on your element and reference it using `@ViewChild(WsThanosDirective)` in your component or
63
- directly in html via template ref:
64
-
65
- ```
66
- <div wsThanos
67
- #thanos="thanos"
68
- (wsThanosComplete)=onComplete()>
69
- This div will be vaporized on click
70
- </div>
71
- <button (click)="thanos.vaporize(removeElement)">
72
- ```
73
-
74
- ### `WsThanosService` usage
75
-
76
- Inject the 'WsThanosService' into your class. Call 'vaporize()' and subscribe to it.
77
-
78
- ## Collaboration
79
-
80
- Send issues or PRs to https://github.com/wolsok/wol-sok-mono
81
-
82
- Run `nx test ws-thanos` to execute the unit tests.
83
-
84
- ## Migration
85
-
86
- * Remove old version `npm uninstall sc-thanos`
87
- * Install `npm install @wolsok/thanos --save`
88
- * The earlier name of this component was `scThanos`. Just switch to `wsThanos`
89
-
@@ -1,32 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { createWsThanosOptions } from './create-ws-thanos-options';
3
- import { WS_THANOS_OPTIONS_TOKEN } from './ws-thanos-options.token';
4
- import { WsThanosDirective } from './ws-thanos.directive';
5
- import { WsThanosService } from './ws-thanos.service';
6
- import * as i0 from "@angular/core";
7
- export class WsThanosModule {
8
- static forRoot(options) {
9
- return {
10
- ngModule: WsThanosModule,
11
- providers: [
12
- WsThanosService,
13
- {
14
- provide: WS_THANOS_OPTIONS_TOKEN,
15
- useValue: createWsThanosOptions(options),
16
- },
17
- ],
18
- };
19
- }
20
- }
21
- WsThanosModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
22
- WsThanosModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosModule, declarations: [WsThanosDirective], exports: [WsThanosDirective] });
23
- WsThanosModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosModule, imports: [[]] });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WsThanosModule, decorators: [{
25
- type: NgModule,
26
- args: [{
27
- declarations: [WsThanosDirective],
28
- imports: [],
29
- exports: [WsThanosDirective],
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3dzLXRoYW5vcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU90RCxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTyxDQUNaLE9BQWtDO1FBRWxDLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUU7Z0JBQ1QsZUFBZTtnQkFDZjtvQkFDRSxPQUFPLEVBQUUsdUJBQXVCO29CQUNoQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO2lCQUN6QzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzJHQWRVLGNBQWM7NEdBQWQsY0FBYyxpQkFKVixpQkFBaUIsYUFFdEIsaUJBQWlCOzRHQUVoQixjQUFjLFlBSGhCLEVBQUU7MkZBR0EsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDakMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZVdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zJztcbmltcG9ydCB7IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOIH0gZnJvbSAnLi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XG5pbXBvcnQgeyBXc1RoYW5vc0RpcmVjdGl2ZSB9IGZyb20gJy4vd3MtdGhhbm9zLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL3dzLXRoYW5vcy5vcHRpb25zJztcblxuaW1wb3J0IHsgV3NUaGFub3NTZXJ2aWNlIH0gZnJvbSAnLi93cy10aGFub3Muc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1dzVGhhbm9zRGlyZWN0aXZlXSxcbiAgaW1wb3J0czogW10sXG4gIGV4cG9ydHM6IFtXc1RoYW5vc0RpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdzVGhhbm9zTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8V3NUaGFub3NPcHRpb25zPlxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFdzVGhhbm9zTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBXc1RoYW5vc01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBXc1RoYW5vc1NlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBXU19USEFOT1NfT1BUSU9OU19UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogY3JlYXRlV3NUaGFub3NPcHRpb25zKG9wdGlvbnMpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,10 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { WsThanosOptions } from './ws-thanos.options';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./ws-thanos.directive";
5
- export declare class WsThanosModule {
6
- static forRoot(options?: Partial<WsThanosOptions>): ModuleWithProviders<WsThanosModule>;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<WsThanosModule, never>;
8
- static ɵmod: i0.ɵɵNgModuleDeclaration<WsThanosModule, [typeof i1.WsThanosDirective], never, [typeof i1.WsThanosDirective]>;
9
- static ɵinj: i0.ɵɵInjectorDeclaration<WsThanosModule>;
10
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@wolsok/thanos" />
5
- export * from './index';