jooby-codec 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Command.d.ts +13 -4
- package/dist/Command.js +7 -3
- package/dist/Command.js.map +1 -1
- package/dist/CommandBinaryBuffer.d.ts +53 -23
- package/dist/CommandBinaryBuffer.js +111 -58
- package/dist/CommandBinaryBuffer.js.map +1 -1
- package/dist/commands/downlink/ExAbsArchiveDaysMC.d.ts +2 -2
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js +6 -6
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js.map +1 -1
- package/dist/commands/downlink/ExAbsArchiveHoursMC.d.ts +2 -2
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js +6 -6
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js.map +1 -1
- package/dist/commands/downlink/ExAbsCurrentMC.d.ts +30 -0
- package/dist/commands/downlink/ExAbsCurrentMC.js +43 -0
- package/dist/commands/downlink/ExAbsCurrentMC.js.map +1 -0
- package/dist/commands/downlink/GetArchiveDaysMC.d.ts +2 -2
- package/dist/commands/downlink/GetArchiveDaysMC.js +6 -6
- package/dist/commands/downlink/GetArchiveDaysMC.js.map +1 -1
- package/dist/commands/downlink/GetArchiveHoursMC.d.ts +2 -2
- package/dist/commands/downlink/GetArchiveHoursMC.js +6 -6
- package/dist/commands/downlink/GetArchiveHoursMC.js.map +1 -1
- package/dist/commands/downlink/GetCurrentMC.d.ts +25 -0
- package/dist/commands/downlink/GetCurrentMC.js +41 -0
- package/dist/commands/downlink/GetCurrentMC.js.map +1 -0
- package/dist/commands/downlink/SetParameter.d.ts +7 -1
- package/dist/commands/downlink/SetParameter.js +11 -0
- package/dist/commands/downlink/SetParameter.js.map +1 -1
- package/dist/commands/downlink/index.d.ts +2 -0
- package/dist/commands/downlink/index.js +2 -0
- package/dist/commands/downlink/index.js.map +1 -1
- package/dist/commands/uplink/DataDayMC.d.ts +2 -2
- package/dist/commands/uplink/DataDayMC.js +8 -8
- package/dist/commands/uplink/DataDayMC.js.map +1 -1
- package/dist/commands/uplink/DataHourMC.d.ts +10 -4
- package/dist/commands/uplink/DataHourMC.js +13 -35
- package/dist/commands/uplink/DataHourMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsArchiveDaysMC.d.ts +9 -38
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js +16 -38
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsArchiveHoursMC.d.ts +13 -7
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js +24 -60
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsCurrentMC.d.ts +15 -0
- package/dist/commands/uplink/ExAbsCurrentMC.js +30 -0
- package/dist/commands/uplink/ExAbsCurrentMC.js.map +1 -0
- package/dist/commands/uplink/ExAbsDayMC.d.ts +8 -3
- package/dist/commands/uplink/ExAbsDayMC.js +10 -36
- package/dist/commands/uplink/ExAbsDayMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsHourMC.d.ts +58 -6
- package/dist/commands/uplink/ExAbsHourMC.js +45 -50
- package/dist/commands/uplink/ExAbsHourMC.js.map +1 -1
- package/dist/commands/uplink/GetArchiveDaysMC.d.ts +5 -29
- package/dist/commands/uplink/GetArchiveDaysMC.js +11 -37
- package/dist/commands/uplink/GetArchiveDaysMC.js.map +1 -1
- package/dist/commands/uplink/GetArchiveHoursMC.d.ts +47 -7
- package/dist/commands/uplink/GetArchiveHoursMC.js +43 -23
- package/dist/commands/uplink/GetArchiveHoursMC.js.map +1 -1
- package/dist/commands/uplink/GetCurrentMC.d.ts +25 -9
- package/dist/commands/uplink/GetCurrentMC.js +59 -3
- package/dist/commands/uplink/GetCurrentMC.js.map +1 -1
- package/dist/commands/uplink/NewEvent.d.ts +1 -1
- package/dist/commands/uplink/NewEvent.js +1 -1
- package/dist/commands/uplink/index.d.ts +1 -0
- package/dist/commands/uplink/index.js +1 -0
- package/dist/commands/uplink/index.js.map +1 -1
- package/dist/constants/deviceParameters.d.ts +5 -1
- package/dist/constants/deviceParameters.js +5 -1
- package/dist/constants/deviceParameters.js.map +1 -1
- package/dist/utils/bitSet.d.ts +2 -2
- package/dist/utils/bitSet.js +2 -2
- package/dist/utils/message.d.ts +8 -0
- package/dist/utils/message.js +1 -1
- package/dist/utils/message.js.map +1 -1
- package/package.json +1 -1
package/dist/Command.d.ts
CHANGED
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
import { IHexFormatOptions } from './utils/getHexFromBytes.js';
|
|
2
|
+
export interface ICommandExample {
|
|
3
|
+
name: string;
|
|
4
|
+
parameters?: object;
|
|
5
|
+
hardwareType?: number;
|
|
6
|
+
hex: {
|
|
7
|
+
header: string;
|
|
8
|
+
body: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export type TCommandExampleList = Array<ICommandExample>;
|
|
2
12
|
/**
|
|
3
13
|
* private
|
|
4
14
|
*/
|
|
5
|
-
declare class Command {
|
|
15
|
+
declare abstract class Command {
|
|
6
16
|
static id: number;
|
|
7
17
|
static directionType: unknown;
|
|
8
18
|
static title: string;
|
|
19
|
+
static examples: TCommandExampleList;
|
|
9
20
|
parameters: unknown;
|
|
10
21
|
/** Get command ID in hex format. */
|
|
11
22
|
static getId(): string;
|
|
12
23
|
/** Get command ID and title. */
|
|
13
24
|
static getName(): string;
|
|
14
25
|
/**
|
|
15
|
-
* Parse
|
|
16
|
-
* Should not be used directly, only from Command child.
|
|
26
|
+
* Parse body without header.
|
|
17
27
|
*
|
|
18
28
|
* @param data command in binary form
|
|
19
|
-
* @param commandsById
|
|
20
29
|
*
|
|
21
30
|
* @returns command instance
|
|
22
31
|
*/
|
package/dist/Command.js
CHANGED
|
@@ -15,14 +15,18 @@ class Command {
|
|
|
15
15
|
return `${this.directionType === UPLINK ? 'uplink' : 'downlink'} command ${this.getId()}:${this.title}`;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
* Parse
|
|
19
|
-
* Should not be used directly, only from Command child.
|
|
18
|
+
* Parse body without header.
|
|
20
19
|
*
|
|
21
20
|
* @param data command in binary form
|
|
22
|
-
* @param commandsById
|
|
23
21
|
*
|
|
24
22
|
* @returns command instance
|
|
25
23
|
*/
|
|
24
|
+
// static fromBytes ( data: Uint8Array ): Command {
|
|
25
|
+
// throw new Error('not implemented!');
|
|
26
|
+
// }
|
|
27
|
+
// static fromHex ( data: string ): Command {
|
|
28
|
+
// return this.fromBytes(getBytesFromHex(data));
|
|
29
|
+
// }
|
|
26
30
|
// static fromBytes ( data: Uint8Array, commandsById: any ): any {
|
|
27
31
|
// const headerData = header.fromBytes(data);
|
|
28
32
|
// if ( headerData.headerSize + headerData.commandSize < data.length ) {
|
package/dist/Command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../src/Command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,eAAoC,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAC,MAAM,EAAC,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../src/Command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,eAAoC,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAC,MAAM,EAAC,MAAM,+BAA+B,CAAC;AAiBrD;;GAEG;AACH,MAAe,OAAO;IAWlB,oCAAoC;IACpC,MAAM,CAAC,KAAK;QACR,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,gCAAgC;IAChC,MAAM,CAAC,OAAO;QACV,uEAAuE;QACvE,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,YAAY,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5G,CAAC;IAGD;;;;;;OAMG;IACH,mDAAmD;IACnD,2CAA2C;IAC3C,IAAI;IAEJ,6CAA6C;IAC7C,oDAAoD;IACpD,IAAI;IAEJ,kEAAkE;IAClE,iDAAiD;IAEjD,4EAA4E;IAC5E,2BAA2B;IAC3B,2IAA2I;IAC3I,aAAa;IACb,QAAQ;IAER,0DAA0D;IAE1D,wBAAwB;IACxB,2BAA2B;IAC3B,sEAAsE;IACtE,aAAa;IACb,QAAQ;IAER,oEAAoE;IACpE,gCAAgC;IAChC,4FAA4F;IAC5F,SAAS;IACT,IAAI;IAGJ;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAG,EAAU,EAAE,WAAwB;QACjD,MAAM,aAAa,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAErD,IAAK,WAAW,IAAI,aAAa,EAAG;YAChC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;YAErE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3B,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAE/C,OAAO,UAAU,CAAC;SACrB;QAED,8BAA8B;QAC9B,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,8BAA8B;IAC9B,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,kDAAkD;IAClD,OAAO;QACH,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAG,UAA6B,EAAE;QACnC,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAChD,CAAC;CACJ;AAGD,eAAe,OAAO,CAAC"}
|
|
@@ -13,54 +13,82 @@ export interface IBatteryVoltage {
|
|
|
13
13
|
*/
|
|
14
14
|
high: number | undefined;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Channel value hour diff
|
|
18
|
-
*/
|
|
19
|
-
export interface IHourDiff {
|
|
20
|
-
value: number;
|
|
21
|
-
hour: number;
|
|
22
|
-
seconds: number;
|
|
23
|
-
date: Date;
|
|
24
|
-
}
|
|
25
16
|
export interface IChannel {
|
|
26
17
|
/**
|
|
27
18
|
* Channel number.
|
|
28
19
|
*/
|
|
29
20
|
index: number;
|
|
21
|
+
}
|
|
22
|
+
export interface IChannelValue extends IChannel {
|
|
30
23
|
/**
|
|
31
24
|
* Pulse counter or absolute value of device channel.
|
|
32
25
|
*/
|
|
33
26
|
value: number;
|
|
27
|
+
}
|
|
28
|
+
export interface IChannelHours extends IChannelValue {
|
|
29
|
+
/**
|
|
30
|
+
* values differences between hours
|
|
31
|
+
*/
|
|
32
|
+
diff: Array<number>;
|
|
33
|
+
}
|
|
34
|
+
export interface IChannelHourAbsoluteValue extends IChannelHours {
|
|
35
|
+
/**
|
|
36
|
+
* Channel pulse coefficient - IPK in bytes.
|
|
37
|
+
*/
|
|
38
|
+
pulseCoefficient: number;
|
|
39
|
+
}
|
|
40
|
+
export interface IChannelDays extends IChannel {
|
|
41
|
+
dayList: Array<number>;
|
|
42
|
+
}
|
|
43
|
+
export interface IChannelAbsoluteValue extends IChannelValue {
|
|
44
|
+
/**
|
|
45
|
+
* Channel pulse coefficient - IPK in bytes.
|
|
46
|
+
*/
|
|
47
|
+
pulseCoefficient: number;
|
|
48
|
+
}
|
|
49
|
+
export interface IChannelArchiveDaysAbsolute extends IChannel {
|
|
34
50
|
/**
|
|
35
|
-
*
|
|
51
|
+
* values by days
|
|
36
52
|
*/
|
|
37
|
-
|
|
53
|
+
dayList: Array<number>;
|
|
38
54
|
/**
|
|
39
|
-
*
|
|
55
|
+
* Channel pulse coefficient - IPK in bytes.
|
|
40
56
|
*/
|
|
41
|
-
|
|
57
|
+
pulseCoefficient: number;
|
|
58
|
+
}
|
|
59
|
+
export interface IChannelArchiveDays extends IChannel {
|
|
42
60
|
/**
|
|
43
|
-
*
|
|
61
|
+
* values by days
|
|
44
62
|
*/
|
|
45
|
-
|
|
63
|
+
dayList: Array<number>;
|
|
46
64
|
}
|
|
47
65
|
/**
|
|
48
66
|
* Command specific byte array manipulation.
|
|
49
67
|
*/
|
|
50
68
|
declare class CommandBinaryBuffer extends BinaryBuffer {
|
|
69
|
+
/**
|
|
70
|
+
* Get amount of bytes necessary to store an extended value.
|
|
71
|
+
*
|
|
72
|
+
* @param bits - amount of bits of original value
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```js
|
|
76
|
+
* const bits = (16384).toString(2).length;
|
|
77
|
+
* const bytes = CommandBinaryBuffer.getExtendedValueSize(bits);
|
|
78
|
+
* // 16384 normally is stored in 2 bytes but for extended value 3 bytes are required
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
static getExtendedValueSize(bits: number): number;
|
|
51
82
|
getExtendedValue(): number;
|
|
52
83
|
setExtendedValue(value: number): void;
|
|
53
84
|
/**
|
|
54
85
|
* Get array of channel indexes.
|
|
55
|
-
*
|
|
56
|
-
* @param short - get 4 channelList or more
|
|
57
86
|
*/
|
|
58
|
-
getChannels(
|
|
87
|
+
getChannels(): Array<number>;
|
|
59
88
|
/**
|
|
60
89
|
* Set array of channel indexes.
|
|
61
|
-
*
|
|
62
90
|
*/
|
|
63
|
-
setChannels(channelList: Array<
|
|
91
|
+
setChannels(channelList: Array<IChannel>): void;
|
|
64
92
|
/**
|
|
65
93
|
* Retrieve device time from byte array.
|
|
66
94
|
*
|
|
@@ -92,9 +120,11 @@ declare class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
92
120
|
setBatterVoltage(batteryVoltage: IBatteryVoltage): void;
|
|
93
121
|
getChannelsValuesWithHourDiff(): {
|
|
94
122
|
hours: number;
|
|
95
|
-
|
|
96
|
-
|
|
123
|
+
startTime: number;
|
|
124
|
+
channelList: Array<IChannelHours>;
|
|
97
125
|
};
|
|
98
|
-
setChannelsValuesWithHourDiff(hours: number,
|
|
126
|
+
setChannelsValuesWithHourDiff(hours: number, startTime: number, channelList: Array<IChannelHours>): void;
|
|
127
|
+
getChannelsWithAbsoluteValues(): Array<IChannelAbsoluteValue>;
|
|
128
|
+
setChannelsWithAbsoluteValues(channelList: Array<IChannelAbsoluteValue>): void;
|
|
99
129
|
}
|
|
100
130
|
export default CommandBinaryBuffer;
|
|
@@ -4,21 +4,39 @@ const INITIAL_YEAR = 2000;
|
|
|
4
4
|
const MONTH_BIT_SIZE = 4;
|
|
5
5
|
const DATE_BIT_SIZE = 5;
|
|
6
6
|
const YEAR_START_INDEX = 1;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
7
|
+
const UNKNOWN_BATTERY_VOLTAGE = 4095;
|
|
8
|
+
const EXTEND_BIT_MASK = 0x80;
|
|
9
|
+
const LAST_BIT_INDEX = 7;
|
|
10
10
|
/**
|
|
11
11
|
* Command specific byte array manipulation.
|
|
12
12
|
*/
|
|
13
13
|
class CommandBinaryBuffer extends BinaryBuffer {
|
|
14
|
+
/**
|
|
15
|
+
* Get amount of bytes necessary to store an extended value.
|
|
16
|
+
*
|
|
17
|
+
* @param bits - amount of bits of original value
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```js
|
|
21
|
+
* const bits = (16384).toString(2).length;
|
|
22
|
+
* const bytes = CommandBinaryBuffer.getExtendedValueSize(bits);
|
|
23
|
+
* // 16384 normally is stored in 2 bytes but for extended value 3 bytes are required
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
static getExtendedValueSize(bits) {
|
|
27
|
+
const extBits = Math.ceil(bits / 7);
|
|
28
|
+
const totalBits = bits + extBits;
|
|
29
|
+
const extBytes = Math.ceil(totalBits / 8);
|
|
30
|
+
return extBytes;
|
|
31
|
+
}
|
|
14
32
|
getExtendedValue() {
|
|
15
33
|
let value = 0;
|
|
16
|
-
let
|
|
34
|
+
let isByteExtended = true;
|
|
17
35
|
// byte offset
|
|
18
36
|
let position = 0;
|
|
19
|
-
while (
|
|
37
|
+
while (isByteExtended && this.offset <= this.data.byteLength) {
|
|
20
38
|
const byte = this.getUint8();
|
|
21
|
-
|
|
39
|
+
isByteExtended = !!(byte & EXTEND_BIT_MASK);
|
|
22
40
|
value += (byte & 0x7f) << (7 * position);
|
|
23
41
|
++position;
|
|
24
42
|
}
|
|
@@ -32,7 +50,7 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
32
50
|
const data = [];
|
|
33
51
|
let encodedValue = value;
|
|
34
52
|
while (encodedValue) {
|
|
35
|
-
data.push(
|
|
53
|
+
data.push(EXTEND_BIT_MASK | (encodedValue & 0x7f));
|
|
36
54
|
encodedValue >>= 7;
|
|
37
55
|
}
|
|
38
56
|
const lastByte = data.pop();
|
|
@@ -44,41 +62,65 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
44
62
|
}
|
|
45
63
|
/**
|
|
46
64
|
* Get array of channel indexes.
|
|
47
|
-
*
|
|
48
|
-
* @param short - get 4 channelList or more
|
|
49
65
|
*/
|
|
50
|
-
getChannels(
|
|
66
|
+
getChannels() {
|
|
51
67
|
const channelList = [];
|
|
52
|
-
let extended =
|
|
68
|
+
let extended = true;
|
|
53
69
|
let channelIndex = 0;
|
|
54
|
-
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
55
71
|
while (extended) {
|
|
56
72
|
const byte = this.getUint8();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
73
|
+
// original 0b00000001, reverse it to get first - `1`
|
|
74
|
+
const bits = byte.toString(2).padStart(LAST_BIT_INDEX + 1, '0').split('').reverse();
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
76
|
+
bits.forEach((bit, index) => {
|
|
77
|
+
const value = Number(bit);
|
|
78
|
+
if (index === LAST_BIT_INDEX) {
|
|
79
|
+
// highest bit in byte
|
|
80
|
+
extended = !!value;
|
|
61
81
|
}
|
|
62
|
-
|
|
63
|
-
|
|
82
|
+
else {
|
|
83
|
+
if (value) {
|
|
84
|
+
channelList.push(channelIndex);
|
|
85
|
+
}
|
|
86
|
+
++channelIndex;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
64
89
|
}
|
|
65
|
-
return channelList
|
|
90
|
+
return channelList;
|
|
66
91
|
}
|
|
67
92
|
/**
|
|
68
93
|
* Set array of channel indexes.
|
|
69
|
-
*
|
|
70
94
|
*/
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
95
|
setChannels(channelList) {
|
|
73
|
-
//
|
|
96
|
+
// sort channels by index
|
|
97
|
+
channelList.sort((a, b) => a.index - b.index);
|
|
98
|
+
// find max channel to detect amount of bytes
|
|
74
99
|
const maxChannel = Math.max(...channelList.map(({ index }) => index));
|
|
75
|
-
const size = (
|
|
76
|
-
const data = Array(size).fill(
|
|
77
|
-
|
|
78
|
-
|
|
100
|
+
const size = (maxChannel - (maxChannel % LAST_BIT_INDEX)) / LAST_BIT_INDEX;
|
|
101
|
+
const data = new Array(size + 1).fill(0);
|
|
102
|
+
let byte = 0;
|
|
103
|
+
data.forEach((_, byteIndex) => {
|
|
104
|
+
// max channel index in one byte - 6
|
|
105
|
+
let channelIndex = byteIndex * LAST_BIT_INDEX;
|
|
106
|
+
const maxChannelIndex = channelIndex + LAST_BIT_INDEX;
|
|
107
|
+
while (channelIndex < maxChannelIndex) {
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
109
|
+
const channel = channelList.find((item => item.index === channelIndex));
|
|
110
|
+
if (channel !== undefined) {
|
|
111
|
+
// set channel bit
|
|
112
|
+
byte |= 1 << (channel.index % LAST_BIT_INDEX);
|
|
113
|
+
}
|
|
114
|
+
++channelIndex;
|
|
115
|
+
}
|
|
116
|
+
// set extended bit if next byte exist
|
|
117
|
+
if (data[byteIndex + 1] !== undefined) {
|
|
118
|
+
byte |= 1 << LAST_BIT_INDEX;
|
|
119
|
+
}
|
|
120
|
+
data[byteIndex] = byte;
|
|
121
|
+
byte = 0;
|
|
79
122
|
});
|
|
80
|
-
data
|
|
81
|
-
data.forEach((byte) => this.setUint8(byte));
|
|
123
|
+
data.forEach((value) => this.setUint8(value));
|
|
82
124
|
}
|
|
83
125
|
/**
|
|
84
126
|
* Retrieve device time from byte array.
|
|
@@ -124,8 +166,10 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
124
166
|
*/
|
|
125
167
|
getHours() {
|
|
126
168
|
const byte = this.getUint8();
|
|
127
|
-
|
|
169
|
+
let hours = (byte & 0xe0) >> 5;
|
|
128
170
|
const hour = byte & 0x1f;
|
|
171
|
+
// TODO: add link to doc
|
|
172
|
+
hours = hours === 0 ? 1 : hours;
|
|
129
173
|
return { hours, hour };
|
|
130
174
|
}
|
|
131
175
|
setHours(hour, hours) {
|
|
@@ -151,10 +195,10 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
151
195
|
low = lowVoltageByte << 4;
|
|
152
196
|
low |= (lowAndHightVoltageByte & 0xf0) >> 4;
|
|
153
197
|
high = ((lowAndHightVoltageByte & 0x0f) << 8) | highVoltageByte;
|
|
154
|
-
if (high ===
|
|
198
|
+
if (high === UNKNOWN_BATTERY_VOLTAGE) {
|
|
155
199
|
high = undefined;
|
|
156
200
|
}
|
|
157
|
-
if (low ===
|
|
201
|
+
if (low === UNKNOWN_BATTERY_VOLTAGE) {
|
|
158
202
|
low = undefined;
|
|
159
203
|
}
|
|
160
204
|
return { low, high };
|
|
@@ -162,10 +206,10 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
162
206
|
setBatterVoltage(batteryVoltage) {
|
|
163
207
|
let { low, high } = batteryVoltage;
|
|
164
208
|
if (low === undefined) {
|
|
165
|
-
low =
|
|
209
|
+
low = UNKNOWN_BATTERY_VOLTAGE;
|
|
166
210
|
}
|
|
167
211
|
if (high === undefined) {
|
|
168
|
-
high =
|
|
212
|
+
high = UNKNOWN_BATTERY_VOLTAGE;
|
|
169
213
|
}
|
|
170
214
|
const lowVoltageByte = (low >> 4) & 0xff;
|
|
171
215
|
const lowAndHighVoltageByte = ((low & 0x0f) << 4) | ((high >> 8) & 0x0f);
|
|
@@ -174,47 +218,56 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
174
218
|
}
|
|
175
219
|
getChannelsValuesWithHourDiff() {
|
|
176
220
|
const date = this.getDate();
|
|
177
|
-
const { hour, hours
|
|
178
|
-
const
|
|
179
|
-
const maxChannel = Math.max.apply(null, channelArray);
|
|
221
|
+
const { hour, hours } = this.getHours();
|
|
222
|
+
const channels = this.getChannels();
|
|
180
223
|
const channelList = [];
|
|
181
|
-
let hours = hourAmount;
|
|
182
|
-
let value;
|
|
183
224
|
date.setUTCHours(hour);
|
|
184
|
-
|
|
185
|
-
// TODO: add link to doc
|
|
186
|
-
if (hours === 0) {
|
|
187
|
-
hours = 1;
|
|
188
|
-
}
|
|
189
|
-
for (let channelIndex = 0; channelIndex <= maxChannel; ++channelIndex) {
|
|
225
|
+
channels.forEach(channelIndex => {
|
|
190
226
|
const diff = [];
|
|
191
227
|
// decode hour value for channel
|
|
192
|
-
value = this.getExtendedValue();
|
|
193
|
-
|
|
228
|
+
const value = this.getExtendedValue();
|
|
229
|
+
for (let diffHour = 0; diffHour < hours; ++diffHour) {
|
|
230
|
+
diff.push(this.getExtendedValue());
|
|
231
|
+
}
|
|
194
232
|
channelList.push({
|
|
195
233
|
value,
|
|
196
234
|
diff,
|
|
197
|
-
index: channelIndex
|
|
198
|
-
seconds: getSecondsFromDate(counterDate),
|
|
199
|
-
date: new Date(counterDate)
|
|
235
|
+
index: channelIndex
|
|
200
236
|
});
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
counterDate.setUTCHours(counterDate.getUTCHours() + diffHour);
|
|
204
|
-
diff.push({ value, hour: diffHour, date: new Date(counterDate), seconds: getSecondsFromDate(counterDate) });
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return { channelList, date, hours };
|
|
237
|
+
});
|
|
238
|
+
return { channelList, hours, startTime: getSecondsFromDate(date) };
|
|
208
239
|
}
|
|
209
|
-
setChannelsValuesWithHourDiff(hours,
|
|
240
|
+
setChannelsValuesWithHourDiff(hours, startTime, channelList) {
|
|
241
|
+
const date = getDateFromSeconds(startTime);
|
|
210
242
|
const hour = date.getUTCHours();
|
|
211
243
|
this.setDate(date);
|
|
212
244
|
this.setHours(hour, hours);
|
|
213
245
|
this.setChannels(channelList);
|
|
214
246
|
channelList.forEach(({ value, diff }) => {
|
|
215
247
|
this.setExtendedValue(value);
|
|
216
|
-
diff.forEach(
|
|
248
|
+
diff.forEach(diffValue => this.setExtendedValue(diffValue));
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
getChannelsWithAbsoluteValues() {
|
|
252
|
+
const channels = this.getChannels();
|
|
253
|
+
const channelList = [];
|
|
254
|
+
channels.forEach(channelIndex => {
|
|
255
|
+
channelList.push({
|
|
256
|
+
// IPK_${channelIndex}
|
|
257
|
+
pulseCoefficient: this.getUint8(),
|
|
258
|
+
// day value
|
|
259
|
+
value: this.getExtendedValue(),
|
|
260
|
+
index: channelIndex
|
|
261
|
+
});
|
|
217
262
|
});
|
|
263
|
+
return channelList;
|
|
264
|
+
}
|
|
265
|
+
setChannelsWithAbsoluteValues(channelList) {
|
|
266
|
+
this.setChannels(channelList);
|
|
267
|
+
for (const { value, pulseCoefficient } of channelList) {
|
|
268
|
+
this.setUint8(pulseCoefficient);
|
|
269
|
+
this.setExtendedValue(value);
|
|
270
|
+
}
|
|
218
271
|
}
|
|
219
272
|
}
|
|
220
273
|
export default CommandBinaryBuffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandBinaryBuffer.js","sourceRoot":"","sources":["../src/CommandBinaryBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandBinaryBuffer.js","sourceRoot":"","sources":["../src/CommandBinaryBuffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ interface IDownlinkExAbsArchiveDaysMCParameters {
|
|
|
15
15
|
/** amount of days to retrieve */
|
|
16
16
|
days: number;
|
|
17
17
|
/** time */
|
|
18
|
-
|
|
18
|
+
startTime: number;
|
|
19
19
|
/** array of channelList indexes */
|
|
20
20
|
channelList: Array<number>;
|
|
21
21
|
}
|
|
@@ -40,7 +40,7 @@ declare class ExAbsArchiveDaysMC extends Command {
|
|
|
40
40
|
constructor(parameters: IDownlinkExAbsArchiveDaysMCParameters);
|
|
41
41
|
static readonly id = 3359;
|
|
42
42
|
static readonly directionType = 1;
|
|
43
|
-
static readonly title = "
|
|
43
|
+
static readonly title = "EX_ABS_ARCHIVE_DAYS_MC";
|
|
44
44
|
static fromBytes(data: Uint8Array): ExAbsArchiveDaysMC;
|
|
45
45
|
toBytes(): Uint8Array;
|
|
46
46
|
}
|
|
@@ -9,7 +9,7 @@ import { DOWNLINK } from '../../constants/directionTypes.js';
|
|
|
9
9
|
import { getSecondsFromDate, getDateFromSeconds } from '../../utils/time.js';
|
|
10
10
|
// TODO: rework extended headers detection
|
|
11
11
|
const COMMAND_ID = 0x0d1f;
|
|
12
|
-
const COMMAND_TITLE = '
|
|
12
|
+
const COMMAND_TITLE = 'EX_ABS_ARCHIVE_DAYS_MC';
|
|
13
13
|
const COMMAND_BODY_SIZE = 4;
|
|
14
14
|
/**
|
|
15
15
|
* Downlink command
|
|
@@ -40,20 +40,20 @@ class ExAbsArchiveDaysMC extends Command {
|
|
|
40
40
|
}
|
|
41
41
|
const buffer = new CommandBinaryBuffer(data);
|
|
42
42
|
const date = buffer.getDate();
|
|
43
|
-
const channelList = buffer.getChannels(
|
|
43
|
+
const channelList = buffer.getChannels();
|
|
44
44
|
const days = buffer.getUint8();
|
|
45
45
|
if (!buffer.isEmpty) {
|
|
46
46
|
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
47
47
|
}
|
|
48
|
-
return new ExAbsArchiveDaysMC({ channelList, days,
|
|
48
|
+
return new ExAbsArchiveDaysMC({ channelList, days, startTime: getSecondsFromDate(date) });
|
|
49
49
|
}
|
|
50
50
|
// returns full message - header with body
|
|
51
51
|
toBytes() {
|
|
52
|
-
const { channelList, days,
|
|
52
|
+
const { channelList, days, startTime } = this.parameters;
|
|
53
53
|
const buffer = new CommandBinaryBuffer(COMMAND_BODY_SIZE);
|
|
54
|
-
const date = getDateFromSeconds(
|
|
54
|
+
const date = getDateFromSeconds(startTime);
|
|
55
55
|
buffer.setDate(date);
|
|
56
|
-
buffer.setChannels(channelList);
|
|
56
|
+
buffer.setChannels(channelList.map(index => ({ index })));
|
|
57
57
|
buffer.setUint8(days);
|
|
58
58
|
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
59
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExAbsArchiveDaysMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveDaysMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"ExAbsArchiveDaysMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveDaysMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAA+B,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAsB3E,0CAA0C;AAC1C,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,kBAAmB,SAAQ,OAAO;IACpC,YAAqB,UAAiD;QAClE,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAuC;QAGlE,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE/B,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,kBAAkB,CAAC,EAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;IAC5F,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAc,CAAA,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEtB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AArCe,qBAAE,GAAG,UAAU,CAAC;AAEhB,gCAAa,GAAG,QAAQ,CAAC;AAEzB,wBAAK,GAAG,aAAa,CAAC;AAqC1C,eAAe,kBAAkB,CAAC"}
|
|
@@ -15,7 +15,7 @@ interface IDownlinkExAbsArchiveHoursMCParameters {
|
|
|
15
15
|
/** amount of hours to retrieve */
|
|
16
16
|
hours: number;
|
|
17
17
|
/** time */
|
|
18
|
-
|
|
18
|
+
startTime: number;
|
|
19
19
|
/** array of channelList indexes */
|
|
20
20
|
channelList: Array<number>;
|
|
21
21
|
}
|
|
@@ -40,7 +40,7 @@ declare class ExAbsArchiveHoursMC extends Command {
|
|
|
40
40
|
constructor(parameters: IDownlinkExAbsArchiveHoursMCParameters);
|
|
41
41
|
static readonly id = 3103;
|
|
42
42
|
static readonly directionType = 1;
|
|
43
|
-
static readonly title = "
|
|
43
|
+
static readonly title = "EX_ABS_ARCHIVE_HOUR_MC";
|
|
44
44
|
static fromBytes(data: Uint8Array): ExAbsArchiveHoursMC;
|
|
45
45
|
toBytes(): Uint8Array;
|
|
46
46
|
}
|
|
@@ -9,7 +9,7 @@ import { DOWNLINK } from '../../constants/directionTypes.js';
|
|
|
9
9
|
import { getSecondsFromDate, getDateFromSeconds } from '../../utils/time.js';
|
|
10
10
|
// TODO: rework extended headers detection
|
|
11
11
|
const COMMAND_ID = 0x0c1f;
|
|
12
|
-
const COMMAND_TITLE = '
|
|
12
|
+
const COMMAND_TITLE = 'EX_ABS_ARCHIVE_HOUR_MC';
|
|
13
13
|
const COMMAND_BODY_SIZE = 4;
|
|
14
14
|
/**
|
|
15
15
|
* Downlink command
|
|
@@ -41,22 +41,22 @@ class ExAbsArchiveHoursMC extends Command {
|
|
|
41
41
|
const buffer = new CommandBinaryBuffer(data);
|
|
42
42
|
const date = buffer.getDate();
|
|
43
43
|
const { hour, hours } = buffer.getHours();
|
|
44
|
-
const channelList = buffer.getChannels(
|
|
44
|
+
const channelList = buffer.getChannels();
|
|
45
45
|
date.setUTCHours(hour);
|
|
46
46
|
if (!buffer.isEmpty) {
|
|
47
47
|
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
48
48
|
}
|
|
49
|
-
return new ExAbsArchiveHoursMC({ channelList, hours,
|
|
49
|
+
return new ExAbsArchiveHoursMC({ channelList, hours, startTime: getSecondsFromDate(date) });
|
|
50
50
|
}
|
|
51
51
|
// returns full message - header with body
|
|
52
52
|
toBytes() {
|
|
53
|
-
const { channelList, hours,
|
|
53
|
+
const { channelList, hours, startTime } = this.parameters;
|
|
54
54
|
const buffer = new CommandBinaryBuffer(COMMAND_BODY_SIZE);
|
|
55
|
-
const date = getDateFromSeconds(
|
|
55
|
+
const date = getDateFromSeconds(startTime);
|
|
56
56
|
const hour = date.getUTCHours();
|
|
57
57
|
buffer.setDate(date);
|
|
58
58
|
buffer.setHours(hour, hours);
|
|
59
|
-
buffer.setChannels(channelList);
|
|
59
|
+
buffer.setChannels(channelList.map(index => ({ index })));
|
|
60
60
|
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExAbsArchiveHoursMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveHoursMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"ExAbsArchiveHoursMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveHoursMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAA+B,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAsB3E,0CAA0C;AAC1C,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,mBAAoB,SAAQ,OAAO;IACrC,YAAqB,UAAkD;QACnE,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAwC;QAGnE,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,mBAAmB,CAAC,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;IAC9F,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAc,CAAA,CAAC,CAAC,CAAC;QAEpE,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAxCe,sBAAE,GAAG,UAAU,CAAC;AAEhB,iCAAa,GAAG,QAAQ,CAAC;AAEzB,yBAAK,GAAG,aAAa,CAAC;AAwC1C,eAAe,mBAAmB,CAAC"}
|