@gomomento/sdk-core 1.108.0 → 1.110.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.
@@ -12,6 +12,7 @@ export interface SendSubscribeOptions {
|
|
12
12
|
onError: (error: TopicSubscribe.Error, subscription: TopicSubscribe.Subscription) => void;
|
13
13
|
onDiscontinuity: (discontinuity: TopicDiscontinuity) => void;
|
14
14
|
onHeartbeat: (heartbeat: TopicHeartbeat) => void;
|
15
|
+
onConnectionLost: () => void;
|
15
16
|
subscriptionState: SubscriptionState;
|
16
17
|
subscription: TopicSubscribe.Subscription;
|
17
18
|
/**
|
@@ -30,7 +30,7 @@ class AbstractPubsubClient {
|
|
30
30
|
return await this.sendPublish(cacheName, topicName, value);
|
31
31
|
}
|
32
32
|
async subscribe(cacheName, topicName, options) {
|
33
|
-
var _a, _b, _c, _d;
|
33
|
+
var _a, _b, _c, _d, _e;
|
34
34
|
try {
|
35
35
|
(0, utils_1.validateCacheName)(cacheName);
|
36
36
|
(0, utils_1.validateTopicName)(topicName);
|
@@ -51,6 +51,9 @@ class AbstractPubsubClient {
|
|
51
51
|
const onHeartbeat = (_d = options.onHeartbeat) !== null && _d !== void 0 ? _d : (() => {
|
52
52
|
return;
|
53
53
|
});
|
54
|
+
const onConnectionLost = (_e = options.onConnectionLost) !== null && _e !== void 0 ? _e : (() => {
|
55
|
+
return;
|
56
|
+
});
|
54
57
|
const subscriptionState = new subscription_state_1.SubscriptionState();
|
55
58
|
const subscription = new index_1.TopicSubscribe.Subscription(this.loggerFactory, subscriptionState);
|
56
59
|
return await this.sendSubscribe({
|
@@ -60,6 +63,7 @@ class AbstractPubsubClient {
|
|
60
63
|
onError: onError,
|
61
64
|
onDiscontinuity: onDiscontinuity,
|
62
65
|
onHeartbeat: onHeartbeat,
|
66
|
+
onConnectionLost: onConnectionLost,
|
63
67
|
subscriptionState: subscriptionState,
|
64
68
|
subscription: subscription,
|
65
69
|
restartedDueToError: false,
|
@@ -71,8 +75,10 @@ class AbstractPubsubClient {
|
|
71
75
|
// We want to restart on stream end, except if:
|
72
76
|
// 1. The stream was cancelled by the caller.
|
73
77
|
// 2. The stream was restarted following an error.
|
74
|
-
if (options.restartedDueToError
|
78
|
+
if (options.restartedDueToError &&
|
79
|
+
options.subscriptionState.isSubscribed) {
|
75
80
|
this.logger.trace('Stream ended after error but was restarted on topic: %s', options.topicName);
|
81
|
+
options.restartedDueToError = false;
|
76
82
|
return;
|
77
83
|
}
|
78
84
|
else if (!options.subscriptionState.isSubscribed) {
|
@@ -121,6 +127,10 @@ class AbstractPubsubClient {
|
|
121
127
|
this.logger.trace('Error occurred on subscription, possibly a network interruption. Will attempt to restart stream in %s ms.', reconnectDelayMillis);
|
122
128
|
(0, utils_1.sleep)(reconnectDelayMillis)
|
123
129
|
.then(() => {
|
130
|
+
if (!options.subscriptionState.isSubscribed) {
|
131
|
+
this.logger.trace('Subscription was unsubscribed before retrying; aborting reconnect.');
|
132
|
+
return;
|
133
|
+
}
|
124
134
|
// When restarting the stream we do not do anything with the promises,
|
125
135
|
// because we should have already returned the subscription object to the user.
|
126
136
|
this.sendSubscribe(options)
|
@@ -145,4 +155,4 @@ class AbstractPubsubClient {
|
|
145
155
|
}
|
146
156
|
}
|
147
157
|
exports.AbstractPubsubClient = AbstractPubsubClient;
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RQdWJzdWJDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2xpZW50cy9wdWJzdWIvQWJzdHJhY3RQdWJzdWJDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBS3FCO0FBQ3JCLDRDQUFpRDtBQUNqRCwwQ0FTd0I7QUFDeEIsaUVBQTJEO0FBMkMzRCxNQUFzQixvQkFBb0I7SUFPeEMsWUFDRSxhQUFtQyxFQUNuQyxNQUFxQixFQUNyQix1QkFBNkQ7UUFFN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO0lBQ3pELENBQUM7SUFFUyxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRVMsMEJBQTBCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUNsQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixLQUEwQjtRQUUxQixJQUFJO1lBQ0YsSUFBQSx5QkFBaUIsRUFBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixJQUFBLHlCQUFpQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FDcEQsR0FBWSxFQUNaLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxvQkFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDbkMsQ0FBQztZQUNGLDhEQUE4RDtTQUMvRDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdEQUF3RCxFQUN4RCxJQUFBLHNCQUFjLEVBQUMsU0FBUyxDQUFDLEVBQ3pC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QUksMkJBQTJCLEVBQUU7WUFDL0IsT0FBTyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNuQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwyR0FBMkcsRUFDM0csb0JBQW9CLENBQ3JCLENBQUM7WUFDRixJQUFBLGFBQUssRUFBQyxvQkFBb0IsQ0FBQztpQkFDeEIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxzRUFBc0U7Z0JBQ3RFLCtFQUErRTtnQkFDL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7cUJBQ3hCLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ1QsT0FBTztnQkFDVCxDQUFDLENBQUM7cUJBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNULElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLG1EQUFtRCxFQUNuRCxDQUFDLENBQ0YsQ0FBQztvQkFDRixPQUFPO2dCQUNULENBQUMsQ0FBQyxDQUFDO2dCQUNMLE9BQU87WUFDVCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDZEQUE2RCxFQUM3RCxDQUFDLENBQ0YsQ0FBQztnQkFDRixPQUFPO1lBQ1QsQ0FBQyxDQUFDLENBQUM7WUFDTCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDhFQUE4RSxDQUMvRSxDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQWpQRCxvREFpUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBzbGVlcCxcbiAgdHJ1bmNhdGVTdHJpbmcsXG4gIHZhbGlkYXRlQ2FjaGVOYW1lLFxuICB2YWxpZGF0ZVRvcGljTmFtZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNb21lbnRvRXJyb3JDb2RlfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgVG9waWNQdWJsaXNoLFxuICBUb3BpY0l0ZW0sXG4gIE1vbWVudG9Mb2dnZXIsXG4gIFRvcGljU3Vic2NyaWJlLFxuICBTdWJzY3JpYmVDYWxsT3B0aW9ucyxcbiAgTW9tZW50b0xvZ2dlckZhY3RvcnksXG4gIFRvcGljRGlzY29udGludWl0eSxcbiAgVG9waWNIZWFydGJlYXQsXG59IGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCB7U3Vic2NyaXB0aW9uU3RhdGV9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbi1zdGF0ZSc7XG5pbXBvcnQge0lQdWJzdWJDbGllbnR9IGZyb20gJy4vSVB1YnN1YkNsaWVudCc7XG5pbXBvcnQge0lDYWNoZVNlcnZpY2VFcnJvck1hcHBlcn0gZnJvbSAnLi4vLi4vLi4vZXJyb3JzL0lDYWNoZVNlcnZpY2VFcnJvck1hcHBlcic7XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIHBhcmFtZXRlcnMgZm9yIHRoZSBgc2VuZFN1YnNjcmliZWAgbWV0aG9kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRTdWJzY3JpYmVPcHRpb25zIHtcbiAgY2FjaGVOYW1lOiBzdHJpbmc7XG4gIHRvcGljTmFtZTogc3RyaW5nO1xuICBvbkl0ZW06IChpdGVtOiBUb3BpY0l0ZW0pID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChcbiAgICBlcnJvcjogVG9waWNTdWJzY3JpYmUuRXJyb3IsXG4gICAgc3Vic2NyaXB0aW9uOiBUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb25cbiAgKSA9PiB2b2lkO1xuICBvbkRpc2NvbnRpbnVpdHk6IChkaXNjb250aW51aXR5OiBUb3BpY0Rpc2NvbnRpbnVpdHkpID0+IHZvaWQ7XG4gIG9uSGVhcnRiZWF0OiAoaGVhcnRiZWF0OiBUb3BpY0hlYXJ0YmVhdCkgPT4gdm9pZDtcbiAgc3Vic2NyaXB0aW9uU3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlO1xuICBzdWJzY3JpcHRpb246IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RyZWFtIHdhcyByZXN0YXJ0ZWQgZHVlIHRvIGFuIGVycm9yLiBJZiBzbywgd2Ugc2tpcCB0aGUgZW5kIHN0cmVhbSBoYW5kbGVyXG4gICAqIGxvZ2ljIGFzIHRoZSBlcnJvciBoYW5kbGVyIHdpbGwgaGF2ZSByZXN0YXJ0ZWQgdGhlIHN0cmVhbS5cbiAgICovXG4gIHJlc3RhcnRlZER1ZVRvRXJyb3I6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0aGUgZmlyc3QgbWVzc2FnZSBpcyBhbiBlcnJvciwgd2UgcmV0dXJuIGFuIGVycm9yIGltbWVkaWF0ZWx5IGFuZCBkbyBub3Qgc3Vic2NyaWJlLlxuICAgKi9cbiAgZmlyc3RNZXNzYWdlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBwYXJhbWV0ZXJzIGZvciB0aGUgc3Vic2NyaWJlIGNhbGxiYWNrIHByZXBhcmUgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zIGV4dGVuZHMgU2VuZFN1YnNjcmliZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHByb21pc2UgcmVzb2x2ZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlc29sdmU6IChcbiAgICB2YWx1ZTogVG9waWNTdWJzY3JpYmUuUmVzcG9uc2UgfCBQcm9taXNlTGlrZTxUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb24+XG4gICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UHVic3ViQ2xpZW50PFRHcnBjRXJyb3I+XG4gIGltcGxlbWVudHMgSVB1YnN1YkNsaWVudFxue1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlckZhY3Rvcnk6IE1vbWVudG9Mb2dnZXJGYWN0b3J5O1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogSUNhY2hlU2VydmljZUVycm9yTWFwcGVyPFRHcnBjRXJyb3I+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBsb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeSxcbiAgICBsb2dnZXI6IE1vbWVudG9Mb2dnZXIsXG4gICAgY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI6IElDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjxUR3JwY0Vycm9yPlxuICApIHtcbiAgICB0aGlzLmxvZ2dlckZhY3RvcnkgPSBsb2dnZXJGYWN0b3J5O1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIgPSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMb2dnZXIoKTogTW9tZW50b0xvZ2dlciB7XG4gICAgcmV0dXJuIHRoaXMubG9nZ2VyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENhY2hlU2VydmljZUVycm9yTWFwcGVyKCk6IElDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjxUR3JwY0Vycm9yPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVibGlzaChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNhY2hlTmFtZShjYWNoZU5hbWUpO1xuICAgICAgdmFsaWRhdGVUb3BpY05hbWUodG9waWNOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IFRvcGljUHVibGlzaC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgICAgLy8gKSAgbmV3IFRvcGljUHVibGlzaC5FcnJvcihub3JtYWxpemVTZGtFcnJvcihlcnIgYXMgRXJyb3IpKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnSXNzdWluZyBwdWJsaXNoIHJlcXVlc3Q7IHRvcGljOiAlcywgbWVzc2FnZSBsZW5ndGg6ICVzJyxcbiAgICAgIHRydW5jYXRlU3RyaW5nKHRvcGljTmFtZSksXG4gICAgICB2YWx1ZS5sZW5ndGhcbiAgICApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFB1Ymxpc2goY2FjaGVOYW1lLCB0b3BpY05hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZW5kUHVibGlzaChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT47XG5cbiAgcHVibGljIGFzeW5jIHN1YnNjcmliZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdWJzY3JpYmVDYWxsT3B0aW9uc1xuICApOiBQcm9taXNlPFRvcGljU3Vic2NyaWJlLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGNhY2hlTmFtZSk7XG4gICAgICB2YWxpZGF0ZVRvcGljTmFtZSh0b3BpY05hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgVG9waWNTdWJzY3JpYmUuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnSXNzdWluZyBzdWJzY3JpYmUgcmVxdWVzdDsgdG9waWM6ICVzJyxcbiAgICAgIHRydW5jYXRlU3RyaW5nKHRvcGljTmFtZSlcbiAgICApO1xuXG4gICAgY29uc3Qgb25JdGVtID1cbiAgICAgIG9wdGlvbnMub25JdGVtID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkVycm9yID1cbiAgICAgIG9wdGlvbnMub25FcnJvciA/P1xuICAgICAgKCgpID0+IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSk7XG4gICAgY29uc3Qgb25EaXNjb250aW51aXR5ID1cbiAgICAgIG9wdGlvbnMub25EaXNjb250aW51aXR5ID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkhlYXJ0YmVhdCA9XG4gICAgICBvcHRpb25zLm9uSGVhcnRiZWF0ID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHN1YnNjcmlwdGlvblN0YXRlID0gbmV3IFN1YnNjcmlwdGlvblN0YXRlKCk7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbmV3IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMubG9nZ2VyRmFjdG9yeSxcbiAgICAgIHN1YnNjcmlwdGlvblN0YXRlXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kU3Vic2NyaWJlKHtcbiAgICAgIGNhY2hlTmFtZTogY2FjaGVOYW1lLFxuICAgICAgdG9waWNOYW1lOiB0b3BpY05hbWUsXG4gICAgICBvbkl0ZW06IG9uSXRlbSxcbiAgICAgIG9uRXJyb3I6IG9uRXJyb3IsXG4gICAgICBvbkRpc2NvbnRpbnVpdHk6IG9uRGlzY29udGludWl0eSxcbiAgICAgIG9uSGVhcnRiZWF0OiBvbkhlYXJ0YmVhdCxcbiAgICAgIHN1YnNjcmlwdGlvblN0YXRlOiBzdWJzY3JpcHRpb25TdGF0ZSxcbiAgICAgIHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uLFxuICAgICAgcmVzdGFydGVkRHVlVG9FcnJvcjogZmFsc2UsXG4gICAgICBmaXJzdE1lc3NhZ2U6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2VuZFN1YnNjcmliZShcbiAgICBvcHRpb25zOiBTZW5kU3Vic2NyaWJlT3B0aW9uc1xuICApOiBQcm9taXNlPFRvcGljU3Vic2NyaWJlLlJlc3BvbnNlPjtcblxuICBwcm90ZWN0ZWQgcHJlcGFyZUVuZENhbGxiYWNrKFxuICAgIG9wdGlvbnM6IFByZXBhcmVTdWJzY3JpYmVDYWxsYmFja09wdGlvbnNcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8vIFdlIHdhbnQgdG8gcmVzdGFydCBvbiBzdHJlYW0gZW5kLCBleGNlcHQgaWY6XG4gICAgICAvLyAxLiBUaGUgc3RyZWFtIHdhcyBjYW5jZWxsZWQgYnkgdGhlIGNhbGxlci5cbiAgICAgIC8vIDIuIFRoZSBzdHJlYW0gd2FzIHJlc3RhcnRlZCBmb2xsb3dpbmcgYW4gZXJyb3IuXG4gICAgICBpZiAob3B0aW9ucy5yZXN0YXJ0ZWREdWVUb0Vycm9yKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAgICdTdHJlYW0gZW5kZWQgYWZ0ZXIgZXJyb3IgYnV0IHdhcyByZXN0YXJ0ZWQgb24gdG9waWM6ICVzJyxcbiAgICAgICAgICBvcHRpb25zLnRvcGljTmFtZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmlzU3Vic2NyaWJlZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAnU3RyZWFtIGVuZGVkIGFmdGVyIHVuc3Vic2NyaWJlIG9uIHRvcGljOiAlcycsXG4gICAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgJ1N0cmVhbSBlbmRlZCBvbiB0b3BpYzogJXM7IHJlc3RhcnRpbmcuJyxcbiAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICk7XG5cbiAgICAgIC8vIFdoZW4gcmVzdGFydGluZyB0aGUgc3RyZWFtIHdlIGRvIG5vdCBkbyBhbnl0aGluZyB3aXRoIHRoZSBwcm9taXNlcyxcbiAgICAgIC8vIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSByZXR1cm5lZCB0aGUgc3Vic2NyaXB0aW9uIG9iamVjdCB0byB0aGUgdXNlci5cbiAgICAgIHRoaXMuc2VuZFN1YnNjcmliZShvcHRpb25zKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTdWJzY3JpYmVFcnJvcihcbiAgICBvcHRpb25zOiBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zLFxuICAgIG1vbWVudG9FcnJvcjogVG9waWNTdWJzY3JpYmUuRXJyb3IsXG4gICAgc2hvdWxkUmVjb25uZWN0U3Vic2NyaXB0aW9uOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKCdIYW5kbGluZyBzdWJzY3JpYmUgZXJyb3InKTtcbiAgICAvLyBXaGVuIHRoZSBmaXJzdCBtZXNzYWdlIGlzIGFuIGVycm9yLCBhbiBpcnJlY292ZXJhYmxlIGVycm9yIGhhcyBoYXBwZW5lZCxcbiAgICAvLyBlZyB0aGUgY2FjaGUgZG9lcyBub3QgZXhpc3QuIFRoZSB1c2VyIHNob3VsZCBub3QgcmVjZWl2ZSBhIHN1YnNjcmlwdGlvblxuICAgIC8vIG9iamVjdCBidXQgYW4gZXJyb3IuXG4gICAgaWYgKG9wdGlvbnMuZmlyc3RNZXNzYWdlKSB7XG4gICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgJ0ZpcnN0IG1lc3NhZ2Ugb24gc3Vic2NyaXB0aW9uIHdhcyBhbiBlcnJvcjsgdG9waWM6ICVzLCBlcnJvcjogJXMnLFxuICAgICAgICB0cnVuY2F0ZVN0cmluZyhvcHRpb25zLnRvcGljTmFtZSksXG4gICAgICAgIG1vbWVudG9FcnJvci50b1N0cmluZygpXG4gICAgICApO1xuXG4gICAgICBvcHRpb25zLnJlc29sdmUobW9tZW50b0Vycm9yKTtcbiAgICAgIG9wdGlvbnMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnU3Vic2NyaWJlIGVycm9yIHdhcyBub3QgdGhlIGZpcnN0IG1lc3NhZ2Ugb24gdGhlIHN0cmVhbS4nXG4gICAgKTtcblxuICAgIC8vIEFub3RoZXIgc3BlY2lhbCBjYXNlIGlzIHdoZW4gdGhlIGNhY2hlIGlzIG5vdCBmb3VuZC5cbiAgICAvLyBUaGlzIGhhcHBlbnMgaGVyZSBpZiB0aGUgdXNlciBkZWxldGVzIHRoZSBjYWNoZSBpbiB0aGUgbWlkZGxlIG9mXG4gICAgLy8gYSBzdWJzY3JpcHRpb24uXG4gICAgaWYgKG1vbWVudG9FcnJvci5lcnJvckNvZGUoKSA9PT0gTW9tZW50b0Vycm9yQ29kZS5DQUNIRV9OT1RfRk9VTkRfRVJST1IpIHtcbiAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAnU3RyZWFtIGVuZGVkIGR1ZSB0byBjYWNoZSBub3QgZm91bmQgZXJyb3Igb24gdG9waWM6ICVzJyxcbiAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICk7XG4gICAgICBvcHRpb25zLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgb3B0aW9ucy5vbkVycm9yKG1vbWVudG9FcnJvciwgb3B0aW9ucy5zdWJzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgJ0NoZWNraW5nIHRvIHNlZSBpZiB3ZSBzaG91bGQgYXR0ZW1wdCB0byByZWNvbm5lY3Qgc3Vic2NyaXB0aW9uLidcbiAgICApO1xuXG4gICAgLy8gRm9yIHNldmVyYWwgdHlwZXMgb2YgZXJyb3JzIGhhdmluZyB0byB3aXRoIG5ldHdvcmsgaW50ZXJydXB0aW9ucywgd2Ugd2lzaCB0b1xuICAgIC8vIHRyYW5zcGFyZW50bHkgcmVzdGFydCB0aGUgc3RyZWFtIGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgYW4gZXJyb3IuXG4gICAgaWYgKHNob3VsZFJlY29ubmVjdFN1YnNjcmlwdGlvbikge1xuICAgICAgb3B0aW9ucy5yZXN0YXJ0ZWREdWVUb0Vycm9yID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlY29ubmVjdERlbGF5TWlsbGlzID0gNTAwO1xuICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICdFcnJvciBvY2N1cnJlZCBvbiBzdWJzY3JpcHRpb24sIHBvc3NpYmx5IGEgbmV0d29yayBpbnRlcnJ1cHRpb24uIFdpbGwgYXR0ZW1wdCB0byByZXN0YXJ0IHN0cmVhbSBpbiAlcyBtcy4nLFxuICAgICAgICByZWNvbm5lY3REZWxheU1pbGxpc1xuICAgICAgKTtcbiAgICAgIHNsZWVwKHJlY29ubmVjdERlbGF5TWlsbGlzKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgLy8gV2hlbiByZXN0YXJ0aW5nIHRoZSBzdHJlYW0gd2UgZG8gbm90IGRvIGFueXRoaW5nIHdpdGggdGhlIHByb21pc2VzLFxuICAgICAgICAgIC8vIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSByZXR1cm5lZCB0aGUgc3Vic2NyaXB0aW9uIG9iamVjdCB0byB0aGUgdXNlci5cbiAgICAgICAgICB0aGlzLnNlbmRTdWJzY3JpYmUob3B0aW9ucylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgICAgICAgJ0Vycm9yIHdoZW4gY2FsbGluZyBzZW5kU3Vic2NyaWJlIHRvIHJlY29ubmVjdDogJXMnLFxuICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgICAnRXJyb3Igd2hlbiBzbGVlcGluZyBwcmlvciB0byBzZW5kU3Vic2NyaWJlIHRvIHJlY29ubmVjdDogJXMnLFxuICAgICAgICAgICAgZVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlci50cmFjZSgnU3Vic2NyaWJlIGVycm9yIHdhcyBub3QgYSByZS1jb25uZWN0YWJsZSBlcnJvci4nKTtcblxuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgJ1N1YnNjcmliZSBlcnJvciB3YXMgbm90IG9uZSBvZiB0aGUga25vd24gZXJyb3IgdHlwZXM7IGNhbGxpbmcgZXJyb3IgaGFuZGxlci4nXG4gICAgKTtcbiAgICBvcHRpb25zLm9uRXJyb3IobW9tZW50b0Vycm9yLCBvcHRpb25zLnN1YnNjcmlwdGlvbik7XG4gIH1cbn1cbiJdfQ==
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RQdWJzdWJDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2xpZW50cy9wdWJzdWIvQWJzdHJhY3RQdWJzdWJDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBS3FCO0FBQ3JCLDRDQUFpRDtBQUNqRCwwQ0FTd0I7QUFDeEIsaUVBQTJEO0FBNEMzRCxNQUFzQixvQkFBb0I7SUFPeEMsWUFDRSxhQUFtQyxFQUNuQyxNQUFxQixFQUNyQix1QkFBNkQ7UUFFN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO0lBQ3pELENBQUM7SUFFUyxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRVMsMEJBQTBCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUNsQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixLQUEwQjtRQUUxQixJQUFJO1lBQ0YsSUFBQSx5QkFBaUIsRUFBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixJQUFBLHlCQUFpQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FDcEQsR0FBWSxFQUNaLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxvQkFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDbkMsQ0FBQztZQUNGLDhEQUE4RDtTQUMvRDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdEQUF3RCxFQUN4RCxJQUFBLHNCQUFjLEVBQUMsU0FBUyxDQUFDLEVBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztRQUVGLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQVFNLEtBQUssQ0FBQyxTQUFTLENBQ3BCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLE9BQTZCOztRQUU3QixJQUFJO1lBQ0YsSUFBQSx5QkFBaUIsRUFBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixJQUFBLHlCQUFpQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FDcEQsR0FBWSxFQUNaLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxzQkFBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDckMsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Ysc0NBQXNDLEVBQ3RDLElBQUEsc0JBQWMsRUFBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUNWLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQ2QsQ0FBQyxHQUFHLEVBQUU7WUFDSixPQUFPO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDTCxNQUFNLE9BQU8sR0FDWCxNQUFBLE9BQU8sQ0FBQyxPQUFPLG1DQUNmLENBQUMsR0FBRyxFQUFFO1lBQ0osT0FBTztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxlQUFlLEdBQ25CLE1BQUEsT0FBTyxDQUFDLGVBQWUsbUNBQ3ZCLENBQUMsR0FBRyxFQUFFO1lBQ0osT0FBTztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxXQUFXLEdBQ2YsTUFBQSxPQUFPLENBQUMsV0FBVyxtQ0FDbkIsQ0FBQyxHQUFHLEVBQUU7WUFDSixPQUFPO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDTCxNQUFNLGdCQUFnQixHQUNwQixNQUFBLE9BQU8sQ0FBQyxnQkFBZ0IsbUNBQ3hCLENBQUMsR0FBRyxFQUFFO1lBQ0osT0FBTztRQUNULENBQUMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHNDQUFpQixFQUFFLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxzQkFBYyxDQUFDLFlBQVksQ0FDbEQsSUFBSSxDQUFDLGFBQWEsRUFDbEIsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUM5QixTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztZQUNwQixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLGdCQUFnQixFQUFFLGdCQUFnQjtZQUNsQyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDcEMsWUFBWSxFQUFFLFlBQVk7WUFDMUIsbUJBQW1CLEVBQUUsS0FBSztZQUMxQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBTVMsa0JBQWtCLENBQzFCLE9BQXdDO1FBRXhDLE9BQU8sR0FBRyxFQUFFO1lBQ1YsK0NBQStDO1lBQy9DLDZDQUE2QztZQUM3QyxrREFBa0Q7WUFDbEQsSUFDRSxPQUFPLENBQUMsbUJBQW1CO2dCQUMzQixPQUFPLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUN0QztnQkFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZix5REFBeUQsRUFDekQsT0FBTyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQztnQkFDRixPQUFPLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNwQyxPQUFPO2FBQ1I7aUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDZDQUE2QyxFQUM3QyxPQUFPLENBQUMsU0FBUyxDQUNsQixDQUFDO2dCQUNGLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdDQUF3QyxFQUN4QyxPQUFPLENBQUMsU0FBUyxDQUNsQixDQUFDO1lBRUYsc0VBQXNFO1lBQ3RFLCtFQUErRTtZQUMvRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztpQkFDeEIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxPQUFPO1lBQ1QsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsT0FBTztZQUNULENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVTLG9CQUFvQixDQUM1QixPQUF3QyxFQUN4QyxZQUFrQyxFQUNsQywyQkFBb0M7UUFFcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QywyRUFBMkU7UUFDM0UsMEVBQTBFO1FBQzFFLHVCQUF1QjtRQUN2QixJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Ysa0VBQWtFLEVBQ2xFLElBQUEsc0JBQWMsRUFBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQ2pDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FDeEIsQ0FBQztZQUVGLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDOUIsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwwREFBMEQsQ0FDM0QsQ0FBQztRQUVGLHVEQUF1RDtRQUN2RCxtRUFBbUU7UUFDbkUsa0JBQWtCO1FBQ2xCLElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLHlCQUFnQixDQUFDLHFCQUFxQixFQUFFO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdEQUF3RCxFQUN4RCxPQUFPLENBQUMsU0FBUyxDQUNsQixDQUFDO1lBQ0YsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsaUVBQWlFLENBQ2xFLENBQUM7UUFFRiwrRUFBK0U7UUFDL0Usb0VBQW9FO1FBQ3BFLElBQUksMkJBQTJCLEVBQUU7WUFDL0IsT0FBTyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNuQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwyR0FBMkcsRUFDM0csb0JBQW9CLENBQ3JCLENBQUM7WUFDRixJQUFBLGFBQUssRUFBQyxvQkFBb0IsQ0FBQztpQkFDeEIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtvQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Ysb0VBQW9FLENBQ3JFLENBQUM7b0JBQ0YsT0FBTztpQkFDUjtnQkFFRCxzRUFBc0U7Z0JBQ3RFLCtFQUErRTtnQkFDL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7cUJBQ3hCLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ1QsT0FBTztnQkFDVCxDQUFDLENBQUM7cUJBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNULElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLG1EQUFtRCxFQUNuRCxDQUFDLENBQ0YsQ0FBQztvQkFDRixPQUFPO2dCQUNULENBQUMsQ0FBQyxDQUFDO2dCQUNMLE9BQU87WUFDVCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDZEQUE2RCxFQUM3RCxDQUFDLENBQ0YsQ0FBQztnQkFDRixPQUFPO1lBQ1QsQ0FBQyxDQUFDLENBQUM7WUFDTCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDhFQUE4RSxDQUMvRSxDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQWxRRCxvREFrUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBzbGVlcCxcbiAgdHJ1bmNhdGVTdHJpbmcsXG4gIHZhbGlkYXRlQ2FjaGVOYW1lLFxuICB2YWxpZGF0ZVRvcGljTmFtZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNb21lbnRvRXJyb3JDb2RlfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgVG9waWNQdWJsaXNoLFxuICBUb3BpY0l0ZW0sXG4gIE1vbWVudG9Mb2dnZXIsXG4gIFRvcGljU3Vic2NyaWJlLFxuICBTdWJzY3JpYmVDYWxsT3B0aW9ucyxcbiAgTW9tZW50b0xvZ2dlckZhY3RvcnksXG4gIFRvcGljRGlzY29udGludWl0eSxcbiAgVG9waWNIZWFydGJlYXQsXG59IGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCB7U3Vic2NyaXB0aW9uU3RhdGV9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbi1zdGF0ZSc7XG5pbXBvcnQge0lQdWJzdWJDbGllbnR9IGZyb20gJy4vSVB1YnN1YkNsaWVudCc7XG5pbXBvcnQge0lDYWNoZVNlcnZpY2VFcnJvck1hcHBlcn0gZnJvbSAnLi4vLi4vLi4vZXJyb3JzL0lDYWNoZVNlcnZpY2VFcnJvck1hcHBlcic7XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIHBhcmFtZXRlcnMgZm9yIHRoZSBgc2VuZFN1YnNjcmliZWAgbWV0aG9kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRTdWJzY3JpYmVPcHRpb25zIHtcbiAgY2FjaGVOYW1lOiBzdHJpbmc7XG4gIHRvcGljTmFtZTogc3RyaW5nO1xuICBvbkl0ZW06IChpdGVtOiBUb3BpY0l0ZW0pID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChcbiAgICBlcnJvcjogVG9waWNTdWJzY3JpYmUuRXJyb3IsXG4gICAgc3Vic2NyaXB0aW9uOiBUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb25cbiAgKSA9PiB2b2lkO1xuICBvbkRpc2NvbnRpbnVpdHk6IChkaXNjb250aW51aXR5OiBUb3BpY0Rpc2NvbnRpbnVpdHkpID0+IHZvaWQ7XG4gIG9uSGVhcnRiZWF0OiAoaGVhcnRiZWF0OiBUb3BpY0hlYXJ0YmVhdCkgPT4gdm9pZDtcbiAgb25Db25uZWN0aW9uTG9zdDogKCkgPT4gdm9pZDtcbiAgc3Vic2NyaXB0aW9uU3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlO1xuICBzdWJzY3JpcHRpb246IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RyZWFtIHdhcyByZXN0YXJ0ZWQgZHVlIHRvIGFuIGVycm9yLiBJZiBzbywgd2Ugc2tpcCB0aGUgZW5kIHN0cmVhbSBoYW5kbGVyXG4gICAqIGxvZ2ljIGFzIHRoZSBlcnJvciBoYW5kbGVyIHdpbGwgaGF2ZSByZXN0YXJ0ZWQgdGhlIHN0cmVhbS5cbiAgICovXG4gIHJlc3RhcnRlZER1ZVRvRXJyb3I6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0aGUgZmlyc3QgbWVzc2FnZSBpcyBhbiBlcnJvciwgd2UgcmV0dXJuIGFuIGVycm9yIGltbWVkaWF0ZWx5IGFuZCBkbyBub3Qgc3Vic2NyaWJlLlxuICAgKi9cbiAgZmlyc3RNZXNzYWdlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBwYXJhbWV0ZXJzIGZvciB0aGUgc3Vic2NyaWJlIGNhbGxiYWNrIHByZXBhcmUgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zIGV4dGVuZHMgU2VuZFN1YnNjcmliZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHByb21pc2UgcmVzb2x2ZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlc29sdmU6IChcbiAgICB2YWx1ZTogVG9waWNTdWJzY3JpYmUuUmVzcG9uc2UgfCBQcm9taXNlTGlrZTxUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb24+XG4gICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UHVic3ViQ2xpZW50PFRHcnBjRXJyb3I+XG4gIGltcGxlbWVudHMgSVB1YnN1YkNsaWVudFxue1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlckZhY3Rvcnk6IE1vbWVudG9Mb2dnZXJGYWN0b3J5O1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogSUNhY2hlU2VydmljZUVycm9yTWFwcGVyPFRHcnBjRXJyb3I+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBsb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeSxcbiAgICBsb2dnZXI6IE1vbWVudG9Mb2dnZXIsXG4gICAgY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI6IElDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjxUR3JwY0Vycm9yPlxuICApIHtcbiAgICB0aGlzLmxvZ2dlckZhY3RvcnkgPSBsb2dnZXJGYWN0b3J5O1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIgPSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMb2dnZXIoKTogTW9tZW50b0xvZ2dlciB7XG4gICAgcmV0dXJuIHRoaXMubG9nZ2VyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENhY2hlU2VydmljZUVycm9yTWFwcGVyKCk6IElDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjxUR3JwY0Vycm9yPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVibGlzaChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNhY2hlTmFtZShjYWNoZU5hbWUpO1xuICAgICAgdmFsaWRhdGVUb3BpY05hbWUodG9waWNOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IFRvcGljUHVibGlzaC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgICAgLy8gKSAgbmV3IFRvcGljUHVibGlzaC5FcnJvcihub3JtYWxpemVTZGtFcnJvcihlcnIgYXMgRXJyb3IpKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnSXNzdWluZyBwdWJsaXNoIHJlcXVlc3Q7IHRvcGljOiAlcywgbWVzc2FnZSBsZW5ndGg6ICVzJyxcbiAgICAgIHRydW5jYXRlU3RyaW5nKHRvcGljTmFtZSksXG4gICAgICB2YWx1ZS5sZW5ndGhcbiAgICApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFB1Ymxpc2goY2FjaGVOYW1lLCB0b3BpY05hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZW5kUHVibGlzaChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT47XG5cbiAgcHVibGljIGFzeW5jIHN1YnNjcmliZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdWJzY3JpYmVDYWxsT3B0aW9uc1xuICApOiBQcm9taXNlPFRvcGljU3Vic2NyaWJlLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGNhY2hlTmFtZSk7XG4gICAgICB2YWxpZGF0ZVRvcGljTmFtZSh0b3BpY05hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgVG9waWNTdWJzY3JpYmUuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnSXNzdWluZyBzdWJzY3JpYmUgcmVxdWVzdDsgdG9waWM6ICVzJyxcbiAgICAgIHRydW5jYXRlU3RyaW5nKHRvcGljTmFtZSlcbiAgICApO1xuXG4gICAgY29uc3Qgb25JdGVtID1cbiAgICAgIG9wdGlvbnMub25JdGVtID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkVycm9yID1cbiAgICAgIG9wdGlvbnMub25FcnJvciA/P1xuICAgICAgKCgpID0+IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSk7XG4gICAgY29uc3Qgb25EaXNjb250aW51aXR5ID1cbiAgICAgIG9wdGlvbnMub25EaXNjb250aW51aXR5ID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkhlYXJ0YmVhdCA9XG4gICAgICBvcHRpb25zLm9uSGVhcnRiZWF0ID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkNvbm5lY3Rpb25Mb3N0ID1cbiAgICAgIG9wdGlvbnMub25Db25uZWN0aW9uTG9zdCA/P1xuICAgICAgKCgpID0+IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb25TdGF0ZSA9IG5ldyBTdWJzY3JpcHRpb25TdGF0ZSgpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG5ldyBUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLmxvZ2dlckZhY3RvcnksXG4gICAgICBzdWJzY3JpcHRpb25TdGF0ZVxuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFN1YnNjcmliZSh7XG4gICAgICBjYWNoZU5hbWU6IGNhY2hlTmFtZSxcbiAgICAgIHRvcGljTmFtZTogdG9waWNOYW1lLFxuICAgICAgb25JdGVtOiBvbkl0ZW0sXG4gICAgICBvbkVycm9yOiBvbkVycm9yLFxuICAgICAgb25EaXNjb250aW51aXR5OiBvbkRpc2NvbnRpbnVpdHksXG4gICAgICBvbkhlYXJ0YmVhdDogb25IZWFydGJlYXQsXG4gICAgICBvbkNvbm5lY3Rpb25Mb3N0OiBvbkNvbm5lY3Rpb25Mb3N0LFxuICAgICAgc3Vic2NyaXB0aW9uU3RhdGU6IHN1YnNjcmlwdGlvblN0YXRlLFxuICAgICAgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb24sXG4gICAgICByZXN0YXJ0ZWREdWVUb0Vycm9yOiBmYWxzZSxcbiAgICAgIGZpcnN0TWVzc2FnZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZW5kU3Vic2NyaWJlKFxuICAgIG9wdGlvbnM6IFNlbmRTdWJzY3JpYmVPcHRpb25zXG4gICk6IFByb21pc2U8VG9waWNTdWJzY3JpYmUuUmVzcG9uc2U+O1xuXG4gIHByb3RlY3RlZCBwcmVwYXJlRW5kQ2FsbGJhY2soXG4gICAgb3B0aW9uczogUHJlcGFyZVN1YnNjcmliZUNhbGxiYWNrT3B0aW9uc1xuICApOiAoKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gV2Ugd2FudCB0byByZXN0YXJ0IG9uIHN0cmVhbSBlbmQsIGV4Y2VwdCBpZjpcbiAgICAgIC8vIDEuIFRoZSBzdHJlYW0gd2FzIGNhbmNlbGxlZCBieSB0aGUgY2FsbGVyLlxuICAgICAgLy8gMi4gVGhlIHN0cmVhbSB3YXMgcmVzdGFydGVkIGZvbGxvd2luZyBhbiBlcnJvci5cbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucy5yZXN0YXJ0ZWREdWVUb0Vycm9yICYmXG4gICAgICAgIG9wdGlvbnMuc3Vic2NyaXB0aW9uU3RhdGUuaXNTdWJzY3JpYmVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgJ1N0cmVhbSBlbmRlZCBhZnRlciBlcnJvciBidXQgd2FzIHJlc3RhcnRlZCBvbiB0b3BpYzogJXMnLFxuICAgICAgICAgIG9wdGlvbnMudG9waWNOYW1lXG4gICAgICAgICk7XG4gICAgICAgIG9wdGlvbnMucmVzdGFydGVkRHVlVG9FcnJvciA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmlzU3Vic2NyaWJlZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAnU3RyZWFtIGVuZGVkIGFmdGVyIHVuc3Vic2NyaWJlIG9uIHRvcGljOiAlcycsXG4gICAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgJ1N0cmVhbSBlbmRlZCBvbiB0b3BpYzogJXM7IHJlc3RhcnRpbmcuJyxcbiAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICk7XG5cbiAgICAgIC8vIFdoZW4gcmVzdGFydGluZyB0aGUgc3RyZWFtIHdlIGRvIG5vdCBkbyBhbnl0aGluZyB3aXRoIHRoZSBwcm9taXNlcyxcbiAgICAgIC8vIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSByZXR1cm5lZCB0aGUgc3Vic2NyaXB0aW9uIG9iamVjdCB0byB0aGUgdXNlci5cbiAgICAgIHRoaXMuc2VuZFN1YnNjcmliZShvcHRpb25zKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTdWJzY3JpYmVFcnJvcihcbiAgICBvcHRpb25zOiBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zLFxuICAgIG1vbWVudG9FcnJvcjogVG9waWNTdWJzY3JpYmUuRXJyb3IsXG4gICAgc2hvdWxkUmVjb25uZWN0U3Vic2NyaXB0aW9uOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKCdIYW5kbGluZyBzdWJzY3JpYmUgZXJyb3InKTtcbiAgICAvLyBXaGVuIHRoZSBmaXJzdCBtZXNzYWdlIGlzIGFuIGVycm9yLCBhbiBpcnJlY292ZXJhYmxlIGVycm9yIGhhcyBoYXBwZW5lZCxcbiAgICAvLyBlZyB0aGUgY2FjaGUgZG9lcyBub3QgZXhpc3QuIFRoZSB1c2VyIHNob3VsZCBub3QgcmVjZWl2ZSBhIHN1YnNjcmlwdGlvblxuICAgIC8vIG9iamVjdCBidXQgYW4gZXJyb3IuXG4gICAgaWYgKG9wdGlvbnMuZmlyc3RNZXNzYWdlKSB7XG4gICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgJ0ZpcnN0IG1lc3NhZ2Ugb24gc3Vic2NyaXB0aW9uIHdhcyBhbiBlcnJvcjsgdG9waWM6ICVzLCBlcnJvcjogJXMnLFxuICAgICAgICB0cnVuY2F0ZVN0cmluZyhvcHRpb25zLnRvcGljTmFtZSksXG4gICAgICAgIG1vbWVudG9FcnJvci50b1N0cmluZygpXG4gICAgICApO1xuXG4gICAgICBvcHRpb25zLnJlc29sdmUobW9tZW50b0Vycm9yKTtcbiAgICAgIG9wdGlvbnMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnU3Vic2NyaWJlIGVycm9yIHdhcyBub3QgdGhlIGZpcnN0IG1lc3NhZ2Ugb24gdGhlIHN0cmVhbS4nXG4gICAgKTtcblxuICAgIC8vIEFub3RoZXIgc3BlY2lhbCBjYXNlIGlzIHdoZW4gdGhlIGNhY2hlIGlzIG5vdCBmb3VuZC5cbiAgICAvLyBUaGlzIGhhcHBlbnMgaGVyZSBpZiB0aGUgdXNlciBkZWxldGVzIHRoZSBjYWNoZSBpbiB0aGUgbWlkZGxlIG9mXG4gICAgLy8gYSBzdWJzY3JpcHRpb24uXG4gICAgaWYgKG1vbWVudG9FcnJvci5lcnJvckNvZGUoKSA9PT0gTW9tZW50b0Vycm9yQ29kZS5DQUNIRV9OT1RfRk9VTkRfRVJST1IpIHtcbiAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAnU3RyZWFtIGVuZGVkIGR1ZSB0byBjYWNoZSBub3QgZm91bmQgZXJyb3Igb24gdG9waWM6ICVzJyxcbiAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICk7XG4gICAgICBvcHRpb25zLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgb3B0aW9ucy5vbkVycm9yKG1vbWVudG9FcnJvciwgb3B0aW9ucy5zdWJzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgJ0NoZWNraW5nIHRvIHNlZSBpZiB3ZSBzaG91bGQgYXR0ZW1wdCB0byByZWNvbm5lY3Qgc3Vic2NyaXB0aW9uLidcbiAgICApO1xuXG4gICAgLy8gRm9yIHNldmVyYWwgdHlwZXMgb2YgZXJyb3JzIGhhdmluZyB0byB3aXRoIG5ldHdvcmsgaW50ZXJydXB0aW9ucywgd2Ugd2lzaCB0b1xuICAgIC8vIHRyYW5zcGFyZW50bHkgcmVzdGFydCB0aGUgc3RyZWFtIGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgYW4gZXJyb3IuXG4gICAgaWYgKHNob3VsZFJlY29ubmVjdFN1YnNjcmlwdGlvbikge1xuICAgICAgb3B0aW9ucy5yZXN0YXJ0ZWREdWVUb0Vycm9yID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlY29ubmVjdERlbGF5TWlsbGlzID0gNTAwO1xuICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICdFcnJvciBvY2N1cnJlZCBvbiBzdWJzY3JpcHRpb24sIHBvc3NpYmx5IGEgbmV0d29yayBpbnRlcnJ1cHRpb24uIFdpbGwgYXR0ZW1wdCB0byByZXN0YXJ0IHN0cmVhbSBpbiAlcyBtcy4nLFxuICAgICAgICByZWNvbm5lY3REZWxheU1pbGxpc1xuICAgICAgKTtcbiAgICAgIHNsZWVwKHJlY29ubmVjdERlbGF5TWlsbGlzKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmlzU3Vic2NyaWJlZCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgICAgICdTdWJzY3JpcHRpb24gd2FzIHVuc3Vic2NyaWJlZCBiZWZvcmUgcmV0cnlpbmc7IGFib3J0aW5nIHJlY29ubmVjdC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFdoZW4gcmVzdGFydGluZyB0aGUgc3RyZWFtIHdlIGRvIG5vdCBkbyBhbnl0aGluZyB3aXRoIHRoZSBwcm9taXNlcyxcbiAgICAgICAgICAvLyBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGFscmVhZHkgcmV0dXJuZWQgdGhlIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gdGhlIHVzZXIuXG4gICAgICAgICAgdGhpcy5zZW5kU3Vic2NyaWJlKG9wdGlvbnMpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAgICAgICAgICdFcnJvciB3aGVuIGNhbGxpbmcgc2VuZFN1YnNjcmliZSB0byByZWNvbm5lY3Q6ICVzJyxcbiAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAgICAgJ0Vycm9yIHdoZW4gc2xlZXBpbmcgcHJpb3IgdG8gc2VuZFN1YnNjcmliZSB0byByZWNvbm5lY3Q6ICVzJyxcbiAgICAgICAgICAgIGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIudHJhY2UoJ1N1YnNjcmliZSBlcnJvciB3YXMgbm90IGEgcmUtY29ubmVjdGFibGUgZXJyb3IuJyk7XG5cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICdTdWJzY3JpYmUgZXJyb3Igd2FzIG5vdCBvbmUgb2YgdGhlIGtub3duIGVycm9yIHR5cGVzOyBjYWxsaW5nIGVycm9yIGhhbmRsZXIuJ1xuICAgICk7XG4gICAgb3B0aW9ucy5vbkVycm9yKG1vbWVudG9FcnJvciwgb3B0aW9ucy5zdWJzY3JpcHRpb24pO1xuICB9XG59XG4iXX0=
|
@@ -28,4 +28,8 @@ export interface SubscribeCallOptions {
|
|
28
28
|
* @param heartbeat The heartbeat received from the topic subscription.
|
29
29
|
*/
|
30
30
|
onHeartbeat?: (heartbeat: TopicHeartbeat) => void;
|
31
|
+
/**
|
32
|
+
* The callback to invoke when the connection is lost.
|
33
|
+
*/
|
34
|
+
onConnectionLost?: () => void;
|
31
35
|
}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWMtY2FsbC1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3RvcGljLWNhbGwtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVG9waWNJdGVtLFxuICBUb3BpY1N1YnNjcmliZSxcbiAgVG9waWNEaXNjb250aW51aXR5LFxuICBUb3BpY0hlYXJ0YmVhdCxcbn0gZnJvbSAnLi4nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBzdWJzY3JpYmUgY2FsbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpYmVDYWxsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZGF0YSBpcyByZWNlaXZlZCBmcm9tIHRoZSB0b3BpYyBzdWJzY3JpcHRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIHRvcGljIHN1YnNjcmlwdGlvbi5cbiAgICovXG4gIG9uSXRlbT86IChpdGVtOiBUb3BpY0l0ZW0pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbiBlcnJvciBpcyByZWNlaXZlZCBmcm9tIHRoZSB0b3BpYyBzdWJzY3JpcHRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uIFRoZSBzdWJzY3JpcHRpb24gdGhhdCByZWNlaXZlZCB0aGUgZXJyb3IuXG4gICAqL1xuICBvbkVycm9yPzogKFxuICAgIGVycm9yOiBUb3BpY1N1YnNjcmliZS5FcnJvcixcbiAgICBzdWJzY3JpcHRpb246IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvblxuICApID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhIGRpc2NvbnRpbnVpdHkgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGlzY29udGludWl0eSBUaGUgZGlzY29udGludWl0eSByZWNlaXZlZCBmcm9tIHRoZSB0b3BpYyBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBvbkRpc2NvbnRpbnVpdHk/OiAoZGlzY29udGludWl0eTogVG9waWNEaXNjb250aW51aXR5KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYSBoZWFydGJlYXQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaGVhcnRiZWF0IFRoZSBoZWFydGJlYXQgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKi9cbiAgb25IZWFydGJlYXQ/
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWMtY2FsbC1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3RvcGljLWNhbGwtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVG9waWNJdGVtLFxuICBUb3BpY1N1YnNjcmliZSxcbiAgVG9waWNEaXNjb250aW51aXR5LFxuICBUb3BpY0hlYXJ0YmVhdCxcbn0gZnJvbSAnLi4nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBzdWJzY3JpYmUgY2FsbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpYmVDYWxsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZGF0YSBpcyByZWNlaXZlZCBmcm9tIHRoZSB0b3BpYyBzdWJzY3JpcHRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIHRvcGljIHN1YnNjcmlwdGlvbi5cbiAgICovXG4gIG9uSXRlbT86IChpdGVtOiBUb3BpY0l0ZW0pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbiBlcnJvciBpcyByZWNlaXZlZCBmcm9tIHRoZSB0b3BpYyBzdWJzY3JpcHRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uIFRoZSBzdWJzY3JpcHRpb24gdGhhdCByZWNlaXZlZCB0aGUgZXJyb3IuXG4gICAqL1xuICBvbkVycm9yPzogKFxuICAgIGVycm9yOiBUb3BpY1N1YnNjcmliZS5FcnJvcixcbiAgICBzdWJzY3JpcHRpb246IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvblxuICApID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhIGRpc2NvbnRpbnVpdHkgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGlzY29udGludWl0eSBUaGUgZGlzY29udGludWl0eSByZWNlaXZlZCBmcm9tIHRoZSB0b3BpYyBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBvbkRpc2NvbnRpbnVpdHk/OiAoZGlzY29udGludWl0eTogVG9waWNEaXNjb250aW51aXR5KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYSBoZWFydGJlYXQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaGVhcnRiZWF0IFRoZSBoZWFydGJlYXQgcmVjZWl2ZWQgZnJvbSB0aGUgdG9waWMgc3Vic2NyaXB0aW9uLlxuICAgKi9cbiAgb25IZWFydGJlYXQ/OiAoaGVhcnRiZWF0OiBUb3BpY0hlYXJ0YmVhdCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGxvc3QuXG4gICAqL1xuICBvbkNvbm5lY3Rpb25Mb3N0PzogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
|