@mtgame/core 0.1.156 → 0.2.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.
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';
3
- import { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';
3
+ import { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes, TimerTypes } from './tournament';
4
4
  let BasketballGameConfig = class BasketballGameConfig extends BaseModel {
5
5
  static toFront(data) { }
6
6
  static toBack(data) { }
@@ -27,13 +27,15 @@ BasketballGameConfig = __decorate([
27
27
  statistic_type: 'statisticType',
28
28
  shot_clock_enabled: 'shotClockEnabled',
29
29
  game_time_type: 'gameTimeType',
30
+ timer_type: 'timerType',
30
31
  },
31
32
  relation: {
32
33
  overtimeType: enumField(OvertimeTypes),
33
34
  statisticType: enumField(BasketballStatisticTypes),
34
35
  gameTimeType: enumField(GameTimeTypes),
36
+ timerType: enumField(TimerTypes),
35
37
  }
36
38
  })
37
39
  ], BasketballGameConfig);
38
40
  export { BasketballGameConfig };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0YmFsbC1nYW1lLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL21vZGVscy9iYXNrZXRiYWxsLWdhbWUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztJQXdCekUsb0JBQW9CLFNBQXBCLG9CQUFxQixTQUFRLFNBQVM7SUFnQmpELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBUyxJQUFRLENBQUM7SUFHakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFTLElBQVEsQ0FBQztDQUNqQyxDQUFBO0FBSkM7SUFEQyxXQUFXO3lDQUNxQjtBQUdqQztJQURDLFVBQVU7d0NBQ3FCO0FBbkJyQixvQkFBb0I7SUF0QmhDLGFBQWEsQ0FBQztRQUNiLGFBQWEsRUFBRTtZQUNiLGFBQWEsRUFBRSxjQUFjO1lBQzdCLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLGdCQUFnQixFQUFFLGVBQWU7WUFDakMsYUFBYSxFQUFFLGNBQWM7WUFDN0IsYUFBYSxFQUFFLGNBQWM7WUFDN0IsY0FBYyxFQUFFLGVBQWU7WUFDL0IsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLGFBQWEsRUFBRSxjQUFjO1lBQzdCLHNCQUFzQixFQUFFLHNCQUFzQjtZQUM5QyxZQUFZLEVBQUUsYUFBYTtZQUMzQixjQUFjLEVBQUUsZUFBZTtZQUMvQixrQkFBa0IsRUFBRSxrQkFBa0I7WUFDdEMsY0FBYyxFQUFFLGNBQWM7U0FDL0I7UUFDRCxRQUFRLEVBQUU7WUFDUixZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQztZQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLHdCQUF3QixDQUFDO1lBQ2xELFlBQVksRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDO1NBQ3ZDO0tBQ0YsQ0FBQztHQUNXLG9CQUFvQixDQW9CaEM7U0FwQlksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxJbnN0YW5jZSwgQmFzZU1vZGVsLCBUb0Zyb250SG9vaywgVG9CYWNrSG9vaywgZW51bUZpZWxkIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEJhc2tldGJhbGxTdGF0aXN0aWNUeXBlcywgR2FtZVRpbWVUeXBlcywgT3ZlcnRpbWVUeXBlcyB9IGZyb20gJy4vdG91cm5hbWVudCc7XG5cbkBNb2RlbEluc3RhbmNlKHtcbiAgbWFwcGluZ0ZpZWxkczoge1xuICAgIHBlcmlvZHNfY291bnQ6ICdwZXJpb2RzQ291bnQnLFxuICAgIHBlcmlvZF90aW1lOiAncGVyaW9kVGltZScsXG4gICAgZ2FtZV91cF90b19zY29yZTogJ2dhbWVVcFRvU2NvcmUnLFxuICAgIG92ZXJ0aW1lX3R5cGU6ICdvdmVydGltZVR5cGUnLFxuICAgIG92ZXJ0aW1lX3RpbWU6ICdvdmVydGltZVRpbWUnLFxuICAgIG92ZXJ0aW1lX3Njb3JlOiAnb3ZlcnRpbWVTY29yZScsXG4gICAgbWF4X2dhbWVfcGxheWVyczogJ21heEdhbWVQbGF5ZXJzJyxcbiAgICB0aW1lb3V0X2NvdW50OiAndGltZW91dENvdW50JyxcbiAgICBvdmVydGltZV90aW1lb3V0X2NvdW50OiAnb3ZlcnRpbWVUaW1lb3V0Q291bnQnLFxuICAgIHRpbWVvdXRfdGltZTogJ3RpbWVvdXRUaW1lJyxcbiAgICBzdGF0aXN0aWNfdHlwZTogJ3N0YXRpc3RpY1R5cGUnLFxuICAgIHNob3RfY2xvY2tfZW5hYmxlZDogJ3Nob3RDbG9ja0VuYWJsZWQnLFxuICAgIGdhbWVfdGltZV90eXBlOiAnZ2FtZVRpbWVUeXBlJyxcbiAgfSxcbiAgcmVsYXRpb246IHtcbiAgICBvdmVydGltZVR5cGU6IGVudW1GaWVsZChPdmVydGltZVR5cGVzKSxcbiAgICBzdGF0aXN0aWNUeXBlOiBlbnVtRmllbGQoQmFza2V0YmFsbFN0YXRpc3RpY1R5cGVzKSxcbiAgICBnYW1lVGltZVR5cGU6IGVudW1GaWVsZChHYW1lVGltZVR5cGVzKSxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYXNrZXRiYWxsR2FtZUNvbmZpZyBleHRlbmRzIEJhc2VNb2RlbCB7XG4gIHBlcmlvZHNDb3VudDogbnVtYmVyO1xuICBwZXJpb2RUaW1lOiBudW1iZXI7XG4gIGdhbWVVcFRvU2NvcmU6IG51bWJlcjtcbiAgb3ZlcnRpbWVUeXBlOiBPdmVydGltZVR5cGVzO1xuICBvdmVydGltZVRpbWU6IG51bWJlcjtcbiAgb3ZlcnRpbWVTY29yZTogbnVtYmVyO1xuICBtYXhHYW1lUGxheWVyczogbnVtYmVyO1xuICB0aW1lb3V0Q291bnQ6IG51bWJlcjtcbiAgb3ZlcnRpbWVUaW1lb3V0Q291bnQ6IG51bWJlcjtcbiAgdGltZW91dFRpbWU6IG51bWJlcjtcbiAgc3RhdGlzdGljVHlwZTogQmFza2V0YmFsbFN0YXRpc3RpY1R5cGVzO1xuICBzaG90Q2xvY2tFbmFibGVkOiBib29sZWFuO1xuICBnYW1lVGltZVR5cGU6IEdhbWVUaW1lVHlwZXM7XG5cbiAgQFRvRnJvbnRIb29rXG4gIHN0YXRpYyB0b0Zyb250KGRhdGE6IGFueSk6IGFueSB7fVxuXG4gIEBUb0JhY2tIb29rXG4gIHN0YXRpYyB0b0JhY2soZGF0YTogYW55KTogYW55IHt9XG59XG5cbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0YmFsbC1nYW1lLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL21vZGVscy9iYXNrZXRiYWxsLWdhbWUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7SUEwQnJGLG9CQUFvQixTQUFwQixvQkFBcUIsU0FBUSxTQUFTO0lBaUJqRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVMsSUFBUSxDQUFDO0lBR2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBUyxJQUFRLENBQUM7Q0FDakMsQ0FBQTtBQUpDO0lBREMsV0FBVzt5Q0FDcUI7QUFHakM7SUFEQyxVQUFVO3dDQUNxQjtBQXBCckIsb0JBQW9CO0lBeEJoQyxhQUFhLENBQUM7UUFDYixhQUFhLEVBQUU7WUFDYixhQUFhLEVBQUUsY0FBYztZQUM3QixXQUFXLEVBQUUsWUFBWTtZQUN6QixnQkFBZ0IsRUFBRSxlQUFlO1lBQ2pDLGFBQWEsRUFBRSxjQUFjO1lBQzdCLGFBQWEsRUFBRSxjQUFjO1lBQzdCLGNBQWMsRUFBRSxlQUFlO1lBQy9CLGdCQUFnQixFQUFFLGdCQUFnQjtZQUNsQyxhQUFhLEVBQUUsY0FBYztZQUM3QixzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsWUFBWSxFQUFFLGFBQWE7WUFDM0IsY0FBYyxFQUFFLGVBQWU7WUFDL0Isa0JBQWtCLEVBQUUsa0JBQWtCO1lBQ3RDLGNBQWMsRUFBRSxjQUFjO1lBQzlCLFVBQVUsRUFBRSxXQUFXO1NBQ3hCO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQztZQUNsRCxZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQztZQUN0QyxTQUFTLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQztTQUNqQztLQUNGLENBQUM7R0FDVyxvQkFBb0IsQ0FxQmhDO1NBckJZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsSW5zdGFuY2UsIEJhc2VNb2RlbCwgVG9Gcm9udEhvb2ssIFRvQmFja0hvb2ssIGVudW1GaWVsZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBCYXNrZXRiYWxsU3RhdGlzdGljVHlwZXMsIEdhbWVUaW1lVHlwZXMsIE92ZXJ0aW1lVHlwZXMsIFRpbWVyVHlwZXMgfSBmcm9tICcuL3RvdXJuYW1lbnQnO1xuXG5ATW9kZWxJbnN0YW5jZSh7XG4gIG1hcHBpbmdGaWVsZHM6IHtcbiAgICBwZXJpb2RzX2NvdW50OiAncGVyaW9kc0NvdW50JyxcbiAgICBwZXJpb2RfdGltZTogJ3BlcmlvZFRpbWUnLFxuICAgIGdhbWVfdXBfdG9fc2NvcmU6ICdnYW1lVXBUb1Njb3JlJyxcbiAgICBvdmVydGltZV90eXBlOiAnb3ZlcnRpbWVUeXBlJyxcbiAgICBvdmVydGltZV90aW1lOiAnb3ZlcnRpbWVUaW1lJyxcbiAgICBvdmVydGltZV9zY29yZTogJ292ZXJ0aW1lU2NvcmUnLFxuICAgIG1heF9nYW1lX3BsYXllcnM6ICdtYXhHYW1lUGxheWVycycsXG4gICAgdGltZW91dF9jb3VudDogJ3RpbWVvdXRDb3VudCcsXG4gICAgb3ZlcnRpbWVfdGltZW91dF9jb3VudDogJ292ZXJ0aW1lVGltZW91dENvdW50JyxcbiAgICB0aW1lb3V0X3RpbWU6ICd0aW1lb3V0VGltZScsXG4gICAgc3RhdGlzdGljX3R5cGU6ICdzdGF0aXN0aWNUeXBlJyxcbiAgICBzaG90X2Nsb2NrX2VuYWJsZWQ6ICdzaG90Q2xvY2tFbmFibGVkJyxcbiAgICBnYW1lX3RpbWVfdHlwZTogJ2dhbWVUaW1lVHlwZScsXG4gICAgdGltZXJfdHlwZTogJ3RpbWVyVHlwZScsXG4gIH0sXG4gIHJlbGF0aW9uOiB7XG4gICAgb3ZlcnRpbWVUeXBlOiBlbnVtRmllbGQoT3ZlcnRpbWVUeXBlcyksXG4gICAgc3RhdGlzdGljVHlwZTogZW51bUZpZWxkKEJhc2tldGJhbGxTdGF0aXN0aWNUeXBlcyksXG4gICAgZ2FtZVRpbWVUeXBlOiBlbnVtRmllbGQoR2FtZVRpbWVUeXBlcyksXG4gICAgdGltZXJUeXBlOiBlbnVtRmllbGQoVGltZXJUeXBlcyksXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0YmFsbEdhbWVDb25maWcgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBwZXJpb2RzQ291bnQ6IG51bWJlcjtcbiAgcGVyaW9kVGltZTogbnVtYmVyO1xuICBnYW1lVXBUb1Njb3JlOiBudW1iZXI7XG4gIG92ZXJ0aW1lVHlwZTogT3ZlcnRpbWVUeXBlcztcbiAgb3ZlcnRpbWVUaW1lOiBudW1iZXI7XG4gIG92ZXJ0aW1lU2NvcmU6IG51bWJlcjtcbiAgbWF4R2FtZVBsYXllcnM6IG51bWJlcjtcbiAgdGltZW91dENvdW50OiBudW1iZXI7XG4gIG92ZXJ0aW1lVGltZW91dENvdW50OiBudW1iZXI7XG4gIHRpbWVvdXRUaW1lOiBudW1iZXI7XG4gIHN0YXRpc3RpY1R5cGU6IEJhc2tldGJhbGxTdGF0aXN0aWNUeXBlcztcbiAgc2hvdENsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgZ2FtZVRpbWVUeXBlOiBHYW1lVGltZVR5cGVzO1xuICB0aW1lclR5cGU6IFRpbWVyVHlwZXM7XG5cbiAgQFRvRnJvbnRIb29rXG4gIHN0YXRpYyB0b0Zyb250KGRhdGE6IGFueSk6IGFueSB7fVxuXG4gIEBUb0JhY2tIb29rXG4gIHN0YXRpYyB0b0JhY2soZGF0YTogYW55KTogYW55IHt9XG59XG5cbiJdfQ==
@@ -58,6 +58,11 @@ export var OvertimeTypes;
58
58
  OvertimeTypes[OvertimeTypes["penalties"] = 8] = "penalties";
59
59
  OvertimeTypes[OvertimeTypes["time_and_penalties"] = 9] = "time_and_penalties";
60
60
  })(OvertimeTypes || (OvertimeTypes = {}));
61
+ export var TimerTypes;
62
+ (function (TimerTypes) {
63
+ TimerTypes[TimerTypes["backward"] = 1] = "backward";
64
+ TimerTypes[TimerTypes["forward"] = 2] = "forward";
65
+ })(TimerTypes || (TimerTypes = {}));
61
66
  let TournamentSettings = class TournamentSettings extends BaseModel {
62
67
  get genderTitle() {
63
68
  const yearDiff = new Date().getFullYear() - this.birthYearFrom;
@@ -129,6 +134,7 @@ TournamentSettings = __decorate([
129
134
  major_penalty_time: 'majorPenaltyTime',
130
135
  misconduct_penalty_time: 'misconductPenaltyTime',
131
136
  game_misconduct_penalty_time: 'gameMisconductPenaltyTime',
137
+ timer_type: 'timerType',
132
138
  },
133
139
  relation: {
134
140
  type: enumField(TournamentTypes),
@@ -138,6 +144,7 @@ TournamentSettings = __decorate([
138
144
  rugbyStatisticType: enumField(RugbyStatisticTypes),
139
145
  gameTimeType: enumField(GameTimeTypes),
140
146
  overtimeType: enumField(OvertimeTypes),
147
+ timerType: enumField(TimerTypes),
141
148
  }
142
149
  })
143
150
  ], TournamentSettings);
@@ -253,4 +260,4 @@ Tournament = __decorate([
253
260
  })
254
261
  ], Tournament);
255
262
  export { Tournament };
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL21vZGVscy90b3VybmFtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsa0NBQWUsQ0FBQTtJQUNmLDhDQUEyQixDQUFBO0lBQzNCLGdDQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsZUFBZSxLQUFmLGVBQWUsUUFJMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzVCLDJEQUFJLENBQUE7SUFDSix5RUFBVyxDQUFBO0lBQ1gsK0RBQU0sQ0FBQTtBQUNSLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBTyxDQUFBO0lBQ1AsMkRBQU0sQ0FBQTtJQUNOLHFEQUFHLENBQUE7QUFDTCxDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVELE1BQU0sQ0FBTixJQUFZLHdCQUlY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RSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLG9CQUFvQixFQUFFLG9CQUFvQjtTQUMzQztRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxZQUFZLEVBQUUsSUFBSTtZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxLQUFLO1lBQ1osY0FBYyxFQUFFLElBQUk7WUFDcEIsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixJQUFJLEVBQUUsYUFBYTtZQUNuQixNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUM7WUFDckMsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxVQUFVLEVBQUUsb0JBQW9CO1lBQ2hDLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsTUFBTSxFQUFFLGdCQUFnQjtTQUN6QjtLQUNGLENBQUM7R0FDVyxVQUFVLENBMER0QjtTQTFEWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsLCBlbnVtRmllbGQsIE1vZGVsSW5zdGFuY2UsIERhdGVUaW1lRmllbGQsIFRvQmFja0hvb2ssIFRvRnJvbnRIb29rIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IENpdHkgfSBmcm9tICcuL2NpdHknO1xuaW1wb3J0IHsgRmlsZSB9IGZyb20gJy4vZmlsZSc7XG5pbXBvcnQgeyBMZWFndWUgfSBmcm9tICcuL2xlYWd1ZSc7XG5pbXBvcnQgeyBTcG9ydCB9IGZyb20gJy4vc3BvcnQnO1xuaW1wb3J0IHsgVGVhbSB9IGZyb20gJy4vdGVhbSc7XG5pbXBvcnQgeyBUb3VybmFtZW50U2Vhc29uIH0gZnJvbSAnLi90b3VybmFtZW50LXNlYXNvbic7XG5cbmV4cG9ydCBlbnVtIFRvdXJuYW1lbnRUeXBlcyB7XG4gIGdyb3VwID0gJ2dyb3VwJyxcbiAgZWxpbWluYXRpb24gPSAnZWxpbWluYXRpb24nLFxuICBmaWJhID0gJ2ZpYmEnXG59XG5cbmV4cG9ydCBlbnVtIFRvdXJuYW1lbnRTdGF0dXNlcyB7XG4gIG9wZW4sXG4gIGluX3Byb2dyZXNzLFxuICBjbG9zZWQsXG59XG5cbmV4cG9ydCBlbnVtIFRvdXJuYW1lbnRHZW5kZXIge1xuICBtYWxlPSAxLFxuICBmZW1hbGUsXG4gIGFsbFxufVxuXG5leHBvcnQgZW51bSBCYXNrZXRiYWxsU3RhdGlzdGljVHlwZXMge1xuICBzdGFuZGFyZCA9IDEsXG4gIGxpZ2h0LFxuICBhZHZhbmNlZFxufVxuXG5leHBvcnQgZW51bSBWb2xsZXliYWxsU3RhdGlzdGljVHlwZXMge1xuICBzdGFuZGFyZCA9IDEsXG4gIGxpZ2h0LFxuICBhZHZhbmNlZFxufVxuXG5leHBvcnQgZW51bSBSdWdieVN0YXRpc3RpY1R5cGVzIHtcbiAgbGlnaHQgPSAxLFxuICBzdGFuZGFyZCxcbn1cblxuZXhwb3J0IGVudW0gR2FtZVRpbWVUeXBlcyB7XG4gIGNsZWFuID0gMSxcbiAgZGlydHksXG59XG5cbmV4cG9ydCBlbnVtIE92ZXJ0aW1lVHlwZXMge1xuICB0b19zY29yZV90b3RhbCA9IDEsXG4gIHRvX3Njb3JlX2RpZmYsXG4gIHRpbWUsXG4gIHdpdGhvdXRfb3ZlcnRpbWUsXG4gIHRvX2ZpcnN0X2dvYWwsXG4gIHRvX2ZpcnN0X2dvYWxfYW5kX2J1bGxpdHRzLFxuICBidWxsaXR0cyxcbiAgcGVuYWx0aWVzLFxuICB0aW1lX2FuZF9wZW5hbHRpZXNcbn1cblxuQE1vZGVsSW5zdGFuY2Uoe1xuICBtYXBwaW5nRmllbGRzOiB7XG4gICAgaWQ6ICdpZCcsXG4gICAgZ2VuZGVyOiAnZ2VuZGVyJyxcbiAgICBiaXJ0aF95ZWFyX2Zyb206ICdiaXJ0aFllYXJGcm9tJyxcbiAgICBiaXJ0aF95ZWFyX3RvOiAnYmlydGhZZWFyVG8nLFxuICAgIG1heF90ZWFtX3BsYXllcnM6ICdtYXhUZWFtUGxheWVycycsXG4gICAgbWF4X2dhbWVfcGxheWVyczogJ21heEdhbWVQbGF5ZXJzJyxcbiAgICB0eXBlOiAndHlwZScsXG4gICAgdG91cnNfY291bnQ6ICd0b3Vyc0NvdW50JyxcbiAgICBwZXJpb2RzX2NvdW50OiAncGVyaW9kc0NvdW50JyxcbiAgICBwZXJpb2RfdGltZTogJ3BlcmlvZFRpbWUnLFxuICAgIG92ZXJ0aW1lX3R5cGU6ICdvdmVydGltZVR5cGUnLFxuICAgIG92ZXJ0aW1lX3RpbWU6ICdvdmVydGltZVRpbWUnLFxuICAgIG92ZXJ0aW1lX3Njb3JlOiAnb3ZlcnRpbWVTY29yZScsXG4gICAgZ2FtZV90eXBlOiAnZ2FtZVR5cGUnLFxuICAgIHRpbWVvdXRfY291bnQ6ICd0aW1lb3V0Q291bnQnLFxuICAgIHRpbWVvdXRfdGltZTogJ3RpbWVvdXRUaW1lJyxcbiAgICBzdWJzdGl0dXRlX2NvdW50OiAnc3Vic3RpdHV0ZUNvdW50JyxcbiAgICBnYW1lX3VwX3RvX3Njb3JlOiAnZ2FtZVVwVG9TY29yZScsXG4gICAgdm9sbGV5YmFsbF9zY29yZV9pbl9zZXQ6ICd2b2xsZXliYWxsU2NvcmVJblNldCcsXG4gICAgdm9sbGV5YmFsbF9zY29yZV9pbl9sYXN0X3NldDogJ3ZvbGxleWJhbGxTY29yZUluTGFzdFNldCcsXG4gICAgbWFuYWdlX3RlYW1fYXBwbGljYXRpb246ICdtYW5hZ2VUZWFtQXBwbGljYXRpb24nLFxuICAgIHJlY3J1aXRtZW50X2lzX29wZW46ICdyZWNydWl0bWVudElzT3BlbicsXG4gICAgdHJhbnNmZXJfaXNfb3BlbjogJ3RyYW5zZmVySXNPcGVuJyxcbiAgICBiYXNrZXRiYWxsX3N0YXRpc3RpY190eXBlOiAnYmFza2V0YmFsbFN0YXRpc3RpY1R5cGUnLFxuICAgIHZvbGxleWJhbGxfc3RhdGlzdGljX3R5cGU6ICd2b2xsZXliYWxsU3RhdGlzdGljVHlwZScsXG4gICAgcnVnYnlfc3RhdGlzdGljX3R5cGU6ICdydWdieVN0YXRpc3RpY1R5cGUnLFxuICAgIHNob3RfY2xvY2tfZW5hYmxlZDogJ3Nob3RDbG9ja0VuYWJsZWQnLFxuICAgIGdhbWVfdGltZV90eXBlOiAnZ2FtZVRpbWVUeXBlJyxcbiAgICB3aXRoX3Jlc3VsdF90YWJsZTogJ3dpdGhSZXN1bHRUYWJsZScsXG4gICAgZnJlZV9zdWJzdGl0dXRlX2VuYWJsZWQ6ICdmcmVlU3Vic3RpdHV0ZUVuYWJsZWQnLFxuICAgIHN1YnN0aXR1dGVfbWFuYWdlX2VuYWJsZWQ6ICdzdWJzdGl0dXRlTWFuYWdlRW5hYmxlZCcsXG4gICAgYm9udXNfcG9pbnRzX2VuYWJsZWQ6ICdib251c1BvaW50c0VuYWJsZWQnLFxuICAgIG1pbm9yX3BlbmFsdHlfdGltZTogJ21pbm9yUGVuYWx0eVRpbWUnLFxuICAgIG1ham9yX3BlbmFsdHlfdGltZTogJ21ham9yUGVuYWx0eVRpbWUnLFxuICAgIG1pc2NvbmR1Y3RfcGVuYWx0eV90aW1lOiAnbWlzY29uZHVjdFBlbmFsdHlUaW1lJyxcbiAgICBnYW1lX21pc2NvbmR1Y3RfcGVuYWx0eV90aW1lOiAnZ2FtZU1pc2NvbmR1Y3RQZW5hbHR5VGltZScsXG4gIH0sXG4gIHJlbGF0aW9uOiB7XG4gICAgdHlwZTogZW51bUZpZWxkKFRvdXJuYW1lbnRUeXBlcyksXG4gICAgZ2VuZGVyOiBlbnVtRmllbGQoVG91cm5hbWVudEdlbmRlciksXG4gICAgYmFza2V0YmFsbFN0YXRpc3RpY1R5cGU6IGVudW1GaWVsZChCYXNrZXRiYWxsU3RhdGlzdGljVHlwZXMpLFxuICAgIHZvbGxleWJhbGxTdGF0aXN0aWNUeXBlOiBlbnVtRmllbGQoVm9sbGV5YmFsbFN0YXRpc3RpY1R5cGVzKSxcbiAgICBydWdieVN0YXRpc3RpY1R5cGU6IGVudW1GaWVsZChSdWdieVN0YXRpc3RpY1R5cGVzKSxcbiAgICBnYW1lVGltZVR5cGU6IGVudW1GaWVsZChHYW1lVGltZVR5cGVzKSxcbiAgICBvdmVydGltZVR5cGU6IGVudW1GaWVsZChPdmVydGltZVR5cGVzKSxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBUb3VybmFtZW50U2V0dGluZ3MgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBpZDogbnVtYmVyO1xuICBnZW5kZXI6IFRvdXJuYW1lbnRHZW5kZXI7XG4gIGJpcnRoWWVhckZyb206IG51bWJlcjtcbiAgYmlydGhZZWFyVG86IG51bWJlcjtcbiAgbWF4VGVhbVBsYXllcnM6IG51bWJlcjtcbiAgbWF4R2FtZVBsYXllcnM6IG51bWJlcjtcbiAgdHlwZTogVG91cm5hbWVudFR5cGVzO1xuICB0b3Vyc0NvdW50OiBudW1iZXI7XG4gIHBlcmlvZHNDb3VudDogbnVtYmVyO1xuICBwZXJpb2RUaW1lOiBudW1iZXI7XG4gIG92ZXJ0aW1lVHlwZTogT3ZlcnRpbWVUeXBlcztcbiAgb3ZlcnRpbWVUaW1lOiBudW1iZXI7XG4gIG92ZXJ0aW1lU2NvcmU6IG51bWJlcjtcbiAgZ2FtZVR5cGU6IHN0cmluZztcbiAgdGltZW91dENvdW50OiBudW1iZXI7XG4gIHRpbWVvdXRUaW1lOiBudW1iZXI7XG4gIHN1YnN0aXR1dGVDb3VudDogbnVtYmVyO1xuICBnYW1lVXBUb1Njb3JlOiBudW1iZXI7XG4gIHZvbGxleWJhbGxTY29yZUluU2V0OiBudW1iZXI7XG4gIHZvbGxleWJhbGxTY29yZUluTGFzdFNldDogbnVtYmVyO1xuICBtYW5hZ2VUZWFtQXBwbGljYXRpb246IGJvb2xlYW47XG4gIHJlY3J1aXRtZW50SXNPcGVuOiBib29sZWFuO1xuICB0cmFuc2ZlcklzT3BlbjogYm9vbGVhbjtcbiAgYmFza2V0YmFsbFN0YXRpc3RpY1R5cGU6IEJhc2tldGJhbGxTdGF0aXN0aWNUeXBlcztcbiAgdm9sbGV5YmFsbFN0YXRpc3RpY1R5cGU6IFZvbGxleWJhbGxTdGF0aXN0aWNUeXBlcztcbiAgcnVnYnlTdGF0aXN0aWNUeXBlOiBSdWdieVN0YXRpc3RpY1R5cGVzO1xuICBzaG90Q2xvY2tFbmFibGVkOiBib29sZWFuO1xuICBnYW1lVGltZVR5cGU6IEdhbWVUaW1lVHlwZXM7XG4gIHdpdGhSZXN1bHRUYWJsZTogYm9vbGVhbjtcbiAgZnJlZVN1YnN0aXR1dGVFbmFibGVkOiBib29sZWFuO1xuICBib251c1BvaW50c0VuYWJsZWQ6IGJvb2xlYW47XG4gIHN1YnN0aXR1dGVNYW5hZ2VFbmFibGVkOiBib29sZWFuO1xuICBtaW5vclBlbmFsdHlUaW1lOiBudW1iZXI7XG4gIG1ham9yUGVuYWx0eVRpbWU6IG51bWJlcjtcbiAgbWlzY29uZHVjdFBlbmFsdHlUaW1lOiBudW1iZXI7XG4gIGdhbWVNaXNjb25kdWN0UGVuYWx0eVRpbWU6IG51bWJlcjtcblxuICBnZXQgZ2VuZGVyVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB5ZWFyRGlmZiA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIHRoaXMuYmlydGhZZWFyRnJvbTtcbiAgICBpZiAodGhpcy5nZW5kZXIgPT09IFRvdXJuYW1lbnRHZW5kZXIubWFsZSkge1xuICAgICAgaWYgKHllYXJEaWZmIDwgMTUpIHtcbiAgICAgICAgcmV0dXJuICfQnNCw0LvRjNGH0LjQutC4JztcbiAgICAgIH1cbiAgICAgIGlmICh5ZWFyRGlmZiA8IDIxKSB7XG4gICAgICAgIHJldHVybiAn0K7QvdC+0YjQuCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ9Cc0YPQttGH0LjQvdGLJztcbiAgICB9XG4gICAgaWYgKHRoaXMuZ2VuZGVyID09PSBUb3VybmFtZW50R2VuZGVyLmZlbWFsZSkge1xuICAgICAgaWYgKHllYXJEaWZmIDwgMTUpIHtcbiAgICAgICAgcmV0dXJuICfQlNC10LLQvtGH0LrQuCc7XG4gICAgICB9XG4gICAgICBpZiAoeWVhckRpZmYgPCAyMSkge1xuICAgICAgICByZXR1cm4gJ9CU0LXQstGD0YjQutC4JztcbiAgICAgIH1cbiAgICAgIHJldHVybiAn0JbQtdC90YnQuNC90YsnO1xuICAgIH1cbiAgICByZXR1cm4gJ9Ch0LzQtdGI0LDQvdC90YvQuSc7XG4gIH1cblxuICBAVG9Gcm9udEhvb2tcbiAgc3RhdGljIHRvRnJvbnQoZGF0YTogYW55KTogYW55IHt9XG5cbiAgQFRvQmFja0hvb2tcbiAgc3RhdGljIHRvQmFjayhkYXRhOiBhbnkpOiBhbnkge31cbn1cblxuQE1vZGVsSW5zdGFuY2Uoe1xuICBtYXBwaW5nRmllbGRzOiB7XG4gICAgaWQ6ICdpZCcsXG4gICAgdGVhbV9pZDogJ3RlYW1JZCcsXG4gICAgdG91cm5hbWVudF9pZDogJ3RvdXJuYW1lbnRJZCcsXG4gICAgbmFtZTogJ25hbWUnLFxuICAgIGxvZ286ICdsb2dvJyxcbiAgICB0ZWFtOiAndGVhbScsXG4gICAgcG9pbnRzOiAncG9pbnRzJyxcbiAgfSxcbiAgcmVsYXRpb246IHtcbiAgICBsb2dvOiBGaWxlLFxuICAgIHRlYW06IFRlYW0sXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgVG91cm5hbWVudFRlYW1XaW5uZXIgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBpZDogbnVtYmVyO1xuICB0ZWFtSWQ6IG51bWJlcjtcbiAgdG91cm5hbWVudElkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbG9nbzogRmlsZTtcbiAgdGVhbTogVGVhbTtcbiAgcG9pbnRzOiBudW1iZXI7XG5cbiAgQFRvRnJvbnRIb29rXG4gIHN0YXRpYyB0b0Zyb250KGRhdGE6IGFueSk6IGFueSB7fVxuXG4gIEBUb0JhY2tIb29rXG4gIHN0YXRpYyB0b0JhY2soZGF0YTogYW55KTogYW55IHt9XG59XG5cbkBNb2RlbEluc3RhbmNlKHtcbiAgbWFwcGluZ0ZpZWxkczoge1xuICAgIGlkOiAnaWQnLFxuICAgIG5hbWU6ICduYW1lJyxcbiAgICBhbGlhczogJ2FsaWFzJyxcbiAgICBsb2dvOiAnbG9nbycsXG4gICAgY292ZXI6ICdjb3ZlcicsXG4gICAgcHJldmlld19pbWFnZTogJ3ByZXZpZXdJbWFnZScsXG4gICAgY2l0eTogJ2NpdHknLFxuICAgIHNwb3J0OiAnc3BvcnQnLFxuICAgIGxvY2F0aW9uOiAnbG9jYXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnZGVzY3JpcHRpb24nLFxuICAgIGRhdGU6ICdkYXRlJyxcbiAgICBwcmljZTogJ3ByaWNlJyxcbiAgICByZWd1bGF0aW9uX2ZpbGVzOiAncmVndWxhdGlvbkZpbGVzJyxcbiAgICBzZXR0aW5nczogJ3NldHRpbmdzJyxcbiAgICBsZWFndWU6ICdsZWFndWUnLFxuICAgIHRlYW1zX2NvdW50OiAndGVhbXNDb3VudCcsXG4gICAgY2xvc2VzdF9nYW1lX2RhdGV0aW1lOiAnY2xvc2VzdEdhbWVEYXRldGltZScsXG4gICAgc3RhdHVzOiAnc3RhdHVzJyxcbiAgICB0ZWFtX3dpbm5lcjogJ3RlYW1XaW5uZXInLFxuICAgIHRlYW1fc2Vjb25kOiAndGVhbVNlY29uZCcsXG4gICAgdGVhbV90aGlyZDogJ3RlYW1UaGlyZCcsXG4gICAgc2Vhc29uOiAnc2Vhc29uJyxcbiAgICBzZWFzb25faWQ6ICdzZWFzb25JZCcsXG4gICAgZ2FtZV9wcmljZTogJ2dhbWVQcmljZScsXG4gICAgc2Vhc29uX3RvdXJuYW1lbnRfaWQ6ICdzZWFzb25Ub3VybmFtZW50SWQnLFxuICB9LFxuICByZWxhdGlvbjoge1xuICAgIGxvZ286IEZpbGUsXG4gICAgY292ZXI6IEZpbGUsXG4gICAgcHJldmlld0ltYWdlOiBGaWxlLFxuICAgIGNpdHk6IENpdHksXG4gICAgc3BvcnQ6IFNwb3J0LFxuICAgIHJlZ3VsYXRpb25GaWxlOiBGaWxlLFxuICAgIHNldHRpbmdzOiBUb3VybmFtZW50U2V0dGluZ3MsXG4gICAgZGF0ZTogRGF0ZVRpbWVGaWVsZCxcbiAgICBsZWFndWU6IExlYWd1ZSxcbiAgICBzdGF0dXM6IGVudW1GaWVsZChUb3VybmFtZW50U3RhdHVzZXMpLFxuICAgIHRlYW1XaW5uZXI6IFRvdXJuYW1lbnRUZWFtV2lubmVyLFxuICAgIHRlYW1TZWNvbmQ6IFRvdXJuYW1lbnRUZWFtV2lubmVyLFxuICAgIHRlYW1UaGlyZDogVG91cm5hbWVudFRlYW1XaW5uZXIsXG4gICAgc2Vhc29uOiBUb3VybmFtZW50U2Vhc29uLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIFRvdXJuYW1lbnQgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFsaWFzOiBzdHJpbmc7XG4gIGxvZ286IEZpbGU7XG4gIGNvdmVyOiBGaWxlO1xuICBwcmV2aWV3SW1hZ2U6IEZpbGU7XG4gIGNpdHk6IENpdHk7XG4gIHNwb3J0OiBTcG9ydDtcbiAgbG9jYXRpb246IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgcHJpY2U6IG51bWJlcjtcbiAgcmVndWxhdGlvbkZpbGVzOiBGaWxlW107XG4gIHNldHRpbmdzOiBUb3VybmFtZW50U2V0dGluZ3M7XG4gIGxlYWd1ZTogTGVhZ3VlO1xuICB0ZWFtc0NvdW50OiBudW1iZXI7XG4gIGNsb3Nlc3RHYW1lRGF0ZXRpbWU6IHN0cmluZztcbiAgc3RhdHVzOiBUb3VybmFtZW50U3RhdHVzZXM7XG4gIHRlYW1XaW5uZXI6IFRvdXJuYW1lbnRUZWFtV2lubmVyO1xuICB0ZWFtU2Vjb25kOiBUb3VybmFtZW50VGVhbVdpbm5lcjtcbiAgdGVhbVRoaXJkOiBUb3VybmFtZW50VGVhbVdpbm5lcjtcbiAgc2Vhc29uOiBUb3VybmFtZW50U2Vhc29uO1xuICBzZWFzb25JZDogbnVtYmVyO1xuICBnYW1lUHJpY2U6IG51bWJlcjtcbiAgc2Vhc29uVG91cm5hbWVudElkOiBudW1iZXI7XG5cbiAgZ2V0RW1wdHlMb2dvQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGFzc0xpc3QgPSBbJ2VtcHR5LWxvZ28nXTtcbiAgICBpZiAodGhpcy5zcG9ydC5pc0Jhc2tldGJhbGwoKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28tYmFza2V0YmFsbCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zcG9ydC5pc1ZvbGxleWJhbGwoKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28tdm9sbGV5YmFsbCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zcG9ydC5pc0hvY2tleSgpKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnZW1wdHktbG9nby1ob2NrZXknKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3BvcnQuaXNGb290YmFsbCgpKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnZW1wdHktbG9nby1mb290YmFsbCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zcG9ydC5pc0hhbmRiYWxsKCkpIHtcbiAgICAgIGNsYXNzTGlzdC5wdXNoKCdlbXB0eS1sb2dvLWhhbmRiYWxsJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNwb3J0LmlzUnVnYnkoKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28tcnVnYnknKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3BvcnQuaXNXYXRlcnBvbG8oKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28td2F0ZXJwb2xvJyk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc0xpc3Quam9pbignICcpO1xuICB9XG5cbiAgQFRvRnJvbnRIb29rXG4gIHN0YXRpYyB0b0Zyb250KGRhdGE6IGFueSk6IGFueSB7fVxuXG4gIEBUb0JhY2tIb29rXG4gIHN0YXRpYyB0b0JhY2soZGF0YTogYW55KTogYW55IHt9XG59XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL21vZGVscy90b3VybmFtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsa0NBQWUsQ0FBQTtJQUNmLDhDQUEyQixDQUFBO0lBQzNCLGdDQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsZUFBZSxLQUFmLGVBQWUsUUFJMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzVCLDJEQUFJLENBQUE7SUFDSix5RUFBVyxDQUFBO0lBQ1gsK0RBQU0sQ0FBQTtBQUNSLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBTyxDQUFBO0lBQ1AsMkRBQU0sQ0FBQTtJQUNOLHFEQUFHLENBQUE7QUFDTCxDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVELE1BQU0sQ0FBTixJQUFZLHdCQUlY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O1lBQ3BCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLHFCQUFxQixFQUFFLHFCQUFxQjtZQUM1QyxNQUFNLEVBQUUsUUFBUTtZQUNoQixXQUFXLEVBQUUsWUFBWTtZQUN6QixXQUFXLEVBQUUsWUFBWTtZQUN6QixVQUFVLEVBQUUsV0FBVztZQUN2QixNQUFNLEVBQUUsUUFBUTtZQUNoQixTQUFTLEVBQUUsVUFBVTtZQUNyQixVQUFVLEVBQUUsV0FBVztZQUN2QixvQkFBb0IsRUFBRSxvQkFBb0I7U0FDM0M7UUFDRCxRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxJQUFJO1lBQ1gsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsS0FBSztZQUNaLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDO1lBQ3JDLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLE1BQU0sRUFBRSxnQkFBZ0I7U0FDekI7S0FDRixDQUFDO0dBQ1csVUFBVSxDQTBEdEI7U0ExRFksVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCwgZW51bUZpZWxkLCBNb2RlbEluc3RhbmNlLCBEYXRlVGltZUZpZWxkLCBUb0JhY2tIb29rLCBUb0Zyb250SG9vayB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBDaXR5IH0gZnJvbSAnLi9jaXR5JztcbmltcG9ydCB7IEZpbGUgfSBmcm9tICcuL2ZpbGUnO1xuaW1wb3J0IHsgTGVhZ3VlIH0gZnJvbSAnLi9sZWFndWUnO1xuaW1wb3J0IHsgU3BvcnQgfSBmcm9tICcuL3Nwb3J0JztcbmltcG9ydCB7IFRlYW0gfSBmcm9tICcuL3RlYW0nO1xuaW1wb3J0IHsgVG91cm5hbWVudFNlYXNvbiB9IGZyb20gJy4vdG91cm5hbWVudC1zZWFzb24nO1xuXG5leHBvcnQgZW51bSBUb3VybmFtZW50VHlwZXMge1xuICBncm91cCA9ICdncm91cCcsXG4gIGVsaW1pbmF0aW9uID0gJ2VsaW1pbmF0aW9uJyxcbiAgZmliYSA9ICdmaWJhJ1xufVxuXG5leHBvcnQgZW51bSBUb3VybmFtZW50U3RhdHVzZXMge1xuICBvcGVuLFxuICBpbl9wcm9ncmVzcyxcbiAgY2xvc2VkLFxufVxuXG5leHBvcnQgZW51bSBUb3VybmFtZW50R2VuZGVyIHtcbiAgbWFsZT0gMSxcbiAgZmVtYWxlLFxuICBhbGxcbn1cblxuZXhwb3J0IGVudW0gQmFza2V0YmFsbFN0YXRpc3RpY1R5cGVzIHtcbiAgc3RhbmRhcmQgPSAxLFxuICBsaWdodCxcbiAgYWR2YW5jZWRcbn1cblxuZXhwb3J0IGVudW0gVm9sbGV5YmFsbFN0YXRpc3RpY1R5cGVzIHtcbiAgc3RhbmRhcmQgPSAxLFxuICBsaWdodCxcbiAgYWR2YW5jZWRcbn1cblxuZXhwb3J0IGVudW0gUnVnYnlTdGF0aXN0aWNUeXBlcyB7XG4gIGxpZ2h0ID0gMSxcbiAgc3RhbmRhcmQsXG59XG5cbmV4cG9ydCBlbnVtIEdhbWVUaW1lVHlwZXMge1xuICBjbGVhbiA9IDEsXG4gIGRpcnR5LFxufVxuXG5leHBvcnQgZW51bSBPdmVydGltZVR5cGVzIHtcbiAgdG9fc2NvcmVfdG90YWwgPSAxLFxuICB0b19zY29yZV9kaWZmLFxuICB0aW1lLFxuICB3aXRob3V0X292ZXJ0aW1lLFxuICB0b19maXJzdF9nb2FsLFxuICB0b19maXJzdF9nb2FsX2FuZF9idWxsaXR0cyxcbiAgYnVsbGl0dHMsXG4gIHBlbmFsdGllcyxcbiAgdGltZV9hbmRfcGVuYWx0aWVzXG59XG5cbmV4cG9ydCBlbnVtIFRpbWVyVHlwZXMge1xuICBiYWNrd2FyZCA9IDEsXG4gIGZvcndhcmQsXG59XG5cbkBNb2RlbEluc3RhbmNlKHtcbiAgbWFwcGluZ0ZpZWxkczoge1xuICAgIGlkOiAnaWQnLFxuICAgIGdlbmRlcjogJ2dlbmRlcicsXG4gICAgYmlydGhfeWVhcl9mcm9tOiAnYmlydGhZZWFyRnJvbScsXG4gICAgYmlydGhfeWVhcl90bzogJ2JpcnRoWWVhclRvJyxcbiAgICBtYXhfdGVhbV9wbGF5ZXJzOiAnbWF4VGVhbVBsYXllcnMnLFxuICAgIG1heF9nYW1lX3BsYXllcnM6ICdtYXhHYW1lUGxheWVycycsXG4gICAgdHlwZTogJ3R5cGUnLFxuICAgIHRvdXJzX2NvdW50OiAndG91cnNDb3VudCcsXG4gICAgcGVyaW9kc19jb3VudDogJ3BlcmlvZHNDb3VudCcsXG4gICAgcGVyaW9kX3RpbWU6ICdwZXJpb2RUaW1lJyxcbiAgICBvdmVydGltZV90eXBlOiAnb3ZlcnRpbWVUeXBlJyxcbiAgICBvdmVydGltZV90aW1lOiAnb3ZlcnRpbWVUaW1lJyxcbiAgICBvdmVydGltZV9zY29yZTogJ292ZXJ0aW1lU2NvcmUnLFxuICAgIGdhbWVfdHlwZTogJ2dhbWVUeXBlJyxcbiAgICB0aW1lb3V0X2NvdW50OiAndGltZW91dENvdW50JyxcbiAgICB0aW1lb3V0X3RpbWU6ICd0aW1lb3V0VGltZScsXG4gICAgc3Vic3RpdHV0ZV9jb3VudDogJ3N1YnN0aXR1dGVDb3VudCcsXG4gICAgZ2FtZV91cF90b19zY29yZTogJ2dhbWVVcFRvU2NvcmUnLFxuICAgIHZvbGxleWJhbGxfc2NvcmVfaW5fc2V0OiAndm9sbGV5YmFsbFNjb3JlSW5TZXQnLFxuICAgIHZvbGxleWJhbGxfc2NvcmVfaW5fbGFzdF9zZXQ6ICd2b2xsZXliYWxsU2NvcmVJbkxhc3RTZXQnLFxuICAgIG1hbmFnZV90ZWFtX2FwcGxpY2F0aW9uOiAnbWFuYWdlVGVhbUFwcGxpY2F0aW9uJyxcbiAgICByZWNydWl0bWVudF9pc19vcGVuOiAncmVjcnVpdG1lbnRJc09wZW4nLFxuICAgIHRyYW5zZmVyX2lzX29wZW46ICd0cmFuc2ZlcklzT3BlbicsXG4gICAgYmFza2V0YmFsbF9zdGF0aXN0aWNfdHlwZTogJ2Jhc2tldGJhbGxTdGF0aXN0aWNUeXBlJyxcbiAgICB2b2xsZXliYWxsX3N0YXRpc3RpY190eXBlOiAndm9sbGV5YmFsbFN0YXRpc3RpY1R5cGUnLFxuICAgIHJ1Z2J5X3N0YXRpc3RpY190eXBlOiAncnVnYnlTdGF0aXN0aWNUeXBlJyxcbiAgICBzaG90X2Nsb2NrX2VuYWJsZWQ6ICdzaG90Q2xvY2tFbmFibGVkJyxcbiAgICBnYW1lX3RpbWVfdHlwZTogJ2dhbWVUaW1lVHlwZScsXG4gICAgd2l0aF9yZXN1bHRfdGFibGU6ICd3aXRoUmVzdWx0VGFibGUnLFxuICAgIGZyZWVfc3Vic3RpdHV0ZV9lbmFibGVkOiAnZnJlZVN1YnN0aXR1dGVFbmFibGVkJyxcbiAgICBzdWJzdGl0dXRlX21hbmFnZV9lbmFibGVkOiAnc3Vic3RpdHV0ZU1hbmFnZUVuYWJsZWQnLFxuICAgIGJvbnVzX3BvaW50c19lbmFibGVkOiAnYm9udXNQb2ludHNFbmFibGVkJyxcbiAgICBtaW5vcl9wZW5hbHR5X3RpbWU6ICdtaW5vclBlbmFsdHlUaW1lJyxcbiAgICBtYWpvcl9wZW5hbHR5X3RpbWU6ICdtYWpvclBlbmFsdHlUaW1lJyxcbiAgICBtaXNjb25kdWN0X3BlbmFsdHlfdGltZTogJ21pc2NvbmR1Y3RQZW5hbHR5VGltZScsXG4gICAgZ2FtZV9taXNjb25kdWN0X3BlbmFsdHlfdGltZTogJ2dhbWVNaXNjb25kdWN0UGVuYWx0eVRpbWUnLFxuICAgIHRpbWVyX3R5cGU6ICd0aW1lclR5cGUnLFxuICB9LFxuICByZWxhdGlvbjoge1xuICAgIHR5cGU6IGVudW1GaWVsZChUb3VybmFtZW50VHlwZXMpLFxuICAgIGdlbmRlcjogZW51bUZpZWxkKFRvdXJuYW1lbnRHZW5kZXIpLFxuICAgIGJhc2tldGJhbGxTdGF0aXN0aWNUeXBlOiBlbnVtRmllbGQoQmFza2V0YmFsbFN0YXRpc3RpY1R5cGVzKSxcbiAgICB2b2xsZXliYWxsU3RhdGlzdGljVHlwZTogZW51bUZpZWxkKFZvbGxleWJhbGxTdGF0aXN0aWNUeXBlcyksXG4gICAgcnVnYnlTdGF0aXN0aWNUeXBlOiBlbnVtRmllbGQoUnVnYnlTdGF0aXN0aWNUeXBlcyksXG4gICAgZ2FtZVRpbWVUeXBlOiBlbnVtRmllbGQoR2FtZVRpbWVUeXBlcyksXG4gICAgb3ZlcnRpbWVUeXBlOiBlbnVtRmllbGQoT3ZlcnRpbWVUeXBlcyksXG4gICAgdGltZXJUeXBlOiBlbnVtRmllbGQoVGltZXJUeXBlcyksXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgVG91cm5hbWVudFNldHRpbmdzIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgaWQ6IG51bWJlcjtcbiAgZ2VuZGVyOiBUb3VybmFtZW50R2VuZGVyO1xuICBiaXJ0aFllYXJGcm9tOiBudW1iZXI7XG4gIGJpcnRoWWVhclRvOiBudW1iZXI7XG4gIG1heFRlYW1QbGF5ZXJzOiBudW1iZXI7XG4gIG1heEdhbWVQbGF5ZXJzOiBudW1iZXI7XG4gIHR5cGU6IFRvdXJuYW1lbnRUeXBlcztcbiAgdG91cnNDb3VudDogbnVtYmVyO1xuICBwZXJpb2RzQ291bnQ6IG51bWJlcjtcbiAgcGVyaW9kVGltZTogbnVtYmVyO1xuICBvdmVydGltZVR5cGU6IE92ZXJ0aW1lVHlwZXM7XG4gIG92ZXJ0aW1lVGltZTogbnVtYmVyO1xuICBvdmVydGltZVNjb3JlOiBudW1iZXI7XG4gIGdhbWVUeXBlOiBzdHJpbmc7XG4gIHRpbWVvdXRDb3VudDogbnVtYmVyO1xuICB0aW1lb3V0VGltZTogbnVtYmVyO1xuICBzdWJzdGl0dXRlQ291bnQ6IG51bWJlcjtcbiAgZ2FtZVVwVG9TY29yZTogbnVtYmVyO1xuICB2b2xsZXliYWxsU2NvcmVJblNldDogbnVtYmVyO1xuICB2b2xsZXliYWxsU2NvcmVJbkxhc3RTZXQ6IG51bWJlcjtcbiAgbWFuYWdlVGVhbUFwcGxpY2F0aW9uOiBib29sZWFuO1xuICByZWNydWl0bWVudElzT3BlbjogYm9vbGVhbjtcbiAgdHJhbnNmZXJJc09wZW46IGJvb2xlYW47XG4gIGJhc2tldGJhbGxTdGF0aXN0aWNUeXBlOiBCYXNrZXRiYWxsU3RhdGlzdGljVHlwZXM7XG4gIHZvbGxleWJhbGxTdGF0aXN0aWNUeXBlOiBWb2xsZXliYWxsU3RhdGlzdGljVHlwZXM7XG4gIHJ1Z2J5U3RhdGlzdGljVHlwZTogUnVnYnlTdGF0aXN0aWNUeXBlcztcbiAgc2hvdENsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgZ2FtZVRpbWVUeXBlOiBHYW1lVGltZVR5cGVzO1xuICB3aXRoUmVzdWx0VGFibGU6IGJvb2xlYW47XG4gIGZyZWVTdWJzdGl0dXRlRW5hYmxlZDogYm9vbGVhbjtcbiAgYm9udXNQb2ludHNFbmFibGVkOiBib29sZWFuO1xuICBzdWJzdGl0dXRlTWFuYWdlRW5hYmxlZDogYm9vbGVhbjtcbiAgbWlub3JQZW5hbHR5VGltZTogbnVtYmVyO1xuICBtYWpvclBlbmFsdHlUaW1lOiBudW1iZXI7XG4gIG1pc2NvbmR1Y3RQZW5hbHR5VGltZTogbnVtYmVyO1xuICBnYW1lTWlzY29uZHVjdFBlbmFsdHlUaW1lOiBudW1iZXI7XG4gIHRpbWVyVHlwZTogVGltZXJUeXBlcztcblxuICBnZXQgZ2VuZGVyVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB5ZWFyRGlmZiA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIHRoaXMuYmlydGhZZWFyRnJvbTtcbiAgICBpZiAodGhpcy5nZW5kZXIgPT09IFRvdXJuYW1lbnRHZW5kZXIubWFsZSkge1xuICAgICAgaWYgKHllYXJEaWZmIDwgMTUpIHtcbiAgICAgICAgcmV0dXJuICfQnNCw0LvRjNGH0LjQutC4JztcbiAgICAgIH1cbiAgICAgIGlmICh5ZWFyRGlmZiA8IDIxKSB7XG4gICAgICAgIHJldHVybiAn0K7QvdC+0YjQuCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ9Cc0YPQttGH0LjQvdGLJztcbiAgICB9XG4gICAgaWYgKHRoaXMuZ2VuZGVyID09PSBUb3VybmFtZW50R2VuZGVyLmZlbWFsZSkge1xuICAgICAgaWYgKHllYXJEaWZmIDwgMTUpIHtcbiAgICAgICAgcmV0dXJuICfQlNC10LLQvtGH0LrQuCc7XG4gICAgICB9XG4gICAgICBpZiAoeWVhckRpZmYgPCAyMSkge1xuICAgICAgICByZXR1cm4gJ9CU0LXQstGD0YjQutC4JztcbiAgICAgIH1cbiAgICAgIHJldHVybiAn0JbQtdC90YnQuNC90YsnO1xuICAgIH1cbiAgICByZXR1cm4gJ9Ch0LzQtdGI0LDQvdC90YvQuSc7XG4gIH1cblxuICBAVG9Gcm9udEhvb2tcbiAgc3RhdGljIHRvRnJvbnQoZGF0YTogYW55KTogYW55IHt9XG5cbiAgQFRvQmFja0hvb2tcbiAgc3RhdGljIHRvQmFjayhkYXRhOiBhbnkpOiBhbnkge31cbn1cblxuQE1vZGVsSW5zdGFuY2Uoe1xuICBtYXBwaW5nRmllbGRzOiB7XG4gICAgaWQ6ICdpZCcsXG4gICAgdGVhbV9pZDogJ3RlYW1JZCcsXG4gICAgdG91cm5hbWVudF9pZDogJ3RvdXJuYW1lbnRJZCcsXG4gICAgbmFtZTogJ25hbWUnLFxuICAgIGxvZ286ICdsb2dvJyxcbiAgICB0ZWFtOiAndGVhbScsXG4gICAgcG9pbnRzOiAncG9pbnRzJyxcbiAgfSxcbiAgcmVsYXRpb246IHtcbiAgICBsb2dvOiBGaWxlLFxuICAgIHRlYW06IFRlYW0sXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgVG91cm5hbWVudFRlYW1XaW5uZXIgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBpZDogbnVtYmVyO1xuICB0ZWFtSWQ6IG51bWJlcjtcbiAgdG91cm5hbWVudElkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbG9nbzogRmlsZTtcbiAgdGVhbTogVGVhbTtcbiAgcG9pbnRzOiBudW1iZXI7XG5cbiAgQFRvRnJvbnRIb29rXG4gIHN0YXRpYyB0b0Zyb250KGRhdGE6IGFueSk6IGFueSB7fVxuXG4gIEBUb0JhY2tIb29rXG4gIHN0YXRpYyB0b0JhY2soZGF0YTogYW55KTogYW55IHt9XG59XG5cbkBNb2RlbEluc3RhbmNlKHtcbiAgbWFwcGluZ0ZpZWxkczoge1xuICAgIGlkOiAnaWQnLFxuICAgIG5hbWU6ICduYW1lJyxcbiAgICBhbGlhczogJ2FsaWFzJyxcbiAgICBsb2dvOiAnbG9nbycsXG4gICAgY292ZXI6ICdjb3ZlcicsXG4gICAgcHJldmlld19pbWFnZTogJ3ByZXZpZXdJbWFnZScsXG4gICAgY2l0eTogJ2NpdHknLFxuICAgIHNwb3J0OiAnc3BvcnQnLFxuICAgIGxvY2F0aW9uOiAnbG9jYXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnZGVzY3JpcHRpb24nLFxuICAgIGRhdGU6ICdkYXRlJyxcbiAgICBwcmljZTogJ3ByaWNlJyxcbiAgICByZWd1bGF0aW9uX2ZpbGVzOiAncmVndWxhdGlvbkZpbGVzJyxcbiAgICBzZXR0aW5nczogJ3NldHRpbmdzJyxcbiAgICBsZWFndWU6ICdsZWFndWUnLFxuICAgIHRlYW1zX2NvdW50OiAndGVhbXNDb3VudCcsXG4gICAgY2xvc2VzdF9nYW1lX2RhdGV0aW1lOiAnY2xvc2VzdEdhbWVEYXRldGltZScsXG4gICAgc3RhdHVzOiAnc3RhdHVzJyxcbiAgICB0ZWFtX3dpbm5lcjogJ3RlYW1XaW5uZXInLFxuICAgIHRlYW1fc2Vjb25kOiAndGVhbVNlY29uZCcsXG4gICAgdGVhbV90aGlyZDogJ3RlYW1UaGlyZCcsXG4gICAgc2Vhc29uOiAnc2Vhc29uJyxcbiAgICBzZWFzb25faWQ6ICdzZWFzb25JZCcsXG4gICAgZ2FtZV9wcmljZTogJ2dhbWVQcmljZScsXG4gICAgc2Vhc29uX3RvdXJuYW1lbnRfaWQ6ICdzZWFzb25Ub3VybmFtZW50SWQnLFxuICB9LFxuICByZWxhdGlvbjoge1xuICAgIGxvZ286IEZpbGUsXG4gICAgY292ZXI6IEZpbGUsXG4gICAgcHJldmlld0ltYWdlOiBGaWxlLFxuICAgIGNpdHk6IENpdHksXG4gICAgc3BvcnQ6IFNwb3J0LFxuICAgIHJlZ3VsYXRpb25GaWxlOiBGaWxlLFxuICAgIHNldHRpbmdzOiBUb3VybmFtZW50U2V0dGluZ3MsXG4gICAgZGF0ZTogRGF0ZVRpbWVGaWVsZCxcbiAgICBsZWFndWU6IExlYWd1ZSxcbiAgICBzdGF0dXM6IGVudW1GaWVsZChUb3VybmFtZW50U3RhdHVzZXMpLFxuICAgIHRlYW1XaW5uZXI6IFRvdXJuYW1lbnRUZWFtV2lubmVyLFxuICAgIHRlYW1TZWNvbmQ6IFRvdXJuYW1lbnRUZWFtV2lubmVyLFxuICAgIHRlYW1UaGlyZDogVG91cm5hbWVudFRlYW1XaW5uZXIsXG4gICAgc2Vhc29uOiBUb3VybmFtZW50U2Vhc29uLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIFRvdXJuYW1lbnQgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFsaWFzOiBzdHJpbmc7XG4gIGxvZ286IEZpbGU7XG4gIGNvdmVyOiBGaWxlO1xuICBwcmV2aWV3SW1hZ2U6IEZpbGU7XG4gIGNpdHk6IENpdHk7XG4gIHNwb3J0OiBTcG9ydDtcbiAgbG9jYXRpb246IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgcHJpY2U6IG51bWJlcjtcbiAgcmVndWxhdGlvbkZpbGVzOiBGaWxlW107XG4gIHNldHRpbmdzOiBUb3VybmFtZW50U2V0dGluZ3M7XG4gIGxlYWd1ZTogTGVhZ3VlO1xuICB0ZWFtc0NvdW50OiBudW1iZXI7XG4gIGNsb3Nlc3RHYW1lRGF0ZXRpbWU6IHN0cmluZztcbiAgc3RhdHVzOiBUb3VybmFtZW50U3RhdHVzZXM7XG4gIHRlYW1XaW5uZXI6IFRvdXJuYW1lbnRUZWFtV2lubmVyO1xuICB0ZWFtU2Vjb25kOiBUb3VybmFtZW50VGVhbVdpbm5lcjtcbiAgdGVhbVRoaXJkOiBUb3VybmFtZW50VGVhbVdpbm5lcjtcbiAgc2Vhc29uOiBUb3VybmFtZW50U2Vhc29uO1xuICBzZWFzb25JZDogbnVtYmVyO1xuICBnYW1lUHJpY2U6IG51bWJlcjtcbiAgc2Vhc29uVG91cm5hbWVudElkOiBudW1iZXI7XG5cbiAgZ2V0RW1wdHlMb2dvQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGFzc0xpc3QgPSBbJ2VtcHR5LWxvZ28nXTtcbiAgICBpZiAodGhpcy5zcG9ydC5pc0Jhc2tldGJhbGwoKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28tYmFza2V0YmFsbCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zcG9ydC5pc1ZvbGxleWJhbGwoKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28tdm9sbGV5YmFsbCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zcG9ydC5pc0hvY2tleSgpKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnZW1wdHktbG9nby1ob2NrZXknKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3BvcnQuaXNGb290YmFsbCgpKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnZW1wdHktbG9nby1mb290YmFsbCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zcG9ydC5pc0hhbmRiYWxsKCkpIHtcbiAgICAgIGNsYXNzTGlzdC5wdXNoKCdlbXB0eS1sb2dvLWhhbmRiYWxsJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNwb3J0LmlzUnVnYnkoKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28tcnVnYnknKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3BvcnQuaXNXYXRlcnBvbG8oKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2VtcHR5LWxvZ28td2F0ZXJwb2xvJyk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc0xpc3Quam9pbignICcpO1xuICB9XG5cbiAgQFRvRnJvbnRIb29rXG4gIHN0YXRpYyB0b0Zyb250KGRhdGE6IGFueSk6IGFueSB7fVxuXG4gIEBUb0JhY2tIb29rXG4gIHN0YXRpYyB0b0JhY2soZGF0YTogYW55KTogYW55IHt9XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { HttpClient } from '@angular/common/http';
3
- import { Subject } from 'rxjs/internal/Subject';
4
- import { ReplaySubject } from 'rxjs/internal/ReplaySubject';
5
- import * as Centrifuge from 'centrifuge';
6
- import { BehaviorSubject, Observable } from 'rxjs';
3
+ import { ReplaySubject, Subject } from 'rxjs';
4
+ import { Centrifuge } from 'centrifuge';
5
+ import { BehaviorSubject } from 'rxjs';
7
6
  import { ConfigService } from './config.service';
7
+ import { filter, take, tap } from 'rxjs/operators';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common/http";
10
10
  import * as i2 from "./config.service";
@@ -24,11 +24,8 @@ export class CentrifugoService {
24
24
  return this.channels$[channel];
25
25
  }
26
26
  this.channels$[channel] = new Subject();
27
- const subscription = this.connect().subscribe(connected => {
27
+ this.connect().subscribe(connected => {
28
28
  this.subscriptions[channel] = this.addEngineSubscription(channel);
29
- setTimeout(() => {
30
- subscription.unsubscribe();
31
- });
32
29
  });
33
30
  return this.channels$[channel];
34
31
  }
@@ -45,60 +42,57 @@ export class CentrifugoService {
45
42
  connect() {
46
43
  if (!this.initializeEngineSubject) {
47
44
  this.initializeEngineSubject = new ReplaySubject(1);
48
- this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)
45
+ this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/centrifugo_v2/`)
49
46
  .subscribe(config => {
50
47
  this.initializeEngine({
51
48
  url: this.configService.get('centrifugoUrl'),
52
- user: config.user,
53
- timestamp: config.timestamp,
54
49
  token: config.token,
55
50
  transports: ['websocket']
56
51
  });
57
- this.centrifuge.connect();
58
- this.centrifuge.on('connect', () => {
52
+ this.centrifuge.on('connected', () => {
59
53
  this.initializeEngineSubject.next(true);
60
54
  this.connectedSubject.next(true);
61
55
  });
62
- this.centrifuge.on('disconnect', () => {
56
+ this.centrifuge.on('disconnected', () => {
63
57
  this.connectedSubject.next(false);
58
+ this.initializeEngineSubject.next(false);
64
59
  });
60
+ this.centrifuge.connect();
65
61
  });
66
62
  }
67
- return this.initializeEngineSubject;
63
+ return this.initializeEngineSubject.pipe(filter(item => Boolean(item)), take(1));
68
64
  }
69
65
  publish(channel, message) {
70
- return new Observable(observer => {
71
- this.connect().subscribe(() => {
72
- if (!this.subscriptions[channel]) {
73
- this.subscriptions[channel] = this.addEngineSubscription(channel);
74
- }
75
- this.subscriptions[channel].publish(message).then(res => {
76
- observer.next(res);
77
- observer.complete();
78
- }, error => {
79
- throw error;
80
- });
81
- });
82
- });
66
+ return this.connect().pipe(tap(() => this.centrifuge.publish(channel, message)));
83
67
  }
84
68
  disconnect() {
85
69
  this.centrifuge.disconnect();
86
70
  this.initializeEngineSubject = undefined;
71
+ for (const channel of Object.keys(this.channels$)) {
72
+ this.unsubscribe(channel);
73
+ }
87
74
  this.channels$ = {};
88
75
  this.subscriptions = {};
89
76
  }
90
77
  initializeEngine(config) {
91
- this.centrifuge = new Centrifuge(config);
78
+ this.centrifuge = new Centrifuge(config.url, {
79
+ token: config.token,
80
+ });
92
81
  }
93
82
  addEngineSubscription(channel) {
94
- return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));
83
+ const sub = this.centrifuge.newSubscription(channel);
84
+ sub.on('publication', ctx => {
85
+ this.resolveMessage(channel, ctx.data);
86
+ });
87
+ sub.subscribe();
88
+ return sub;
95
89
  }
96
- resolveMessage(response) {
97
- const channel = response.channel;
90
+ resolveMessage(channel, message) {
98
91
  if (!this.channels$[channel]) {
99
92
  return;
100
93
  }
101
- this.channels$[channel].next(response.data);
94
+ console.log(message);
95
+ this.channels$[channel].next(message);
102
96
  }
103
97
  }
104
98
  CentrifugoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CentrifugoService_Factory() { return new CentrifugoService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.ConfigService)); }, token: CentrifugoService, providedIn: "root" });
@@ -109,4 +103,4 @@ CentrifugoService.ctorParameters = () => [
109
103
  { type: HttpClient },
110
104
  { type: ConfigService }
111
105
  ];
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudHJpZnVnby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvY2VudHJpZnVnby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBU2pELE1BQU0sT0FBTyxpQkFBaUI7SUFXNUIsWUFDVSxVQUFzQixFQUN0QixhQUE0QjtRQUQ1QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBWjlCLGNBQVMsR0FBb0MsRUFBRSxDQUFDO1FBQ2hELGtCQUFhLEdBQTJCLEVBQUUsQ0FBQztRQUczQyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQVMzRCxDQUFDO0lBUEwsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQU9ELE1BQU0sQ0FBQyxPQUFPO1FBQ1osSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxF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QW5IRixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7WUFmdkIsVUFBVTtZQU9WLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJqZWN0JztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL1JlcGxheVN1YmplY3QnO1xuXG5pbXBvcnQgKiBhcyBDZW50cmlmdWdlIGZyb20gJ2NlbnRyaWZ1Z2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5cbmludGVyZmFjZSBDZW50cmlmdWdvQ29uZmlnIHtcbiAgdXNlcjogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQ2VudHJpZnVnb1NlcnZpY2Uge1xuICBwcml2YXRlIGNoYW5uZWxzJDogeyBba2V5OiBzdHJpbmddOiBTdWJqZWN0PGFueT4gfSA9IHt9O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBjZW50cmlmdWdlO1xuICBwcml2YXRlIGluaXRpYWxpemVFbmdpbmVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIGNvbm5lY3RlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBnZXQgY29ubmVjdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWRTdWJqZWN0O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgKSB7IH1cblxuICBsaXN0ZW4oY2hhbm5lbCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKGNoYW5uZWwgaW4gdGhpcy5jaGFubmVscyQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoYW5uZWxzJFtjaGFubmVsXTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5uZWxzJFtjaGFubmVsXSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmNvbm5lY3QoKS5zdWJzY3JpYmUoY29ubmVjdGVkID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXSA9IHRoaXMuYWRkRW5naW5lU3Vic2NyaXB0aW9uKGNoYW5uZWwpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gIH1cblxuICB1bnN1YnNjcmliZShjaGFubmVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdLnVuc3Vic2NyaWJlKCk7XG4gICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdO1xuICAgIH1cbiAgICBpZiAodGhpcy5jaGFubmVscyRbY2hhbm5lbF0pIHtcbiAgICAgIHRoaXMuY2hhbm5lbHMkW2NoYW5uZWxdLmNvbXBsZXRlKCk7XG4gICAgICBkZWxldGUgdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldDxDZW50cmlmdWdvQ29uZmlnPihgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2NlbnRyaWZ1Z28vYClcbiAgICAgICAgLnN1YnNjcmliZShjb25maWcgPT4ge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZSh7XG4gICAgICAgICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS5nZXQoJ2NlbnRyaWZ1Z29VcmwnKSxcbiAgICAgICAgICAgIHVzZXI6IGNvbmZpZy51c2VyLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBjb25maWcudGltZXN0YW1wLFxuICAgICAgICAgICAgdG9rZW46IGNvbmZpZy50b2tlbixcbiAgICAgICAgICAgIHRyYW5zcG9ydHM6IFsnd2Vic29ja2V0J11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNlbnRyaWZ1Z2UuY29ubmVjdCgpO1xuICAgICAgICAgIHRoaXMuY2VudHJpZnVnZS5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2VudHJpZnVnZS5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3Q7XG4gIH1cblxuICBwdWJsaXNoKGNoYW5uZWw6IHN0cmluZywgbWVzc2FnZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlciA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3QoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXSkge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXSA9IHRoaXMuYWRkRW5naW5lU3Vic2NyaXB0aW9uKGNoYW5uZWwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXS5wdWJsaXNoKG1lc3NhZ2UpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlcyk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNlbnRyaWZ1Z2UuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jaGFubmVscyQgPSB7fTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVuZ2luZShjb25maWc6IHtcbiAgICB1cmw6IHN0cmluZyxcbiAgICB1c2VyOiBzdHJpbmcsXG4gICAgdGltZXN0YW1wOiBzdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICB0cmFuc3BvcnRzOiBzdHJpbmdbXVxuICB9KTogdm9pZCB7XG4gICAgdGhpcy5jZW50cmlmdWdlID0gbmV3IENlbnRyaWZ1Z2UoY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRW5naW5lU3Vic2NyaXB0aW9uKGNoYW5uZWw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2VudHJpZnVnZS5zdWJzY3JpYmUoY2hhbm5lbCwgdGhpcy5yZXNvbHZlTWVzc2FnZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1lc3NhZ2UocmVzcG9uc2U6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5uZWwgPSByZXNwb25zZS5jaGFubmVsO1xuICAgIGlmICghdGhpcy5jaGFubmVscyRbY2hhbm5lbF0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5uZWxzJFtjaGFubmVsXS5uZXh0KHJlc3BvbnNlLmRhdGEpO1xuICB9XG59XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudHJpZnVnby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvY2VudHJpZnVnby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFPbkQsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLFVBQXNCLEVBQ3RCLGFBQTRCO1FBRDVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFaOUIsY0FBUyxHQUFvQyxFQUFFLENBQUM7UUFDaEQsa0JBQWEsR0FBb0MsRUFBRSxDQUFDO1FBR3BELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBUzNELENBQUM7SUFQTCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBT0QsTUFBTSxDQUFVLE9BQU87UUFDckIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9B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TSxFQUFDOzs7WUFkdkIsVUFBVTtZQU1WLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENlbnRyaWZ1Z2UgfSBmcm9tICdjZW50cmlmdWdlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnY2VudHJpZnVnZS9idWlsZC9zdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBDZW50cmlmdWdvQ29uZmlnIHtcbiAgdG9rZW46IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQ2VudHJpZnVnb1NlcnZpY2Uge1xuICBwcml2YXRlIGNoYW5uZWxzJDogeyBba2V5OiBzdHJpbmddOiBTdWJqZWN0PGFueT4gfSA9IHt9O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IHsgW2tleTogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgcHJpdmF0ZSBjZW50cmlmdWdlOiBDZW50cmlmdWdlO1xuICBwcml2YXRlIGluaXRpYWxpemVFbmdpbmVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIGNvbm5lY3RlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBnZXQgY29ubmVjdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWRTdWJqZWN0O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgKSB7IH1cblxuICBsaXN0ZW48VCA9IGFueT4oY2hhbm5lbCk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChjaGFubmVsIGluIHRoaXMuY2hhbm5lbHMkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gICAgfVxuXG4gICAgdGhpcy5jaGFubmVscyRbY2hhbm5lbF0gPSBuZXcgU3ViamVjdDxUPigpO1xuICAgIHRoaXMuY29ubmVjdCgpLnN1YnNjcmliZShjb25uZWN0ZWQgPT4ge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdID0gdGhpcy5hZGRFbmdpbmVTdWJzY3JpcHRpb24oY2hhbm5lbCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gIH1cblxuICB1bnN1YnNjcmliZShjaGFubmVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdLnVuc3Vic2NyaWJlKCk7XG4gICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdO1xuICAgIH1cbiAgICBpZiAodGhpcy5jaGFubmVscyRbY2hhbm5lbF0pIHtcbiAgICAgIHRoaXMuY2hhbm5lbHMkW2NoYW5uZWxdLmNvbXBsZXRlKCk7XG4gICAgICBkZWxldGUgdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldDxDZW50cmlmdWdvQ29uZmlnPihgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2NlbnRyaWZ1Z29fdjIvYClcbiAgICAgICAgLnN1YnNjcmliZShjb25maWcgPT4ge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZSh7XG4gICAgICAgICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS5nZXQoJ2NlbnRyaWZ1Z29VcmwnKSxcbiAgICAgICAgICAgIHRva2VuOiBjb25maWcudG9rZW4sXG4gICAgICAgICAgICB0cmFuc3BvcnRzOiBbJ3dlYnNvY2tldCddXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jZW50cmlmdWdlLm9uKCdjb25uZWN0ZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVFbmdpbmVTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RlZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNlbnRyaWZ1Z2Uub24oJ2Rpc2Nvbm5lY3RlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jZW50cmlmdWdlLmNvbm5lY3QoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QucGlwZShmaWx0ZXIoaXRlbSA9PiBCb29sZWFuKGl0ZW0pKSwgdGFrZSgxKSk7XG4gIH1cblxuICBwdWJsaXNoKGNoYW5uZWw6IHN0cmluZywgbWVzc2FnZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0KCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmNlbnRyaWZ1Z2UucHVibGlzaChjaGFubmVsLCBtZXNzYWdlKSlcbiAgICApO1xuICB9XG5cbiAgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNlbnRyaWZ1Z2UuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBjaGFubmVsIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbm5lbHMkKSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZShjaGFubmVsKTtcbiAgICB9XG4gICAgdGhpcy5jaGFubmVscyQgPSB7fTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVuZ2luZShjb25maWc6IHtcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIHRyYW5zcG9ydHM6IHN0cmluZ1tdXG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmNlbnRyaWZ1Z2UgPSBuZXcgQ2VudHJpZnVnZShjb25maWcudXJsLCB7XG4gICAgICB0b2tlbjogY29uZmlnLnRva2VuLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFbmdpbmVTdWJzY3JpcHRpb24oY2hhbm5lbDogc3RyaW5nKTogU3Vic2NyaXB0aW9uIHtcbiAgICBjb25zdCBzdWIgPSB0aGlzLmNlbnRyaWZ1Z2UubmV3U3Vic2NyaXB0aW9uKGNoYW5uZWwpO1xuICAgIHN1Yi5vbigncHVibGljYXRpb24nLCBjdHggPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlTWVzc2FnZShjaGFubmVsLCBjdHguZGF0YSk7XG4gICAgfSk7XG4gICAgc3ViLnN1YnNjcmliZSgpO1xuICAgIHJldHVybiBzdWI7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVNZXNzYWdlKGNoYW5uZWw6IHN0cmluZywgbWVzc2FnZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNoYW5uZWxzJFtjaGFubmVsXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIHRoaXMuY2hhbm5lbHMkW2NoYW5uZWxdLm5leHQobWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ==
@@ -3,11 +3,10 @@ import * as i0 from '@angular/core';
3
3
  import { Injectable, Optional, Inject, Injector, PLATFORM_ID } from '@angular/core';
4
4
  import * as i1 from '@angular/common/http';
5
5
  import { HttpParams, HttpClient } from '@angular/common/http';
6
- import { map, filter, delay, switchMap } from 'rxjs/operators';
7
- import { BehaviorSubject, Observable, of } from 'rxjs';
8
- import { Subject } from 'rxjs/internal/Subject';
9
- import { ReplaySubject } from 'rxjs/internal/ReplaySubject';
10
- import * as Centrifuge from 'centrifuge';
6
+ import { map, filter, take, tap, delay, switchMap } from 'rxjs/operators';
7
+ import { BehaviorSubject, Subject, ReplaySubject, of } from 'rxjs';
8
+ import { Centrifuge } from 'centrifuge';
9
+ import { Subject as Subject$1 } from 'rxjs/internal/Subject';
11
10
  import { captureException } from '@sentry/angular';
12
11
  import { FormGroup } from '@angular/forms';
13
12
  import { isPlatformBrowser } from '@angular/common';
@@ -1094,6 +1093,11 @@ var OvertimeTypes;
1094
1093
  OvertimeTypes[OvertimeTypes["penalties"] = 8] = "penalties";
1095
1094
  OvertimeTypes[OvertimeTypes["time_and_penalties"] = 9] = "time_and_penalties";
1096
1095
  })(OvertimeTypes || (OvertimeTypes = {}));
1096
+ var TimerTypes;
1097
+ (function (TimerTypes) {
1098
+ TimerTypes[TimerTypes["backward"] = 1] = "backward";
1099
+ TimerTypes[TimerTypes["forward"] = 2] = "forward";
1100
+ })(TimerTypes || (TimerTypes = {}));
1097
1101
  let TournamentSettings = class TournamentSettings extends BaseModel {
1098
1102
  get genderTitle() {
1099
1103
  const yearDiff = new Date().getFullYear() - this.birthYearFrom;
@@ -1165,6 +1169,7 @@ TournamentSettings = __decorate([
1165
1169
  major_penalty_time: 'majorPenaltyTime',
1166
1170
  misconduct_penalty_time: 'misconductPenaltyTime',
1167
1171
  game_misconduct_penalty_time: 'gameMisconductPenaltyTime',
1172
+ timer_type: 'timerType',
1168
1173
  },
1169
1174
  relation: {
1170
1175
  type: enumField(TournamentTypes),
@@ -1174,6 +1179,7 @@ TournamentSettings = __decorate([
1174
1179
  rugbyStatisticType: enumField(RugbyStatisticTypes),
1175
1180
  gameTimeType: enumField(GameTimeTypes),
1176
1181
  overtimeType: enumField(OvertimeTypes),
1182
+ timerType: enumField(TimerTypes),
1177
1183
  }
1178
1184
  })
1179
1185
  ], TournamentSettings);
@@ -1313,11 +1319,13 @@ BasketballGameConfig = __decorate([
1313
1319
  statistic_type: 'statisticType',
1314
1320
  shot_clock_enabled: 'shotClockEnabled',
1315
1321
  game_time_type: 'gameTimeType',
1322
+ timer_type: 'timerType',
1316
1323
  },
1317
1324
  relation: {
1318
1325
  overtimeType: enumField(OvertimeTypes),
1319
1326
  statisticType: enumField(BasketballStatisticTypes),
1320
1327
  gameTimeType: enumField(GameTimeTypes),
1328
+ timerType: enumField(TimerTypes),
1321
1329
  }
1322
1330
  })
1323
1331
  ], BasketballGameConfig);
@@ -10281,11 +10289,8 @@ class CentrifugoService {
10281
10289
  return this.channels$[channel];
10282
10290
  }
10283
10291
  this.channels$[channel] = new Subject();
10284
- const subscription = this.connect().subscribe(connected => {
10292
+ this.connect().subscribe(connected => {
10285
10293
  this.subscriptions[channel] = this.addEngineSubscription(channel);
10286
- setTimeout(() => {
10287
- subscription.unsubscribe();
10288
- });
10289
10294
  });
10290
10295
  return this.channels$[channel];
10291
10296
  }
@@ -10302,60 +10307,57 @@ class CentrifugoService {
10302
10307
  connect() {
10303
10308
  if (!this.initializeEngineSubject) {
10304
10309
  this.initializeEngineSubject = new ReplaySubject(1);
10305
- this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)
10310
+ this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/centrifugo_v2/`)
10306
10311
  .subscribe(config => {
10307
10312
  this.initializeEngine({
10308
10313
  url: this.configService.get('centrifugoUrl'),
10309
- user: config.user,
10310
- timestamp: config.timestamp,
10311
10314
  token: config.token,
10312
10315
  transports: ['websocket']
10313
10316
  });
10314
- this.centrifuge.connect();
10315
- this.centrifuge.on('connect', () => {
10317
+ this.centrifuge.on('connected', () => {
10316
10318
  this.initializeEngineSubject.next(true);
10317
10319
  this.connectedSubject.next(true);
10318
10320
  });
10319
- this.centrifuge.on('disconnect', () => {
10321
+ this.centrifuge.on('disconnected', () => {
10320
10322
  this.connectedSubject.next(false);
10323
+ this.initializeEngineSubject.next(false);
10321
10324
  });
10325
+ this.centrifuge.connect();
10322
10326
  });
10323
10327
  }
10324
- return this.initializeEngineSubject;
10328
+ return this.initializeEngineSubject.pipe(filter(item => Boolean(item)), take(1));
10325
10329
  }
10326
10330
  publish(channel, message) {
10327
- return new Observable(observer => {
10328
- this.connect().subscribe(() => {
10329
- if (!this.subscriptions[channel]) {
10330
- this.subscriptions[channel] = this.addEngineSubscription(channel);
10331
- }
10332
- this.subscriptions[channel].publish(message).then(res => {
10333
- observer.next(res);
10334
- observer.complete();
10335
- }, error => {
10336
- throw error;
10337
- });
10338
- });
10339
- });
10331
+ return this.connect().pipe(tap(() => this.centrifuge.publish(channel, message)));
10340
10332
  }
10341
10333
  disconnect() {
10342
10334
  this.centrifuge.disconnect();
10343
10335
  this.initializeEngineSubject = undefined;
10336
+ for (const channel of Object.keys(this.channels$)) {
10337
+ this.unsubscribe(channel);
10338
+ }
10344
10339
  this.channels$ = {};
10345
10340
  this.subscriptions = {};
10346
10341
  }
10347
10342
  initializeEngine(config) {
10348
- this.centrifuge = new Centrifuge(config);
10343
+ this.centrifuge = new Centrifuge(config.url, {
10344
+ token: config.token,
10345
+ });
10349
10346
  }
10350
10347
  addEngineSubscription(channel) {
10351
- return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));
10348
+ const sub = this.centrifuge.newSubscription(channel);
10349
+ sub.on('publication', ctx => {
10350
+ this.resolveMessage(channel, ctx.data);
10351
+ });
10352
+ sub.subscribe();
10353
+ return sub;
10352
10354
  }
10353
- resolveMessage(response) {
10354
- const channel = response.channel;
10355
+ resolveMessage(channel, message) {
10355
10356
  if (!this.channels$[channel]) {
10356
10357
  return;
10357
10358
  }
10358
- this.channels$[channel].next(response.data);
10359
+ console.log(message);
10360
+ this.channels$[channel].next(message);
10359
10361
  }
10360
10362
  }
10361
10363
  CentrifugoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CentrifugoService_Factory() { return new CentrifugoService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(ConfigService)); }, token: CentrifugoService, providedIn: "root" });
@@ -10450,7 +10452,7 @@ function componentDestroyed(component) {
10450
10452
  throw new Error('Use @UntilDestroy decorator in class');
10451
10453
  }
10452
10454
  if (!component.__componentDestroyed$) {
10453
- component.__componentDestroyed$ = new Subject();
10455
+ component.__componentDestroyed$ = new Subject$1();
10454
10456
  }
10455
10457
  return component.__componentDestroyed$;
10456
10458
  }
@@ -10649,5 +10651,5 @@ HttpCookieInterceptor.ctorParameters = () => [
10649
10651
  * Generated bundle index. Do not edit.
10650
10652
  */
10651
10653
 
10652
- export { Achievement, AchievementTypes, BannerLocation, BaseModel, BaseService, BasketballCourtSides, BasketballCourtZones, BasketballGameApi, BasketballGameConfig, BasketballGameLog, BasketballGameLogTypeLocalization, BasketballGameLogTypes, BasketballGameStatistic, BasketballGameSubLogTypesLocalization, BasketballGameTeamStatistic, BasketballPenaltyTypes, BasketballProfile, BasketballStatistic, BasketballStatisticTypes, BasketballSubLogTypes, CONFIG_DATA, CentrifugoService, City, ConfigService, DateField, DateTimeField, FAULT_LOG_TYPES, Feedback, FeedbackApi, File, FileApi, FileEngine, FootballGameApi, FootballGameConfig, FootballGameLog, FootballGameLogTypeLocalization, FootballGameLogTypes, FootballGameStatistic, FootballGameTeamStatistic, FootballProfile, FootballStatistic, FootballWorkFoot, FootballWorkFootLocalization, Game, GameBaseApi, GameBasketballPosition, GameBasketballPositionLocalization, GameBasketballPositionShortLocalization, GameBill, GameBillStatusLocalization, GameBillStatuses, GameFootballPosition, GameFootballPositionLocalization, GameHandballPosition, GameHandballPositionLocalization, GameHockeyPosition, GameHockeyPositionLocalization, GameInvite, GameInviteStatus, GameResultTypes, GameRugbyPosition, GameRugbyPositionLocalization, GameStatuses, GameTeamAdditionalData, GameTimeTypes, GameTimelineStageItem, GameTimelineStages, GameUser, GameUserDisqualification, GameUserLimitationTypes, GameUserLimitations, GameVolleyballPosition, GameVolleyballPositionLocalization, GameVolleyballPositionShortLocalization, GameVolleyballPositionShortRuLocalization, GameWaterpoloPosition, GameWaterpoloPositionLocalization, GameWaterpoloPositionShortRuLocalization, HandballGameApi, HandballGameConfig, HandballGameLog, HandballGameLogTypeLocalization, HandballGameLogTypes, HandballGameStatistic, HandballGameTeamStatistic, HandballProfile, HandballStatistic, HockeyAdvantageTypes, HockeyGameApi, HockeyGameConfig, HockeyGameLog, HockeyGameLogTypeLocalization, HockeyGameLogTypes, HockeyGameStatistic, HockeyGameTeamStatistic, HockeyPenaltyTypes, HockeyProfile, HockeyStatistic, HockeyWorkHand, HockeyWorkHandLocalization, HttpCookieInterceptor, League, LeagueApi, LeagueBanner, LeagueCourt, LeagueDocument, LeagueNews, LeagueNewsApi, LeagueNewsType, LeaguePartner, LeaguePlayer, LeaguePlayerApi, LeaguePlaylist, LocalStorageEngine, MODEL_MAPPING_FIELDS_KEY, MODEL_RELATION_KEY, MODEL_TO_BACK_KEY, MODEL_TO_FRONT_KEY, MediaApi, MediaItem, ModelInstance, Notification, NotificationAllowTypes, NotificationApi, NotificationBaseApi, NotificationServiceEnum, NotificationSettings, NotificationType, OrgNotificationApi, Organization, OrganizationBill, OrganizationBillStatusLocalization, OrganizationBillStatuses, OrganizationStatistic, OrganizationStatuses, OrganizationStatusesLocalization, OrganizationTariff, OvertimeTypeLocalization, OvertimeTypes, Playoff, PlayoffSettings, PlayoffTypes, Poll, PollAnswer, PollStatuses, PollVariant, PublicTeamApi, PublicUserApi, Qualification, QualificationLocalization, RUGBY_GAME_LOG_TYPE_POINTS, RUGBY_TEAM_LOG_TYPES, ReferenceApi, RoundTeamGame, RugbyFoulGameStage, RugbyFoulGameStageLocalization, RugbyFoulSanctionLocalization, RugbyFoulSanctions, RugbyFoulType, RugbyGameApi, RugbyGameConfig, RugbyGameLog, RugbyGameLogTypeLocalization, RugbyGameLogTypes, RugbyGameStatistic, RugbyGameTeamStatistic, RugbyProfile, RugbyStatistic, RugbyStatisticTypes, SCORE_LOG_TYPES, Sport, SportTypes, StorageEngine, StorageEngineField, Store, Team, TeamAccess, TeamAchievement, TeamAdditionalData, TeamApi, TeamEvent, TeamEventApi, TeamEventInvite, TeamEventInviteStatuses, TeamEventTypeLocalization, TeamEventTypes, TeamInvite, TeamInviteExternal, TeamPermission, TeamPermissionTypes, TeamUser, TeamUserRole, TeamUserRoleLocalization, TeamsAndUsers, ToBackHook, ToFrontHook, Tournament, TournamentApi, TournamentDisqualification, TournamentDivision, TournamentEvent, TournamentEventTypes, TournamentGender, TournamentGroup, TournamentInvite, TournamentJoin1x1Data, TournamentJoin1x1Status, TournamentJoinApi, TournamentJoinData, TournamentJoinTeam, TournamentNews, TournamentRound, TournamentRoundApi, TournamentRoundSettings, TournamentRoundTeam, TournamentRoundTypes, TournamentSeason, TournamentSeasonApi, TournamentSeasonStatuses, TournamentSettings, TournamentStage, TournamentStageApi, TournamentStageStatuses, TournamentStageTeam, TournamentStatuses, TournamentTeam, TournamentTeamShort, TournamentTeamUser, TournamentTeamUserInvite, TournamentTeamWinner, TournamentTypes, UntilDestroy, User, UserAccess, UserApi, UserGender, UserPermission, UserPermissionTypes, UserProfile, VolleyballGameApi, VolleyballGameConfig, VolleyballGameLog, VolleyballGameLogType, VolleyballGameLogTypeLocalization, VolleyballGameStatistic, VolleyballGameTeamStatistic, VolleyballGameTypes, VolleyballProfile, VolleyballStatistic, VolleyballStatisticTypes, VolleyballWorkHand, VolleyballWorkHandLocalization, WaterpoloAdvantageTypes, WaterpoloGameApi, WaterpoloGameConfig, WaterpoloGameLog, WaterpoloGameLogTypeLocalization, WaterpoloGameLogTypes, WaterpoloGameStatistic, WaterpoloGameTeamStatistic, WaterpoloProfile, WaterpoloStatistic, WaterpoloWorkHand, WaterpoloWorkHandLocalization, WorkHand, WorkHandLocalization, addItemInArray, addItemsInArray, applyGameMediaFilters, applyGamesFilters, applyStatisticFilters, applyStatisticLeadersFilters, changeFavicons, componentDestroyed, deleteItemFromArray, enumField, fileSizeValidator, generateArray, getArrayChunks, getCookie, getEnumOptions, getIconsData, handleError, isTouchDevice, listField, markFormGroupTouched, minLengthArrayValidator, parseDate, patchItemInArray, penaltyTypeField, updateItemInArray, updateItemsInArray, validateDate, validateEmail, validatePhone, validateUrl };
10654
+ export { Achievement, AchievementTypes, BannerLocation, BaseModel, BaseService, BasketballCourtSides, BasketballCourtZones, BasketballGameApi, BasketballGameConfig, BasketballGameLog, BasketballGameLogTypeLocalization, BasketballGameLogTypes, BasketballGameStatistic, BasketballGameSubLogTypesLocalization, BasketballGameTeamStatistic, BasketballPenaltyTypes, BasketballProfile, BasketballStatistic, BasketballStatisticTypes, BasketballSubLogTypes, CONFIG_DATA, CentrifugoService, City, ConfigService, DateField, DateTimeField, FAULT_LOG_TYPES, Feedback, FeedbackApi, File, FileApi, FileEngine, FootballGameApi, FootballGameConfig, FootballGameLog, FootballGameLogTypeLocalization, FootballGameLogTypes, FootballGameStatistic, FootballGameTeamStatistic, FootballProfile, FootballStatistic, FootballWorkFoot, FootballWorkFootLocalization, Game, GameBaseApi, GameBasketballPosition, GameBasketballPositionLocalization, GameBasketballPositionShortLocalization, GameBill, GameBillStatusLocalization, GameBillStatuses, GameFootballPosition, GameFootballPositionLocalization, GameHandballPosition, GameHandballPositionLocalization, GameHockeyPosition, GameHockeyPositionLocalization, GameInvite, GameInviteStatus, GameResultTypes, GameRugbyPosition, GameRugbyPositionLocalization, GameStatuses, GameTeamAdditionalData, GameTimeTypes, GameTimelineStageItem, GameTimelineStages, GameUser, GameUserDisqualification, GameUserLimitationTypes, GameUserLimitations, GameVolleyballPosition, GameVolleyballPositionLocalization, GameVolleyballPositionShortLocalization, GameVolleyballPositionShortRuLocalization, GameWaterpoloPosition, GameWaterpoloPositionLocalization, GameWaterpoloPositionShortRuLocalization, HandballGameApi, HandballGameConfig, HandballGameLog, HandballGameLogTypeLocalization, HandballGameLogTypes, HandballGameStatistic, HandballGameTeamStatistic, HandballProfile, HandballStatistic, HockeyAdvantageTypes, HockeyGameApi, HockeyGameConfig, HockeyGameLog, HockeyGameLogTypeLocalization, HockeyGameLogTypes, HockeyGameStatistic, HockeyGameTeamStatistic, HockeyPenaltyTypes, HockeyProfile, HockeyStatistic, HockeyWorkHand, HockeyWorkHandLocalization, HttpCookieInterceptor, League, LeagueApi, LeagueBanner, LeagueCourt, LeagueDocument, LeagueNews, LeagueNewsApi, LeagueNewsType, LeaguePartner, LeaguePlayer, LeaguePlayerApi, LeaguePlaylist, LocalStorageEngine, MODEL_MAPPING_FIELDS_KEY, MODEL_RELATION_KEY, MODEL_TO_BACK_KEY, MODEL_TO_FRONT_KEY, MediaApi, MediaItem, ModelInstance, Notification, NotificationAllowTypes, NotificationApi, NotificationBaseApi, NotificationServiceEnum, NotificationSettings, NotificationType, OrgNotificationApi, Organization, OrganizationBill, OrganizationBillStatusLocalization, OrganizationBillStatuses, OrganizationStatistic, OrganizationStatuses, OrganizationStatusesLocalization, OrganizationTariff, OvertimeTypeLocalization, OvertimeTypes, Playoff, PlayoffSettings, PlayoffTypes, Poll, PollAnswer, PollStatuses, PollVariant, PublicTeamApi, PublicUserApi, Qualification, QualificationLocalization, RUGBY_GAME_LOG_TYPE_POINTS, RUGBY_TEAM_LOG_TYPES, ReferenceApi, RoundTeamGame, RugbyFoulGameStage, RugbyFoulGameStageLocalization, RugbyFoulSanctionLocalization, RugbyFoulSanctions, RugbyFoulType, RugbyGameApi, RugbyGameConfig, RugbyGameLog, RugbyGameLogTypeLocalization, RugbyGameLogTypes, RugbyGameStatistic, RugbyGameTeamStatistic, RugbyProfile, RugbyStatistic, RugbyStatisticTypes, SCORE_LOG_TYPES, Sport, SportTypes, StorageEngine, StorageEngineField, Store, Team, TeamAccess, TeamAchievement, TeamAdditionalData, TeamApi, TeamEvent, TeamEventApi, TeamEventInvite, TeamEventInviteStatuses, TeamEventTypeLocalization, TeamEventTypes, TeamInvite, TeamInviteExternal, TeamPermission, TeamPermissionTypes, TeamUser, TeamUserRole, TeamUserRoleLocalization, TeamsAndUsers, TimerTypes, ToBackHook, ToFrontHook, Tournament, TournamentApi, TournamentDisqualification, TournamentDivision, TournamentEvent, TournamentEventTypes, TournamentGender, TournamentGroup, TournamentInvite, TournamentJoin1x1Data, TournamentJoin1x1Status, TournamentJoinApi, TournamentJoinData, TournamentJoinTeam, TournamentNews, TournamentRound, TournamentRoundApi, TournamentRoundSettings, TournamentRoundTeam, TournamentRoundTypes, TournamentSeason, TournamentSeasonApi, TournamentSeasonStatuses, TournamentSettings, TournamentStage, TournamentStageApi, TournamentStageStatuses, TournamentStageTeam, TournamentStatuses, TournamentTeam, TournamentTeamShort, TournamentTeamUser, TournamentTeamUserInvite, TournamentTeamWinner, TournamentTypes, UntilDestroy, User, UserAccess, UserApi, UserGender, UserPermission, UserPermissionTypes, UserProfile, VolleyballGameApi, VolleyballGameConfig, VolleyballGameLog, VolleyballGameLogType, VolleyballGameLogTypeLocalization, VolleyballGameStatistic, VolleyballGameTeamStatistic, VolleyballGameTypes, VolleyballProfile, VolleyballStatistic, VolleyballStatisticTypes, VolleyballWorkHand, VolleyballWorkHandLocalization, WaterpoloAdvantageTypes, WaterpoloGameApi, WaterpoloGameConfig, WaterpoloGameLog, WaterpoloGameLogTypeLocalization, WaterpoloGameLogTypes, WaterpoloGameStatistic, WaterpoloGameTeamStatistic, WaterpoloProfile, WaterpoloStatistic, WaterpoloWorkHand, WaterpoloWorkHandLocalization, WorkHand, WorkHandLocalization, addItemInArray, addItemsInArray, applyGameMediaFilters, applyGamesFilters, applyStatisticFilters, applyStatisticLeadersFilters, changeFavicons, componentDestroyed, deleteItemFromArray, enumField, fileSizeValidator, generateArray, getArrayChunks, getCookie, getEnumOptions, getIconsData, handleError, isTouchDevice, listField, markFormGroupTouched, minLengthArrayValidator, parseDate, patchItemInArray, penaltyTypeField, updateItemInArray, updateItemsInArray, validateDate, validateEmail, validatePhone, validateUrl };
10653
10655
  //# sourceMappingURL=mtgame-core.js.map