@vendasta/social-posts 4.0.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/_generated/host.service.mjs +25 -0
- package/esm2020/lib/_internal/enums/index.mjs +9 -0
- package/esm2020/lib/_internal/enums/multilocation-post.enum.mjs +12 -0
- package/esm2020/lib/_internal/enums/social-posts.enum.mjs +39 -0
- package/esm2020/lib/_internal/hash-tags.api.service.mjs +49 -0
- package/esm2020/lib/_internal/index.mjs +17 -0
- package/esm2020/lib/_internal/interfaces/api.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/hashtag.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/multilocation-post.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/pixabay-image.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/post-templates.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/social-post-stats.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/social-posts.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/tenor-gif.interface.mjs +8 -0
- package/esm2020/lib/_internal/multilocation-post.api.service.mjs +64 -0
- package/esm2020/lib/_internal/objects/api.mjs +1354 -0
- package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
- package/esm2020/lib/_internal/objects/hashtag.mjs +39 -0
- package/esm2020/lib/_internal/objects/index.mjs +16 -0
- package/esm2020/lib/_internal/objects/multilocation-post.mjs +115 -0
- package/esm2020/lib/_internal/objects/pixabay-image.mjs +138 -0
- package/esm2020/lib/_internal/objects/post-templates.mjs +75 -0
- package/esm2020/lib/_internal/objects/social-post-stats.mjs +127 -0
- package/esm2020/lib/_internal/objects/social-posts.mjs +272 -0
- package/esm2020/lib/_internal/objects/tenor-gif.mjs +106 -0
- package/esm2020/lib/_internal/partner-social-posts.api.service.mjs +46 -0
- package/esm2020/lib/_internal/pixabay-images.api.service.mjs +41 -0
- package/esm2020/lib/_internal/post-templates.api.service.mjs +59 -0
- package/esm2020/lib/_internal/social-posts.api.service.mjs +70 -0
- package/esm2020/lib/_internal/tenor-gifs.api.service.mjs +46 -0
- package/esm2020/lib/hashtag.service.mjs +42 -0
- package/esm2020/lib/index.mjs +8 -0
- package/esm2020/lib/multilocation-posts.service.mjs +76 -0
- package/esm2020/lib/pixabay-image.service.mjs +23 -0
- package/esm2020/lib/post-templates.service.mjs +72 -0
- package/esm2020/lib/social-posts.service.mjs +43 -0
- package/esm2020/lib/tenor-gifs.service.mjs +34 -0
- package/esm2020/public_api.mjs +5 -0
- package/esm2020/vendasta-social-posts.mjs +5 -0
- package/fesm2015/vendasta-social-posts.mjs +2884 -0
- package/fesm2015/vendasta-social-posts.mjs.map +1 -0
- package/fesm2020/vendasta-social-posts.mjs +2883 -0
- package/fesm2020/vendasta-social-posts.mjs.map +1 -0
- package/lib/_generated/host.service.d.ts +5 -9
- package/lib/_internal/hash-tags.api.service.d.ts +18 -0
- package/lib/_internal/index.d.ts +3 -0
- package/lib/_internal/interfaces/api.interface.d.ts +51 -0
- package/lib/_internal/interfaces/hashtag.interface.d.ts +6 -0
- package/lib/_internal/interfaces/index.d.ts +4 -1
- package/lib/_internal/interfaces/pixabay-image.interface.d.ts +26 -0
- package/lib/_internal/interfaces/tenor-gif.interface.d.ts +20 -0
- package/lib/_internal/multilocation-post.api.service.d.ts +4 -0
- package/lib/_internal/objects/api.d.ts +81 -0
- package/lib/_internal/objects/hashtag.d.ts +11 -0
- package/lib/_internal/objects/index.d.ts +4 -1
- package/lib/_internal/objects/pixabay-image.d.ts +31 -0
- package/lib/_internal/objects/tenor-gif.d.ts +31 -0
- package/lib/_internal/partner-social-posts.api.service.d.ts +4 -0
- package/lib/_internal/pixabay-images.api.service.d.ts +16 -0
- package/lib/_internal/post-templates.api.service.d.ts +4 -0
- package/lib/_internal/social-posts.api.service.d.ts +4 -0
- package/lib/_internal/tenor-gifs.api.service.d.ts +17 -0
- package/lib/hashtag.service.d.ts +13 -0
- package/lib/index.d.ts +3 -0
- package/lib/multilocation-posts.service.d.ts +3 -0
- package/lib/pixabay-image.service.d.ts +11 -0
- package/lib/post-templates.service.d.ts +3 -0
- package/lib/social-posts.service.d.ts +3 -0
- package/lib/tenor-gifs.service.d.ts +12 -0
- package/package.json +24 -16
- package/src/README.md +1 -0
- package/vendasta-social-posts.d.ts +1 -4
- package/bundles/vendasta-social-posts.umd.js +0 -3709
- package/bundles/vendasta-social-posts.umd.js.map +0 -1
- package/bundles/vendasta-social-posts.umd.min.js +0 -2
- package/bundles/vendasta-social-posts.umd.min.js.map +0 -1
- package/esm2015/lib/_generated/host.service.js +0 -104
- package/esm2015/lib/_internal/enums/index.js +0 -13
- package/esm2015/lib/_internal/enums/multilocation-post.enum.js +0 -19
- package/esm2015/lib/_internal/enums/social-posts.enum.js +0 -67
- package/esm2015/lib/_internal/index.js +0 -18
- package/esm2015/lib/_internal/interfaces/api.interface.js +0 -447
- package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -19
- package/esm2015/lib/_internal/interfaces/index.js +0 -5
- package/esm2015/lib/_internal/interfaces/multilocation-post.interface.js +0 -59
- package/esm2015/lib/_internal/interfaces/post-templates.interface.js +0 -45
- package/esm2015/lib/_internal/interfaces/social-post-stats.interface.js +0 -57
- package/esm2015/lib/_internal/interfaces/social-posts.interface.js +0 -127
- package/esm2015/lib/_internal/multilocation-post.api.service.js +0 -136
- package/esm2015/lib/_internal/objects/api.js +0 -1805
- package/esm2015/lib/_internal/objects/field-mask.js +0 -53
- package/esm2015/lib/_internal/objects/index.js +0 -17
- package/esm2015/lib/_internal/objects/multilocation-post.js +0 -197
- package/esm2015/lib/_internal/objects/post-templates.js +0 -127
- package/esm2015/lib/_internal/objects/social-post-stats.js +0 -207
- package/esm2015/lib/_internal/objects/social-posts.js +0 -446
- package/esm2015/lib/_internal/partner-social-posts.api.service.js +0 -90
- package/esm2015/lib/_internal/post-templates.api.service.js +0 -122
- package/esm2015/lib/_internal/social-posts.api.service.js +0 -155
- package/esm2015/lib/index.js +0 -9
- package/esm2015/lib/multilocation-posts.service.js +0 -145
- package/esm2015/lib/post-templates.service.js +0 -138
- package/esm2015/lib/social-posts.service.js +0 -85
- package/esm2015/public_api.js +0 -9
- package/esm2015/vendasta-social-posts.js +0 -13
- package/esm5/lib/_generated/host.service.js +0 -115
- package/esm5/lib/_internal/enums/index.js +0 -13
- package/esm5/lib/_internal/enums/multilocation-post.enum.js +0 -19
- package/esm5/lib/_internal/enums/social-posts.enum.js +0 -67
- package/esm5/lib/_internal/index.js +0 -18
- package/esm5/lib/_internal/interfaces/api.interface.js +0 -447
- package/esm5/lib/_internal/interfaces/field-mask.interface.js +0 -19
- package/esm5/lib/_internal/interfaces/index.js +0 -5
- package/esm5/lib/_internal/interfaces/multilocation-post.interface.js +0 -59
- package/esm5/lib/_internal/interfaces/post-templates.interface.js +0 -45
- package/esm5/lib/_internal/interfaces/social-post-stats.interface.js +0 -57
- package/esm5/lib/_internal/interfaces/social-posts.interface.js +0 -127
- package/esm5/lib/_internal/multilocation-post.api.service.js +0 -163
- package/esm5/lib/_internal/objects/api.js +0 -2015
- package/esm5/lib/_internal/objects/field-mask.js +0 -59
- package/esm5/lib/_internal/objects/index.js +0 -17
- package/esm5/lib/_internal/objects/multilocation-post.js +0 -215
- package/esm5/lib/_internal/objects/post-templates.js +0 -133
- package/esm5/lib/_internal/objects/social-post-stats.js +0 -225
- package/esm5/lib/_internal/objects/social-posts.js +0 -482
- package/esm5/lib/_internal/partner-social-posts.api.service.js +0 -100
- package/esm5/lib/_internal/post-templates.api.service.js +0 -145
- package/esm5/lib/_internal/social-posts.api.service.js +0 -186
- package/esm5/lib/index.js +0 -9
- package/esm5/lib/multilocation-posts.service.js +0 -191
- package/esm5/lib/post-templates.service.js +0 -182
- package/esm5/lib/social-posts.service.js +0 -106
- package/esm5/public_api.js +0 -9
- package/esm5/vendasta-social-posts.js +0 -13
- package/fesm2015/vendasta-social-posts.js +0 -3220
- package/fesm2015/vendasta-social-posts.js.map +0 -1
- package/fesm5/vendasta-social-posts.js +0 -3668
- package/fesm5/vendasta-social-posts.js.map +0 -1
- package/vendasta-social-posts.metadata.json +0 -1
|
@@ -1,3668 +0,0 @@
|
|
|
1
|
-
import { Injectable, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
|
|
2
|
-
import { EnvironmentService, Environment } from '@vendasta/core';
|
|
3
|
-
import { __assign } from 'tslib';
|
|
4
|
-
import { HttpHeaders, HttpClient } from '@angular/common/http';
|
|
5
|
-
import { map, share } from 'rxjs/operators';
|
|
6
|
-
import { of } from 'rxjs';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @fileoverview added by tsickle
|
|
10
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
11
|
-
*/
|
|
12
|
-
var FieldMask = /** @class */ (function () {
|
|
13
|
-
function FieldMask(kwargs) {
|
|
14
|
-
if (!kwargs) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
Object.assign(this, kwargs);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* @param {?} proto
|
|
21
|
-
* @return {?}
|
|
22
|
-
*/
|
|
23
|
-
FieldMask.fromProto = /**
|
|
24
|
-
* @param {?} proto
|
|
25
|
-
* @return {?}
|
|
26
|
-
*/
|
|
27
|
-
function (proto) {
|
|
28
|
-
/** @type {?} */
|
|
29
|
-
var m = new FieldMask();
|
|
30
|
-
m = Object.assign(m, proto);
|
|
31
|
-
return m;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* @return {?}
|
|
35
|
-
*/
|
|
36
|
-
FieldMask.prototype.toApiJson = /**
|
|
37
|
-
* @return {?}
|
|
38
|
-
*/
|
|
39
|
-
function () {
|
|
40
|
-
/** @type {?} */
|
|
41
|
-
var toReturn = {};
|
|
42
|
-
if (typeof this.paths !== 'undefined') {
|
|
43
|
-
toReturn['paths'] = this.paths;
|
|
44
|
-
}
|
|
45
|
-
return toReturn;
|
|
46
|
-
};
|
|
47
|
-
return FieldMask;
|
|
48
|
-
}());
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @fileoverview added by tsickle
|
|
52
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
53
|
-
*/
|
|
54
|
-
var Location = /** @class */ (function () {
|
|
55
|
-
function Location(kwargs) {
|
|
56
|
-
if (!kwargs) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
Object.assign(this, kwargs);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* @param {?} proto
|
|
63
|
-
* @return {?}
|
|
64
|
-
*/
|
|
65
|
-
Location.fromProto = /**
|
|
66
|
-
* @param {?} proto
|
|
67
|
-
* @return {?}
|
|
68
|
-
*/
|
|
69
|
-
function (proto) {
|
|
70
|
-
/** @type {?} */
|
|
71
|
-
var m = new Location();
|
|
72
|
-
m = Object.assign(m, proto);
|
|
73
|
-
return m;
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* @return {?}
|
|
77
|
-
*/
|
|
78
|
-
Location.prototype.toApiJson = /**
|
|
79
|
-
* @return {?}
|
|
80
|
-
*/
|
|
81
|
-
function () {
|
|
82
|
-
/** @type {?} */
|
|
83
|
-
var toReturn = {};
|
|
84
|
-
if (typeof this.socialServiceIds !== 'undefined') {
|
|
85
|
-
toReturn['socialServiceIds'] = this.socialServiceIds;
|
|
86
|
-
}
|
|
87
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
88
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
89
|
-
}
|
|
90
|
-
return toReturn;
|
|
91
|
-
};
|
|
92
|
-
return Location;
|
|
93
|
-
}());
|
|
94
|
-
var MultilocationPost = /** @class */ (function () {
|
|
95
|
-
function MultilocationPost(kwargs) {
|
|
96
|
-
if (!kwargs) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
Object.assign(this, kwargs);
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* @param {?} proto
|
|
103
|
-
* @return {?}
|
|
104
|
-
*/
|
|
105
|
-
MultilocationPost.fromProto = /**
|
|
106
|
-
* @param {?} proto
|
|
107
|
-
* @return {?}
|
|
108
|
-
*/
|
|
109
|
-
function (proto) {
|
|
110
|
-
/** @type {?} */
|
|
111
|
-
var m = new MultilocationPost();
|
|
112
|
-
m = Object.assign(m, proto);
|
|
113
|
-
if (proto.originalScheduledDate) {
|
|
114
|
-
m.originalScheduledDate = new Date(proto.originalScheduledDate);
|
|
115
|
-
}
|
|
116
|
-
if (proto.originalLocations) {
|
|
117
|
-
m.originalLocations = proto.originalLocations.map(Location.fromProto);
|
|
118
|
-
}
|
|
119
|
-
if (proto.editedLocations) {
|
|
120
|
-
m.editedLocations = proto.editedLocations.map(Location.fromProto);
|
|
121
|
-
}
|
|
122
|
-
if (proto.deletedLocations) {
|
|
123
|
-
m.deletedLocations = proto.deletedLocations.map(Location.fromProto);
|
|
124
|
-
}
|
|
125
|
-
return m;
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* @return {?}
|
|
129
|
-
*/
|
|
130
|
-
MultilocationPost.prototype.toApiJson = /**
|
|
131
|
-
* @return {?}
|
|
132
|
-
*/
|
|
133
|
-
function () {
|
|
134
|
-
/** @type {?} */
|
|
135
|
-
var toReturn = {};
|
|
136
|
-
if (typeof this.brandId !== 'undefined') {
|
|
137
|
-
toReturn['brandId'] = this.brandId;
|
|
138
|
-
}
|
|
139
|
-
if (typeof this.multilocationId !== 'undefined') {
|
|
140
|
-
toReturn['multilocationId'] = this.multilocationId;
|
|
141
|
-
}
|
|
142
|
-
if (typeof this.originalText !== 'undefined') {
|
|
143
|
-
toReturn['originalText'] = this.originalText;
|
|
144
|
-
}
|
|
145
|
-
if (typeof this.originalScheduledDate !== 'undefined' && this.originalScheduledDate !== null) {
|
|
146
|
-
toReturn['originalScheduledDate'] = 'toApiJson' in this.originalScheduledDate ? ((/** @type {?} */ (this.originalScheduledDate))).toApiJson() : this.originalScheduledDate;
|
|
147
|
-
}
|
|
148
|
-
if (typeof this.originalMedia !== 'undefined') {
|
|
149
|
-
toReturn['originalMedia'] = this.originalMedia;
|
|
150
|
-
}
|
|
151
|
-
if (typeof this.originalLocations !== 'undefined' && this.originalLocations !== null) {
|
|
152
|
-
toReturn['originalLocations'] = 'toApiJson' in this.originalLocations ? ((/** @type {?} */ (this.originalLocations))).toApiJson() : this.originalLocations;
|
|
153
|
-
}
|
|
154
|
-
if (typeof this.editedLocations !== 'undefined' && this.editedLocations !== null) {
|
|
155
|
-
toReturn['editedLocations'] = 'toApiJson' in this.editedLocations ? ((/** @type {?} */ (this.editedLocations))).toApiJson() : this.editedLocations;
|
|
156
|
-
}
|
|
157
|
-
if (typeof this.deletedLocations !== 'undefined' && this.deletedLocations !== null) {
|
|
158
|
-
toReturn['deletedLocations'] = 'toApiJson' in this.deletedLocations ? ((/** @type {?} */ (this.deletedLocations))).toApiJson() : this.deletedLocations;
|
|
159
|
-
}
|
|
160
|
-
if (typeof this.originalGifs !== 'undefined') {
|
|
161
|
-
toReturn['originalGifs'] = this.originalGifs;
|
|
162
|
-
}
|
|
163
|
-
if (typeof this.originalVideos !== 'undefined') {
|
|
164
|
-
toReturn['originalVideos'] = this.originalVideos;
|
|
165
|
-
}
|
|
166
|
-
return toReturn;
|
|
167
|
-
};
|
|
168
|
-
return MultilocationPost;
|
|
169
|
-
}());
|
|
170
|
-
var MultilocationPostError = /** @class */ (function () {
|
|
171
|
-
function MultilocationPostError(kwargs) {
|
|
172
|
-
if (!kwargs) {
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
Object.assign(this, kwargs);
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* @param {?} proto
|
|
179
|
-
* @return {?}
|
|
180
|
-
*/
|
|
181
|
-
MultilocationPostError.fromProto = /**
|
|
182
|
-
* @param {?} proto
|
|
183
|
-
* @return {?}
|
|
184
|
-
*/
|
|
185
|
-
function (proto) {
|
|
186
|
-
/** @type {?} */
|
|
187
|
-
var m = new MultilocationPostError();
|
|
188
|
-
m = Object.assign(m, proto);
|
|
189
|
-
return m;
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* @return {?}
|
|
193
|
-
*/
|
|
194
|
-
MultilocationPostError.prototype.toApiJson = /**
|
|
195
|
-
* @return {?}
|
|
196
|
-
*/
|
|
197
|
-
function () {
|
|
198
|
-
/** @type {?} */
|
|
199
|
-
var toReturn = {};
|
|
200
|
-
if (typeof this.socialServiceId !== 'undefined') {
|
|
201
|
-
toReturn['socialServiceId'] = this.socialServiceId;
|
|
202
|
-
}
|
|
203
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
204
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
205
|
-
}
|
|
206
|
-
if (typeof this.errorReason !== 'undefined') {
|
|
207
|
-
toReturn['errorReason'] = this.errorReason;
|
|
208
|
-
}
|
|
209
|
-
return toReturn;
|
|
210
|
-
};
|
|
211
|
-
return MultilocationPostError;
|
|
212
|
-
}());
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* @fileoverview added by tsickle
|
|
216
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
217
|
-
*/
|
|
218
|
-
var PostTemplate = /** @class */ (function () {
|
|
219
|
-
function PostTemplate(kwargs) {
|
|
220
|
-
if (!kwargs) {
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
Object.assign(this, kwargs);
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* @param {?} proto
|
|
227
|
-
* @return {?}
|
|
228
|
-
*/
|
|
229
|
-
PostTemplate.fromProto = /**
|
|
230
|
-
* @param {?} proto
|
|
231
|
-
* @return {?}
|
|
232
|
-
*/
|
|
233
|
-
function (proto) {
|
|
234
|
-
/** @type {?} */
|
|
235
|
-
var m = new PostTemplate();
|
|
236
|
-
m = Object.assign(m, proto);
|
|
237
|
-
if (proto.created) {
|
|
238
|
-
m.created = new Date(proto.created);
|
|
239
|
-
}
|
|
240
|
-
if (proto.updated) {
|
|
241
|
-
m.updated = new Date(proto.updated);
|
|
242
|
-
}
|
|
243
|
-
if (proto.postDateTime) {
|
|
244
|
-
m.postDateTime = new Date(proto.postDateTime);
|
|
245
|
-
}
|
|
246
|
-
return m;
|
|
247
|
-
};
|
|
248
|
-
/**
|
|
249
|
-
* @return {?}
|
|
250
|
-
*/
|
|
251
|
-
PostTemplate.prototype.toApiJson = /**
|
|
252
|
-
* @return {?}
|
|
253
|
-
*/
|
|
254
|
-
function () {
|
|
255
|
-
/** @type {?} */
|
|
256
|
-
var toReturn = {};
|
|
257
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
258
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
259
|
-
}
|
|
260
|
-
if (typeof this.templateId !== 'undefined') {
|
|
261
|
-
toReturn['templateId'] = this.templateId;
|
|
262
|
-
}
|
|
263
|
-
if (typeof this.title !== 'undefined') {
|
|
264
|
-
toReturn['title'] = this.title;
|
|
265
|
-
}
|
|
266
|
-
if (typeof this.created !== 'undefined' && this.created !== null) {
|
|
267
|
-
toReturn['created'] = 'toApiJson' in this.created ? ((/** @type {?} */ (this.created))).toApiJson() : this.created;
|
|
268
|
-
}
|
|
269
|
-
if (typeof this.updated !== 'undefined' && this.updated !== null) {
|
|
270
|
-
toReturn['updated'] = 'toApiJson' in this.updated ? ((/** @type {?} */ (this.updated))).toApiJson() : this.updated;
|
|
271
|
-
}
|
|
272
|
-
if (typeof this.postText !== 'undefined') {
|
|
273
|
-
toReturn['postText'] = this.postText;
|
|
274
|
-
}
|
|
275
|
-
if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {
|
|
276
|
-
toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? ((/** @type {?} */ (this.postDateTime))).toApiJson() : this.postDateTime;
|
|
277
|
-
}
|
|
278
|
-
if (typeof this.gmbPostCustomization !== 'undefined') {
|
|
279
|
-
toReturn['gmbPostCustomization'] = this.gmbPostCustomization;
|
|
280
|
-
}
|
|
281
|
-
if (typeof this.imageUrl !== 'undefined') {
|
|
282
|
-
toReturn['imageUrl'] = this.imageUrl;
|
|
283
|
-
}
|
|
284
|
-
if (typeof this.imagePath !== 'undefined') {
|
|
285
|
-
toReturn['imagePath'] = this.imagePath;
|
|
286
|
-
}
|
|
287
|
-
if (typeof this.imageSize !== 'undefined') {
|
|
288
|
-
toReturn['imageSize'] = this.imageSize;
|
|
289
|
-
}
|
|
290
|
-
if (typeof this.previews !== 'undefined') {
|
|
291
|
-
toReturn['previews'] = this.previews;
|
|
292
|
-
}
|
|
293
|
-
if (typeof this.options !== 'undefined') {
|
|
294
|
-
toReturn['options'] = this.options;
|
|
295
|
-
}
|
|
296
|
-
if (typeof this.videoUrl !== 'undefined') {
|
|
297
|
-
toReturn['videoUrl'] = this.videoUrl;
|
|
298
|
-
}
|
|
299
|
-
return toReturn;
|
|
300
|
-
};
|
|
301
|
-
return PostTemplate;
|
|
302
|
-
}());
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* @fileoverview added by tsickle
|
|
306
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
307
|
-
*/
|
|
308
|
-
// *********************************
|
|
309
|
-
// Code generated by sdkgen
|
|
310
|
-
// DO NOT EDIT!.
|
|
311
|
-
//
|
|
312
|
-
// Enums.
|
|
313
|
-
// *********************************
|
|
314
|
-
/** @enum {number} */
|
|
315
|
-
var CallToActionCallToActionType = {
|
|
316
|
-
LEARN_MORE: 0,
|
|
317
|
-
BOOK: 1,
|
|
318
|
-
ORDER: 2,
|
|
319
|
-
SHOP: 3,
|
|
320
|
-
SIGN_UP: 4,
|
|
321
|
-
GET_OFFER: 5,
|
|
322
|
-
CALL: 6,
|
|
323
|
-
};
|
|
324
|
-
CallToActionCallToActionType[CallToActionCallToActionType.LEARN_MORE] = 'LEARN_MORE';
|
|
325
|
-
CallToActionCallToActionType[CallToActionCallToActionType.BOOK] = 'BOOK';
|
|
326
|
-
CallToActionCallToActionType[CallToActionCallToActionType.ORDER] = 'ORDER';
|
|
327
|
-
CallToActionCallToActionType[CallToActionCallToActionType.SHOP] = 'SHOP';
|
|
328
|
-
CallToActionCallToActionType[CallToActionCallToActionType.SIGN_UP] = 'SIGN_UP';
|
|
329
|
-
CallToActionCallToActionType[CallToActionCallToActionType.GET_OFFER] = 'GET_OFFER';
|
|
330
|
-
CallToActionCallToActionType[CallToActionCallToActionType.CALL] = 'CALL';
|
|
331
|
-
/** @enum {number} */
|
|
332
|
-
var SocialPostDeletionStatus = {
|
|
333
|
-
NONE: 0,
|
|
334
|
-
FAILED: 1,
|
|
335
|
-
IN_PROGRESS: 2,
|
|
336
|
-
};
|
|
337
|
-
SocialPostDeletionStatus[SocialPostDeletionStatus.NONE] = 'NONE';
|
|
338
|
-
SocialPostDeletionStatus[SocialPostDeletionStatus.FAILED] = 'FAILED';
|
|
339
|
-
SocialPostDeletionStatus[SocialPostDeletionStatus.IN_PROGRESS] = 'IN_PROGRESS';
|
|
340
|
-
/** @enum {number} */
|
|
341
|
-
var PostingStatus = {
|
|
342
|
-
POSTING_IN_PROGRESS: 0,
|
|
343
|
-
POSTING_FAILED: 1,
|
|
344
|
-
POSTING_COMPLETED: 2,
|
|
345
|
-
};
|
|
346
|
-
PostingStatus[PostingStatus.POSTING_IN_PROGRESS] = 'POSTING_IN_PROGRESS';
|
|
347
|
-
PostingStatus[PostingStatus.POSTING_FAILED] = 'POSTING_FAILED';
|
|
348
|
-
PostingStatus[PostingStatus.POSTING_COMPLETED] = 'POSTING_COMPLETED';
|
|
349
|
-
/** @enum {number} */
|
|
350
|
-
var SocialPostService = {
|
|
351
|
-
TWITTER: 0,
|
|
352
|
-
FACEBOOK: 1,
|
|
353
|
-
LINKED_IN: 2,
|
|
354
|
-
GOOGLE_PLUS: 3,
|
|
355
|
-
GOOGLE_MY_BUSINESS: 4,
|
|
356
|
-
UNKNOWN: 5,
|
|
357
|
-
INSTAGRAM: 6,
|
|
358
|
-
};
|
|
359
|
-
SocialPostService[SocialPostService.TWITTER] = 'TWITTER';
|
|
360
|
-
SocialPostService[SocialPostService.FACEBOOK] = 'FACEBOOK';
|
|
361
|
-
SocialPostService[SocialPostService.LINKED_IN] = 'LINKED_IN';
|
|
362
|
-
SocialPostService[SocialPostService.GOOGLE_PLUS] = 'GOOGLE_PLUS';
|
|
363
|
-
SocialPostService[SocialPostService.GOOGLE_MY_BUSINESS] = 'GOOGLE_MY_BUSINESS';
|
|
364
|
-
SocialPostService[SocialPostService.UNKNOWN] = 'UNKNOWN';
|
|
365
|
-
SocialPostService[SocialPostService.INSTAGRAM] = 'INSTAGRAM';
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* @fileoverview added by tsickle
|
|
369
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
370
|
-
*/
|
|
371
|
-
// *********************************
|
|
372
|
-
// Code generated by sdkgen
|
|
373
|
-
// DO NOT EDIT!.
|
|
374
|
-
//
|
|
375
|
-
// Enums.
|
|
376
|
-
// *********************************
|
|
377
|
-
/** @enum {number} */
|
|
378
|
-
var RemoveReason = {
|
|
379
|
-
REMOVE_REASON_EDIT: 0,
|
|
380
|
-
REMOVE_REASON_DELETE: 1,
|
|
381
|
-
};
|
|
382
|
-
RemoveReason[RemoveReason.REMOVE_REASON_EDIT] = 'REMOVE_REASON_EDIT';
|
|
383
|
-
RemoveReason[RemoveReason.REMOVE_REASON_DELETE] = 'REMOVE_REASON_DELETE';
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* @fileoverview added by tsickle
|
|
387
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
388
|
-
*/
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* @fileoverview added by tsickle
|
|
392
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
393
|
-
*/
|
|
394
|
-
/**
|
|
395
|
-
* @template E
|
|
396
|
-
* @param {?} enumRef
|
|
397
|
-
* @param {?} value
|
|
398
|
-
* @return {?}
|
|
399
|
-
*/
|
|
400
|
-
function enumStringToValue$3(enumRef, value) {
|
|
401
|
-
if (typeof value === 'number') {
|
|
402
|
-
return value;
|
|
403
|
-
}
|
|
404
|
-
return enumRef[value];
|
|
405
|
-
}
|
|
406
|
-
var CallToAction = /** @class */ (function () {
|
|
407
|
-
function CallToAction(kwargs) {
|
|
408
|
-
if (!kwargs) {
|
|
409
|
-
return;
|
|
410
|
-
}
|
|
411
|
-
Object.assign(this, kwargs);
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* @param {?} proto
|
|
415
|
-
* @return {?}
|
|
416
|
-
*/
|
|
417
|
-
CallToAction.fromProto = /**
|
|
418
|
-
* @param {?} proto
|
|
419
|
-
* @return {?}
|
|
420
|
-
*/
|
|
421
|
-
function (proto) {
|
|
422
|
-
/** @type {?} */
|
|
423
|
-
var m = new CallToAction();
|
|
424
|
-
m = Object.assign(m, proto);
|
|
425
|
-
if (proto.actionType) {
|
|
426
|
-
m.actionType = enumStringToValue$3(CallToActionCallToActionType, proto.actionType);
|
|
427
|
-
}
|
|
428
|
-
return m;
|
|
429
|
-
};
|
|
430
|
-
/**
|
|
431
|
-
* @return {?}
|
|
432
|
-
*/
|
|
433
|
-
CallToAction.prototype.toApiJson = /**
|
|
434
|
-
* @return {?}
|
|
435
|
-
*/
|
|
436
|
-
function () {
|
|
437
|
-
/** @type {?} */
|
|
438
|
-
var toReturn = {};
|
|
439
|
-
if (typeof this.url !== 'undefined') {
|
|
440
|
-
toReturn['url'] = this.url;
|
|
441
|
-
}
|
|
442
|
-
if (typeof this.actionType !== 'undefined') {
|
|
443
|
-
toReturn['actionType'] = this.actionType;
|
|
444
|
-
}
|
|
445
|
-
return toReturn;
|
|
446
|
-
};
|
|
447
|
-
return CallToAction;
|
|
448
|
-
}());
|
|
449
|
-
var Error = /** @class */ (function () {
|
|
450
|
-
function Error(kwargs) {
|
|
451
|
-
if (!kwargs) {
|
|
452
|
-
return;
|
|
453
|
-
}
|
|
454
|
-
Object.assign(this, kwargs);
|
|
455
|
-
}
|
|
456
|
-
/**
|
|
457
|
-
* @param {?} proto
|
|
458
|
-
* @return {?}
|
|
459
|
-
*/
|
|
460
|
-
Error.fromProto = /**
|
|
461
|
-
* @param {?} proto
|
|
462
|
-
* @return {?}
|
|
463
|
-
*/
|
|
464
|
-
function (proto) {
|
|
465
|
-
/** @type {?} */
|
|
466
|
-
var m = new Error();
|
|
467
|
-
m = Object.assign(m, proto);
|
|
468
|
-
return m;
|
|
469
|
-
};
|
|
470
|
-
/**
|
|
471
|
-
* @return {?}
|
|
472
|
-
*/
|
|
473
|
-
Error.prototype.toApiJson = /**
|
|
474
|
-
* @return {?}
|
|
475
|
-
*/
|
|
476
|
-
function () {
|
|
477
|
-
/** @type {?} */
|
|
478
|
-
var toReturn = {};
|
|
479
|
-
if (typeof this.reason !== 'undefined') {
|
|
480
|
-
toReturn['reason'] = this.reason;
|
|
481
|
-
}
|
|
482
|
-
if (typeof this.category !== 'undefined') {
|
|
483
|
-
toReturn['category'] = this.category;
|
|
484
|
-
}
|
|
485
|
-
return toReturn;
|
|
486
|
-
};
|
|
487
|
-
return Error;
|
|
488
|
-
}());
|
|
489
|
-
var Event = /** @class */ (function () {
|
|
490
|
-
function Event(kwargs) {
|
|
491
|
-
if (!kwargs) {
|
|
492
|
-
return;
|
|
493
|
-
}
|
|
494
|
-
Object.assign(this, kwargs);
|
|
495
|
-
}
|
|
496
|
-
/**
|
|
497
|
-
* @param {?} proto
|
|
498
|
-
* @return {?}
|
|
499
|
-
*/
|
|
500
|
-
Event.fromProto = /**
|
|
501
|
-
* @param {?} proto
|
|
502
|
-
* @return {?}
|
|
503
|
-
*/
|
|
504
|
-
function (proto) {
|
|
505
|
-
/** @type {?} */
|
|
506
|
-
var m = new Event();
|
|
507
|
-
m = Object.assign(m, proto);
|
|
508
|
-
if (proto.startDatetime) {
|
|
509
|
-
m.startDatetime = new Date(proto.startDatetime);
|
|
510
|
-
}
|
|
511
|
-
if (proto.endDatetime) {
|
|
512
|
-
m.endDatetime = new Date(proto.endDatetime);
|
|
513
|
-
}
|
|
514
|
-
return m;
|
|
515
|
-
};
|
|
516
|
-
/**
|
|
517
|
-
* @return {?}
|
|
518
|
-
*/
|
|
519
|
-
Event.prototype.toApiJson = /**
|
|
520
|
-
* @return {?}
|
|
521
|
-
*/
|
|
522
|
-
function () {
|
|
523
|
-
/** @type {?} */
|
|
524
|
-
var toReturn = {};
|
|
525
|
-
if (typeof this.title !== 'undefined') {
|
|
526
|
-
toReturn['title'] = this.title;
|
|
527
|
-
}
|
|
528
|
-
if (typeof this.startDatetime !== 'undefined' && this.startDatetime !== null) {
|
|
529
|
-
toReturn['startDatetime'] = 'toApiJson' in this.startDatetime ? ((/** @type {?} */ (this.startDatetime))).toApiJson() : this.startDatetime;
|
|
530
|
-
}
|
|
531
|
-
if (typeof this.endDatetime !== 'undefined' && this.endDatetime !== null) {
|
|
532
|
-
toReturn['endDatetime'] = 'toApiJson' in this.endDatetime ? ((/** @type {?} */ (this.endDatetime))).toApiJson() : this.endDatetime;
|
|
533
|
-
}
|
|
534
|
-
return toReturn;
|
|
535
|
-
};
|
|
536
|
-
return Event;
|
|
537
|
-
}());
|
|
538
|
-
var SchedulePostStatus = /** @class */ (function () {
|
|
539
|
-
function SchedulePostStatus(kwargs) {
|
|
540
|
-
if (!kwargs) {
|
|
541
|
-
return;
|
|
542
|
-
}
|
|
543
|
-
Object.assign(this, kwargs);
|
|
544
|
-
}
|
|
545
|
-
/**
|
|
546
|
-
* @param {?} proto
|
|
547
|
-
* @return {?}
|
|
548
|
-
*/
|
|
549
|
-
SchedulePostStatus.fromProto = /**
|
|
550
|
-
* @param {?} proto
|
|
551
|
-
* @return {?}
|
|
552
|
-
*/
|
|
553
|
-
function (proto) {
|
|
554
|
-
/** @type {?} */
|
|
555
|
-
var m = new SchedulePostStatus();
|
|
556
|
-
m = Object.assign(m, proto);
|
|
557
|
-
if (proto.error) {
|
|
558
|
-
m.error = Error.fromProto(proto.error);
|
|
559
|
-
}
|
|
560
|
-
return m;
|
|
561
|
-
};
|
|
562
|
-
/**
|
|
563
|
-
* @return {?}
|
|
564
|
-
*/
|
|
565
|
-
SchedulePostStatus.prototype.toApiJson = /**
|
|
566
|
-
* @return {?}
|
|
567
|
-
*/
|
|
568
|
-
function () {
|
|
569
|
-
/** @type {?} */
|
|
570
|
-
var toReturn = {};
|
|
571
|
-
if (typeof this.socialPostId !== 'undefined') {
|
|
572
|
-
toReturn['socialPostId'] = this.socialPostId;
|
|
573
|
-
}
|
|
574
|
-
if (typeof this.socialServiceId !== 'undefined') {
|
|
575
|
-
toReturn['socialServiceId'] = this.socialServiceId;
|
|
576
|
-
}
|
|
577
|
-
if (typeof this.socialServiceLabel !== 'undefined') {
|
|
578
|
-
toReturn['socialServiceLabel'] = this.socialServiceLabel;
|
|
579
|
-
}
|
|
580
|
-
if (typeof this.error !== 'undefined' && this.error !== null) {
|
|
581
|
-
toReturn['error'] = 'toApiJson' in this.error ? ((/** @type {?} */ (this.error))).toApiJson() : this.error;
|
|
582
|
-
}
|
|
583
|
-
return toReturn;
|
|
584
|
-
};
|
|
585
|
-
return SchedulePostStatus;
|
|
586
|
-
}());
|
|
587
|
-
var SocialPost = /** @class */ (function () {
|
|
588
|
-
function SocialPost(kwargs) {
|
|
589
|
-
if (!kwargs) {
|
|
590
|
-
return;
|
|
591
|
-
}
|
|
592
|
-
Object.assign(this, kwargs);
|
|
593
|
-
}
|
|
594
|
-
/**
|
|
595
|
-
* @param {?} proto
|
|
596
|
-
* @return {?}
|
|
597
|
-
*/
|
|
598
|
-
SocialPost.fromProto = /**
|
|
599
|
-
* @param {?} proto
|
|
600
|
-
* @return {?}
|
|
601
|
-
*/
|
|
602
|
-
function (proto) {
|
|
603
|
-
/** @type {?} */
|
|
604
|
-
var m = new SocialPost();
|
|
605
|
-
m = Object.assign(m, proto);
|
|
606
|
-
if (proto.posted) {
|
|
607
|
-
m.posted = new Date(proto.posted);
|
|
608
|
-
}
|
|
609
|
-
if (proto.deletionStatus) {
|
|
610
|
-
m.deletionStatus = enumStringToValue$3(SocialPostDeletionStatus, proto.deletionStatus);
|
|
611
|
-
}
|
|
612
|
-
if (proto.service) {
|
|
613
|
-
m.service = enumStringToValue$3(SocialPostService, proto.service);
|
|
614
|
-
}
|
|
615
|
-
if (proto.created) {
|
|
616
|
-
m.created = new Date(proto.created);
|
|
617
|
-
}
|
|
618
|
-
if (proto.scheduled) {
|
|
619
|
-
m.scheduled = new Date(proto.scheduled);
|
|
620
|
-
}
|
|
621
|
-
if (proto.status) {
|
|
622
|
-
m.status = enumStringToValue$3(PostingStatus, proto.status);
|
|
623
|
-
}
|
|
624
|
-
if (proto.event) {
|
|
625
|
-
m.event = Event.fromProto(proto.event);
|
|
626
|
-
}
|
|
627
|
-
if (proto.callToAction) {
|
|
628
|
-
m.callToAction = CallToAction.fromProto(proto.callToAction);
|
|
629
|
-
}
|
|
630
|
-
if (proto.error) {
|
|
631
|
-
m.error = Error.fromProto(proto.error);
|
|
632
|
-
}
|
|
633
|
-
return m;
|
|
634
|
-
};
|
|
635
|
-
/**
|
|
636
|
-
* @return {?}
|
|
637
|
-
*/
|
|
638
|
-
SocialPost.prototype.toApiJson = /**
|
|
639
|
-
* @return {?}
|
|
640
|
-
*/
|
|
641
|
-
function () {
|
|
642
|
-
/** @type {?} */
|
|
643
|
-
var toReturn = {};
|
|
644
|
-
if (typeof this.businessId !== 'undefined') {
|
|
645
|
-
toReturn['businessId'] = this.businessId;
|
|
646
|
-
}
|
|
647
|
-
if (typeof this.socialPostId !== 'undefined') {
|
|
648
|
-
toReturn['socialPostId'] = this.socialPostId;
|
|
649
|
-
}
|
|
650
|
-
if (typeof this.postText !== 'undefined') {
|
|
651
|
-
toReturn['postText'] = this.postText;
|
|
652
|
-
}
|
|
653
|
-
if (typeof this.posted !== 'undefined' && this.posted !== null) {
|
|
654
|
-
toReturn['posted'] = 'toApiJson' in this.posted ? ((/** @type {?} */ (this.posted))).toApiJson() : this.posted;
|
|
655
|
-
}
|
|
656
|
-
if (typeof this.isError !== 'undefined') {
|
|
657
|
-
toReturn['isError'] = this.isError;
|
|
658
|
-
}
|
|
659
|
-
if (typeof this.deletionStatus !== 'undefined') {
|
|
660
|
-
toReturn['deletionStatus'] = this.deletionStatus;
|
|
661
|
-
}
|
|
662
|
-
if (typeof this.service !== 'undefined') {
|
|
663
|
-
toReturn['service'] = this.service;
|
|
664
|
-
}
|
|
665
|
-
if (typeof this.permalink !== 'undefined') {
|
|
666
|
-
toReturn['permalink'] = this.permalink;
|
|
667
|
-
}
|
|
668
|
-
if (typeof this.created !== 'undefined' && this.created !== null) {
|
|
669
|
-
toReturn['created'] = 'toApiJson' in this.created ? ((/** @type {?} */ (this.created))).toApiJson() : this.created;
|
|
670
|
-
}
|
|
671
|
-
if (typeof this.profileUrl !== 'undefined') {
|
|
672
|
-
toReturn['profileUrl'] = this.profileUrl;
|
|
673
|
-
}
|
|
674
|
-
if (typeof this.profileImageUrl !== 'undefined') {
|
|
675
|
-
toReturn['profileImageUrl'] = this.profileImageUrl;
|
|
676
|
-
}
|
|
677
|
-
if (typeof this.scheduled !== 'undefined' && this.scheduled !== null) {
|
|
678
|
-
toReturn['scheduled'] = 'toApiJson' in this.scheduled ? ((/** @type {?} */ (this.scheduled))).toApiJson() : this.scheduled;
|
|
679
|
-
}
|
|
680
|
-
if (typeof this.status !== 'undefined') {
|
|
681
|
-
toReturn['status'] = this.status;
|
|
682
|
-
}
|
|
683
|
-
if (typeof this.imageUrl !== 'undefined') {
|
|
684
|
-
toReturn['imageUrl'] = this.imageUrl;
|
|
685
|
-
}
|
|
686
|
-
if (typeof this.name !== 'undefined') {
|
|
687
|
-
toReturn['name'] = this.name;
|
|
688
|
-
}
|
|
689
|
-
if (typeof this.username !== 'undefined') {
|
|
690
|
-
toReturn['username'] = this.username;
|
|
691
|
-
}
|
|
692
|
-
if (typeof this.parentId !== 'undefined') {
|
|
693
|
-
toReturn['parentId'] = this.parentId;
|
|
694
|
-
}
|
|
695
|
-
if (typeof this.socialServiceId !== 'undefined') {
|
|
696
|
-
toReturn['socialServiceId'] = this.socialServiceId;
|
|
697
|
-
}
|
|
698
|
-
if (typeof this.event !== 'undefined' && this.event !== null) {
|
|
699
|
-
toReturn['event'] = 'toApiJson' in this.event ? ((/** @type {?} */ (this.event))).toApiJson() : this.event;
|
|
700
|
-
}
|
|
701
|
-
if (typeof this.callToAction !== 'undefined' && this.callToAction !== null) {
|
|
702
|
-
toReturn['callToAction'] = 'toApiJson' in this.callToAction ? ((/** @type {?} */ (this.callToAction))).toApiJson() : this.callToAction;
|
|
703
|
-
}
|
|
704
|
-
if (typeof this.videoUrl !== 'undefined') {
|
|
705
|
-
toReturn['videoUrl'] = this.videoUrl;
|
|
706
|
-
}
|
|
707
|
-
if (typeof this.error !== 'undefined' && this.error !== null) {
|
|
708
|
-
toReturn['error'] = 'toApiJson' in this.error ? ((/** @type {?} */ (this.error))).toApiJson() : this.error;
|
|
709
|
-
}
|
|
710
|
-
if (typeof this.imageUrls !== 'undefined') {
|
|
711
|
-
toReturn['imageUrls'] = this.imageUrls;
|
|
712
|
-
}
|
|
713
|
-
if (typeof this.linkPreviewImageUrl !== 'undefined') {
|
|
714
|
-
toReturn['linkPreviewImageUrl'] = this.linkPreviewImageUrl;
|
|
715
|
-
}
|
|
716
|
-
if (typeof this.brandId !== 'undefined') {
|
|
717
|
-
toReturn['brandId'] = this.brandId;
|
|
718
|
-
}
|
|
719
|
-
if (typeof this.multilocationPostId !== 'undefined') {
|
|
720
|
-
toReturn['multilocationPostId'] = this.multilocationPostId;
|
|
721
|
-
}
|
|
722
|
-
return toReturn;
|
|
723
|
-
};
|
|
724
|
-
return SocialPost;
|
|
725
|
-
}());
|
|
726
|
-
var SocialPostData = /** @class */ (function () {
|
|
727
|
-
function SocialPostData(kwargs) {
|
|
728
|
-
if (!kwargs) {
|
|
729
|
-
return;
|
|
730
|
-
}
|
|
731
|
-
Object.assign(this, kwargs);
|
|
732
|
-
}
|
|
733
|
-
/**
|
|
734
|
-
* @param {?} proto
|
|
735
|
-
* @return {?}
|
|
736
|
-
*/
|
|
737
|
-
SocialPostData.fromProto = /**
|
|
738
|
-
* @param {?} proto
|
|
739
|
-
* @return {?}
|
|
740
|
-
*/
|
|
741
|
-
function (proto) {
|
|
742
|
-
/** @type {?} */
|
|
743
|
-
var m = new SocialPostData();
|
|
744
|
-
m = Object.assign(m, proto);
|
|
745
|
-
if (proto.scheduleFor) {
|
|
746
|
-
m.scheduleFor = new Date(proto.scheduleFor);
|
|
747
|
-
}
|
|
748
|
-
return m;
|
|
749
|
-
};
|
|
750
|
-
/**
|
|
751
|
-
* @return {?}
|
|
752
|
-
*/
|
|
753
|
-
SocialPostData.prototype.toApiJson = /**
|
|
754
|
-
* @return {?}
|
|
755
|
-
*/
|
|
756
|
-
function () {
|
|
757
|
-
/** @type {?} */
|
|
758
|
-
var toReturn = {};
|
|
759
|
-
if (typeof this.postText !== 'undefined') {
|
|
760
|
-
toReturn['postText'] = this.postText;
|
|
761
|
-
}
|
|
762
|
-
if (typeof this.imageUrl !== 'undefined') {
|
|
763
|
-
toReturn['imageUrl'] = this.imageUrl;
|
|
764
|
-
}
|
|
765
|
-
if (typeof this.scheduleFor !== 'undefined' && this.scheduleFor !== null) {
|
|
766
|
-
toReturn['scheduleFor'] = 'toApiJson' in this.scheduleFor ? ((/** @type {?} */ (this.scheduleFor))).toApiJson() : this.scheduleFor;
|
|
767
|
-
}
|
|
768
|
-
return toReturn;
|
|
769
|
-
};
|
|
770
|
-
return SocialPostData;
|
|
771
|
-
}());
|
|
772
|
-
|
|
773
|
-
/**
|
|
774
|
-
* @fileoverview added by tsickle
|
|
775
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
776
|
-
*/
|
|
777
|
-
var FacebookPostStats = /** @class */ (function () {
|
|
778
|
-
function FacebookPostStats(kwargs) {
|
|
779
|
-
if (!kwargs) {
|
|
780
|
-
return;
|
|
781
|
-
}
|
|
782
|
-
Object.assign(this, kwargs);
|
|
783
|
-
}
|
|
784
|
-
/**
|
|
785
|
-
* @param {?} proto
|
|
786
|
-
* @return {?}
|
|
787
|
-
*/
|
|
788
|
-
FacebookPostStats.fromProto = /**
|
|
789
|
-
* @param {?} proto
|
|
790
|
-
* @return {?}
|
|
791
|
-
*/
|
|
792
|
-
function (proto) {
|
|
793
|
-
/** @type {?} */
|
|
794
|
-
var m = new FacebookPostStats();
|
|
795
|
-
m = Object.assign(m, proto);
|
|
796
|
-
if (proto.commentCount) {
|
|
797
|
-
m.commentCount = parseInt(proto.commentCount, 10);
|
|
798
|
-
}
|
|
799
|
-
if (proto.shareCount) {
|
|
800
|
-
m.shareCount = parseInt(proto.shareCount, 10);
|
|
801
|
-
}
|
|
802
|
-
if (proto.likeCount) {
|
|
803
|
-
m.likeCount = parseInt(proto.likeCount, 10);
|
|
804
|
-
}
|
|
805
|
-
if (proto.reactions) {
|
|
806
|
-
m.reactions = parseInt(proto.reactions, 10);
|
|
807
|
-
}
|
|
808
|
-
if (proto.peopleReached) {
|
|
809
|
-
m.peopleReached = parseInt(proto.peopleReached, 10);
|
|
810
|
-
}
|
|
811
|
-
return m;
|
|
812
|
-
};
|
|
813
|
-
/**
|
|
814
|
-
* @return {?}
|
|
815
|
-
*/
|
|
816
|
-
FacebookPostStats.prototype.toApiJson = /**
|
|
817
|
-
* @return {?}
|
|
818
|
-
*/
|
|
819
|
-
function () {
|
|
820
|
-
/** @type {?} */
|
|
821
|
-
var toReturn = {};
|
|
822
|
-
if (typeof this.commentCount !== 'undefined') {
|
|
823
|
-
toReturn['commentCount'] = this.commentCount;
|
|
824
|
-
}
|
|
825
|
-
if (typeof this.shareCount !== 'undefined') {
|
|
826
|
-
toReturn['shareCount'] = this.shareCount;
|
|
827
|
-
}
|
|
828
|
-
if (typeof this.likeCount !== 'undefined') {
|
|
829
|
-
toReturn['likeCount'] = this.likeCount;
|
|
830
|
-
}
|
|
831
|
-
if (typeof this.hasLike !== 'undefined') {
|
|
832
|
-
toReturn['hasLike'] = this.hasLike;
|
|
833
|
-
}
|
|
834
|
-
if (typeof this.canLike !== 'undefined') {
|
|
835
|
-
toReturn['canLike'] = this.canLike;
|
|
836
|
-
}
|
|
837
|
-
if (typeof this.reactions !== 'undefined') {
|
|
838
|
-
toReturn['reactions'] = this.reactions;
|
|
839
|
-
}
|
|
840
|
-
if (typeof this.peopleReached !== 'undefined') {
|
|
841
|
-
toReturn['peopleReached'] = this.peopleReached;
|
|
842
|
-
}
|
|
843
|
-
return toReturn;
|
|
844
|
-
};
|
|
845
|
-
return FacebookPostStats;
|
|
846
|
-
}());
|
|
847
|
-
var SocialPostStats = /** @class */ (function () {
|
|
848
|
-
function SocialPostStats(kwargs) {
|
|
849
|
-
if (!kwargs) {
|
|
850
|
-
return;
|
|
851
|
-
}
|
|
852
|
-
Object.assign(this, kwargs);
|
|
853
|
-
}
|
|
854
|
-
/**
|
|
855
|
-
* @param {?} proto
|
|
856
|
-
* @return {?}
|
|
857
|
-
*/
|
|
858
|
-
SocialPostStats.fromProto = /**
|
|
859
|
-
* @param {?} proto
|
|
860
|
-
* @return {?}
|
|
861
|
-
*/
|
|
862
|
-
function (proto) {
|
|
863
|
-
/** @type {?} */
|
|
864
|
-
var m = new SocialPostStats();
|
|
865
|
-
m = Object.assign(m, proto);
|
|
866
|
-
if (proto.facebookPostStats) {
|
|
867
|
-
m.facebookPostStats = FacebookPostStats.fromProto(proto.facebookPostStats);
|
|
868
|
-
}
|
|
869
|
-
if (proto.twitterPostStats) {
|
|
870
|
-
m.twitterPostStats = TwitterPostStats.fromProto(proto.twitterPostStats);
|
|
871
|
-
}
|
|
872
|
-
return m;
|
|
873
|
-
};
|
|
874
|
-
/**
|
|
875
|
-
* @return {?}
|
|
876
|
-
*/
|
|
877
|
-
SocialPostStats.prototype.toApiJson = /**
|
|
878
|
-
* @return {?}
|
|
879
|
-
*/
|
|
880
|
-
function () {
|
|
881
|
-
/** @type {?} */
|
|
882
|
-
var toReturn = {};
|
|
883
|
-
if (typeof this.internalPostId !== 'undefined') {
|
|
884
|
-
toReturn['internalPostId'] = this.internalPostId;
|
|
885
|
-
}
|
|
886
|
-
if (typeof this.facebookPostStats !== 'undefined' && this.facebookPostStats !== null) {
|
|
887
|
-
toReturn['facebookPostStats'] = 'toApiJson' in this.facebookPostStats ? ((/** @type {?} */ (this.facebookPostStats))).toApiJson() : this.facebookPostStats;
|
|
888
|
-
}
|
|
889
|
-
if (typeof this.twitterPostStats !== 'undefined' && this.twitterPostStats !== null) {
|
|
890
|
-
toReturn['twitterPostStats'] = 'toApiJson' in this.twitterPostStats ? ((/** @type {?} */ (this.twitterPostStats))).toApiJson() : this.twitterPostStats;
|
|
891
|
-
}
|
|
892
|
-
return toReturn;
|
|
893
|
-
};
|
|
894
|
-
return SocialPostStats;
|
|
895
|
-
}());
|
|
896
|
-
var TwitterPostStats = /** @class */ (function () {
|
|
897
|
-
function TwitterPostStats(kwargs) {
|
|
898
|
-
if (!kwargs) {
|
|
899
|
-
return;
|
|
900
|
-
}
|
|
901
|
-
Object.assign(this, kwargs);
|
|
902
|
-
}
|
|
903
|
-
/**
|
|
904
|
-
* @param {?} proto
|
|
905
|
-
* @return {?}
|
|
906
|
-
*/
|
|
907
|
-
TwitterPostStats.fromProto = /**
|
|
908
|
-
* @param {?} proto
|
|
909
|
-
* @return {?}
|
|
910
|
-
*/
|
|
911
|
-
function (proto) {
|
|
912
|
-
/** @type {?} */
|
|
913
|
-
var m = new TwitterPostStats();
|
|
914
|
-
m = Object.assign(m, proto);
|
|
915
|
-
if (proto.favourites) {
|
|
916
|
-
m.favourites = parseInt(proto.favourites, 10);
|
|
917
|
-
}
|
|
918
|
-
if (proto.retweets) {
|
|
919
|
-
m.retweets = parseInt(proto.retweets, 10);
|
|
920
|
-
}
|
|
921
|
-
return m;
|
|
922
|
-
};
|
|
923
|
-
/**
|
|
924
|
-
* @return {?}
|
|
925
|
-
*/
|
|
926
|
-
TwitterPostStats.prototype.toApiJson = /**
|
|
927
|
-
* @return {?}
|
|
928
|
-
*/
|
|
929
|
-
function () {
|
|
930
|
-
/** @type {?} */
|
|
931
|
-
var toReturn = {};
|
|
932
|
-
if (typeof this.favourites !== 'undefined') {
|
|
933
|
-
toReturn['favourites'] = this.favourites;
|
|
934
|
-
}
|
|
935
|
-
if (typeof this.hasFavourited !== 'undefined') {
|
|
936
|
-
toReturn['hasFavourited'] = this.hasFavourited;
|
|
937
|
-
}
|
|
938
|
-
if (typeof this.retweets !== 'undefined') {
|
|
939
|
-
toReturn['retweets'] = this.retweets;
|
|
940
|
-
}
|
|
941
|
-
if (typeof this.hasRetweeted !== 'undefined') {
|
|
942
|
-
toReturn['hasRetweeted'] = this.hasRetweeted;
|
|
943
|
-
}
|
|
944
|
-
return toReturn;
|
|
945
|
-
};
|
|
946
|
-
return TwitterPostStats;
|
|
947
|
-
}());
|
|
948
|
-
|
|
949
|
-
/**
|
|
950
|
-
* @fileoverview added by tsickle
|
|
951
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
952
|
-
*/
|
|
953
|
-
/**
|
|
954
|
-
* @template E
|
|
955
|
-
* @param {?} enumRef
|
|
956
|
-
* @param {?} value
|
|
957
|
-
* @return {?}
|
|
958
|
-
*/
|
|
959
|
-
function enumStringToValue$5(enumRef, value) {
|
|
960
|
-
if (typeof value === 'number') {
|
|
961
|
-
return value;
|
|
962
|
-
}
|
|
963
|
-
return enumRef[value];
|
|
964
|
-
}
|
|
965
|
-
var CreateMultilocationPostRequest = /** @class */ (function () {
|
|
966
|
-
function CreateMultilocationPostRequest(kwargs) {
|
|
967
|
-
if (!kwargs) {
|
|
968
|
-
return;
|
|
969
|
-
}
|
|
970
|
-
Object.assign(this, kwargs);
|
|
971
|
-
}
|
|
972
|
-
/**
|
|
973
|
-
* @param {?} proto
|
|
974
|
-
* @return {?}
|
|
975
|
-
*/
|
|
976
|
-
CreateMultilocationPostRequest.fromProto = /**
|
|
977
|
-
* @param {?} proto
|
|
978
|
-
* @return {?}
|
|
979
|
-
*/
|
|
980
|
-
function (proto) {
|
|
981
|
-
/** @type {?} */
|
|
982
|
-
var m = new CreateMultilocationPostRequest();
|
|
983
|
-
m = Object.assign(m, proto);
|
|
984
|
-
if (proto.scheduledDate) {
|
|
985
|
-
m.scheduledDate = new Date(proto.scheduledDate);
|
|
986
|
-
}
|
|
987
|
-
if (proto.locations) {
|
|
988
|
-
m.locations = proto.locations.map(Location.fromProto);
|
|
989
|
-
}
|
|
990
|
-
return m;
|
|
991
|
-
};
|
|
992
|
-
/**
|
|
993
|
-
* @return {?}
|
|
994
|
-
*/
|
|
995
|
-
CreateMultilocationPostRequest.prototype.toApiJson = /**
|
|
996
|
-
* @return {?}
|
|
997
|
-
*/
|
|
998
|
-
function () {
|
|
999
|
-
/** @type {?} */
|
|
1000
|
-
var toReturn = {};
|
|
1001
|
-
if (typeof this.brandId !== 'undefined') {
|
|
1002
|
-
toReturn['brandId'] = this.brandId;
|
|
1003
|
-
}
|
|
1004
|
-
if (typeof this.text !== 'undefined') {
|
|
1005
|
-
toReturn['text'] = this.text;
|
|
1006
|
-
}
|
|
1007
|
-
if (typeof this.media !== 'undefined') {
|
|
1008
|
-
toReturn['media'] = this.media;
|
|
1009
|
-
}
|
|
1010
|
-
if (typeof this.scheduledDate !== 'undefined' && this.scheduledDate !== null) {
|
|
1011
|
-
toReturn['scheduledDate'] = 'toApiJson' in this.scheduledDate ? ((/** @type {?} */ (this.scheduledDate))).toApiJson() : this.scheduledDate;
|
|
1012
|
-
}
|
|
1013
|
-
if (typeof this.locations !== 'undefined' && this.locations !== null) {
|
|
1014
|
-
toReturn['locations'] = 'toApiJson' in this.locations ? ((/** @type {?} */ (this.locations))).toApiJson() : this.locations;
|
|
1015
|
-
}
|
|
1016
|
-
if (typeof this.gifs !== 'undefined') {
|
|
1017
|
-
toReturn['gifs'] = this.gifs;
|
|
1018
|
-
}
|
|
1019
|
-
if (typeof this.videos !== 'undefined') {
|
|
1020
|
-
toReturn['videos'] = this.videos;
|
|
1021
|
-
}
|
|
1022
|
-
return toReturn;
|
|
1023
|
-
};
|
|
1024
|
-
return CreateMultilocationPostRequest;
|
|
1025
|
-
}());
|
|
1026
|
-
var CreateMultilocationPostResponse = /** @class */ (function () {
|
|
1027
|
-
function CreateMultilocationPostResponse(kwargs) {
|
|
1028
|
-
if (!kwargs) {
|
|
1029
|
-
return;
|
|
1030
|
-
}
|
|
1031
|
-
Object.assign(this, kwargs);
|
|
1032
|
-
}
|
|
1033
|
-
/**
|
|
1034
|
-
* @param {?} proto
|
|
1035
|
-
* @return {?}
|
|
1036
|
-
*/
|
|
1037
|
-
CreateMultilocationPostResponse.fromProto = /**
|
|
1038
|
-
* @param {?} proto
|
|
1039
|
-
* @return {?}
|
|
1040
|
-
*/
|
|
1041
|
-
function (proto) {
|
|
1042
|
-
/** @type {?} */
|
|
1043
|
-
var m = new CreateMultilocationPostResponse();
|
|
1044
|
-
m = Object.assign(m, proto);
|
|
1045
|
-
if (proto.post) {
|
|
1046
|
-
m.post = MultilocationPost.fromProto(proto.post);
|
|
1047
|
-
}
|
|
1048
|
-
if (proto.errors) {
|
|
1049
|
-
m.errors = proto.errors.map(MultilocationPostError.fromProto);
|
|
1050
|
-
}
|
|
1051
|
-
return m;
|
|
1052
|
-
};
|
|
1053
|
-
/**
|
|
1054
|
-
* @return {?}
|
|
1055
|
-
*/
|
|
1056
|
-
CreateMultilocationPostResponse.prototype.toApiJson = /**
|
|
1057
|
-
* @return {?}
|
|
1058
|
-
*/
|
|
1059
|
-
function () {
|
|
1060
|
-
/** @type {?} */
|
|
1061
|
-
var toReturn = {};
|
|
1062
|
-
if (typeof this.post !== 'undefined' && this.post !== null) {
|
|
1063
|
-
toReturn['post'] = 'toApiJson' in this.post ? ((/** @type {?} */ (this.post))).toApiJson() : this.post;
|
|
1064
|
-
}
|
|
1065
|
-
if (typeof this.errors !== 'undefined' && this.errors !== null) {
|
|
1066
|
-
toReturn['errors'] = 'toApiJson' in this.errors ? ((/** @type {?} */ (this.errors))).toApiJson() : this.errors;
|
|
1067
|
-
}
|
|
1068
|
-
return toReturn;
|
|
1069
|
-
};
|
|
1070
|
-
return CreateMultilocationPostResponse;
|
|
1071
|
-
}());
|
|
1072
|
-
var CreatePostTemplateRequest = /** @class */ (function () {
|
|
1073
|
-
function CreatePostTemplateRequest(kwargs) {
|
|
1074
|
-
if (!kwargs) {
|
|
1075
|
-
return;
|
|
1076
|
-
}
|
|
1077
|
-
Object.assign(this, kwargs);
|
|
1078
|
-
}
|
|
1079
|
-
/**
|
|
1080
|
-
* @param {?} proto
|
|
1081
|
-
* @return {?}
|
|
1082
|
-
*/
|
|
1083
|
-
CreatePostTemplateRequest.fromProto = /**
|
|
1084
|
-
* @param {?} proto
|
|
1085
|
-
* @return {?}
|
|
1086
|
-
*/
|
|
1087
|
-
function (proto) {
|
|
1088
|
-
/** @type {?} */
|
|
1089
|
-
var m = new CreatePostTemplateRequest();
|
|
1090
|
-
m = Object.assign(m, proto);
|
|
1091
|
-
if (proto.postDateTime) {
|
|
1092
|
-
m.postDateTime = new Date(proto.postDateTime);
|
|
1093
|
-
}
|
|
1094
|
-
return m;
|
|
1095
|
-
};
|
|
1096
|
-
/**
|
|
1097
|
-
* @return {?}
|
|
1098
|
-
*/
|
|
1099
|
-
CreatePostTemplateRequest.prototype.toApiJson = /**
|
|
1100
|
-
* @return {?}
|
|
1101
|
-
*/
|
|
1102
|
-
function () {
|
|
1103
|
-
/** @type {?} */
|
|
1104
|
-
var toReturn = {};
|
|
1105
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
1106
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
1107
|
-
}
|
|
1108
|
-
if (typeof this.title !== 'undefined') {
|
|
1109
|
-
toReturn['title'] = this.title;
|
|
1110
|
-
}
|
|
1111
|
-
if (typeof this.postText !== 'undefined') {
|
|
1112
|
-
toReturn['postText'] = this.postText;
|
|
1113
|
-
}
|
|
1114
|
-
if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {
|
|
1115
|
-
toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? ((/** @type {?} */ (this.postDateTime))).toApiJson() : this.postDateTime;
|
|
1116
|
-
}
|
|
1117
|
-
if (typeof this.gmbPostCustomization !== 'undefined') {
|
|
1118
|
-
toReturn['gmbPostCustomization'] = this.gmbPostCustomization;
|
|
1119
|
-
}
|
|
1120
|
-
if (typeof this.imageUrl !== 'undefined') {
|
|
1121
|
-
toReturn['imageUrl'] = this.imageUrl;
|
|
1122
|
-
}
|
|
1123
|
-
if (typeof this.imagePath !== 'undefined') {
|
|
1124
|
-
toReturn['imagePath'] = this.imagePath;
|
|
1125
|
-
}
|
|
1126
|
-
if (typeof this.imageSize !== 'undefined') {
|
|
1127
|
-
toReturn['imageSize'] = this.imageSize;
|
|
1128
|
-
}
|
|
1129
|
-
if (typeof this.previews !== 'undefined') {
|
|
1130
|
-
toReturn['previews'] = this.previews;
|
|
1131
|
-
}
|
|
1132
|
-
if (typeof this.options !== 'undefined') {
|
|
1133
|
-
toReturn['options'] = this.options;
|
|
1134
|
-
}
|
|
1135
|
-
if (typeof this.videoUrl !== 'undefined') {
|
|
1136
|
-
toReturn['videoUrl'] = this.videoUrl;
|
|
1137
|
-
}
|
|
1138
|
-
return toReturn;
|
|
1139
|
-
};
|
|
1140
|
-
return CreatePostTemplateRequest;
|
|
1141
|
-
}());
|
|
1142
|
-
var CreatePostTemplateResponse = /** @class */ (function () {
|
|
1143
|
-
function CreatePostTemplateResponse(kwargs) {
|
|
1144
|
-
if (!kwargs) {
|
|
1145
|
-
return;
|
|
1146
|
-
}
|
|
1147
|
-
Object.assign(this, kwargs);
|
|
1148
|
-
}
|
|
1149
|
-
/**
|
|
1150
|
-
* @param {?} proto
|
|
1151
|
-
* @return {?}
|
|
1152
|
-
*/
|
|
1153
|
-
CreatePostTemplateResponse.fromProto = /**
|
|
1154
|
-
* @param {?} proto
|
|
1155
|
-
* @return {?}
|
|
1156
|
-
*/
|
|
1157
|
-
function (proto) {
|
|
1158
|
-
/** @type {?} */
|
|
1159
|
-
var m = new CreatePostTemplateResponse();
|
|
1160
|
-
m = Object.assign(m, proto);
|
|
1161
|
-
return m;
|
|
1162
|
-
};
|
|
1163
|
-
/**
|
|
1164
|
-
* @return {?}
|
|
1165
|
-
*/
|
|
1166
|
-
CreatePostTemplateResponse.prototype.toApiJson = /**
|
|
1167
|
-
* @return {?}
|
|
1168
|
-
*/
|
|
1169
|
-
function () {
|
|
1170
|
-
/** @type {?} */
|
|
1171
|
-
var toReturn = {};
|
|
1172
|
-
if (typeof this.templateId !== 'undefined') {
|
|
1173
|
-
toReturn['templateId'] = this.templateId;
|
|
1174
|
-
}
|
|
1175
|
-
return toReturn;
|
|
1176
|
-
};
|
|
1177
|
-
return CreatePostTemplateResponse;
|
|
1178
|
-
}());
|
|
1179
|
-
var DateRangeFilter = /** @class */ (function () {
|
|
1180
|
-
function DateRangeFilter(kwargs) {
|
|
1181
|
-
if (!kwargs) {
|
|
1182
|
-
return;
|
|
1183
|
-
}
|
|
1184
|
-
Object.assign(this, kwargs);
|
|
1185
|
-
}
|
|
1186
|
-
/**
|
|
1187
|
-
* @param {?} proto
|
|
1188
|
-
* @return {?}
|
|
1189
|
-
*/
|
|
1190
|
-
DateRangeFilter.fromProto = /**
|
|
1191
|
-
* @param {?} proto
|
|
1192
|
-
* @return {?}
|
|
1193
|
-
*/
|
|
1194
|
-
function (proto) {
|
|
1195
|
-
/** @type {?} */
|
|
1196
|
-
var m = new DateRangeFilter();
|
|
1197
|
-
m = Object.assign(m, proto);
|
|
1198
|
-
if (proto.beginRange) {
|
|
1199
|
-
m.beginRange = new Date(proto.beginRange);
|
|
1200
|
-
}
|
|
1201
|
-
if (proto.endRange) {
|
|
1202
|
-
m.endRange = new Date(proto.endRange);
|
|
1203
|
-
}
|
|
1204
|
-
return m;
|
|
1205
|
-
};
|
|
1206
|
-
/**
|
|
1207
|
-
* @return {?}
|
|
1208
|
-
*/
|
|
1209
|
-
DateRangeFilter.prototype.toApiJson = /**
|
|
1210
|
-
* @return {?}
|
|
1211
|
-
*/
|
|
1212
|
-
function () {
|
|
1213
|
-
/** @type {?} */
|
|
1214
|
-
var toReturn = {};
|
|
1215
|
-
if (typeof this.beginRange !== 'undefined' && this.beginRange !== null) {
|
|
1216
|
-
toReturn['beginRange'] = 'toApiJson' in this.beginRange ? ((/** @type {?} */ (this.beginRange))).toApiJson() : this.beginRange;
|
|
1217
|
-
}
|
|
1218
|
-
if (typeof this.endRange !== 'undefined' && this.endRange !== null) {
|
|
1219
|
-
toReturn['endRange'] = 'toApiJson' in this.endRange ? ((/** @type {?} */ (this.endRange))).toApiJson() : this.endRange;
|
|
1220
|
-
}
|
|
1221
|
-
return toReturn;
|
|
1222
|
-
};
|
|
1223
|
-
return DateRangeFilter;
|
|
1224
|
-
}());
|
|
1225
|
-
var DeleteMultilocationPostRequest = /** @class */ (function () {
|
|
1226
|
-
function DeleteMultilocationPostRequest(kwargs) {
|
|
1227
|
-
if (!kwargs) {
|
|
1228
|
-
return;
|
|
1229
|
-
}
|
|
1230
|
-
Object.assign(this, kwargs);
|
|
1231
|
-
}
|
|
1232
|
-
/**
|
|
1233
|
-
* @param {?} proto
|
|
1234
|
-
* @return {?}
|
|
1235
|
-
*/
|
|
1236
|
-
DeleteMultilocationPostRequest.fromProto = /**
|
|
1237
|
-
* @param {?} proto
|
|
1238
|
-
* @return {?}
|
|
1239
|
-
*/
|
|
1240
|
-
function (proto) {
|
|
1241
|
-
/** @type {?} */
|
|
1242
|
-
var m = new DeleteMultilocationPostRequest();
|
|
1243
|
-
m = Object.assign(m, proto);
|
|
1244
|
-
return m;
|
|
1245
|
-
};
|
|
1246
|
-
/**
|
|
1247
|
-
* @return {?}
|
|
1248
|
-
*/
|
|
1249
|
-
DeleteMultilocationPostRequest.prototype.toApiJson = /**
|
|
1250
|
-
* @return {?}
|
|
1251
|
-
*/
|
|
1252
|
-
function () {
|
|
1253
|
-
/** @type {?} */
|
|
1254
|
-
var toReturn = {};
|
|
1255
|
-
if (typeof this.brandId !== 'undefined') {
|
|
1256
|
-
toReturn['brandId'] = this.brandId;
|
|
1257
|
-
}
|
|
1258
|
-
if (typeof this.multilocationId !== 'undefined') {
|
|
1259
|
-
toReturn['multilocationId'] = this.multilocationId;
|
|
1260
|
-
}
|
|
1261
|
-
return toReturn;
|
|
1262
|
-
};
|
|
1263
|
-
return DeleteMultilocationPostRequest;
|
|
1264
|
-
}());
|
|
1265
|
-
var DeletePostTemplateRequest = /** @class */ (function () {
|
|
1266
|
-
function DeletePostTemplateRequest(kwargs) {
|
|
1267
|
-
if (!kwargs) {
|
|
1268
|
-
return;
|
|
1269
|
-
}
|
|
1270
|
-
Object.assign(this, kwargs);
|
|
1271
|
-
}
|
|
1272
|
-
/**
|
|
1273
|
-
* @param {?} proto
|
|
1274
|
-
* @return {?}
|
|
1275
|
-
*/
|
|
1276
|
-
DeletePostTemplateRequest.fromProto = /**
|
|
1277
|
-
* @param {?} proto
|
|
1278
|
-
* @return {?}
|
|
1279
|
-
*/
|
|
1280
|
-
function (proto) {
|
|
1281
|
-
/** @type {?} */
|
|
1282
|
-
var m = new DeletePostTemplateRequest();
|
|
1283
|
-
m = Object.assign(m, proto);
|
|
1284
|
-
return m;
|
|
1285
|
-
};
|
|
1286
|
-
/**
|
|
1287
|
-
* @return {?}
|
|
1288
|
-
*/
|
|
1289
|
-
DeletePostTemplateRequest.prototype.toApiJson = /**
|
|
1290
|
-
* @return {?}
|
|
1291
|
-
*/
|
|
1292
|
-
function () {
|
|
1293
|
-
/** @type {?} */
|
|
1294
|
-
var toReturn = {};
|
|
1295
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
1296
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
1297
|
-
}
|
|
1298
|
-
if (typeof this.templateId !== 'undefined') {
|
|
1299
|
-
toReturn['templateId'] = this.templateId;
|
|
1300
|
-
}
|
|
1301
|
-
return toReturn;
|
|
1302
|
-
};
|
|
1303
|
-
return DeletePostTemplateRequest;
|
|
1304
|
-
}());
|
|
1305
|
-
var DeleteSocialPostRequest = /** @class */ (function () {
|
|
1306
|
-
function DeleteSocialPostRequest(kwargs) {
|
|
1307
|
-
if (!kwargs) {
|
|
1308
|
-
return;
|
|
1309
|
-
}
|
|
1310
|
-
Object.assign(this, kwargs);
|
|
1311
|
-
}
|
|
1312
|
-
/**
|
|
1313
|
-
* @param {?} proto
|
|
1314
|
-
* @return {?}
|
|
1315
|
-
*/
|
|
1316
|
-
DeleteSocialPostRequest.fromProto = /**
|
|
1317
|
-
* @param {?} proto
|
|
1318
|
-
* @return {?}
|
|
1319
|
-
*/
|
|
1320
|
-
function (proto) {
|
|
1321
|
-
/** @type {?} */
|
|
1322
|
-
var m = new DeleteSocialPostRequest();
|
|
1323
|
-
m = Object.assign(m, proto);
|
|
1324
|
-
return m;
|
|
1325
|
-
};
|
|
1326
|
-
/**
|
|
1327
|
-
* @return {?}
|
|
1328
|
-
*/
|
|
1329
|
-
DeleteSocialPostRequest.prototype.toApiJson = /**
|
|
1330
|
-
* @return {?}
|
|
1331
|
-
*/
|
|
1332
|
-
function () {
|
|
1333
|
-
/** @type {?} */
|
|
1334
|
-
var toReturn = {};
|
|
1335
|
-
if (typeof this.businessId !== 'undefined') {
|
|
1336
|
-
toReturn['businessId'] = this.businessId;
|
|
1337
|
-
}
|
|
1338
|
-
if (typeof this.socialPostId !== 'undefined') {
|
|
1339
|
-
toReturn['socialPostId'] = this.socialPostId;
|
|
1340
|
-
}
|
|
1341
|
-
return toReturn;
|
|
1342
|
-
};
|
|
1343
|
-
return DeleteSocialPostRequest;
|
|
1344
|
-
}());
|
|
1345
|
-
var EditMultilocationPostRequest = /** @class */ (function () {
|
|
1346
|
-
function EditMultilocationPostRequest(kwargs) {
|
|
1347
|
-
if (!kwargs) {
|
|
1348
|
-
return;
|
|
1349
|
-
}
|
|
1350
|
-
Object.assign(this, kwargs);
|
|
1351
|
-
}
|
|
1352
|
-
/**
|
|
1353
|
-
* @param {?} proto
|
|
1354
|
-
* @return {?}
|
|
1355
|
-
*/
|
|
1356
|
-
EditMultilocationPostRequest.fromProto = /**
|
|
1357
|
-
* @param {?} proto
|
|
1358
|
-
* @return {?}
|
|
1359
|
-
*/
|
|
1360
|
-
function (proto) {
|
|
1361
|
-
/** @type {?} */
|
|
1362
|
-
var m = new EditMultilocationPostRequest();
|
|
1363
|
-
m = Object.assign(m, proto);
|
|
1364
|
-
if (proto.scheduledDate) {
|
|
1365
|
-
m.scheduledDate = new Date(proto.scheduledDate);
|
|
1366
|
-
}
|
|
1367
|
-
if (proto.fieldMask) {
|
|
1368
|
-
m.fieldMask = FieldMask.fromProto(proto.fieldMask);
|
|
1369
|
-
}
|
|
1370
|
-
if (proto.locations) {
|
|
1371
|
-
m.locations = proto.locations.map(Location.fromProto);
|
|
1372
|
-
}
|
|
1373
|
-
return m;
|
|
1374
|
-
};
|
|
1375
|
-
/**
|
|
1376
|
-
* @return {?}
|
|
1377
|
-
*/
|
|
1378
|
-
EditMultilocationPostRequest.prototype.toApiJson = /**
|
|
1379
|
-
* @return {?}
|
|
1380
|
-
*/
|
|
1381
|
-
function () {
|
|
1382
|
-
/** @type {?} */
|
|
1383
|
-
var toReturn = {};
|
|
1384
|
-
if (typeof this.brandId !== 'undefined') {
|
|
1385
|
-
toReturn['brandId'] = this.brandId;
|
|
1386
|
-
}
|
|
1387
|
-
if (typeof this.multilocationId !== 'undefined') {
|
|
1388
|
-
toReturn['multilocationId'] = this.multilocationId;
|
|
1389
|
-
}
|
|
1390
|
-
if (typeof this.text !== 'undefined') {
|
|
1391
|
-
toReturn['text'] = this.text;
|
|
1392
|
-
}
|
|
1393
|
-
if (typeof this.media !== 'undefined') {
|
|
1394
|
-
toReturn['media'] = this.media;
|
|
1395
|
-
}
|
|
1396
|
-
if (typeof this.scheduledDate !== 'undefined' && this.scheduledDate !== null) {
|
|
1397
|
-
toReturn['scheduledDate'] = 'toApiJson' in this.scheduledDate ? ((/** @type {?} */ (this.scheduledDate))).toApiJson() : this.scheduledDate;
|
|
1398
|
-
}
|
|
1399
|
-
if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {
|
|
1400
|
-
toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? ((/** @type {?} */ (this.fieldMask))).toApiJson() : this.fieldMask;
|
|
1401
|
-
}
|
|
1402
|
-
if (typeof this.gifs !== 'undefined') {
|
|
1403
|
-
toReturn['gifs'] = this.gifs;
|
|
1404
|
-
}
|
|
1405
|
-
if (typeof this.videos !== 'undefined') {
|
|
1406
|
-
toReturn['videos'] = this.videos;
|
|
1407
|
-
}
|
|
1408
|
-
if (typeof this.locations !== 'undefined' && this.locations !== null) {
|
|
1409
|
-
toReturn['locations'] = 'toApiJson' in this.locations ? ((/** @type {?} */ (this.locations))).toApiJson() : this.locations;
|
|
1410
|
-
}
|
|
1411
|
-
return toReturn;
|
|
1412
|
-
};
|
|
1413
|
-
return EditMultilocationPostRequest;
|
|
1414
|
-
}());
|
|
1415
|
-
var EditMultilocationPostResponse = /** @class */ (function () {
|
|
1416
|
-
function EditMultilocationPostResponse(kwargs) {
|
|
1417
|
-
if (!kwargs) {
|
|
1418
|
-
return;
|
|
1419
|
-
}
|
|
1420
|
-
Object.assign(this, kwargs);
|
|
1421
|
-
}
|
|
1422
|
-
/**
|
|
1423
|
-
* @param {?} proto
|
|
1424
|
-
* @return {?}
|
|
1425
|
-
*/
|
|
1426
|
-
EditMultilocationPostResponse.fromProto = /**
|
|
1427
|
-
* @param {?} proto
|
|
1428
|
-
* @return {?}
|
|
1429
|
-
*/
|
|
1430
|
-
function (proto) {
|
|
1431
|
-
/** @type {?} */
|
|
1432
|
-
var m = new EditMultilocationPostResponse();
|
|
1433
|
-
m = Object.assign(m, proto);
|
|
1434
|
-
if (proto.post) {
|
|
1435
|
-
m.post = MultilocationPost.fromProto(proto.post);
|
|
1436
|
-
}
|
|
1437
|
-
if (proto.errors) {
|
|
1438
|
-
m.errors = proto.errors.map(MultilocationPostError.fromProto);
|
|
1439
|
-
}
|
|
1440
|
-
return m;
|
|
1441
|
-
};
|
|
1442
|
-
/**
|
|
1443
|
-
* @return {?}
|
|
1444
|
-
*/
|
|
1445
|
-
EditMultilocationPostResponse.prototype.toApiJson = /**
|
|
1446
|
-
* @return {?}
|
|
1447
|
-
*/
|
|
1448
|
-
function () {
|
|
1449
|
-
/** @type {?} */
|
|
1450
|
-
var toReturn = {};
|
|
1451
|
-
if (typeof this.post !== 'undefined' && this.post !== null) {
|
|
1452
|
-
toReturn['post'] = 'toApiJson' in this.post ? ((/** @type {?} */ (this.post))).toApiJson() : this.post;
|
|
1453
|
-
}
|
|
1454
|
-
if (typeof this.errors !== 'undefined' && this.errors !== null) {
|
|
1455
|
-
toReturn['errors'] = 'toApiJson' in this.errors ? ((/** @type {?} */ (this.errors))).toApiJson() : this.errors;
|
|
1456
|
-
}
|
|
1457
|
-
return toReturn;
|
|
1458
|
-
};
|
|
1459
|
-
return EditMultilocationPostResponse;
|
|
1460
|
-
}());
|
|
1461
|
-
var PartnerListScheduledSocialPostsRequestFilters = /** @class */ (function () {
|
|
1462
|
-
function PartnerListScheduledSocialPostsRequestFilters(kwargs) {
|
|
1463
|
-
if (!kwargs) {
|
|
1464
|
-
return;
|
|
1465
|
-
}
|
|
1466
|
-
Object.assign(this, kwargs);
|
|
1467
|
-
}
|
|
1468
|
-
/**
|
|
1469
|
-
* @param {?} proto
|
|
1470
|
-
* @return {?}
|
|
1471
|
-
*/
|
|
1472
|
-
PartnerListScheduledSocialPostsRequestFilters.fromProto = /**
|
|
1473
|
-
* @param {?} proto
|
|
1474
|
-
* @return {?}
|
|
1475
|
-
*/
|
|
1476
|
-
function (proto) {
|
|
1477
|
-
/** @type {?} */
|
|
1478
|
-
var m = new PartnerListScheduledSocialPostsRequestFilters();
|
|
1479
|
-
m = Object.assign(m, proto);
|
|
1480
|
-
if (proto.dateRange) {
|
|
1481
|
-
m.dateRange = DateRangeFilter.fromProto(proto.dateRange);
|
|
1482
|
-
}
|
|
1483
|
-
return m;
|
|
1484
|
-
};
|
|
1485
|
-
/**
|
|
1486
|
-
* @return {?}
|
|
1487
|
-
*/
|
|
1488
|
-
PartnerListScheduledSocialPostsRequestFilters.prototype.toApiJson = /**
|
|
1489
|
-
* @return {?}
|
|
1490
|
-
*/
|
|
1491
|
-
function () {
|
|
1492
|
-
/** @type {?} */
|
|
1493
|
-
var toReturn = {};
|
|
1494
|
-
if (typeof this.dateRange !== 'undefined' && this.dateRange !== null) {
|
|
1495
|
-
toReturn['dateRange'] = 'toApiJson' in this.dateRange ? ((/** @type {?} */ (this.dateRange))).toApiJson() : this.dateRange;
|
|
1496
|
-
}
|
|
1497
|
-
if (typeof this.partnerId !== 'undefined') {
|
|
1498
|
-
toReturn['partnerId'] = this.partnerId;
|
|
1499
|
-
}
|
|
1500
|
-
return toReturn;
|
|
1501
|
-
};
|
|
1502
|
-
return PartnerListScheduledSocialPostsRequestFilters;
|
|
1503
|
-
}());
|
|
1504
|
-
var GetMultiSocialPostStatsRequest = /** @class */ (function () {
|
|
1505
|
-
function GetMultiSocialPostStatsRequest(kwargs) {
|
|
1506
|
-
if (!kwargs) {
|
|
1507
|
-
return;
|
|
1508
|
-
}
|
|
1509
|
-
Object.assign(this, kwargs);
|
|
1510
|
-
}
|
|
1511
|
-
/**
|
|
1512
|
-
* @param {?} proto
|
|
1513
|
-
* @return {?}
|
|
1514
|
-
*/
|
|
1515
|
-
GetMultiSocialPostStatsRequest.fromProto = /**
|
|
1516
|
-
* @param {?} proto
|
|
1517
|
-
* @return {?}
|
|
1518
|
-
*/
|
|
1519
|
-
function (proto) {
|
|
1520
|
-
/** @type {?} */
|
|
1521
|
-
var m = new GetMultiSocialPostStatsRequest();
|
|
1522
|
-
m = Object.assign(m, proto);
|
|
1523
|
-
return m;
|
|
1524
|
-
};
|
|
1525
|
-
/**
|
|
1526
|
-
* @return {?}
|
|
1527
|
-
*/
|
|
1528
|
-
GetMultiSocialPostStatsRequest.prototype.toApiJson = /**
|
|
1529
|
-
* @return {?}
|
|
1530
|
-
*/
|
|
1531
|
-
function () {
|
|
1532
|
-
/** @type {?} */
|
|
1533
|
-
var toReturn = {};
|
|
1534
|
-
if (typeof this.internalPostIds !== 'undefined') {
|
|
1535
|
-
toReturn['internalPostIds'] = this.internalPostIds;
|
|
1536
|
-
}
|
|
1537
|
-
if (typeof this.businessId !== 'undefined') {
|
|
1538
|
-
toReturn['businessId'] = this.businessId;
|
|
1539
|
-
}
|
|
1540
|
-
if (typeof this.partnerId !== 'undefined') {
|
|
1541
|
-
toReturn['partnerId'] = this.partnerId;
|
|
1542
|
-
}
|
|
1543
|
-
return toReturn;
|
|
1544
|
-
};
|
|
1545
|
-
return GetMultiSocialPostStatsRequest;
|
|
1546
|
-
}());
|
|
1547
|
-
var GetMultiSocialPostStatsResponse = /** @class */ (function () {
|
|
1548
|
-
function GetMultiSocialPostStatsResponse(kwargs) {
|
|
1549
|
-
if (!kwargs) {
|
|
1550
|
-
return;
|
|
1551
|
-
}
|
|
1552
|
-
Object.assign(this, kwargs);
|
|
1553
|
-
}
|
|
1554
|
-
/**
|
|
1555
|
-
* @param {?} proto
|
|
1556
|
-
* @return {?}
|
|
1557
|
-
*/
|
|
1558
|
-
GetMultiSocialPostStatsResponse.fromProto = /**
|
|
1559
|
-
* @param {?} proto
|
|
1560
|
-
* @return {?}
|
|
1561
|
-
*/
|
|
1562
|
-
function (proto) {
|
|
1563
|
-
/** @type {?} */
|
|
1564
|
-
var m = new GetMultiSocialPostStatsResponse();
|
|
1565
|
-
m = Object.assign(m, proto);
|
|
1566
|
-
if (proto.socialPostStats) {
|
|
1567
|
-
m.socialPostStats = proto.socialPostStats.map(SocialPostStats.fromProto);
|
|
1568
|
-
}
|
|
1569
|
-
return m;
|
|
1570
|
-
};
|
|
1571
|
-
/**
|
|
1572
|
-
* @return {?}
|
|
1573
|
-
*/
|
|
1574
|
-
GetMultiSocialPostStatsResponse.prototype.toApiJson = /**
|
|
1575
|
-
* @return {?}
|
|
1576
|
-
*/
|
|
1577
|
-
function () {
|
|
1578
|
-
/** @type {?} */
|
|
1579
|
-
var toReturn = {};
|
|
1580
|
-
if (typeof this.socialPostStats !== 'undefined' && this.socialPostStats !== null) {
|
|
1581
|
-
toReturn['socialPostStats'] = 'toApiJson' in this.socialPostStats ? ((/** @type {?} */ (this.socialPostStats))).toApiJson() : this.socialPostStats;
|
|
1582
|
-
}
|
|
1583
|
-
return toReturn;
|
|
1584
|
-
};
|
|
1585
|
-
return GetMultiSocialPostStatsResponse;
|
|
1586
|
-
}());
|
|
1587
|
-
var GetMultiSocialPostsRequest = /** @class */ (function () {
|
|
1588
|
-
function GetMultiSocialPostsRequest(kwargs) {
|
|
1589
|
-
if (!kwargs) {
|
|
1590
|
-
return;
|
|
1591
|
-
}
|
|
1592
|
-
Object.assign(this, kwargs);
|
|
1593
|
-
}
|
|
1594
|
-
/**
|
|
1595
|
-
* @param {?} proto
|
|
1596
|
-
* @return {?}
|
|
1597
|
-
*/
|
|
1598
|
-
GetMultiSocialPostsRequest.fromProto = /**
|
|
1599
|
-
* @param {?} proto
|
|
1600
|
-
* @return {?}
|
|
1601
|
-
*/
|
|
1602
|
-
function (proto) {
|
|
1603
|
-
/** @type {?} */
|
|
1604
|
-
var m = new GetMultiSocialPostsRequest();
|
|
1605
|
-
m = Object.assign(m, proto);
|
|
1606
|
-
return m;
|
|
1607
|
-
};
|
|
1608
|
-
/**
|
|
1609
|
-
* @return {?}
|
|
1610
|
-
*/
|
|
1611
|
-
GetMultiSocialPostsRequest.prototype.toApiJson = /**
|
|
1612
|
-
* @return {?}
|
|
1613
|
-
*/
|
|
1614
|
-
function () {
|
|
1615
|
-
/** @type {?} */
|
|
1616
|
-
var toReturn = {};
|
|
1617
|
-
if (typeof this.businessId !== 'undefined') {
|
|
1618
|
-
toReturn['businessId'] = this.businessId;
|
|
1619
|
-
}
|
|
1620
|
-
if (typeof this.internalPostIds !== 'undefined') {
|
|
1621
|
-
toReturn['internalPostIds'] = this.internalPostIds;
|
|
1622
|
-
}
|
|
1623
|
-
return toReturn;
|
|
1624
|
-
};
|
|
1625
|
-
return GetMultiSocialPostsRequest;
|
|
1626
|
-
}());
|
|
1627
|
-
var GetMultiSocialPostsResponse = /** @class */ (function () {
|
|
1628
|
-
function GetMultiSocialPostsResponse(kwargs) {
|
|
1629
|
-
if (!kwargs) {
|
|
1630
|
-
return;
|
|
1631
|
-
}
|
|
1632
|
-
Object.assign(this, kwargs);
|
|
1633
|
-
}
|
|
1634
|
-
/**
|
|
1635
|
-
* @param {?} proto
|
|
1636
|
-
* @return {?}
|
|
1637
|
-
*/
|
|
1638
|
-
GetMultiSocialPostsResponse.fromProto = /**
|
|
1639
|
-
* @param {?} proto
|
|
1640
|
-
* @return {?}
|
|
1641
|
-
*/
|
|
1642
|
-
function (proto) {
|
|
1643
|
-
/** @type {?} */
|
|
1644
|
-
var m = new GetMultiSocialPostsResponse();
|
|
1645
|
-
m = Object.assign(m, proto);
|
|
1646
|
-
if (proto.socialPosts) {
|
|
1647
|
-
m.socialPosts = proto.socialPosts.map(SocialPost.fromProto);
|
|
1648
|
-
}
|
|
1649
|
-
return m;
|
|
1650
|
-
};
|
|
1651
|
-
/**
|
|
1652
|
-
* @return {?}
|
|
1653
|
-
*/
|
|
1654
|
-
GetMultiSocialPostsResponse.prototype.toApiJson = /**
|
|
1655
|
-
* @return {?}
|
|
1656
|
-
*/
|
|
1657
|
-
function () {
|
|
1658
|
-
/** @type {?} */
|
|
1659
|
-
var toReturn = {};
|
|
1660
|
-
if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {
|
|
1661
|
-
toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? ((/** @type {?} */ (this.socialPosts))).toApiJson() : this.socialPosts;
|
|
1662
|
-
}
|
|
1663
|
-
return toReturn;
|
|
1664
|
-
};
|
|
1665
|
-
return GetMultiSocialPostsResponse;
|
|
1666
|
-
}());
|
|
1667
|
-
var GetMultilocationPostRequest = /** @class */ (function () {
|
|
1668
|
-
function GetMultilocationPostRequest(kwargs) {
|
|
1669
|
-
if (!kwargs) {
|
|
1670
|
-
return;
|
|
1671
|
-
}
|
|
1672
|
-
Object.assign(this, kwargs);
|
|
1673
|
-
}
|
|
1674
|
-
/**
|
|
1675
|
-
* @param {?} proto
|
|
1676
|
-
* @return {?}
|
|
1677
|
-
*/
|
|
1678
|
-
GetMultilocationPostRequest.fromProto = /**
|
|
1679
|
-
* @param {?} proto
|
|
1680
|
-
* @return {?}
|
|
1681
|
-
*/
|
|
1682
|
-
function (proto) {
|
|
1683
|
-
/** @type {?} */
|
|
1684
|
-
var m = new GetMultilocationPostRequest();
|
|
1685
|
-
m = Object.assign(m, proto);
|
|
1686
|
-
return m;
|
|
1687
|
-
};
|
|
1688
|
-
/**
|
|
1689
|
-
* @return {?}
|
|
1690
|
-
*/
|
|
1691
|
-
GetMultilocationPostRequest.prototype.toApiJson = /**
|
|
1692
|
-
* @return {?}
|
|
1693
|
-
*/
|
|
1694
|
-
function () {
|
|
1695
|
-
/** @type {?} */
|
|
1696
|
-
var toReturn = {};
|
|
1697
|
-
if (typeof this.brandId !== 'undefined') {
|
|
1698
|
-
toReturn['brandId'] = this.brandId;
|
|
1699
|
-
}
|
|
1700
|
-
if (typeof this.multilocationId !== 'undefined') {
|
|
1701
|
-
toReturn['multilocationId'] = this.multilocationId;
|
|
1702
|
-
}
|
|
1703
|
-
return toReturn;
|
|
1704
|
-
};
|
|
1705
|
-
return GetMultilocationPostRequest;
|
|
1706
|
-
}());
|
|
1707
|
-
var GetMultilocationPostResponse = /** @class */ (function () {
|
|
1708
|
-
function GetMultilocationPostResponse(kwargs) {
|
|
1709
|
-
if (!kwargs) {
|
|
1710
|
-
return;
|
|
1711
|
-
}
|
|
1712
|
-
Object.assign(this, kwargs);
|
|
1713
|
-
}
|
|
1714
|
-
/**
|
|
1715
|
-
* @param {?} proto
|
|
1716
|
-
* @return {?}
|
|
1717
|
-
*/
|
|
1718
|
-
GetMultilocationPostResponse.fromProto = /**
|
|
1719
|
-
* @param {?} proto
|
|
1720
|
-
* @return {?}
|
|
1721
|
-
*/
|
|
1722
|
-
function (proto) {
|
|
1723
|
-
/** @type {?} */
|
|
1724
|
-
var m = new GetMultilocationPostResponse();
|
|
1725
|
-
m = Object.assign(m, proto);
|
|
1726
|
-
if (proto.multilocationPost) {
|
|
1727
|
-
m.multilocationPost = MultilocationPost.fromProto(proto.multilocationPost);
|
|
1728
|
-
}
|
|
1729
|
-
return m;
|
|
1730
|
-
};
|
|
1731
|
-
/**
|
|
1732
|
-
* @return {?}
|
|
1733
|
-
*/
|
|
1734
|
-
GetMultilocationPostResponse.prototype.toApiJson = /**
|
|
1735
|
-
* @return {?}
|
|
1736
|
-
*/
|
|
1737
|
-
function () {
|
|
1738
|
-
/** @type {?} */
|
|
1739
|
-
var toReturn = {};
|
|
1740
|
-
if (typeof this.multilocationPost !== 'undefined' && this.multilocationPost !== null) {
|
|
1741
|
-
toReturn['multilocationPost'] = 'toApiJson' in this.multilocationPost ? ((/** @type {?} */ (this.multilocationPost))).toApiJson() : this.multilocationPost;
|
|
1742
|
-
}
|
|
1743
|
-
return toReturn;
|
|
1744
|
-
};
|
|
1745
|
-
return GetMultilocationPostResponse;
|
|
1746
|
-
}());
|
|
1747
|
-
var GetPostTemplateRequest = /** @class */ (function () {
|
|
1748
|
-
function GetPostTemplateRequest(kwargs) {
|
|
1749
|
-
if (!kwargs) {
|
|
1750
|
-
return;
|
|
1751
|
-
}
|
|
1752
|
-
Object.assign(this, kwargs);
|
|
1753
|
-
}
|
|
1754
|
-
/**
|
|
1755
|
-
* @param {?} proto
|
|
1756
|
-
* @return {?}
|
|
1757
|
-
*/
|
|
1758
|
-
GetPostTemplateRequest.fromProto = /**
|
|
1759
|
-
* @param {?} proto
|
|
1760
|
-
* @return {?}
|
|
1761
|
-
*/
|
|
1762
|
-
function (proto) {
|
|
1763
|
-
/** @type {?} */
|
|
1764
|
-
var m = new GetPostTemplateRequest();
|
|
1765
|
-
m = Object.assign(m, proto);
|
|
1766
|
-
return m;
|
|
1767
|
-
};
|
|
1768
|
-
/**
|
|
1769
|
-
* @return {?}
|
|
1770
|
-
*/
|
|
1771
|
-
GetPostTemplateRequest.prototype.toApiJson = /**
|
|
1772
|
-
* @return {?}
|
|
1773
|
-
*/
|
|
1774
|
-
function () {
|
|
1775
|
-
/** @type {?} */
|
|
1776
|
-
var toReturn = {};
|
|
1777
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
1778
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
1779
|
-
}
|
|
1780
|
-
if (typeof this.templateId !== 'undefined') {
|
|
1781
|
-
toReturn['templateId'] = this.templateId;
|
|
1782
|
-
}
|
|
1783
|
-
return toReturn;
|
|
1784
|
-
};
|
|
1785
|
-
return GetPostTemplateRequest;
|
|
1786
|
-
}());
|
|
1787
|
-
var GetPostTemplateResponse = /** @class */ (function () {
|
|
1788
|
-
function GetPostTemplateResponse(kwargs) {
|
|
1789
|
-
if (!kwargs) {
|
|
1790
|
-
return;
|
|
1791
|
-
}
|
|
1792
|
-
Object.assign(this, kwargs);
|
|
1793
|
-
}
|
|
1794
|
-
/**
|
|
1795
|
-
* @param {?} proto
|
|
1796
|
-
* @return {?}
|
|
1797
|
-
*/
|
|
1798
|
-
GetPostTemplateResponse.fromProto = /**
|
|
1799
|
-
* @param {?} proto
|
|
1800
|
-
* @return {?}
|
|
1801
|
-
*/
|
|
1802
|
-
function (proto) {
|
|
1803
|
-
/** @type {?} */
|
|
1804
|
-
var m = new GetPostTemplateResponse();
|
|
1805
|
-
m = Object.assign(m, proto);
|
|
1806
|
-
if (proto.postTemplate) {
|
|
1807
|
-
m.postTemplate = PostTemplate.fromProto(proto.postTemplate);
|
|
1808
|
-
}
|
|
1809
|
-
return m;
|
|
1810
|
-
};
|
|
1811
|
-
/**
|
|
1812
|
-
* @return {?}
|
|
1813
|
-
*/
|
|
1814
|
-
GetPostTemplateResponse.prototype.toApiJson = /**
|
|
1815
|
-
* @return {?}
|
|
1816
|
-
*/
|
|
1817
|
-
function () {
|
|
1818
|
-
/** @type {?} */
|
|
1819
|
-
var toReturn = {};
|
|
1820
|
-
if (typeof this.postTemplate !== 'undefined' && this.postTemplate !== null) {
|
|
1821
|
-
toReturn['postTemplate'] = 'toApiJson' in this.postTemplate ? ((/** @type {?} */ (this.postTemplate))).toApiJson() : this.postTemplate;
|
|
1822
|
-
}
|
|
1823
|
-
return toReturn;
|
|
1824
|
-
};
|
|
1825
|
-
return GetPostTemplateResponse;
|
|
1826
|
-
}());
|
|
1827
|
-
var GetScheduledPostCountRequest = /** @class */ (function () {
|
|
1828
|
-
function GetScheduledPostCountRequest(kwargs) {
|
|
1829
|
-
if (!kwargs) {
|
|
1830
|
-
return;
|
|
1831
|
-
}
|
|
1832
|
-
Object.assign(this, kwargs);
|
|
1833
|
-
}
|
|
1834
|
-
/**
|
|
1835
|
-
* @param {?} proto
|
|
1836
|
-
* @return {?}
|
|
1837
|
-
*/
|
|
1838
|
-
GetScheduledPostCountRequest.fromProto = /**
|
|
1839
|
-
* @param {?} proto
|
|
1840
|
-
* @return {?}
|
|
1841
|
-
*/
|
|
1842
|
-
function (proto) {
|
|
1843
|
-
/** @type {?} */
|
|
1844
|
-
var m = new GetScheduledPostCountRequest();
|
|
1845
|
-
m = Object.assign(m, proto);
|
|
1846
|
-
return m;
|
|
1847
|
-
};
|
|
1848
|
-
/**
|
|
1849
|
-
* @return {?}
|
|
1850
|
-
*/
|
|
1851
|
-
GetScheduledPostCountRequest.prototype.toApiJson = /**
|
|
1852
|
-
* @return {?}
|
|
1853
|
-
*/
|
|
1854
|
-
function () {
|
|
1855
|
-
/** @type {?} */
|
|
1856
|
-
var toReturn = {};
|
|
1857
|
-
if (typeof this.partnerId !== 'undefined') {
|
|
1858
|
-
toReturn['partnerId'] = this.partnerId;
|
|
1859
|
-
}
|
|
1860
|
-
if (typeof this.businessId !== 'undefined') {
|
|
1861
|
-
toReturn['businessId'] = this.businessId;
|
|
1862
|
-
}
|
|
1863
|
-
if (typeof this.socialServiceIds !== 'undefined') {
|
|
1864
|
-
toReturn['socialServiceIds'] = this.socialServiceIds;
|
|
1865
|
-
}
|
|
1866
|
-
return toReturn;
|
|
1867
|
-
};
|
|
1868
|
-
return GetScheduledPostCountRequest;
|
|
1869
|
-
}());
|
|
1870
|
-
var GetScheduledPostCountResponse = /** @class */ (function () {
|
|
1871
|
-
function GetScheduledPostCountResponse(kwargs) {
|
|
1872
|
-
if (!kwargs) {
|
|
1873
|
-
return;
|
|
1874
|
-
}
|
|
1875
|
-
Object.assign(this, kwargs);
|
|
1876
|
-
}
|
|
1877
|
-
/**
|
|
1878
|
-
* @param {?} proto
|
|
1879
|
-
* @return {?}
|
|
1880
|
-
*/
|
|
1881
|
-
GetScheduledPostCountResponse.fromProto = /**
|
|
1882
|
-
* @param {?} proto
|
|
1883
|
-
* @return {?}
|
|
1884
|
-
*/
|
|
1885
|
-
function (proto) {
|
|
1886
|
-
/** @type {?} */
|
|
1887
|
-
var m = new GetScheduledPostCountResponse();
|
|
1888
|
-
m = Object.assign(m, proto);
|
|
1889
|
-
if (proto.count) {
|
|
1890
|
-
m.count = parseInt(proto.count, 10);
|
|
1891
|
-
}
|
|
1892
|
-
return m;
|
|
1893
|
-
};
|
|
1894
|
-
/**
|
|
1895
|
-
* @return {?}
|
|
1896
|
-
*/
|
|
1897
|
-
GetScheduledPostCountResponse.prototype.toApiJson = /**
|
|
1898
|
-
* @return {?}
|
|
1899
|
-
*/
|
|
1900
|
-
function () {
|
|
1901
|
-
/** @type {?} */
|
|
1902
|
-
var toReturn = {};
|
|
1903
|
-
if (typeof this.count !== 'undefined') {
|
|
1904
|
-
toReturn['count'] = this.count;
|
|
1905
|
-
}
|
|
1906
|
-
return toReturn;
|
|
1907
|
-
};
|
|
1908
|
-
return GetScheduledPostCountResponse;
|
|
1909
|
-
}());
|
|
1910
|
-
var ListMultilocationPostsForBrandRequest = /** @class */ (function () {
|
|
1911
|
-
function ListMultilocationPostsForBrandRequest(kwargs) {
|
|
1912
|
-
if (!kwargs) {
|
|
1913
|
-
return;
|
|
1914
|
-
}
|
|
1915
|
-
Object.assign(this, kwargs);
|
|
1916
|
-
}
|
|
1917
|
-
/**
|
|
1918
|
-
* @param {?} proto
|
|
1919
|
-
* @return {?}
|
|
1920
|
-
*/
|
|
1921
|
-
ListMultilocationPostsForBrandRequest.fromProto = /**
|
|
1922
|
-
* @param {?} proto
|
|
1923
|
-
* @return {?}
|
|
1924
|
-
*/
|
|
1925
|
-
function (proto) {
|
|
1926
|
-
/** @type {?} */
|
|
1927
|
-
var m = new ListMultilocationPostsForBrandRequest();
|
|
1928
|
-
m = Object.assign(m, proto);
|
|
1929
|
-
if (proto.startDate) {
|
|
1930
|
-
m.startDate = new Date(proto.startDate);
|
|
1931
|
-
}
|
|
1932
|
-
if (proto.endDate) {
|
|
1933
|
-
m.endDate = new Date(proto.endDate);
|
|
1934
|
-
}
|
|
1935
|
-
if (proto.pageSize) {
|
|
1936
|
-
m.pageSize = parseInt(proto.pageSize, 10);
|
|
1937
|
-
}
|
|
1938
|
-
return m;
|
|
1939
|
-
};
|
|
1940
|
-
/**
|
|
1941
|
-
* @return {?}
|
|
1942
|
-
*/
|
|
1943
|
-
ListMultilocationPostsForBrandRequest.prototype.toApiJson = /**
|
|
1944
|
-
* @return {?}
|
|
1945
|
-
*/
|
|
1946
|
-
function () {
|
|
1947
|
-
/** @type {?} */
|
|
1948
|
-
var toReturn = {};
|
|
1949
|
-
if (typeof this.brandId !== 'undefined') {
|
|
1950
|
-
toReturn['brandId'] = this.brandId;
|
|
1951
|
-
}
|
|
1952
|
-
if (typeof this.startDate !== 'undefined' && this.startDate !== null) {
|
|
1953
|
-
toReturn['startDate'] = 'toApiJson' in this.startDate ? ((/** @type {?} */ (this.startDate))).toApiJson() : this.startDate;
|
|
1954
|
-
}
|
|
1955
|
-
if (typeof this.endDate !== 'undefined' && this.endDate !== null) {
|
|
1956
|
-
toReturn['endDate'] = 'toApiJson' in this.endDate ? ((/** @type {?} */ (this.endDate))).toApiJson() : this.endDate;
|
|
1957
|
-
}
|
|
1958
|
-
if (typeof this.cursor !== 'undefined') {
|
|
1959
|
-
toReturn['cursor'] = this.cursor;
|
|
1960
|
-
}
|
|
1961
|
-
if (typeof this.pageSize !== 'undefined') {
|
|
1962
|
-
toReturn['pageSize'] = this.pageSize;
|
|
1963
|
-
}
|
|
1964
|
-
return toReturn;
|
|
1965
|
-
};
|
|
1966
|
-
return ListMultilocationPostsForBrandRequest;
|
|
1967
|
-
}());
|
|
1968
|
-
var ListMultilocationPostsForBrandResponse = /** @class */ (function () {
|
|
1969
|
-
function ListMultilocationPostsForBrandResponse(kwargs) {
|
|
1970
|
-
if (!kwargs) {
|
|
1971
|
-
return;
|
|
1972
|
-
}
|
|
1973
|
-
Object.assign(this, kwargs);
|
|
1974
|
-
}
|
|
1975
|
-
/**
|
|
1976
|
-
* @param {?} proto
|
|
1977
|
-
* @return {?}
|
|
1978
|
-
*/
|
|
1979
|
-
ListMultilocationPostsForBrandResponse.fromProto = /**
|
|
1980
|
-
* @param {?} proto
|
|
1981
|
-
* @return {?}
|
|
1982
|
-
*/
|
|
1983
|
-
function (proto) {
|
|
1984
|
-
/** @type {?} */
|
|
1985
|
-
var m = new ListMultilocationPostsForBrandResponse();
|
|
1986
|
-
m = Object.assign(m, proto);
|
|
1987
|
-
if (proto.multilocationPosts) {
|
|
1988
|
-
m.multilocationPosts = proto.multilocationPosts.map(MultilocationPost.fromProto);
|
|
1989
|
-
}
|
|
1990
|
-
if (proto.failedSocialPosts) {
|
|
1991
|
-
m.failedSocialPosts = proto.failedSocialPosts.map(SocialPost.fromProto);
|
|
1992
|
-
}
|
|
1993
|
-
return m;
|
|
1994
|
-
};
|
|
1995
|
-
/**
|
|
1996
|
-
* @return {?}
|
|
1997
|
-
*/
|
|
1998
|
-
ListMultilocationPostsForBrandResponse.prototype.toApiJson = /**
|
|
1999
|
-
* @return {?}
|
|
2000
|
-
*/
|
|
2001
|
-
function () {
|
|
2002
|
-
/** @type {?} */
|
|
2003
|
-
var toReturn = {};
|
|
2004
|
-
if (typeof this.multilocationPosts !== 'undefined' && this.multilocationPosts !== null) {
|
|
2005
|
-
toReturn['multilocationPosts'] = 'toApiJson' in this.multilocationPosts ? ((/** @type {?} */ (this.multilocationPosts))).toApiJson() : this.multilocationPosts;
|
|
2006
|
-
}
|
|
2007
|
-
if (typeof this.nextCursor !== 'undefined') {
|
|
2008
|
-
toReturn['nextCursor'] = this.nextCursor;
|
|
2009
|
-
}
|
|
2010
|
-
if (typeof this.hasMore !== 'undefined') {
|
|
2011
|
-
toReturn['hasMore'] = this.hasMore;
|
|
2012
|
-
}
|
|
2013
|
-
if (typeof this.failedSocialPosts !== 'undefined' && this.failedSocialPosts !== null) {
|
|
2014
|
-
toReturn['failedSocialPosts'] = 'toApiJson' in this.failedSocialPosts ? ((/** @type {?} */ (this.failedSocialPosts))).toApiJson() : this.failedSocialPosts;
|
|
2015
|
-
}
|
|
2016
|
-
return toReturn;
|
|
2017
|
-
};
|
|
2018
|
-
return ListMultilocationPostsForBrandResponse;
|
|
2019
|
-
}());
|
|
2020
|
-
var ListPostTemplatesRequest = /** @class */ (function () {
|
|
2021
|
-
function ListPostTemplatesRequest(kwargs) {
|
|
2022
|
-
if (!kwargs) {
|
|
2023
|
-
return;
|
|
2024
|
-
}
|
|
2025
|
-
Object.assign(this, kwargs);
|
|
2026
|
-
}
|
|
2027
|
-
/**
|
|
2028
|
-
* @param {?} proto
|
|
2029
|
-
* @return {?}
|
|
2030
|
-
*/
|
|
2031
|
-
ListPostTemplatesRequest.fromProto = /**
|
|
2032
|
-
* @param {?} proto
|
|
2033
|
-
* @return {?}
|
|
2034
|
-
*/
|
|
2035
|
-
function (proto) {
|
|
2036
|
-
/** @type {?} */
|
|
2037
|
-
var m = new ListPostTemplatesRequest();
|
|
2038
|
-
m = Object.assign(m, proto);
|
|
2039
|
-
if (proto.pageSize) {
|
|
2040
|
-
m.pageSize = parseInt(proto.pageSize, 10);
|
|
2041
|
-
}
|
|
2042
|
-
return m;
|
|
2043
|
-
};
|
|
2044
|
-
/**
|
|
2045
|
-
* @return {?}
|
|
2046
|
-
*/
|
|
2047
|
-
ListPostTemplatesRequest.prototype.toApiJson = /**
|
|
2048
|
-
* @return {?}
|
|
2049
|
-
*/
|
|
2050
|
-
function () {
|
|
2051
|
-
/** @type {?} */
|
|
2052
|
-
var toReturn = {};
|
|
2053
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
2054
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
2055
|
-
}
|
|
2056
|
-
if (typeof this.cursor !== 'undefined') {
|
|
2057
|
-
toReturn['cursor'] = this.cursor;
|
|
2058
|
-
}
|
|
2059
|
-
if (typeof this.pageSize !== 'undefined') {
|
|
2060
|
-
toReturn['pageSize'] = this.pageSize;
|
|
2061
|
-
}
|
|
2062
|
-
return toReturn;
|
|
2063
|
-
};
|
|
2064
|
-
return ListPostTemplatesRequest;
|
|
2065
|
-
}());
|
|
2066
|
-
var ListPostTemplatesResponse = /** @class */ (function () {
|
|
2067
|
-
function ListPostTemplatesResponse(kwargs) {
|
|
2068
|
-
if (!kwargs) {
|
|
2069
|
-
return;
|
|
2070
|
-
}
|
|
2071
|
-
Object.assign(this, kwargs);
|
|
2072
|
-
}
|
|
2073
|
-
/**
|
|
2074
|
-
* @param {?} proto
|
|
2075
|
-
* @return {?}
|
|
2076
|
-
*/
|
|
2077
|
-
ListPostTemplatesResponse.fromProto = /**
|
|
2078
|
-
* @param {?} proto
|
|
2079
|
-
* @return {?}
|
|
2080
|
-
*/
|
|
2081
|
-
function (proto) {
|
|
2082
|
-
/** @type {?} */
|
|
2083
|
-
var m = new ListPostTemplatesResponse();
|
|
2084
|
-
m = Object.assign(m, proto);
|
|
2085
|
-
if (proto.postTemplate) {
|
|
2086
|
-
m.postTemplate = proto.postTemplate.map(PostTemplate.fromProto);
|
|
2087
|
-
}
|
|
2088
|
-
return m;
|
|
2089
|
-
};
|
|
2090
|
-
/**
|
|
2091
|
-
* @return {?}
|
|
2092
|
-
*/
|
|
2093
|
-
ListPostTemplatesResponse.prototype.toApiJson = /**
|
|
2094
|
-
* @return {?}
|
|
2095
|
-
*/
|
|
2096
|
-
function () {
|
|
2097
|
-
/** @type {?} */
|
|
2098
|
-
var toReturn = {};
|
|
2099
|
-
if (typeof this.postTemplate !== 'undefined' && this.postTemplate !== null) {
|
|
2100
|
-
toReturn['postTemplate'] = 'toApiJson' in this.postTemplate ? ((/** @type {?} */ (this.postTemplate))).toApiJson() : this.postTemplate;
|
|
2101
|
-
}
|
|
2102
|
-
if (typeof this.nextCursor !== 'undefined') {
|
|
2103
|
-
toReturn['nextCursor'] = this.nextCursor;
|
|
2104
|
-
}
|
|
2105
|
-
if (typeof this.hasMore !== 'undefined') {
|
|
2106
|
-
toReturn['hasMore'] = this.hasMore;
|
|
2107
|
-
}
|
|
2108
|
-
return toReturn;
|
|
2109
|
-
};
|
|
2110
|
-
return ListPostTemplatesResponse;
|
|
2111
|
-
}());
|
|
2112
|
-
var ListSocialPostsRequest = /** @class */ (function () {
|
|
2113
|
-
function ListSocialPostsRequest(kwargs) {
|
|
2114
|
-
if (!kwargs) {
|
|
2115
|
-
return;
|
|
2116
|
-
}
|
|
2117
|
-
Object.assign(this, kwargs);
|
|
2118
|
-
}
|
|
2119
|
-
/**
|
|
2120
|
-
* @param {?} proto
|
|
2121
|
-
* @return {?}
|
|
2122
|
-
*/
|
|
2123
|
-
ListSocialPostsRequest.fromProto = /**
|
|
2124
|
-
* @param {?} proto
|
|
2125
|
-
* @return {?}
|
|
2126
|
-
*/
|
|
2127
|
-
function (proto) {
|
|
2128
|
-
/** @type {?} */
|
|
2129
|
-
var m = new ListSocialPostsRequest();
|
|
2130
|
-
m = Object.assign(m, proto);
|
|
2131
|
-
if (proto.start) {
|
|
2132
|
-
m.start = new Date(proto.start);
|
|
2133
|
-
}
|
|
2134
|
-
if (proto.end) {
|
|
2135
|
-
m.end = new Date(proto.end);
|
|
2136
|
-
}
|
|
2137
|
-
if (proto.pageSize) {
|
|
2138
|
-
m.pageSize = parseInt(proto.pageSize, 10);
|
|
2139
|
-
}
|
|
2140
|
-
return m;
|
|
2141
|
-
};
|
|
2142
|
-
/**
|
|
2143
|
-
* @return {?}
|
|
2144
|
-
*/
|
|
2145
|
-
ListSocialPostsRequest.prototype.toApiJson = /**
|
|
2146
|
-
* @return {?}
|
|
2147
|
-
*/
|
|
2148
|
-
function () {
|
|
2149
|
-
/** @type {?} */
|
|
2150
|
-
var toReturn = {};
|
|
2151
|
-
if (typeof this.start !== 'undefined' && this.start !== null) {
|
|
2152
|
-
toReturn['start'] = 'toApiJson' in this.start ? ((/** @type {?} */ (this.start))).toApiJson() : this.start;
|
|
2153
|
-
}
|
|
2154
|
-
if (typeof this.end !== 'undefined' && this.end !== null) {
|
|
2155
|
-
toReturn['end'] = 'toApiJson' in this.end ? ((/** @type {?} */ (this.end))).toApiJson() : this.end;
|
|
2156
|
-
}
|
|
2157
|
-
if (typeof this.businessId !== 'undefined') {
|
|
2158
|
-
toReturn['businessId'] = this.businessId;
|
|
2159
|
-
}
|
|
2160
|
-
if (typeof this.partnerId !== 'undefined') {
|
|
2161
|
-
toReturn['partnerId'] = this.partnerId;
|
|
2162
|
-
}
|
|
2163
|
-
if (typeof this.cursor !== 'undefined') {
|
|
2164
|
-
toReturn['cursor'] = this.cursor;
|
|
2165
|
-
}
|
|
2166
|
-
if (typeof this.socialServiceIds !== 'undefined') {
|
|
2167
|
-
toReturn['socialServiceIds'] = this.socialServiceIds;
|
|
2168
|
-
}
|
|
2169
|
-
if (typeof this.tags !== 'undefined') {
|
|
2170
|
-
toReturn['tags'] = this.tags;
|
|
2171
|
-
}
|
|
2172
|
-
if (typeof this.pageSize !== 'undefined') {
|
|
2173
|
-
toReturn['pageSize'] = this.pageSize;
|
|
2174
|
-
}
|
|
2175
|
-
return toReturn;
|
|
2176
|
-
};
|
|
2177
|
-
return ListSocialPostsRequest;
|
|
2178
|
-
}());
|
|
2179
|
-
var ListSocialPostsResponse = /** @class */ (function () {
|
|
2180
|
-
function ListSocialPostsResponse(kwargs) {
|
|
2181
|
-
if (!kwargs) {
|
|
2182
|
-
return;
|
|
2183
|
-
}
|
|
2184
|
-
Object.assign(this, kwargs);
|
|
2185
|
-
}
|
|
2186
|
-
/**
|
|
2187
|
-
* @param {?} proto
|
|
2188
|
-
* @return {?}
|
|
2189
|
-
*/
|
|
2190
|
-
ListSocialPostsResponse.fromProto = /**
|
|
2191
|
-
* @param {?} proto
|
|
2192
|
-
* @return {?}
|
|
2193
|
-
*/
|
|
2194
|
-
function (proto) {
|
|
2195
|
-
/** @type {?} */
|
|
2196
|
-
var m = new ListSocialPostsResponse();
|
|
2197
|
-
m = Object.assign(m, proto);
|
|
2198
|
-
if (proto.socialPosts) {
|
|
2199
|
-
m.socialPosts = proto.socialPosts.map(SocialPost.fromProto);
|
|
2200
|
-
}
|
|
2201
|
-
return m;
|
|
2202
|
-
};
|
|
2203
|
-
/**
|
|
2204
|
-
* @return {?}
|
|
2205
|
-
*/
|
|
2206
|
-
ListSocialPostsResponse.prototype.toApiJson = /**
|
|
2207
|
-
* @return {?}
|
|
2208
|
-
*/
|
|
2209
|
-
function () {
|
|
2210
|
-
/** @type {?} */
|
|
2211
|
-
var toReturn = {};
|
|
2212
|
-
if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {
|
|
2213
|
-
toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? ((/** @type {?} */ (this.socialPosts))).toApiJson() : this.socialPosts;
|
|
2214
|
-
}
|
|
2215
|
-
if (typeof this.nextCursor !== 'undefined') {
|
|
2216
|
-
toReturn['nextCursor'] = this.nextCursor;
|
|
2217
|
-
}
|
|
2218
|
-
if (typeof this.hasMore !== 'undefined') {
|
|
2219
|
-
toReturn['hasMore'] = this.hasMore;
|
|
2220
|
-
}
|
|
2221
|
-
return toReturn;
|
|
2222
|
-
};
|
|
2223
|
-
return ListSocialPostsResponse;
|
|
2224
|
-
}());
|
|
2225
|
-
var PartnerListScheduledPostsResponse = /** @class */ (function () {
|
|
2226
|
-
function PartnerListScheduledPostsResponse(kwargs) {
|
|
2227
|
-
if (!kwargs) {
|
|
2228
|
-
return;
|
|
2229
|
-
}
|
|
2230
|
-
Object.assign(this, kwargs);
|
|
2231
|
-
}
|
|
2232
|
-
/**
|
|
2233
|
-
* @param {?} proto
|
|
2234
|
-
* @return {?}
|
|
2235
|
-
*/
|
|
2236
|
-
PartnerListScheduledPostsResponse.fromProto = /**
|
|
2237
|
-
* @param {?} proto
|
|
2238
|
-
* @return {?}
|
|
2239
|
-
*/
|
|
2240
|
-
function (proto) {
|
|
2241
|
-
/** @type {?} */
|
|
2242
|
-
var m = new PartnerListScheduledPostsResponse();
|
|
2243
|
-
m = Object.assign(m, proto);
|
|
2244
|
-
if (proto.socialPosts) {
|
|
2245
|
-
m.socialPosts = proto.socialPosts.map(SocialPost.fromProto);
|
|
2246
|
-
}
|
|
2247
|
-
return m;
|
|
2248
|
-
};
|
|
2249
|
-
/**
|
|
2250
|
-
* @return {?}
|
|
2251
|
-
*/
|
|
2252
|
-
PartnerListScheduledPostsResponse.prototype.toApiJson = /**
|
|
2253
|
-
* @return {?}
|
|
2254
|
-
*/
|
|
2255
|
-
function () {
|
|
2256
|
-
/** @type {?} */
|
|
2257
|
-
var toReturn = {};
|
|
2258
|
-
if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {
|
|
2259
|
-
toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? ((/** @type {?} */ (this.socialPosts))).toApiJson() : this.socialPosts;
|
|
2260
|
-
}
|
|
2261
|
-
if (typeof this.nextCursor !== 'undefined') {
|
|
2262
|
-
toReturn['nextCursor'] = this.nextCursor;
|
|
2263
|
-
}
|
|
2264
|
-
if (typeof this.hasMore !== 'undefined') {
|
|
2265
|
-
toReturn['hasMore'] = this.hasMore;
|
|
2266
|
-
}
|
|
2267
|
-
return toReturn;
|
|
2268
|
-
};
|
|
2269
|
-
return PartnerListScheduledPostsResponse;
|
|
2270
|
-
}());
|
|
2271
|
-
var PartnerListScheduledSocialPostsRequest = /** @class */ (function () {
|
|
2272
|
-
function PartnerListScheduledSocialPostsRequest(kwargs) {
|
|
2273
|
-
if (!kwargs) {
|
|
2274
|
-
return;
|
|
2275
|
-
}
|
|
2276
|
-
Object.assign(this, kwargs);
|
|
2277
|
-
}
|
|
2278
|
-
/**
|
|
2279
|
-
* @param {?} proto
|
|
2280
|
-
* @return {?}
|
|
2281
|
-
*/
|
|
2282
|
-
PartnerListScheduledSocialPostsRequest.fromProto = /**
|
|
2283
|
-
* @param {?} proto
|
|
2284
|
-
* @return {?}
|
|
2285
|
-
*/
|
|
2286
|
-
function (proto) {
|
|
2287
|
-
/** @type {?} */
|
|
2288
|
-
var m = new PartnerListScheduledSocialPostsRequest();
|
|
2289
|
-
m = Object.assign(m, proto);
|
|
2290
|
-
if (proto.filters) {
|
|
2291
|
-
m.filters = PartnerListScheduledSocialPostsRequestFilters.fromProto(proto.filters);
|
|
2292
|
-
}
|
|
2293
|
-
if (proto.pageSize) {
|
|
2294
|
-
m.pageSize = parseInt(proto.pageSize, 10);
|
|
2295
|
-
}
|
|
2296
|
-
return m;
|
|
2297
|
-
};
|
|
2298
|
-
/**
|
|
2299
|
-
* @return {?}
|
|
2300
|
-
*/
|
|
2301
|
-
PartnerListScheduledSocialPostsRequest.prototype.toApiJson = /**
|
|
2302
|
-
* @return {?}
|
|
2303
|
-
*/
|
|
2304
|
-
function () {
|
|
2305
|
-
/** @type {?} */
|
|
2306
|
-
var toReturn = {};
|
|
2307
|
-
if (typeof this.cursor !== 'undefined') {
|
|
2308
|
-
toReturn['cursor'] = this.cursor;
|
|
2309
|
-
}
|
|
2310
|
-
if (typeof this.filters !== 'undefined' && this.filters !== null) {
|
|
2311
|
-
toReturn['filters'] = 'toApiJson' in this.filters ? ((/** @type {?} */ (this.filters))).toApiJson() : this.filters;
|
|
2312
|
-
}
|
|
2313
|
-
if (typeof this.pageSize !== 'undefined') {
|
|
2314
|
-
toReturn['pageSize'] = this.pageSize;
|
|
2315
|
-
}
|
|
2316
|
-
return toReturn;
|
|
2317
|
-
};
|
|
2318
|
-
return PartnerListScheduledSocialPostsRequest;
|
|
2319
|
-
}());
|
|
2320
|
-
var RemoveFromMultilocationPostRequest = /** @class */ (function () {
|
|
2321
|
-
function RemoveFromMultilocationPostRequest(kwargs) {
|
|
2322
|
-
if (!kwargs) {
|
|
2323
|
-
return;
|
|
2324
|
-
}
|
|
2325
|
-
Object.assign(this, kwargs);
|
|
2326
|
-
}
|
|
2327
|
-
/**
|
|
2328
|
-
* @param {?} proto
|
|
2329
|
-
* @return {?}
|
|
2330
|
-
*/
|
|
2331
|
-
RemoveFromMultilocationPostRequest.fromProto = /**
|
|
2332
|
-
* @param {?} proto
|
|
2333
|
-
* @return {?}
|
|
2334
|
-
*/
|
|
2335
|
-
function (proto) {
|
|
2336
|
-
/** @type {?} */
|
|
2337
|
-
var m = new RemoveFromMultilocationPostRequest();
|
|
2338
|
-
m = Object.assign(m, proto);
|
|
2339
|
-
if (proto.reason) {
|
|
2340
|
-
m.reason = enumStringToValue$5(RemoveReason, proto.reason);
|
|
2341
|
-
}
|
|
2342
|
-
if (proto.locations) {
|
|
2343
|
-
m.locations = proto.locations.map(Location.fromProto);
|
|
2344
|
-
}
|
|
2345
|
-
return m;
|
|
2346
|
-
};
|
|
2347
|
-
/**
|
|
2348
|
-
* @return {?}
|
|
2349
|
-
*/
|
|
2350
|
-
RemoveFromMultilocationPostRequest.prototype.toApiJson = /**
|
|
2351
|
-
* @return {?}
|
|
2352
|
-
*/
|
|
2353
|
-
function () {
|
|
2354
|
-
/** @type {?} */
|
|
2355
|
-
var toReturn = {};
|
|
2356
|
-
if (typeof this.reason !== 'undefined') {
|
|
2357
|
-
toReturn['reason'] = this.reason;
|
|
2358
|
-
}
|
|
2359
|
-
if (typeof this.brandId !== 'undefined') {
|
|
2360
|
-
toReturn['brandId'] = this.brandId;
|
|
2361
|
-
}
|
|
2362
|
-
if (typeof this.multilocationId !== 'undefined') {
|
|
2363
|
-
toReturn['multilocationId'] = this.multilocationId;
|
|
2364
|
-
}
|
|
2365
|
-
if (typeof this.locations !== 'undefined' && this.locations !== null) {
|
|
2366
|
-
toReturn['locations'] = 'toApiJson' in this.locations ? ((/** @type {?} */ (this.locations))).toApiJson() : this.locations;
|
|
2367
|
-
}
|
|
2368
|
-
return toReturn;
|
|
2369
|
-
};
|
|
2370
|
-
return RemoveFromMultilocationPostRequest;
|
|
2371
|
-
}());
|
|
2372
|
-
var SchedulePostRequest = /** @class */ (function () {
|
|
2373
|
-
function SchedulePostRequest(kwargs) {
|
|
2374
|
-
if (!kwargs) {
|
|
2375
|
-
return;
|
|
2376
|
-
}
|
|
2377
|
-
Object.assign(this, kwargs);
|
|
2378
|
-
}
|
|
2379
|
-
/**
|
|
2380
|
-
* @param {?} proto
|
|
2381
|
-
* @return {?}
|
|
2382
|
-
*/
|
|
2383
|
-
SchedulePostRequest.fromProto = /**
|
|
2384
|
-
* @param {?} proto
|
|
2385
|
-
* @return {?}
|
|
2386
|
-
*/
|
|
2387
|
-
function (proto) {
|
|
2388
|
-
/** @type {?} */
|
|
2389
|
-
var m = new SchedulePostRequest();
|
|
2390
|
-
m = Object.assign(m, proto);
|
|
2391
|
-
if (proto.socialPost) {
|
|
2392
|
-
m.socialPost = SocialPostData.fromProto(proto.socialPost);
|
|
2393
|
-
}
|
|
2394
|
-
return m;
|
|
2395
|
-
};
|
|
2396
|
-
/**
|
|
2397
|
-
* @return {?}
|
|
2398
|
-
*/
|
|
2399
|
-
SchedulePostRequest.prototype.toApiJson = /**
|
|
2400
|
-
* @return {?}
|
|
2401
|
-
*/
|
|
2402
|
-
function () {
|
|
2403
|
-
/** @type {?} */
|
|
2404
|
-
var toReturn = {};
|
|
2405
|
-
if (typeof this.socialPost !== 'undefined' && this.socialPost !== null) {
|
|
2406
|
-
toReturn['socialPost'] = 'toApiJson' in this.socialPost ? ((/** @type {?} */ (this.socialPost))).toApiJson() : this.socialPost;
|
|
2407
|
-
}
|
|
2408
|
-
if (typeof this.socialServiceIds !== 'undefined') {
|
|
2409
|
-
toReturn['socialServiceIds'] = this.socialServiceIds;
|
|
2410
|
-
}
|
|
2411
|
-
if (typeof this.partnerId !== 'undefined') {
|
|
2412
|
-
toReturn['partnerId'] = this.partnerId;
|
|
2413
|
-
}
|
|
2414
|
-
if (typeof this.businessId !== 'undefined') {
|
|
2415
|
-
toReturn['businessId'] = this.businessId;
|
|
2416
|
-
}
|
|
2417
|
-
return toReturn;
|
|
2418
|
-
};
|
|
2419
|
-
return SchedulePostRequest;
|
|
2420
|
-
}());
|
|
2421
|
-
var SchedulePostResponse = /** @class */ (function () {
|
|
2422
|
-
function SchedulePostResponse(kwargs) {
|
|
2423
|
-
if (!kwargs) {
|
|
2424
|
-
return;
|
|
2425
|
-
}
|
|
2426
|
-
Object.assign(this, kwargs);
|
|
2427
|
-
}
|
|
2428
|
-
/**
|
|
2429
|
-
* @param {?} proto
|
|
2430
|
-
* @return {?}
|
|
2431
|
-
*/
|
|
2432
|
-
SchedulePostResponse.fromProto = /**
|
|
2433
|
-
* @param {?} proto
|
|
2434
|
-
* @return {?}
|
|
2435
|
-
*/
|
|
2436
|
-
function (proto) {
|
|
2437
|
-
/** @type {?} */
|
|
2438
|
-
var m = new SchedulePostResponse();
|
|
2439
|
-
m = Object.assign(m, proto);
|
|
2440
|
-
if (proto.statuses) {
|
|
2441
|
-
m.statuses = proto.statuses.map(SchedulePostStatus.fromProto);
|
|
2442
|
-
}
|
|
2443
|
-
return m;
|
|
2444
|
-
};
|
|
2445
|
-
/**
|
|
2446
|
-
* @return {?}
|
|
2447
|
-
*/
|
|
2448
|
-
SchedulePostResponse.prototype.toApiJson = /**
|
|
2449
|
-
* @return {?}
|
|
2450
|
-
*/
|
|
2451
|
-
function () {
|
|
2452
|
-
/** @type {?} */
|
|
2453
|
-
var toReturn = {};
|
|
2454
|
-
if (typeof this.statuses !== 'undefined' && this.statuses !== null) {
|
|
2455
|
-
toReturn['statuses'] = 'toApiJson' in this.statuses ? ((/** @type {?} */ (this.statuses))).toApiJson() : this.statuses;
|
|
2456
|
-
}
|
|
2457
|
-
return toReturn;
|
|
2458
|
-
};
|
|
2459
|
-
return SchedulePostResponse;
|
|
2460
|
-
}());
|
|
2461
|
-
var ScheduleToAllPagesRequest = /** @class */ (function () {
|
|
2462
|
-
function ScheduleToAllPagesRequest(kwargs) {
|
|
2463
|
-
if (!kwargs) {
|
|
2464
|
-
return;
|
|
2465
|
-
}
|
|
2466
|
-
Object.assign(this, kwargs);
|
|
2467
|
-
}
|
|
2468
|
-
/**
|
|
2469
|
-
* @param {?} proto
|
|
2470
|
-
* @return {?}
|
|
2471
|
-
*/
|
|
2472
|
-
ScheduleToAllPagesRequest.fromProto = /**
|
|
2473
|
-
* @param {?} proto
|
|
2474
|
-
* @return {?}
|
|
2475
|
-
*/
|
|
2476
|
-
function (proto) {
|
|
2477
|
-
/** @type {?} */
|
|
2478
|
-
var m = new ScheduleToAllPagesRequest();
|
|
2479
|
-
m = Object.assign(m, proto);
|
|
2480
|
-
if (proto.socialPost) {
|
|
2481
|
-
m.socialPost = SocialPostData.fromProto(proto.socialPost);
|
|
2482
|
-
}
|
|
2483
|
-
return m;
|
|
2484
|
-
};
|
|
2485
|
-
/**
|
|
2486
|
-
* @return {?}
|
|
2487
|
-
*/
|
|
2488
|
-
ScheduleToAllPagesRequest.prototype.toApiJson = /**
|
|
2489
|
-
* @return {?}
|
|
2490
|
-
*/
|
|
2491
|
-
function () {
|
|
2492
|
-
/** @type {?} */
|
|
2493
|
-
var toReturn = {};
|
|
2494
|
-
if (typeof this.socialPost !== 'undefined' && this.socialPost !== null) {
|
|
2495
|
-
toReturn['socialPost'] = 'toApiJson' in this.socialPost ? ((/** @type {?} */ (this.socialPost))).toApiJson() : this.socialPost;
|
|
2496
|
-
}
|
|
2497
|
-
if (typeof this.partnerId !== 'undefined') {
|
|
2498
|
-
toReturn['partnerId'] = this.partnerId;
|
|
2499
|
-
}
|
|
2500
|
-
if (typeof this.businessId !== 'undefined') {
|
|
2501
|
-
toReturn['businessId'] = this.businessId;
|
|
2502
|
-
}
|
|
2503
|
-
return toReturn;
|
|
2504
|
-
};
|
|
2505
|
-
return ScheduleToAllPagesRequest;
|
|
2506
|
-
}());
|
|
2507
|
-
var ScheduleToAllPagesResponse = /** @class */ (function () {
|
|
2508
|
-
function ScheduleToAllPagesResponse(kwargs) {
|
|
2509
|
-
if (!kwargs) {
|
|
2510
|
-
return;
|
|
2511
|
-
}
|
|
2512
|
-
Object.assign(this, kwargs);
|
|
2513
|
-
}
|
|
2514
|
-
/**
|
|
2515
|
-
* @param {?} proto
|
|
2516
|
-
* @return {?}
|
|
2517
|
-
*/
|
|
2518
|
-
ScheduleToAllPagesResponse.fromProto = /**
|
|
2519
|
-
* @param {?} proto
|
|
2520
|
-
* @return {?}
|
|
2521
|
-
*/
|
|
2522
|
-
function (proto) {
|
|
2523
|
-
/** @type {?} */
|
|
2524
|
-
var m = new ScheduleToAllPagesResponse();
|
|
2525
|
-
m = Object.assign(m, proto);
|
|
2526
|
-
if (proto.statuses) {
|
|
2527
|
-
m.statuses = proto.statuses.map(SchedulePostStatus.fromProto);
|
|
2528
|
-
}
|
|
2529
|
-
return m;
|
|
2530
|
-
};
|
|
2531
|
-
/**
|
|
2532
|
-
* @return {?}
|
|
2533
|
-
*/
|
|
2534
|
-
ScheduleToAllPagesResponse.prototype.toApiJson = /**
|
|
2535
|
-
* @return {?}
|
|
2536
|
-
*/
|
|
2537
|
-
function () {
|
|
2538
|
-
/** @type {?} */
|
|
2539
|
-
var toReturn = {};
|
|
2540
|
-
if (typeof this.statuses !== 'undefined' && this.statuses !== null) {
|
|
2541
|
-
toReturn['statuses'] = 'toApiJson' in this.statuses ? ((/** @type {?} */ (this.statuses))).toApiJson() : this.statuses;
|
|
2542
|
-
}
|
|
2543
|
-
return toReturn;
|
|
2544
|
-
};
|
|
2545
|
-
return ScheduleToAllPagesResponse;
|
|
2546
|
-
}());
|
|
2547
|
-
var UpdatePostTemplateRequest = /** @class */ (function () {
|
|
2548
|
-
function UpdatePostTemplateRequest(kwargs) {
|
|
2549
|
-
if (!kwargs) {
|
|
2550
|
-
return;
|
|
2551
|
-
}
|
|
2552
|
-
Object.assign(this, kwargs);
|
|
2553
|
-
}
|
|
2554
|
-
/**
|
|
2555
|
-
* @param {?} proto
|
|
2556
|
-
* @return {?}
|
|
2557
|
-
*/
|
|
2558
|
-
UpdatePostTemplateRequest.fromProto = /**
|
|
2559
|
-
* @param {?} proto
|
|
2560
|
-
* @return {?}
|
|
2561
|
-
*/
|
|
2562
|
-
function (proto) {
|
|
2563
|
-
/** @type {?} */
|
|
2564
|
-
var m = new UpdatePostTemplateRequest();
|
|
2565
|
-
m = Object.assign(m, proto);
|
|
2566
|
-
if (proto.postDateTime) {
|
|
2567
|
-
m.postDateTime = new Date(proto.postDateTime);
|
|
2568
|
-
}
|
|
2569
|
-
return m;
|
|
2570
|
-
};
|
|
2571
|
-
/**
|
|
2572
|
-
* @return {?}
|
|
2573
|
-
*/
|
|
2574
|
-
UpdatePostTemplateRequest.prototype.toApiJson = /**
|
|
2575
|
-
* @return {?}
|
|
2576
|
-
*/
|
|
2577
|
-
function () {
|
|
2578
|
-
/** @type {?} */
|
|
2579
|
-
var toReturn = {};
|
|
2580
|
-
if (typeof this.accountGroupId !== 'undefined') {
|
|
2581
|
-
toReturn['accountGroupId'] = this.accountGroupId;
|
|
2582
|
-
}
|
|
2583
|
-
if (typeof this.templateId !== 'undefined') {
|
|
2584
|
-
toReturn['templateId'] = this.templateId;
|
|
2585
|
-
}
|
|
2586
|
-
if (typeof this.title !== 'undefined') {
|
|
2587
|
-
toReturn['title'] = this.title;
|
|
2588
|
-
}
|
|
2589
|
-
if (typeof this.postText !== 'undefined') {
|
|
2590
|
-
toReturn['postText'] = this.postText;
|
|
2591
|
-
}
|
|
2592
|
-
if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {
|
|
2593
|
-
toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? ((/** @type {?} */ (this.postDateTime))).toApiJson() : this.postDateTime;
|
|
2594
|
-
}
|
|
2595
|
-
if (typeof this.gmbPostCustomization !== 'undefined') {
|
|
2596
|
-
toReturn['gmbPostCustomization'] = this.gmbPostCustomization;
|
|
2597
|
-
}
|
|
2598
|
-
if (typeof this.imageUrl !== 'undefined') {
|
|
2599
|
-
toReturn['imageUrl'] = this.imageUrl;
|
|
2600
|
-
}
|
|
2601
|
-
if (typeof this.imagePath !== 'undefined') {
|
|
2602
|
-
toReturn['imagePath'] = this.imagePath;
|
|
2603
|
-
}
|
|
2604
|
-
if (typeof this.imageSize !== 'undefined') {
|
|
2605
|
-
toReturn['imageSize'] = this.imageSize;
|
|
2606
|
-
}
|
|
2607
|
-
if (typeof this.previews !== 'undefined') {
|
|
2608
|
-
toReturn['previews'] = this.previews;
|
|
2609
|
-
}
|
|
2610
|
-
if (typeof this.options !== 'undefined') {
|
|
2611
|
-
toReturn['options'] = this.options;
|
|
2612
|
-
}
|
|
2613
|
-
if (typeof this.videoUrl !== 'undefined') {
|
|
2614
|
-
toReturn['videoUrl'] = this.videoUrl;
|
|
2615
|
-
}
|
|
2616
|
-
return toReturn;
|
|
2617
|
-
};
|
|
2618
|
-
return UpdatePostTemplateRequest;
|
|
2619
|
-
}());
|
|
2620
|
-
|
|
2621
|
-
/**
|
|
2622
|
-
* @fileoverview added by tsickle
|
|
2623
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
2624
|
-
*/
|
|
2625
|
-
|
|
2626
|
-
/**
|
|
2627
|
-
* @fileoverview added by tsickle
|
|
2628
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
2629
|
-
*/
|
|
2630
|
-
var HostService = /** @class */ (function () {
|
|
2631
|
-
function HostService(environmentService) {
|
|
2632
|
-
this.environmentService = environmentService;
|
|
2633
|
-
}
|
|
2634
|
-
/**
|
|
2635
|
-
* @return {?}
|
|
2636
|
-
*/
|
|
2637
|
-
HostService.prototype.host = /**
|
|
2638
|
-
* @return {?}
|
|
2639
|
-
*/
|
|
2640
|
-
function () {
|
|
2641
|
-
if (this._host) {
|
|
2642
|
-
return this._host;
|
|
2643
|
-
}
|
|
2644
|
-
switch (this.environmentService.getEnvironment()) {
|
|
2645
|
-
case Environment.LOCAL:
|
|
2646
|
-
this._host = 'social-post.vendasta-local.com';
|
|
2647
|
-
break;
|
|
2648
|
-
case Environment.TEST:
|
|
2649
|
-
this._host = '';
|
|
2650
|
-
break;
|
|
2651
|
-
case Environment.DEMO:
|
|
2652
|
-
this._host = 'social-posts-demo.apigateway.co';
|
|
2653
|
-
break;
|
|
2654
|
-
case Environment.PROD:
|
|
2655
|
-
this._host = 'social-posts-prod.apigateway.co';
|
|
2656
|
-
break;
|
|
2657
|
-
}
|
|
2658
|
-
return this._host;
|
|
2659
|
-
};
|
|
2660
|
-
/**
|
|
2661
|
-
* @return {?}
|
|
2662
|
-
*/
|
|
2663
|
-
HostService.prototype.httpsHost = /**
|
|
2664
|
-
* @return {?}
|
|
2665
|
-
*/
|
|
2666
|
-
function () {
|
|
2667
|
-
if (this._httpsHost) {
|
|
2668
|
-
return this._httpsHost;
|
|
2669
|
-
}
|
|
2670
|
-
switch (this.environmentService.getEnvironment()) {
|
|
2671
|
-
case Environment.LOCAL:
|
|
2672
|
-
this._httpsHost = 'social-post.vendasta-local.com';
|
|
2673
|
-
break;
|
|
2674
|
-
case Environment.TEST:
|
|
2675
|
-
this._httpsHost = '';
|
|
2676
|
-
break;
|
|
2677
|
-
case Environment.DEMO:
|
|
2678
|
-
this._httpsHost = 'social-posts-api-demo.apigateway.co';
|
|
2679
|
-
break;
|
|
2680
|
-
case Environment.PROD:
|
|
2681
|
-
this._httpsHost = 'social-posts-api-prod.apigateway.co';
|
|
2682
|
-
break;
|
|
2683
|
-
}
|
|
2684
|
-
return this._httpsHost;
|
|
2685
|
-
};
|
|
2686
|
-
/**
|
|
2687
|
-
* @return {?}
|
|
2688
|
-
*/
|
|
2689
|
-
HostService.prototype.hostWithScheme = /**
|
|
2690
|
-
* @return {?}
|
|
2691
|
-
*/
|
|
2692
|
-
function () {
|
|
2693
|
-
/** @type {?} */
|
|
2694
|
-
var scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';
|
|
2695
|
-
return scheme + this.host();
|
|
2696
|
-
};
|
|
2697
|
-
/**
|
|
2698
|
-
* @return {?}
|
|
2699
|
-
*/
|
|
2700
|
-
HostService.prototype.httpsHostWithScheme = /**
|
|
2701
|
-
* @return {?}
|
|
2702
|
-
*/
|
|
2703
|
-
function () {
|
|
2704
|
-
/** @type {?} */
|
|
2705
|
-
var scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';
|
|
2706
|
-
return scheme + this.httpsHost();
|
|
2707
|
-
};
|
|
2708
|
-
HostService.decorators = [
|
|
2709
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
2710
|
-
];
|
|
2711
|
-
/** @nocollapse */
|
|
2712
|
-
HostService.ctorParameters = function () { return [
|
|
2713
|
-
{ type: EnvironmentService }
|
|
2714
|
-
]; };
|
|
2715
|
-
/** @nocollapse */ HostService.ngInjectableDef = ɵɵdefineInjectable({ factory: function HostService_Factory() { return new HostService(ɵɵinject(EnvironmentService)); }, token: HostService, providedIn: "root" });
|
|
2716
|
-
return HostService;
|
|
2717
|
-
}());
|
|
2718
|
-
|
|
2719
|
-
/**
|
|
2720
|
-
* @fileoverview added by tsickle
|
|
2721
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
2722
|
-
*/
|
|
2723
|
-
var SocialPostsApiService = /** @class */ (function () {
|
|
2724
|
-
function SocialPostsApiService(http, hostService) {
|
|
2725
|
-
this.http = http;
|
|
2726
|
-
this.hostService = hostService;
|
|
2727
|
-
}
|
|
2728
|
-
/**
|
|
2729
|
-
* @private
|
|
2730
|
-
* @return {?}
|
|
2731
|
-
*/
|
|
2732
|
-
SocialPostsApiService.prototype.apiOptions = /**
|
|
2733
|
-
* @private
|
|
2734
|
-
* @return {?}
|
|
2735
|
-
*/
|
|
2736
|
-
function () {
|
|
2737
|
-
return {
|
|
2738
|
-
headers: new HttpHeaders({
|
|
2739
|
-
'Content-Type': 'application/json'
|
|
2740
|
-
}),
|
|
2741
|
-
withCredentials: true
|
|
2742
|
-
};
|
|
2743
|
-
};
|
|
2744
|
-
/**
|
|
2745
|
-
* @param {?} r
|
|
2746
|
-
* @return {?}
|
|
2747
|
-
*/
|
|
2748
|
-
SocialPostsApiService.prototype.list = /**
|
|
2749
|
-
* @param {?} r
|
|
2750
|
-
* @return {?}
|
|
2751
|
-
*/
|
|
2752
|
-
function (r) {
|
|
2753
|
-
/** @type {?} */
|
|
2754
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new ListSocialPostsRequest(r);
|
|
2755
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.SocialPosts/List", request.toApiJson(), this.apiOptions())
|
|
2756
|
-
.pipe(map((/**
|
|
2757
|
-
* @param {?} resp
|
|
2758
|
-
* @return {?}
|
|
2759
|
-
*/
|
|
2760
|
-
function (resp) { return ListSocialPostsResponse.fromProto(resp); })), share());
|
|
2761
|
-
};
|
|
2762
|
-
/**
|
|
2763
|
-
* @param {?} r
|
|
2764
|
-
* @return {?}
|
|
2765
|
-
*/
|
|
2766
|
-
SocialPostsApiService.prototype.deleteSocialPost = /**
|
|
2767
|
-
* @param {?} r
|
|
2768
|
-
* @return {?}
|
|
2769
|
-
*/
|
|
2770
|
-
function (r) {
|
|
2771
|
-
/** @type {?} */
|
|
2772
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new DeleteSocialPostRequest(r);
|
|
2773
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.SocialPosts/DeleteSocialPost", request.toApiJson(), __assign({}, this.apiOptions(), { observe: 'response' }));
|
|
2774
|
-
};
|
|
2775
|
-
/**
|
|
2776
|
-
* @param {?} r
|
|
2777
|
-
* @return {?}
|
|
2778
|
-
*/
|
|
2779
|
-
SocialPostsApiService.prototype.scheduleToAllPages = /**
|
|
2780
|
-
* @param {?} r
|
|
2781
|
-
* @return {?}
|
|
2782
|
-
*/
|
|
2783
|
-
function (r) {
|
|
2784
|
-
/** @type {?} */
|
|
2785
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new ScheduleToAllPagesRequest(r);
|
|
2786
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.SocialPosts/ScheduleToAllPages", request.toApiJson(), this.apiOptions())
|
|
2787
|
-
.pipe(map((/**
|
|
2788
|
-
* @param {?} resp
|
|
2789
|
-
* @return {?}
|
|
2790
|
-
*/
|
|
2791
|
-
function (resp) { return ScheduleToAllPagesResponse.fromProto(resp); })), share());
|
|
2792
|
-
};
|
|
2793
|
-
/**
|
|
2794
|
-
* @param {?} r
|
|
2795
|
-
* @return {?}
|
|
2796
|
-
*/
|
|
2797
|
-
SocialPostsApiService.prototype.schedule = /**
|
|
2798
|
-
* @param {?} r
|
|
2799
|
-
* @return {?}
|
|
2800
|
-
*/
|
|
2801
|
-
function (r) {
|
|
2802
|
-
/** @type {?} */
|
|
2803
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new SchedulePostRequest(r);
|
|
2804
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.SocialPosts/Schedule", request.toApiJson(), this.apiOptions())
|
|
2805
|
-
.pipe(map((/**
|
|
2806
|
-
* @param {?} resp
|
|
2807
|
-
* @return {?}
|
|
2808
|
-
*/
|
|
2809
|
-
function (resp) { return SchedulePostResponse.fromProto(resp); })), share());
|
|
2810
|
-
};
|
|
2811
|
-
/**
|
|
2812
|
-
* @param {?} r
|
|
2813
|
-
* @return {?}
|
|
2814
|
-
*/
|
|
2815
|
-
SocialPostsApiService.prototype.getMultiSocialPosts = /**
|
|
2816
|
-
* @param {?} r
|
|
2817
|
-
* @return {?}
|
|
2818
|
-
*/
|
|
2819
|
-
function (r) {
|
|
2820
|
-
/** @type {?} */
|
|
2821
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new GetMultiSocialPostsRequest(r);
|
|
2822
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.SocialPosts/GetMultiSocialPosts", request.toApiJson(), this.apiOptions())
|
|
2823
|
-
.pipe(map((/**
|
|
2824
|
-
* @param {?} resp
|
|
2825
|
-
* @return {?}
|
|
2826
|
-
*/
|
|
2827
|
-
function (resp) { return GetMultiSocialPostsResponse.fromProto(resp); })), share());
|
|
2828
|
-
};
|
|
2829
|
-
/**
|
|
2830
|
-
* @param {?} r
|
|
2831
|
-
* @return {?}
|
|
2832
|
-
*/
|
|
2833
|
-
SocialPostsApiService.prototype.getMultiSocialPostStats = /**
|
|
2834
|
-
* @param {?} r
|
|
2835
|
-
* @return {?}
|
|
2836
|
-
*/
|
|
2837
|
-
function (r) {
|
|
2838
|
-
/** @type {?} */
|
|
2839
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new GetMultiSocialPostStatsRequest(r);
|
|
2840
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.SocialPosts/GetMultiSocialPostStats", request.toApiJson(), this.apiOptions())
|
|
2841
|
-
.pipe(map((/**
|
|
2842
|
-
* @param {?} resp
|
|
2843
|
-
* @return {?}
|
|
2844
|
-
*/
|
|
2845
|
-
function (resp) { return GetMultiSocialPostStatsResponse.fromProto(resp); })), share());
|
|
2846
|
-
};
|
|
2847
|
-
/**
|
|
2848
|
-
* @param {?} r
|
|
2849
|
-
* @return {?}
|
|
2850
|
-
*/
|
|
2851
|
-
SocialPostsApiService.prototype.getScheduledPostCount = /**
|
|
2852
|
-
* @param {?} r
|
|
2853
|
-
* @return {?}
|
|
2854
|
-
*/
|
|
2855
|
-
function (r) {
|
|
2856
|
-
/** @type {?} */
|
|
2857
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new GetScheduledPostCountRequest(r);
|
|
2858
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.SocialPosts/GetScheduledPostCount", request.toApiJson(), this.apiOptions())
|
|
2859
|
-
.pipe(map((/**
|
|
2860
|
-
* @param {?} resp
|
|
2861
|
-
* @return {?}
|
|
2862
|
-
*/
|
|
2863
|
-
function (resp) { return GetScheduledPostCountResponse.fromProto(resp); })), share());
|
|
2864
|
-
};
|
|
2865
|
-
SocialPostsApiService.decorators = [
|
|
2866
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
2867
|
-
];
|
|
2868
|
-
/** @nocollapse */
|
|
2869
|
-
SocialPostsApiService.ctorParameters = function () { return [
|
|
2870
|
-
{ type: HttpClient },
|
|
2871
|
-
{ type: HostService }
|
|
2872
|
-
]; };
|
|
2873
|
-
/** @nocollapse */ SocialPostsApiService.ngInjectableDef = ɵɵdefineInjectable({ factory: function SocialPostsApiService_Factory() { return new SocialPostsApiService(ɵɵinject(HttpClient), ɵɵinject(HostService)); }, token: SocialPostsApiService, providedIn: "root" });
|
|
2874
|
-
return SocialPostsApiService;
|
|
2875
|
-
}());
|
|
2876
|
-
|
|
2877
|
-
/**
|
|
2878
|
-
* @fileoverview added by tsickle
|
|
2879
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
2880
|
-
*/
|
|
2881
|
-
var SocialPostsService = /** @class */ (function () {
|
|
2882
|
-
function SocialPostsService(socialPostsApiService) {
|
|
2883
|
-
this.socialPostsApiService = socialPostsApiService;
|
|
2884
|
-
}
|
|
2885
|
-
/**
|
|
2886
|
-
* @param {?} start
|
|
2887
|
-
* @param {?} end
|
|
2888
|
-
* @param {?} socialServiceIds
|
|
2889
|
-
* @param {?} businessId
|
|
2890
|
-
* @param {?} partnerId
|
|
2891
|
-
* @param {?} cursor
|
|
2892
|
-
* @param {?} tags
|
|
2893
|
-
* @param {?} pageSize
|
|
2894
|
-
* @return {?}
|
|
2895
|
-
*/
|
|
2896
|
-
SocialPostsService.prototype.list = /**
|
|
2897
|
-
* @param {?} start
|
|
2898
|
-
* @param {?} end
|
|
2899
|
-
* @param {?} socialServiceIds
|
|
2900
|
-
* @param {?} businessId
|
|
2901
|
-
* @param {?} partnerId
|
|
2902
|
-
* @param {?} cursor
|
|
2903
|
-
* @param {?} tags
|
|
2904
|
-
* @param {?} pageSize
|
|
2905
|
-
* @return {?}
|
|
2906
|
-
*/
|
|
2907
|
-
function (start, end, socialServiceIds, businessId, partnerId, cursor, tags, pageSize) {
|
|
2908
|
-
/** @type {?} */
|
|
2909
|
-
var req = new ListSocialPostsRequest({
|
|
2910
|
-
start: start,
|
|
2911
|
-
end: end,
|
|
2912
|
-
businessId: businessId,
|
|
2913
|
-
partnerId: partnerId,
|
|
2914
|
-
cursor: cursor,
|
|
2915
|
-
socialServiceIds: socialServiceIds,
|
|
2916
|
-
tags: tags,
|
|
2917
|
-
pageSize: pageSize,
|
|
2918
|
-
});
|
|
2919
|
-
return this.socialPostsApiService.list(req);
|
|
2920
|
-
};
|
|
2921
|
-
/**
|
|
2922
|
-
* @param {?} businessId
|
|
2923
|
-
* @param {?} internalPostIds
|
|
2924
|
-
* @return {?}
|
|
2925
|
-
*/
|
|
2926
|
-
SocialPostsService.prototype.getMultiSocialPosts = /**
|
|
2927
|
-
* @param {?} businessId
|
|
2928
|
-
* @param {?} internalPostIds
|
|
2929
|
-
* @return {?}
|
|
2930
|
-
*/
|
|
2931
|
-
function (businessId, internalPostIds) {
|
|
2932
|
-
if (!internalPostIds || internalPostIds.length === 0) {
|
|
2933
|
-
/** @type {?} */
|
|
2934
|
-
var res = new GetMultiSocialPostsResponse();
|
|
2935
|
-
return of(res);
|
|
2936
|
-
}
|
|
2937
|
-
/** @type {?} */
|
|
2938
|
-
var req = new GetMultiSocialPostsRequest({ businessId: businessId, internalPostIds: internalPostIds });
|
|
2939
|
-
return this.socialPostsApiService.getMultiSocialPosts(req);
|
|
2940
|
-
};
|
|
2941
|
-
/**
|
|
2942
|
-
* @param {?} partnerId
|
|
2943
|
-
* @param {?} businessId
|
|
2944
|
-
* @param {?} socialServiceIds
|
|
2945
|
-
* @return {?}
|
|
2946
|
-
*/
|
|
2947
|
-
SocialPostsService.prototype.getScheduledPostCount = /**
|
|
2948
|
-
* @param {?} partnerId
|
|
2949
|
-
* @param {?} businessId
|
|
2950
|
-
* @param {?} socialServiceIds
|
|
2951
|
-
* @return {?}
|
|
2952
|
-
*/
|
|
2953
|
-
function (partnerId, businessId, socialServiceIds) {
|
|
2954
|
-
/** @type {?} */
|
|
2955
|
-
var req = new GetScheduledPostCountRequest({ partnerId: partnerId, businessId: businessId, socialServiceIds: socialServiceIds });
|
|
2956
|
-
return this.socialPostsApiService.getScheduledPostCount(req);
|
|
2957
|
-
};
|
|
2958
|
-
SocialPostsService.decorators = [
|
|
2959
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
2960
|
-
];
|
|
2961
|
-
/** @nocollapse */
|
|
2962
|
-
SocialPostsService.ctorParameters = function () { return [
|
|
2963
|
-
{ type: SocialPostsApiService }
|
|
2964
|
-
]; };
|
|
2965
|
-
/** @nocollapse */ SocialPostsService.ngInjectableDef = ɵɵdefineInjectable({ factory: function SocialPostsService_Factory() { return new SocialPostsService(ɵɵinject(SocialPostsApiService)); }, token: SocialPostsService, providedIn: "root" });
|
|
2966
|
-
return SocialPostsService;
|
|
2967
|
-
}());
|
|
2968
|
-
|
|
2969
|
-
/**
|
|
2970
|
-
* @fileoverview added by tsickle
|
|
2971
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
2972
|
-
*/
|
|
2973
|
-
var PostTemplatesApiService = /** @class */ (function () {
|
|
2974
|
-
function PostTemplatesApiService(http, hostService) {
|
|
2975
|
-
this.http = http;
|
|
2976
|
-
this.hostService = hostService;
|
|
2977
|
-
}
|
|
2978
|
-
/**
|
|
2979
|
-
* @private
|
|
2980
|
-
* @return {?}
|
|
2981
|
-
*/
|
|
2982
|
-
PostTemplatesApiService.prototype.apiOptions = /**
|
|
2983
|
-
* @private
|
|
2984
|
-
* @return {?}
|
|
2985
|
-
*/
|
|
2986
|
-
function () {
|
|
2987
|
-
return {
|
|
2988
|
-
headers: new HttpHeaders({
|
|
2989
|
-
'Content-Type': 'application/json'
|
|
2990
|
-
}),
|
|
2991
|
-
withCredentials: true
|
|
2992
|
-
};
|
|
2993
|
-
};
|
|
2994
|
-
/**
|
|
2995
|
-
* @param {?} r
|
|
2996
|
-
* @return {?}
|
|
2997
|
-
*/
|
|
2998
|
-
PostTemplatesApiService.prototype.updatePostTemplate = /**
|
|
2999
|
-
* @param {?} r
|
|
3000
|
-
* @return {?}
|
|
3001
|
-
*/
|
|
3002
|
-
function (r) {
|
|
3003
|
-
/** @type {?} */
|
|
3004
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new UpdatePostTemplateRequest(r);
|
|
3005
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.PostTemplates/UpdatePostTemplate", request.toApiJson(), __assign({}, this.apiOptions(), { observe: 'response' }));
|
|
3006
|
-
};
|
|
3007
|
-
/**
|
|
3008
|
-
* @param {?} r
|
|
3009
|
-
* @return {?}
|
|
3010
|
-
*/
|
|
3011
|
-
PostTemplatesApiService.prototype.createPostTemplate = /**
|
|
3012
|
-
* @param {?} r
|
|
3013
|
-
* @return {?}
|
|
3014
|
-
*/
|
|
3015
|
-
function (r) {
|
|
3016
|
-
/** @type {?} */
|
|
3017
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new CreatePostTemplateRequest(r);
|
|
3018
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.PostTemplates/CreatePostTemplate", request.toApiJson(), this.apiOptions())
|
|
3019
|
-
.pipe(map((/**
|
|
3020
|
-
* @param {?} resp
|
|
3021
|
-
* @return {?}
|
|
3022
|
-
*/
|
|
3023
|
-
function (resp) { return CreatePostTemplateResponse.fromProto(resp); })), share());
|
|
3024
|
-
};
|
|
3025
|
-
/**
|
|
3026
|
-
* @param {?} r
|
|
3027
|
-
* @return {?}
|
|
3028
|
-
*/
|
|
3029
|
-
PostTemplatesApiService.prototype.getPostTemplate = /**
|
|
3030
|
-
* @param {?} r
|
|
3031
|
-
* @return {?}
|
|
3032
|
-
*/
|
|
3033
|
-
function (r) {
|
|
3034
|
-
/** @type {?} */
|
|
3035
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new GetPostTemplateRequest(r);
|
|
3036
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.PostTemplates/GetPostTemplate", request.toApiJson(), this.apiOptions())
|
|
3037
|
-
.pipe(map((/**
|
|
3038
|
-
* @param {?} resp
|
|
3039
|
-
* @return {?}
|
|
3040
|
-
*/
|
|
3041
|
-
function (resp) { return GetPostTemplateResponse.fromProto(resp); })), share());
|
|
3042
|
-
};
|
|
3043
|
-
/**
|
|
3044
|
-
* @param {?} r
|
|
3045
|
-
* @return {?}
|
|
3046
|
-
*/
|
|
3047
|
-
PostTemplatesApiService.prototype.listPostTemplates = /**
|
|
3048
|
-
* @param {?} r
|
|
3049
|
-
* @return {?}
|
|
3050
|
-
*/
|
|
3051
|
-
function (r) {
|
|
3052
|
-
/** @type {?} */
|
|
3053
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new ListPostTemplatesRequest(r);
|
|
3054
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.PostTemplates/ListPostTemplates", request.toApiJson(), this.apiOptions())
|
|
3055
|
-
.pipe(map((/**
|
|
3056
|
-
* @param {?} resp
|
|
3057
|
-
* @return {?}
|
|
3058
|
-
*/
|
|
3059
|
-
function (resp) { return ListPostTemplatesResponse.fromProto(resp); })), share());
|
|
3060
|
-
};
|
|
3061
|
-
/**
|
|
3062
|
-
* @param {?} r
|
|
3063
|
-
* @return {?}
|
|
3064
|
-
*/
|
|
3065
|
-
PostTemplatesApiService.prototype.deletePostTemplate = /**
|
|
3066
|
-
* @param {?} r
|
|
3067
|
-
* @return {?}
|
|
3068
|
-
*/
|
|
3069
|
-
function (r) {
|
|
3070
|
-
/** @type {?} */
|
|
3071
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new DeletePostTemplateRequest(r);
|
|
3072
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.PostTemplates/DeletePostTemplate", request.toApiJson(), __assign({}, this.apiOptions(), { observe: 'response' }));
|
|
3073
|
-
};
|
|
3074
|
-
PostTemplatesApiService.decorators = [
|
|
3075
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
3076
|
-
];
|
|
3077
|
-
/** @nocollapse */
|
|
3078
|
-
PostTemplatesApiService.ctorParameters = function () { return [
|
|
3079
|
-
{ type: HttpClient },
|
|
3080
|
-
{ type: HostService }
|
|
3081
|
-
]; };
|
|
3082
|
-
/** @nocollapse */ PostTemplatesApiService.ngInjectableDef = ɵɵdefineInjectable({ factory: function PostTemplatesApiService_Factory() { return new PostTemplatesApiService(ɵɵinject(HttpClient), ɵɵinject(HostService)); }, token: PostTemplatesApiService, providedIn: "root" });
|
|
3083
|
-
return PostTemplatesApiService;
|
|
3084
|
-
}());
|
|
3085
|
-
|
|
3086
|
-
/**
|
|
3087
|
-
* @fileoverview added by tsickle
|
|
3088
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3089
|
-
*/
|
|
3090
|
-
var PostTemplatesService = /** @class */ (function () {
|
|
3091
|
-
function PostTemplatesService(socialPostsApiService) {
|
|
3092
|
-
this.socialPostsApiService = socialPostsApiService;
|
|
3093
|
-
}
|
|
3094
|
-
/**
|
|
3095
|
-
* @param {?} accountGroupId
|
|
3096
|
-
* @param {?} templateId
|
|
3097
|
-
* @param {?} title
|
|
3098
|
-
* @param {?} postText
|
|
3099
|
-
* @param {?} postDateTime
|
|
3100
|
-
* @param {?} gmbPostCustomization
|
|
3101
|
-
* @param {?} imageUrl
|
|
3102
|
-
* @param {?} imagePath
|
|
3103
|
-
* @param {?} imageSize
|
|
3104
|
-
* @param {?} previews
|
|
3105
|
-
* @param {?} options
|
|
3106
|
-
* @param {?} videoUrl
|
|
3107
|
-
* @return {?}
|
|
3108
|
-
*/
|
|
3109
|
-
PostTemplatesService.prototype.updatePostTemplate = /**
|
|
3110
|
-
* @param {?} accountGroupId
|
|
3111
|
-
* @param {?} templateId
|
|
3112
|
-
* @param {?} title
|
|
3113
|
-
* @param {?} postText
|
|
3114
|
-
* @param {?} postDateTime
|
|
3115
|
-
* @param {?} gmbPostCustomization
|
|
3116
|
-
* @param {?} imageUrl
|
|
3117
|
-
* @param {?} imagePath
|
|
3118
|
-
* @param {?} imageSize
|
|
3119
|
-
* @param {?} previews
|
|
3120
|
-
* @param {?} options
|
|
3121
|
-
* @param {?} videoUrl
|
|
3122
|
-
* @return {?}
|
|
3123
|
-
*/
|
|
3124
|
-
function (accountGroupId, templateId, title, postText, postDateTime, gmbPostCustomization, imageUrl, imagePath, imageSize, previews, options, videoUrl) {
|
|
3125
|
-
/** @type {?} */
|
|
3126
|
-
var req = new UpdatePostTemplateRequest({
|
|
3127
|
-
accountGroupId: accountGroupId,
|
|
3128
|
-
templateId: templateId,
|
|
3129
|
-
title: title,
|
|
3130
|
-
postText: postText,
|
|
3131
|
-
postDateTime: postDateTime,
|
|
3132
|
-
gmbPostCustomization: gmbPostCustomization,
|
|
3133
|
-
imageUrl: imageUrl,
|
|
3134
|
-
imagePath: imagePath,
|
|
3135
|
-
imageSize: imageSize,
|
|
3136
|
-
previews: previews,
|
|
3137
|
-
options: options,
|
|
3138
|
-
videoUrl: videoUrl
|
|
3139
|
-
});
|
|
3140
|
-
return this.socialPostsApiService.updatePostTemplate(req);
|
|
3141
|
-
};
|
|
3142
|
-
/**
|
|
3143
|
-
* @param {?} accountGroupId
|
|
3144
|
-
* @param {?} title
|
|
3145
|
-
* @param {?} postText
|
|
3146
|
-
* @param {?} postDateTime
|
|
3147
|
-
* @param {?} gmbPostCustomization
|
|
3148
|
-
* @param {?} imageUrl
|
|
3149
|
-
* @param {?} imagePath
|
|
3150
|
-
* @param {?} imageSize
|
|
3151
|
-
* @param {?} previews
|
|
3152
|
-
* @param {?} options
|
|
3153
|
-
* @param {?} videoUrl
|
|
3154
|
-
* @return {?}
|
|
3155
|
-
*/
|
|
3156
|
-
PostTemplatesService.prototype.createPostTemplate = /**
|
|
3157
|
-
* @param {?} accountGroupId
|
|
3158
|
-
* @param {?} title
|
|
3159
|
-
* @param {?} postText
|
|
3160
|
-
* @param {?} postDateTime
|
|
3161
|
-
* @param {?} gmbPostCustomization
|
|
3162
|
-
* @param {?} imageUrl
|
|
3163
|
-
* @param {?} imagePath
|
|
3164
|
-
* @param {?} imageSize
|
|
3165
|
-
* @param {?} previews
|
|
3166
|
-
* @param {?} options
|
|
3167
|
-
* @param {?} videoUrl
|
|
3168
|
-
* @return {?}
|
|
3169
|
-
*/
|
|
3170
|
-
function (accountGroupId, title, postText, postDateTime, gmbPostCustomization, imageUrl, imagePath, imageSize, previews, options, videoUrl) {
|
|
3171
|
-
/** @type {?} */
|
|
3172
|
-
var req = new CreatePostTemplateRequest({
|
|
3173
|
-
accountGroupId: accountGroupId,
|
|
3174
|
-
title: title,
|
|
3175
|
-
postText: postText,
|
|
3176
|
-
postDateTime: postDateTime,
|
|
3177
|
-
gmbPostCustomization: gmbPostCustomization,
|
|
3178
|
-
imageUrl: imageUrl,
|
|
3179
|
-
imagePath: imagePath,
|
|
3180
|
-
imageSize: imageSize,
|
|
3181
|
-
previews: previews,
|
|
3182
|
-
options: options,
|
|
3183
|
-
videoUrl: videoUrl
|
|
3184
|
-
});
|
|
3185
|
-
return this.socialPostsApiService.createPostTemplate(req);
|
|
3186
|
-
};
|
|
3187
|
-
/**
|
|
3188
|
-
* @param {?} accountGroupId
|
|
3189
|
-
* @param {?} templateId
|
|
3190
|
-
* @return {?}
|
|
3191
|
-
*/
|
|
3192
|
-
PostTemplatesService.prototype.getPostTemplate = /**
|
|
3193
|
-
* @param {?} accountGroupId
|
|
3194
|
-
* @param {?} templateId
|
|
3195
|
-
* @return {?}
|
|
3196
|
-
*/
|
|
3197
|
-
function (accountGroupId, templateId) {
|
|
3198
|
-
/** @type {?} */
|
|
3199
|
-
var req = new GetPostTemplateRequest({
|
|
3200
|
-
accountGroupId: accountGroupId,
|
|
3201
|
-
templateId: templateId
|
|
3202
|
-
});
|
|
3203
|
-
return this.socialPostsApiService.getPostTemplate(req);
|
|
3204
|
-
};
|
|
3205
|
-
/**
|
|
3206
|
-
* @param {?} accountGroupId
|
|
3207
|
-
* @param {?} cursor
|
|
3208
|
-
* @param {?} pageSize
|
|
3209
|
-
* @return {?}
|
|
3210
|
-
*/
|
|
3211
|
-
PostTemplatesService.prototype.listPostTemplates = /**
|
|
3212
|
-
* @param {?} accountGroupId
|
|
3213
|
-
* @param {?} cursor
|
|
3214
|
-
* @param {?} pageSize
|
|
3215
|
-
* @return {?}
|
|
3216
|
-
*/
|
|
3217
|
-
function (accountGroupId, cursor, pageSize) {
|
|
3218
|
-
/** @type {?} */
|
|
3219
|
-
var req = new ListPostTemplatesRequest({
|
|
3220
|
-
accountGroupId: accountGroupId,
|
|
3221
|
-
cursor: cursor,
|
|
3222
|
-
pageSize: pageSize
|
|
3223
|
-
});
|
|
3224
|
-
return this.socialPostsApiService.listPostTemplates(req);
|
|
3225
|
-
};
|
|
3226
|
-
/**
|
|
3227
|
-
* @param {?} accountGroupId
|
|
3228
|
-
* @param {?} templateId
|
|
3229
|
-
* @return {?}
|
|
3230
|
-
*/
|
|
3231
|
-
PostTemplatesService.prototype.deletePostTemplate = /**
|
|
3232
|
-
* @param {?} accountGroupId
|
|
3233
|
-
* @param {?} templateId
|
|
3234
|
-
* @return {?}
|
|
3235
|
-
*/
|
|
3236
|
-
function (accountGroupId, templateId) {
|
|
3237
|
-
/** @type {?} */
|
|
3238
|
-
var req = new DeletePostTemplateRequest({
|
|
3239
|
-
accountGroupId: accountGroupId,
|
|
3240
|
-
templateId: templateId
|
|
3241
|
-
});
|
|
3242
|
-
return this.socialPostsApiService.deletePostTemplate(req);
|
|
3243
|
-
};
|
|
3244
|
-
PostTemplatesService.decorators = [
|
|
3245
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
3246
|
-
];
|
|
3247
|
-
/** @nocollapse */
|
|
3248
|
-
PostTemplatesService.ctorParameters = function () { return [
|
|
3249
|
-
{ type: PostTemplatesApiService }
|
|
3250
|
-
]; };
|
|
3251
|
-
/** @nocollapse */ PostTemplatesService.ngInjectableDef = ɵɵdefineInjectable({ factory: function PostTemplatesService_Factory() { return new PostTemplatesService(ɵɵinject(PostTemplatesApiService)); }, token: PostTemplatesService, providedIn: "root" });
|
|
3252
|
-
return PostTemplatesService;
|
|
3253
|
-
}());
|
|
3254
|
-
|
|
3255
|
-
/**
|
|
3256
|
-
* @fileoverview added by tsickle
|
|
3257
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3258
|
-
*/
|
|
3259
|
-
var MultilocationPostApiService = /** @class */ (function () {
|
|
3260
|
-
function MultilocationPostApiService(http, hostService) {
|
|
3261
|
-
this.http = http;
|
|
3262
|
-
this.hostService = hostService;
|
|
3263
|
-
}
|
|
3264
|
-
/**
|
|
3265
|
-
* @private
|
|
3266
|
-
* @return {?}
|
|
3267
|
-
*/
|
|
3268
|
-
MultilocationPostApiService.prototype.apiOptions = /**
|
|
3269
|
-
* @private
|
|
3270
|
-
* @return {?}
|
|
3271
|
-
*/
|
|
3272
|
-
function () {
|
|
3273
|
-
return {
|
|
3274
|
-
headers: new HttpHeaders({
|
|
3275
|
-
'Content-Type': 'application/json'
|
|
3276
|
-
}),
|
|
3277
|
-
withCredentials: true
|
|
3278
|
-
};
|
|
3279
|
-
};
|
|
3280
|
-
/**
|
|
3281
|
-
* @param {?} r
|
|
3282
|
-
* @return {?}
|
|
3283
|
-
*/
|
|
3284
|
-
MultilocationPostApiService.prototype.createMultilocationPost = /**
|
|
3285
|
-
* @param {?} r
|
|
3286
|
-
* @return {?}
|
|
3287
|
-
*/
|
|
3288
|
-
function (r) {
|
|
3289
|
-
/** @type {?} */
|
|
3290
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new CreateMultilocationPostRequest(r);
|
|
3291
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.MultilocationPostService/CreateMultilocationPost", request.toApiJson(), this.apiOptions())
|
|
3292
|
-
.pipe(map((/**
|
|
3293
|
-
* @param {?} resp
|
|
3294
|
-
* @return {?}
|
|
3295
|
-
*/
|
|
3296
|
-
function (resp) { return CreateMultilocationPostResponse.fromProto(resp); })), share());
|
|
3297
|
-
};
|
|
3298
|
-
/**
|
|
3299
|
-
* @param {?} r
|
|
3300
|
-
* @return {?}
|
|
3301
|
-
*/
|
|
3302
|
-
MultilocationPostApiService.prototype.editMultilocationPost = /**
|
|
3303
|
-
* @param {?} r
|
|
3304
|
-
* @return {?}
|
|
3305
|
-
*/
|
|
3306
|
-
function (r) {
|
|
3307
|
-
/** @type {?} */
|
|
3308
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new EditMultilocationPostRequest(r);
|
|
3309
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.MultilocationPostService/EditMultilocationPost", request.toApiJson(), this.apiOptions())
|
|
3310
|
-
.pipe(map((/**
|
|
3311
|
-
* @param {?} resp
|
|
3312
|
-
* @return {?}
|
|
3313
|
-
*/
|
|
3314
|
-
function (resp) { return EditMultilocationPostResponse.fromProto(resp); })), share());
|
|
3315
|
-
};
|
|
3316
|
-
/**
|
|
3317
|
-
* @param {?} r
|
|
3318
|
-
* @return {?}
|
|
3319
|
-
*/
|
|
3320
|
-
MultilocationPostApiService.prototype.removeFromMultilocationPost = /**
|
|
3321
|
-
* @param {?} r
|
|
3322
|
-
* @return {?}
|
|
3323
|
-
*/
|
|
3324
|
-
function (r) {
|
|
3325
|
-
/** @type {?} */
|
|
3326
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new RemoveFromMultilocationPostRequest(r);
|
|
3327
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.MultilocationPostService/RemoveFromMultilocationPost", request.toApiJson(), __assign({}, this.apiOptions(), { observe: 'response' }));
|
|
3328
|
-
};
|
|
3329
|
-
/**
|
|
3330
|
-
* @param {?} r
|
|
3331
|
-
* @return {?}
|
|
3332
|
-
*/
|
|
3333
|
-
MultilocationPostApiService.prototype.listMultilocationPostsForBrand = /**
|
|
3334
|
-
* @param {?} r
|
|
3335
|
-
* @return {?}
|
|
3336
|
-
*/
|
|
3337
|
-
function (r) {
|
|
3338
|
-
/** @type {?} */
|
|
3339
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new ListMultilocationPostsForBrandRequest(r);
|
|
3340
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.MultilocationPostService/ListMultilocationPostsForBrand", request.toApiJson(), this.apiOptions())
|
|
3341
|
-
.pipe(map((/**
|
|
3342
|
-
* @param {?} resp
|
|
3343
|
-
* @return {?}
|
|
3344
|
-
*/
|
|
3345
|
-
function (resp) { return ListMultilocationPostsForBrandResponse.fromProto(resp); })), share());
|
|
3346
|
-
};
|
|
3347
|
-
/**
|
|
3348
|
-
* @param {?} r
|
|
3349
|
-
* @return {?}
|
|
3350
|
-
*/
|
|
3351
|
-
MultilocationPostApiService.prototype.deleteMultilocationPost = /**
|
|
3352
|
-
* @param {?} r
|
|
3353
|
-
* @return {?}
|
|
3354
|
-
*/
|
|
3355
|
-
function (r) {
|
|
3356
|
-
/** @type {?} */
|
|
3357
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new DeleteMultilocationPostRequest(r);
|
|
3358
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.MultilocationPostService/DeleteMultilocationPost", request.toApiJson(), __assign({}, this.apiOptions(), { observe: 'response' }));
|
|
3359
|
-
};
|
|
3360
|
-
/**
|
|
3361
|
-
* @param {?} r
|
|
3362
|
-
* @return {?}
|
|
3363
|
-
*/
|
|
3364
|
-
MultilocationPostApiService.prototype.getMultilocationPost = /**
|
|
3365
|
-
* @param {?} r
|
|
3366
|
-
* @return {?}
|
|
3367
|
-
*/
|
|
3368
|
-
function (r) {
|
|
3369
|
-
/** @type {?} */
|
|
3370
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new GetMultilocationPostRequest(r);
|
|
3371
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.MultilocationPostService/GetMultilocationPost", request.toApiJson(), this.apiOptions())
|
|
3372
|
-
.pipe(map((/**
|
|
3373
|
-
* @param {?} resp
|
|
3374
|
-
* @return {?}
|
|
3375
|
-
*/
|
|
3376
|
-
function (resp) { return GetMultilocationPostResponse.fromProto(resp); })), share());
|
|
3377
|
-
};
|
|
3378
|
-
MultilocationPostApiService.decorators = [
|
|
3379
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
3380
|
-
];
|
|
3381
|
-
/** @nocollapse */
|
|
3382
|
-
MultilocationPostApiService.ctorParameters = function () { return [
|
|
3383
|
-
{ type: HttpClient },
|
|
3384
|
-
{ type: HostService }
|
|
3385
|
-
]; };
|
|
3386
|
-
/** @nocollapse */ MultilocationPostApiService.ngInjectableDef = ɵɵdefineInjectable({ factory: function MultilocationPostApiService_Factory() { return new MultilocationPostApiService(ɵɵinject(HttpClient), ɵɵinject(HostService)); }, token: MultilocationPostApiService, providedIn: "root" });
|
|
3387
|
-
return MultilocationPostApiService;
|
|
3388
|
-
}());
|
|
3389
|
-
|
|
3390
|
-
/**
|
|
3391
|
-
* @fileoverview added by tsickle
|
|
3392
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3393
|
-
*/
|
|
3394
|
-
var MultilocationPostsService = /** @class */ (function () {
|
|
3395
|
-
function MultilocationPostsService(multilocationApiService) {
|
|
3396
|
-
this.multilocationApiService = multilocationApiService;
|
|
3397
|
-
}
|
|
3398
|
-
/**
|
|
3399
|
-
* @param {?} brandId
|
|
3400
|
-
* @param {?} text
|
|
3401
|
-
* @param {?} media
|
|
3402
|
-
* @param {?} gifs
|
|
3403
|
-
* @param {?} videos
|
|
3404
|
-
* @param {?} scheduledDate
|
|
3405
|
-
* @param {?} locations
|
|
3406
|
-
* @return {?}
|
|
3407
|
-
*/
|
|
3408
|
-
MultilocationPostsService.prototype.createMultilocationPost = /**
|
|
3409
|
-
* @param {?} brandId
|
|
3410
|
-
* @param {?} text
|
|
3411
|
-
* @param {?} media
|
|
3412
|
-
* @param {?} gifs
|
|
3413
|
-
* @param {?} videos
|
|
3414
|
-
* @param {?} scheduledDate
|
|
3415
|
-
* @param {?} locations
|
|
3416
|
-
* @return {?}
|
|
3417
|
-
*/
|
|
3418
|
-
function (brandId, text, media, gifs, videos, scheduledDate, locations) {
|
|
3419
|
-
/** @type {?} */
|
|
3420
|
-
var req = new CreateMultilocationPostRequest({
|
|
3421
|
-
brandId: brandId,
|
|
3422
|
-
text: text,
|
|
3423
|
-
media: media,
|
|
3424
|
-
gifs: gifs,
|
|
3425
|
-
videos: videos,
|
|
3426
|
-
scheduledDate: scheduledDate,
|
|
3427
|
-
locations: locations
|
|
3428
|
-
});
|
|
3429
|
-
return this.multilocationApiService.createMultilocationPost(req);
|
|
3430
|
-
};
|
|
3431
|
-
/**
|
|
3432
|
-
* @param {?} brandId
|
|
3433
|
-
* @param {?} multilocationId
|
|
3434
|
-
* @param {?} text
|
|
3435
|
-
* @param {?} media
|
|
3436
|
-
* @param {?} gifs
|
|
3437
|
-
* @param {?} videos
|
|
3438
|
-
* @param {?} scheduledDate
|
|
3439
|
-
* @param {?} locations
|
|
3440
|
-
* @param {?} fieldMask
|
|
3441
|
-
* @return {?}
|
|
3442
|
-
*/
|
|
3443
|
-
MultilocationPostsService.prototype.editMultilocationPost = /**
|
|
3444
|
-
* @param {?} brandId
|
|
3445
|
-
* @param {?} multilocationId
|
|
3446
|
-
* @param {?} text
|
|
3447
|
-
* @param {?} media
|
|
3448
|
-
* @param {?} gifs
|
|
3449
|
-
* @param {?} videos
|
|
3450
|
-
* @param {?} scheduledDate
|
|
3451
|
-
* @param {?} locations
|
|
3452
|
-
* @param {?} fieldMask
|
|
3453
|
-
* @return {?}
|
|
3454
|
-
*/
|
|
3455
|
-
function (brandId, multilocationId, text, media, gifs, videos, scheduledDate, locations, fieldMask) {
|
|
3456
|
-
/** @type {?} */
|
|
3457
|
-
var req = new EditMultilocationPostRequest({
|
|
3458
|
-
brandId: brandId,
|
|
3459
|
-
multilocationId: multilocationId,
|
|
3460
|
-
text: text,
|
|
3461
|
-
media: media,
|
|
3462
|
-
gifs: gifs,
|
|
3463
|
-
videos: videos,
|
|
3464
|
-
scheduledDate: scheduledDate,
|
|
3465
|
-
locations: locations,
|
|
3466
|
-
fieldMask: fieldMask
|
|
3467
|
-
});
|
|
3468
|
-
return this.multilocationApiService.editMultilocationPost(req);
|
|
3469
|
-
};
|
|
3470
|
-
/**
|
|
3471
|
-
* @param {?} reason
|
|
3472
|
-
* @param {?} brandId
|
|
3473
|
-
* @param {?} multilocationId
|
|
3474
|
-
* @param {?} locations
|
|
3475
|
-
* @return {?}
|
|
3476
|
-
*/
|
|
3477
|
-
MultilocationPostsService.prototype.removeFromMultilocationPost = /**
|
|
3478
|
-
* @param {?} reason
|
|
3479
|
-
* @param {?} brandId
|
|
3480
|
-
* @param {?} multilocationId
|
|
3481
|
-
* @param {?} locations
|
|
3482
|
-
* @return {?}
|
|
3483
|
-
*/
|
|
3484
|
-
function (reason, brandId, multilocationId, locations) {
|
|
3485
|
-
/** @type {?} */
|
|
3486
|
-
var req = new RemoveFromMultilocationPostRequest({
|
|
3487
|
-
reason: reason,
|
|
3488
|
-
brandId: brandId,
|
|
3489
|
-
multilocationId: multilocationId,
|
|
3490
|
-
locations: locations
|
|
3491
|
-
});
|
|
3492
|
-
return this.multilocationApiService.removeFromMultilocationPost(req);
|
|
3493
|
-
};
|
|
3494
|
-
/**
|
|
3495
|
-
* @param {?} brandId
|
|
3496
|
-
* @param {?} startDate
|
|
3497
|
-
* @param {?} endDate
|
|
3498
|
-
* @param {?} cursor
|
|
3499
|
-
* @param {?} pageSize
|
|
3500
|
-
* @return {?}
|
|
3501
|
-
*/
|
|
3502
|
-
MultilocationPostsService.prototype.listMultilocationPostsForBrand = /**
|
|
3503
|
-
* @param {?} brandId
|
|
3504
|
-
* @param {?} startDate
|
|
3505
|
-
* @param {?} endDate
|
|
3506
|
-
* @param {?} cursor
|
|
3507
|
-
* @param {?} pageSize
|
|
3508
|
-
* @return {?}
|
|
3509
|
-
*/
|
|
3510
|
-
function (brandId, startDate, endDate, cursor, pageSize) {
|
|
3511
|
-
/** @type {?} */
|
|
3512
|
-
var req = new ListMultilocationPostsForBrandRequest({
|
|
3513
|
-
brandId: brandId,
|
|
3514
|
-
startDate: startDate,
|
|
3515
|
-
endDate: endDate,
|
|
3516
|
-
cursor: cursor,
|
|
3517
|
-
pageSize: pageSize
|
|
3518
|
-
});
|
|
3519
|
-
return this.multilocationApiService.listMultilocationPostsForBrand(req);
|
|
3520
|
-
};
|
|
3521
|
-
/**
|
|
3522
|
-
* @param {?} brandId
|
|
3523
|
-
* @param {?} multilocationId
|
|
3524
|
-
* @return {?}
|
|
3525
|
-
*/
|
|
3526
|
-
MultilocationPostsService.prototype.deleteMultilocationPost = /**
|
|
3527
|
-
* @param {?} brandId
|
|
3528
|
-
* @param {?} multilocationId
|
|
3529
|
-
* @return {?}
|
|
3530
|
-
*/
|
|
3531
|
-
function (brandId, multilocationId) {
|
|
3532
|
-
/** @type {?} */
|
|
3533
|
-
var req = new DeleteMultilocationPostRequest({
|
|
3534
|
-
brandId: brandId,
|
|
3535
|
-
multilocationId: multilocationId
|
|
3536
|
-
});
|
|
3537
|
-
return this.multilocationApiService.deleteMultilocationPost(req);
|
|
3538
|
-
};
|
|
3539
|
-
/**
|
|
3540
|
-
* @param {?} brandId
|
|
3541
|
-
* @param {?} multilocationId
|
|
3542
|
-
* @return {?}
|
|
3543
|
-
*/
|
|
3544
|
-
MultilocationPostsService.prototype.getMultilocationPost = /**
|
|
3545
|
-
* @param {?} brandId
|
|
3546
|
-
* @param {?} multilocationId
|
|
3547
|
-
* @return {?}
|
|
3548
|
-
*/
|
|
3549
|
-
function (brandId, multilocationId) {
|
|
3550
|
-
/** @type {?} */
|
|
3551
|
-
var req = new GetMultilocationPostRequest({
|
|
3552
|
-
brandId: brandId,
|
|
3553
|
-
multilocationId: multilocationId
|
|
3554
|
-
});
|
|
3555
|
-
return this.multilocationApiService.getMultilocationPost(req);
|
|
3556
|
-
};
|
|
3557
|
-
MultilocationPostsService.decorators = [
|
|
3558
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
3559
|
-
];
|
|
3560
|
-
/** @nocollapse */
|
|
3561
|
-
MultilocationPostsService.ctorParameters = function () { return [
|
|
3562
|
-
{ type: MultilocationPostApiService }
|
|
3563
|
-
]; };
|
|
3564
|
-
/** @nocollapse */ MultilocationPostsService.ngInjectableDef = ɵɵdefineInjectable({ factory: function MultilocationPostsService_Factory() { return new MultilocationPostsService(ɵɵinject(MultilocationPostApiService)); }, token: MultilocationPostsService, providedIn: "root" });
|
|
3565
|
-
return MultilocationPostsService;
|
|
3566
|
-
}());
|
|
3567
|
-
|
|
3568
|
-
/**
|
|
3569
|
-
* @fileoverview added by tsickle
|
|
3570
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3571
|
-
*/
|
|
3572
|
-
|
|
3573
|
-
/**
|
|
3574
|
-
* @fileoverview added by tsickle
|
|
3575
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3576
|
-
*/
|
|
3577
|
-
var PartnerSocialPostsApiService = /** @class */ (function () {
|
|
3578
|
-
function PartnerSocialPostsApiService(http, hostService) {
|
|
3579
|
-
this.http = http;
|
|
3580
|
-
this.hostService = hostService;
|
|
3581
|
-
}
|
|
3582
|
-
/**
|
|
3583
|
-
* @private
|
|
3584
|
-
* @return {?}
|
|
3585
|
-
*/
|
|
3586
|
-
PartnerSocialPostsApiService.prototype.apiOptions = /**
|
|
3587
|
-
* @private
|
|
3588
|
-
* @return {?}
|
|
3589
|
-
*/
|
|
3590
|
-
function () {
|
|
3591
|
-
return {
|
|
3592
|
-
headers: new HttpHeaders({
|
|
3593
|
-
'Content-Type': 'application/json'
|
|
3594
|
-
}),
|
|
3595
|
-
withCredentials: true
|
|
3596
|
-
};
|
|
3597
|
-
};
|
|
3598
|
-
/**
|
|
3599
|
-
* @param {?} r
|
|
3600
|
-
* @return {?}
|
|
3601
|
-
*/
|
|
3602
|
-
PartnerSocialPostsApiService.prototype.listScheduled = /**
|
|
3603
|
-
* @param {?} r
|
|
3604
|
-
* @return {?}
|
|
3605
|
-
*/
|
|
3606
|
-
function (r) {
|
|
3607
|
-
/** @type {?} */
|
|
3608
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new PartnerListScheduledSocialPostsRequest(r);
|
|
3609
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.PartnerSocialPosts/ListScheduled", request.toApiJson(), this.apiOptions())
|
|
3610
|
-
.pipe(map((/**
|
|
3611
|
-
* @param {?} resp
|
|
3612
|
-
* @return {?}
|
|
3613
|
-
*/
|
|
3614
|
-
function (resp) { return PartnerListScheduledPostsResponse.fromProto(resp); })), share());
|
|
3615
|
-
};
|
|
3616
|
-
/**
|
|
3617
|
-
* @param {?} r
|
|
3618
|
-
* @return {?}
|
|
3619
|
-
*/
|
|
3620
|
-
PartnerSocialPostsApiService.prototype.listScheduledByCreated = /**
|
|
3621
|
-
* @param {?} r
|
|
3622
|
-
* @return {?}
|
|
3623
|
-
*/
|
|
3624
|
-
function (r) {
|
|
3625
|
-
/** @type {?} */
|
|
3626
|
-
var request = (((/** @type {?} */ (r))).toApiJson) ? ((/** @type {?} */ (r))) : new PartnerListScheduledSocialPostsRequest(r);
|
|
3627
|
-
return this.http.post(this.hostService.hostWithScheme() + "/socialposts.v1.PartnerSocialPosts/ListScheduledByCreated", request.toApiJson(), this.apiOptions())
|
|
3628
|
-
.pipe(map((/**
|
|
3629
|
-
* @param {?} resp
|
|
3630
|
-
* @return {?}
|
|
3631
|
-
*/
|
|
3632
|
-
function (resp) { return PartnerListScheduledPostsResponse.fromProto(resp); })), share());
|
|
3633
|
-
};
|
|
3634
|
-
PartnerSocialPostsApiService.decorators = [
|
|
3635
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
3636
|
-
];
|
|
3637
|
-
/** @nocollapse */
|
|
3638
|
-
PartnerSocialPostsApiService.ctorParameters = function () { return [
|
|
3639
|
-
{ type: HttpClient },
|
|
3640
|
-
{ type: HostService }
|
|
3641
|
-
]; };
|
|
3642
|
-
/** @nocollapse */ PartnerSocialPostsApiService.ngInjectableDef = ɵɵdefineInjectable({ factory: function PartnerSocialPostsApiService_Factory() { return new PartnerSocialPostsApiService(ɵɵinject(HttpClient), ɵɵinject(HostService)); }, token: PartnerSocialPostsApiService, providedIn: "root" });
|
|
3643
|
-
return PartnerSocialPostsApiService;
|
|
3644
|
-
}());
|
|
3645
|
-
|
|
3646
|
-
/**
|
|
3647
|
-
* @fileoverview added by tsickle
|
|
3648
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3649
|
-
*/
|
|
3650
|
-
|
|
3651
|
-
/**
|
|
3652
|
-
* @fileoverview added by tsickle
|
|
3653
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3654
|
-
*/
|
|
3655
|
-
|
|
3656
|
-
/**
|
|
3657
|
-
* @fileoverview added by tsickle
|
|
3658
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3659
|
-
*/
|
|
3660
|
-
|
|
3661
|
-
/**
|
|
3662
|
-
* @fileoverview added by tsickle
|
|
3663
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
3664
|
-
*/
|
|
3665
|
-
|
|
3666
|
-
export { SocialPostsService, PostTemplatesService, MultilocationPostsService, FieldMask, Location, MultilocationPost, PostingStatus, RemoveReason, MultilocationPostApiService, GetMultilocationPostRequest, DeleteMultilocationPostRequest, ListMultilocationPostsForBrandRequest, HostService as ɵb, MultilocationPostApiService as ɵd, PostTemplatesApiService as ɵc, SocialPostsApiService as ɵa };
|
|
3667
|
-
|
|
3668
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZGFzdGEtc29jaWFsLXBvc3RzLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9AdmVuZGFzdGEvc29jaWFsLXBvc3RzL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9maWVsZC1tYXNrLnRzIiwibmc6Ly9AdmVuZGFzdGEvc29jaWFsLXBvc3RzL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9tdWx0aWxvY2F0aW9uLXBvc3QudHMiLCJuZzovL0B2ZW5kYXN0YS9zb2NpYWwtcG9zdHMvbGliL19pbnRlcm5hbC9vYmplY3RzL3Bvc3QtdGVtcGxhdGVzLnRzIiwibmc6Ly9AdmVuZGFzdGEvc29jaWFsLXBvc3RzL2xpYi9faW50ZXJuYWwvZW51bXMvc29jaWFsLXBvc3RzLmVudW0udHMiLCJuZzovL0B2ZW5kYXN0YS9zb2NpYWwtcG9zdHMvbGliL19pbnRlcm5hbC9lbnVtcy9tdWx0aWxvY2F0aW9uLXBvc3QuZW51bS50cyIsIm5nOi8vQHZlbmRhc3RhL3NvY2lhbC1wb3N0cy9saWIvX2ludGVybmFsL29iamVjdHMvc29jaWFsLXBvc3RzLnRzIiwibmc6Ly9AdmVuZGFzdGEvc29jaWFsLXBvc3RzL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9zb2NpYWwtcG9zdC1zdGF0cy50cyIsIm5nOi8vQHZlbmRhc3RhL3NvY2lhbC1wb3N0cy9saWIvX2ludGVybmFsL29iamVjdHMvYXBpLnRzIiwibmc6Ly9AdmVuZGFzdGEvc29jaWFsLXBvc3RzL2xpYi9fZ2VuZXJhdGVkL2hvc3Quc2VydmljZS50cyIsIm5nOi8vQHZlbmRhc3RhL3NvY2lhbC1wb3N0cy9saWIvX2ludGVybmFsL3NvY2lhbC1wb3N0cy5hcGkuc2VydmljZS50cyIsIm5nOi8vQHZlbmRhc3RhL3NvY2lhbC1wb3N0cy9saWIvc29jaWFsLXBvc3RzLnNlcnZpY2UudHMiLCJuZzovL0B2ZW5kYXN0YS9zb2NpYWwtcG9zdHMvbGliL19pbnRlcm5hbC9wb3N0LXRlbXBsYXRlcy5hcGkuc2VydmljZS50cyIsIm5nOi8vQHZlbmRhc3RhL3NvY2lhbC1wb3N0cy9saWIvcG9zdC10ZW1wbGF0ZXMuc2VydmljZS50cyIsIm5nOi8vQHZlbmRhc3RhL3NvY2lhbC1wb3N0cy9saWIvX2ludGVybmFsL211bHRpbG9jYXRpb24tcG9zdC5hcGkuc2VydmljZS50cyIsIm5nOi8vQHZlbmRhc3RhL3NvY2lhbC1wb3N0cy9saWIvbXVsdGlsb2NhdGlvbi1wb3N0cy5zZXJ2aWNlLnRzIiwibmc6Ly9AdmVuZGFzdGEvc29jaWFsLXBvc3RzL2xpYi9faW50ZXJuYWwvcGFydG5lci1zb2NpYWwtcG9zdHMuYXBpLnNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZE1hc2sgaW1wbGVtZW50cyBpLkZpZWxkTWFza0ludGVyZmFjZSB7XG4gICAgcGF0aHM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRmllbGRNYXNrIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRmllbGRNYXNrKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5GaWVsZE1hc2tJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXRocyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGF0aHMnXSA9IHRoaXMucGF0aHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iLCIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIExvY2F0aW9uIGltcGxlbWVudHMgaS5Mb2NhdGlvbkludGVyZmFjZSB7XG4gICAgc29jaWFsU2VydmljZUlkczogc3RyaW5nW107XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExvY2F0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTG9jYXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxvY2F0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsU2VydmljZUlkcyddID0gdGhpcy5zb2NpYWxTZXJ2aWNlSWRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNdWx0aWxvY2F0aW9uUG9zdCBpbXBsZW1lbnRzIGkuTXVsdGlsb2NhdGlvblBvc3RJbnRlcmZhY2Uge1xuICAgIGJyYW5kSWQ6IHN0cmluZztcbiAgICBtdWx0aWxvY2F0aW9uSWQ6IHN0cmluZztcbiAgICBvcmlnaW5hbFRleHQ6IHN0cmluZztcbiAgICBvcmlnaW5hbFNjaGVkdWxlZERhdGU6IERhdGU7XG4gICAgb3JpZ2luYWxNZWRpYTogc3RyaW5nW107XG4gICAgb3JpZ2luYWxMb2NhdGlvbnM6IExvY2F0aW9uW107XG4gICAgZWRpdGVkTG9jYXRpb25zOiBMb2NhdGlvbltdO1xuICAgIGRlbGV0ZWRMb2NhdGlvbnM6IExvY2F0aW9uW107XG4gICAgb3JpZ2luYWxHaWZzOiBzdHJpbmdbXTtcbiAgICBvcmlnaW5hbFZpZGVvczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNdWx0aWxvY2F0aW9uUG9zdCB7XG4gICAgICAgIGxldCBtID0gbmV3IE11bHRpbG9jYXRpb25Qb3N0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZSkge20ub3JpZ2luYWxTY2hlZHVsZWREYXRlID0gbmV3IERhdGUocHJvdG8ub3JpZ2luYWxTY2hlZHVsZWREYXRlKTt9XG4gICAgICAgIGlmIChwcm90by5vcmlnaW5hbExvY2F0aW9ucykge20ub3JpZ2luYWxMb2NhdGlvbnMgPSBwcm90by5vcmlnaW5hbExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5lZGl0ZWRMb2NhdGlvbnMpIHttLmVkaXRlZExvY2F0aW9ucyA9IHByb3RvLmVkaXRlZExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5kZWxldGVkTG9jYXRpb25zKSB7bS5kZWxldGVkTG9jYXRpb25zID0gcHJvdG8uZGVsZXRlZExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTXVsdGlsb2NhdGlvblBvc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5icmFuZElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydicmFuZElkJ10gPSB0aGlzLmJyYW5kSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubXVsdGlsb2NhdGlvbklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtdWx0aWxvY2F0aW9uSWQnXSA9IHRoaXMubXVsdGlsb2NhdGlvbklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbmFsVGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luYWxUZXh0J10gPSB0aGlzLm9yaWdpbmFsVGV4dDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbFNjaGVkdWxlZERhdGUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3JpZ2luYWxTY2hlZHVsZWREYXRlICE9PSBudWxsKSB7dG9SZXR1cm5bJ29yaWdpbmFsU2NoZWR1bGVkRGF0ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5vcmlnaW5hbFNjaGVkdWxlZERhdGUgPyAodGhpcy5vcmlnaW5hbFNjaGVkdWxlZERhdGUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMub3JpZ2luYWxTY2hlZHVsZWREYXRlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbmFsTWVkaWEgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbmFsTWVkaWEnXSA9IHRoaXMub3JpZ2luYWxNZWRpYTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbExvY2F0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5vcmlnaW5hbExvY2F0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydvcmlnaW5hbExvY2F0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5vcmlnaW5hbExvY2F0aW9ucyA/ICh0aGlzLm9yaWdpbmFsTG9jYXRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm9yaWdpbmFsTG9jYXRpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVkaXRlZExvY2F0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5lZGl0ZWRMb2NhdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsnZWRpdGVkTG9jYXRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVkaXRlZExvY2F0aW9ucyA/ICh0aGlzLmVkaXRlZExvY2F0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lZGl0ZWRMb2NhdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVsZXRlZExvY2F0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kZWxldGVkTG9jYXRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ2RlbGV0ZWRMb2NhdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZGVsZXRlZExvY2F0aW9ucyA/ICh0aGlzLmRlbGV0ZWRMb2NhdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZGVsZXRlZExvY2F0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbEdpZnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbmFsR2lmcyddID0gdGhpcy5vcmlnaW5hbEdpZnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxWaWRlb3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbmFsVmlkZW9zJ10gPSB0aGlzLm9yaWdpbmFsVmlkZW9zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE11bHRpbG9jYXRpb25Qb3N0RXJyb3IgaW1wbGVtZW50cyBpLk11bHRpbG9jYXRpb25Qb3N0RXJyb3JJbnRlcmZhY2Uge1xuICAgIHNvY2lhbFNlcnZpY2VJZDogc3RyaW5nO1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG4gICAgZXJyb3JSZWFzb246IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE11bHRpbG9jYXRpb25Qb3N0RXJyb3Ige1xuICAgICAgICBsZXQgbSA9IG5ldyBNdWx0aWxvY2F0aW9uUG9zdEVycm9yKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5NdWx0aWxvY2F0aW9uUG9zdEVycm9ySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlSWQnXSA9IHRoaXMuc29jaWFsU2VydmljZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lcnJvclJlYXNvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXJyb3JSZWFzb24nXSA9IHRoaXMuZXJyb3JSZWFzb247fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iLCIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBvc3RUZW1wbGF0ZSBpbXBsZW1lbnRzIGkuUG9zdFRlbXBsYXRlSW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIHRlbXBsYXRlSWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG4gICAgdXBkYXRlZDogRGF0ZTtcbiAgICBwb3N0VGV4dDogc3RyaW5nO1xuICAgIHBvc3REYXRlVGltZTogRGF0ZTtcbiAgICBnbWJQb3N0Q3VzdG9taXphdGlvbjogc3RyaW5nO1xuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgaW1hZ2VQYXRoOiBzdHJpbmc7XG4gICAgaW1hZ2VTaXplOiBzdHJpbmc7XG4gICAgcHJldmlld3M6IHN0cmluZztcbiAgICBvcHRpb25zOiBzdHJpbmdbXTtcbiAgICB2aWRlb1VybDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUG9zdFRlbXBsYXRlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUG9zdFRlbXBsYXRlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by51cGRhdGVkKSB7bS51cGRhdGVkID0gbmV3IERhdGUocHJvdG8udXBkYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8ucG9zdERhdGVUaW1lKSB7bS5wb3N0RGF0ZVRpbWUgPSBuZXcgRGF0ZShwcm90by5wb3N0RGF0ZVRpbWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Qb3N0VGVtcGxhdGVJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVtcGxhdGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGVtcGxhdGVJZCddID0gdGhpcy50ZW1wbGF0ZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpdGxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aXRsZSddID0gdGhpcy50aXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVkID8gKHRoaXMuY3JlYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVwZGF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudXBkYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWyd1cGRhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnVwZGF0ZWQgPyAodGhpcy51cGRhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnVwZGF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFRleHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bvc3RUZXh0J10gPSB0aGlzLnBvc3RUZXh0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3REYXRlVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb3N0RGF0ZVRpbWUgIT09IG51bGwpIHt0b1JldHVyblsncG9zdERhdGVUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvc3REYXRlVGltZSA/ICh0aGlzLnBvc3REYXRlVGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wb3N0RGF0ZVRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2dtYlBvc3RDdXN0b21pemF0aW9uJ10gPSB0aGlzLmdtYlBvc3RDdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltYWdlVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbWFnZVVybCddID0gdGhpcy5pbWFnZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVBhdGggIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlUGF0aCddID0gdGhpcy5pbWFnZVBhdGg7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VTaXplICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbWFnZVNpemUnXSA9IHRoaXMuaW1hZ2VTaXplO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXZpZXdzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcmV2aWV3cyddID0gdGhpcy5wcmV2aWV3czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcHRpb25zJ10gPSB0aGlzLm9wdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9VcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZpZGVvVXJsJ10gPSB0aGlzLnZpZGVvVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIiwiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBFbnVtcy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5leHBvcnQgZW51bSBDYWxsVG9BY3Rpb25DYWxsVG9BY3Rpb25UeXBlIHtcbiAgICBMRUFSTl9NT1JFID0gMCxcbiAgICBCT09LID0gMSxcbiAgICBPUkRFUiA9IDIsXG4gICAgU0hPUCA9IDMsXG4gICAgU0lHTl9VUCA9IDQsXG4gICAgR0VUX09GRkVSID0gNSxcbiAgICBDQUxMID0gNixcbn1cblxuZXhwb3J0IGVudW0gU29jaWFsUG9zdERlbGV0aW9uU3RhdHVzIHtcbiAgICBOT05FID0gMCxcbiAgICBGQUlMRUQgPSAxLFxuICAgIElOX1BST0dSRVNTID0gMixcbn1cblxuZXhwb3J0IGVudW0gUG9zdGluZ1N0YXR1cyB7XG4gICAgUE9TVElOR19JTl9QUk9HUkVTUyA9IDAsXG4gICAgUE9TVElOR19GQUlMRUQgPSAxLFxuICAgIFBPU1RJTkdfQ09NUExFVEVEID0gMixcbn1cblxuZXhwb3J0IGVudW0gU29jaWFsUG9zdFNlcnZpY2Uge1xuICAgIFRXSVRURVIgPSAwLFxuICAgIEZBQ0VCT09LID0gMSxcbiAgICBMSU5LRURfSU4gPSAyLFxuICAgIEdPT0dMRV9QTFVTID0gMyxcbiAgICBHT09HTEVfTVlfQlVTSU5FU1MgPSA0LFxuICAgIFVOS05PV04gPSA1LFxuICAgIElOU1RBR1JBTSA9IDYsXG59XG4iLCIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIEVudW1zLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbmV4cG9ydCBlbnVtIFJlbW92ZVJlYXNvbiB7XG4gICAgUkVNT1ZFX1JFQVNPTl9FRElUID0gMCxcbiAgICBSRU1PVkVfUkVBU09OX0RFTEVURSA9IDEsXG59XG4iLCIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIENhbGxUb0FjdGlvbiBpbXBsZW1lbnRzIGkuQ2FsbFRvQWN0aW9uSW50ZXJmYWNlIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBhY3Rpb25UeXBlOiBlLkNhbGxUb0FjdGlvbkNhbGxUb0FjdGlvblR5cGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDYWxsVG9BY3Rpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBDYWxsVG9BY3Rpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWN0aW9uVHlwZSkge20uYWN0aW9uVHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQ2FsbFRvQWN0aW9uQ2FsbFRvQWN0aW9uVHlwZT4oZS5DYWxsVG9BY3Rpb25DYWxsVG9BY3Rpb25UeXBlLCBwcm90by5hY3Rpb25UeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ2FsbFRvQWN0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cmwnXSA9IHRoaXMudXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvblR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjdGlvblR5cGUnXSA9IHRoaXMuYWN0aW9uVHlwZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvciBpbXBsZW1lbnRzIGkuRXJyb3JJbnRlcmZhY2Uge1xuICAgIHJlYXNvbjogc3RyaW5nO1xuICAgIGNhdGVnb3J5OiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBFcnJvciB7XG4gICAgICAgIGxldCBtID0gbmV3IEVycm9yKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5FcnJvckludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlYXNvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVhc29uJ10gPSB0aGlzLnJlYXNvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYXRlZ29yeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2F0ZWdvcnknXSA9IHRoaXMuY2F0ZWdvcnk7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXZlbnQgaW1wbGVtZW50cyBpLkV2ZW50SW50ZXJmYWNlIHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN0YXJ0RGF0ZXRpbWU6IERhdGU7XG4gICAgZW5kRGF0ZXRpbWU6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBFdmVudCB7XG4gICAgICAgIGxldCBtID0gbmV3IEV2ZW50KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0RGF0ZXRpbWUpIHttLnN0YXJ0RGF0ZXRpbWUgPSBuZXcgRGF0ZShwcm90by5zdGFydERhdGV0aW1lKTt9XG4gICAgICAgIGlmIChwcm90by5lbmREYXRldGltZSkge20uZW5kRGF0ZXRpbWUgPSBuZXcgRGF0ZShwcm90by5lbmREYXRldGltZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkV2ZW50SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpdGxlJ10gPSB0aGlzLnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0RGF0ZXRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnREYXRldGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydzdGFydERhdGV0aW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0RGF0ZXRpbWUgPyAodGhpcy5zdGFydERhdGV0aW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN0YXJ0RGF0ZXRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW5kRGF0ZXRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kRGF0ZXRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnZW5kRGF0ZXRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZW5kRGF0ZXRpbWUgPyAodGhpcy5lbmREYXRldGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lbmREYXRldGltZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlZHVsZVBvc3RTdGF0dXMgaW1wbGVtZW50cyBpLlNjaGVkdWxlUG9zdFN0YXR1c0ludGVyZmFjZSB7XG4gICAgc29jaWFsUG9zdElkOiBzdHJpbmc7XG4gICAgc29jaWFsU2VydmljZUlkOiBzdHJpbmc7XG4gICAgc29jaWFsU2VydmljZUxhYmVsOiBzdHJpbmc7XG4gICAgZXJyb3I6IEVycm9yO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2NoZWR1bGVQb3N0U3RhdHVzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2NoZWR1bGVQb3N0U3RhdHVzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmVycm9yKSB7bS5lcnJvciA9IEVycm9yLmZyb21Qcm90byhwcm90by5lcnJvcik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNjaGVkdWxlUG9zdFN0YXR1c0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFBvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsUG9zdElkJ10gPSB0aGlzLnNvY2lhbFBvc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxTZXJ2aWNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFNlcnZpY2VJZCddID0gdGhpcy5zb2NpYWxTZXJ2aWNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUxhYmVsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlTGFiZWwnXSA9IHRoaXMuc29jaWFsU2VydmljZUxhYmVsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVycm9yICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVycm9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Vycm9yJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVycm9yID8gKHRoaXMuZXJyb3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXJyb3I7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU29jaWFsUG9zdCBpbXBsZW1lbnRzIGkuU29jaWFsUG9zdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuICAgIHNvY2lhbFBvc3RJZDogc3RyaW5nO1xuICAgIHBvc3RUZXh0OiBzdHJpbmc7XG4gICAgcG9zdGVkOiBEYXRlO1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgZGVsZXRpb25TdGF0dXM6IGUuU29jaWFsUG9zdERlbGV0aW9uU3RhdHVzO1xuICAgIHNlcnZpY2U6IGUuU29jaWFsUG9zdFNlcnZpY2U7XG4gICAgcGVybWFsaW5rOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogRGF0ZTtcbiAgICBwcm9maWxlVXJsOiBzdHJpbmc7XG4gICAgcHJvZmlsZUltYWdlVXJsOiBzdHJpbmc7XG4gICAgc2NoZWR1bGVkOiBEYXRlO1xuICAgIHN0YXR1czogZS5Qb3N0aW5nU3RhdHVzO1xuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcGFyZW50SWQ6IHN0cmluZztcbiAgICBzb2NpYWxTZXJ2aWNlSWQ6IHN0cmluZztcbiAgICBldmVudDogRXZlbnQ7XG4gICAgY2FsbFRvQWN0aW9uOiBDYWxsVG9BY3Rpb247XG4gICAgdmlkZW9Vcmw6IHN0cmluZztcbiAgICBlcnJvcjogRXJyb3I7XG4gICAgaW1hZ2VVcmxzOiBzdHJpbmdbXTtcbiAgICBsaW5rUHJldmlld0ltYWdlVXJsOiBzdHJpbmc7XG4gICAgYnJhbmRJZDogc3RyaW5nO1xuICAgIG11bHRpbG9jYXRpb25Qb3N0SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNvY2lhbFBvc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBTb2NpYWxQb3N0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBvc3RlZCkge20ucG9zdGVkID0gbmV3IERhdGUocHJvdG8ucG9zdGVkKTt9XG4gICAgICAgIGlmIChwcm90by5kZWxldGlvblN0YXR1cykge20uZGVsZXRpb25TdGF0dXMgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlNvY2lhbFBvc3REZWxldGlvblN0YXR1cz4oZS5Tb2NpYWxQb3N0RGVsZXRpb25TdGF0dXMsIHByb3RvLmRlbGV0aW9uU3RhdHVzKTt9XG4gICAgICAgIGlmIChwcm90by5zZXJ2aWNlKSB7bS5zZXJ2aWNlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Tb2NpYWxQb3N0U2VydmljZT4oZS5Tb2NpYWxQb3N0U2VydmljZSwgcHJvdG8uc2VydmljZSk7fVxuICAgICAgICBpZiAocHJvdG8uY3JlYXRlZCkge20uY3JlYXRlZCA9IG5ldyBEYXRlKHByb3RvLmNyZWF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnNjaGVkdWxlZCkge20uc2NoZWR1bGVkID0gbmV3IERhdGUocHJvdG8uc2NoZWR1bGVkKTt9XG4gICAgICAgIGlmIChwcm90by5zdGF0dXMpIHttLnN0YXR1cyA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUG9zdGluZ1N0YXR1cz4oZS5Qb3N0aW5nU3RhdHVzLCBwcm90by5zdGF0dXMpO31cbiAgICAgICAgaWYgKHByb3RvLmV2ZW50KSB7bS5ldmVudCA9IEV2ZW50LmZyb21Qcm90byhwcm90by5ldmVudCk7fVxuICAgICAgICBpZiAocHJvdG8uY2FsbFRvQWN0aW9uKSB7bS5jYWxsVG9BY3Rpb24gPSBDYWxsVG9BY3Rpb24uZnJvbVByb3RvKHByb3RvLmNhbGxUb0FjdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8uZXJyb3IpIHttLmVycm9yID0gRXJyb3IuZnJvbVByb3RvKHByb3RvLmVycm9yKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU29jaWFsUG9zdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzSWQnXSA9IHRoaXMuYnVzaW5lc3NJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxQb3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFBvc3RJZCddID0gdGhpcy5zb2NpYWxQb3N0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFRleHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bvc3RUZXh0J10gPSB0aGlzLnBvc3RUZXh0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb3N0ZWQgIT09IG51bGwpIHt0b1JldHVyblsncG9zdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvc3RlZCA/ICh0aGlzLnBvc3RlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wb3N0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNFcnJvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNFcnJvciddID0gdGhpcy5pc0Vycm9yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlbGV0aW9uU3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZWxldGlvblN0YXR1cyddID0gdGhpcy5kZWxldGlvblN0YXR1czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXJ2aWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXJ2aWNlJ10gPSB0aGlzLnNlcnZpY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGVybWFsaW5rICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwZXJtYWxpbmsnXSA9IHRoaXMucGVybWFsaW5rO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvZmlsZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJvZmlsZVVybCddID0gdGhpcy5wcm9maWxlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb2ZpbGVJbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJvZmlsZUltYWdlVXJsJ10gPSB0aGlzLnByb2ZpbGVJbWFnZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zY2hlZHVsZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc2NoZWR1bGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NjaGVkdWxlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zY2hlZHVsZWQgPyAodGhpcy5zY2hlZHVsZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc2NoZWR1bGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RhdHVzJ10gPSB0aGlzLnN0YXR1czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW1hZ2VVcmwnXSA9IHRoaXMuaW1hZ2VVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJuYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VybmFtZSddID0gdGhpcy51c2VybmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJlbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFyZW50SWQnXSA9IHRoaXMucGFyZW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlSWQnXSA9IHRoaXMuc29jaWFsU2VydmljZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmV2ZW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2V2ZW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmV2ZW50ID8gKHRoaXMuZXZlbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXZlbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsbFRvQWN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNhbGxUb0FjdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydjYWxsVG9BY3Rpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY2FsbFRvQWN0aW9uID8gKHRoaXMuY2FsbFRvQWN0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNhbGxUb0FjdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmlkZW9VcmwnXSA9IHRoaXMudmlkZW9Vcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXJyb3IgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZXJyb3IgIT09IG51bGwpIHt0b1JldHVyblsnZXJyb3InXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXJyb3IgPyAodGhpcy5lcnJvciBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lcnJvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVVybHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlVXJscyddID0gdGhpcy5pbWFnZVVybHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlua1ByZXZpZXdJbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlua1ByZXZpZXdJbWFnZVVybCddID0gdGhpcy5saW5rUHJldmlld0ltYWdlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyYW5kSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JyYW5kSWQnXSA9IHRoaXMuYnJhbmRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uUG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtdWx0aWxvY2F0aW9uUG9zdElkJ10gPSB0aGlzLm11bHRpbG9jYXRpb25Qb3N0SWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU29jaWFsUG9zdERhdGEgaW1wbGVtZW50cyBpLlNvY2lhbFBvc3REYXRhSW50ZXJmYWNlIHtcbiAgICBwb3N0VGV4dDogc3RyaW5nO1xuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgc2NoZWR1bGVGb3I6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb2NpYWxQb3N0RGF0YSB7XG4gICAgICAgIGxldCBtID0gbmV3IFNvY2lhbFBvc3REYXRhKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnNjaGVkdWxlRm9yKSB7bS5zY2hlZHVsZUZvciA9IG5ldyBEYXRlKHByb3RvLnNjaGVkdWxlRm9yKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU29jaWFsUG9zdERhdGFJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0VGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9zdFRleHQnXSA9IHRoaXMucG9zdFRleHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlVXJsJ10gPSB0aGlzLmltYWdlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjaGVkdWxlRm9yICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNjaGVkdWxlRm9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NjaGVkdWxlRm9yJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNjaGVkdWxlRm9yID8gKHRoaXMuc2NoZWR1bGVGb3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc2NoZWR1bGVGb3I7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iLCIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZhY2Vib29rUG9zdFN0YXRzIGltcGxlbWVudHMgaS5GYWNlYm9va1Bvc3RTdGF0c0ludGVyZmFjZSB7XG4gICAgY29tbWVudENvdW50OiBudW1iZXI7XG4gICAgc2hhcmVDb3VudDogbnVtYmVyO1xuICAgIGxpa2VDb3VudDogbnVtYmVyO1xuICAgIGhhc0xpa2U6IGJvb2xlYW47XG4gICAgY2FuTGlrZTogYm9vbGVhbjtcbiAgICByZWFjdGlvbnM6IG51bWJlcjtcbiAgICBwZW9wbGVSZWFjaGVkOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBGYWNlYm9va1Bvc3RTdGF0cyB7XG4gICAgICAgIGxldCBtID0gbmV3IEZhY2Vib29rUG9zdFN0YXRzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbW1lbnRDb3VudCkge20uY29tbWVudENvdW50ID0gcGFyc2VJbnQocHJvdG8uY29tbWVudENvdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc2hhcmVDb3VudCkge20uc2hhcmVDb3VudCA9IHBhcnNlSW50KHByb3RvLnNoYXJlQ291bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5saWtlQ291bnQpIHttLmxpa2VDb3VudCA9IHBhcnNlSW50KHByb3RvLmxpa2VDb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnJlYWN0aW9ucykge20ucmVhY3Rpb25zID0gcGFyc2VJbnQocHJvdG8ucmVhY3Rpb25zLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ucGVvcGxlUmVhY2hlZCkge20ucGVvcGxlUmVhY2hlZCA9IHBhcnNlSW50KHByb3RvLnBlb3BsZVJlYWNoZWQsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRmFjZWJvb2tQb3N0U3RhdHNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50Q291bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbW1lbnRDb3VudCddID0gdGhpcy5jb21tZW50Q291bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2hhcmVDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2hhcmVDb3VudCddID0gdGhpcy5zaGFyZUNvdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpa2VDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlrZUNvdW50J10gPSB0aGlzLmxpa2VDb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNMaWtlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNMaWtlJ10gPSB0aGlzLmhhc0xpa2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FuTGlrZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FuTGlrZSddID0gdGhpcy5jYW5MaWtlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlYWN0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVhY3Rpb25zJ10gPSB0aGlzLnJlYWN0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wZW9wbGVSZWFjaGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwZW9wbGVSZWFjaGVkJ10gPSB0aGlzLnBlb3BsZVJlYWNoZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU29jaWFsUG9zdFN0YXRzIGltcGxlbWVudHMgaS5Tb2NpYWxQb3N0U3RhdHNJbnRlcmZhY2Uge1xuICAgIGludGVybmFsUG9zdElkOiBzdHJpbmc7XG4gICAgZmFjZWJvb2tQb3N0U3RhdHM6IEZhY2Vib29rUG9zdFN0YXRzO1xuICAgIHR3aXR0ZXJQb3N0U3RhdHM6IFR3aXR0ZXJQb3N0U3RhdHM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb2NpYWxQb3N0U3RhdHMge1xuICAgICAgICBsZXQgbSA9IG5ldyBTb2NpYWxQb3N0U3RhdHMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZmFjZWJvb2tQb3N0U3RhdHMpIHttLmZhY2Vib29rUG9zdFN0YXRzID0gRmFjZWJvb2tQb3N0U3RhdHMuZnJvbVByb3RvKHByb3RvLmZhY2Vib29rUG9zdFN0YXRzKTt9XG4gICAgICAgIGlmIChwcm90by50d2l0dGVyUG9zdFN0YXRzKSB7bS50d2l0dGVyUG9zdFN0YXRzID0gVHdpdHRlclBvc3RTdGF0cy5mcm9tUHJvdG8ocHJvdG8udHdpdHRlclBvc3RTdGF0cyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNvY2lhbFBvc3RTdGF0c0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmludGVybmFsUG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbnRlcm5hbFBvc3RJZCddID0gdGhpcy5pbnRlcm5hbFBvc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYWNlYm9va1Bvc3RTdGF0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5mYWNlYm9va1Bvc3RTdGF0cyAhPT0gbnVsbCkge3RvUmV0dXJuWydmYWNlYm9va1Bvc3RTdGF0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5mYWNlYm9va1Bvc3RTdGF0cyA/ICh0aGlzLmZhY2Vib29rUG9zdFN0YXRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZhY2Vib29rUG9zdFN0YXRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR3aXR0ZXJQb3N0U3RhdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudHdpdHRlclBvc3RTdGF0cyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0d2l0dGVyUG9zdFN0YXRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnR3aXR0ZXJQb3N0U3RhdHMgPyAodGhpcy50d2l0dGVyUG9zdFN0YXRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnR3aXR0ZXJQb3N0U3RhdHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHdpdHRlclBvc3RTdGF0cyBpbXBsZW1lbnRzIGkuVHdpdHRlclBvc3RTdGF0c0ludGVyZmFjZSB7XG4gICAgZmF2b3VyaXRlczogbnVtYmVyO1xuICAgIGhhc0Zhdm91cml0ZWQ6IGJvb2xlYW47XG4gICAgcmV0d2VldHM6IG51bWJlcjtcbiAgICBoYXNSZXR3ZWV0ZWQ6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUd2l0dGVyUG9zdFN0YXRzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVHdpdHRlclBvc3RTdGF0cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5mYXZvdXJpdGVzKSB7bS5mYXZvdXJpdGVzID0gcGFyc2VJbnQocHJvdG8uZmF2b3VyaXRlcywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnJldHdlZXRzKSB7bS5yZXR3ZWV0cyA9IHBhcnNlSW50KHByb3RvLnJldHdlZXRzLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlR3aXR0ZXJQb3N0U3RhdHNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYXZvdXJpdGVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmYXZvdXJpdGVzJ10gPSB0aGlzLmZhdm91cml0ZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGFzRmF2b3VyaXRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaGFzRmF2b3VyaXRlZCddID0gdGhpcy5oYXNGYXZvdXJpdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldHdlZXRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXR3ZWV0cyddID0gdGhpcy5yZXR3ZWV0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNSZXR3ZWV0ZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hhc1JldHdlZXRlZCddID0gdGhpcy5oYXNSZXR3ZWV0ZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iLCIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGaWVsZE1hc2sgfSBmcm9tICcuL2ZpZWxkLW1hc2snO1xuaW1wb3J0IHsgTG9jYXRpb24sIE11bHRpbG9jYXRpb25Qb3N0LCBNdWx0aWxvY2F0aW9uUG9zdEVycm9yIH0gZnJvbSAnLi9tdWx0aWxvY2F0aW9uLXBvc3QnO1xuaW1wb3J0IHsgUG9zdFRlbXBsYXRlIH0gZnJvbSAnLi9wb3N0LXRlbXBsYXRlcyc7XG5pbXBvcnQgeyBTb2NpYWxQb3N0LCBTb2NpYWxQb3N0RGF0YSwgU2NoZWR1bGVQb3N0U3RhdHVzIH0gZnJvbSAnLi9zb2NpYWwtcG9zdHMnO1xuaW1wb3J0IHsgU29jaWFsUG9zdFN0YXRzIH0gZnJvbSAnLi9zb2NpYWwtcG9zdC1zdGF0cyc7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QgaW1wbGVtZW50cyBpLkNyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnJhbmRJZDogc3RyaW5nO1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBtZWRpYTogc3RyaW5nW107XG4gICAgc2NoZWR1bGVkRGF0ZTogRGF0ZTtcbiAgICBsb2NhdGlvbnM6IExvY2F0aW9uW107XG4gICAgZ2lmczogc3RyaW5nW107XG4gICAgdmlkZW9zOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zY2hlZHVsZWREYXRlKSB7bS5zY2hlZHVsZWREYXRlID0gbmV3IERhdGUocHJvdG8uc2NoZWR1bGVkRGF0ZSk7fVxuICAgICAgICBpZiAocHJvdG8ubG9jYXRpb25zKSB7bS5sb2NhdGlvbnMgPSBwcm90by5sb2NhdGlvbnMubWFwKExvY2F0aW9uLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyYW5kSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JyYW5kSWQnXSA9IHRoaXMuYnJhbmRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50ZXh0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0ZXh0J10gPSB0aGlzLnRleHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaWEgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZGlhJ10gPSB0aGlzLm1lZGlhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjaGVkdWxlZERhdGUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc2NoZWR1bGVkRGF0ZSAhPT0gbnVsbCkge3RvUmV0dXJuWydzY2hlZHVsZWREYXRlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNjaGVkdWxlZERhdGUgPyAodGhpcy5zY2hlZHVsZWREYXRlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNjaGVkdWxlZERhdGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxvY2F0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydsb2NhdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubG9jYXRpb25zID8gKHRoaXMubG9jYXRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxvY2F0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5naWZzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydnaWZzJ10gPSB0aGlzLmdpZnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aWRlb3MnXSA9IHRoaXMudmlkZW9zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UgaW1wbGVtZW50cyBpLkNyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHBvc3Q6IE11bHRpbG9jYXRpb25Qb3N0O1xuICAgIGVycm9yczogTXVsdGlsb2NhdGlvblBvc3RFcnJvcltdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucG9zdCkge20ucG9zdCA9IE11bHRpbG9jYXRpb25Qb3N0LmZyb21Qcm90byhwcm90by5wb3N0KTt9XG4gICAgICAgIGlmIChwcm90by5lcnJvcnMpIHttLmVycm9ycyA9IHByb3RvLmVycm9ycy5tYXAoTXVsdGlsb2NhdGlvblBvc3RFcnJvci5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb3N0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Bvc3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucG9zdCA/ICh0aGlzLnBvc3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9zdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lcnJvcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZXJyb3JzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Vycm9ycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lcnJvcnMgPyAodGhpcy5lcnJvcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXJyb3JzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QgaW1wbGVtZW50cyBpLkNyZWF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBwb3N0VGV4dDogc3RyaW5nO1xuICAgIHBvc3REYXRlVGltZTogRGF0ZTtcbiAgICBnbWJQb3N0Q3VzdG9taXphdGlvbjogc3RyaW5nO1xuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgaW1hZ2VQYXRoOiBzdHJpbmc7XG4gICAgaW1hZ2VTaXplOiBzdHJpbmc7XG4gICAgcHJldmlld3M6IHN0cmluZztcbiAgICBvcHRpb25zOiBzdHJpbmdbXTtcbiAgICB2aWRlb1VybDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ3JlYXRlUG9zdFRlbXBsYXRlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucG9zdERhdGVUaW1lKSB7bS5wb3N0RGF0ZVRpbWUgPSBuZXcgRGF0ZShwcm90by5wb3N0RGF0ZVRpbWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpdGxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aXRsZSddID0gdGhpcy50aXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0VGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9zdFRleHQnXSA9IHRoaXMucG9zdFRleHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdERhdGVUaW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBvc3REYXRlVGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydwb3N0RGF0ZVRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucG9zdERhdGVUaW1lID8gKHRoaXMucG9zdERhdGVUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBvc3REYXRlVGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5nbWJQb3N0Q3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZ21iUG9zdEN1c3RvbWl6YXRpb24nXSA9IHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlVXJsJ10gPSB0aGlzLmltYWdlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltYWdlUGF0aCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW1hZ2VQYXRoJ10gPSB0aGlzLmltYWdlUGF0aDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVNpemUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlU2l6ZSddID0gdGhpcy5pbWFnZVNpemU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJldmlld3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ByZXZpZXdzJ10gPSB0aGlzLnByZXZpZXdzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29wdGlvbnMnXSA9IHRoaXMub3B0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmlkZW9VcmwnXSA9IHRoaXMudmlkZW9Vcmw7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlUG9zdFRlbXBsYXRlUmVzcG9uc2UgaW1wbGVtZW50cyBpLkNyZWF0ZVBvc3RUZW1wbGF0ZVJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDcmVhdGVQb3N0VGVtcGxhdGVSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZVBvc3RUZW1wbGF0ZVJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVQb3N0VGVtcGxhdGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlbXBsYXRlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RlbXBsYXRlSWQnXSA9IHRoaXMudGVtcGxhdGVJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VGaWx0ZXIgaW1wbGVtZW50cyBpLkRhdGVSYW5nZUZpbHRlckludGVyZmFjZSB7XG4gICAgYmVnaW5SYW5nZTogRGF0ZTtcbiAgICBlbmRSYW5nZTogRGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IERhdGVSYW5nZUZpbHRlciB7XG4gICAgICAgIGxldCBtID0gbmV3IERhdGVSYW5nZUZpbHRlcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5iZWdpblJhbmdlKSB7bS5iZWdpblJhbmdlID0gbmV3IERhdGUocHJvdG8uYmVnaW5SYW5nZSk7fVxuICAgICAgICBpZiAocHJvdG8uZW5kUmFuZ2UpIHttLmVuZFJhbmdlID0gbmV3IERhdGUocHJvdG8uZW5kUmFuZ2UpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5EYXRlUmFuZ2VGaWx0ZXJJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5iZWdpblJhbmdlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmJlZ2luUmFuZ2UgIT09IG51bGwpIHt0b1JldHVyblsnYmVnaW5SYW5nZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5iZWdpblJhbmdlID8gKHRoaXMuYmVnaW5SYW5nZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5iZWdpblJhbmdlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVuZFJhbmdlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVuZFJhbmdlICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZFJhbmdlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVuZFJhbmdlID8gKHRoaXMuZW5kUmFuZ2UgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kUmFuZ2U7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVsZXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0IGltcGxlbWVudHMgaS5EZWxldGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJyYW5kSWQ6IHN0cmluZztcbiAgICBtdWx0aWxvY2F0aW9uSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IERlbGV0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IERlbGV0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRGVsZXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnJhbmRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnJhbmRJZCddID0gdGhpcy5icmFuZElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm11bHRpbG9jYXRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbXVsdGlsb2NhdGlvbklkJ10gPSB0aGlzLm11bHRpbG9jYXRpb25JZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0IGltcGxlbWVudHMgaS5EZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIHRlbXBsYXRlSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IERlbGV0ZVBvc3RUZW1wbGF0ZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBEZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5EZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlbXBsYXRlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RlbXBsYXRlSWQnXSA9IHRoaXMudGVtcGxhdGVJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVTb2NpYWxQb3N0UmVxdWVzdCBpbXBsZW1lbnRzIGkuRGVsZXRlU29jaWFsUG9zdFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcbiAgICBzb2NpYWxQb3N0SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IERlbGV0ZVNvY2lhbFBvc3RSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRGVsZXRlU29jaWFsUG9zdFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkRlbGV0ZVNvY2lhbFBvc3RSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFBvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsUG9zdElkJ10gPSB0aGlzLnNvY2lhbFBvc3RJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0IGltcGxlbWVudHMgaS5FZGl0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBicmFuZElkOiBzdHJpbmc7XG4gICAgbXVsdGlsb2NhdGlvbklkOiBzdHJpbmc7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIG1lZGlhOiBzdHJpbmdbXTtcbiAgICBzY2hlZHVsZWREYXRlOiBEYXRlO1xuICAgIGZpZWxkTWFzazogRmllbGRNYXNrO1xuICAgIGdpZnM6IHN0cmluZ1tdO1xuICAgIHZpZGVvczogc3RyaW5nW107XG4gICAgbG9jYXRpb25zOiBMb2NhdGlvbltdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRWRpdE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc2NoZWR1bGVkRGF0ZSkge20uc2NoZWR1bGVkRGF0ZSA9IG5ldyBEYXRlKHByb3RvLnNjaGVkdWxlZERhdGUpO31cbiAgICAgICAgaWYgKHByb3RvLmZpZWxkTWFzaykge20uZmllbGRNYXNrID0gRmllbGRNYXNrLmZyb21Qcm90byhwcm90by5maWVsZE1hc2spO31cbiAgICAgICAgaWYgKHByb3RvLmxvY2F0aW9ucykge20ubG9jYXRpb25zID0gcHJvdG8ubG9jYXRpb25zLm1hcChMb2NhdGlvbi5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5FZGl0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnJhbmRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnJhbmRJZCddID0gdGhpcy5icmFuZElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm11bHRpbG9jYXRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbXVsdGlsb2NhdGlvbklkJ10gPSB0aGlzLm11bHRpbG9jYXRpb25JZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50ZXh0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0ZXh0J10gPSB0aGlzLnRleHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaWEgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZGlhJ10gPSB0aGlzLm1lZGlhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjaGVkdWxlZERhdGUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc2NoZWR1bGVkRGF0ZSAhPT0gbnVsbCkge3RvUmV0dXJuWydzY2hlZHVsZWREYXRlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNjaGVkdWxlZERhdGUgPyAodGhpcy5zY2hlZHVsZWREYXRlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNjaGVkdWxlZERhdGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmllbGRNYXNrICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZpZWxkTWFzayAhPT0gbnVsbCkge3RvUmV0dXJuWydmaWVsZE1hc2snXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZmllbGRNYXNrID8gKHRoaXMuZmllbGRNYXNrIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZpZWxkTWFzazt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5naWZzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydnaWZzJ10gPSB0aGlzLmdpZnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aWRlb3MnXSA9IHRoaXMudmlkZW9zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5sb2NhdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsnbG9jYXRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmxvY2F0aW9ucyA/ICh0aGlzLmxvY2F0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5sb2NhdGlvbnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRWRpdE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UgaW1wbGVtZW50cyBpLkVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBwb3N0OiBNdWx0aWxvY2F0aW9uUG9zdDtcbiAgICBlcnJvcnM6IE11bHRpbG9jYXRpb25Qb3N0RXJyb3JbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRWRpdE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucG9zdCkge20ucG9zdCA9IE11bHRpbG9jYXRpb25Qb3N0LmZyb21Qcm90byhwcm90by5wb3N0KTt9XG4gICAgICAgIGlmIChwcm90by5lcnJvcnMpIHttLmVycm9ycyA9IHByb3RvLmVycm9ycy5tYXAoTXVsdGlsb2NhdGlvblBvc3RFcnJvci5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5FZGl0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3QgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9zdCAhPT0gbnVsbCkge3RvUmV0dXJuWydwb3N0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvc3QgPyAodGhpcy5wb3N0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBvc3Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXJyb3JzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVycm9ycyAhPT0gbnVsbCkge3RvUmV0dXJuWydlcnJvcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXJyb3JzID8gKHRoaXMuZXJyb3JzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVycm9yczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEZpbHRlcnMgaW1wbGVtZW50cyBpLlBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSB7XG4gICAgZGF0ZVJhbmdlOiBEYXRlUmFuZ2VGaWx0ZXI7XG4gICAgcGFydG5lcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEZpbHRlcnMge1xuICAgICAgICBsZXQgbSA9IG5ldyBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEZpbHRlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZGF0ZVJhbmdlKSB7bS5kYXRlUmFuZ2UgPSBEYXRlUmFuZ2VGaWx0ZXIuZnJvbVByb3RvKHByb3RvLmRhdGVSYW5nZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGVSYW5nZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kYXRlUmFuZ2UgIT09IG51bGwpIHt0b1JldHVyblsnZGF0ZVJhbmdlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmRhdGVSYW5nZSA/ICh0aGlzLmRhdGVSYW5nZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kYXRlUmFuZ2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBpbnRlcm5hbFBvc3RJZHM6IHN0cmluZ1tdO1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW50ZXJuYWxQb3N0SWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbnRlcm5hbFBvc3RJZHMnXSA9IHRoaXMuaW50ZXJuYWxQb3N0SWRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzSWQnXSA9IHRoaXMuYnVzaW5lc3NJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgc29jaWFsUG9zdFN0YXRzOiBTb2NpYWxQb3N0U3RhdHNbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnNvY2lhbFBvc3RTdGF0cykge20uc29jaWFsUG9zdFN0YXRzID0gcHJvdG8uc29jaWFsUG9zdFN0YXRzLm1hcChTb2NpYWxQb3N0U3RhdHMuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFBvc3RTdGF0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zb2NpYWxQb3N0U3RhdHMgIT09IG51bGwpIHt0b1JldHVyblsnc29jaWFsUG9zdFN0YXRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNvY2lhbFBvc3RTdGF0cyA/ICh0aGlzLnNvY2lhbFBvc3RTdGF0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zb2NpYWxQb3N0U3RhdHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3QgaW1wbGVtZW50cyBpLkdldE11bHRpU29jaWFsUG9zdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBidXNpbmVzc0lkOiBzdHJpbmc7XG4gICAgaW50ZXJuYWxQb3N0SWRzOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpU29jaWFsUG9zdHNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE11bHRpU29jaWFsUG9zdHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmludGVybmFsUG9zdElkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW50ZXJuYWxQb3N0SWRzJ10gPSB0aGlzLmludGVybmFsUG9zdElkczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNdWx0aVNvY2lhbFBvc3RzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldE11bHRpU29jaWFsUG9zdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgc29jaWFsUG9zdHM6IFNvY2lhbFBvc3RbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpU29jaWFsUG9zdHNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE11bHRpU29jaWFsUG9zdHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zb2NpYWxQb3N0cykge20uc29jaWFsUG9zdHMgPSBwcm90by5zb2NpYWxQb3N0cy5tYXAoU29jaWFsUG9zdC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRNdWx0aVNvY2lhbFBvc3RzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxQb3N0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zb2NpYWxQb3N0cyAhPT0gbnVsbCkge3RvUmV0dXJuWydzb2NpYWxQb3N0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zb2NpYWxQb3N0cyA/ICh0aGlzLnNvY2lhbFBvc3RzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNvY2lhbFBvc3RzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBicmFuZElkOiBzdHJpbmc7XG4gICAgbXVsdGlsb2NhdGlvbklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyYW5kSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JyYW5kSWQnXSA9IHRoaXMuYnJhbmRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ211bHRpbG9jYXRpb25JZCddID0gdGhpcy5tdWx0aWxvY2F0aW9uSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZUludGVyZmFjZSB7XG4gICAgbXVsdGlsb2NhdGlvblBvc3Q6IE11bHRpbG9jYXRpb25Qb3N0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubXVsdGlsb2NhdGlvblBvc3QpIHttLm11bHRpbG9jYXRpb25Qb3N0ID0gTXVsdGlsb2NhdGlvblBvc3QuZnJvbVByb3RvKHByb3RvLm11bHRpbG9jYXRpb25Qb3N0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm11bHRpbG9jYXRpb25Qb3N0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm11bHRpbG9jYXRpb25Qb3N0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ211bHRpbG9jYXRpb25Qb3N0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm11bHRpbG9jYXRpb25Qb3N0ID8gKHRoaXMubXVsdGlsb2NhdGlvblBvc3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubXVsdGlsb2NhdGlvblBvc3Q7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0UG9zdFRlbXBsYXRlUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0UG9zdFRlbXBsYXRlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRQb3N0VGVtcGxhdGVSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0UG9zdFRlbXBsYXRlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0UG9zdFRlbXBsYXRlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50ZW1wbGF0ZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0ZW1wbGF0ZUlkJ10gPSB0aGlzLnRlbXBsYXRlSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0UG9zdFRlbXBsYXRlUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBwb3N0VGVtcGxhdGU6IFBvc3RUZW1wbGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0UG9zdFRlbXBsYXRlUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucG9zdFRlbXBsYXRlKSB7bS5wb3N0VGVtcGxhdGUgPSBQb3N0VGVtcGxhdGUuZnJvbVByb3RvKHByb3RvLnBvc3RUZW1wbGF0ZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFRlbXBsYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBvc3RUZW1wbGF0ZSAhPT0gbnVsbCkge3RvUmV0dXJuWydwb3N0VGVtcGxhdGUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucG9zdFRlbXBsYXRlID8gKHRoaXMucG9zdFRlbXBsYXRlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBvc3RUZW1wbGF0ZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICBidXNpbmVzc0lkOiBzdHJpbmc7XG4gICAgc29jaWFsU2VydmljZUlkczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0U2NoZWR1bGVkUG9zdENvdW50UmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0U2NoZWR1bGVkUG9zdENvdW50UmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsU2VydmljZUlkcyddID0gdGhpcy5zb2NpYWxTZXJ2aWNlSWRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFNjaGVkdWxlZFBvc3RDb3VudFJlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRTY2hlZHVsZWRQb3N0Q291bnRSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY291bnQ6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFNjaGVkdWxlZFBvc3RDb3VudFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0U2NoZWR1bGVkUG9zdENvdW50UmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY291bnQpIHttLmNvdW50ID0gcGFyc2VJbnQocHJvdG8uY291bnQsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0U2NoZWR1bGVkUG9zdENvdW50UmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY291bnQnXSA9IHRoaXMuY291bnQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnJhbmRJZDogc3RyaW5nO1xuICAgIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgICBlbmREYXRlOiBEYXRlO1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdGFydERhdGUpIHttLnN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHByb3RvLnN0YXJ0RGF0ZSk7fVxuICAgICAgICBpZiAocHJvdG8uZW5kRGF0ZSkge20uZW5kRGF0ZSA9IG5ldyBEYXRlKHByb3RvLmVuZERhdGUpO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2VTaXplKSB7bS5wYWdlU2l6ZSA9IHBhcnNlSW50KHByb3RvLnBhZ2VTaXplLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5icmFuZElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydicmFuZElkJ10gPSB0aGlzLmJyYW5kSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnREYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXJ0RGF0ZSAhPT0gbnVsbCkge3RvUmV0dXJuWydzdGFydERhdGUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnREYXRlID8gKHRoaXMuc3RhcnREYXRlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN0YXJ0RGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmREYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVuZERhdGUgIT09IG51bGwpIHt0b1JldHVyblsnZW5kRGF0ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmREYXRlID8gKHRoaXMuZW5kRGF0ZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lbmREYXRlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1cnNvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3Vyc29yJ10gPSB0aGlzLmN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdlU2l6ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFnZVNpemUnXSA9IHRoaXMucGFnZVNpemU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVzcG9uc2UgaW1wbGVtZW50cyBpLkxpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBtdWx0aWxvY2F0aW9uUG9zdHM6IE11bHRpbG9jYXRpb25Qb3N0W107XG4gICAgbmV4dEN1cnNvcjogc3RyaW5nO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG4gICAgZmFpbGVkU29jaWFsUG9zdHM6IFNvY2lhbFBvc3RbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubXVsdGlsb2NhdGlvblBvc3RzKSB7bS5tdWx0aWxvY2F0aW9uUG9zdHMgPSBwcm90by5tdWx0aWxvY2F0aW9uUG9zdHMubWFwKE11bHRpbG9jYXRpb25Qb3N0LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uZmFpbGVkU29jaWFsUG9zdHMpIHttLmZhaWxlZFNvY2lhbFBvc3RzID0gcHJvdG8uZmFpbGVkU29jaWFsUG9zdHMubWFwKFNvY2lhbFBvc3QuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uUG9zdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubXVsdGlsb2NhdGlvblBvc3RzICE9PSBudWxsKSB7dG9SZXR1cm5bJ211bHRpbG9jYXRpb25Qb3N0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tdWx0aWxvY2F0aW9uUG9zdHMgPyAodGhpcy5tdWx0aWxvY2F0aW9uUG9zdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubXVsdGlsb2NhdGlvblBvc3RzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5leHRDdXJzb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25leHRDdXJzb3InXSA9IHRoaXMubmV4dEN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNNb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNNb3JlJ10gPSB0aGlzLmhhc01vcmU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmFpbGVkU29jaWFsUG9zdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZmFpbGVkU29jaWFsUG9zdHMgIT09IG51bGwpIHt0b1JldHVyblsnZmFpbGVkU29jaWFsUG9zdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZmFpbGVkU29jaWFsUG9zdHMgPyAodGhpcy5mYWlsZWRTb2NpYWxQb3N0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5mYWlsZWRTb2NpYWxQb3N0czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0UG9zdFRlbXBsYXRlc1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RQb3N0VGVtcGxhdGVzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcbiAgICBjdXJzb3I6IHN0cmluZztcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBhZ2VTaXplKSB7bS5wYWdlU2l6ZSA9IHBhcnNlSW50KHByb3RvLnBhZ2VTaXplLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RQb3N0VGVtcGxhdGVzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXJzb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1cnNvciddID0gdGhpcy5jdXJzb3I7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnZVNpemUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhZ2VTaXplJ10gPSB0aGlzLnBhZ2VTaXplO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RQb3N0VGVtcGxhdGVzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkxpc3RQb3N0VGVtcGxhdGVzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHBvc3RUZW1wbGF0ZTogUG9zdFRlbXBsYXRlW107XG4gICAgbmV4dEN1cnNvcjogc3RyaW5nO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0UG9zdFRlbXBsYXRlc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFBvc3RUZW1wbGF0ZXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wb3N0VGVtcGxhdGUpIHttLnBvc3RUZW1wbGF0ZSA9IHByb3RvLnBvc3RUZW1wbGF0ZS5tYXAoUG9zdFRlbXBsYXRlLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RQb3N0VGVtcGxhdGVzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0VGVtcGxhdGUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9zdFRlbXBsYXRlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Bvc3RUZW1wbGF0ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wb3N0VGVtcGxhdGUgPyAodGhpcy5wb3N0VGVtcGxhdGUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9zdFRlbXBsYXRlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5leHRDdXJzb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25leHRDdXJzb3InXSA9IHRoaXMubmV4dEN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNNb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNNb3JlJ10gPSB0aGlzLmhhc01vcmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFNvY2lhbFBvc3RzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdFNvY2lhbFBvc3RzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgZW5kOiBEYXRlO1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICBjdXJzb3I6IHN0cmluZztcbiAgICBzb2NpYWxTZXJ2aWNlSWRzOiBzdHJpbmdbXTtcbiAgICB0YWdzOiBzdHJpbmdbXTtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFNvY2lhbFBvc3RzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RTb2NpYWxQb3N0c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gbmV3IERhdGUocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZCkge20uZW5kID0gbmV3IERhdGUocHJvdG8uZW5kKTt9XG4gICAgICAgIGlmIChwcm90by5wYWdlU2l6ZSkge20ucGFnZVNpemUgPSBwYXJzZUludChwcm90by5wYWdlU2l6ZSwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0U29jaWFsUG9zdHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmQgPyAodGhpcy5lbmQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzSWQnXSA9IHRoaXMuYnVzaW5lc3NJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3Vyc29yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJzb3InXSA9IHRoaXMuY3Vyc29yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFNlcnZpY2VJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFNlcnZpY2VJZHMnXSA9IHRoaXMuc29jaWFsU2VydmljZUlkczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YWdzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0YWdzJ10gPSB0aGlzLnRhZ3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnZVNpemUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhZ2VTaXplJ10gPSB0aGlzLnBhZ2VTaXplO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RTb2NpYWxQb3N0c1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0U29jaWFsUG9zdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgc29jaWFsUG9zdHM6IFNvY2lhbFBvc3RbXTtcbiAgICBuZXh0Q3Vyc29yOiBzdHJpbmc7XG4gICAgaGFzTW9yZTogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RTb2NpYWxQb3N0c1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFNvY2lhbFBvc3RzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc29jaWFsUG9zdHMpIHttLnNvY2lhbFBvc3RzID0gcHJvdG8uc29jaWFsUG9zdHMubWFwKFNvY2lhbFBvc3QuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFNvY2lhbFBvc3RzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxQb3N0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zb2NpYWxQb3N0cyAhPT0gbnVsbCkge3RvUmV0dXJuWydzb2NpYWxQb3N0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zb2NpYWxQb3N0cyA/ICh0aGlzLnNvY2lhbFBvc3RzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNvY2lhbFBvc3RzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5leHRDdXJzb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25leHRDdXJzb3InXSA9IHRoaXMubmV4dEN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNNb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNNb3JlJ10gPSB0aGlzLmhhc01vcmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lckxpc3RTY2hlZHVsZWRQb3N0c1Jlc3BvbnNlIGltcGxlbWVudHMgaS5QYXJ0bmVyTGlzdFNjaGVkdWxlZFBvc3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHNvY2lhbFBvc3RzOiBTb2NpYWxQb3N0W107XG4gICAgbmV4dEN1cnNvcjogc3RyaW5nO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQYXJ0bmVyTGlzdFNjaGVkdWxlZFBvc3RzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBQYXJ0bmVyTGlzdFNjaGVkdWxlZFBvc3RzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc29jaWFsUG9zdHMpIHttLnNvY2lhbFBvc3RzID0gcHJvdG8uc29jaWFsUG9zdHMubWFwKFNvY2lhbFBvc3QuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUGFydG5lckxpc3RTY2hlZHVsZWRQb3N0c1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsUG9zdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc29jaWFsUG9zdHMgIT09IG51bGwpIHt0b1JldHVyblsnc29jaWFsUG9zdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc29jaWFsUG9zdHMgPyAodGhpcy5zb2NpYWxQb3N0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zb2NpYWxQb3N0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uZXh0Q3Vyc29yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduZXh0Q3Vyc29yJ10gPSB0aGlzLm5leHRDdXJzb3I7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGFzTW9yZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaGFzTW9yZSddID0gdGhpcy5oYXNNb3JlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0IGltcGxlbWVudHMgaS5QYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgY3Vyc29yOiBzdHJpbmc7XG4gICAgZmlsdGVyczogUGFydG5lckxpc3RTY2hlZHVsZWRTb2NpYWxQb3N0c1JlcXVlc3RGaWx0ZXJzO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmZpbHRlcnMpIHttLmZpbHRlcnMgPSBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEZpbHRlcnMuZnJvbVByb3RvKHByb3RvLmZpbHRlcnMpO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2VTaXplKSB7bS5wYWdlU2l6ZSA9IHBhcnNlSW50KHByb3RvLnBhZ2VTaXplLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3Vyc29yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJzb3InXSA9IHRoaXMuY3Vyc29yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpbHRlcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZmlsdGVycyAhPT0gbnVsbCkge3RvUmV0dXJuWydmaWx0ZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmZpbHRlcnMgPyAodGhpcy5maWx0ZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZpbHRlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnZVNpemUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhZ2VTaXplJ10gPSB0aGlzLnBhZ2VTaXplO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW92ZUZyb21NdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QgaW1wbGVtZW50cyBpLlJlbW92ZUZyb21NdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHJlYXNvbjogZS5SZW1vdmVSZWFzb247XG4gICAgYnJhbmRJZDogc3RyaW5nO1xuICAgIG11bHRpbG9jYXRpb25JZDogc3RyaW5nO1xuICAgIGxvY2F0aW9uczogTG9jYXRpb25bXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlbW92ZUZyb21NdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnJlYXNvbikge20ucmVhc29uID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5SZW1vdmVSZWFzb24+KGUuUmVtb3ZlUmVhc29uLCBwcm90by5yZWFzb24pO31cbiAgICAgICAgaWYgKHByb3RvLmxvY2F0aW9ucykge20ubG9jYXRpb25zID0gcHJvdG8ubG9jYXRpb25zLm1hcChMb2NhdGlvbi5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVhc29uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWFzb24nXSA9IHRoaXMucmVhc29uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyYW5kSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JyYW5kSWQnXSA9IHRoaXMuYnJhbmRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ211bHRpbG9jYXRpb25JZCddID0gdGhpcy5tdWx0aWxvY2F0aW9uSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxvY2F0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydsb2NhdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubG9jYXRpb25zID8gKHRoaXMubG9jYXRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxvY2F0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlZHVsZVBvc3RSZXF1ZXN0IGltcGxlbWVudHMgaS5TY2hlZHVsZVBvc3RSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzb2NpYWxQb3N0OiBTb2NpYWxQb3N0RGF0YTtcbiAgICBzb2NpYWxTZXJ2aWNlSWRzOiBzdHJpbmdbXTtcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICBidXNpbmVzc0lkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTY2hlZHVsZVBvc3RSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2NoZWR1bGVQb3N0UmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zb2NpYWxQb3N0KSB7bS5zb2NpYWxQb3N0ID0gU29jaWFsUG9zdERhdGEuZnJvbVByb3RvKHByb3RvLnNvY2lhbFBvc3QpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TY2hlZHVsZVBvc3RSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsUG9zdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zb2NpYWxQb3N0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NvY2lhbFBvc3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc29jaWFsUG9zdCA/ICh0aGlzLnNvY2lhbFBvc3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc29jaWFsUG9zdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxTZXJ2aWNlSWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlSWRzJ10gPSB0aGlzLnNvY2lhbFNlcnZpY2VJZHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzSWQnXSA9IHRoaXMuYnVzaW5lc3NJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlZHVsZVBvc3RSZXNwb25zZSBpbXBsZW1lbnRzIGkuU2NoZWR1bGVQb3N0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHN0YXR1c2VzOiBTY2hlZHVsZVBvc3RTdGF0dXNbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNjaGVkdWxlUG9zdFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2NoZWR1bGVQb3N0UmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhdHVzZXMpIHttLnN0YXR1c2VzID0gcHJvdG8uc3RhdHVzZXMubWFwKFNjaGVkdWxlUG9zdFN0YXR1cy5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TY2hlZHVsZVBvc3RSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1c2VzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXR1c2VzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXR1c2VzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXR1c2VzID8gKHRoaXMuc3RhdHVzZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhdHVzZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVUb0FsbFBhZ2VzUmVxdWVzdCBpbXBsZW1lbnRzIGkuU2NoZWR1bGVUb0FsbFBhZ2VzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgc29jaWFsUG9zdDogU29jaWFsUG9zdERhdGE7XG4gICAgcGFydG5lcklkOiBzdHJpbmc7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2NoZWR1bGVUb0FsbFBhZ2VzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFNjaGVkdWxlVG9BbGxQYWdlc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc29jaWFsUG9zdCkge20uc29jaWFsUG9zdCA9IFNvY2lhbFBvc3REYXRhLmZyb21Qcm90byhwcm90by5zb2NpYWxQb3N0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2NoZWR1bGVUb0FsbFBhZ2VzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFBvc3QgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc29jaWFsUG9zdCAhPT0gbnVsbCkge3RvUmV0dXJuWydzb2NpYWxQb3N0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNvY2lhbFBvc3QgPyAodGhpcy5zb2NpYWxQb3N0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNvY2lhbFBvc3Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzSWQnXSA9IHRoaXMuYnVzaW5lc3NJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlZHVsZVRvQWxsUGFnZXNSZXNwb25zZSBpbXBsZW1lbnRzIGkuU2NoZWR1bGVUb0FsbFBhZ2VzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHN0YXR1c2VzOiBTY2hlZHVsZVBvc3RTdGF0dXNbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNjaGVkdWxlVG9BbGxQYWdlc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2NoZWR1bGVUb0FsbFBhZ2VzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhdHVzZXMpIHttLnN0YXR1c2VzID0gcHJvdG8uc3RhdHVzZXMubWFwKFNjaGVkdWxlUG9zdFN0YXR1cy5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TY2hlZHVsZVRvQWxsUGFnZXNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1c2VzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXR1c2VzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXR1c2VzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXR1c2VzID8gKHRoaXMuc3RhdHVzZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhdHVzZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlUG9zdFRlbXBsYXRlUmVxdWVzdCBpbXBsZW1lbnRzIGkuVXBkYXRlUG9zdFRlbXBsYXRlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBwb3N0VGV4dDogc3RyaW5nO1xuICAgIHBvc3REYXRlVGltZTogRGF0ZTtcbiAgICBnbWJQb3N0Q3VzdG9taXphdGlvbjogc3RyaW5nO1xuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgaW1hZ2VQYXRoOiBzdHJpbmc7XG4gICAgaW1hZ2VTaXplOiBzdHJpbmc7XG4gICAgcHJldmlld3M6IHN0cmluZztcbiAgICBvcHRpb25zOiBzdHJpbmdbXTtcbiAgICB2aWRlb1VybDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVXBkYXRlUG9zdFRlbXBsYXRlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFVwZGF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucG9zdERhdGVUaW1lKSB7bS5wb3N0RGF0ZVRpbWUgPSBuZXcgRGF0ZShwcm90by5wb3N0RGF0ZVRpbWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5VcGRhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlbXBsYXRlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RlbXBsYXRlSWQnXSA9IHRoaXMudGVtcGxhdGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFRleHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bvc3RUZXh0J10gPSB0aGlzLnBvc3RUZXh0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3REYXRlVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb3N0RGF0ZVRpbWUgIT09IG51bGwpIHt0b1JldHVyblsncG9zdERhdGVUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvc3REYXRlVGltZSA/ICh0aGlzLnBvc3REYXRlVGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wb3N0RGF0ZVRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2dtYlBvc3RDdXN0b21pemF0aW9uJ10gPSB0aGlzLmdtYlBvc3RDdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltYWdlVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbWFnZVVybCddID0gdGhpcy5pbWFnZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVBhdGggIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlUGF0aCddID0gdGhpcy5pbWFnZVBhdGg7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VTaXplICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbWFnZVNpemUnXSA9IHRoaXMuaW1hZ2VTaXplO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXZpZXdzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcmV2aWV3cyddID0gdGhpcy5wcmV2aWV3czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcHRpb25zJ10gPSB0aGlzLm9wdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9VcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZpZGVvVXJsJ10gPSB0aGlzLnZpZGVvVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlLCBFbnZpcm9ubWVudCB9IGZyb20gJ0B2ZW5kYXN0YS9jb3JlJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgSG9zdFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2hvc3Q6IHN0cmluZztcbiAgICBwcml2YXRlIF9odHRwc0hvc3Q6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBob3N0KCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLl9ob3N0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faG9zdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKSkge1xuICAgICAgICAgICAgY2FzZSBFbnZpcm9ubWVudC5MT0NBTDpcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3N0ID0gJ3NvY2lhbC1wb3N0LnZlbmRhc3RhLWxvY2FsLmNvbSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudmlyb25tZW50LlRFU1Q6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9zdCA9ICcnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnZpcm9ubWVudC5ERU1POlxuICAgICAgICAgICAgICAgIHRoaXMuX2hvc3QgPSAnc29jaWFsLXBvc3RzLWRlbW8uYXBpZ2F0ZXdheS5jbyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudmlyb25tZW50LlBST0Q6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9zdCA9ICdzb2NpYWwtcG9zdHMtcHJvZC5hcGlnYXRld2F5LmNvJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faG9zdDtcbiAgICB9XG5cbiAgICBodHRwc0hvc3QoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX2h0dHBzSG9zdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBzSG9zdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKSkge1xuICAgICAgICAgICAgY2FzZSBFbnZpcm9ubWVudC5MT0NBTDpcbiAgICAgICAgICAgICAgICB0aGlzLl9odHRwc0hvc3QgPSAnc29jaWFsLXBvc3QudmVuZGFzdGEtbG9jYWwuY29tJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW52aXJvbm1lbnQuVEVTVDpcbiAgICAgICAgICAgICAgICB0aGlzLl9odHRwc0hvc3QgPSAnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW52aXJvbm1lbnQuREVNTzpcbiAgICAgICAgICAgICAgICB0aGlzLl9odHRwc0hvc3QgPSAnc29jaWFsLXBvc3RzLWFwaS1kZW1vLmFwaWdhdGV3YXkuY28nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnZpcm9ubWVudC5QUk9EOlxuICAgICAgICAgICAgICAgIHRoaXMuX2h0dHBzSG9zdCA9ICdzb2NpYWwtcG9zdHMtYXBpLXByb2QuYXBpZ2F0ZXdheS5jbyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBzSG9zdDtcbiAgICB9XG5cbiAgICBob3N0V2l0aFNjaGVtZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzY2hlbWUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpID09PSBFbnZpcm9ubWVudC5MT0NBTCA/ICdodHRwOi8vJyA6ICdodHRwczovLyc7XG4gICAgICAgIHJldHVybiBzY2hlbWUgKyB0aGlzLmhvc3QoKVxuICAgIH1cblxuICAgIGh0dHBzSG9zdFdpdGhTY2hlbWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc2NoZW1lID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKSA9PT0gRW52aXJvbm1lbnQuTE9DQUwgPyAnaHR0cDovLycgOiAnaHR0cHM6Ly8nO1xuICAgICAgICByZXR1cm4gc2NoZW1lICsgdGhpcy5odHRwc0hvc3QoKVxuICAgIH1cbn1cbiIsIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gQVBJIFNlcnZpY2UuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgICAgICBEZWxldGVTb2NpYWxQb3N0UmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXF1ZXN0LFxuICAgICAgICBHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1Jlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVNvY2lhbFBvc3RzUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlTb2NpYWxQb3N0c1Jlc3BvbnNlLFxuICAgICAgICBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0LFxuICAgICAgICBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXNwb25zZSxcbiAgICAgICAgTGlzdFNvY2lhbFBvc3RzUmVxdWVzdCxcbiAgICAgICAgTGlzdFNvY2lhbFBvc3RzUmVzcG9uc2UsXG4gICAgICAgIFNjaGVkdWxlUG9zdFJlcXVlc3QsXG4gICAgICAgIFNjaGVkdWxlUG9zdFJlc3BvbnNlLFxuICAgICAgICBTY2hlZHVsZVRvQWxsUGFnZXNSZXF1ZXN0LFxuICAgICAgICBTY2hlZHVsZVRvQWxsUGFnZXNSZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBEZWxldGVTb2NpYWxQb3N0UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVNvY2lhbFBvc3RzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0TXVsdGlTb2NpYWxQb3N0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFNvY2lhbFBvc3RzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgTGlzdFNvY2lhbFBvc3RzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIFNjaGVkdWxlUG9zdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFNjaGVkdWxlUG9zdFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBTY2hlZHVsZVRvQWxsUGFnZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTY2hlZHVsZVRvQWxsUGFnZXNSZXNwb25zZUludGVyZmFjZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzLyc7XG5pbXBvcnQge0h0dHBIZWFkZXJzLCBIdHRwQ2xpZW50LCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SG9zdFNlcnZpY2V9IGZyb20gJy4uL19nZW5lcmF0ZWQvaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc2hhcmV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgU29jaWFsUG9zdHNBcGlTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBob3N0U2VydmljZTogSG9zdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwaU9wdGlvbnMoKToge2hlYWRlcnM6IEh0dHBIZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW59IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBsaXN0KHI6IExpc3RTb2NpYWxQb3N0c1JlcXVlc3QgfCBMaXN0U29jaWFsUG9zdHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0U29jaWFsUG9zdHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdFNvY2lhbFBvc3RzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0U29jaWFsUG9zdHNSZXF1ZXN0PnIpIDogbmV3IExpc3RTb2NpYWxQb3N0c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0U29jaWFsUG9zdHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuU29jaWFsUG9zdHMvTGlzdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RTb2NpYWxQb3N0c1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSksXG4gICAgICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZGVsZXRlU29jaWFsUG9zdChyOiBEZWxldGVTb2NpYWxQb3N0UmVxdWVzdCB8IERlbGV0ZVNvY2lhbFBvc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPERlbGV0ZVNvY2lhbFBvc3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPERlbGV0ZVNvY2lhbFBvc3RSZXF1ZXN0PnIpIDogbmV3IERlbGV0ZVNvY2lhbFBvc3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuU29jaWFsUG9zdHMvRGVsZXRlU29jaWFsUG9zdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgc2NoZWR1bGVUb0FsbFBhZ2VzKHI6IFNjaGVkdWxlVG9BbGxQYWdlc1JlcXVlc3QgfCBTY2hlZHVsZVRvQWxsUGFnZXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxTY2hlZHVsZVRvQWxsUGFnZXNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2NoZWR1bGVUb0FsbFBhZ2VzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTY2hlZHVsZVRvQWxsUGFnZXNSZXF1ZXN0PnIpIDogbmV3IFNjaGVkdWxlVG9BbGxQYWdlc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTY2hlZHVsZVRvQWxsUGFnZXNSZXNwb25zZUludGVyZmFjZT4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuU29jaWFsUG9zdHMvU2NoZWR1bGVUb0FsbFBhZ2VzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gU2NoZWR1bGVUb0FsbFBhZ2VzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBzY2hlZHVsZShyOiBTY2hlZHVsZVBvc3RSZXF1ZXN0IHwgU2NoZWR1bGVQb3N0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8U2NoZWR1bGVQb3N0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFNjaGVkdWxlUG9zdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U2NoZWR1bGVQb3N0UmVxdWVzdD5yKSA6IG5ldyBTY2hlZHVsZVBvc3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NoZWR1bGVQb3N0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLlNvY2lhbFBvc3RzL1NjaGVkdWxlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gU2NoZWR1bGVQb3N0UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRNdWx0aVNvY2lhbFBvc3RzKHI6IEdldE11bHRpU29jaWFsUG9zdHNSZXF1ZXN0IHwgR2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE11bHRpU29jaWFsUG9zdHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3Q+cikgOiBuZXcgR2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVNvY2lhbFBvc3RzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLlNvY2lhbFBvc3RzL0dldE11bHRpU29jaWFsUG9zdHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVNvY2lhbFBvc3RzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRNdWx0aVNvY2lhbFBvc3RTdGF0cyhyOiBHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1JlcXVlc3QgfCBHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1JlcXVlc3Q+cikgOiBuZXcgR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuU29jaWFsUG9zdHMvR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSksXG4gICAgICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0U2NoZWR1bGVkUG9zdENvdW50KHI6IEdldFNjaGVkdWxlZFBvc3RDb3VudFJlcXVlc3QgfCBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0U2NoZWR1bGVkUG9zdENvdW50UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0PnIpIDogbmV3IEdldFNjaGVkdWxlZFBvc3RDb3VudFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXNwb25zZUludGVyZmFjZT4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuU29jaWFsUG9zdHMvR2V0U2NoZWR1bGVkUG9zdENvdW50XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0U2NoZWR1bGVkUG9zdENvdW50UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBcbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBMaXN0U29jaWFsUG9zdHNSZXF1ZXN0LFxuICBMaXN0U29jaWFsUG9zdHNSZXNwb25zZSxcbiAgR2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3QsXG4gIEdldE11bHRpU29jaWFsUG9zdHNSZXNwb25zZSxcbiAgR2V0U2NoZWR1bGVkUG9zdENvdW50UmVxdWVzdCxcbiAgR2V0U2NoZWR1bGVkUG9zdENvdW50UmVzcG9uc2UsXG59IGZyb20gJy4vX2ludGVybmFsL29iamVjdHMvYXBpJztcbmltcG9ydCB7IFNvY2lhbFBvc3RzQXBpU2VydmljZSB9IGZyb20gJy4vX2ludGVybmFsL3NvY2lhbC1wb3N0cy5hcGkuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFNvY2lhbFBvc3RzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc29jaWFsUG9zdHNBcGlTZXJ2aWNlOiBTb2NpYWxQb3N0c0FwaVNlcnZpY2UpIHtcbiAgfVxuXG4gIGxpc3QoXG4gICAgIHN0YXJ0OiBEYXRlLFxuICAgICBlbmQ6IERhdGUsXG4gICAgIHNvY2lhbFNlcnZpY2VJZHM6IHN0cmluZ1tdLFxuICAgICBidXNpbmVzc0lkOiBzdHJpbmcsXG4gICAgIHBhcnRuZXJJZDogc3RyaW5nLFxuICAgICBjdXJzb3I6IHN0cmluZyxcbiAgICAgdGFnczogc3RyaW5nW10sXG4gICAgIHBhZ2VTaXplOiBudW1iZXJcbiAgKTpcbiAgICBPYnNlcnZhYmxlPExpc3RTb2NpYWxQb3N0c1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxID0gbmV3IExpc3RTb2NpYWxQb3N0c1JlcXVlc3Qoe1xuICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgZW5kOiBlbmQsXG4gICAgICBidXNpbmVzc0lkOiBidXNpbmVzc0lkLFxuICAgICAgcGFydG5lcklkOiBwYXJ0bmVySWQsXG4gICAgICBjdXJzb3I6IGN1cnNvcixcbiAgICAgIHNvY2lhbFNlcnZpY2VJZHM6IHNvY2lhbFNlcnZpY2VJZHMsXG4gICAgICB0YWdzOiB0YWdzLFxuICAgICAgcGFnZVNpemU6IHBhZ2VTaXplLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLnNvY2lhbFBvc3RzQXBpU2VydmljZS5saXN0KHJlcSk7XG4gIH1cblxuICBnZXRNdWx0aVNvY2lhbFBvc3RzKGJ1c2luZXNzSWQ6IHN0cmluZywgaW50ZXJuYWxQb3N0SWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8R2V0TXVsdGlTb2NpYWxQb3N0c1Jlc3BvbnNlPiB7XG4gICAgaWYgKCFpbnRlcm5hbFBvc3RJZHMgfHwgaW50ZXJuYWxQb3N0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgcmVzID0gbmV3IEdldE11bHRpU29jaWFsUG9zdHNSZXNwb25zZSgpO1xuICAgICAgcmV0dXJuIG9mKHJlcyk7XG4gICAgfVxuICAgIGNvbnN0IHJlcSA9IG5ldyBHZXRNdWx0aVNvY2lhbFBvc3RzUmVxdWVzdCh7YnVzaW5lc3NJZDogYnVzaW5lc3NJZCwgaW50ZXJuYWxQb3N0SWRzOiBpbnRlcm5hbFBvc3RJZHN9KTtcbiAgICByZXR1cm4gdGhpcy5zb2NpYWxQb3N0c0FwaVNlcnZpY2UuZ2V0TXVsdGlTb2NpYWxQb3N0cyhyZXEpO1xuICB9XG5cbiAgZ2V0U2NoZWR1bGVkUG9zdENvdW50KHBhcnRuZXJJZDogc3RyaW5nLCBidXNpbmVzc0lkOiBzdHJpbmcsIHNvY2lhbFNlcnZpY2VJZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXF1ZXN0KHtwYXJ0bmVySWQ6IHBhcnRuZXJJZCwgYnVzaW5lc3NJZDogYnVzaW5lc3NJZCwgc29jaWFsU2VydmljZUlkczogc29jaWFsU2VydmljZUlkc30pO1xuICAgIHJldHVybiB0aGlzLnNvY2lhbFBvc3RzQXBpU2VydmljZS5nZXRTY2hlZHVsZWRQb3N0Q291bnQocmVxKTtcbiAgfVxufVxuIiwiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIENyZWF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QsXG4gICAgICAgIENyZWF0ZVBvc3RUZW1wbGF0ZVJlc3BvbnNlLFxuICAgICAgICBEZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0LFxuICAgICAgICBHZXRQb3N0VGVtcGxhdGVSZXF1ZXN0LFxuICAgICAgICBHZXRQb3N0VGVtcGxhdGVSZXNwb25zZSxcbiAgICAgICAgTGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0LFxuICAgICAgICBMaXN0UG9zdFRlbXBsYXRlc1Jlc3BvbnNlLFxuICAgICAgICBVcGRhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0LFxufSBmcm9tICcuL29iamVjdHMvJztcbmltcG9ydCB7XG4gICAgICAgIENyZWF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZVBvc3RUZW1wbGF0ZVJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBEZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRQb3N0VGVtcGxhdGVSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0UG9zdFRlbXBsYXRlc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlLFxufSBmcm9tICcuL2ludGVyZmFjZXMvJztcbmltcG9ydCB7SHR0cEhlYWRlcnMsIEh0dHBDbGllbnQsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi4vX2dlbmVyYXRlZC9ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzaGFyZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBQb3N0VGVtcGxhdGVzQXBpU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgaG9zdFNlcnZpY2U6IEhvc3RTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcGlPcHRpb25zKCk6IHtoZWFkZXJzOiBIdHRwSGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFufSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdXBkYXRlUG9zdFRlbXBsYXRlKHI6IFVwZGF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QgfCBVcGRhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlUG9zdFRlbXBsYXRlUmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuUG9zdFRlbXBsYXRlcy9VcGRhdGVQb3N0VGVtcGxhdGVcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGNyZWF0ZVBvc3RUZW1wbGF0ZShyOiBDcmVhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0IHwgQ3JlYXRlUG9zdFRlbXBsYXRlUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8Q3JlYXRlUG9zdFRlbXBsYXRlUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlUG9zdFRlbXBsYXRlUmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q3JlYXRlUG9zdFRlbXBsYXRlUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLlBvc3RUZW1wbGF0ZXMvQ3JlYXRlUG9zdFRlbXBsYXRlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gQ3JlYXRlUG9zdFRlbXBsYXRlUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRQb3N0VGVtcGxhdGUocjogR2V0UG9zdFRlbXBsYXRlUmVxdWVzdCB8IEdldFBvc3RUZW1wbGF0ZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRQb3N0VGVtcGxhdGVSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldFBvc3RUZW1wbGF0ZVJlcXVlc3Q+cikgOiBuZXcgR2V0UG9zdFRlbXBsYXRlUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLmhvc3RTZXJ2aWNlLmhvc3RXaXRoU2NoZW1lKCkgKyBcIi9zb2NpYWxwb3N0cy52MS5Qb3N0VGVtcGxhdGVzL0dldFBvc3RUZW1wbGF0ZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSksXG4gICAgICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgbGlzdFBvc3RUZW1wbGF0ZXMocjogTGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0IHwgTGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0UG9zdFRlbXBsYXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxMaXN0UG9zdFRlbXBsYXRlc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0PnIpIDogbmV3IExpc3RQb3N0VGVtcGxhdGVzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PExpc3RQb3N0VGVtcGxhdGVzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLlBvc3RUZW1wbGF0ZXMvTGlzdFBvc3RUZW1wbGF0ZXNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0UG9zdFRlbXBsYXRlc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSksXG4gICAgICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZGVsZXRlUG9zdFRlbXBsYXRlKHI6IERlbGV0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QgfCBEZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPERlbGV0ZVBvc3RUZW1wbGF0ZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RGVsZXRlUG9zdFRlbXBsYXRlUmVxdWVzdD5yKSA6IG5ldyBEZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuUG9zdFRlbXBsYXRlcy9EZWxldGVQb3N0VGVtcGxhdGVcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIFxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlUG9zdFRlbXBsYXRlUmVxdWVzdCxcbiAgQ3JlYXRlUG9zdFRlbXBsYXRlUmVzcG9uc2UsXG4gIERlbGV0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QsXG4gIEdldFBvc3RUZW1wbGF0ZVJlcXVlc3QsXG4gIEdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlLFxuICBMaXN0UG9zdFRlbXBsYXRlc1JlcXVlc3QsXG4gIExpc3RQb3N0VGVtcGxhdGVzUmVzcG9uc2UsXG4gIFVwZGF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QsXG59IGZyb20gJy4vX2ludGVybmFsL29iamVjdHMvYXBpJztcbmltcG9ydCB7IFBvc3RUZW1wbGF0ZXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi9faW50ZXJuYWwvcG9zdC10ZW1wbGF0ZXMuYXBpLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBQb3N0VGVtcGxhdGVzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc29jaWFsUG9zdHNBcGlTZXJ2aWNlOiBQb3N0VGVtcGxhdGVzQXBpU2VydmljZSkge1xuICB9XG5cbiAgdXBkYXRlUG9zdFRlbXBsYXRlKGFjY291bnRHcm91cElkOiBzdHJpbmcsIHRlbXBsYXRlSWQ6IHN0cmluZywgdGl0bGU6IHN0cmluZywgcG9zdFRleHQ6IHN0cmluZywgcG9zdERhdGVUaW1lOiBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgZ21iUG9zdEN1c3RvbWl6YXRpb246IHN0cmluZywgaW1hZ2VVcmw6IHN0cmluZywgaW1hZ2VQYXRoOiBzdHJpbmcsIGltYWdlU2l6ZTogc3RyaW5nLCBwcmV2aWV3czogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogc3RyaW5nW10sIHZpZGVvVXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBVcGRhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0KHtcbiAgICAgIGFjY291bnRHcm91cElkOiBhY2NvdW50R3JvdXBJZCxcbiAgICAgIHRlbXBsYXRlSWQ6IHRlbXBsYXRlSWQsXG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICBwb3N0VGV4dDogcG9zdFRleHQsXG4gICAgICBwb3N0RGF0ZVRpbWU6IHBvc3REYXRlVGltZSxcbiAgICAgIGdtYlBvc3RDdXN0b21pemF0aW9uOiBnbWJQb3N0Q3VzdG9taXphdGlvbixcbiAgICAgIGltYWdlVXJsOiBpbWFnZVVybCxcbiAgICAgIGltYWdlUGF0aDogaW1hZ2VQYXRoLFxuICAgICAgaW1hZ2VTaXplOiBpbWFnZVNpemUsXG4gICAgICBwcmV2aWV3czogcHJldmlld3MsXG4gICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgdmlkZW9Vcmw6IHZpZGVvVXJsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuc29jaWFsUG9zdHNBcGlTZXJ2aWNlLnVwZGF0ZVBvc3RUZW1wbGF0ZShyZXEpXG4gIH1cblxuICBjcmVhdGVQb3N0VGVtcGxhdGUoYWNjb3VudEdyb3VwSWQ6IHN0cmluZywgdGl0bGU6IHN0cmluZywgcG9zdFRleHQ6IHN0cmluZywgcG9zdERhdGVUaW1lOiBEYXRlLCBnbWJQb3N0Q3VzdG9taXphdGlvbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmw6IHN0cmluZywgaW1hZ2VQYXRoOiBzdHJpbmcsIGltYWdlU2l6ZTogc3RyaW5nLCBwcmV2aWV3czogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSwgdmlkZW9Vcmw6IHN0cmluZyk6XG4gICAgT2JzZXJ2YWJsZTxDcmVhdGVQb3N0VGVtcGxhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBDcmVhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0KHtcbiAgICAgIGFjY291bnRHcm91cElkOiBhY2NvdW50R3JvdXBJZCxcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIHBvc3RUZXh0OiBwb3N0VGV4dCxcbiAgICAgIHBvc3REYXRlVGltZTogcG9zdERhdGVUaW1lLFxuICAgICAgZ21iUG9zdEN1c3RvbWl6YXRpb246IGdtYlBvc3RDdXN0b21pemF0aW9uLFxuICAgICAgaW1hZ2VVcmw6IGltYWdlVXJsLFxuICAgICAgaW1hZ2VQYXRoOiBpbWFnZVBhdGgsXG4gICAgICBpbWFnZVNpemU6IGltYWdlU2l6ZSxcbiAgICAgIHByZXZpZXdzOiBwcmV2aWV3cyxcbiAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB2aWRlb1VybDogdmlkZW9VcmxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5zb2NpYWxQb3N0c0FwaVNlcnZpY2UuY3JlYXRlUG9zdFRlbXBsYXRlKHJlcSk7XG4gIH1cblxuICBnZXRQb3N0VGVtcGxhdGUoYWNjb3VudEdyb3VwSWQ6IHN0cmluZywgdGVtcGxhdGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxHZXRQb3N0VGVtcGxhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBHZXRQb3N0VGVtcGxhdGVSZXF1ZXN0KHtcbiAgICAgIGFjY291bnRHcm91cElkOiBhY2NvdW50R3JvdXBJZCxcbiAgICAgIHRlbXBsYXRlSWQ6IHRlbXBsYXRlSWRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5zb2NpYWxQb3N0c0FwaVNlcnZpY2UuZ2V0UG9zdFRlbXBsYXRlKHJlcSlcbiAgfVxuXG4gIGxpc3RQb3N0VGVtcGxhdGVzKGFjY291bnRHcm91cElkOiBzdHJpbmcsIGN1cnNvcjogc3RyaW5nLCBwYWdlU2l6ZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxMaXN0UG9zdFRlbXBsYXRlc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxID0gbmV3IExpc3RQb3N0VGVtcGxhdGVzUmVxdWVzdCh7XG4gICAgICBhY2NvdW50R3JvdXBJZDogYWNjb3VudEdyb3VwSWQsXG4gICAgICBjdXJzb3I6IGN1cnNvcixcbiAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLnNvY2lhbFBvc3RzQXBpU2VydmljZS5saXN0UG9zdFRlbXBsYXRlcyhyZXEpO1xuICB9XG5cbiAgZGVsZXRlUG9zdFRlbXBsYXRlKGFjY291bnRHcm91cElkOiBzdHJpbmcsIHRlbXBsYXRlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgY29uc3QgcmVxID0gbmV3IERlbGV0ZVBvc3RUZW1wbGF0ZVJlcXVlc3Qoe1xuICAgICAgYWNjb3VudEdyb3VwSWQ6IGFjY291bnRHcm91cElkLFxuICAgICAgdGVtcGxhdGVJZDogdGVtcGxhdGVJZFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLnNvY2lhbFBvc3RzQXBpU2VydmljZS5kZWxldGVQb3N0VGVtcGxhdGUocmVxKTtcbiAgfVxuXG59XG4iLCIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIEFQSSBTZXJ2aWNlLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICAgICAgQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0LFxuICAgICAgICBDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlLFxuICAgICAgICBEZWxldGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgICAgIEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgICAgIEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgICAgIEdldE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UsXG4gICAgICAgIExpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZFJlcXVlc3QsXG4gICAgICAgIExpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZFJlc3BvbnNlLFxuICAgICAgICBSZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0LFxufSBmcm9tICcuL29iamVjdHMvJztcbmltcG9ydCB7XG4gICAgICAgIENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgRGVsZXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgUmVtb3ZlRnJvbU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzLyc7XG5pbXBvcnQge0h0dHBIZWFkZXJzLCBIdHRwQ2xpZW50LCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SG9zdFNlcnZpY2V9IGZyb20gJy4uL19nZW5lcmF0ZWQvaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc2hhcmV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTXVsdGlsb2NhdGlvblBvc3RBcGlTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBob3N0U2VydmljZTogSG9zdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwaU9wdGlvbnMoKToge2hlYWRlcnM6IEh0dHBIZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW59IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGVNdWx0aWxvY2F0aW9uUG9zdChyOiBDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QgfCBDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZUludGVyZmFjZT4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuTXVsdGlsb2NhdGlvblBvc3RTZXJ2aWNlL0NyZWF0ZU11bHRpbG9jYXRpb25Qb3N0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpLFxuICAgICAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGVkaXRNdWx0aWxvY2F0aW9uUG9zdChyOiBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0IHwgRWRpdE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8RWRpdE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RWRpdE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdD5yKSA6IG5ldyBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RWRpdE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLk11bHRpbG9jYXRpb25Qb3N0U2VydmljZS9FZGl0TXVsdGlsb2NhdGlvblBvc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpLFxuICAgICAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIHJlbW92ZUZyb21NdWx0aWxvY2F0aW9uUG9zdChyOiBSZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0IHwgUmVtb3ZlRnJvbU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxSZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFJlbW92ZUZyb21NdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Q+cikgOiBuZXcgUmVtb3ZlRnJvbU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLk11bHRpbG9jYXRpb25Qb3N0U2VydmljZS9SZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGxpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZChyOiBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXF1ZXN0IHwgTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVxdWVzdD5yKSA6IG5ldyBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLk11bHRpbG9jYXRpb25Qb3N0U2VydmljZS9MaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpLFxuICAgICAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGRlbGV0ZU11bHRpbG9jYXRpb25Qb3N0KHI6IERlbGV0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCB8IERlbGV0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxEZWxldGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RGVsZXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0PnIpIDogbmV3IERlbGV0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLk11bHRpbG9jYXRpb25Qb3N0U2VydmljZS9EZWxldGVNdWx0aWxvY2F0aW9uUG9zdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZ2V0TXVsdGlsb2NhdGlvblBvc3QocjogR2V0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0IHwgR2V0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWUoKSArIFwiL3NvY2lhbHBvc3RzLnYxLk11bHRpbG9jYXRpb25Qb3N0U2VydmljZS9HZXRNdWx0aWxvY2F0aW9uUG9zdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBcbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCxcbiAgQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSxcbiAgRGVsZXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0LFxuICBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0LFxuICBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSxcbiAgR2V0TXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0LFxuICBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlLFxuICBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXF1ZXN0LFxuICBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXNwb25zZSxcbiAgUmVtb3ZlRnJvbU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCxcbn0gZnJvbSAnLi9faW50ZXJuYWwvb2JqZWN0cy9hcGknO1xuaW1wb3J0IHsgTXVsdGlsb2NhdGlvblBvc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi9faW50ZXJuYWwvbXVsdGlsb2NhdGlvbi1wb3N0LmFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkTWFzayB9IGZyb20gJy4vX2ludGVybmFsL29iamVjdHMvZmllbGQtbWFzayc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJy4vX2ludGVybmFsL29iamVjdHMvbXVsdGlsb2NhdGlvbi1wb3N0JztcbmltcG9ydCB7IFJlbW92ZVJlYXNvbiB9IGZyb20gJy4vX2ludGVybmFsL2VudW1zL211bHRpbG9jYXRpb24tcG9zdC5lbnVtJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTXVsdGlsb2NhdGlvblBvc3RzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbXVsdGlsb2NhdGlvbkFwaVNlcnZpY2U6IE11bHRpbG9jYXRpb25Qb3N0QXBpU2VydmljZSkge1xuICB9XG5cbiAgY3JlYXRlTXVsdGlsb2NhdGlvblBvc3QoYnJhbmRJZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG1lZGlhOiBzdHJpbmdbXSwgZ2lmczogc3RyaW5nW10sIHZpZGVvczogc3RyaW5nW10sIHNjaGVkdWxlZERhdGU6IERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uczogTG9jYXRpb25bXSk6IE9ic2VydmFibGU8Q3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Qoe1xuICAgICAgYnJhbmRJZDogYnJhbmRJZCxcbiAgICAgIHRleHQ6IHRleHQsXG4gICAgICBtZWRpYTogbWVkaWEsXG4gICAgICBnaWZzOiBnaWZzLFxuICAgICAgdmlkZW9zOiB2aWRlb3MsXG4gICAgICBzY2hlZHVsZWREYXRlOiBzY2hlZHVsZWREYXRlLFxuICAgICAgbG9jYXRpb25zOiBsb2NhdGlvbnNcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5tdWx0aWxvY2F0aW9uQXBpU2VydmljZS5jcmVhdGVNdWx0aWxvY2F0aW9uUG9zdChyZXEpO1xuICB9XG5cbiAgZWRpdE11bHRpbG9jYXRpb25Qb3N0KGJyYW5kSWQ6IHN0cmluZywgbXVsdGlsb2NhdGlvbklkOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgbWVkaWE6IHN0cmluZ1tdLCBnaWZzOiBzdHJpbmdbXSwgdmlkZW9zOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlZERhdGU6IERhdGUsIGxvY2F0aW9uczogTG9jYXRpb25bXSwgZmllbGRNYXNrOiBGaWVsZE1hc2spOiBPYnNlcnZhYmxlPEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxID0gbmV3IEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Qoe1xuICAgICAgYnJhbmRJZDogYnJhbmRJZCxcbiAgICAgIG11bHRpbG9jYXRpb25JZDogbXVsdGlsb2NhdGlvbklkLFxuICAgICAgdGV4dDogdGV4dCxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIGdpZnM6IGdpZnMsXG4gICAgICB2aWRlb3M6IHZpZGVvcyxcbiAgICAgIHNjaGVkdWxlZERhdGU6IHNjaGVkdWxlZERhdGUsXG4gICAgICBsb2NhdGlvbnM6IGxvY2F0aW9ucyxcbiAgICAgIGZpZWxkTWFzazogZmllbGRNYXNrXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlsb2NhdGlvbkFwaVNlcnZpY2UuZWRpdE11bHRpbG9jYXRpb25Qb3N0KHJlcSk7XG4gIH1cblxuICByZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3QocmVhc29uOiBSZW1vdmVSZWFzb24sIGJyYW5kSWQ6IHN0cmluZywgbXVsdGlsb2NhdGlvbklkOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnM6IExvY2F0aW9uW10pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBSZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0KHtcbiAgICAgIHJlYXNvbjogcmVhc29uLFxuICAgICAgYnJhbmRJZDogYnJhbmRJZCxcbiAgICAgIG11bHRpbG9jYXRpb25JZDogbXVsdGlsb2NhdGlvbklkLFxuICAgICAgbG9jYXRpb25zOiBsb2NhdGlvbnNcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5tdWx0aWxvY2F0aW9uQXBpU2VydmljZS5yZW1vdmVGcm9tTXVsdGlsb2NhdGlvblBvc3QocmVxKTtcbiAgfVxuXG4gIGxpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZChicmFuZElkOiBzdHJpbmcsIHN0YXJ0RGF0ZTogRGF0ZSwgZW5kRGF0ZTogRGF0ZSwgY3Vyc29yOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXF1ZXN0KHtcbiAgICAgIGJyYW5kSWQ6IGJyYW5kSWQsXG4gICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IGVuZERhdGUsXG4gICAgICBjdXJzb3I6IGN1cnNvcixcbiAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm11bHRpbG9jYXRpb25BcGlTZXJ2aWNlLmxpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZChyZXEpO1xuICB9XG5cbiAgZGVsZXRlTXVsdGlsb2NhdGlvblBvc3QoYnJhbmRJZDogc3RyaW5nLCBtdWx0aWxvY2F0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgY29uc3QgcmVxID0gbmV3IERlbGV0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCh7XG4gICAgICBicmFuZElkOiBicmFuZElkLFxuICAgICAgbXVsdGlsb2NhdGlvbklkOiBtdWx0aWxvY2F0aW9uSWRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5tdWx0aWxvY2F0aW9uQXBpU2VydmljZS5kZWxldGVNdWx0aWxvY2F0aW9uUG9zdChyZXEpO1xuICB9XG5cbiAgZ2V0TXVsdGlsb2NhdGlvblBvc3QoYnJhbmRJZDogc3RyaW5nLCBtdWx0aWxvY2F0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8R2V0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3Qoe1xuICAgICAgYnJhbmRJZDogYnJhbmRJZCxcbiAgICAgIG11bHRpbG9jYXRpb25JZDogbXVsdGlsb2NhdGlvbklkXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlsb2NhdGlvbkFwaVNlcnZpY2UuZ2V0TXVsdGlsb2NhdGlvblBvc3QocmVxKTtcbiAgfVxufVxuIiwiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIFBhcnRuZXJMaXN0U2NoZWR1bGVkUG9zdHNSZXNwb25zZSxcbiAgICAgICAgUGFydG5lckxpc3RTY2hlZHVsZWRTb2NpYWxQb3N0c1JlcXVlc3QsXG59IGZyb20gJy4vb2JqZWN0cy8nO1xuaW1wb3J0IHtcbiAgICAgICAgUGFydG5lckxpc3RTY2hlZHVsZWRQb3N0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEludGVyZmFjZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzLyc7XG5pbXBvcnQge0h0dHBIZWFkZXJzLCBIdHRwQ2xpZW50LCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SG9zdFNlcnZpY2V9IGZyb20gJy4uL19nZW5lcmF0ZWQvaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc2hhcmV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUGFydG5lclNvY2lhbFBvc3RzQXBpU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgaG9zdFNlcnZpY2U6IEhvc3RTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcGlPcHRpb25zKCk6IHtoZWFkZXJzOiBIdHRwSGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFufSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbGlzdFNjaGVkdWxlZChyOiBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdCB8IFBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxQYXJ0bmVyTGlzdFNjaGVkdWxlZFBvc3RzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0PnIpIDogbmV3IFBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UGFydG5lckxpc3RTY2hlZHVsZWRQb3N0c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLmhvc3RTZXJ2aWNlLmhvc3RXaXRoU2NoZW1lKCkgKyBcIi9zb2NpYWxwb3N0cy52MS5QYXJ0bmVyU29jaWFsUG9zdHMvTGlzdFNjaGVkdWxlZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IFBhcnRuZXJMaXN0U2NoZWR1bGVkUG9zdHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpLFxuICAgICAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGxpc3RTY2hlZHVsZWRCeUNyZWF0ZWQocjogUGFydG5lckxpc3RTY2hlZHVsZWRTb2NpYWxQb3N0c1JlcXVlc3QgfCBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8UGFydG5lckxpc3RTY2hlZHVsZWRQb3N0c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdD5yKSA6IG5ldyBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFBhcnRuZXJMaXN0U2NoZWR1bGVkUG9zdHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZSgpICsgXCIvc29jaWFscG9zdHMudjEuUGFydG5lclNvY2lhbFBvc3RzL0xpc3RTY2hlZHVsZWRCeUNyZWF0ZWRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBQYXJ0bmVyTGlzdFNjaGVkdWxlZFBvc3RzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBcbn1cbiJdLCJuYW1lcyI6WyJlbnVtU3RyaW5nVG9WYWx1ZSIsImUuQ2FsbFRvQWN0aW9uQ2FsbFRvQWN0aW9uVHlwZSIsImUuU29jaWFsUG9zdERlbGV0aW9uU3RhdHVzIiwiZS5Tb2NpYWxQb3N0U2VydmljZSIsImUuUG9zdGluZ1N0YXR1cyIsImUuUmVtb3ZlUmVhc29uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUEwQkksbUJBQVksTUFBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FB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
|