@platform-x/hep-message-broker-client 1.1.26 → 1.1.28
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.
|
@@ -71,6 +71,10 @@ let dlx_queue = RABBITMQ.DLX_QUEUE;
|
|
|
71
71
|
// let retry_queue:string = RABBITMQ.RETRY_QUEUE;
|
|
72
72
|
let connectionRetry = 1;
|
|
73
73
|
let retryCountHeader = 'x-retry-count';
|
|
74
|
+
let registeredConsumers = new Map();
|
|
75
|
+
// Guards handleReconnect() so overlapping close/error events don't spawn
|
|
76
|
+
// multiple concurrent reconnect loops.
|
|
77
|
+
let isReconnecting = false;
|
|
74
78
|
class MessageBrokerClient {
|
|
75
79
|
// private readonly correlationId: string;
|
|
76
80
|
// constructor() {
|
|
@@ -332,9 +336,35 @@ class MessageBrokerClient {
|
|
|
332
336
|
consumeMessage(queueName, classInstance, consumerHandler, consumerErrorHandler) {
|
|
333
337
|
return __awaiter(this, void 0, void 0, function* () {
|
|
334
338
|
logger_1.Logger.info("Reached: Consuming messages from the queue", 'consumeMessage');
|
|
339
|
+
// Remember this consumer so it can be re-attached after any reconnect or
|
|
340
|
+
// channel recreation. Keyed by queueName so repeated calls don't stack.
|
|
341
|
+
registeredConsumers.set(queueName, { queueName, classInstance, consumerHandler, consumerErrorHandler });
|
|
342
|
+
return yield this.subscribeConsumer(queueName, classInstance, consumerHandler, consumerErrorHandler);
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
;
|
|
346
|
+
/**
|
|
347
|
+
* Function to attach a single consumer to a queue. Performs the actual
|
|
348
|
+
* channel.consume() and owns the ack/retry/DLQ logic. Kept separate from
|
|
349
|
+
* consumeMessage() so re-subscription (on reconnect) does not re-register
|
|
350
|
+
* the consumer in the registry, which would grow it unboundedly.
|
|
351
|
+
* @param queueName
|
|
352
|
+
* @param classInstance
|
|
353
|
+
* @param consumerHandler
|
|
354
|
+
* @param consumerErrorHandler
|
|
355
|
+
*/
|
|
356
|
+
subscribeConsumer(queueName, classInstance, consumerHandler, consumerErrorHandler) {
|
|
357
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
335
358
|
let attempt = 0;
|
|
336
359
|
if (isConnectionOpen) {
|
|
337
|
-
|
|
360
|
+
// Capture the channel this consumer is registered on. acks/nacks for
|
|
361
|
+
// messages delivered here MUST go back to this same channel object —
|
|
362
|
+
// if the module-level `channel` is later reassigned (recreateChannel /
|
|
363
|
+
// createConnection), acking against the new channel raises
|
|
364
|
+
// PRECONDITION_FAILED ("unknown delivery tag") and closes it, taking
|
|
365
|
+
// every consumer down with it.
|
|
366
|
+
const ch = channel;
|
|
367
|
+
return yield ch.consume(queueName, (message) => __awaiter(this, void 0, void 0, function* () {
|
|
338
368
|
var _a;
|
|
339
369
|
if (message) {
|
|
340
370
|
logger_1.Logger.info(`Message received from queue ${queueName}: ${JSON.stringify(message)}`, 'consumeMessage');
|
|
@@ -371,7 +401,7 @@ class MessageBrokerClient {
|
|
|
371
401
|
else {
|
|
372
402
|
logger_1.Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
|
|
373
403
|
}
|
|
374
|
-
|
|
404
|
+
this.safeNack(ch, message); // Move message to DLQ after failure
|
|
375
405
|
return false;
|
|
376
406
|
}
|
|
377
407
|
attempt++;
|
|
@@ -384,13 +414,19 @@ class MessageBrokerClient {
|
|
|
384
414
|
retryDelay = Number(count);
|
|
385
415
|
yield this.sendMessageToRetryQueue(attempt, data, retryDelay, queueName);
|
|
386
416
|
logger_1.Logger.info(`Retrying in ${retryDelay / 1000} seconds...`, 'consumeMessage');
|
|
387
|
-
|
|
417
|
+
// Ack immediately once the message is safely on the retry
|
|
418
|
+
// queue. Do NOT block the delivery for the full TTL — the
|
|
419
|
+
// delay is enforced by the retry queue's own expiration.
|
|
420
|
+
// Holding it here risks breaching RabbitMQ's
|
|
421
|
+
// consumer_timeout and getting the channel cancelled.
|
|
422
|
+
this.safeAck(ch, message);
|
|
423
|
+
return;
|
|
388
424
|
}
|
|
389
425
|
else {
|
|
390
426
|
logger_1.Logger.info(`Acknowledge the successful processing`, 'consumeMessage');
|
|
391
427
|
}
|
|
392
428
|
// Acknowledge the successful processing
|
|
393
|
-
|
|
429
|
+
this.safeAck(ch, message);
|
|
394
430
|
}
|
|
395
431
|
}
|
|
396
432
|
catch (error) {
|
|
@@ -404,7 +440,7 @@ class MessageBrokerClient {
|
|
|
404
440
|
else {
|
|
405
441
|
logger_1.Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
|
|
406
442
|
}
|
|
407
|
-
|
|
443
|
+
this.safeNack(ch, message); // Move message to DLQ after failure
|
|
408
444
|
}
|
|
409
445
|
}
|
|
410
446
|
}));
|
|
@@ -412,6 +448,57 @@ class MessageBrokerClient {
|
|
|
412
448
|
});
|
|
413
449
|
}
|
|
414
450
|
;
|
|
451
|
+
/**
|
|
452
|
+
* Function to re-attach every registered consumer. Called after each
|
|
453
|
+
* successful (re)connect and after a channel is recreated, so queues never
|
|
454
|
+
* end up with the connection alive but no consumer attached.
|
|
455
|
+
*/
|
|
456
|
+
reregisterConsumers() {
|
|
457
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
458
|
+
if (registeredConsumers.size === 0) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
logger_1.Logger.info(`Re-subscribing ${registeredConsumers.size} consumer(s) after (re)connect`, 'reregisterConsumers');
|
|
462
|
+
for (const c of registeredConsumers.values()) {
|
|
463
|
+
try {
|
|
464
|
+
yield this.subscribeConsumer(c.queueName, c.classInstance, c.consumerHandler, c.consumerErrorHandler);
|
|
465
|
+
logger_1.Logger.info(`Consumer re-subscribed on queue ${c.queueName}`, 'reregisterConsumers');
|
|
466
|
+
}
|
|
467
|
+
catch (error) {
|
|
468
|
+
logger_1.Logger.error(`Failed to re-subscribe consumer on queue ${c.queueName}`, 'reregisterConsumers', error.message);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Function to ack a message against the channel it was delivered on, guarded
|
|
475
|
+
* so a stale delivery tag (channel already replaced) cannot throw and take
|
|
476
|
+
* down the current channel.
|
|
477
|
+
* @param ch the channel the message was consumed on
|
|
478
|
+
* @param message
|
|
479
|
+
*/
|
|
480
|
+
safeAck(ch, message) {
|
|
481
|
+
try {
|
|
482
|
+
ch.ack(message);
|
|
483
|
+
}
|
|
484
|
+
catch (error) {
|
|
485
|
+
logger_1.Logger.error('Failed to ack message (stale channel?)', 'safeAck', error.message);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Function to nack a message against the channel it was delivered on, guarded
|
|
490
|
+
* against stale delivery tags. Never requeues (routes to DLQ).
|
|
491
|
+
* @param ch the channel the message was consumed on
|
|
492
|
+
* @param message
|
|
493
|
+
*/
|
|
494
|
+
safeNack(ch, message) {
|
|
495
|
+
try {
|
|
496
|
+
ch.nack(message, false, false);
|
|
497
|
+
}
|
|
498
|
+
catch (error) {
|
|
499
|
+
logger_1.Logger.error('Failed to nack message (stale channel?)', 'safeNack', error.message);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
415
502
|
// /**
|
|
416
503
|
// * Function for consumer massage handler
|
|
417
504
|
// * @param request
|
|
@@ -705,9 +792,17 @@ class MessageBrokerClient {
|
|
|
705
792
|
// create channel
|
|
706
793
|
channel = yield connection.createConfirmChannel();
|
|
707
794
|
channel.prefetch(RABBITMQ === null || RABBITMQ === void 0 ? void 0 : RABBITMQ.PREFETCH_COUNT);
|
|
795
|
+
// Watch the channel itself: a channel-level fault (e.g. PRECONDITION_FAILED
|
|
796
|
+
// from a stale ack) closes the channel and cancels its consumers without
|
|
797
|
+
// closing the connection, so the connection 'close' path never fires.
|
|
798
|
+
this.bindChannelEventHandler();
|
|
708
799
|
logger_1.Logger.info('RabbitMQ connected successfully! ', 'createConnection');
|
|
709
800
|
// create exchange and queue and bind with exchange
|
|
710
801
|
yield this.setupQueuesAndExchanges();
|
|
802
|
+
// Re-attach any consumers registered before this (re)connect. Without
|
|
803
|
+
// this, after a reconnect the connection is healthy but no consumer is
|
|
804
|
+
// bound to the queues — the root cause of consumers "disappearing".
|
|
805
|
+
yield this.reregisterConsumers();
|
|
711
806
|
const connectionWrapper = { connection, channel };
|
|
712
807
|
return connectionWrapper;
|
|
713
808
|
}
|
|
@@ -724,21 +819,17 @@ class MessageBrokerClient {
|
|
|
724
819
|
*/
|
|
725
820
|
bindConnectionEventHandler() {
|
|
726
821
|
try {
|
|
822
|
+
// 'error' always precedes 'close' from amqplib, so only 'close' drives the
|
|
823
|
+
// reconnect to avoid triggering it twice.
|
|
824
|
+
connection.on('error', (err) => {
|
|
825
|
+
var _a;
|
|
826
|
+
logger_1.Logger.error(`RabbitMQ: bindConnectionEventHandler:error`, `Connection error`, (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
|
|
827
|
+
});
|
|
727
828
|
connection.on('close', (err) => __awaiter(this, void 0, void 0, function* () {
|
|
728
|
-
|
|
829
|
+
var _a;
|
|
830
|
+
logger_1.Logger.error(`RabbitMQ: bindConnectionEventHandler:close`, `Connection closed`, (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
|
|
729
831
|
isConnectionOpen = false;
|
|
730
|
-
|
|
731
|
-
yield this.createConnection();
|
|
732
|
-
connectionRetry++;
|
|
733
|
-
}
|
|
734
|
-
}));
|
|
735
|
-
connection.on('error', (err) => __awaiter(this, void 0, void 0, function* () {
|
|
736
|
-
logger_1.Logger.error(`RabbitMQ: bindConnectionEventHandler:error`, `Connection error`, err);
|
|
737
|
-
isConnectionOpen = false;
|
|
738
|
-
if (connectionRetry <= maxRetries) {
|
|
739
|
-
yield this.createConnection();
|
|
740
|
-
connectionRetry++;
|
|
741
|
-
}
|
|
832
|
+
yield this.handleReconnect();
|
|
742
833
|
}));
|
|
743
834
|
return isConnectionOpen;
|
|
744
835
|
}
|
|
@@ -747,6 +838,84 @@ class MessageBrokerClient {
|
|
|
747
838
|
return isConnectionOpen;
|
|
748
839
|
}
|
|
749
840
|
}
|
|
841
|
+
/**
|
|
842
|
+
* Function to bind channel-level event handlers. A channel can be cancelled
|
|
843
|
+
* (e.g. PRECONDITION_FAILED, consumer_timeout) while the connection stays up;
|
|
844
|
+
* in that case the connection 'close' handler never fires, so the channel is
|
|
845
|
+
* recreated and consumers re-attached here.
|
|
846
|
+
*/
|
|
847
|
+
bindChannelEventHandler() {
|
|
848
|
+
try {
|
|
849
|
+
channel.on('error', (err) => {
|
|
850
|
+
var _a;
|
|
851
|
+
logger_1.Logger.error(`RabbitMQ: bindChannelEventHandler:error`, `Channel error`, (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
|
|
852
|
+
});
|
|
853
|
+
channel.on('close', () => __awaiter(this, void 0, void 0, function* () {
|
|
854
|
+
logger_1.Logger.error(`RabbitMQ: bindChannelEventHandler:close`, `Channel closed`);
|
|
855
|
+
// Only self-heal the channel while the connection is still open. If the
|
|
856
|
+
// connection is down, handleReconnect() owns recovery (and will recreate
|
|
857
|
+
// the channel + consumers), so doing it here too would double-subscribe.
|
|
858
|
+
if (isConnectionOpen && !isReconnecting) {
|
|
859
|
+
try {
|
|
860
|
+
yield this.recreateChannel();
|
|
861
|
+
this.bindChannelEventHandler();
|
|
862
|
+
yield this.reregisterConsumers();
|
|
863
|
+
logger_1.Logger.info('Channel and consumers recovered after channel close', 'bindChannelEventHandler');
|
|
864
|
+
}
|
|
865
|
+
catch (error) {
|
|
866
|
+
logger_1.Logger.error('Failed to recover channel after close', 'bindChannelEventHandler', error.message);
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
}));
|
|
870
|
+
}
|
|
871
|
+
catch (error) {
|
|
872
|
+
logger_1.Logger.error('Error in bindChannelEventHandler', 'bindChannelEventHandler', error.message);
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
/**
|
|
876
|
+
* Function to reconnect to RabbitMQ with capped exponential backoff. Unlike
|
|
877
|
+
* the old logic — which capped total lifetime reconnects at MAX_RETRIES and
|
|
878
|
+
* never reset the counter — this retries indefinitely and resets on success,
|
|
879
|
+
* so the service self-heals from every disconnect. createConnection()
|
|
880
|
+
* re-attaches all registered consumers on success.
|
|
881
|
+
*/
|
|
882
|
+
handleReconnect() {
|
|
883
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
884
|
+
var _a;
|
|
885
|
+
if (isReconnecting) {
|
|
886
|
+
logger_1.Logger.info('Reconnect already in progress, skipping duplicate trigger', 'handleReconnect');
|
|
887
|
+
return;
|
|
888
|
+
}
|
|
889
|
+
isReconnecting = true;
|
|
890
|
+
connectionRetry = 1;
|
|
891
|
+
// Backoff schedule derived from the TTL config, capped at its last value.
|
|
892
|
+
const backoffs = (retry_delay !== null && retry_delay !== void 0 ? retry_delay : []).map(Number).filter((n) => !Number.isNaN(n) && n > 0);
|
|
893
|
+
const maxBackoff = backoffs.length ? backoffs[backoffs.length - 1] : 30000;
|
|
894
|
+
try {
|
|
895
|
+
while (!isConnectionOpen) {
|
|
896
|
+
const delay = (_a = backoffs[connectionRetry - 1]) !== null && _a !== void 0 ? _a : maxBackoff;
|
|
897
|
+
logger_1.Logger.info(`Reconnect attempt ${connectionRetry} in ${delay / 1000}s...`, 'handleReconnect');
|
|
898
|
+
yield new Promise(resolve => setTimeout(resolve, delay));
|
|
899
|
+
try {
|
|
900
|
+
yield this.createConnection();
|
|
901
|
+
if (isConnectionOpen) {
|
|
902
|
+
connectionRetry = 1;
|
|
903
|
+
logger_1.Logger.info('Reconnected to RabbitMQ successfully', 'handleReconnect');
|
|
904
|
+
return;
|
|
905
|
+
}
|
|
906
|
+
throw new Error('createConnection did not establish an open connection');
|
|
907
|
+
}
|
|
908
|
+
catch (error) {
|
|
909
|
+
logger_1.Logger.error(`Reconnect attempt ${connectionRetry} failed`, 'handleReconnect', error.message);
|
|
910
|
+
connectionRetry++;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
finally {
|
|
915
|
+
isReconnecting = false;
|
|
916
|
+
}
|
|
917
|
+
});
|
|
918
|
+
}
|
|
750
919
|
}
|
|
751
920
|
exports.MessageBrokerClient = MessageBrokerClient;
|
|
752
921
|
//# sourceMappingURL=MessageBrokerClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBrokerClient.js","sourceRoot":"","sources":["../../../../src/messageBroker/rabbitmq/MessageBrokerClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA0C;AAC1C,8CAAgC;AAChC,0DAAkC;AAClC,8CAA2C;AAE3C,+EAAuD;AAIvD,oDAAmD;AACnD,6BAAsC;AACtC,6BAA6B;AAC7B,IAAI,aAAa,GAAkB,uBAAa,CAAC,WAAW,EAAE,CAAC;AAC/D,mDAAmD;AACnD,IAAI,UAA2B,CAAC;AAChC,IAAI,OAAqB,CAAC;AAC1B,wCAAwC;AACxC,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,IAAI,UAAU,GAAQ,EAAE,CAAC;AACzB,MAAM,QAAQ,GAAG,gBAAM,aAAN,gBAAM,uBAAN,gBAAM,CAAE,QAAQ,CAAC;AAClC,IAAI,UAAU,GAAW,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,CAAC;AAC/C,IAAI,WAAW,GAAQ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,mDAAmD;AACnD,IAAI,SAAS,GAAU,QAAQ,CAAC,SAAS,CAAC;AAC1C,uDAAuD;AACvD,iDAAiD;AACjD,IAAI,eAAe,GAAU,CAAC,CAAC;AAC/B,IAAI,gBAAgB,GAAG,eAAe,CAAC;AACvC,MAAa,mBAAmB;IAE9B,0CAA0C;IAC1C,kBAAkB;IAChB,gDAAgD;IAClD,IAAI;IAEJ;;;MAGE;IACW,WAAW;;YACtB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;KAAA;IAAA,CAAC;IAGF;;;;MAIE;IACW,UAAU;;YACrB,eAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;YACnD,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;YACvC,2CAA2C;YAC3C,SAAS,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC;YAClC,+CAA+C;YAC/C,yCAAyC;YACzC,IAAI,OAAO,GAAW,CAAC,CAAC;YACxB,2BAA2B;YAC3B,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,IAAG,QAAQ,CAAC,gBAAgB,KAAK,MAAM,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI,EAAC,CAAC;wBAC7E,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACzC,CAAC;oBACD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBACtD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,EAAE,CAAC;oBACV,eAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,WAAW,OAAO,OAAO,UAAU,GAAG,CAAC,CAAC;oBACjG,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;wBAC1B,eAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE,YAAY,CAAC,CAAC;wBAC/E,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;oBACjC,CAAC;oBACD,0CAA0C;oBAC1C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;KAAA;IAAA,CAAC;IAIF;;;;;;MAME;IACW,cAAc,CACzB,OAAgC;IAChC,2DAA2D;;;YAE3D,eAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;YACxD,8HAA8H;YAC9H,IAAG,CAAC;gBACF,IAAG,gBAAgB,EAAC,CAAC;oBACnB,eAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,gBAAgB,CAAC,CAAC;oBAC9D,MAAM,SAAS,GAAW,OAAO,CAAC,SAAS,CAAC;oBAC5C,MAAM,IAAI,GAAiB,OAAO,CAAC,OAAO,CAAC;oBAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC;oBACjE,2BAA2B;oBAC3B,4IAA4I;oBAC5I,kCAAkC;oBAClC,eAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;oBACnD,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC5D,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;4BACpE,UAAU,EAAE,IAAI,EAAE,mCAAmC;4BACrD,qCAAqC;yBACtC,CAAC,CAAC;wBACH,IAAI,IAAI,EAAE,CAAC;4BACT,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;4BACjF,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;6BAAM,CAAC;4BACN,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BACpG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,IAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,MAAM,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,EAAC,CAAC;wBACzF,OAAO,MAAM,CAAC;oBAChB,CAAC;oBACD,QAAQ;oBACR,oEAAoE;oBACpE,iCAAiC;oBACjC,kGAAkG;oBAClG,+GAA+G;oBAC/G,8DAA8D;oBAC/D,kFAAkF;oBAC/E,2EAA2E;oBAC3E,sFAAsF;oBACtF,WAAW;oBACX,yGAAyG;oBACzG,IAAI;oBACN,oBAAoB;oBACpB,WAAW;oBACX,8DAA8D;oBAC9D,iBAAiB;oBACjB,MAAM;oBACN,IAAI;oBACN,IAAI;gBAEJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,EAAE,EAAE,aAAa,CAAC,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;KAAA;IAED;;;;;;MAME;IACW,wBAAwB,CAAC,OAAgC;;;YACpE,eAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,0BAA0B,CAAC,CAAC;YAC5E,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,YAAY,GAAuB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,EAAE,CAAC;YACrE,MAAM,SAAS,GAAW,OAAO,CAAC,SAAS,CAAC;YAC5C,MAAM,IAAI,GAAiB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC;YAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC;gBACH,0CAA0C;gBAC3C,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBAEtC,gBAAgB;gBAChB,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,eAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,0BAA0B,CAAC,CAAC;wBACzE,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE;4BACjE,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAC;wBACH,6FAA6F;wBAC7F,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,MAAM,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,EAAE,CAAC;4BACvF,eAAM,CAAC,IAAI,CAAC,6CAA6C,OAAO,GAAG,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;4BACpG,eAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,0BAA0B,CAAC,CAAC;4BACvE,MAAM;wBACR,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;wBAC5C,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,EAAE,CAAC;wBACV,eAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,qBAAqB,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;wBAChG,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;4BACzB,eAAM,CAAC,IAAI,CAAC,eAAe,WAAW,OAAO,EAAE,0BAA0B,CAAC,CAAC;4BAC3E,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;wBACzD,CAAC;6BAAK,CAAC;4BACL,eAAM,CAAC,KAAK,CAAC,sCAAsC,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;4BACxF,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,8DAA8D,EAAE,0BAA0B,CAAC,CAAC;gBACzG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACtE,WAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,WAAW;gBACvD,MAAM,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;KAAA;IACD;;OAEG;IACH,0DAA0D;IAC7C,4BAA4B,CAAC,OAAgC;;YACxE,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KAAA;IAED;;;OAGG;IACU,mBAAmB,CAAC,aAAiB,EAAE,eAAsB,EAAE,oBAA2B,EAAC,qBAA0B;;YAChI,IAAI,CAAC;gBACH,eAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,qBAAqB,CAAC,CAAC;gBACrE,eAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,qBAAqB,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBAE3G,IAAI,cAAc,GAAG,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,CAAC;gBACzE,mCAAmC;gBACnC,KAAK,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;oBACrC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,CAAC;wBACpE,4CAA4C;wBAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,CAAE,CAAC;oBAC9F,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,qBAAqB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBAC/F,MAAM,IAAI,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;KAAA;IAED;;;;;;WAMO;IACM,sBAAsB,CAAI,aAA4B,EAAG,iBAAgC,EAAE,OAAU;;YAChH,eAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,wBAAwB,CAAC,CAAA;YAC/E,IAAI,OAAO,GAAW,CAAC,CAAC;YACxB,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,aAAa,CAAC,OAAO,CAAC,CAAC;oBACvB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;oBACV,eAAM,CAAC,KAAK,CAAC,sCAAsC,OAAO,OAAO,UAAU,UAAU,EAAE,wBAAwB,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxJ,IAAI,SAAS,GAAI,OAAmC,aAAnC,OAAO,uBAAP,OAAO,CAA8B,SAAS,CAAA;oBAC/D,MAAM,IAAI,GAAkB,OAAmC,aAAnC,OAAO,uBAAP,OAAO,CAA8B,OAAO,CAAC;oBACzE,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;wBAC1B,eAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,wBAAwB,CAAC,CAAC;wBAC1F,wGAAwG;wBACxG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wBAC5C,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAC3B,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,6CAA6C;oBAC7C,IAAI,UAAkB,CAAC;oBACvB,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,GAAE,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,KAAK,GAAO,WAAW,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,CAAA,CAAC,CAAA,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,CAAA,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;oBACnG,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oBACnE,eAAM,CAAC,IAAI,CAAC,eAAe,UAAU,GAAG,IAAI,aAAa,EAAE,wBAAwB,CAAC,CAAC;oBACrF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAID;;;OAGG;IACU,cAAc,CAAC,SAAiB,EAAE,aAAkB,EAAE,eAAuB,EAAG,oBAA2B;;YACtH,eAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,gBAAgB,CAAC,CAAA;YAC3E,IAAI,OAAO,GAAU,CAAC,CAAC;YACrB,IAAG,gBAAgB,EAAC,CAAC;gBACnB,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAO,OAAY,EAAE,EAAE;;oBAC7D,IAAG,OAAO,EAAC,CAAC;wBACV,eAAM,CAAC,IAAI,CAAC,+BAA+B,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;wBACtG,IAAI,OAAO,GAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAC1D,eAAM,CAAC,IAAI,CAAC,+BAA+B,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;wBACtG,MAAM,OAAO,GAAI,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;wBAClD,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;wBACzC,MAAM,IAAI,GAAO,EAAC,IAAI,EAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,IAAI,EAAE,UAAU,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC;wBACjO,IAAI,CAAC;4BACH,IAAI,OAAO,GAAO,EAAE,CAAC;4BACrB,IAAG,QAAQ,CAAC,cAAc,KAAK,MAAM,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,EAAC,CAAC;gCACzE,eAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,gBAAgB,CAAC,CAAA;gCAC9E,yEAAyE;gCACzE,IAAI,OAAO,aAAa,CAAC,eAAe,CAAC,KAAK,UAAU,EAAE,CAAC;oCACzD,OAAO,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,8BAA8B;gCACjH,CAAC;qCAAM,CAAC;oCACN,eAAM,CAAC,IAAI,CAAC,UAAU,eAAe,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;gCAC1F,CAAC;4BACH,CAAC;4BACD,IAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,MAAK,IAAI,EAAC,CAAC;gCAC5B,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;oCACrB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oCACpE,oCAAoC;oCAClC,OAAO,GAAG,UAAU,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,OAAO,CAAC;oCACxC,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;wCAC7B,eAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,gBAAgB,CAAC,CAAC;wCAClF,wGAAwG;wCACxG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wCAC5C,mCAAmC;wCACnC,IAAI,OAAO,aAAa,CAAC,oBAAoB,CAAC,KAAK,UAAU,EAAE,CAAC;4CAC9D,aAAa,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B;wCAC3E,CAAC;6CAAM,CAAC;4CACN,eAAM,CAAC,IAAI,CAAC,UAAU,oBAAoB,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;wCAC/F,CAAC;wCACD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,oCAAoC;wCACzE,OAAO,KAAK,CAAC;oCACf,CAAC;oCACD,OAAO,EAAE,CAAC;oCACV,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAG,CAAC,EAAE,CAAC;wCACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oCACzB,CAAC;oCACD,6CAA6C;oCAC7C,IAAI,UAAkB,CAAC;oCACvB,IAAI,KAAK,GAAO,WAAW,CAAC,MAAM,KAAK,OAAO,CAAA,CAAC,CAAA,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,CAAA,WAAW,CAAC,OAAO,GAAC,CAAC,CAAC,CAAC;oCAC1G,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oCAC3B,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oCACzE,eAAM,CAAC,IAAI,CAAC,eAAe,UAAU,GAAG,IAAI,aAAa,EAAE,gBAAgB,CAAC,CAAC;oCAC7E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gCACpE,CAAC;qCAAM,CAAC;oCACN,eAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,gBAAgB,CAAC,CAAC;gCACzE,CAAC;gCACD,wCAAwC;gCACxC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;4BACvB,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,YAAY,GAAW,KAAe,CAAC,OAAO,CAAC;4BACnD,eAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC;4BACrF,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;4BAC5C,mCAAmC;4BACnC,IAAI,OAAO,aAAa,CAAC,oBAAoB,CAAC,KAAK,UAAU,EAAE,CAAC;gCAC9D,aAAa,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B;4BAC3E,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,IAAI,CAAC,UAAU,oBAAoB,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;4BAC/F,CAAC;4BACD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,oCAAoC;wBAC3E,CAAC;oBACH,CAAC;gBACH,CAAC,CAAA,CAAC,CAAC;YACL,CAAC;QACL,CAAC;KAAA;IAAA,CAAC;IAEF,MAAM;IACN,2CAA2C;IAC3C,oBAAoB;IACpB,eAAe;IACf,MAAM;IACN,qFAAqF;IACrF,kEAAkE;IAClE,iBAAiB;IACjB,IAAI;IAEJ,MAAM;IACN,gDAAgD;IAChD,oBAAoB;IACpB,cAAc;IACd,MAAM;IAEN,oEAAoE;IACpE,uEAAuE;IACvE,iBAAiB;IACjB,IAAI;IAGJ;;;;;;OAMG;IAEU,uBAAuB,CAAC,OAAc,EAAE,IAAQ;;YAC3D,eAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,wBAAwB,CAAC,CAAA;YACnF,IAAI,CAAC;gBACH,IAAG,gBAAgB,EAAC,CAAC;oBACnB,eAAM,CAAC,IAAI,CAAC,4CAA4C,SAAS,cAAc,OAAO,kBAAkB,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,SAAS,EAAE,wBAAwB,CAAC,CAAC;oBAC9L,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC7E,UAAU,EAAE,IAAI;wBAChB,OAAO,EAAE;4BACP,eAAe,EAAE,OAAO,GAAC,CAAC;yBAC3B;qBACF,CAAC,CAAC;oBACH,IAAI,IAAI,EAAE,CAAC;wBACT,eAAM,CAAC,IAAI,CAAC,gDAAgD,SAAS,cAAc,OAAO,kBAAkB,OAAO,GAAG,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;oBACxJ,CAAC;yBAAM,CAAC;wBACN,eAAM,CAAC,KAAK,CAAC,2CAA2C,SAAS,oCAAoC,OAAO,kBAAkB,OAAO,GAAG,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;oBAC1K,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,KAAK,CAAC,+DAA+D,SAAS,cAAc,OAAO,GAAG,EAAE,wBAAwB,CAAC,CAAC;oBACzI,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,+CAAgD,KAAe,CAAC,OAAO,YAAY,SAAS,cAAc,OAAO,GAAG,EAAE,wBAAwB,CAAC,CAAC;gBAC7J,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAGD;;;;;;;OAOG;IAEU,uBAAuB,CAAC,OAAc,EAAE,IAAQ,EAAE,UAAc,EAAE,SAAgB;;YAC7F,eAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,yBAAyB,CAAC,CAAA;YAC9E,IAAI,CAAC;gBACH,IAAG,gBAAgB,EAAC,CAAC;oBACnB,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;wBACxD,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;4BACvD,OAAO,EAAE;gCACP,eAAe,EAAE,OAAO,GAAG,CAAC;gCAC5B,eAAe,EAAE,UAAU;6BAC5B;yBACF,CAAC,CAAC;wBACL,IAAI,IAAI,EAAE,CAAC;4BACT,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;4BACjF,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;6BAAM,CAAC;4BACN,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BAC3F,MAAM,CAAC,KAAK,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,yBAAyB,EAAE,EAAC,OAAO,EAAG,KAAgB,CAAC,OAAO,EAAC,CAAC,CAAC;gBACtH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAED;;;;;OAKG;IACU,oBAAoB,CAAC,SAAgB,EAAE,YAAmB;;;YACrE,eAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,sBAAsB,CAAC,CAAC;YACvE,IAAI,CAAC;gBACH,IAAI,SAAS,GAAQ,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC;gBAC3C,IAAI,MAAM,GAAQ,UAAU,CAAC,MAAM,CAAC;gBACpC,IAAI,QAAQ,GAAQ,UAAU,CAAC,QAAQ,CAAC;gBACxC,8BAA8B;gBAE9B,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBACxB,IAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,SAAS,EAAC,CAAC;wBAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;oBACD,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;gBACtE,CAAC;gBAED,iCAAiC;gBACjC,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC3B,IAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,YAAY,EAAC,CAAC;wBAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAClC,CAAC;oBACD,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;gBACxE,CAAC;gBAED,kEAAkE;gBAClE,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAA,QAAQ,CAAC,GAAG,CAAC,0CAAE,OAAO,CAAC,CAAO,GAAQ,EAAE,EAAE;wBACxC,IAAG,GAAG,KAAK,YAAY,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,MAAK,SAAS,EAAC,CAAC;4BACnD,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,CAAC,CAAC;wBACrE,CAAC;wBACD,eAAM,CAAC,IAAI,CAAC,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,4BAA4B,GAAG,oBAAoB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAC;oBACzH,CAAC,CAAA,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,sBAAsB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBAC/G,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAED;;MAEE;IACY,yBAAyB;;YACrC,eAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,2BAA2B,CAAC,CAAC;YAChF,iCAAiC;YAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,eAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE,0BAA0B,CAAC,CAAC;gBAC3F,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChC,CAAC;YACD,gCAAgC;YAChC,MAAM,iBAAiB,GAAQ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC;YACnD,IAAI,CAAC,OAAO,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACzE,eAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,0BAA0B,CAAC,CAAC;gBAC5F,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/B,CAAC;QACL,CAAC;KAAA;IAED;;MAEE;IACY,eAAe;;YAC3B,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,CAAA;gBAC1C,eAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,iBAAiB,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,eAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;KAAA;IAED;;;;MAIE;IACY,uBAAuB;;;YACnC,eAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,yBAAyB,CAAC,CAAC;YAC7E,IAAI,CAAC;gBACH,IAAI,SAAS,GAAQ,UAAU,CAAC,SAAS,CAAC;gBAC1C,IAAI,MAAM,GAAQ,UAAU,CAAC,MAAM,CAAC;gBACpC,IAAI,QAAQ,GAAQ,UAAU,CAAC,QAAQ,CAAC;gBACxC,iCAAiC;gBACjC,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAChC,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;gBAC3E,CAAC;gBAED,8BAA8B;gBAC9B,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC7B,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;gBACzE,CAAC;gBAED,kEAAkE;gBAClE,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAA,QAAQ,CAAC,GAAG,CAAC,0CAAE,OAAO,CAAC,CAAO,GAAQ,EAAE,EAAE;wBACxC,MAAM,IAAI,CAAC,qBAAqB,CAAE,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,CAAC,CAAC;wBACpE,eAAM,CAAC,IAAI,CAAC,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,4BAA4B,GAAG,oBAAoB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;oBAC5H,CAAC,CAAA,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,yBAAyB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACpH,CAAC;QACH,CAAC;KAAA;IAAA,CAAC;IAGF;;;;;OAKG;IAEW,qBAAqB,CAAC,YAAmB,EAAE,SAAgB,EAAE,UAAiB;;YAC1F,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,SAAS,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1G,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,uBAAuB,EAAE,EAAC,OAAO,EAAE,KAAe,CAAC,OAAO,EAAC,CAAC,CAAC;YAChH,CAAC;QAEH,CAAC;KAAA;IAGA;;;MAGE;IAEW,WAAW,CAAC,IAAQ;;YAChC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACtJ,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,aAAa,EAAE,EAAC,OAAO,EAAE,KAAe,CAAC,OAAO,EAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;KAAA;IAEA;;;MAGE;IAEY,cAAc,CAAC,IAAQ;;YACpC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9G,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,gBAAgB,EAAE,EAAC,OAAO,EAAE,KAAe,CAAC,OAAO,EAAC,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;KAAA;IAED,8FAA8F;IAC9F,UAAU;IACV,mIAAmI;IACnI,sEAAsE;IACtE,gFAAgF;IAChF,uEAAuE;IACvE,iEAAiE;IACjE,QAAQ;IACR,oDAAoD;IACpD,8BAA8B;IAC9B,iDAAiD;IACjD,mHAAmH;IACnH,kCAAkC;IAClC,gFAAgF;IAChF,+FAA+F;IAC/F,wEAAwE;IACxE,sBAAsB;IACtB,mIAAmI;IACnI,mBAAmB;IACnB,MAAM;IACN,IAAI;IAEJ;;QAEI;IACS,gBAAgB;;YAC3B,IAAI,CAAC;gBACH,eAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAC;gBAC/D,aAAa,CAAC,UAAU,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,CAAC,CAAC;gBAChD,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAa,GAAE,CAAC;gBACrC,IAAI,GAAG,GAAW,UAAU,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,uBAAW,CAAC,aAAa,CAAC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,uBAAW,CAAC,aAAa,CAAC,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAC;gBAC3H,yCAAyC;gBACzC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,EAAE,CAAC,CAAC;gBACzE,gBAAgB,GAAG,IAAI,CAAC;gBACxB,8BAA8B;gBAC9B,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,iBAAiB;gBACjB,OAAO,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,CAAC;gBAC3C,eAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,kBAAkB,CAAC,CAAC;gBACrE,mDAAmD;gBACnD,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACrC,MAAM,iBAAiB,GAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;gBACpE,OAAO,iBAAiB,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0DAA0D;gBAC1D,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,EAAG,KAAe,aAAf,KAAK,uBAAL,KAAK,CAAY,OAAO,CAAC,CAAC;gBACvF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAkC,CAAC;YAC7E,CAAC;QACH,CAAC;KAAA;IAED;;;OAGG;IACM,0BAA0B;QACjC,IAAI,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAM,GAAQ,EAAE,EAAE;gBACvC,eAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;gBACrF,gBAAgB,GAAG,KAAK,CAAC;gBACzB,IAAG,eAAe,IAAG,UAAU,EAAC,CAAC;oBAC/B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,eAAe,EAAE,CAAC;gBACpB,CAAC;YACH,CAAC,CAAA,CAAC,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAM,GAAQ,EAAE,EAAE;gBACvC,eAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBACpF,gBAAgB,GAAG,KAAK,CAAC;gBACzB,IAAG,eAAe,IAAG,UAAU,EAAC,CAAC;oBAC/B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,eAAe,EAAE,CAAC;gBACpB,CAAC;YACH,CAAC,CAAA,CAAC,CAAC;YACH,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,GAAG,KAAK,CAAC;YACzB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;IAEH,CAAC;CAEF;AA9oBD,kDA8oBC"}
|
|
1
|
+
{"version":3,"file":"MessageBrokerClient.js","sourceRoot":"","sources":["../../../../src/messageBroker/rabbitmq/MessageBrokerClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA0C;AAC1C,8CAAgC;AAChC,0DAAkC;AAClC,8CAA2C;AAE3C,+EAAuD;AAIvD,oDAAmD;AACnD,6BAAsC;AACtC,6BAA6B;AAC7B,IAAI,aAAa,GAAkB,uBAAa,CAAC,WAAW,EAAE,CAAC;AAC/D,mDAAmD;AACnD,IAAI,UAA2B,CAAC;AAChC,IAAI,OAAqB,CAAC;AAC1B,wCAAwC;AACxC,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,IAAI,UAAU,GAAQ,EAAE,CAAC;AACzB,MAAM,QAAQ,GAAG,gBAAM,aAAN,gBAAM,uBAAN,gBAAM,CAAE,QAAQ,CAAC;AAClC,IAAI,UAAU,GAAW,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,CAAC;AAC/C,IAAI,WAAW,GAAQ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,mDAAmD;AACnD,IAAI,SAAS,GAAU,QAAQ,CAAC,SAAS,CAAC;AAC1C,uDAAuD;AACvD,iDAAiD;AACjD,IAAI,eAAe,GAAU,CAAC,CAAC;AAC/B,IAAI,gBAAgB,GAAG,eAAe,CAAC;AAavC,IAAI,mBAAmB,GAAoC,IAAI,GAAG,EAAE,CAAC;AACrE,yEAAyE;AACzE,uCAAuC;AACvC,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAa,mBAAmB;IAE9B,0CAA0C;IAC1C,kBAAkB;IAChB,gDAAgD;IAClD,IAAI;IAEJ;;;MAGE;IACW,WAAW;;YACtB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;KAAA;IAAA,CAAC;IAGF;;;;MAIE;IACW,UAAU;;YACrB,eAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;YACnD,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;YACvC,2CAA2C;YAC3C,SAAS,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC;YAClC,+CAA+C;YAC/C,yCAAyC;YACzC,IAAI,OAAO,GAAW,CAAC,CAAC;YACxB,2BAA2B;YAC3B,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,IAAG,QAAQ,CAAC,gBAAgB,KAAK,MAAM,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI,EAAC,CAAC;wBAC7E,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACzC,CAAC;oBACD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBACtD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,EAAE,CAAC;oBACV,eAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,WAAW,OAAO,OAAO,UAAU,GAAG,CAAC,CAAC;oBACjG,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;wBAC1B,eAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE,YAAY,CAAC,CAAC;wBAC/E,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;oBACjC,CAAC;oBACD,0CAA0C;oBAC1C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;KAAA;IAAA,CAAC;IAIF;;;;;;MAME;IACW,cAAc,CACzB,OAAgC;IAChC,2DAA2D;;;YAE3D,eAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;YACxD,8HAA8H;YAC9H,IAAG,CAAC;gBACF,IAAG,gBAAgB,EAAC,CAAC;oBACnB,eAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,gBAAgB,CAAC,CAAC;oBAC9D,MAAM,SAAS,GAAW,OAAO,CAAC,SAAS,CAAC;oBAC5C,MAAM,IAAI,GAAiB,OAAO,CAAC,OAAO,CAAC;oBAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC;oBACjE,2BAA2B;oBAC3B,4IAA4I;oBAC5I,kCAAkC;oBAClC,eAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;oBACnD,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC5D,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;4BACpE,UAAU,EAAE,IAAI,EAAE,mCAAmC;4BACrD,qCAAqC;yBACtC,CAAC,CAAC;wBACH,IAAI,IAAI,EAAE,CAAC;4BACT,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;4BACjF,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;6BAAM,CAAC;4BACN,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BACpG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,IAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,MAAM,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,EAAC,CAAC;wBACzF,OAAO,MAAM,CAAC;oBAChB,CAAC;oBACD,QAAQ;oBACR,oEAAoE;oBACpE,iCAAiC;oBACjC,kGAAkG;oBAClG,+GAA+G;oBAC/G,8DAA8D;oBAC/D,kFAAkF;oBAC/E,2EAA2E;oBAC3E,sFAAsF;oBACtF,WAAW;oBACX,yGAAyG;oBACzG,IAAI;oBACN,oBAAoB;oBACpB,WAAW;oBACX,8DAA8D;oBAC9D,iBAAiB;oBACjB,MAAM;oBACN,IAAI;oBACN,IAAI;gBAEJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,EAAE,EAAE,aAAa,CAAC,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;KAAA;IAED;;;;;;MAME;IACW,wBAAwB,CAAC,OAAgC;;;YACpE,eAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,0BAA0B,CAAC,CAAC;YAC5E,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,YAAY,GAAuB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,EAAE,CAAC;YACrE,MAAM,SAAS,GAAW,OAAO,CAAC,SAAS,CAAC;YAC5C,MAAM,IAAI,GAAiB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC;YAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC;gBACH,0CAA0C;gBAC3C,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBAEtC,gBAAgB;gBAChB,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,eAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,0BAA0B,CAAC,CAAC;wBACzE,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE;4BACjE,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAC;wBACH,6FAA6F;wBAC7F,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,MAAM,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,EAAE,CAAC;4BACvF,eAAM,CAAC,IAAI,CAAC,6CAA6C,OAAO,GAAG,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;4BACpG,eAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,0BAA0B,CAAC,CAAC;4BACvE,MAAM;wBACR,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;wBAC5C,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,EAAE,CAAC;wBACV,eAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,qBAAqB,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;wBAChG,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;4BACzB,eAAM,CAAC,IAAI,CAAC,eAAe,WAAW,OAAO,EAAE,0BAA0B,CAAC,CAAC;4BAC3E,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;wBACzD,CAAC;6BAAK,CAAC;4BACL,eAAM,CAAC,KAAK,CAAC,sCAAsC,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;4BACxF,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,8DAA8D,EAAE,0BAA0B,CAAC,CAAC;gBACzG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACtE,WAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,WAAW;gBACvD,MAAM,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;KAAA;IACD;;OAEG;IACH,0DAA0D;IAC7C,4BAA4B,CAAC,OAAgC;;YACxE,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KAAA;IAED;;;OAGG;IACU,mBAAmB,CAAC,aAAiB,EAAE,eAAsB,EAAE,oBAA2B,EAAC,qBAA0B;;YAChI,IAAI,CAAC;gBACH,eAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,qBAAqB,CAAC,CAAC;gBACrE,eAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,qBAAqB,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBAE3G,IAAI,cAAc,GAAG,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,CAAC;gBACzE,mCAAmC;gBACnC,KAAK,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;oBACrC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,CAAC;wBACpE,4CAA4C;wBAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,CAAE,CAAC;oBAC9F,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,qBAAqB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBAC/F,MAAM,IAAI,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;KAAA;IAED;;;;;;WAMO;IACM,sBAAsB,CAAI,aAA4B,EAAG,iBAAgC,EAAE,OAAU;;YAChH,eAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,wBAAwB,CAAC,CAAA;YAC/E,IAAI,OAAO,GAAW,CAAC,CAAC;YACxB,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,aAAa,CAAC,OAAO,CAAC,CAAC;oBACvB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;oBACV,eAAM,CAAC,KAAK,CAAC,sCAAsC,OAAO,OAAO,UAAU,UAAU,EAAE,wBAAwB,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxJ,IAAI,SAAS,GAAI,OAAmC,aAAnC,OAAO,uBAAP,OAAO,CAA8B,SAAS,CAAA;oBAC/D,MAAM,IAAI,GAAkB,OAAmC,aAAnC,OAAO,uBAAP,OAAO,CAA8B,OAAO,CAAC;oBACzE,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;wBAC1B,eAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,wBAAwB,CAAC,CAAC;wBAC1F,wGAAwG;wBACxG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wBAC5C,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAC3B,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,6CAA6C;oBAC7C,IAAI,UAAkB,CAAC;oBACvB,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,GAAE,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,KAAK,GAAO,WAAW,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,CAAA,CAAC,CAAA,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,CAAA,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;oBACnG,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oBACnE,eAAM,CAAC,IAAI,CAAC,eAAe,UAAU,GAAG,IAAI,aAAa,EAAE,wBAAwB,CAAC,CAAC;oBACrF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAID;;;OAGG;IACU,cAAc,CAAC,SAAiB,EAAE,aAAkB,EAAE,eAAuB,EAAG,oBAA2B;;YACtH,eAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,gBAAgB,CAAC,CAAA;YAC3E,yEAAyE;YACzE,wEAAwE;YACxE,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACxG,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAC;QACvG,CAAC;KAAA;IAAA,CAAC;IAEF;;;;;;;;;OASG;IACW,iBAAiB,CAAC,SAAiB,EAAE,aAAkB,EAAE,eAAuB,EAAE,oBAA4B;;YAC1H,IAAI,OAAO,GAAU,CAAC,CAAC;YACrB,IAAG,gBAAgB,EAAC,CAAC;gBACnB,qEAAqE;gBACrE,qEAAqE;gBACrE,uEAAuE;gBACvE,2DAA2D;gBAC3D,qEAAqE;gBACrE,+BAA+B;gBAC/B,MAAM,EAAE,GAAiB,OAAO,CAAC;gBACjC,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAO,OAAY,EAAE,EAAE;;oBACxD,IAAG,OAAO,EAAC,CAAC;wBACV,eAAM,CAAC,IAAI,CAAC,+BAA+B,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;wBACtG,IAAI,OAAO,GAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAC1D,eAAM,CAAC,IAAI,CAAC,+BAA+B,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;wBACtG,MAAM,OAAO,GAAI,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;wBAClD,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;wBACzC,MAAM,IAAI,GAAO,EAAC,IAAI,EAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,IAAI,EAAE,UAAU,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC;wBACjO,IAAI,CAAC;4BACH,IAAI,OAAO,GAAO,EAAE,CAAC;4BACrB,IAAG,QAAQ,CAAC,cAAc,KAAK,MAAM,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,EAAC,CAAC;gCACzE,eAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,gBAAgB,CAAC,CAAA;gCAC9E,yEAAyE;gCACzE,IAAI,OAAO,aAAa,CAAC,eAAe,CAAC,KAAK,UAAU,EAAE,CAAC;oCACzD,OAAO,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,8BAA8B;gCACjH,CAAC;qCAAM,CAAC;oCACN,eAAM,CAAC,IAAI,CAAC,UAAU,eAAe,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;gCAC1F,CAAC;4BACH,CAAC;4BACD,IAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,MAAK,IAAI,EAAC,CAAC;gCAC5B,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;oCACrB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oCACpE,oCAAoC;oCAClC,OAAO,GAAG,UAAU,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,OAAO,CAAC;oCACxC,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;wCAC7B,eAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,gBAAgB,CAAC,CAAC;wCAClF,wGAAwG;wCACxG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wCAC5C,mCAAmC;wCACnC,IAAI,OAAO,aAAa,CAAC,oBAAoB,CAAC,KAAK,UAAU,EAAE,CAAC;4CAC9D,aAAa,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B;wCAC3E,CAAC;6CAAM,CAAC;4CACN,eAAM,CAAC,IAAI,CAAC,UAAU,oBAAoB,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;wCAC/F,CAAC;wCACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,oCAAoC;wCAChE,OAAO,KAAK,CAAC;oCACf,CAAC;oCACD,OAAO,EAAE,CAAC;oCACV,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAG,CAAC,EAAE,CAAC;wCACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oCACzB,CAAC;oCACD,6CAA6C;oCAC7C,IAAI,UAAkB,CAAC;oCACvB,IAAI,KAAK,GAAO,WAAW,CAAC,MAAM,KAAK,OAAO,CAAA,CAAC,CAAA,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,CAAA,WAAW,CAAC,OAAO,GAAC,CAAC,CAAC,CAAC;oCAC1G,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oCAC3B,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oCACzE,eAAM,CAAC,IAAI,CAAC,eAAe,UAAU,GAAG,IAAI,aAAa,EAAE,gBAAgB,CAAC,CAAC;oCAC7E,0DAA0D;oCAC1D,0DAA0D;oCAC1D,yDAAyD;oCACzD,6CAA6C;oCAC7C,sDAAsD;oCACtD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;oCAC1B,OAAO;gCACX,CAAC;qCAAM,CAAC;oCACN,eAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,gBAAgB,CAAC,CAAC;gCACzE,CAAC;gCACD,wCAAwC;gCACxC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;4BAC5B,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,YAAY,GAAW,KAAe,CAAC,OAAO,CAAC;4BACnD,eAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC;4BACrF,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;4BAC5C,mCAAmC;4BACnC,IAAI,OAAO,aAAa,CAAC,oBAAoB,CAAC,KAAK,UAAU,EAAE,CAAC;gCAC9D,aAAa,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B;4BAC3E,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,IAAI,CAAC,UAAU,oBAAoB,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;4BAC/F,CAAC;4BACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,oCAAoC;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC,CAAA,CAAC,CAAC;YACL,CAAC;QACL,CAAC;KAAA;IAAA,CAAC;IAEF;;;;OAIG;IACW,mBAAmB;;YAC/B,IAAI,mBAAmB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,eAAM,CAAC,IAAI,CAAC,kBAAkB,mBAAmB,CAAC,IAAI,gCAAgC,EAAE,qBAAqB,CAAC,CAAC;YAC/G,KAAK,MAAM,CAAC,IAAI,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC;oBACtG,eAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,SAAS,EAAE,EAAE,qBAAqB,CAAC,CAAC;gBACvF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,eAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,SAAS,EAAE,EAAE,qBAAqB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBAC3H,CAAC;YACH,CAAC;QACH,CAAC;KAAA;IAED;;;;;;OAMG;IACK,OAAO,CAAC,EAAgB,EAAE,OAAqB;QACrD,IAAI,CAAC;YACH,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,SAAS,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,EAAgB,EAAE,OAAqB;QACtD,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,UAAU,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,MAAM;IACN,2CAA2C;IAC3C,oBAAoB;IACpB,eAAe;IACf,MAAM;IACN,qFAAqF;IACrF,kEAAkE;IAClE,iBAAiB;IACjB,IAAI;IAEJ,MAAM;IACN,gDAAgD;IAChD,oBAAoB;IACpB,cAAc;IACd,MAAM;IAEN,oEAAoE;IACpE,uEAAuE;IACvE,iBAAiB;IACjB,IAAI;IAGJ;;;;;;OAMG;IAEU,uBAAuB,CAAC,OAAc,EAAE,IAAQ;;YAC3D,eAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,wBAAwB,CAAC,CAAA;YACnF,IAAI,CAAC;gBACH,IAAG,gBAAgB,EAAC,CAAC;oBACnB,eAAM,CAAC,IAAI,CAAC,4CAA4C,SAAS,cAAc,OAAO,kBAAkB,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,SAAS,EAAE,wBAAwB,CAAC,CAAC;oBAC9L,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC7E,UAAU,EAAE,IAAI;wBAChB,OAAO,EAAE;4BACP,eAAe,EAAE,OAAO,GAAC,CAAC;yBAC3B;qBACF,CAAC,CAAC;oBACH,IAAI,IAAI,EAAE,CAAC;wBACT,eAAM,CAAC,IAAI,CAAC,gDAAgD,SAAS,cAAc,OAAO,kBAAkB,OAAO,GAAG,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;oBACxJ,CAAC;yBAAM,CAAC;wBACN,eAAM,CAAC,KAAK,CAAC,2CAA2C,SAAS,oCAAoC,OAAO,kBAAkB,OAAO,GAAG,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;oBAC1K,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,KAAK,CAAC,+DAA+D,SAAS,cAAc,OAAO,GAAG,EAAE,wBAAwB,CAAC,CAAC;oBACzI,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,+CAAgD,KAAe,CAAC,OAAO,YAAY,SAAS,cAAc,OAAO,GAAG,EAAE,wBAAwB,CAAC,CAAC;gBAC7J,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAGD;;;;;;;OAOG;IAEU,uBAAuB,CAAC,OAAc,EAAE,IAAQ,EAAE,UAAc,EAAE,SAAgB;;YAC7F,eAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,yBAAyB,CAAC,CAAA;YAC9E,IAAI,CAAC;gBACH,IAAG,gBAAgB,EAAC,CAAC;oBACnB,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;wBACxD,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;4BACvD,OAAO,EAAE;gCACP,eAAe,EAAE,OAAO,GAAG,CAAC;gCAC5B,eAAe,EAAE,UAAU;6BAC5B;yBACF,CAAC,CAAC;wBACL,IAAI,IAAI,EAAE,CAAC;4BACT,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;4BACjF,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;6BAAM,CAAC;4BACN,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BAC3F,MAAM,CAAC,KAAK,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,yBAAyB,EAAE,EAAC,OAAO,EAAG,KAAgB,CAAC,OAAO,EAAC,CAAC,CAAC;gBACtH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAED;;;;;OAKG;IACU,oBAAoB,CAAC,SAAgB,EAAE,YAAmB;;;YACrE,eAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,sBAAsB,CAAC,CAAC;YACvE,IAAI,CAAC;gBACH,IAAI,SAAS,GAAQ,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC;gBAC3C,IAAI,MAAM,GAAQ,UAAU,CAAC,MAAM,CAAC;gBACpC,IAAI,QAAQ,GAAQ,UAAU,CAAC,QAAQ,CAAC;gBACxC,8BAA8B;gBAE9B,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBACxB,IAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,SAAS,EAAC,CAAC;wBAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;oBACD,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;gBACtE,CAAC;gBAED,iCAAiC;gBACjC,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC3B,IAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,YAAY,EAAC,CAAC;wBAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAClC,CAAC;oBACD,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;gBACxE,CAAC;gBAED,kEAAkE;gBAClE,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAA,QAAQ,CAAC,GAAG,CAAC,0CAAE,OAAO,CAAC,CAAO,GAAQ,EAAE,EAAE;wBACxC,IAAG,GAAG,KAAK,YAAY,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,MAAK,SAAS,EAAC,CAAC;4BACnD,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,CAAC,CAAC;wBACrE,CAAC;wBACD,eAAM,CAAC,IAAI,CAAC,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,4BAA4B,GAAG,oBAAoB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAC;oBACzH,CAAC,CAAA,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,sBAAsB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBAC/G,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAED;;MAEE;IACY,yBAAyB;;YACrC,eAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,2BAA2B,CAAC,CAAC;YAChF,iCAAiC;YAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,eAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE,0BAA0B,CAAC,CAAC;gBAC3F,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChC,CAAC;YACD,gCAAgC;YAChC,MAAM,iBAAiB,GAAQ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC;YACnD,IAAI,CAAC,OAAO,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACzE,eAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,0BAA0B,CAAC,CAAC;gBAC5F,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/B,CAAC;QACL,CAAC;KAAA;IAED;;MAEE;IACY,eAAe;;YAC3B,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,CAAA;gBAC1C,eAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,iBAAiB,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,eAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;KAAA;IAED;;;;MAIE;IACY,uBAAuB;;;YACnC,eAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,yBAAyB,CAAC,CAAC;YAC7E,IAAI,CAAC;gBACH,IAAI,SAAS,GAAQ,UAAU,CAAC,SAAS,CAAC;gBAC1C,IAAI,MAAM,GAAQ,UAAU,CAAC,MAAM,CAAC;gBACpC,IAAI,QAAQ,GAAQ,UAAU,CAAC,QAAQ,CAAC;gBACxC,iCAAiC;gBACjC,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAChC,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;gBAC3E,CAAC;gBAED,8BAA8B;gBAC9B,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC7B,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;gBACzE,CAAC;gBAED,kEAAkE;gBAClE,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAA,QAAQ,CAAC,GAAG,CAAC,0CAAE,OAAO,CAAC,CAAO,GAAQ,EAAE,EAAE;wBACxC,MAAM,IAAI,CAAC,qBAAqB,CAAE,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,CAAC,CAAC;wBACpE,eAAM,CAAC,IAAI,CAAC,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,4BAA4B,GAAG,oBAAoB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;oBAC5H,CAAC,CAAA,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,yBAAyB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACpH,CAAC;QACH,CAAC;KAAA;IAAA,CAAC;IAGF;;;;;OAKG;IAEW,qBAAqB,CAAC,YAAmB,EAAE,SAAgB,EAAE,UAAiB;;YAC1F,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,SAAS,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1G,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,uBAAuB,EAAE,EAAC,OAAO,EAAE,KAAe,CAAC,OAAO,EAAC,CAAC,CAAC;YAChH,CAAC;QAEH,CAAC;KAAA;IAGA;;;MAGE;IAEW,WAAW,CAAC,IAAQ;;YAChC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACtJ,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,aAAa,EAAE,EAAC,OAAO,EAAE,KAAe,CAAC,OAAO,EAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;KAAA;IAEA;;;MAGE;IAEY,cAAc,CAAC,IAAQ;;YACpC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9G,CAAC;YAAC,OAAO,KAAa,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,gBAAgB,EAAE,EAAC,OAAO,EAAE,KAAe,CAAC,OAAO,EAAC,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;KAAA;IAED,8FAA8F;IAC9F,UAAU;IACV,mIAAmI;IACnI,sEAAsE;IACtE,gFAAgF;IAChF,uEAAuE;IACvE,iEAAiE;IACjE,QAAQ;IACR,oDAAoD;IACpD,8BAA8B;IAC9B,iDAAiD;IACjD,mHAAmH;IACnH,kCAAkC;IAClC,gFAAgF;IAChF,+FAA+F;IAC/F,wEAAwE;IACxE,sBAAsB;IACtB,mIAAmI;IACnI,mBAAmB;IACnB,MAAM;IACN,IAAI;IAEJ;;QAEI;IACS,gBAAgB;;YAC3B,IAAI,CAAC;gBACH,eAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAC;gBAC/D,aAAa,CAAC,UAAU,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,CAAC,CAAC;gBAChD,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAa,GAAE,CAAC;gBACrC,IAAI,GAAG,GAAW,UAAU,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,uBAAW,CAAC,aAAa,CAAC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,uBAAW,CAAC,aAAa,CAAC,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAC;gBAC3H,yCAAyC;gBACzC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,EAAE,CAAC,CAAC;gBACzE,gBAAgB,GAAG,IAAI,CAAC;gBACxB,8BAA8B;gBAC9B,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,iBAAiB;gBACjB,OAAO,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,CAAC;gBAC3C,4EAA4E;gBAC5E,yEAAyE;gBACzE,sEAAsE;gBACtE,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,eAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,kBAAkB,CAAC,CAAC;gBACrE,mDAAmD;gBACnD,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACrC,sEAAsE;gBACtE,uEAAuE;gBACvE,oEAAoE;gBACpE,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjC,MAAM,iBAAiB,GAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;gBACpE,OAAO,iBAAiB,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0DAA0D;gBAC1D,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,EAAG,KAAe,aAAf,KAAK,uBAAL,KAAK,CAAY,OAAO,CAAC,CAAC;gBACvF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAkC,CAAC;YAC7E,CAAC;QACH,CAAC;KAAA;IAED;;;OAGG;IACM,0BAA0B;QACjC,IAAI,CAAC;YACH,2EAA2E;YAC3E,0CAA0C;YAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;;gBAClC,eAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,kBAAkB,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,GAAG,CAAC,CAAC;YACtG,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAM,GAAQ,EAAE,EAAE;;gBACvC,eAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,mBAAmB,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,GAAG,CAAC,CAAC;gBACrG,gBAAgB,GAAG,KAAK,CAAC;gBACzB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/B,CAAC,CAAA,CAAC,CAAC;YACH,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,GAAG,KAAK,CAAC;YACzB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;IAEH,CAAC;IAED;;;;;OAKG;IACK,uBAAuB;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;;gBAC/B,eAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,eAAe,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,GAAG,CAAC,CAAC;YAChG,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAS,EAAE;gBAC7B,eAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,gBAAgB,CAAC,CAAC;gBAC1E,wEAAwE;gBACxE,yEAAyE;gBACzE,yEAAyE;gBACzE,IAAI,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;oBACxC,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;wBAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAC/B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBACjC,eAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE,yBAAyB,CAAC,CAAC;oBAChG,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,eAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,yBAAyB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;oBAC7G,CAAC;gBACH,CAAC;YACH,CAAC,CAAA,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,yBAAyB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACW,eAAe;;;YAC3B,IAAI,cAAc,EAAE,CAAC;gBACnB,eAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE,iBAAiB,CAAC,CAAC;gBAC5F,OAAO;YACT,CAAC;YACD,cAAc,GAAG,IAAI,CAAC;YACtB,eAAe,GAAG,CAAC,CAAC;YACpB,0EAA0E;YAC1E,MAAM,QAAQ,GAAa,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5G,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3E,IAAI,CAAC;gBACH,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,mCAAI,UAAU,CAAC;oBAC1D,eAAM,CAAC,IAAI,CAAC,qBAAqB,eAAe,OAAO,KAAK,GAAG,IAAI,MAAM,EAAE,iBAAiB,CAAC,CAAC;oBAC9F,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzD,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC9B,IAAI,gBAAgB,EAAE,CAAC;4BACrB,eAAe,GAAG,CAAC,CAAC;4BACpB,eAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,iBAAiB,CAAC,CAAC;4BACvE,OAAO;wBACT,CAAC;wBACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;oBAC3E,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,eAAM,CAAC,KAAK,CAAC,qBAAqB,eAAe,SAAS,EAAE,iBAAiB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;wBACzG,eAAe,EAAE,CAAC;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;KAAA;CAEF;AAvyBD,kDAuyBC"}
|
package/package.json
CHANGED
|
@@ -27,6 +27,23 @@ let dlx_queue:string = RABBITMQ.DLX_QUEUE;
|
|
|
27
27
|
// let retry_queue:string = RABBITMQ.RETRY_QUEUE;
|
|
28
28
|
let connectionRetry:number = 1;
|
|
29
29
|
let retryCountHeader = 'x-retry-count';
|
|
30
|
+
|
|
31
|
+
// Registry of active consumers so they can be re-subscribed after any
|
|
32
|
+
// (re)connect. Without this, a connection blip brings the socket back up but
|
|
33
|
+
// leaves every queue with no consumer attached (the primary "consumer
|
|
34
|
+
// frequently detaches" bug). Keyed by queueName to avoid duplicate
|
|
35
|
+
// subscriptions on the same queue.
|
|
36
|
+
interface RegisteredConsumer {
|
|
37
|
+
queueName: string;
|
|
38
|
+
classInstance: any;
|
|
39
|
+
consumerHandler: string;
|
|
40
|
+
consumerErrorHandler: string;
|
|
41
|
+
}
|
|
42
|
+
let registeredConsumers: Map<string, RegisteredConsumer> = new Map();
|
|
43
|
+
// Guards handleReconnect() so overlapping close/error events don't spawn
|
|
44
|
+
// multiple concurrent reconnect loops.
|
|
45
|
+
let isReconnecting = false;
|
|
46
|
+
|
|
30
47
|
export class MessageBrokerClient {
|
|
31
48
|
|
|
32
49
|
// private readonly correlationId: string;
|
|
@@ -278,9 +295,33 @@ export class MessageBrokerClient {
|
|
|
278
295
|
*/
|
|
279
296
|
public async consumeMessage(queueName: string, classInstance: any, consumerHandler: string , consumerErrorHandler:string) {
|
|
280
297
|
Logger.info("Reached: Consuming messages from the queue", 'consumeMessage')
|
|
298
|
+
// Remember this consumer so it can be re-attached after any reconnect or
|
|
299
|
+
// channel recreation. Keyed by queueName so repeated calls don't stack.
|
|
300
|
+
registeredConsumers.set(queueName, { queueName, classInstance, consumerHandler, consumerErrorHandler });
|
|
301
|
+
return await this.subscribeConsumer(queueName, classInstance, consumerHandler, consumerErrorHandler);
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Function to attach a single consumer to a queue. Performs the actual
|
|
306
|
+
* channel.consume() and owns the ack/retry/DLQ logic. Kept separate from
|
|
307
|
+
* consumeMessage() so re-subscription (on reconnect) does not re-register
|
|
308
|
+
* the consumer in the registry, which would grow it unboundedly.
|
|
309
|
+
* @param queueName
|
|
310
|
+
* @param classInstance
|
|
311
|
+
* @param consumerHandler
|
|
312
|
+
* @param consumerErrorHandler
|
|
313
|
+
*/
|
|
314
|
+
private async subscribeConsumer(queueName: string, classInstance: any, consumerHandler: string, consumerErrorHandler: string) {
|
|
281
315
|
let attempt:number = 0;
|
|
282
316
|
if(isConnectionOpen){
|
|
283
|
-
|
|
317
|
+
// Capture the channel this consumer is registered on. acks/nacks for
|
|
318
|
+
// messages delivered here MUST go back to this same channel object —
|
|
319
|
+
// if the module-level `channel` is later reassigned (recreateChannel /
|
|
320
|
+
// createConnection), acking against the new channel raises
|
|
321
|
+
// PRECONDITION_FAILED ("unknown delivery tag") and closes it, taking
|
|
322
|
+
// every consumer down with it.
|
|
323
|
+
const ch: amqp.Channel = channel;
|
|
324
|
+
return await ch.consume(queueName, async (message: any) => {
|
|
284
325
|
if(message){
|
|
285
326
|
Logger.info(`Message received from queue ${queueName}: ${JSON.stringify(message)}`, 'consumeMessage');
|
|
286
327
|
let msgData: any = JSON.parse(message.content.toString());
|
|
@@ -314,7 +355,7 @@ export class MessageBrokerClient {
|
|
|
314
355
|
} else {
|
|
315
356
|
Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
|
|
316
357
|
}
|
|
317
|
-
|
|
358
|
+
this.safeNack(ch, message); // Move message to DLQ after failure
|
|
318
359
|
return false;
|
|
319
360
|
}
|
|
320
361
|
attempt++;
|
|
@@ -327,12 +368,18 @@ export class MessageBrokerClient {
|
|
|
327
368
|
retryDelay = Number(count);
|
|
328
369
|
await this.sendMessageToRetryQueue(attempt, data, retryDelay, queueName);
|
|
329
370
|
Logger.info(`Retrying in ${retryDelay / 1000} seconds...`, 'consumeMessage');
|
|
330
|
-
|
|
371
|
+
// Ack immediately once the message is safely on the retry
|
|
372
|
+
// queue. Do NOT block the delivery for the full TTL — the
|
|
373
|
+
// delay is enforced by the retry queue's own expiration.
|
|
374
|
+
// Holding it here risks breaching RabbitMQ's
|
|
375
|
+
// consumer_timeout and getting the channel cancelled.
|
|
376
|
+
this.safeAck(ch, message);
|
|
377
|
+
return;
|
|
331
378
|
} else {
|
|
332
379
|
Logger.info(`Acknowledge the successful processing`, 'consumeMessage');
|
|
333
380
|
}
|
|
334
381
|
// Acknowledge the successful processing
|
|
335
|
-
|
|
382
|
+
this.safeAck(ch, message);
|
|
336
383
|
}
|
|
337
384
|
} catch (error) {
|
|
338
385
|
let errorMessage:string = (error as Error).message;
|
|
@@ -344,13 +391,62 @@ export class MessageBrokerClient {
|
|
|
344
391
|
} else {
|
|
345
392
|
Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
|
|
346
393
|
}
|
|
347
|
-
|
|
394
|
+
this.safeNack(ch, message); // Move message to DLQ after failure
|
|
348
395
|
}
|
|
349
396
|
}
|
|
350
397
|
});
|
|
351
398
|
}
|
|
352
399
|
};
|
|
353
400
|
|
|
401
|
+
/**
|
|
402
|
+
* Function to re-attach every registered consumer. Called after each
|
|
403
|
+
* successful (re)connect and after a channel is recreated, so queues never
|
|
404
|
+
* end up with the connection alive but no consumer attached.
|
|
405
|
+
*/
|
|
406
|
+
private async reregisterConsumers(): Promise<void> {
|
|
407
|
+
if (registeredConsumers.size === 0) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
Logger.info(`Re-subscribing ${registeredConsumers.size} consumer(s) after (re)connect`, 'reregisterConsumers');
|
|
411
|
+
for (const c of registeredConsumers.values()) {
|
|
412
|
+
try {
|
|
413
|
+
await this.subscribeConsumer(c.queueName, c.classInstance, c.consumerHandler, c.consumerErrorHandler);
|
|
414
|
+
Logger.info(`Consumer re-subscribed on queue ${c.queueName}`, 'reregisterConsumers');
|
|
415
|
+
} catch (error) {
|
|
416
|
+
Logger.error(`Failed to re-subscribe consumer on queue ${c.queueName}`, 'reregisterConsumers', (error as Error).message);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Function to ack a message against the channel it was delivered on, guarded
|
|
423
|
+
* so a stale delivery tag (channel already replaced) cannot throw and take
|
|
424
|
+
* down the current channel.
|
|
425
|
+
* @param ch the channel the message was consumed on
|
|
426
|
+
* @param message
|
|
427
|
+
*/
|
|
428
|
+
private safeAck(ch: amqp.Channel, message: amqp.Message): void {
|
|
429
|
+
try {
|
|
430
|
+
ch.ack(message);
|
|
431
|
+
} catch (error) {
|
|
432
|
+
Logger.error('Failed to ack message (stale channel?)', 'safeAck', (error as Error).message);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* Function to nack a message against the channel it was delivered on, guarded
|
|
438
|
+
* against stale delivery tags. Never requeues (routes to DLQ).
|
|
439
|
+
* @param ch the channel the message was consumed on
|
|
440
|
+
* @param message
|
|
441
|
+
*/
|
|
442
|
+
private safeNack(ch: amqp.Channel, message: amqp.Message): void {
|
|
443
|
+
try {
|
|
444
|
+
ch.nack(message, false, false);
|
|
445
|
+
} catch (error) {
|
|
446
|
+
Logger.error('Failed to nack message (stale channel?)', 'safeNack', (error as Error).message);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
|
|
354
450
|
// /**
|
|
355
451
|
// * Function for consumer massage handler
|
|
356
452
|
// * @param request
|
|
@@ -639,9 +735,17 @@ export class MessageBrokerClient {
|
|
|
639
735
|
// create channel
|
|
640
736
|
channel = await connection.createConfirmChannel();
|
|
641
737
|
channel.prefetch(RABBITMQ?.PREFETCH_COUNT);
|
|
738
|
+
// Watch the channel itself: a channel-level fault (e.g. PRECONDITION_FAILED
|
|
739
|
+
// from a stale ack) closes the channel and cancels its consumers without
|
|
740
|
+
// closing the connection, so the connection 'close' path never fires.
|
|
741
|
+
this.bindChannelEventHandler();
|
|
642
742
|
Logger.info('RabbitMQ connected successfully! ', 'createConnection');
|
|
643
743
|
// create exchange and queue and bind with exchange
|
|
644
744
|
await this.setupQueuesAndExchanges();
|
|
745
|
+
// Re-attach any consumers registered before this (re)connect. Without
|
|
746
|
+
// this, after a reconnect the connection is healthy but no consumer is
|
|
747
|
+
// bound to the queues — the root cause of consumers "disappearing".
|
|
748
|
+
await this.reregisterConsumers();
|
|
645
749
|
const connectionWrapper: ConnectionWrapper = { connection, channel }
|
|
646
750
|
return connectionWrapper;
|
|
647
751
|
} catch (error) {
|
|
@@ -657,21 +761,15 @@ export class MessageBrokerClient {
|
|
|
657
761
|
*/
|
|
658
762
|
private bindConnectionEventHandler(): boolean {
|
|
659
763
|
try {
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
await this.createConnection();
|
|
665
|
-
connectionRetry++;
|
|
666
|
-
}
|
|
764
|
+
// 'error' always precedes 'close' from amqplib, so only 'close' drives the
|
|
765
|
+
// reconnect to avoid triggering it twice.
|
|
766
|
+
connection.on('error', (err: any) => {
|
|
767
|
+
Logger.error(`RabbitMQ: bindConnectionEventHandler:error`, `Connection error`, err?.message ?? err);
|
|
667
768
|
});
|
|
668
|
-
connection.on('
|
|
669
|
-
Logger.error(`RabbitMQ: bindConnectionEventHandler:
|
|
769
|
+
connection.on('close', async(err: any) => {
|
|
770
|
+
Logger.error(`RabbitMQ: bindConnectionEventHandler:close`, `Connection closed`, err?.message ?? err);
|
|
670
771
|
isConnectionOpen = false;
|
|
671
|
-
|
|
672
|
-
await this.createConnection();
|
|
673
|
-
connectionRetry++;
|
|
674
|
-
}
|
|
772
|
+
await this.handleReconnect();
|
|
675
773
|
});
|
|
676
774
|
return isConnectionOpen;
|
|
677
775
|
} catch (error) {
|
|
@@ -681,5 +779,77 @@ export class MessageBrokerClient {
|
|
|
681
779
|
|
|
682
780
|
}
|
|
683
781
|
|
|
782
|
+
/**
|
|
783
|
+
* Function to bind channel-level event handlers. A channel can be cancelled
|
|
784
|
+
* (e.g. PRECONDITION_FAILED, consumer_timeout) while the connection stays up;
|
|
785
|
+
* in that case the connection 'close' handler never fires, so the channel is
|
|
786
|
+
* recreated and consumers re-attached here.
|
|
787
|
+
*/
|
|
788
|
+
private bindChannelEventHandler(): void {
|
|
789
|
+
try {
|
|
790
|
+
channel.on('error', (err: any) => {
|
|
791
|
+
Logger.error(`RabbitMQ: bindChannelEventHandler:error`, `Channel error`, err?.message ?? err);
|
|
792
|
+
});
|
|
793
|
+
channel.on('close', async () => {
|
|
794
|
+
Logger.error(`RabbitMQ: bindChannelEventHandler:close`, `Channel closed`);
|
|
795
|
+
// Only self-heal the channel while the connection is still open. If the
|
|
796
|
+
// connection is down, handleReconnect() owns recovery (and will recreate
|
|
797
|
+
// the channel + consumers), so doing it here too would double-subscribe.
|
|
798
|
+
if (isConnectionOpen && !isReconnecting) {
|
|
799
|
+
try {
|
|
800
|
+
await this.recreateChannel();
|
|
801
|
+
this.bindChannelEventHandler();
|
|
802
|
+
await this.reregisterConsumers();
|
|
803
|
+
Logger.info('Channel and consumers recovered after channel close', 'bindChannelEventHandler');
|
|
804
|
+
} catch (error) {
|
|
805
|
+
Logger.error('Failed to recover channel after close', 'bindChannelEventHandler', (error as Error).message);
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
});
|
|
809
|
+
} catch (error) {
|
|
810
|
+
Logger.error('Error in bindChannelEventHandler', 'bindChannelEventHandler', (error as Error).message);
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
/**
|
|
815
|
+
* Function to reconnect to RabbitMQ with capped exponential backoff. Unlike
|
|
816
|
+
* the old logic — which capped total lifetime reconnects at MAX_RETRIES and
|
|
817
|
+
* never reset the counter — this retries indefinitely and resets on success,
|
|
818
|
+
* so the service self-heals from every disconnect. createConnection()
|
|
819
|
+
* re-attaches all registered consumers on success.
|
|
820
|
+
*/
|
|
821
|
+
private async handleReconnect(): Promise<void> {
|
|
822
|
+
if (isReconnecting) {
|
|
823
|
+
Logger.info('Reconnect already in progress, skipping duplicate trigger', 'handleReconnect');
|
|
824
|
+
return;
|
|
825
|
+
}
|
|
826
|
+
isReconnecting = true;
|
|
827
|
+
connectionRetry = 1;
|
|
828
|
+
// Backoff schedule derived from the TTL config, capped at its last value.
|
|
829
|
+
const backoffs: number[] = (retry_delay ?? []).map(Number).filter((n: number) => !Number.isNaN(n) && n > 0);
|
|
830
|
+
const maxBackoff = backoffs.length ? backoffs[backoffs.length - 1] : 30000;
|
|
831
|
+
try {
|
|
832
|
+
while (!isConnectionOpen) {
|
|
833
|
+
const delay = backoffs[connectionRetry - 1] ?? maxBackoff;
|
|
834
|
+
Logger.info(`Reconnect attempt ${connectionRetry} in ${delay / 1000}s...`, 'handleReconnect');
|
|
835
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
836
|
+
try {
|
|
837
|
+
await this.createConnection();
|
|
838
|
+
if (isConnectionOpen) {
|
|
839
|
+
connectionRetry = 1;
|
|
840
|
+
Logger.info('Reconnected to RabbitMQ successfully', 'handleReconnect');
|
|
841
|
+
return;
|
|
842
|
+
}
|
|
843
|
+
throw new Error('createConnection did not establish an open connection');
|
|
844
|
+
} catch (error) {
|
|
845
|
+
Logger.error(`Reconnect attempt ${connectionRetry} failed`, 'handleReconnect', (error as Error).message);
|
|
846
|
+
connectionRetry++;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
} finally {
|
|
850
|
+
isReconnecting = false;
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
|
|
684
854
|
}
|
|
685
855
|
|