@mtgame/core 2.0.7 → 2.0.9
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/api/media-api.d.ts +2 -1
- package/api/public-team-api.d.ts +2 -0
- package/api/tournament-api.d.ts +2 -0
- package/api/volleyball-game-api.d.ts +1 -0
- package/esm2020/api/media-api.mjs +5 -1
- package/esm2020/api/public-team-api.mjs +8 -1
- package/esm2020/api/tournament-api.mjs +1 -1
- package/esm2020/api/volleyball-game-api.mjs +7 -1
- package/esm2020/localization/waterpolo-game-log-types.mjs +3 -3
- package/esm2020/models/basketball-game-log.mjs +1 -1
- package/esm2020/models/device-info.mjs +18 -0
- package/esm2020/models/game.mjs +1 -1
- package/esm2020/models/hockey-game-statistic.mjs +1 -1
- package/esm2020/models/hockey-statistic.mjs +1 -1
- package/esm2020/models/league-player.mjs +3 -2
- package/esm2020/models/league.mjs +5 -1
- package/esm2020/models/public-api.mjs +2 -1
- package/esm2020/models/rugby-game-statistic.mjs +28 -1
- package/esm2020/models/tournament-team-user.mjs +1 -1
- package/esm2020/models/tournament.mjs +1 -1
- package/esm2020/models/user.mjs +1 -1
- package/esm2020/models/waterpolo-game-statistic.mjs +3 -4
- package/esm2020/services/centrifugo.service.mjs +24 -6
- package/esm2020/services/device-info.service.mjs +44 -0
- package/esm2020/services/public-api.mjs +2 -1
- package/fesm2015/mtgame-core.mjs +132 -11
- package/fesm2015/mtgame-core.mjs.map +1 -1
- package/fesm2020/mtgame-core.mjs +130 -11
- package/fesm2020/mtgame-core.mjs.map +1 -1
- package/models/basketball-game-log.d.ts +1 -0
- package/models/device-info.d.ts +15 -0
- package/models/game.d.ts +1 -1
- package/models/hockey-game-statistic.d.ts +9 -0
- package/models/hockey-statistic.d.ts +9 -0
- package/models/league-player.d.ts +2 -1
- package/models/league.d.ts +2 -0
- package/models/public-api.d.ts +1 -0
- package/models/rugby-game-statistic.d.ts +6 -6
- package/models/tournament-team-user.d.ts +3 -0
- package/models/tournament.d.ts +1 -0
- package/models/user.d.ts +2 -0
- package/package.json +7 -5
- package/services/centrifugo.service.d.ts +2 -1
- package/services/device-info.service.d.ts +9 -0
- package/services/public-api.d.ts +1 -0
|
@@ -179,7 +179,7 @@ let WaterpoloGameStatistic = class WaterpoloGameStatistic extends GameStatisticB
|
|
|
179
179
|
return this.ppShots + this.evShots + this.shShots;
|
|
180
180
|
}
|
|
181
181
|
get totalShots() {
|
|
182
|
-
return this.shots +
|
|
182
|
+
return this.shots + this.shootoutShots;
|
|
183
183
|
}
|
|
184
184
|
get faceOffs() {
|
|
185
185
|
return (this.faceOffWins || 0) + (this.faceOffLosses || 0);
|
|
@@ -228,8 +228,7 @@ let WaterpoloGameStatistic = class WaterpoloGameStatistic extends GameStatisticB
|
|
|
228
228
|
this.freeKickShotsBlocked + this.cornerShotsBlocked;
|
|
229
229
|
}
|
|
230
230
|
get totalFouls() {
|
|
231
|
-
return (this.fouls || 0) + (this.
|
|
232
|
-
(this.minorPenalties || 0) + (this.majorPenalties || 0) + (this.matchPenalties || 0);
|
|
231
|
+
return (this.fouls || 0) + (this.personalFouls || 0);
|
|
233
232
|
}
|
|
234
233
|
get totalPenalties() {
|
|
235
234
|
return (this.minorPenalties || 0) + (this.majorPenalties || 0) + (this.matchPenalties || 0);
|
|
@@ -469,4 +468,4 @@ WaterpoloGameStatistic = __decorate([
|
|
|
469
468
|
})
|
|
470
469
|
], WaterpoloGameStatistic);
|
|
471
470
|
export { WaterpoloGameStatistic };
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0ZXJwb2xvLWdhbWUtc3RhdGlzdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbW9kZWxzL3dhdGVycG9sby1nYW1lLXN0YXRpc3RpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsSUFBYSxzQkFBc0IsR0FBbkMsTUFBYSxzQkFBdUIsU0FBUSxpQkFBaUI7SUFtSzNELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0QsT0FBTyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUNqRixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxD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QUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUNuRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0NBQ0YsQ0FBQTtBQWp1Qlksc0JBQXNCO0lBTGxDLEtBQUssQ0FBQztRQUNMLFFBQVEsRUFBRTtZQUNSLFNBQVMsRUFBRSxhQUFhO1NBQ3pCO0tBQ0YsQ0FBQztHQUNXLHNCQUFzQixDQWl1QmxDO1NBanVCWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbCwgZGF0ZVRpbWVGaWVsZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBHYW1lU3RhdGlzdGljQmFzZSB9IGZyb20gJy4vZ2FtZS1zdGF0aXN0aWMtYmFzZSc7XG5cbkBNb2RlbCh7XG4gIHJlbGF0aW9uOiB7XG4gICAgdXBkYXRlZEF0OiBkYXRlVGltZUZpZWxkLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIFdhdGVycG9sb0dhbWVTdGF0aXN0aWMgZXh0ZW5kcyBHYW1lU3RhdGlzdGljQmFzZSB7XG4gIGdhbWVVc2VySWQ6IG51bWJlcjtcbiAgcG9pbnRzOiBudW1iZXI7XG4gIHBwU2hvdE1pc3NlczogbnVtYmVyO1xuICBwcFNob3RzT25Hb2FsOiBudW1iZXI7XG4gIHBwU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIGV2U2hvdE1pc3NlczogbnVtYmVyO1xuICBldlNob3RzT25Hb2FsOiBudW1iZXI7XG4gIGV2U2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHNoU2hvdE1pc3NlczogbnVtYmVyO1xuICBzaFNob3RzT25Hb2FsOiBudW1iZXI7XG4gIHNoU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwVG90YWxTaG90c09uR29hbDogbnVtYmVyO1xuICBldlRvdGFsU2hvdHNPbkdvYWw6IG51bWJlcjtcbiAgc2hUb3RhbFNob3RzT25Hb2FsOiBudW1iZXI7XG4gIHBwR29hbHM6IG51bWJlcjtcbiAgZXZHb2FsczogbnVtYmVyO1xuICBzaEdvYWxzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja0dvYWxzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja09uR29hbHM6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrTWlzc2VzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja1Nob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tHb2FsczogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tPbkdvYWxzOiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja01pc3NlczogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrR29hbHM6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrT25Hb2FsczogbnVtYmVyO1xuICBzaENvdW50ZXJBdHRhY2tNaXNzZXM6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJHb2FsczogbnVtYmVyO1xuICBwcE1hbmV1dmVyT25Hb2FsczogbnVtYmVyO1xuICBwcE1hbmV1dmVyTWlzc2VzOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgZXZNYW5ldXZlckdvYWxzOiBudW1iZXI7XG4gIGV2TWFuZXV2ZXJPbkdvYWxzOiBudW1iZXI7XG4gIGV2TWFuZXV2ZXJNaXNzZXM6IG51bWJlcjtcbiAgZXZNYW5ldXZlclNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBzaE1hbmV1dmVyR29hbHM6IG51bWJlcjtcbiAgc2hNYW5ldXZlck9uR29hbHM6IG51bWJlcjtcbiAgc2hNYW5ldXZlck1pc3NlczogbnVtYmVyO1xuICBzaE1hbmV1dmVyU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZEdvYWxzOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZE9uR29hbHM6IG51bWJlcjtcbiAgcHBDZW50ZXJGb3J3YXJkTWlzc2VzOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldkNlbnRlckZvcndhcmRHb2FsczogbnVtYmVyO1xuICBldkNlbnRlckZvcndhcmRPbkdvYWxzOiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZE1pc3NlczogbnVtYmVyO1xuICBldkNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkR29hbHM6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkT25Hb2FsczogbnVtYmVyO1xuICBzaENlbnRlckZvcndhcmRNaXNzZXM6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwQXNzaXN0czogbnVtYmVyO1xuICBldkFzc2lzdHM6IG51bWJlcjtcbiAgc2hBc3Npc3RzOiBudW1iZXI7XG4gIHNob290b3V0QXR0ZW1wdHM6IG51bWJlcjtcbiAgc2hvb3RvdXRHb2FsczogbnVtYmVyO1xuICBhZnRlckdhbWVTaG9vdG91dEF0dGVtcHRzOiBudW1iZXI7XG4gIGFmdGVyR2FtZVNob290b3V0R29hbHM6IG51bWJlcjtcbiAgYmxvY2tTaG90czogbnVtYmVyO1xuICBmYWNlT2ZmTG9zc2VzOiBudW1iZXI7XG4gIGZhY2VPZmZXaW5zOiBudW1iZXI7XG4gIHBwU2F2ZXM6IG51bWJlcjtcbiAgc2hTYXZlczogbnVtYmVyO1xuICBldlNhdmVzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja1NhdmVzOiBudW1iZXI7XG4gIHNoQ291bnRlckF0dGFja1NhdmVzOiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja1NhdmVzOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJTYXZlczogbnVtYmVyO1xuICBzaE1hbmV1dmVyU2F2ZXM6IG51bWJlcjtcbiAgZXZNYW5ldXZlclNhdmVzOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZFNhdmVzOiBudW1iZXI7XG4gIHNoQ2VudGVyRm9yd2FyZFNhdmVzOiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZFNhdmVzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tTYXZlczogbnVtYmVyO1xuICBzaEZyZWVLaWNrU2F2ZXM6IG51bWJlcjtcbiAgZXZGcmVlS2lja1NhdmVzOiBudW1iZXI7XG4gIHBwQ29ybmVyU2F2ZXM6IG51bWJlcjtcbiAgc2hDb3JuZXJTYXZlczogbnVtYmVyO1xuICBldkNvcm5lclNhdmVzOiBudW1iZXI7XG4gIHBwVG90YWxHYW1lU2F2ZXM6IG51bWJlcjtcbiAgc2hUb3RhbEdhbWVTYXZlczogbnVtYmVyO1xuICBldlRvdGFsR2FtZVNhdmVzOiBudW1iZXI7XG4gIHNob290b3V0U2F2ZXM6IG51bWJlcjtcbiAgYWZ0ZXJHYW1lU2hvb3RvdXRTYXZlczogbnVtYmVyO1xuICBwcEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzaEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBldkdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBnb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNoQ291bnRlckF0dGFja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgY291bnRlckF0dGFja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBwcE1hbmV1dmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNoTWFuZXV2ZXJHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgZXZNYW5ldXZlckdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBtYW5ldXZlckdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBwcENlbnRlckZvcndhcmRHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBjZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHBwRnJlZUtpY2tHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgc2hGcmVlS2lja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBldkZyZWVLaWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGZyZWVLaWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHBwQ29ybmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNoQ29ybmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGV2Q29ybmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGNvcm5lckdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzaG9vdG91dEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBhZnRlckdhbWVTaG9vdG91dEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzYWZldHlSYXRlOiBudW1iZXI7XG4gIHBlbmFsdHlNaW51dGVzOiBudW1iZXI7XG4gIGdhbWVUaW1lOiBudW1iZXI7XG4gIHBsdXNNaW51czogbnVtYmVyO1xuICBmb3VsczogbnVtYmVyO1xuICBtaW5vclBlbmFsdGllczogbnVtYmVyO1xuICBtYWpvclBlbmFsdGllczogbnVtYmVyO1xuICBtYXRjaFBlbmFsdGllczogbnVtYmVyO1xuICBwZW5hbHR5Rm91bHM6IG51bWJlcjtcbiAgdHVybm92ZXJzOiBudW1iZXI7XG4gIGF0dGFja0ZvdWxzOiBudW1iZXI7XG4gIHBlcnNvbmFsRm91bHM6IG51bWJlcjtcbiAgZHJhd25Gb3VsczogbnVtYmVyO1xuICBkcmF3blR1cm5vdmVyczogbnVtYmVyO1xuICB5ZWxsb3dDYXJkczogbnVtYmVyO1xuICByZWRDYXJkczogbnVtYmVyO1xuICBsb3NzZXM6IG51bWJlcjtcbiAgc3RlYWxzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tHb2FsczogbnVtYmVyO1xuICBwcEZyZWVLaWNrT25Hb2FsczogbnVtYmVyO1xuICBwcEZyZWVLaWNrTWlzc2VzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hGcmVlS2lja0dvYWxzOiBudW1iZXI7XG4gIHNoRnJlZUtpY2tPbkdvYWxzOiBudW1iZXI7XG4gIHNoRnJlZUtpY2tNaXNzZXM6IG51bWJlcjtcbiAgc2hGcmVlS2lja1Nob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldkZyZWVLaWNrR29hbHM6IG51bWJlcjtcbiAgZXZGcmVlS2lja09uR29hbHM6IG51bWJlcjtcbiAgZXZGcmVlS2lja01pc3NlczogbnVtYmVyO1xuICBldkZyZWVLaWNrU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIGZyZWVLaWNrUGFzc2VzOiBudW1iZXI7XG4gIGZyZWVLaWNrU2VsZnM6IG51bWJlcjtcbiAgcHBDb3JuZXJHb2FsczogbnVtYmVyO1xuICBwcENvcm5lck9uR29hbHM6IG51bWJlcjtcbiAgcHBDb3JuZXJNaXNzZXM6IG51bWJlcjtcbiAgcHBDb3JuZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hDb3JuZXJHb2FsczogbnVtYmVyO1xuICBzaENvcm5lck9uR29hbHM6IG51bWJlcjtcbiAgc2hDb3JuZXJNaXNzZXM6IG51bWJlcjtcbiAgc2hDb3JuZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgZXZDb3JuZXJHb2FsczogbnVtYmVyO1xuICBldkNvcm5lck9uR29hbHM6IG51bWJlcjtcbiAgZXZDb3JuZXJNaXNzZXM6IG51bWJlcjtcbiAgZXZDb3JuZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgY29ybmVyUGFzc2VzOiBudW1iZXI7XG4gIGNvcm5lclNlbGZzOiBudW1iZXI7XG4gIHRhY2tsZXM6IG51bWJlcjtcbiAgcGxheWVyRWZmaWNpZW5jeTogbnVtYmVyO1xuICB1cGRhdGVkQXQ6IERhdGU7XG5cbiAgZ2V0IGlkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZVVzZXJJZDtcbiAgfVxuXG4gIGdldCBnYW1lTWludXRlcygpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMuZ2FtZVRpbWUgLyA2MCk7XG4gIH1cblxuICBnZXQgcGVuYWx0eVRpbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucGVuYWx0eU1pbnV0ZXMpIHtcbiAgICAgIHJldHVybiAnMDA6MDAnO1xuICAgIH1cbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcih0aGlzLnBlbmFsdHlNaW51dGVzIC8gNjApO1xuICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKHRoaXMucGVuYWx0eU1pbnV0ZXMgLSBtaW51dGVzICogNjApO1xuICAgIHJldHVybiBgJHttaW51dGVzIDwgMTAgPyAwIDogJyd9JHttaW51dGVzfToke3NlY29uZHMgPCAxMCA/IDAgOiAnJ30ke3NlY29uZHN9YDtcbiAgfVxuXG4gIGdldCBhc3Npc3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQXNzaXN0cyB8fCAwKSArICh0aGlzLnNoQXNzaXN0cyB8fCAwKSAgKyAodGhpcy5ldkFzc2lzdHMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxDb3VudGVyQXR0YWNrR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3VudGVyQXR0YWNrR29hbHMgfHwgMCkgKyAodGhpcy5ldkNvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSAgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tHb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBwcENvdW50ZXJBdHRhY2tTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApICsgKHRoaXMucHBDb3VudGVyQXR0YWNrTWlzc2VzIHx8IDApICsgKHRoaXMucHBDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNoQ291bnRlckF0dGFja1Nob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoQ291bnRlckF0dGFja09uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgZXZDb3VudGVyQXR0YWNrU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZXZDb3VudGVyQXR0YWNrT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja01pc3NlcyB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkNvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgY291bnRlckF0dGFja1Nob3RPbkdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ291bnRlckF0dGFja09uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3VudGVyQXR0YWNrT25Hb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLnNoQ291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudGVyQXR0YWNrU2hvdE1pc3NlcyArIHRoaXMuY291bnRlckF0dGFja1Nob3RPbkdvYWxzICsgdGhpcy5jb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxDb3VudGVyQXR0YWNrR29hbHMgfHwgIXRoaXMuY291bnRlckF0dGFja1Nob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxDb3VudGVyQXR0YWNrR29hbHMgLyB0aGlzLmNvdW50ZXJBdHRhY2tTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbE1hbmV1dmVyR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBNYW5ldXZlckdvYWxzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlckdvYWxzIHx8IDApICsgKHRoaXMuZXZNYW5ldXZlckdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBwTWFuZXV2ZXJTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnBwTWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5wcE1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNoTWFuZXV2ZXJTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IGV2TWFuZXV2ZXJTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldk1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5ldk1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyTWlzc2VzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlck1pc3NlcyB8fCAwKSArICAodGhpcy5ldk1hbmV1dmVyTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdE9uR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBNYW5ldXZlck9uR29hbHMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICAodGhpcy5ldk1hbmV1dmVyT25Hb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBtYW5ldXZlclNob3RzQmxvY2tlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlclNob3RzQmxvY2tlZCB8fCAwKSArICAodGhpcy5ldk1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tYW5ldXZlclNob3RNaXNzZXMgKyB0aGlzLm1hbmV1dmVyU2hvdE9uR29hbHMgKyB0aGlzLm1hbmV1dmVyU2hvdHNCbG9ja2VkO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsTWFuZXV2ZXJHb2FscyB8fCAhdGhpcy5tYW5ldXZlclNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxNYW5ldXZlckdvYWxzIC8gdGhpcy5tYW5ldXZlclNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsQ2VudGVyRm9yd2FyZEdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ2VudGVyRm9yd2FyZEdvYWxzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCkgKyAgKHRoaXMuZXZDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgcHBDZW50ZXJGb3J3YXJkU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDZW50ZXJGb3J3YXJkT25Hb2FscyB8fCAwKSArICh0aGlzLnBwQ2VudGVyRm9yd2FyZE1pc3NlcyB8fCAwKSArICh0aGlzLnBwQ2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBzaENlbnRlckZvcndhcmRTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IGV2Q2VudGVyRm9yd2FyZFNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmV2Q2VudGVyRm9yd2FyZE9uR29hbHMgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RNaXNzZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApICsgKHRoaXMuZXZDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNlbnRlckZvcndhcmRTaG90T25Hb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZE9uR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2VudGVyRm9yd2FyZFNob3RNaXNzZXMgKyB0aGlzLmNlbnRlckZvcndhcmRTaG90T25Hb2FscyArIHRoaXMuY2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZDtcbiAgfVxuXG4gIGdldCBjZW50ZXJGb3J3YXJkR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsQ2VudGVyRm9yd2FyZEdvYWxzIHx8ICF0aGlzLmNlbnRlckZvcndhcmRTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsQ2VudGVyRm9yd2FyZEdvYWxzIC8gdGhpcy5jZW50ZXJGb3J3YXJkU2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgcHBTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5wcFNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMucHBTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgKHRoaXMucHBGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLnBwRnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMucHBGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICAodGhpcy5wcENvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLnBwQ29ybmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnBwQ29ybmVyU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgIHRoaXMucHBDb3VudGVyQXR0YWNrU2hvdHMgKyB0aGlzLnBwTWFuZXV2ZXJTaG90cyArIHRoaXMucHBDZW50ZXJGb3J3YXJkU2hvdHM7XG4gIH1cblxuICBnZXQgZXZTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldlNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5ldlNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuZXZTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgKHRoaXMuZXZGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICAodGhpcy5ldkNvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLmV2Q29ybmVyT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q29ybmVyU2hvdHNCbG9ja2VkIHx8IDApICArXG4gICAgICB0aGlzLmV2Q291bnRlckF0dGFja1Nob3RzICsgdGhpcy5ldk1hbmV1dmVyU2hvdHMgKyB0aGlzLmV2Q2VudGVyRm9yd2FyZFNob3RzO1xuICB9XG5cbiAgZ2V0IHNoU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hTaG90TWlzc2VzIHx8IDApICsgKHRoaXMuc2hTaG90c09uR29hbCB8fCAwKSArICh0aGlzLnNoU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgICh0aGlzLnNoRnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgKHRoaXMuc2hDb3JuZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvcm5lck9uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvcm5lclNob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICB0aGlzLnNoQ291bnRlckF0dGFja1Nob3RzICsgdGhpcy5zaE1hbmV1dmVyU2hvdHMgKyB0aGlzLnNoQ2VudGVyRm9yd2FyZFNob3RzO1xuICB9XG5cbiAgZ2V0IHRvdGFsU2hHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaEdvYWxzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJHb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5zaENvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJHb2FscyB8fCAwKSArICh0aGlzLnNoQ2VudGVyRm9yd2FyZEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsRXZHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldkdvYWxzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJHb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5ldkNvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJHb2FscyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsUHBHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcEdvYWxzIHx8IDApICsgKHRoaXMucHBGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMucHBDb3JuZXJHb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSArICh0aGlzLnBwTWFuZXV2ZXJHb2FscyB8fCAwKSArICh0aGlzLnBwQ2VudGVyRm9yd2FyZEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxTaEdvYWxzICsgdGhpcy50b3RhbEV2R29hbHMgKyB0aGlzLnRvdGFsUHBHb2FscztcbiAgfVxuXG4gIGdldCB0b3RhbEdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ29hbHMgKyAodGhpcy5zaG9vdG91dEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNob290b3V0U2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hvb3RvdXRHb2FscyB8fCAwKSArICh0aGlzLnNob290b3V0QXR0ZW1wdHMgfHwgMCk7XG4gIH1cblxuICBnZXQgaW5HYW1lU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5ldlNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5zaFNob3RNaXNzZXMgfHwgMCkgK1xuICAgICAgdGhpcy5jb3VudGVyQXR0YWNrU2hvdE1pc3NlcyArIHRoaXMubWFuZXV2ZXJTaG90TWlzc2VzICsgdGhpcy5jZW50ZXJGb3J3YXJkU2hvdE1pc3NlcztcbiAgfVxuXG4gIGdldCBzaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwRnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrTWlzc2VzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja01pc3NlcyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLmV2Q29ybmVyTWlzc2VzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJNaXNzZXMgfHwgMCkgK1xuICAgICAgdGhpcy5pbkdhbWVTaG90TWlzc2VzO1xuICB9XG5cbiAgZ2V0IHRvdGFsUHBTaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLnBwRnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5wcENvcm5lck1pc3NlcyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5wcE1hbmV1dmVyTWlzc2VzIHx8IDApICsgKHRoaXMucHBDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNob3RzT25Hb2FsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5ldlNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuc2hTaG90c09uR29hbCB8fCAwKSArXG4gICAgICAodGhpcy5wcEZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja09uR29hbHMgfHwgMCkgK1xuICAgICAgKHRoaXMucHBDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJPbkdvYWxzIHx8IDApICtcbiAgICAgIHRoaXMuY291bnRlckF0dGFja1Nob3RPbkdvYWxzICsgdGhpcy5tYW5ldXZlclNob3RPbkdvYWxzICsgdGhpcy5jZW50ZXJGb3J3YXJkU2hvdE9uR29hbHM7XG4gIH1cblxuICBnZXQgdG90YWxQcFNob3RzT25Hb2FsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5wcEZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLnBwQ29ybmVyT25Hb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApICsgKHRoaXMucHBNYW5ldXZlck9uR29hbHMgfHwgMCkgKyAodGhpcy5wcENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGluR2FtZVNob3RzT25Hb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuZXZTaG90c09uR29hbCB8fCAwKSArICh0aGlzLnNoU2hvdHNPbkdvYWwgfHwgMCkgK1xuICAgICAgdGhpcy5jb3VudGVyQXR0YWNrU2hvdE9uR29hbHMgKyB0aGlzLm1hbmV1dmVyU2hvdE9uR29hbHMgKyB0aGlzLmNlbnRlckZvcndhcmRTaG90T25Hb2FscztcbiAgfVxuXG4gIGdldCBzaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBwU2hvdHMgKyB0aGlzLmV2U2hvdHMgKyB0aGlzLnNoU2hvdHM7XG4gIH1cblxuICBnZXQgdG90YWxTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNob3RzICsgKHRoaXMuc2hvb3RvdXRBdHRlbXB0cyB8fCAwKTtcbiAgfVxuXG4gIGdldCBmYWNlT2ZmcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5mYWNlT2ZmV2lucyB8fCAwKSArICh0aGlzLmZhY2VPZmZMb3NzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgZnJlZUtpY2tTaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwRnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrTWlzc2VzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja01pc3NlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBmcmVlS2lja1Nob3RzQmxvY2tlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcEZyZWVLaWNrU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgZnJlZUtpY2tPbkdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwRnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja09uR29hbHMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrT25Hb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbEZyZWVLaWNrR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja0dvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsRnJlZUtpY2tzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmZyZWVLaWNrU2VsZnMgfHwgMCkgKyAodGhpcy5mcmVlS2lja1Bhc3NlcyB8fCAwKSArXG4gICAgICB0aGlzLmZyZWVLaWNrU2hvdE1pc3NlcyArIHRoaXMuZnJlZUtpY2tPbkdvYWxzICsgdGhpcy50b3RhbEZyZWVLaWNrR29hbHMgKyB0aGlzLmZyZWVLaWNrU2hvdHNCbG9ja2VkO1xuICB9XG5cbiAgZ2V0IGZyZWVLaWNrR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsRnJlZUtpY2tHb2FscyB8fCAhdGhpcy50b3RhbEZyZWVLaWNrcykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsRnJlZUtpY2tHb2FscyAvIHRoaXMudG90YWxGcmVlS2lja3MpIC8gMTA7XG4gIH1cblxuICBnZXQgdG90YWxDb3JuZXJHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvcm5lckdvYWxzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJHb2FscyB8fCAwKSArICh0aGlzLmV2Q29ybmVyR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgY29ybmVyU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLnNoQ29ybmVyTWlzc2VzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgY29ybmVyT25Hb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvcm5lck9uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvcm5lck9uR29hbHMgfHwgMCkgKyAodGhpcy5ldkNvcm5lck9uR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgY29ybmVyU2hvdHNCbG9ja2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ29ybmVyU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuc2hDb3JuZXJTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5ldkNvcm5lclNob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbENvcm5lcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuY29ybmVyU2VsZnMgfHwgMCkgKyAodGhpcy5jb3JuZXJQYXNzZXMgfHwgMCkgKyB0aGlzLmNvcm5lclNob3RzQmxvY2tlZCArXG4gICAgICB0aGlzLmNvcm5lck9uR29hbHMgKyB0aGlzLmNvcm5lclNob3RNaXNzZXMgKyB0aGlzLnRvdGFsQ29ybmVyR29hbHM7XG4gIH1cblxuICBnZXQgc2hvdHNCbG9ja2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuZXZTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5zaFNob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICB0aGlzLmNvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQgKyB0aGlzLm1hbmV1dmVyU2hvdHNCbG9ja2VkICsgdGhpcy5jZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkICtcbiAgICAgIHRoaXMuZnJlZUtpY2tTaG90c0Jsb2NrZWQgKyB0aGlzLmNvcm5lclNob3RzQmxvY2tlZDtcbiAgfVxuXG4gIGdldCB0b3RhbEZvdWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmZvdWxzIHx8IDApICsgKHRoaXMucGVuYWx0eUZvdWxzIHx8IDApICsgKHRoaXMuYXR0YWNrRm91bHMgfHwgMCkgKyAodGhpcy5wZXJzb25hbEZvdWxzIHx8IDApICtcbiAgICAgICh0aGlzLm1pbm9yUGVuYWx0aWVzIHx8IDApICsgKHRoaXMubWFqb3JQZW5hbHRpZXMgfHwgMCkgKyAodGhpcy5tYXRjaFBlbmFsdGllcyB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBlbmFsdGllcygpOiBudW1iZXIge1xuICAgICAgcmV0dXJuICh0aGlzLm1pbm9yUGVuYWx0aWVzIHx8IDApICsgKHRoaXMubWFqb3JQZW5hbHRpZXMgfHwgMCkgKyAodGhpcy5tYXRjaFBlbmFsdGllcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbkF0dGFja0dvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoR29hbHMgfHwgMCkgKyAodGhpcy5ldkdvYWxzIHx8IDApICsgKHRoaXMucHBHb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbkF0dGFja1Nob3RzT25Hb2FsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5ldlNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuc2hTaG90c09uR29hbCB8fCAwKTtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbkF0dGFja1Nob3RzTWlzcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5ldlNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5zaFNob3RNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgcG9zaXRpb25BdHRhY2tTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uQXR0YWNrU2hvdHNPbkdvYWwgKyB0aGlzLnBvc2l0aW9uQXR0YWNrU2hvdHNNaXNzO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnBvc2l0aW9uQXR0YWNrR29hbHMgfHwgIXRoaXMucG9zaXRpb25BdHRhY2tTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnBvc2l0aW9uQXR0YWNrR29hbHMgLyB0aGlzLnBvc2l0aW9uQXR0YWNrU2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgdG90YWxJbkdhbWVHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvdGFsQ2VudGVyRm9yd2FyZEdvYWxzICsgdGhpcy50b3RhbE1hbmV1dmVyR29hbHMgKyB0aGlzLnRvdGFsQ291bnRlckF0dGFja0dvYWxzICsgdGhpcy5wb3NpdGlvbkF0dGFja0dvYWxzO1xuICB9XG5cbiAgZ2V0IHBwR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsUHBHb2FscyB8fCAhdGhpcy5wcFNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxQcEdvYWxzIC8gdGhpcy5wcFNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IGV2R29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsRXZHb2FscyB8fCAhdGhpcy5ldlNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxFdkdvYWxzIC8gdGhpcy5ldlNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHNoR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsU2hHb2FscyB8fCAhdGhpcy5zaFNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxTaEdvYWxzIC8gdGhpcy5zaFNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHNob3RzT25Hb2FsUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5zaG90c09uR29hbCB8fCAhdGhpcy5zaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnNob3RzT25Hb2FsIC8gdGhpcy5zaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCBnb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZ29hbHMgfHwgIXRoaXMuc2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5nb2FscyAvIHRoaXMuc2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgdG90YWxHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxHb2FscyB8fCAhdGhpcy50b3RhbFNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxHb2FscyAvIHRoaXMudG90YWxTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCBmYWNlT2ZmUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5mYWNlT2ZmV2lucyB8fCAhdGhpcy5mYWNlT2Zmcykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLmZhY2VPZmZXaW5zIC8gdGhpcy5mYWNlT2ZmcykgLyAxMDtcbiAgfVxuXG4gIGdldCBzaG9vdG91dEdvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5zaG9vdG91dEdvYWxzIHx8ICF0aGlzLnNob290b3V0U2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5zaG9vdG91dEdvYWxzIC8gdGhpcy5zaG9vdG91dFNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IGdvYWxwYXNzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnRvdGFsR29hbHMgfHwgMCkgKyAodGhpcy5hc3Npc3RzIHx8IDApO1xuICB9XG5cbiAgLypnb2FsaWUgc3RhdCAqL1xuICBnZXQgcG9zaXRpb25BdHRhY2tTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNhdmVzIHx8IDApICsgKHRoaXMuc2hTYXZlcyB8fCAwKSArICh0aGlzLmV2U2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgcG9zaXRpb25BdHRhY2tTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbkF0dGFja1NhdmVzICsgKHRoaXMuZ29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnBvc2l0aW9uQXR0YWNrU2F2ZXMgfHwgIXRoaXMucG9zaXRpb25BdHRhY2tTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5wb3NpdGlvbkF0dGFja1NhdmVzIC8gdGhpcy5wb3NpdGlvbkF0dGFja1Nob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3VudGVyQXR0YWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tTYXZlcyB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja1NhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudGVyQXR0YWNrU2F2ZXMgKyAodGhpcy5jb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuY291bnRlckF0dGFja1NhdmVzIHx8ICF0aGlzLmNvdW50ZXJBdHRhY2tTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5jb3VudGVyQXR0YWNrU2F2ZXMgLyB0aGlzLmNvdW50ZXJBdHRhY2tTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuXG4gIGdldCBjZW50ZXJGb3J3YXJkU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDZW50ZXJGb3J3YXJkU2F2ZXMgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRTYXZlcyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZFNhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNlbnRlckZvcndhcmRTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jZW50ZXJGb3J3YXJkU2F2ZXMgKyAodGhpcy5jZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IGNlbnRlckZvcndhcmRTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuY2VudGVyRm9yd2FyZFNhdmVzIHx8ICF0aGlzLmNlbnRlckZvcndhcmRTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5jZW50ZXJGb3J3YXJkU2F2ZXMgLyB0aGlzLmNlbnRlckZvcndhcmRTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgbWFuZXV2ZXJTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyU2F2ZXMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyU2F2ZXMgfHwgMCkgKyAodGhpcy5ldk1hbmV1dmVyU2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgbWFuZXV2ZXJTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tYW5ldXZlclNhdmVzICsgKHRoaXMubWFuZXV2ZXJHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgbWFuZXV2ZXJTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMubWFuZXV2ZXJTYXZlcyB8fCAhdGhpcy5tYW5ldXZlclNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLm1hbmV1dmVyU2F2ZXMgLyB0aGlzLm1hbmV1dmVyU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IGZyZWVLaWNrU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBGcmVlS2lja1NhdmVzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja1NhdmVzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja1NhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGZyZWVLaWNrU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZnJlZUtpY2tTYXZlcyArICh0aGlzLmZyZWVLaWNrR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IGZyZWVLaWNrU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmZyZWVLaWNrU2F2ZXMgfHwgIXRoaXMuZnJlZUtpY2tTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5mcmVlS2lja1NhdmVzIC8gdGhpcy5mcmVlS2lja1Nob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCBjb3JuZXJTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvcm5lclNhdmVzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJTYXZlcyB8fCAwKSArICh0aGlzLmV2Q29ybmVyU2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgY29ybmVyU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29ybmVyU2F2ZXMgKyAodGhpcy5jb3JuZXJHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgY29ybmVyU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmNvcm5lclNhdmVzIHx8ICF0aGlzLmNvcm5lclNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLmNvcm5lclNhdmVzIC8gdGhpcy5jb3JuZXJTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgaW5HYW1lU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hTYXZlcyB8fCAwKSArICh0aGlzLmV2U2F2ZXMgfHwgMCkgKyAodGhpcy5wcFNhdmVzIHx8IDApICtcbiAgICAgIHRoaXMuY291bnRlckF0dGFja1NhdmVzICsgdGhpcy5tYW5ldXZlclNhdmVzICsgdGhpcy5jZW50ZXJGb3J3YXJkU2F2ZXM7XG4gIH1cblxuICBnZXQgc2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbkdhbWVTYXZlcyArIHRoaXMuZnJlZUtpY2tTYXZlcyArIHRoaXMuY29ybmVyU2F2ZXM7XG4gIH1cblxuICBnZXQgdG90YWxTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNhdmVzICsgKHRoaXMuc2hvb3RvdXRTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBpbkdhbWVHb2Fsc0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZ29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuY291bnRlckF0dGFja0dvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLm1hbmV1dmVyR29hbHNBZ2FpbnN0IHx8IDApICtcbiAgICAgICh0aGlzLmNlbnRlckZvcndhcmRHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgc2hvb3RvdXRTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hvb3RvdXRTYXZlcyB8fCAwKSArICh0aGlzLnNob290b3V0R29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IGdhbWVHb2Fsc0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbkdhbWVHb2Fsc0FnYWluc3QgKyAodGhpcy5mcmVlS2lja0dvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLmNvcm5lckdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbEdvYWxzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdhbWVHb2Fsc0FnYWluc3QgKyAodGhpcy5zaG9vdG91dEdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBnYW1lU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZXMgKyB0aGlzLmdhbWVHb2Fsc0FnYWluc3Q7XG4gIH1cblxuICBnZXQgdG90YWxTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lU2hvdHNBZ2FpbnN0ICsgdGhpcy5zaG9vdG91dFNob3RzQWdhaW5zdDtcbiAgfVxuXG4gIGdldCBzaG9vdG91dFNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5zaG9vdG91dFNhdmVzIHx8ICF0aGlzLnNob290b3V0U2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuc2hvb3RvdXRTYXZlcyAvIHRoaXMuc2hvb3RvdXRTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgc2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnNhdmVzIHx8ICF0aGlzLmdhbWVTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5zYXZlcyAvIHRoaXMuZ2FtZVNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbFNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbFNhdmVzIHx8ICF0aGlzLnRvdGFsU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxTYXZlcyAvIHRoaXMudG90YWxTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgdG90YWxTaFNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoQ291bnRlckF0dGFja1NhdmVzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlclNhdmVzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkU2F2ZXMgfHwgMCkgK1xuICAgICAgKHRoaXMuc2hTYXZlcyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tTYXZlcyB8fCAwKSArICh0aGlzLnNoQ29ybmVyU2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxTaEdvYWxzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaEdvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5zaENvcm5lckdvYWxzQWdhaW5zdCB8fCAwKSArXG4gICAgICAodGhpcy5zaENvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsU2hTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbFNoU2F2ZXMgKyB0aGlzLnRvdGFsU2hHb2Fsc0FnYWluc3Q7XG4gIH1cblxuICBnZXQgdG90YWxTaFNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbFNoU2F2ZXMgfHwgIXRoaXMudG90YWxTaFNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsU2hTYXZlcyAvIHRoaXMudG90YWxTaFNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbEV2U2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZXZDb3VudGVyQXR0YWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5ldk1hbmV1dmVyU2F2ZXMgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRTYXZlcyB8fCAwKSArXG4gICAgICAodGhpcy5ldlNhdmVzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja1NhdmVzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbEV2R29hbHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmV2R29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuZXZGcmVlS2lja0dvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLmV2Q29ybmVyR29hbHNBZ2FpbnN0IHx8IDApICtcbiAgICAgICh0aGlzLmV2Q291bnRlckF0dGFja0dvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxFdlNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvdGFsRXZTYXZlcyArIHRoaXMudG90YWxFdkdvYWxzQWdhaW5zdDtcbiAgfVxuXG4gIGdldCB0b3RhbEV2U2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsRXZTYXZlcyB8fCAhdGhpcy50b3RhbEV2U2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxFdlNhdmVzIC8gdGhpcy50b3RhbEV2U2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG59XG4iXX0=
|
|
471
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0ZXJwb2xvLWdhbWUtc3RhdGlzdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbW9kZWxzL3dhdGVycG9sby1nYW1lLXN0YXRpc3RpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsSUFBYSxzQkFBc0IsR0FBbkMsTUFBYSxzQkFBdUIsU0FBUSxpQkFBaUI7SUFtSzNELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0QsT0FBTyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUNqRixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM3RCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNuRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM3RCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUN0RixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUM7WUFDakcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUM7WUFDM0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ2pGLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUN0RixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUM7WUFDakcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUM7WUFDM0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ2pGLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUN0RixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUM7WUFDakcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUM7WUFDM0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ2pGLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQztZQUNsRixDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO1lBQ2xGLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUM7WUFDbEYsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDbkYsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDMUYsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1lBQy9GLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7WUFDekYsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO1lBQ3RGLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQztZQUM3RixDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDN0YsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUM7WUFDNUYsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQzdGLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUN6RyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDcEQsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDL0UsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCO1lBQ2pGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7WUFDekYsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMseUJBQXlCO1lBQzNGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDckYsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQzFILENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN2QyxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDdkMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDcEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDOUIsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzlDLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSwwQkFBMEI7UUFDNUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ2pFLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUYsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELElBQUkseUJBQXlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLHlCQUF5QjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQy9ELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUYsQ0FBQztJQUdELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELElBQUkseUJBQXlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLHlCQUF5QjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQy9ELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUYsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDckQsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDckQsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDakQsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDO1lBQ3hHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3JELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QyxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDL0MsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQztZQUN0RyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDO1lBQ3ZHLENBQUMsSUFBSSxDQUFDLDJCQUEyQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDJCQUEyQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUNuRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDO1lBQ3RHLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUM7WUFDdkcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ25ELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlFLENBQUM7Q0FDRixDQUFBO0FBaHVCWSxzQkFBc0I7SUFMbEMsS0FBSyxDQUFDO1FBQ0wsUUFBUSxFQUFFO1lBQ1IsU0FBUyxFQUFFLGFBQWE7U0FDekI7S0FDRixDQUFDO0dBQ1csc0JBQXNCLENBZ3VCbEM7U0FodUJZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsLCBkYXRlVGltZUZpZWxkIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEdhbWVTdGF0aXN0aWNCYXNlIH0gZnJvbSAnLi9nYW1lLXN0YXRpc3RpYy1iYXNlJztcblxuQE1vZGVsKHtcbiAgcmVsYXRpb246IHtcbiAgICB1cGRhdGVkQXQ6IGRhdGVUaW1lRmllbGQsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgV2F0ZXJwb2xvR2FtZVN0YXRpc3RpYyBleHRlbmRzIEdhbWVTdGF0aXN0aWNCYXNlIHtcbiAgZ2FtZVVzZXJJZDogbnVtYmVyO1xuICBwb2ludHM6IG51bWJlcjtcbiAgcHBTaG90TWlzc2VzOiBudW1iZXI7XG4gIHBwU2hvdHNPbkdvYWw6IG51bWJlcjtcbiAgcHBTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgZXZTaG90TWlzc2VzOiBudW1iZXI7XG4gIGV2U2hvdHNPbkdvYWw6IG51bWJlcjtcbiAgZXZTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hTaG90TWlzc2VzOiBudW1iZXI7XG4gIHNoU2hvdHNPbkdvYWw6IG51bWJlcjtcbiAgc2hTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgcHBUb3RhbFNob3RzT25Hb2FsOiBudW1iZXI7XG4gIGV2VG90YWxTaG90c09uR29hbDogbnVtYmVyO1xuICBzaFRvdGFsU2hvdHNPbkdvYWw6IG51bWJlcjtcbiAgcHBHb2FsczogbnVtYmVyO1xuICBldkdvYWxzOiBudW1iZXI7XG4gIHNoR29hbHM6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrR29hbHM6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrT25Hb2FsczogbnVtYmVyO1xuICBwcENvdW50ZXJBdHRhY2tNaXNzZXM6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja0dvYWxzOiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja09uR29hbHM6IG51bWJlcjtcbiAgZXZDb3VudGVyQXR0YWNrTWlzc2VzOiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja1Nob3RzQmxvY2tlZDogbnVtYmVyO1xuICBzaENvdW50ZXJBdHRhY2tHb2FsczogbnVtYmVyO1xuICBzaENvdW50ZXJBdHRhY2tPbkdvYWxzOiBudW1iZXI7XG4gIHNoQ291bnRlckF0dGFja01pc3NlczogbnVtYmVyO1xuICBzaENvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgcHBNYW5ldXZlckdvYWxzOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJPbkdvYWxzOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJNaXNzZXM6IG51bWJlcjtcbiAgcHBNYW5ldXZlclNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldk1hbmV1dmVyR29hbHM6IG51bWJlcjtcbiAgZXZNYW5ldXZlck9uR29hbHM6IG51bWJlcjtcbiAgZXZNYW5ldXZlck1pc3NlczogbnVtYmVyO1xuICBldk1hbmV1dmVyU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHNoTWFuZXV2ZXJHb2FsczogbnVtYmVyO1xuICBzaE1hbmV1dmVyT25Hb2FsczogbnVtYmVyO1xuICBzaE1hbmV1dmVyTWlzc2VzOiBudW1iZXI7XG4gIHNoTWFuZXV2ZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgcHBDZW50ZXJGb3J3YXJkR29hbHM6IG51bWJlcjtcbiAgcHBDZW50ZXJGb3J3YXJkT25Hb2FsczogbnVtYmVyO1xuICBwcENlbnRlckZvcndhcmRNaXNzZXM6IG51bWJlcjtcbiAgcHBDZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZEdvYWxzOiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZE9uR29hbHM6IG51bWJlcjtcbiAgZXZDZW50ZXJGb3J3YXJkTWlzc2VzOiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBzaENlbnRlckZvcndhcmRHb2FsczogbnVtYmVyO1xuICBzaENlbnRlckZvcndhcmRPbkdvYWxzOiBudW1iZXI7XG4gIHNoQ2VudGVyRm9yd2FyZE1pc3NlczogbnVtYmVyO1xuICBzaENlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgcHBBc3Npc3RzOiBudW1iZXI7XG4gIGV2QXNzaXN0czogbnVtYmVyO1xuICBzaEFzc2lzdHM6IG51bWJlcjtcbiAgc2hvb3RvdXRBdHRlbXB0czogbnVtYmVyO1xuICBzaG9vdG91dEdvYWxzOiBudW1iZXI7XG4gIGFmdGVyR2FtZVNob290b3V0QXR0ZW1wdHM6IG51bWJlcjtcbiAgYWZ0ZXJHYW1lU2hvb3RvdXRHb2FsczogbnVtYmVyO1xuICBibG9ja1Nob3RzOiBudW1iZXI7XG4gIGZhY2VPZmZMb3NzZXM6IG51bWJlcjtcbiAgZmFjZU9mZldpbnM6IG51bWJlcjtcbiAgcHBTYXZlczogbnVtYmVyO1xuICBzaFNhdmVzOiBudW1iZXI7XG4gIGV2U2F2ZXM6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrU2F2ZXM6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrU2F2ZXM6IG51bWJlcjtcbiAgZXZDb3VudGVyQXR0YWNrU2F2ZXM6IG51bWJlcjtcbiAgcHBNYW5ldXZlclNhdmVzOiBudW1iZXI7XG4gIHNoTWFuZXV2ZXJTYXZlczogbnVtYmVyO1xuICBldk1hbmV1dmVyU2F2ZXM6IG51bWJlcjtcbiAgcHBDZW50ZXJGb3J3YXJkU2F2ZXM6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkU2F2ZXM6IG51bWJlcjtcbiAgZXZDZW50ZXJGb3J3YXJkU2F2ZXM6IG51bWJlcjtcbiAgcHBGcmVlS2lja1NhdmVzOiBudW1iZXI7XG4gIHNoRnJlZUtpY2tTYXZlczogbnVtYmVyO1xuICBldkZyZWVLaWNrU2F2ZXM6IG51bWJlcjtcbiAgcHBDb3JuZXJTYXZlczogbnVtYmVyO1xuICBzaENvcm5lclNhdmVzOiBudW1iZXI7XG4gIGV2Q29ybmVyU2F2ZXM6IG51bWJlcjtcbiAgcHBUb3RhbEdhbWVTYXZlczogbnVtYmVyO1xuICBzaFRvdGFsR2FtZVNhdmVzOiBudW1iZXI7XG4gIGV2VG90YWxHYW1lU2F2ZXM6IG51bWJlcjtcbiAgc2hvb3RvdXRTYXZlczogbnVtYmVyO1xuICBhZnRlckdhbWVTaG9vdG91dFNhdmVzOiBudW1iZXI7XG4gIHBwR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNoR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGV2R29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBwcENvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBjb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgc2hNYW5ldXZlckdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBldk1hbmV1dmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIG1hbmV1dmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzaENlbnRlckZvcndhcmRHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgZXZDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGNlbnRlckZvcndhcmRHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgcHBGcmVlS2lja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzaEZyZWVLaWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGV2RnJlZUtpY2tHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgZnJlZUtpY2tHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgcHBDb3JuZXJHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgc2hDb3JuZXJHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgZXZDb3JuZXJHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgY29ybmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNob290b3V0R29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGFmdGVyR2FtZVNob290b3V0R29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNhZmV0eVJhdGU6IG51bWJlcjtcbiAgcGVuYWx0eU1pbnV0ZXM6IG51bWJlcjtcbiAgZ2FtZVRpbWU6IG51bWJlcjtcbiAgcGx1c01pbnVzOiBudW1iZXI7XG4gIGZvdWxzOiBudW1iZXI7XG4gIG1pbm9yUGVuYWx0aWVzOiBudW1iZXI7XG4gIG1ham9yUGVuYWx0aWVzOiBudW1iZXI7XG4gIG1hdGNoUGVuYWx0aWVzOiBudW1iZXI7XG4gIHBlbmFsdHlGb3VsczogbnVtYmVyO1xuICB0dXJub3ZlcnM6IG51bWJlcjtcbiAgYXR0YWNrRm91bHM6IG51bWJlcjtcbiAgcGVyc29uYWxGb3VsczogbnVtYmVyO1xuICBkcmF3bkZvdWxzOiBudW1iZXI7XG4gIGRyYXduVHVybm92ZXJzOiBudW1iZXI7XG4gIHllbGxvd0NhcmRzOiBudW1iZXI7XG4gIHJlZENhcmRzOiBudW1iZXI7XG4gIGxvc3NlczogbnVtYmVyO1xuICBzdGVhbHM6IG51bWJlcjtcbiAgcHBGcmVlS2lja0dvYWxzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tPbkdvYWxzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tNaXNzZXM6IG51bWJlcjtcbiAgcHBGcmVlS2lja1Nob3RzQmxvY2tlZDogbnVtYmVyO1xuICBzaEZyZWVLaWNrR29hbHM6IG51bWJlcjtcbiAgc2hGcmVlS2lja09uR29hbHM6IG51bWJlcjtcbiAgc2hGcmVlS2lja01pc3NlczogbnVtYmVyO1xuICBzaEZyZWVLaWNrU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIGV2RnJlZUtpY2tHb2FsczogbnVtYmVyO1xuICBldkZyZWVLaWNrT25Hb2FsczogbnVtYmVyO1xuICBldkZyZWVLaWNrTWlzc2VzOiBudW1iZXI7XG4gIGV2RnJlZUtpY2tTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgZnJlZUtpY2tQYXNzZXM6IG51bWJlcjtcbiAgZnJlZUtpY2tTZWxmczogbnVtYmVyO1xuICBwcENvcm5lckdvYWxzOiBudW1iZXI7XG4gIHBwQ29ybmVyT25Hb2FsczogbnVtYmVyO1xuICBwcENvcm5lck1pc3NlczogbnVtYmVyO1xuICBwcENvcm5lclNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBzaENvcm5lckdvYWxzOiBudW1iZXI7XG4gIHNoQ29ybmVyT25Hb2FsczogbnVtYmVyO1xuICBzaENvcm5lck1pc3NlczogbnVtYmVyO1xuICBzaENvcm5lclNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldkNvcm5lckdvYWxzOiBudW1iZXI7XG4gIGV2Q29ybmVyT25Hb2FsczogbnVtYmVyO1xuICBldkNvcm5lck1pc3NlczogbnVtYmVyO1xuICBldkNvcm5lclNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBjb3JuZXJQYXNzZXM6IG51bWJlcjtcbiAgY29ybmVyU2VsZnM6IG51bWJlcjtcbiAgdGFja2xlczogbnVtYmVyO1xuICBwbGF5ZXJFZmZpY2llbmN5OiBudW1iZXI7XG4gIHVwZGF0ZWRBdDogRGF0ZTtcblxuICBnZXQgaWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lVXNlcklkO1xuICB9XG5cbiAgZ2V0IGdhbWVNaW51dGVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5nYW1lVGltZSAvIDYwKTtcbiAgfVxuXG4gIGdldCBwZW5hbHR5VGltZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5wZW5hbHR5TWludXRlcykge1xuICAgICAgcmV0dXJuICcwMDowMCc7XG4gICAgfVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRoaXMucGVuYWx0eU1pbnV0ZXMgLyA2MCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IodGhpcy5wZW5hbHR5TWludXRlcyAtIG1pbnV0ZXMgKiA2MCk7XG4gICAgcmV0dXJuIGAke21pbnV0ZXMgPCAxMCA/IDAgOiAnJ30ke21pbnV0ZXN9OiR7c2Vjb25kcyA8IDEwID8gMCA6ICcnfSR7c2Vjb25kc31gO1xuICB9XG5cbiAgZ2V0IGFzc2lzdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBBc3Npc3RzIHx8IDApICsgKHRoaXMuc2hBc3Npc3RzIHx8IDApICArICh0aGlzLmV2QXNzaXN0cyB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbENvdW50ZXJBdHRhY2tHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja0dvYWxzIHx8IDApICArICh0aGlzLnNoQ291bnRlckF0dGFja0dvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBwQ291bnRlckF0dGFja1Nob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ291bnRlckF0dGFja09uR29hbHMgfHwgMCkgKyAodGhpcy5wcENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5wcENvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgc2hDb3VudGVyQXR0YWNrU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hDb3VudGVyQXR0YWNrT25Hb2FscyB8fCAwKSArICh0aGlzLnNoQ291bnRlckF0dGFja01pc3NlcyB8fCAwKSArICh0aGlzLnNoQ291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBldkNvdW50ZXJBdHRhY2tTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldkNvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3VudGVyQXR0YWNrTWlzc2VzIHx8IDApICsgKHRoaXMuZXZDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tTaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ291bnRlckF0dGFja01pc3NlcyB8fCAwKSArICh0aGlzLnNoQ291bnRlckF0dGFja01pc3NlcyB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja01pc3NlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdE9uR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3VudGVyQXR0YWNrT25Hb2FscyB8fCAwKSArICh0aGlzLnNoQ291bnRlckF0dGFja09uR29hbHMgfHwgMCkgKyAodGhpcy5ldkNvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuc2hDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuZXZDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvdW50ZXJBdHRhY2tTaG90TWlzc2VzICsgdGhpcy5jb3VudGVyQXR0YWNrU2hvdE9uR29hbHMgKyB0aGlzLmNvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQ7XG4gIH1cblxuICBnZXQgY291bnRlckF0dGFja0dvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbENvdW50ZXJBdHRhY2tHb2FscyB8fCAhdGhpcy5jb3VudGVyQXR0YWNrU2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbENvdW50ZXJBdHRhY2tHb2FscyAvIHRoaXMuY291bnRlckF0dGFja1Nob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsTWFuZXV2ZXJHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyR29hbHMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyR29hbHMgfHwgMCkgKyAodGhpcy5ldk1hbmV1dmVyR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgcHBNYW5ldXZlclNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwTWFuZXV2ZXJPbkdvYWxzIHx8IDApICsgKHRoaXMucHBNYW5ldXZlck1pc3NlcyB8fCAwKSArICh0aGlzLnBwTWFuZXV2ZXJTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgc2hNYW5ldXZlclNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoTWFuZXV2ZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlck1pc3NlcyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgZXZNYW5ldXZlclNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmV2TWFuZXV2ZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZNYW5ldXZlck1pc3NlcyB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgbWFuZXV2ZXJTaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwTWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyTWlzc2VzIHx8IDApICsgICh0aGlzLmV2TWFuZXV2ZXJNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgbWFuZXV2ZXJTaG90T25Hb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJPbkdvYWxzIHx8IDApICsgICh0aGlzLmV2TWFuZXV2ZXJPbkdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdHNCbG9ja2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwTWFuZXV2ZXJTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApICsgICh0aGlzLmV2TWFuZXV2ZXJTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgbWFuZXV2ZXJTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1hbmV1dmVyU2hvdE1pc3NlcyArIHRoaXMubWFuZXV2ZXJTaG90T25Hb2FscyArIHRoaXMubWFuZXV2ZXJTaG90c0Jsb2NrZWQ7XG4gIH1cblxuICBnZXQgbWFuZXV2ZXJHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxNYW5ldXZlckdvYWxzIHx8ICF0aGlzLm1hbmV1dmVyU2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbE1hbmV1dmVyR29hbHMgLyB0aGlzLm1hbmV1dmVyU2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgdG90YWxDZW50ZXJGb3J3YXJkR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRHb2FscyB8fCAwKSArICAodGhpcy5ldkNlbnRlckZvcndhcmRHb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBwcENlbnRlckZvcndhcmRTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApICsgKHRoaXMucHBDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApICsgKHRoaXMucHBDZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNoQ2VudGVyRm9yd2FyZFNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoQ2VudGVyRm9yd2FyZE9uR29hbHMgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgZXZDZW50ZXJGb3J3YXJkU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZXZDZW50ZXJGb3J3YXJkT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZE1pc3NlcyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjZW50ZXJGb3J3YXJkU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENlbnRlckZvcndhcmRNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RPbkdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ2VudGVyRm9yd2FyZE9uR29hbHMgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDZW50ZXJGb3J3YXJkT25Hb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLnNoQ2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjZW50ZXJGb3J3YXJkU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jZW50ZXJGb3J3YXJkU2hvdE1pc3NlcyArIHRoaXMuY2VudGVyRm9yd2FyZFNob3RPbkdvYWxzICsgdGhpcy5jZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkO1xuICB9XG5cbiAgZ2V0IGNlbnRlckZvcndhcmRHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxDZW50ZXJGb3J3YXJkR29hbHMgfHwgIXRoaXMuY2VudGVyRm9yd2FyZFNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxDZW50ZXJGb3J3YXJkR29hbHMgLyB0aGlzLmNlbnRlckZvcndhcmRTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCBwcFNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLnBwU2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5wcFNob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICAodGhpcy5wcEZyZWVLaWNrTWlzc2VzIHx8IDApICsgKHRoaXMucHBGcmVlS2lja09uR29hbHMgfHwgMCkgKyAodGhpcy5wcEZyZWVLaWNrU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgICh0aGlzLnBwQ29ybmVyTWlzc2VzIHx8IDApICsgKHRoaXMucHBDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMucHBDb3JuZXJTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgdGhpcy5wcENvdW50ZXJBdHRhY2tTaG90cyArIHRoaXMucHBNYW5ldXZlclNob3RzICsgdGhpcy5wcENlbnRlckZvcndhcmRTaG90cztcbiAgfVxuXG4gIGdldCBldlNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmV2U2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLmV2U2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5ldlNob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICAodGhpcy5ldkZyZWVLaWNrTWlzc2VzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja09uR29hbHMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgICh0aGlzLmV2Q29ybmVyTWlzc2VzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJTaG90c0Jsb2NrZWQgfHwgMCkgICtcbiAgICAgIHRoaXMuZXZDb3VudGVyQXR0YWNrU2hvdHMgKyB0aGlzLmV2TWFuZXV2ZXJTaG90cyArIHRoaXMuZXZDZW50ZXJGb3J3YXJkU2hvdHM7XG4gIH1cblxuICBnZXQgc2hTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaFNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5zaFNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuc2hTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgKHRoaXMuc2hGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICAodGhpcy5zaENvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLnNoQ29ybmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnNoQ29ybmVyU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgIHRoaXMuc2hDb3VudGVyQXR0YWNrU2hvdHMgKyB0aGlzLnNoTWFuZXV2ZXJTaG90cyArIHRoaXMuc2hDZW50ZXJGb3J3YXJkU2hvdHM7XG4gIH1cblxuICBnZXQgdG90YWxTaEdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoR29hbHMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrR29hbHMgfHwgMCkgKyAodGhpcy5zaENvcm5lckdvYWxzIHx8IDApICtcbiAgICAgICh0aGlzLnNoQ291bnRlckF0dGFja0dvYWxzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlckdvYWxzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxFdkdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmV2R29hbHMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrR29hbHMgfHwgMCkgKyAodGhpcy5ldkNvcm5lckdvYWxzIHx8IDApICtcbiAgICAgICh0aGlzLmV2Q291bnRlckF0dGFja0dvYWxzIHx8IDApICsgKHRoaXMuZXZNYW5ldXZlckdvYWxzIHx8IDApICsgKHRoaXMuZXZDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxQcEdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwR29hbHMgfHwgMCkgKyAodGhpcy5wcEZyZWVLaWNrR29hbHMgfHwgMCkgKyAodGhpcy5wcENvcm5lckdvYWxzIHx8IDApICtcbiAgICAgICh0aGlzLnBwQ291bnRlckF0dGFja0dvYWxzIHx8IDApICsgKHRoaXMucHBNYW5ldXZlckdvYWxzIHx8IDApICsgKHRoaXMucHBDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgZ29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbFNoR29hbHMgKyB0aGlzLnRvdGFsRXZHb2FscyArIHRoaXMudG90YWxQcEdvYWxzO1xuICB9XG5cbiAgZ2V0IHRvdGFsR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nb2FscyArICh0aGlzLnNob290b3V0R29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgc2hvb3RvdXRTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaG9vdG91dEdvYWxzIHx8IDApICsgKHRoaXMuc2hvb3RvdXRBdHRlbXB0cyB8fCAwKTtcbiAgfVxuXG4gIGdldCBpbkdhbWVTaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLmV2U2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLnNoU2hvdE1pc3NlcyB8fCAwKSArXG4gICAgICB0aGlzLmNvdW50ZXJBdHRhY2tTaG90TWlzc2VzICsgdGhpcy5tYW5ldXZlclNob3RNaXNzZXMgKyB0aGlzLmNlbnRlckZvcndhcmRTaG90TWlzc2VzO1xuICB9XG5cbiAgZ2V0IHNob3RNaXNzZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrTWlzc2VzIHx8IDApICtcbiAgICAgICh0aGlzLnBwQ29ybmVyTWlzc2VzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvcm5lck1pc3NlcyB8fCAwKSArXG4gICAgICB0aGlzLmluR2FtZVNob3RNaXNzZXM7XG4gIH1cblxuICBnZXQgdG90YWxQcFNob3RNaXNzZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBTaG90TWlzc2VzIHx8IDApICsgKHRoaXMucHBGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLnBwQ29ybmVyTWlzc2VzIHx8IDApICtcbiAgICAgICh0aGlzLnBwQ291bnRlckF0dGFja01pc3NlcyB8fCAwKSArICh0aGlzLnBwTWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5wcENlbnRlckZvcndhcmRNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgc2hvdHNPbkdvYWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBTaG90c09uR29hbCB8fCAwKSArICh0aGlzLmV2U2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5zaFNob3RzT25Hb2FsIHx8IDApICtcbiAgICAgICh0aGlzLnBwRnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja09uR29hbHMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrT25Hb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvcm5lck9uR29hbHMgfHwgMCkgKyAodGhpcy5ldkNvcm5lck9uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvcm5lck9uR29hbHMgfHwgMCkgK1xuICAgICAgdGhpcy5jb3VudGVyQXR0YWNrU2hvdE9uR29hbHMgKyB0aGlzLm1hbmV1dmVyU2hvdE9uR29hbHMgKyB0aGlzLmNlbnRlckZvcndhcmRTaG90T25Hb2FscztcbiAgfVxuXG4gIGdldCB0b3RhbFBwU2hvdHNPbkdvYWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBTaG90c09uR29hbCB8fCAwKSArICh0aGlzLnBwRnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMucHBDb3JuZXJPbkdvYWxzIHx8IDApICtcbiAgICAgICh0aGlzLnBwQ291bnRlckF0dGFja09uR29hbHMgfHwgMCkgKyAodGhpcy5wcE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnBwQ2VudGVyRm9yd2FyZE9uR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgaW5HYW1lU2hvdHNPbkdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5ldlNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuc2hTaG90c09uR29hbCB8fCAwKSArXG4gICAgICB0aGlzLmNvdW50ZXJBdHRhY2tTaG90T25Hb2FscyArIHRoaXMubWFuZXV2ZXJTaG90T25Hb2FscyArIHRoaXMuY2VudGVyRm9yd2FyZFNob3RPbkdvYWxzO1xuICB9XG5cbiAgZ2V0IHNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucHBTaG90cyArIHRoaXMuZXZTaG90cyArIHRoaXMuc2hTaG90cztcbiAgfVxuXG4gIGdldCB0b3RhbFNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdHMgKyB0aGlzLnNob290b3V0U2hvdHM7XG4gIH1cblxuICBnZXQgZmFjZU9mZnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZmFjZU9mZldpbnMgfHwgMCkgKyAodGhpcy5mYWNlT2ZmTG9zc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGZyZWVLaWNrU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcEZyZWVLaWNrTWlzc2VzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgZnJlZUtpY2tTaG90c0Jsb2NrZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IGZyZWVLaWNrT25Hb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcEZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja09uR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxGcmVlS2lja0dvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwRnJlZUtpY2tHb2FscyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tHb2FscyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tHb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbEZyZWVLaWNrcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5mcmVlS2lja1NlbGZzIHx8IDApICsgKHRoaXMuZnJlZUtpY2tQYXNzZXMgfHwgMCkgK1xuICAgICAgdGhpcy5mcmVlS2lja1Nob3RNaXNzZXMgKyB0aGlzLmZyZWVLaWNrT25Hb2FscyArIHRoaXMudG90YWxGcmVlS2lja0dvYWxzICsgdGhpcy5mcmVlS2lja1Nob3RzQmxvY2tlZDtcbiAgfVxuXG4gIGdldCBmcmVlS2lja0dvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbEZyZWVLaWNrR29hbHMgfHwgIXRoaXMudG90YWxGcmVlS2lja3MpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbEZyZWVLaWNrR29hbHMgLyB0aGlzLnRvdGFsRnJlZUtpY2tzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsQ29ybmVyR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3JuZXJHb2FscyB8fCAwKSArICh0aGlzLnNoQ29ybmVyR29hbHMgfHwgMCkgKyAodGhpcy5ldkNvcm5lckdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvcm5lclNob3RNaXNzZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3JuZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLmV2Q29ybmVyTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvcm5lck9uR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJPbkdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvcm5lclNob3RzQmxvY2tlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvcm5lclNob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLnNoQ29ybmVyU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuZXZDb3JuZXJTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxDb3JuZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmNvcm5lclNlbGZzIHx8IDApICsgKHRoaXMuY29ybmVyUGFzc2VzIHx8IDApICsgdGhpcy5jb3JuZXJTaG90c0Jsb2NrZWQgK1xuICAgICAgdGhpcy5jb3JuZXJPbkdvYWxzICsgdGhpcy5jb3JuZXJTaG90TWlzc2VzICsgdGhpcy50b3RhbENvcm5lckdvYWxzO1xuICB9XG5cbiAgZ2V0IHNob3RzQmxvY2tlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLmV2U2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuc2hTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgdGhpcy5jb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkICsgdGhpcy5tYW5ldXZlclNob3RzQmxvY2tlZCArIHRoaXMuY2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCArXG4gICAgICB0aGlzLmZyZWVLaWNrU2hvdHNCbG9ja2VkICsgdGhpcy5jb3JuZXJTaG90c0Jsb2NrZWQ7XG4gIH1cblxuICBnZXQgdG90YWxGb3VscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5mb3VscyB8fCAwKSArICh0aGlzLnBlcnNvbmFsRm91bHMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxQZW5hbHRpZXMoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiAodGhpcy5taW5vclBlbmFsdGllcyB8fCAwKSArICh0aGlzLm1ham9yUGVuYWx0aWVzIHx8IDApICsgKHRoaXMubWF0Y2hQZW5hbHRpZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgcG9zaXRpb25BdHRhY2tHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaEdvYWxzIHx8IDApICsgKHRoaXMuZXZHb2FscyB8fCAwKSArICh0aGlzLnBwR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgcG9zaXRpb25BdHRhY2tTaG90c09uR29hbCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuZXZTaG90c09uR29hbCB8fCAwKSArICh0aGlzLnNoU2hvdHNPbkdvYWwgfHwgMCk7XG4gIH1cblxuICBnZXQgcG9zaXRpb25BdHRhY2tTaG90c01pc3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBTaG90TWlzc2VzIHx8IDApICsgKHRoaXMuZXZTaG90TWlzc2VzIHx8IDApICsgKHRoaXMuc2hTaG90TWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbkF0dGFja1Nob3RzT25Hb2FsICsgdGhpcy5wb3NpdGlvbkF0dGFja1Nob3RzTWlzcztcbiAgfVxuXG4gIGdldCBwb3NpdGlvbkF0dGFja0dvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wb3NpdGlvbkF0dGFja0dvYWxzIHx8ICF0aGlzLnBvc2l0aW9uQXR0YWNrU2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5wb3NpdGlvbkF0dGFja0dvYWxzIC8gdGhpcy5wb3NpdGlvbkF0dGFja1Nob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsSW5HYW1lR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbENlbnRlckZvcndhcmRHb2FscyArIHRoaXMudG90YWxNYW5ldXZlckdvYWxzICsgdGhpcy50b3RhbENvdW50ZXJBdHRhY2tHb2FscyArIHRoaXMucG9zaXRpb25BdHRhY2tHb2FscztcbiAgfVxuXG4gIGdldCBwcEdvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbFBwR29hbHMgfHwgIXRoaXMucHBTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsUHBHb2FscyAvIHRoaXMucHBTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCBldkdvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbEV2R29hbHMgfHwgIXRoaXMuZXZTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsRXZHb2FscyAvIHRoaXMuZXZTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCBzaEdvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbFNoR29hbHMgfHwgIXRoaXMuc2hTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsU2hHb2FscyAvIHRoaXMuc2hTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCBzaG90c09uR29hbFBlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuc2hvdHNPbkdvYWwgfHwgIXRoaXMuc2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5zaG90c09uR29hbCAvIHRoaXMuc2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgZ29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmdvYWxzIHx8ICF0aGlzLnNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuZ29hbHMgLyB0aGlzLnNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsR29hbHMgfHwgIXRoaXMudG90YWxTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsR29hbHMgLyB0aGlzLnRvdGFsU2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgZmFjZU9mZlBlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZmFjZU9mZldpbnMgfHwgIXRoaXMuZmFjZU9mZnMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5mYWNlT2ZmV2lucyAvIHRoaXMuZmFjZU9mZnMpIC8gMTA7XG4gIH1cblxuICBnZXQgc2hvb3RvdXRHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuc2hvb3RvdXRHb2FscyB8fCAhdGhpcy5zaG9vdG91dFNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuc2hvb3RvdXRHb2FscyAvIHRoaXMuc2hvb3RvdXRTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCBnb2FscGFzcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy50b3RhbEdvYWxzIHx8IDApICsgKHRoaXMuYXNzaXN0cyB8fCAwKTtcbiAgfVxuXG4gIC8qZ29hbGllIHN0YXQgKi9cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBTYXZlcyB8fCAwKSArICh0aGlzLnNoU2F2ZXMgfHwgMCkgKyAodGhpcy5ldlNhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25BdHRhY2tTYXZlcyArICh0aGlzLmdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbkF0dGFja1NhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wb3NpdGlvbkF0dGFja1NhdmVzIHx8ICF0aGlzLnBvc2l0aW9uQXR0YWNrU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMucG9zaXRpb25BdHRhY2tTYXZlcyAvIHRoaXMucG9zaXRpb25BdHRhY2tTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgY291bnRlckF0dGFja1NhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ291bnRlckF0dGFja1NhdmVzIHx8IDApICsgKHRoaXMuc2hDb3VudGVyQXR0YWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5ldkNvdW50ZXJBdHRhY2tTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY291bnRlckF0dGFja1NhdmVzICsgKHRoaXMuY291bnRlckF0dGFja0dvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmNvdW50ZXJBdHRhY2tTYXZlcyB8fCAhdGhpcy5jb3VudGVyQXR0YWNrU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuY291bnRlckF0dGFja1NhdmVzIC8gdGhpcy5jb3VudGVyQXR0YWNrU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cblxuICBnZXQgY2VudGVyRm9yd2FyZFNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ2VudGVyRm9yd2FyZFNhdmVzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkU2F2ZXMgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjZW50ZXJGb3J3YXJkU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2VudGVyRm9yd2FyZFNhdmVzICsgKHRoaXMuY2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjZW50ZXJGb3J3YXJkU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmNlbnRlckZvcndhcmRTYXZlcyB8fCAhdGhpcy5jZW50ZXJGb3J3YXJkU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuY2VudGVyRm9yd2FyZFNhdmVzIC8gdGhpcy5jZW50ZXJGb3J3YXJkU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBNYW5ldXZlclNhdmVzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlclNhdmVzIHx8IDApICsgKHRoaXMuZXZNYW5ldXZlclNhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWFuZXV2ZXJTYXZlcyArICh0aGlzLm1hbmV1dmVyR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLm1hbmV1dmVyU2F2ZXMgfHwgIXRoaXMubWFuZXV2ZXJTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5tYW5ldXZlclNhdmVzIC8gdGhpcy5tYW5ldXZlclNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCBmcmVlS2lja1NhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwRnJlZUtpY2tTYXZlcyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tTYXZlcyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBmcmVlS2lja1Nob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZyZWVLaWNrU2F2ZXMgKyAodGhpcy5mcmVlS2lja0dvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBmcmVlS2lja1NhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5mcmVlS2lja1NhdmVzIHx8ICF0aGlzLmZyZWVLaWNrU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuZnJlZUtpY2tTYXZlcyAvIHRoaXMuZnJlZUtpY2tTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgY29ybmVyU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3JuZXJTYXZlcyB8fCAwKSArICh0aGlzLnNoQ29ybmVyU2F2ZXMgfHwgMCkgKyAodGhpcy5ldkNvcm5lclNhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvcm5lclNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvcm5lclNhdmVzICsgKHRoaXMuY29ybmVyR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvcm5lclNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5jb3JuZXJTYXZlcyB8fCAhdGhpcy5jb3JuZXJTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5jb3JuZXJTYXZlcyAvIHRoaXMuY29ybmVyU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IGluR2FtZVNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoU2F2ZXMgfHwgMCkgKyAodGhpcy5ldlNhdmVzIHx8IDApICsgKHRoaXMucHBTYXZlcyB8fCAwKSArXG4gICAgICB0aGlzLmNvdW50ZXJBdHRhY2tTYXZlcyArIHRoaXMubWFuZXV2ZXJTYXZlcyArIHRoaXMuY2VudGVyRm9yd2FyZFNhdmVzO1xuICB9XG5cbiAgZ2V0IHNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5HYW1lU2F2ZXMgKyB0aGlzLmZyZWVLaWNrU2F2ZXMgKyB0aGlzLmNvcm5lclNhdmVzO1xuICB9XG5cbiAgZ2V0IHRvdGFsU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlcyArICh0aGlzLnNob290b3V0U2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgaW5HYW1lR29hbHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmdvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLmNvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5tYW5ldXZlckdvYWxzQWdhaW5zdCB8fCAwKSArXG4gICAgICAodGhpcy5jZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IHNob290b3V0U2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNob290b3V0U2F2ZXMgfHwgMCkgKyAodGhpcy5zaG9vdG91dEdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBnYW1lR29hbHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5HYW1lR29hbHNBZ2FpbnN0ICsgKHRoaXMuZnJlZUtpY2tHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5jb3JuZXJHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxHb2Fsc0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lR29hbHNBZ2FpbnN0ICsgKHRoaXMuc2hvb3RvdXRHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgZ2FtZVNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNhdmVzICsgdGhpcy5nYW1lR29hbHNBZ2FpbnN0O1xuICB9XG5cbiAgZ2V0IHRvdGFsU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZVNob3RzQWdhaW5zdCArIHRoaXMuc2hvb3RvdXRTaG90c0FnYWluc3Q7XG4gIH1cblxuICBnZXQgc2hvb3RvdXRTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuc2hvb3RvdXRTYXZlcyB8fCAhdGhpcy5zaG9vdG91dFNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnNob290b3V0U2F2ZXMgLyB0aGlzLnNob290b3V0U2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IHNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5zYXZlcyB8fCAhdGhpcy5nYW1lU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuc2F2ZXMgLyB0aGlzLmdhbWVTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgdG90YWxTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxTYXZlcyB8fCAhdGhpcy50b3RhbFNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsU2F2ZXMgLyB0aGlzLnRvdGFsU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsU2hTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaENvdW50ZXJBdHRhY2tTYXZlcyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJTYXZlcyB8fCAwKSArICh0aGlzLnNoQ2VudGVyRm9yd2FyZFNhdmVzIHx8IDApICtcbiAgICAgICh0aGlzLnNoU2F2ZXMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5zaENvcm5lclNhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsU2hHb2Fsc0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuc2hDb3JuZXJHb2Fsc0FnYWluc3QgfHwgMCkgK1xuICAgICAgKHRoaXMuc2hDb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuc2hNYW5ldXZlckdvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLnNoQ2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbFNoU2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxTaFNhdmVzICsgdGhpcy50b3RhbFNoR29hbHNBZ2FpbnN0O1xuICB9XG5cbiAgZ2V0IHRvdGFsU2hTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxTaFNhdmVzIHx8ICF0aGlzLnRvdGFsU2hTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbFNoU2F2ZXMgLyB0aGlzLnRvdGFsU2hTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgdG90YWxFdlNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmV2Q291bnRlckF0dGFja1NhdmVzIHx8IDApICsgKHRoaXMuZXZNYW5ldXZlclNhdmVzIHx8IDApICsgKHRoaXMuZXZDZW50ZXJGb3J3YXJkU2F2ZXMgfHwgMCkgK1xuICAgICAgKHRoaXMuZXZTYXZlcyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tTYXZlcyB8fCAwKSArICh0aGlzLmV2Q29ybmVyU2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxFdkdvYWxzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldkdvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5ldkNvcm5lckdvYWxzQWdhaW5zdCB8fCAwKSArXG4gICAgICAodGhpcy5ldkNvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5ldk1hbmV1dmVyR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuZXZDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsRXZTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbEV2U2F2ZXMgKyB0aGlzLnRvdGFsRXZHb2Fsc0FnYWluc3Q7XG4gIH1cblxuICBnZXQgdG90YWxFdlNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbEV2U2F2ZXMgfHwgIXRoaXMudG90YWxFdlNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsRXZTYXZlcyAvIHRoaXMudG90YWxFdlNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxufVxuIl19
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
2
|
import { ReplaySubject, Subject } from 'rxjs';
|
|
3
3
|
import { Centrifuge } from 'centrifuge';
|
|
4
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
5
5
|
import { filter, take } from 'rxjs/operators';
|
|
6
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/common/http";
|
|
8
9
|
import * as i2 from "./config.service";
|
|
9
10
|
export class CentrifugoService {
|
|
10
|
-
constructor(httpClient, configService) {
|
|
11
|
+
constructor(httpClient, configService, platformId) {
|
|
11
12
|
this.httpClient = httpClient;
|
|
12
13
|
this.configService = configService;
|
|
14
|
+
this.platformId = platformId;
|
|
13
15
|
this.channels$ = {};
|
|
14
16
|
this.subscriptions = {};
|
|
15
17
|
this.connectedSubject = new BehaviorSubject(false);
|
|
@@ -18,6 +20,11 @@ export class CentrifugoService {
|
|
|
18
20
|
return this.connectedSubject;
|
|
19
21
|
}
|
|
20
22
|
listen(channel) {
|
|
23
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
24
|
+
return new Observable(observer => {
|
|
25
|
+
observer.error('Centrifugo is not available in ssr mode');
|
|
26
|
+
});
|
|
27
|
+
}
|
|
21
28
|
if (channel in this.channels$) {
|
|
22
29
|
return this.channels$[channel];
|
|
23
30
|
}
|
|
@@ -38,6 +45,11 @@ export class CentrifugoService {
|
|
|
38
45
|
}
|
|
39
46
|
}
|
|
40
47
|
connect() {
|
|
48
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
49
|
+
return new Observable(observer => {
|
|
50
|
+
observer.error('Centrifugo is not available in ssr mode');
|
|
51
|
+
});
|
|
52
|
+
}
|
|
41
53
|
if (!this.initializeEngineSubject) {
|
|
42
54
|
this.initializeEngineSubject = new ReplaySubject(1);
|
|
43
55
|
this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/centrifugo_v2/`)
|
|
@@ -61,6 +73,9 @@ export class CentrifugoService {
|
|
|
61
73
|
return this.initializeEngineSubject.pipe(filter(item => Boolean(item)), take(1));
|
|
62
74
|
}
|
|
63
75
|
async publish(channel, message) {
|
|
76
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
77
|
+
throw new Error('Centrifugo is not available in ssr mode');
|
|
78
|
+
}
|
|
64
79
|
const connected = await this.connect().pipe(filter(item => Boolean(item)), take(1)).toPromise();
|
|
65
80
|
if (!connected) {
|
|
66
81
|
throw new Error('Centrifuge connection error');
|
|
@@ -99,10 +114,13 @@ export class CentrifugoService {
|
|
|
99
114
|
this.channels$[channel].next(message);
|
|
100
115
|
}
|
|
101
116
|
}
|
|
102
|
-
CentrifugoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CentrifugoService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
CentrifugoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CentrifugoService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
103
118
|
CentrifugoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CentrifugoService, providedIn: 'root' });
|
|
104
119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CentrifugoService, decorators: [{
|
|
105
120
|
type: Injectable,
|
|
106
121
|
args: [{ providedIn: 'root' }]
|
|
107
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ConfigService }
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudHJpZnVnby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvY2VudHJpZnVnby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFPbkQsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLFVBQXNCLEVBQ3RCLGFBQTRCO1FBRDVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFaOUIsY0FBUyxHQUFvQyxFQUFFLENBQUM7UUFDaEQsa0JBQWEsR0FBb0MsRUFBRSxDQUFDO1FBR3BELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBUzNELENBQUM7SUFQTCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBT0QsTUFBTSxDQUFJLE9BQU87UUFDZixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUssQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ25DLElB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QU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OytHQWhIVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQURMLE1BQU07NEZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENlbnRyaWZ1Z2UgfSBmcm9tICdjZW50cmlmdWdlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnY2VudHJpZnVnZS9idWlsZC9zdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBDZW50cmlmdWdvQ29uZmlnIHtcbiAgdG9rZW46IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQ2VudHJpZnVnb1NlcnZpY2Uge1xuICBwcml2YXRlIGNoYW5uZWxzJDogeyBba2V5OiBzdHJpbmddOiBTdWJqZWN0PGFueT4gfSA9IHt9O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IHsgW2tleTogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgcHJpdmF0ZSBjZW50cmlmdWdlOiBDZW50cmlmdWdlO1xuICBwcml2YXRlIGluaXRpYWxpemVFbmdpbmVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIGNvbm5lY3RlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBnZXQgY29ubmVjdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWRTdWJqZWN0O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgKSB7IH1cblxuICBsaXN0ZW48VD4oY2hhbm5lbCk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChjaGFubmVsIGluIHRoaXMuY2hhbm5lbHMkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gICAgfVxuXG4gICAgdGhpcy5jaGFubmVscyRbY2hhbm5lbF0gPSBuZXcgU3ViamVjdDxUPigpO1xuICAgIHRoaXMuY29ubmVjdCgpLnN1YnNjcmliZShjb25uZWN0ZWQgPT4ge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdID0gdGhpcy5hZGRFbmdpbmVTdWJzY3JpcHRpb24oY2hhbm5lbCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gIH1cblxuICB1bnN1YnNjcmliZShjaGFubmVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdLnVuc3Vic2NyaWJlKCk7XG4gICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdO1xuICAgIH1cbiAgICBpZiAodGhpcy5jaGFubmVscyRbY2hhbm5lbF0pIHtcbiAgICAgIHRoaXMuY2hhbm5lbHMkW2NoYW5uZWxdLmNvbXBsZXRlKCk7XG4gICAgICBkZWxldGUgdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldDxDZW50cmlmdWdvQ29uZmlnPihgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2NlbnRyaWZ1Z29fdjIvYClcbiAgICAgICAgLnN1YnNjcmliZShjb25maWcgPT4ge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZSh7XG4gICAgICAgICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS5nZXQoJ2NlbnRyaWZ1Z29VcmwnKSxcbiAgICAgICAgICAgIHRva2VuOiBjb25maWcudG9rZW4sXG4gICAgICAgICAgICB0cmFuc3BvcnRzOiBbJ3dlYnNvY2tldCddXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jZW50cmlmdWdlLm9uKCdjb25uZWN0ZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVFbmdpbmVTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RlZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNlbnRyaWZ1Z2Uub24oJ2Rpc2Nvbm5lY3RlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jZW50cmlmdWdlLmNvbm5lY3QoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QucGlwZShmaWx0ZXIoaXRlbSA9PiBCb29sZWFuKGl0ZW0pKSwgdGFrZSgxKSk7XG4gIH1cblxuICBhc3luYyBwdWJsaXNoKGNoYW5uZWw6IHN0cmluZywgbWVzc2FnZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBjb25uZWN0ZWQgPSBhd2FpdCB0aGlzLmNvbm5lY3QoKS5waXBlKGZpbHRlcihpdGVtID0+IEJvb2xlYW4oaXRlbSkpLCB0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICBpZiAoIWNvbm5lY3RlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDZW50cmlmdWdlIGNvbm5lY3Rpb24gZXJyb3InKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2VudHJpZnVnZS5wdWJsaXNoKGNoYW5uZWwsIG1lc3NhZ2UpO1xuICB9XG5cbiAgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNlbnRyaWZ1Z2UuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBjaGFubmVsIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbm5lbHMkKSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZShjaGFubmVsKTtcbiAgICB9XG4gICAgdGhpcy5jaGFubmVscyQgPSB7fTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVuZ2luZShjb25maWc6IHtcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIHRyYW5zcG9ydHM6IHN0cmluZ1tdXG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmNlbnRyaWZ1Z2UgPSBuZXcgQ2VudHJpZnVnZShjb25maWcudXJsLCB7XG4gICAgICB0b2tlbjogY29uZmlnLnRva2VuLFxuICAgICAgZGVidWc6IHRydWUsXG4gICAgfSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuY2VudHJpZnVnZS5fZGVidWdFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFkZEVuZ2luZVN1YnNjcmlwdGlvbihjaGFubmVsOiBzdHJpbmcpOiBTdWJzY3JpcHRpb24ge1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuY2VudHJpZnVnZS5uZXdTdWJzY3JpcHRpb24oY2hhbm5lbCk7XG4gICAgc3ViLm9uKCdwdWJsaWNhdGlvbicsIGN0eCA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVNZXNzYWdlKGNoYW5uZWwsIGN0eC5kYXRhKTtcbiAgICB9KTtcbiAgICBzdWIuc3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIHN1YjtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1lc3NhZ2UoY2hhbm5lbDogc3RyaW5nLCBtZXNzYWdlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hhbm5lbHMkW2NoYW5uZWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jaGFubmVscyRbY2hhbm5lbF0ubmV4dChtZXNzYWdlKTtcbiAgfVxufVxuIl19
|
|
122
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ConfigService }, { type: undefined, decorators: [{
|
|
123
|
+
type: Inject,
|
|
124
|
+
args: [PLATFORM_ID]
|
|
125
|
+
}] }]; } });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudHJpZnVnby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvY2VudHJpZnVnby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRSxPQUFPLEVBQU0sYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFPcEQsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLFVBQXNCLEVBQ3RCLGFBQTRCLEVBQ1AsVUFBa0I7UUFGdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNQLGVBQVUsR0FBVixVQUFVLENBQVE7UUFiekMsY0FBUyxHQUFvQyxFQUFFLENBQUM7UUFDaEQsa0JBQWEsR0FBb0MsRUFBRSxDQUFDO1FBR3BELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBVTNELENBQUM7SUFSTCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBUUQsTUFBTSxDQUFJLE9BQU87UUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZDLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQy9CLFFBQVEs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QUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzNDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztRQUNILGFBQWE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE9BQWU7UUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFlLEVBQUUsT0FBWTtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDOzsrR0FqSVUsaUJBQWlCLHlFQWNsQixXQUFXO21IQWRWLGlCQUFpQixjQURMLE1BQU07NEZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQWUzQixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBvZiwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDZW50cmlmdWdlIH0gZnJvbSAnY2VudHJpZnVnZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ2NlbnRyaWZ1Z2UvYnVpbGQvc3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbnRlcmZhY2UgQ2VudHJpZnVnb0NvbmZpZyB7XG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIENlbnRyaWZ1Z29TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFubmVscyQ6IHsgW2tleTogc3RyaW5nXTogU3ViamVjdDxhbnk+IH0gPSB7fTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XG4gIHByaXZhdGUgY2VudHJpZnVnZTogQ2VudHJpZnVnZTtcbiAgcHJpdmF0ZSBpbml0aWFsaXplRW5naW5lU3ViamVjdDogUmVwbGF5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSBjb25uZWN0ZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgZ2V0IGNvbm5lY3RlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkU3ViamVjdDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBzdHJpbmcsXG4gICkgeyB9XG5cbiAgbGlzdGVuPFQ+KGNoYW5uZWwpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgIG9ic2VydmVyLmVycm9yKCdDZW50cmlmdWdvIGlzIG5vdCBhdmFpbGFibGUgaW4gc3NyIG1vZGUnKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGFubmVsIGluIHRoaXMuY2hhbm5lbHMkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gICAgfVxuXG4gICAgdGhpcy5jaGFubmVscyRbY2hhbm5lbF0gPSBuZXcgU3ViamVjdDxUPigpO1xuICAgIHRoaXMuY29ubmVjdCgpLnN1YnNjcmliZShjb25uZWN0ZWQgPT4ge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdID0gdGhpcy5hZGRFbmdpbmVTdWJzY3JpcHRpb24oY2hhbm5lbCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gIH1cblxuICB1bnN1YnNjcmliZShjaGFubmVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uc1tjaGFubmVsXSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdLnVuc3Vic2NyaWJlKCk7XG4gICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2NoYW5uZWxdO1xuICAgIH1cbiAgICBpZiAodGhpcy5jaGFubmVscyRbY2hhbm5lbF0pIHtcbiAgICAgIHRoaXMuY2hhbm5lbHMkW2NoYW5uZWxdLmNvbXBsZXRlKCk7XG4gICAgICBkZWxldGUgdGhpcy5jaGFubmVscyRbY2hhbm5lbF07XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgIG9ic2VydmVyLmVycm9yKCdDZW50cmlmdWdvIGlzIG5vdCBhdmFpbGFibGUgaW4gc3NyIG1vZGUnKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pbml0aWFsaXplRW5naW5lU3ViamVjdCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplRW5naW5lU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0PENlbnRyaWZ1Z29Db25maWc+KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvY2VudHJpZnVnb192Mi9gKVxuICAgICAgICAuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplRW5naW5lKHtcbiAgICAgICAgICAgIHVybDogdGhpcy5jb25maWdTZXJ2aWNlLmdldCgnY2VudHJpZnVnb1VybCcpLFxuICAgICAgICAgICAgdG9rZW46IGNvbmZpZy50b2tlbixcbiAgICAgICAgICAgIHRyYW5zcG9ydHM6IFsnd2Vic29ja2V0J11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNlbnRyaWZ1Z2Uub24oJ2Nvbm5lY3RlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2VudHJpZnVnZS5vbignZGlzY29ubmVjdGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0ZWRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRW5naW5lU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNlbnRyaWZ1Z2UuY29ubmVjdCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplRW5naW5lU3ViamVjdC5waXBlKGZpbHRlcihpdGVtID0+IEJvb2xlYW4oaXRlbSkpLCB0YWtlKDEpKTtcbiAgfVxuXG4gIGFzeW5jIHB1Ymxpc2goY2hhbm5lbDogc3RyaW5nLCBtZXNzYWdlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDZW50cmlmdWdvIGlzIG5vdCBhdmFpbGFibGUgaW4gc3NyIG1vZGUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25uZWN0ZWQgPSBhd2FpdCB0aGlzLmNvbm5lY3QoKS5waXBlKGZpbHRlcihpdGVtID0+IEJvb2xlYW4oaXRlbSkpLCB0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICBpZiAoIWNvbm5lY3RlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDZW50cmlmdWdlIGNvbm5lY3Rpb24gZXJyb3InKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2VudHJpZnVnZS5wdWJsaXNoKGNoYW5uZWwsIG1lc3NhZ2UpO1xuICB9XG5cbiAgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNlbnRyaWZ1Z2UuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUVuZ2luZVN1YmplY3QgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBjaGFubmVsIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbm5lbHMkKSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZShjaGFubmVsKTtcbiAgICB9XG4gICAgdGhpcy5jaGFubmVscyQgPSB7fTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVuZ2luZShjb25maWc6IHtcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIHRyYW5zcG9ydHM6IHN0cmluZ1tdXG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmNlbnRyaWZ1Z2UgPSBuZXcgQ2VudHJpZnVnZShjb25maWcudXJsLCB7XG4gICAgICB0b2tlbjogY29uZmlnLnRva2VuLFxuICAgICAgZGVidWc6IHRydWUsXG4gICAgfSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuY2VudHJpZnVnZS5fZGVidWdFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFkZEVuZ2luZVN1YnNjcmlwdGlvbihjaGFubmVsOiBzdHJpbmcpOiBTdWJzY3JpcHRpb24ge1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuY2VudHJpZnVnZS5uZXdTdWJzY3JpcHRpb24oY2hhbm5lbCk7XG4gICAgc3ViLm9uKCdwdWJsaWNhdGlvbicsIGN0eCA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVNZXNzYWdlKGNoYW5uZWwsIGN0eC5kYXRhKTtcbiAgICB9KTtcbiAgICBzdWIuc3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIHN1YjtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1lc3NhZ2UoY2hhbm5lbDogc3RyaW5nLCBtZXNzYWdlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hhbm5lbHMkW2NoYW5uZWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jaGFubmVscyRbY2hhbm5lbF0ubmV4dChtZXNzYWdlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { DeviceInfo, DeviceTheme } from '../models/device-info';
|
|
3
|
+
import { UAParser } from "ua-parser-js";
|
|
4
|
+
import * as FingerPrint from '@fingerprintjs/fingerprintjs';
|
|
5
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class DeviceInfoService {
|
|
8
|
+
constructor(platform) {
|
|
9
|
+
this.platform = platform;
|
|
10
|
+
}
|
|
11
|
+
async get() {
|
|
12
|
+
const fp = await FingerPrint.load();
|
|
13
|
+
const fingerprint = await fp.get();
|
|
14
|
+
const parser = new UAParser(window.navigator.userAgent);
|
|
15
|
+
return new DeviceInfo({
|
|
16
|
+
deviceId: fingerprint.visitorId,
|
|
17
|
+
osName: parser.getOS().name,
|
|
18
|
+
osVersion: parser.getOS().version,
|
|
19
|
+
browserName: parser.getBrowser().name,
|
|
20
|
+
browserVersion: parser.getBrowser().version,
|
|
21
|
+
device: null,
|
|
22
|
+
...(isPlatformBrowser(this.platform)
|
|
23
|
+
? {
|
|
24
|
+
language: window.navigator.language,
|
|
25
|
+
theme: window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
26
|
+
? DeviceTheme.dark
|
|
27
|
+
: window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches
|
|
28
|
+
? DeviceTheme.light
|
|
29
|
+
: null,
|
|
30
|
+
}
|
|
31
|
+
: {})
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
DeviceInfoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DeviceInfoService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
|
+
DeviceInfoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DeviceInfoService, providedIn: 'root' });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DeviceInfoService, decorators: [{
|
|
38
|
+
type: Injectable,
|
|
39
|
+
args: [{ providedIn: 'root' }]
|
|
40
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
41
|
+
type: Inject,
|
|
42
|
+
args: [PLATFORM_ID]
|
|
43
|
+
}] }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWluZm8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL2RldmljZS1pbmZvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN2QyxPQUFPLEtBQUssV0FBVyxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUdwRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQ2lDLFFBQWE7UUFBYixhQUFRLEdBQVIsUUFBUSxDQUFLO0lBRTlDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNwQixRQUFRLEVBQUUsV0FBVyxDQUFDLFNBQVM7WUFDL0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJO1lBQzNCLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTztZQUNqQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUk7WUFDckMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPO1lBQzNDLE1BQU0sRUFBRSxJQUFJO1lBQ1osR0FBRyxDQUNELGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQztvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRO29CQUNuQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTzt3QkFDbkYsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO3dCQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLENBQUMsT0FBTzs0QkFDakYsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLOzRCQUNuQixDQUFDLENBQUMsSUFBSTtpQkFDVDtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUNMO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBOUJVLGlCQUFpQixrQkFFbEIsV0FBVzttSEFGVixpQkFBaUIsY0FETCxNQUFNOzRGQUNsQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzswQkFHM0IsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGV2aWNlSW5mbywgRGV2aWNlVGhlbWUgfSBmcm9tICcuLi9tb2RlbHMvZGV2aWNlLWluZm8nO1xuaW1wb3J0IHsgVUFQYXJzZXIgfSBmcm9tIFwidWEtcGFyc2VyLWpzXCJcbmltcG9ydCAqIGFzIEZpbmdlclByaW50IGZyb20gJ0BmaW5nZXJwcmludGpzL2ZpbmdlcnByaW50anMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VJbmZvU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByb3RlY3RlZCBwbGF0Zm9ybTogYW55XG4gICkge1xuICB9XG5cbiAgYXN5bmMgZ2V0KCk6IFByb21pc2U8RGV2aWNlSW5mbz4ge1xuICAgIGNvbnN0IGZwID0gYXdhaXQgRmluZ2VyUHJpbnQubG9hZCgpO1xuICAgIGNvbnN0IGZpbmdlcnByaW50ID0gYXdhaXQgZnAuZ2V0KCk7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFVBUGFyc2VyKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICByZXR1cm4gbmV3IERldmljZUluZm8oe1xuICAgICAgZGV2aWNlSWQ6IGZpbmdlcnByaW50LnZpc2l0b3JJZCxcbiAgICAgIG9zTmFtZTogcGFyc2VyLmdldE9TKCkubmFtZSxcbiAgICAgIG9zVmVyc2lvbjogcGFyc2VyLmdldE9TKCkudmVyc2lvbixcbiAgICAgIGJyb3dzZXJOYW1lOiBwYXJzZXIuZ2V0QnJvd3NlcigpLm5hbWUsXG4gICAgICBicm93c2VyVmVyc2lvbjogcGFyc2VyLmdldEJyb3dzZXIoKS52ZXJzaW9uLFxuICAgICAgZGV2aWNlOiBudWxsLFxuICAgICAgLi4uKFxuICAgICAgICBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtKVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGxhbmd1YWdlOiB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlLFxuICAgICAgICAgICAgdGhlbWU6IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlc1xuICAgICAgICAgICAgICA/IERldmljZVRoZW1lLmRhcmtcbiAgICAgICAgICAgICAgOiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCknKS5tYXRjaGVzXG4gICAgICAgICAgICAgID8gRGV2aWNlVGhlbWUubGlnaHRcbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fVxuICAgICAgKVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -2,4 +2,5 @@ export { BaseService } from './base.service';
|
|
|
2
2
|
export { CentrifugoService } from './centrifugo.service';
|
|
3
3
|
export { ConfigService, CONFIG_DATA } from './config.service';
|
|
4
4
|
export * from './base.controller';
|
|
5
|
-
|
|
5
|
+
export { DeviceInfoService } from './device-info.service';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgQ2VudHJpZnVnb1NlcnZpY2UgfSBmcm9tICcuL2NlbnRyaWZ1Z28uc2VydmljZSc7XG5leHBvcnQgeyBDb25maWdTZXJ2aWNlLCBDT05GSUdfREFUQSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlLmNvbnRyb2xsZXInO1xuZXhwb3J0IHsgRGV2aWNlSW5mb1NlcnZpY2UgfSBmcm9tICcuL2RldmljZS1pbmZvLnNlcnZpY2UnO1xuIl19
|