@homebridge-plugins/homebridge-smarthq 0.5.0-beta.8 → 0.5.0-beta.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/dist/devices/refrigerator.d.ts +1 -1
- package/dist/devices/refrigerator.d.ts.map +1 -1
- package/dist/devices/refrigerator.js +64 -114
- package/dist/devices/refrigerator.js.map +1 -1
- package/docs/classes/SmartHQPlatform.html +8 -8
- package/docs/interfaces/DeviceOptions.html +2 -2
- package/docs/interfaces/SmartHQPlatformConfig.html +2 -2
- package/docs/interfaces/SmartHqContext.html +2 -2
- package/docs/interfaces/SmartHqERDResponse.html +2 -2
- package/docs/interfaces/credentials.html +2 -2
- package/docs/interfaces/devicesConfig.html +2 -2
- package/docs/interfaces/options.html +2 -2
- package/docs/variables/API_URL.html +1 -1
- package/docs/variables/ERD_CODES.html +1 -1
- package/docs/variables/ERD_TYPES.html +1 -1
- package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -1
- package/docs/variables/LOGIN_URL.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_ID.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -1
- package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -1
- package/docs/variables/PLATFORM_NAME.html +1 -1
- package/docs/variables/PLUGIN_NAME.html +1 -1
- package/docs/variables/SECURE_URL.html +1 -1
- package/docs/variables/default.html +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ export declare class SmartHQRefrigerator extends deviceBase {
|
|
|
8
8
|
SensorUpdateInProgress: boolean;
|
|
9
9
|
deviceStatus: any;
|
|
10
10
|
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
11
|
-
readErd(erd: string): Promise<string>;
|
|
11
|
+
readErd(erd: string): Promise<string | undefined>;
|
|
12
12
|
writeErd(erd: string, value: string | boolean): Promise<undefined>;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=refrigerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refrigerator.d.ts","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,mBAAoB,SAAQ,UAAU;IAM/C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAN3D,sBAAsB,EAAG,OAAO,CAAA;IAChC,YAAY,EAAE,GAAG,CAAA;gBAGN,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"refrigerator.d.ts","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,mBAAoB,SAAQ,UAAU;IAM/C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAN3D,sBAAsB,EAAG,OAAO,CAAA;IAChC,YAAY,EAAE,GAAG,CAAA;gBAGN,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAoJrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgBjD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
|
|
@@ -19,14 +19,8 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
19
19
|
doorSensorService
|
|
20
20
|
.getCharacteristic(this.platform.Characteristic.ContactSensorState)
|
|
21
21
|
.onGet(async () => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return Number.parseInt(r) !== 0;
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
this.warnLog?.(`Refrigerator Door Sensor readErd error: ${error?.message ?? error}`);
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
22
|
+
const r = await this.readErd(ERD_TYPES.DOOR_STATUS);
|
|
23
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
30
24
|
});
|
|
31
25
|
// Fridge Temperature Sensor
|
|
32
26
|
const fridgeTempService = this.accessory.getService('Fridge Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Fridge Temperature', 'FridgeTemp');
|
|
@@ -34,36 +28,26 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
34
28
|
fridgeTempService
|
|
35
29
|
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
36
30
|
.onGet(async () => {
|
|
31
|
+
const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
|
|
32
|
+
this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
|
|
33
|
+
// Check if ERD is supported
|
|
34
|
+
if (!r || r === 'undefined') {
|
|
35
|
+
return 2.8; // Default to ~37°F in Celsius if ERD not supported
|
|
36
|
+
}
|
|
37
|
+
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
37
38
|
try {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (!
|
|
42
|
-
|
|
43
|
-
return 2.8; // Default to ~37°F in Celsius
|
|
44
|
-
}
|
|
45
|
-
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
46
|
-
// Parse the JSON to access the fridge property
|
|
47
|
-
try {
|
|
48
|
-
const temps = JSON.parse(r);
|
|
49
|
-
const fridgeTempF = temps.fridge || temps.Fridge;
|
|
50
|
-
this.debugLog(`Fridge temp: ${fridgeTempF}°F`);
|
|
51
|
-
if (!fridgeTempF || Number.isNaN(Number(fridgeTempF))) {
|
|
52
|
-
this.warnLog?.(`Fridge Temperature: Failed to parse temperature from ${r}`);
|
|
53
|
-
return 2.8; // Default to ~37°F in Celsius
|
|
54
|
-
}
|
|
55
|
-
// Convert Fahrenheit to Celsius for HomeKit
|
|
56
|
-
const fridgeTempC = (Number(fridgeTempF) - 32) * 5 / 9;
|
|
57
|
-
return fridgeTempC;
|
|
58
|
-
}
|
|
59
|
-
catch (parseError) {
|
|
60
|
-
this.warnLog?.(`Fridge Temperature: JSON parse error: ${parseError}`);
|
|
61
|
-
return 2.8;
|
|
39
|
+
const temps = JSON.parse(r);
|
|
40
|
+
const fridgeTempF = temps.fridge || temps.Fridge;
|
|
41
|
+
this.debugLog(`Fridge temp: ${fridgeTempF}°F`);
|
|
42
|
+
if (!fridgeTempF || Number.isNaN(Number(fridgeTempF))) {
|
|
43
|
+
return 2.8; // Default if can't parse
|
|
62
44
|
}
|
|
45
|
+
// Convert Fahrenheit to Celsius for HomeKit
|
|
46
|
+
return (Number(fridgeTempF) - 32) * 5 / 9;
|
|
63
47
|
}
|
|
64
|
-
catch (
|
|
65
|
-
this.
|
|
66
|
-
return 2.8;
|
|
48
|
+
catch (parseError) {
|
|
49
|
+
this.debugLog(`Fridge Temperature: JSON parse error, using default`);
|
|
50
|
+
return 2.8;
|
|
67
51
|
}
|
|
68
52
|
});
|
|
69
53
|
// Freezer Temperature Sensor
|
|
@@ -72,35 +56,26 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
72
56
|
freezerTempService
|
|
73
57
|
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
74
58
|
.onGet(async () => {
|
|
59
|
+
const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
|
|
60
|
+
this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
|
|
61
|
+
// Check if ERD is supported
|
|
62
|
+
if (!r || r === 'undefined') {
|
|
63
|
+
return -17.8; // Default to ~0°F in Celsius if ERD not supported
|
|
64
|
+
}
|
|
65
|
+
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
75
66
|
try {
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (!
|
|
80
|
-
|
|
81
|
-
return -17.8; // Default to ~0°F in Celsius
|
|
82
|
-
}
|
|
83
|
-
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
84
|
-
try {
|
|
85
|
-
const temps = JSON.parse(r);
|
|
86
|
-
const freezerTempF = temps.freezer || temps.Freezer;
|
|
87
|
-
this.debugLog(`Freezer temp: ${freezerTempF}°F`);
|
|
88
|
-
if (!freezerTempF || Number.isNaN(Number(freezerTempF))) {
|
|
89
|
-
this.warnLog?.(`Freezer Temperature: Failed to parse temperature from ${r}`);
|
|
90
|
-
return -17.8; // Default to ~0°F in Celsius
|
|
91
|
-
}
|
|
92
|
-
// Convert Fahrenheit to Celsius for HomeKit
|
|
93
|
-
const freezerTempC = (Number(freezerTempF) - 32) * 5 / 9;
|
|
94
|
-
return freezerTempC;
|
|
95
|
-
}
|
|
96
|
-
catch (parseError) {
|
|
97
|
-
this.warnLog?.(`Freezer Temperature: JSON parse error: ${parseError}`);
|
|
98
|
-
return -17.8;
|
|
67
|
+
const temps = JSON.parse(r);
|
|
68
|
+
const freezerTempF = temps.freezer || temps.Freezer;
|
|
69
|
+
this.debugLog(`Freezer temp: ${freezerTempF}°F`);
|
|
70
|
+
if (!freezerTempF || Number.isNaN(Number(freezerTempF))) {
|
|
71
|
+
return -17.8; // Default if can't parse
|
|
99
72
|
}
|
|
73
|
+
// Convert Fahrenheit to Celsius for HomeKit
|
|
74
|
+
return (Number(freezerTempF) - 32) * 5 / 9;
|
|
100
75
|
}
|
|
101
|
-
catch (
|
|
102
|
-
this.
|
|
103
|
-
return -17.8;
|
|
76
|
+
catch (parseError) {
|
|
77
|
+
this.debugLog(`Freezer Temperature: JSON parse error, using default`);
|
|
78
|
+
return -17.8;
|
|
104
79
|
}
|
|
105
80
|
});
|
|
106
81
|
// Air Filter Maintenance
|
|
@@ -109,16 +84,13 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
109
84
|
filterService
|
|
110
85
|
.getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
|
|
111
86
|
.onGet(async () => {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return Number.parseInt(r) === 1
|
|
115
|
-
? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
|
|
116
|
-
: this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
this.warnLog?.(`Air Filter Status readErd error: ${error?.message ?? error}`);
|
|
87
|
+
const r = await this.readErd(ERD_TYPES.AIR_FILTER_STATUS);
|
|
88
|
+
if (!r) {
|
|
120
89
|
return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
121
90
|
}
|
|
91
|
+
return Number.parseInt(r) === 1
|
|
92
|
+
? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
|
|
93
|
+
: this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
122
94
|
});
|
|
123
95
|
// Ice Maker Control (Switch)
|
|
124
96
|
const iceMakerService = this.accessory.getService('Ice Maker') ?? this.accessory.addService(this.platform.Service.Switch, 'Ice Maker', 'IceMaker');
|
|
@@ -126,22 +98,11 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
126
98
|
iceMakerService
|
|
127
99
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
128
100
|
.onGet(async () => {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return Number.parseInt(r) !== 0;
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
this.warnLog?.(`Ice Maker Control readErd error: ${error?.message ?? error}`);
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
101
|
+
const r = await this.readErd(ERD_TYPES.ICE_MAKER_CONTROL);
|
|
102
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
137
103
|
})
|
|
138
104
|
.onSet(async (value) => {
|
|
139
|
-
|
|
140
|
-
await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
this.warnLog?.(`Ice Maker Control writeErd error: ${error?.message ?? error}`);
|
|
144
|
-
}
|
|
105
|
+
await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
|
|
145
106
|
});
|
|
146
107
|
// Turbo Cool Switch
|
|
147
108
|
const turboCoolService = this.accessory.getService('Turbo Cool') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Cool', 'TurboCool');
|
|
@@ -149,22 +110,11 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
149
110
|
turboCoolService
|
|
150
111
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
151
112
|
.onGet(async () => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return Number.parseInt(r) !== 0;
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
this.warnLog?.(`Turbo Cool Status readErd error: ${error?.message ?? error}`);
|
|
158
|
-
return false;
|
|
159
|
-
}
|
|
113
|
+
const r = await this.readErd(ERD_TYPES.TURBO_COOL_STATUS);
|
|
114
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
160
115
|
})
|
|
161
116
|
.onSet(async (value) => {
|
|
162
|
-
|
|
163
|
-
await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
|
|
164
|
-
}
|
|
165
|
-
catch (error) {
|
|
166
|
-
this.warnLog?.(`Turbo Cool Status writeErd error: ${error?.message ?? error}`);
|
|
167
|
-
}
|
|
117
|
+
await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
|
|
168
118
|
});
|
|
169
119
|
// Turbo Freeze Switch
|
|
170
120
|
const turboFreezeService = this.accessory.getService('Turbo Freeze') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Freeze', 'TurboFreeze');
|
|
@@ -172,22 +122,11 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
172
122
|
turboFreezeService
|
|
173
123
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
174
124
|
.onGet(async () => {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
return Number.parseInt(r) !== 0;
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
this.warnLog?.(`Turbo Freeze Status readErd error: ${error?.message ?? error}`);
|
|
181
|
-
return false;
|
|
182
|
-
}
|
|
125
|
+
const r = await this.readErd(ERD_TYPES.TURBO_FREEZE_STATUS);
|
|
126
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
183
127
|
})
|
|
184
128
|
.onSet(async (value) => {
|
|
185
|
-
|
|
186
|
-
await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
this.warnLog?.(`Turbo Freeze Status writeErd error: ${error?.message ?? error}`);
|
|
190
|
-
}
|
|
129
|
+
await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
|
|
191
130
|
});
|
|
192
131
|
// this is subject we use to track when we need to POST changes to the SmartHQ API
|
|
193
132
|
this.SensorUpdateInProgress = false;
|
|
@@ -201,9 +140,20 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
201
140
|
});
|
|
202
141
|
}
|
|
203
142
|
async readErd(erd) {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
143
|
+
try {
|
|
144
|
+
const d = await axios
|
|
145
|
+
.get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
|
|
146
|
+
return String(d.data.value);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
// 400 means ERD not supported by this appliance model - return undefined silently
|
|
150
|
+
if (error?.response?.status === 400) {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
// For other errors, log and return undefined
|
|
154
|
+
this.warnLog?.(`readErd ${erd} error: ${error?.message ?? error}`);
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
207
157
|
}
|
|
208
158
|
async writeErd(erd, value) {
|
|
209
159
|
await axios
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IAMtC;IAEA;IAPX,UAAU;IACV,sBAAsB,CAAU;IAChC,YAAY,CAAK;IAEjB,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE5F,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAA;QACnL,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAC3F,iBAAiB;aACd,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,
|
|
1
|
+
{"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IAMtC;IAEA;IAPX,UAAU;IACV,sBAAsB,CAAU;IAChC,YAAY,CAAK;IAEjB,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE5F,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAA;QACnL,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAC3F,iBAAiB;aACd,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACnD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEJ,4BAA4B;QAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAA;QACnL,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;QAC5F,iBAAiB;aACd,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAA;YAE3D,4BAA4B;YAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAA,CAAC,mDAAmD;YAChE,CAAC;YAED,uFAAuF;YACvF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;gBAChD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,WAAW,IAAI,CAAC,CAAA;gBAE9C,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;oBACtD,OAAO,GAAG,CAAA,CAAC,yBAAyB;gBACtC,CAAC;gBAED,4CAA4C;gBAC5C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC3C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAA;gBACpE,OAAO,GAAG,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,6BAA6B;QAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAA;QACvL,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;QAC9F,kBAAkB;aACf,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAA;YAE3D,4BAA4B;YAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAA,CAAC,kDAAkD;YACjE,CAAC;YAED,uFAAuF;YACvF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAA;gBACnD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,YAAY,IAAI,CAAC,CAAA;gBAEhD,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;oBACxD,OAAO,CAAC,IAAI,CAAA,CAAC,yBAAyB;gBACxC,CAAC;gBAED,4CAA4C;gBAC5C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,sDAAsD,CAAC,CAAA;gBACrE,OAAO,CAAC,IAAI,CAAA;YACd,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,yBAAyB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;QAC9J,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAChF,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC;aACtE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;YACzD,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAA;YACtE,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,aAAa;gBACnE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAA;QACnE,CAAC,CAAC,CAAA;QAEJ,6BAA6B;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;QAClJ,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACjF,eAAe;aACZ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;YACzD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAgB,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEJ,oBAAoB;QACpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;QACtJ,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACnF,gBAAgB;aACb,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;YACzD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAgB,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEJ,sBAAsB;QACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;QAC9J,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QACvF,kBAAkB;aACf,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,KAAgB,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QAEJ,kFAAkF;QAClF,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAA;QAEnC,4CAA4C;QAC5C,uBAAuB;QAEvB,2BAA2B;QAC3B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;aAClD,SAAS,CAAC,KAAK,IAAI,EAAE;YACpB,6BAA6B;QAC/B,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,KAAK;iBAClB,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,CAAC,CAAA;YAC5E,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,kFAAkF;YAClF,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpC,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,6CAA6C;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,WAAW,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;YAClE,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,KAAuB;QACjD,MAAM,KAAK;aACR,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,EAAE;YAC1E,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;YACrC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW;YACtD,GAAG;YACH,KAAK,EAAE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;SAClE,CAAC,CAAA;QACJ,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
|