@wppconnect/server 1.8.5 → 2.0.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.
Files changed (91) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/config/upload.js +4 -4
  3. package/dist/config.js +78 -0
  4. package/dist/controller/catalogController.js +111 -22
  5. package/dist/controller/deviceController.js +324 -114
  6. package/dist/controller/encryptController.js +4 -2
  7. package/dist/controller/groupController.js +157 -44
  8. package/dist/controller/labelsController.js +46 -8
  9. package/dist/controller/messageController.js +104 -39
  10. package/dist/controller/orderController.js +19 -7
  11. package/dist/controller/sessionController.js +99 -34
  12. package/dist/controller/statusController.js +18 -10
  13. package/dist/index.js +47 -25
  14. package/dist/mapper/index.js +7 -5
  15. package/dist/mapper/tagone-chat.js +1 -1
  16. package/dist/mapper/tagone-device.js +1 -1
  17. package/dist/mapper/tagone-message-document.js +1 -1
  18. package/dist/mapper/tagone-message-image.js +1 -1
  19. package/dist/mapper/tagone-message-location.js +1 -1
  20. package/dist/mapper/tagone-message-video.js +1 -1
  21. package/dist/mapper/tagone-message.js +1 -1
  22. package/dist/mapper/tagone-onack.js +1 -1
  23. package/dist/mapper/tagone-return.js +4 -2
  24. package/dist/middleware/auth.js +29 -9
  25. package/dist/middleware/healthCheck.js +1 -1
  26. package/dist/middleware/statusConnection.js +9 -3
  27. package/dist/routes/index.js +618 -113
  28. package/dist/server.js +2 -2
  29. package/dist/types/Request.js +2 -0
  30. package/dist/types/ServerOptions.js +2 -0
  31. package/dist/types/WhatsAppServer.js +2 -0
  32. package/dist/util/chatWootClient.js +55 -22
  33. package/dist/util/createSessionUtil.js +65 -17
  34. package/dist/util/db/mongodb/db.js +10 -7
  35. package/dist/util/db/redis/db.js +7 -5
  36. package/dist/util/functions.js +81 -37
  37. package/dist/util/getAllTokens.js +1 -1
  38. package/dist/util/logger.js +2 -3
  39. package/dist/util/sessionUtil.js +5 -4
  40. package/dist/util/tokenStore/FileTokenStore/FileTokenStore.js +178 -0
  41. package/dist/util/tokenStore/factory.js +8 -11
  42. package/dist/util/tokenStore/fileTokenStory.js +21 -15
  43. package/dist/util/tokenStore/firebaseTokenStory.js +1 -1
  44. package/dist/util/tokenStore/model/token.js +7 -5
  45. package/dist/util/tokenStore/mongodbTokenStory.js +18 -11
  46. package/dist/util/tokenStore/redisTokenStory.js +39 -19
  47. package/dist/util/tokenStore/types.js +2 -0
  48. package/package.json +44 -22
  49. package/tsconfig.json +105 -0
  50. package/types.d.ts +2 -0
  51. package/dist/config/upload.js.map +0 -1
  52. package/dist/config.json +0 -77
  53. package/dist/controller/catalogController.js.map +0 -1
  54. package/dist/controller/deviceController.js.map +0 -1
  55. package/dist/controller/encryptController.js.map +0 -1
  56. package/dist/controller/groupController.js.map +0 -1
  57. package/dist/controller/labelsController.js.map +0 -1
  58. package/dist/controller/messageController.js.map +0 -1
  59. package/dist/controller/orderController.js.map +0 -1
  60. package/dist/controller/sessionController.js.map +0 -1
  61. package/dist/controller/statusController.js.map +0 -1
  62. package/dist/index.js.map +0 -1
  63. package/dist/mapper/index.js.map +0 -1
  64. package/dist/mapper/tagone-chat.js.map +0 -1
  65. package/dist/mapper/tagone-device.js.map +0 -1
  66. package/dist/mapper/tagone-message-document.js.map +0 -1
  67. package/dist/mapper/tagone-message-image.js.map +0 -1
  68. package/dist/mapper/tagone-message-location.js.map +0 -1
  69. package/dist/mapper/tagone-message-video.js.map +0 -1
  70. package/dist/mapper/tagone-message.js.map +0 -1
  71. package/dist/mapper/tagone-onack.js.map +0 -1
  72. package/dist/mapper/tagone-return.js.map +0 -1
  73. package/dist/middleware/auth.js.map +0 -1
  74. package/dist/middleware/healthCheck.js.map +0 -1
  75. package/dist/middleware/statusConnection.js.map +0 -1
  76. package/dist/routes/index.js.map +0 -1
  77. package/dist/server.js.map +0 -1
  78. package/dist/util/chatWootClient.js.map +0 -1
  79. package/dist/util/createSessionUtil.js.map +0 -1
  80. package/dist/util/db/mongodb/db.js.map +0 -1
  81. package/dist/util/db/redis/db.js.map +0 -1
  82. package/dist/util/functions.js.map +0 -1
  83. package/dist/util/getAllTokens.js.map +0 -1
  84. package/dist/util/logger.js.map +0 -1
  85. package/dist/util/sessionUtil.js.map +0 -1
  86. package/dist/util/tokenStore/factory.js.map +0 -1
  87. package/dist/util/tokenStore/fileTokenStory.js.map +0 -1
  88. package/dist/util/tokenStore/firebaseTokenStory.js.map +0 -1
  89. package/dist/util/tokenStore/model/token.js.map +0 -1
  90. package/dist/util/tokenStore/mongodbTokenStory.js.map +0 -1
  91. package/dist/util/tokenStore/redisTokenStory.js.map +0 -1
@@ -14,21 +14,22 @@
14
14
 
15
15
 
16
16
  var _express = require("express");
17
- var _encryptController = require("../controller/encryptController");
17
+ var _multer = _interopRequireDefault(require("multer"));
18
+ var _swaggerUiExpress = _interopRequireDefault(require("swagger-ui-express"));
19
+
20
+ var _upload = _interopRequireDefault(require("../config/upload"));
18
21
  var CatalogController = _interopRequireWildcard(require("../controller/catalogController"));
19
- var MessageController = _interopRequireWildcard(require("../controller/messageController"));
20
- var StatusController = _interopRequireWildcard(require("../controller/statusController"));
21
- var LabelsController = _interopRequireWildcard(require("../controller/labelsController"));
22
- var GroupController = _interopRequireWildcard(require("../controller/groupController"));
23
22
  var DeviceController = _interopRequireWildcard(require("../controller/deviceController"));
24
- var SessionController = _interopRequireWildcard(require("../controller/sessionController"));
23
+ var _encryptController = require("../controller/encryptController");
24
+ var GroupController = _interopRequireWildcard(require("../controller/groupController"));
25
+ var LabelsController = _interopRequireWildcard(require("../controller/labelsController"));
26
+ var MessageController = _interopRequireWildcard(require("../controller/messageController"));
25
27
  var OrderController = _interopRequireWildcard(require("../controller/orderController"));
26
- var HealthCheck = _interopRequireWildcard(require("../middleware/healthCheck"));
28
+ var SessionController = _interopRequireWildcard(require("../controller/sessionController"));
29
+ var StatusController = _interopRequireWildcard(require("../controller/statusController"));
27
30
  var _auth = _interopRequireDefault(require("../middleware/auth"));
31
+ var HealthCheck = _interopRequireWildcard(require("../middleware/healthCheck"));
28
32
  var _statusConnection = _interopRequireDefault(require("../middleware/statusConnection"));
29
- var _multer = _interopRequireDefault(require("multer"));
30
- var _upload = _interopRequireDefault(require("../config/upload"));
31
- var _swaggerUiExpress = _interopRequireDefault(require("swagger-ui-express"));
32
33
  var _swagger = _interopRequireDefault(require("../swagger.json"));function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function (nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;} /*
33
34
  * Copyright 2021 WPPConnect Team
34
35
  *
@@ -43,19 +44,63 @@ var _swagger = _interopRequireDefault(require("../swagger.json"));function _getR
43
44
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
44
45
  * See the License for the specific language governing permissions and
45
46
  * limitations under the License.
46
- */const upload = (0, _multer.default)(_upload.default);const routes = new _express.Router(); // Generate Token
47
+ */const upload = (0, _multer.default)(_upload.default);const routes = (0, _express.Router)(); // Generate Token
47
48
  routes.post('/api/:session/:secretkey/generate-token', _encryptController.encryptSession); // All Sessions
48
49
  routes.get('/api/:secretkey/show-all-sessions', SessionController.showAllSessions);routes.post('/api/:secretkey/start-all', SessionController.startAllSessions); // Sessions
49
- routes.get('/api/:session/check-connection-session', _auth.default, SessionController.checkConnectionSession);routes.get('/api/:session/get-media-by-message/:messageId', _auth.default, SessionController.getMediaByMessage);routes.get('/api/:session/status-session', _auth.default, SessionController.getSessionState);routes.get('/api/:session/qrcode-session', _auth.default, SessionController.getQrCode);routes.post('/api/:session/start-session', _auth.default, SessionController.startSession);
50
- routes.post('/api/:session/logout-session', _auth.default, _statusConnection.default, SessionController.logOutSession);
51
- routes.post('/api/:session/close-session', _auth.default, SessionController.closeSession);
52
- routes.post('/api/:session/subscribe-presence', _auth.default, SessionController.subscribePresence);
53
- routes.post('/api/:session/download-media', _auth.default, _statusConnection.default, SessionController.downloadMediaByMessage);
54
- routes.post('/api/:session/kill-service-workier', _auth.default, _statusConnection.default, SessionController.killServiceWorker);
55
- routes.post('/api/:session/restart-service', _auth.default, _statusConnection.default, SessionController.restartService);
50
+ routes.get('/api/:session/check-connection-session',
51
+ _auth.default,
52
+ SessionController.checkConnectionSession);
53
+
54
+ routes.get(
55
+ '/api/:session/get-media-by-message/:messageId',
56
+ _auth.default,
57
+ SessionController.getMediaByMessage);
58
+
59
+ routes.get(
60
+ '/api/:session/status-session',
61
+ _auth.default,
62
+ SessionController.getSessionState);
63
+
64
+ routes.get(
65
+ '/api/:session/qrcode-session',
66
+ _auth.default,
67
+ SessionController.getQrCode);
68
+
69
+ routes.post(
70
+ '/api/:session/start-session',
71
+ _auth.default,
72
+ SessionController.startSession);
73
+
74
+ routes.post(
75
+ '/api/:session/logout-session',
76
+ _auth.default,
77
+ _statusConnection.default,
78
+ SessionController.logOutSession);
79
+
80
+ routes.post(
81
+ '/api/:session/close-session',
82
+ _auth.default,
83
+ SessionController.closeSession);
84
+
85
+ routes.post(
86
+ '/api/:session/subscribe-presence',
87
+ _auth.default,
88
+ SessionController.subscribePresence);
89
+
90
+ routes.post(
91
+ '/api/:session/download-media',
92
+ _auth.default,
93
+ _statusConnection.default,
94
+ SessionController.downloadMediaByMessage);
95
+
56
96
 
57
97
  // Messages
58
- routes.post('/api/:session/send-message', _auth.default, _statusConnection.default, MessageController.sendMessage);
98
+ routes.post(
99
+ '/api/:session/send-message',
100
+ _auth.default,
101
+ _statusConnection.default,
102
+ MessageController.sendMessage);
103
+
59
104
  routes.post(
60
105
  '/api/:session/send-image',
61
106
  upload.single('file'),
@@ -77,7 +122,12 @@ _auth.default,
77
122
  _statusConnection.default,
78
123
  MessageController.sendImageAsStickerGif);
79
124
 
80
- routes.post('/api/:session/send-reply', _auth.default, _statusConnection.default, MessageController.replyMessage);
125
+ routes.post(
126
+ '/api/:session/send-reply',
127
+ _auth.default,
128
+ _statusConnection.default,
129
+ MessageController.replyMessage);
130
+
81
131
  routes.post(
82
132
  '/api/:session/send-file',
83
133
  upload.single('file'),
@@ -85,22 +135,92 @@ _auth.default,
85
135
  _statusConnection.default,
86
136
  MessageController.sendFile);
87
137
 
88
- routes.post('/api/:session/send-file-base64', _auth.default, _statusConnection.default, MessageController.sendFile);
89
- routes.post('/api/:session/send-voice', _auth.default, _statusConnection.default, MessageController.sendVoice);
90
- routes.post('/api/:session/send-voice-base64', _auth.default, _statusConnection.default, MessageController.sendVoice64);
91
- routes.post('/api/:session/send-status', _auth.default, _statusConnection.default, MessageController.sendStatusText);
92
- routes.post('/api/:session/send-link-preview', _auth.default, _statusConnection.default, MessageController.sendLinkPreview);
93
- routes.post('/api/:session/send-location', _auth.default, _statusConnection.default, MessageController.sendLocation);
94
- routes.post('/api/:session/send-mentioned', _auth.default, _statusConnection.default, MessageController.sendMentioned);
95
- routes.post('/api/:session/send-buttons', _auth.default, _statusConnection.default, MessageController.sendButtons);
96
- routes.post('/api/:session/send-list-message', _auth.default, _statusConnection.default, MessageController.sendListMessage);
97
- routes.post('/api/:session/send-poll-message', _auth.default, _statusConnection.default, MessageController.sendPollMessage);
138
+ routes.post(
139
+ '/api/:session/send-file-base64',
140
+ _auth.default,
141
+ _statusConnection.default,
142
+ MessageController.sendFile);
143
+
144
+ routes.post(
145
+ '/api/:session/send-voice',
146
+ _auth.default,
147
+ _statusConnection.default,
148
+ MessageController.sendVoice);
149
+
150
+ routes.post(
151
+ '/api/:session/send-voice-base64',
152
+ _auth.default,
153
+ _statusConnection.default,
154
+ MessageController.sendVoice64);
155
+
156
+ routes.post(
157
+ '/api/:session/send-status',
158
+ _auth.default,
159
+ _statusConnection.default,
160
+ MessageController.sendStatusText);
161
+
162
+ routes.post(
163
+ '/api/:session/send-link-preview',
164
+ _auth.default,
165
+ _statusConnection.default,
166
+ MessageController.sendLinkPreview);
167
+
168
+ routes.post(
169
+ '/api/:session/send-location',
170
+ _auth.default,
171
+ _statusConnection.default,
172
+ MessageController.sendLocation);
173
+
174
+ routes.post(
175
+ '/api/:session/send-mentioned',
176
+ _auth.default,
177
+ _statusConnection.default,
178
+ MessageController.sendMentioned);
179
+
180
+ routes.post(
181
+ '/api/:session/send-buttons',
182
+ _auth.default,
183
+ _statusConnection.default,
184
+ MessageController.sendButtons);
185
+
186
+ routes.post(
187
+ '/api/:session/send-list-message',
188
+ _auth.default,
189
+ _statusConnection.default,
190
+ MessageController.sendListMessage);
191
+
192
+ routes.post(
193
+ '/api/:session/send-poll-message',
194
+ _auth.default,
195
+ _statusConnection.default,
196
+ MessageController.sendPollMessage);
197
+
98
198
 
99
199
  // Group
100
- routes.get('/api/:session/all-broadcast-list', _auth.default, _statusConnection.default, GroupController.getAllBroadcastList);
101
- routes.get('/api/:session/all-groups', _auth.default, _statusConnection.default, GroupController.getAllGroups);
102
- routes.get('/api/:session/group-members/:groupId', _auth.default, _statusConnection.default, GroupController.getGroupMembers);
103
- routes.get('/api/:session/group-admins/:groupId', _auth.default, _statusConnection.default, GroupController.getGroupAdmins);
200
+ routes.get(
201
+ '/api/:session/all-broadcast-list',
202
+ _auth.default,
203
+ _statusConnection.default,
204
+ GroupController.getAllBroadcastList);
205
+
206
+ routes.get(
207
+ '/api/:session/all-groups',
208
+ _auth.default,
209
+ _statusConnection.default,
210
+ GroupController.getAllGroups);
211
+
212
+ routes.get(
213
+ '/api/:session/group-members/:groupId',
214
+ _auth.default,
215
+ _statusConnection.default,
216
+ GroupController.getGroupMembers);
217
+
218
+ routes.get(
219
+ '/api/:session/group-admins/:groupId',
220
+ _auth.default,
221
+ _statusConnection.default,
222
+ GroupController.getGroupAdmins);
223
+
104
224
  routes.get(
105
225
  '/api/:session/group-invite-link/:groupId',
106
226
  _auth.default,
@@ -119,28 +239,78 @@ _auth.default,
119
239
  _statusConnection.default,
120
240
  GroupController.getGroupMembersIds);
121
241
 
122
- routes.post('/api/:session/create-group', _auth.default, _statusConnection.default, GroupController.createGroup);
123
- routes.post('/api/:session/leave-group', _auth.default, _statusConnection.default, GroupController.leaveGroup);
124
- routes.post('/api/:session/join-code', _auth.default, _statusConnection.default, GroupController.joinGroupByCode);
125
- routes.post('/api/:session/add-participant-group', _auth.default, _statusConnection.default, GroupController.addParticipant);
126
- routes.post('/api/:session/remove-participant-group', _auth.default, _statusConnection.default, GroupController.removeParticipant);
242
+ routes.post(
243
+ '/api/:session/create-group',
244
+ _auth.default,
245
+ _statusConnection.default,
246
+ GroupController.createGroup);
247
+
248
+ routes.post(
249
+ '/api/:session/leave-group',
250
+ _auth.default,
251
+ _statusConnection.default,
252
+ GroupController.leaveGroup);
253
+
254
+ routes.post(
255
+ '/api/:session/join-code',
256
+ _auth.default,
257
+ _statusConnection.default,
258
+ GroupController.joinGroupByCode);
259
+
260
+ routes.post(
261
+ '/api/:session/add-participant-group',
262
+ _auth.default,
263
+ _statusConnection.default,
264
+ GroupController.addParticipant);
265
+
266
+ routes.post(
267
+ '/api/:session/remove-participant-group',
268
+ _auth.default,
269
+ _statusConnection.default,
270
+ GroupController.removeParticipant);
271
+
127
272
  routes.post(
128
273
  '/api/:session/promote-participant-group',
129
274
  _auth.default,
130
275
  _statusConnection.default,
131
276
  GroupController.promoteParticipant);
132
277
 
133
- routes.post('/api/:session/demote-participant-group', _auth.default, _statusConnection.default, GroupController.demoteParticipant);
278
+ routes.post(
279
+ '/api/:session/demote-participant-group',
280
+ _auth.default,
281
+ _statusConnection.default,
282
+ GroupController.demoteParticipant);
283
+
134
284
  routes.post(
135
285
  '/api/:session/group-info-from-invite-link',
136
286
  _auth.default,
137
287
  _statusConnection.default,
138
288
  GroupController.getGroupInfoFromInviteLink);
139
289
 
140
- routes.post('/api/:session/group-description', _auth.default, _statusConnection.default, GroupController.setGroupDescription);
141
- routes.post('/api/:session/group-property', _auth.default, _statusConnection.default, GroupController.setGroupProperty);
142
- routes.post('/api/:session/group-subject', _auth.default, _statusConnection.default, GroupController.setGroupSubject);
143
- routes.post('/api/:session/messages-admins-only', _auth.default, _statusConnection.default, GroupController.setMessagesAdminsOnly);
290
+ routes.post(
291
+ '/api/:session/group-description',
292
+ _auth.default,
293
+ _statusConnection.default,
294
+ GroupController.setGroupDescription);
295
+
296
+ routes.post(
297
+ '/api/:session/group-property',
298
+ _auth.default,
299
+ _statusConnection.default,
300
+ GroupController.setGroupProperty);
301
+
302
+ routes.post(
303
+ '/api/:session/group-subject',
304
+ _auth.default,
305
+ _statusConnection.default,
306
+ GroupController.setGroupSubject);
307
+
308
+ routes.post(
309
+ '/api/:session/messages-admins-only',
310
+ _auth.default,
311
+ _statusConnection.default,
312
+ GroupController.setMessagesAdminsOnly);
313
+
144
314
  routes.post(
145
315
  '/api/:session/group-pic',
146
316
  upload.single('file'),
@@ -148,10 +318,20 @@ _auth.default,
148
318
  _statusConnection.default,
149
319
  GroupController.setGroupProfilePic);
150
320
 
151
- routes.post('/api/:session/change-privacy-group', _auth.default, _statusConnection.default, GroupController.changePrivacyGroup);
321
+ routes.post(
322
+ '/api/:session/change-privacy-group',
323
+ _auth.default,
324
+ _statusConnection.default,
325
+ GroupController.changePrivacyGroup);
326
+
152
327
 
153
328
  // Chat
154
- routes.get('/api/:session/all-chats', _auth.default, _statusConnection.default, DeviceController.getAllChats);
329
+ routes.get(
330
+ '/api/:session/all-chats',
331
+ _auth.default,
332
+ _statusConnection.default,
333
+ DeviceController.getAllChats);
334
+
155
335
  routes.get(
156
336
  '/api/:session/all-chats-with-messages',
157
337
  _auth.default,
@@ -164,69 +344,299 @@ _auth.default,
164
344
  _statusConnection.default,
165
345
  DeviceController.getAllMessagesInChat);
166
346
 
167
- routes.get('/api/:session/all-new-messages', _auth.default, _statusConnection.default, DeviceController.getAllNewMessages);
168
- routes.get('/api/:session/unread-messages', _auth.default, _statusConnection.default, DeviceController.getUnreadMessages);
169
- routes.get('/api/:session/all-unread-messages', _auth.default, _statusConnection.default, DeviceController.getAllUnreadMessages);
170
- routes.get('/api/:session/chat-by-id/:phone', _auth.default, _statusConnection.default, DeviceController.getChatById);
171
- routes.get('/api/:session/message-by-id/:messageId', _auth.default, _statusConnection.default, DeviceController.getMessageById);
172
- routes.get('/api/:session/chat-is-online/:phone', _auth.default, _statusConnection.default, DeviceController.getChatIsOnline);
173
- routes.get('/api/:session/last-seen/:phone', _auth.default, _statusConnection.default, DeviceController.getLastSeen);
174
- routes.get('/api/:session/list-mutes/:type', _auth.default, _statusConnection.default, DeviceController.getListMutes);
347
+ routes.get(
348
+ '/api/:session/all-new-messages',
349
+ _auth.default,
350
+ _statusConnection.default,
351
+ DeviceController.getAllNewMessages);
352
+
353
+ routes.get(
354
+ '/api/:session/unread-messages',
355
+ _auth.default,
356
+ _statusConnection.default,
357
+ DeviceController.getUnreadMessages);
358
+
359
+ routes.get(
360
+ '/api/:session/all-unread-messages',
361
+ _auth.default,
362
+ _statusConnection.default,
363
+ DeviceController.getAllUnreadMessages);
364
+
365
+ routes.get(
366
+ '/api/:session/chat-by-id/:phone',
367
+ _auth.default,
368
+ _statusConnection.default,
369
+ DeviceController.getChatById);
370
+
371
+ routes.get(
372
+ '/api/:session/message-by-id/:messageId',
373
+ _auth.default,
374
+ _statusConnection.default,
375
+ DeviceController.getMessageById);
376
+
377
+ routes.get(
378
+ '/api/:session/chat-is-online/:phone',
379
+ _auth.default,
380
+ _statusConnection.default,
381
+ DeviceController.getChatIsOnline);
382
+
383
+ routes.get(
384
+ '/api/:session/last-seen/:phone',
385
+ _auth.default,
386
+ _statusConnection.default,
387
+ DeviceController.getLastSeen);
388
+
389
+ routes.get(
390
+ '/api/:session/list-mutes/:type',
391
+ _auth.default,
392
+ _statusConnection.default,
393
+ DeviceController.getListMutes);
394
+
175
395
  routes.get(
176
396
  '/api/:session/load-messages-in-chat/:phone',
177
397
  _auth.default,
178
398
  _statusConnection.default,
179
399
  DeviceController.loadAndGetAllMessagesInChat);
180
400
 
181
- routes.get('/api/:session/get-messages/:phone', _auth.default, _statusConnection.default, DeviceController.getMessages);
182
-
183
- routes.post('/api/:session/archive-chat', _auth.default, _statusConnection.default, DeviceController.archiveChat);
184
- routes.post('/api/:session/archive-all-chats', _auth.default, _statusConnection.default, DeviceController.archiveAllChats);
185
- routes.post('/api/:session/clear-chat', _auth.default, _statusConnection.default, DeviceController.clearChat);
186
- routes.post('/api/:session/clear-all-chats', _auth.default, _statusConnection.default, DeviceController.clearAllChats);
187
- routes.post('/api/:session/delete-chat', _auth.default, _statusConnection.default, DeviceController.deleteChat);
188
- routes.post('/api/:session/delete-all-chats', _auth.default, _statusConnection.default, DeviceController.deleteAllChats);
189
- routes.post('/api/:session/delete-message', _auth.default, _statusConnection.default, DeviceController.deleteMessage);
190
- routes.post('/api/:session/react-message', _auth.default, _statusConnection.default, DeviceController.reactMessage);
191
- routes.post('/api/:session/forward-messages', _auth.default, _statusConnection.default, DeviceController.forwardMessages);
192
- routes.post('/api/:session/mark-unseen', _auth.default, _statusConnection.default, DeviceController.markUnseenMessage);
193
- routes.post('/api/:session/pin-chat', _auth.default, _statusConnection.default, DeviceController.pinChat);
194
- routes.post('/api/:session/contact-vcard', _auth.default, _statusConnection.default, DeviceController.sendContactVcard);
195
- routes.post('/api/:session/send-mute', _auth.default, _statusConnection.default, DeviceController.sendMute);
196
- routes.post('/api/:session/send-seen', _auth.default, _statusConnection.default, DeviceController.sendSeen);
197
- routes.post('/api/:session/chat-state', _auth.default, _statusConnection.default, DeviceController.setChatState);
198
- routes.post('/api/:session/temporary-messages', _auth.default, _statusConnection.default, DeviceController.setTemporaryMessages);
199
- routes.post('/api/:session/typing', _auth.default, _statusConnection.default, DeviceController.setTyping);
200
- routes.post('/api/:session/recording', _auth.default, _statusConnection.default, DeviceController.setRecording);
201
- routes.post('/api/:session/star-message', _auth.default, _statusConnection.default, DeviceController.starMessage);
202
- routes.get('/api/:session/reactions/:id', _auth.default, _statusConnection.default, DeviceController.getReactions);
203
- routes.get('/api/:session/votes/:id', _auth.default, _statusConnection.default, DeviceController.getVotes);
204
- routes.post('/api/:session/reject-call', _auth.default, _statusConnection.default, DeviceController.rejectCall);
401
+ routes.get(
402
+ '/api/:session/get-messages/:phone',
403
+ _auth.default,
404
+ _statusConnection.default,
405
+ DeviceController.getMessages);
406
+
407
+
408
+ routes.post(
409
+ '/api/:session/archive-chat',
410
+ _auth.default,
411
+ _statusConnection.default,
412
+ DeviceController.archiveChat);
413
+
414
+ routes.post(
415
+ '/api/:session/archive-all-chats',
416
+ _auth.default,
417
+ _statusConnection.default,
418
+ DeviceController.archiveAllChats);
419
+
420
+ routes.post(
421
+ '/api/:session/clear-chat',
422
+ _auth.default,
423
+ _statusConnection.default,
424
+ DeviceController.clearChat);
425
+
426
+ routes.post(
427
+ '/api/:session/clear-all-chats',
428
+ _auth.default,
429
+ _statusConnection.default,
430
+ DeviceController.clearAllChats);
431
+
432
+ routes.post(
433
+ '/api/:session/delete-chat',
434
+ _auth.default,
435
+ _statusConnection.default,
436
+ DeviceController.deleteChat);
437
+
438
+ routes.post(
439
+ '/api/:session/delete-all-chats',
440
+ _auth.default,
441
+ _statusConnection.default,
442
+ DeviceController.deleteAllChats);
443
+
444
+ routes.post(
445
+ '/api/:session/delete-message',
446
+ _auth.default,
447
+ _statusConnection.default,
448
+ DeviceController.deleteMessage);
449
+
450
+ routes.post(
451
+ '/api/:session/react-message',
452
+ _auth.default,
453
+ _statusConnection.default,
454
+ DeviceController.reactMessage);
455
+
456
+ routes.post(
457
+ '/api/:session/forward-messages',
458
+ _auth.default,
459
+ _statusConnection.default,
460
+ DeviceController.forwardMessages);
461
+
462
+ routes.post(
463
+ '/api/:session/mark-unseen',
464
+ _auth.default,
465
+ _statusConnection.default,
466
+ DeviceController.markUnseenMessage);
467
+
468
+ routes.post(
469
+ '/api/:session/pin-chat',
470
+ _auth.default,
471
+ _statusConnection.default,
472
+ DeviceController.pinChat);
473
+
474
+ routes.post(
475
+ '/api/:session/contact-vcard',
476
+ _auth.default,
477
+ _statusConnection.default,
478
+ DeviceController.sendContactVcard);
479
+
480
+ routes.post(
481
+ '/api/:session/send-mute',
482
+ _auth.default,
483
+ _statusConnection.default,
484
+ DeviceController.sendMute);
485
+
486
+ routes.post(
487
+ '/api/:session/send-seen',
488
+ _auth.default,
489
+ _statusConnection.default,
490
+ DeviceController.sendSeen);
491
+
492
+ routes.post(
493
+ '/api/:session/chat-state',
494
+ _auth.default,
495
+ _statusConnection.default,
496
+ DeviceController.setChatState);
497
+
498
+ routes.post(
499
+ '/api/:session/temporary-messages',
500
+ _auth.default,
501
+ _statusConnection.default,
502
+ DeviceController.setTemporaryMessages);
503
+
504
+ routes.post(
505
+ '/api/:session/typing',
506
+ _auth.default,
507
+ _statusConnection.default,
508
+ DeviceController.setTyping);
509
+
510
+ routes.post(
511
+ '/api/:session/recording',
512
+ _auth.default,
513
+ _statusConnection.default,
514
+ DeviceController.setRecording);
515
+
516
+ routes.post(
517
+ '/api/:session/star-message',
518
+ _auth.default,
519
+ _statusConnection.default,
520
+ DeviceController.starMessage);
521
+
522
+ routes.get(
523
+ '/api/:session/reactions/:id',
524
+ _auth.default,
525
+ _statusConnection.default,
526
+ DeviceController.getReactions);
527
+
528
+ routes.get(
529
+ '/api/:session/votes/:id',
530
+ _auth.default,
531
+ _statusConnection.default,
532
+ DeviceController.getVotes);
533
+
534
+ routes.post(
535
+ '/api/:session/reject-call',
536
+ _auth.default,
537
+ _statusConnection.default,
538
+ DeviceController.rejectCall);
539
+
205
540
 
206
541
  // Catalog
207
- routes.get('/api/:session/get-products', _auth.default, _statusConnection.default, CatalogController.getProducts);
208
- routes.get('/api/:session/get-product-by-id', _auth.default, _statusConnection.default, CatalogController.getProductById);
209
- routes.post('/api/:session/add-product', _auth.default, _statusConnection.default, CatalogController.addProduct);
210
- routes.post('/api/:session/edit-product', _auth.default, _statusConnection.default, CatalogController.editProduct);
211
- routes.post('/api/:session/del-products', _auth.default, _statusConnection.default, CatalogController.delProducts);
212
- routes.post('/api/:session/change-product-image', _auth.default, _statusConnection.default, CatalogController.changeProductImage);
213
- routes.post('/api/:session/add-product-image', _auth.default, _statusConnection.default, CatalogController.addProductImage);
214
- routes.post('/api/:session/remove-product-image', _auth.default, _statusConnection.default, CatalogController.removeProductImage);
215
- routes.get('/api/:session/get-collections', _auth.default, _statusConnection.default, CatalogController.getCollections);
216
- routes.post('/api/:session/create-collection', _auth.default, _statusConnection.default, CatalogController.createCollection);
217
- routes.post('/api/:session/edit-collection', _auth.default, _statusConnection.default, CatalogController.editCollection);
218
- routes.post('/api/:session/del-collection', _auth.default, _statusConnection.default, CatalogController.deleteCollection);
219
- routes.post('/api/:session/send-link-catalog', _auth.default, _statusConnection.default, CatalogController.sendLinkCatalog);
542
+ routes.get(
543
+ '/api/:session/get-products',
544
+ _auth.default,
545
+ _statusConnection.default,
546
+ CatalogController.getProducts);
547
+
548
+ routes.get(
549
+ '/api/:session/get-product-by-id',
550
+ _auth.default,
551
+ _statusConnection.default,
552
+ CatalogController.getProductById);
553
+
554
+ routes.post(
555
+ '/api/:session/add-product',
556
+ _auth.default,
557
+ _statusConnection.default,
558
+ CatalogController.addProduct);
559
+
560
+ routes.post(
561
+ '/api/:session/edit-product',
562
+ _auth.default,
563
+ _statusConnection.default,
564
+ CatalogController.editProduct);
565
+
566
+ routes.post(
567
+ '/api/:session/del-products',
568
+ _auth.default,
569
+ _statusConnection.default,
570
+ CatalogController.delProducts);
571
+
572
+ routes.post(
573
+ '/api/:session/change-product-image',
574
+ _auth.default,
575
+ _statusConnection.default,
576
+ CatalogController.changeProductImage);
577
+
578
+ routes.post(
579
+ '/api/:session/add-product-image',
580
+ _auth.default,
581
+ _statusConnection.default,
582
+ CatalogController.addProductImage);
583
+
584
+ routes.post(
585
+ '/api/:session/remove-product-image',
586
+ _auth.default,
587
+ _statusConnection.default,
588
+ CatalogController.removeProductImage);
589
+
590
+ routes.get(
591
+ '/api/:session/get-collections',
592
+ _auth.default,
593
+ _statusConnection.default,
594
+ CatalogController.getCollections);
595
+
596
+ routes.post(
597
+ '/api/:session/create-collection',
598
+ _auth.default,
599
+ _statusConnection.default,
600
+ CatalogController.createCollection);
601
+
602
+ routes.post(
603
+ '/api/:session/edit-collection',
604
+ _auth.default,
605
+ _statusConnection.default,
606
+ CatalogController.editCollection);
607
+
608
+ routes.post(
609
+ '/api/:session/del-collection',
610
+ _auth.default,
611
+ _statusConnection.default,
612
+ CatalogController.deleteCollection);
613
+
614
+ routes.post(
615
+ '/api/:session/send-link-catalog',
616
+ _auth.default,
617
+ _statusConnection.default,
618
+ CatalogController.sendLinkCatalog);
619
+
220
620
  routes.post(
221
621
  '/api/:session/set-product-visibility',
222
622
  _auth.default,
223
623
  _statusConnection.default,
224
624
  CatalogController.setProductVisibility);
225
625
 
226
- routes.post('/api/:session/set-cart-enabled', _auth.default, _statusConnection.default, CatalogController.updateCartEnabled);
626
+ routes.post(
627
+ '/api/:session/set-cart-enabled',
628
+ _auth.default,
629
+ _statusConnection.default,
630
+ CatalogController.updateCartEnabled);
631
+
227
632
 
228
633
  // Status
229
- routes.post('/api/:session/send-text-storie', _auth.default, _statusConnection.default, StatusController.sendTextStorie);
634
+ routes.post(
635
+ '/api/:session/send-text-storie',
636
+ _auth.default,
637
+ _statusConnection.default,
638
+ StatusController.sendTextStorie);
639
+
230
640
  routes.post(
231
641
  '/api/:session/send-image-storie',
232
642
  upload.single('file'),
@@ -243,11 +653,36 @@ StatusController.sendVideoStorie);
243
653
 
244
654
 
245
655
  // Labels
246
- routes.post('/api/:session/add-new-label', _auth.default, _statusConnection.default, LabelsController.addNewLabel);
247
- routes.post('/api/:session/add-or-remove-label', _auth.default, _statusConnection.default, LabelsController.addOrRemoveLabels);
248
- routes.get('/api/:session/get-all-labels', _auth.default, _statusConnection.default, LabelsController.getAllLabels);
249
- routes.put('/api/:session/delete-all-labels', _auth.default, _statusConnection.default, LabelsController.deleteAllLabels);
250
- routes.put('/api/:session/delete-label/:id', _auth.default, _statusConnection.default, LabelsController.deleteLabel);
656
+ routes.post(
657
+ '/api/:session/add-new-label',
658
+ _auth.default,
659
+ _statusConnection.default,
660
+ LabelsController.addNewLabel);
661
+
662
+ routes.post(
663
+ '/api/:session/add-or-remove-label',
664
+ _auth.default,
665
+ _statusConnection.default,
666
+ LabelsController.addOrRemoveLabels);
667
+
668
+ routes.get(
669
+ '/api/:session/get-all-labels',
670
+ _auth.default,
671
+ _statusConnection.default,
672
+ LabelsController.getAllLabels);
673
+
674
+ routes.put(
675
+ '/api/:session/delete-all-labels',
676
+ _auth.default,
677
+ _statusConnection.default,
678
+ LabelsController.deleteAllLabels);
679
+
680
+ routes.put(
681
+ '/api/:session/delete-label/:id',
682
+ _auth.default,
683
+ _statusConnection.default,
684
+ LabelsController.deleteLabel);
685
+
251
686
 
252
687
  // Contact
253
688
  routes.get(
@@ -256,21 +691,76 @@ _auth.default,
256
691
  _statusConnection.default,
257
692
  DeviceController.checkNumberStatus);
258
693
 
259
- routes.get('/api/:session/all-contacts', _auth.default, _statusConnection.default, DeviceController.getAllContacts);
260
- routes.get('/api/:session/contact/:phone', _auth.default, _statusConnection.default, DeviceController.getContact);
261
- routes.get('/api/:session/profile/:phone', _auth.default, _statusConnection.default, DeviceController.getNumberProfile);
262
- routes.get('/api/:session/profile-pic/:phone', _auth.default, _statusConnection.default, DeviceController.getProfilePicFromServer);
263
- routes.get('/api/:session/profile-status/:phone', _auth.default, _statusConnection.default, DeviceController.getStatus);
694
+ routes.get(
695
+ '/api/:session/all-contacts',
696
+ _auth.default,
697
+ _statusConnection.default,
698
+ DeviceController.getAllContacts);
699
+
700
+ routes.get(
701
+ '/api/:session/contact/:phone',
702
+ _auth.default,
703
+ _statusConnection.default,
704
+ DeviceController.getContact);
705
+
706
+ routes.get(
707
+ '/api/:session/profile/:phone',
708
+ _auth.default,
709
+ _statusConnection.default,
710
+ DeviceController.getNumberProfile);
711
+
712
+ routes.get(
713
+ '/api/:session/profile-pic/:phone',
714
+ _auth.default,
715
+ _statusConnection.default,
716
+ DeviceController.getProfilePicFromServer);
717
+
718
+ routes.get(
719
+ '/api/:session/profile-status/:phone',
720
+ _auth.default,
721
+ _statusConnection.default,
722
+ DeviceController.getStatus);
723
+
264
724
 
265
725
  // Blocklist
266
- routes.get('/api/:session/blocklist', _auth.default, _statusConnection.default, DeviceController.getBlockList);
267
- routes.post('/api/:session/block-contact', _auth.default, _statusConnection.default, DeviceController.blockContact);
268
- routes.post('/api/:session/unblock-contact', _auth.default, _statusConnection.default, DeviceController.unblockContact);
726
+ routes.get(
727
+ '/api/:session/blocklist',
728
+ _auth.default,
729
+ _statusConnection.default,
730
+ DeviceController.getBlockList);
731
+
732
+ routes.post(
733
+ '/api/:session/block-contact',
734
+ _auth.default,
735
+ _statusConnection.default,
736
+ DeviceController.blockContact);
737
+
738
+ routes.post(
739
+ '/api/:session/unblock-contact',
740
+ _auth.default,
741
+ _statusConnection.default,
742
+ DeviceController.unblockContact);
743
+
269
744
 
270
745
  // Device
271
- routes.get('/api/:session/get-battery-level', _auth.default, _statusConnection.default, DeviceController.getBatteryLevel);
272
- routes.get('/api/:session/host-device', _auth.default, _statusConnection.default, DeviceController.getHostDevice);
273
- routes.get('/api/:session/get-phone-number', _auth.default, _statusConnection.default, DeviceController.getPhoneNumber);
746
+ routes.get(
747
+ '/api/:session/get-battery-level',
748
+ _auth.default,
749
+ _statusConnection.default,
750
+ DeviceController.getBatteryLevel);
751
+
752
+ routes.get(
753
+ '/api/:session/host-device',
754
+ _auth.default,
755
+ _statusConnection.default,
756
+ DeviceController.getHostDevice);
757
+
758
+ routes.get(
759
+ '/api/:session/get-phone-number',
760
+ _auth.default,
761
+ _statusConnection.default,
762
+ DeviceController.getPhoneNumber);
763
+
274
764
 
275
765
  // Profile
276
766
  routes.post(
@@ -280,8 +770,18 @@ _auth.default,
280
770
  _statusConnection.default,
281
771
  DeviceController.setProfilePic);
282
772
 
283
- routes.post('/api/:session/profile-status', _auth.default, _statusConnection.default, DeviceController.setProfileStatus);
284
- routes.post('/api/:session/change-username', _auth.default, _statusConnection.default, DeviceController.setProfileName);
773
+ routes.post(
774
+ '/api/:session/profile-status',
775
+ _auth.default,
776
+ _statusConnection.default,
777
+ DeviceController.setProfileStatus);
778
+
779
+ routes.post(
780
+ '/api/:session/change-username',
781
+ _auth.default,
782
+ _statusConnection.default,
783
+ DeviceController.setProfileName);
784
+
285
785
 
286
786
  // Business
287
787
  routes.get(
@@ -290,7 +790,12 @@ _auth.default,
290
790
  _statusConnection.default,
291
791
  OrderController.getBusinessProfilesProducts);
292
792
 
293
- routes.get('/api/:session/get-order-by-messageId', _auth.default, _statusConnection.default, OrderController.getOrderbyMsg);
793
+ routes.get(
794
+ '/api/:session/get-order-by-messageId',
795
+ _auth.default,
796
+ _statusConnection.default,
797
+ OrderController.getOrderbyMsg);
798
+
294
799
 
295
800
  routes.post('/api/:session/chatwoot', DeviceController.chatWoot);
296
801
 
@@ -303,4 +808,4 @@ routes.get('/healthz', HealthCheck.healthz);
303
808
  routes.get('/unhealthy', HealthCheck.unhealthy);var _default =
304
809
 
305
810
  routes;exports.default = _default;
306
- //# sourceMappingURL=index.js.map
811
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsInJlcXVpcmUiLCJfbXVsdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9zd2FnZ2VyVWlFeHByZXNzIiwiX3VwbG9hZCIsIkNhdGFsb2dDb250cm9sbGVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJEZXZpY2VDb250cm9sbGVyIiwiX2VuY3J5cHRDb250cm9sbGVyIiwiR3JvdXBDb250cm9sbGVyIiwiTGFiZWxzQ29udHJvbGxlciIsIk1lc3NhZ2VDb250cm9sbGVyIiwiT3JkZXJDb250cm9sbGVyIiwiU2Vzc2lvbkNvbnRyb2xsZXIiLCJTdGF0dXNDb250cm9sbGVyIiwiX2F1dGgiLCJIZWFsdGhDaGVjayIsIl9zdGF0dXNDb25uZWN0aW9uIiwiX3N3YWdnZXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwidXBsb2FkIiwibXVsdGVyIiwidXBsb2FkQ29uZmlnIiwicm91dGVzIiwiUm91dGVyIiwicG9zdCIsImVuY3J5cHRTZXNzaW9uIiwic2hvd0FsbFNlc3Npb25zIiwic3RhcnRBbGxTZXNzaW9ucyIsInZlcmlmeVRva2VuIiwiY2hlY2tDb25uZWN0aW9uU2Vzc2lvbiIsImdldE1lZGlhQnlNZXNzYWdlIiwiZ2V0U2Vzc2lvblN0YXRlIiwiZ2V0UXJDb2RlIiwic3RhcnRTZXNzaW9uIiwic3RhdHVzQ29ubmVjdGlvbiIsImxvZ091dFNlc3Npb24iLCJjbG9zZVNlc3Npb24iLCJzdWJzY3JpYmVQcmVzZW5jZSIsImRvd25sb2FkTWVkaWFCeU1lc3NhZ2UiLCJzZW5kTWVzc2FnZSIsInNpbmdsZSIsInNlbmRGaWxlIiwic2VuZEltYWdlQXNTdGlja2VyIiwic2VuZEltYWdlQXNTdGlja2VyR2lmIiwicmVwbHlNZXNzYWdlIiwic2VuZFZvaWNlIiwic2VuZFZvaWNlNjQiLCJzZW5kU3RhdHVzVGV4dCIsInNlbmRMaW5rUHJldmlldyIsInNlbmRMb2NhdGlvbiIsInNlbmRNZW50aW9uZWQiLCJzZW5kQnV0dG9ucyIsInNlbmRMaXN0TWVzc2FnZSIsInNlbmRQb2xsTWVzc2FnZSIsImdldEFsbEJyb2FkY2FzdExpc3QiLCJnZXRBbGxHcm91cHMiLCJnZXRHcm91cE1lbWJlcnMiLCJnZXRHcm91cEFkbWlucyIsImdldEdyb3VwSW52aXRlTGluayIsInJldm9rZUdyb3VwSW52aXRlTGluayIsImdldEdyb3VwTWVtYmVyc0lkcyIsImNyZWF0ZUdyb3VwIiwibGVhdmVHcm91cCIsImpvaW5Hcm91cEJ5Q29kZSIsImFkZFBhcnRpY2lwYW50IiwicmVtb3ZlUGFydGljaXBhbnQiLCJwcm9tb3RlUGFydGljaXBhbnQiLCJkZW1vdGVQYXJ0aWNpcGFudCIsImdldEdyb3VwSW5mb0Zyb21JbnZpdGVMaW5rIiwic2V0R3JvdXBEZXNjcmlwdGlvbiIsInNldEdyb3VwUHJvcGVydHkiLCJzZXRHcm91cFN1YmplY3QiLCJzZXRNZXNzYWdlc0FkbWluc09ubHkiLCJzZXRHcm91cFByb2ZpbGVQaWMiLCJjaGFuZ2VQcml2YWN5R3JvdXAiLCJnZXRBbGxDaGF0cyIsImdldEFsbENoYXRzV2l0aE1lc3NhZ2VzIiwiZ2V0QWxsTWVzc2FnZXNJbkNoYXQiLCJnZXRBbGxOZXdNZXNzYWdlcyIsImdldFVucmVhZE1lc3NhZ2VzIiwiZ2V0QWxsVW5yZWFkTWVzc2FnZXMiLCJnZXRDaGF0QnlJZCIsImdldE1lc3NhZ2VCeUlkIiwiZ2V0Q2hhdElzT25saW5lIiwiZ2V0TGFzdFNlZW4iLCJnZXRMaXN0TXV0ZXMiLCJsb2FkQW5kR2V0QWxsTWVzc2FnZXNJbkNoYXQiLCJnZXRNZXNzYWdlcyIsImFyY2hpdmVDaGF0IiwiYXJjaGl2ZUFsbENoYXRzIiwiY2xlYXJDaGF0IiwiY2xlYXJBbGxDaGF0cyIsImRlbGV0ZUNoYXQiLCJkZWxldGVBbGxDaGF0cyIsImRlbGV0ZU1lc3NhZ2UiLCJyZWFjdE1lc3NhZ2UiLCJmb3J3YXJkTWVzc2FnZXMiLCJtYXJrVW5zZWVuTWVzc2FnZSIsInBpbkNoYXQiLCJzZW5kQ29udGFjdFZjYXJkIiwic2VuZE11dGUiLCJzZW5kU2VlbiIsInNldENoYXRTdGF0ZSIsInNldFRlbXBvcmFyeU1lc3NhZ2VzIiwic2V0VHlwaW5nIiwic2V0UmVjb3JkaW5nIiwic3Rhck1lc3NhZ2UiLCJnZXRSZWFjdGlvbnMiLCJnZXRWb3RlcyIsInJlamVjdENhbGwiLCJnZXRQcm9kdWN0cyIsImdldFByb2R1Y3RCeUlkIiwiYWRkUHJvZHVjdCIsImVkaXRQcm9kdWN0IiwiZGVsUHJvZHVjdHMiLCJjaGFuZ2VQcm9kdWN0SW1hZ2UiLCJhZGRQcm9kdWN0SW1hZ2UiLCJyZW1vdmVQcm9kdWN0SW1hZ2UiLCJnZXRDb2xsZWN0aW9ucyIsImNyZWF0ZUNvbGxlY3Rpb24iLCJlZGl0Q29sbGVjdGlvbiIsImRlbGV0ZUNvbGxlY3Rpb24iLCJzZW5kTGlua0NhdGFsb2ciLCJzZXRQcm9kdWN0VmlzaWJpbGl0eSIsInVwZGF0ZUNhcnRFbmFibGVkIiwic2VuZFRleHRTdG9yaWUiLCJzZW5kSW1hZ2VTdG9yaWUiLCJzZW5kVmlkZW9TdG9yaWUiLCJhZGROZXdMYWJlbCIsImFkZE9yUmVtb3ZlTGFiZWxzIiwiZ2V0QWxsTGFiZWxzIiwicHV0IiwiZGVsZXRlQWxsTGFiZWxzIiwiZGVsZXRlTGFiZWwiLCJjaGVja051bWJlclN0YXR1cyIsImdldEFsbENvbnRhY3RzIiwiZ2V0Q29udGFjdCIsImdldE51bWJlclByb2ZpbGUiLCJnZXRQcm9maWxlUGljRnJvbVNlcnZlciIsImdldFN0YXR1cyIsImdldEJsb2NrTGlzdCIsImJsb2NrQ29udGFjdCIsInVuYmxvY2tDb250YWN0IiwiZ2V0QmF0dGVyeUxldmVsIiwiZ2V0SG9zdERldmljZSIsImdldFBob25lTnVtYmVyIiwic2V0UHJvZmlsZVBpYyIsInNldFByb2ZpbGVTdGF0dXMiLCJzZXRQcm9maWxlTmFtZSIsImdldEJ1c2luZXNzUHJvZmlsZXNQcm9kdWN0cyIsImdldE9yZGVyYnlNc2ciLCJjaGF0V29vdCIsInVzZSIsInN3YWdnZXJVaSIsInNlcnZlIiwic2V0dXAiLCJzd2FnZ2VyRG9jdW1lbnQiLCJoZWFsdGh6IiwidW5oZWFsdGh5IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBtdWx0ZXIgZnJvbSAnbXVsdGVyJztcbmltcG9ydCBzd2FnZ2VyVWkgZnJvbSAnc3dhZ2dlci11aS1leHByZXNzJztcblxuaW1wb3J0IHVwbG9hZENvbmZpZyBmcm9tICcuLi9jb25maWcvdXBsb2FkJztcbmltcG9ydCAqIGFzIENhdGFsb2dDb250cm9sbGVyIGZyb20gJy4uL2NvbnRyb2xsZXIvY2F0YWxvZ0NvbnRyb2xsZXInO1xuaW1wb3J0ICogYXMgRGV2aWNlQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL2RldmljZUNvbnRyb2xsZXInO1xuaW1wb3J0IHsgZW5jcnlwdFNlc3Npb24gfSBmcm9tICcuLi9jb250cm9sbGVyL2VuY3J5cHRDb250cm9sbGVyJztcbmltcG9ydCAqIGFzIEdyb3VwQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL2dyb3VwQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBMYWJlbHNDb250cm9sbGVyIGZyb20gJy4uL2NvbnRyb2xsZXIvbGFiZWxzQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBNZXNzYWdlQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL21lc3NhZ2VDb250cm9sbGVyJztcbmltcG9ydCAqIGFzIE9yZGVyQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL29yZGVyQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBTZXNzaW9uQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL3Nlc3Npb25Db250cm9sbGVyJztcbmltcG9ydCAqIGFzIFN0YXR1c0NvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9zdGF0dXNDb250cm9sbGVyJztcbmltcG9ydCB2ZXJpZnlUb2tlbiBmcm9tICcuLi9taWRkbGV3YXJlL2F1dGgnO1xuaW1wb3J0ICogYXMgSGVhbHRoQ2hlY2sgZnJvbSAnLi4vbWlkZGxld2FyZS9oZWFsdGhDaGVjayc7XG5pbXBvcnQgc3RhdHVzQ29ubmVjdGlvbiBmcm9tICcuLi9taWRkbGV3YXJlL3N0YXR1c0Nvbm5lY3Rpb24nO1xuaW1wb3J0IHN3YWdnZXJEb2N1bWVudCBmcm9tICcuLi9zd2FnZ2VyLmpzb24nO1xuXG5jb25zdCB1cGxvYWQgPSBtdWx0ZXIodXBsb2FkQ29uZmlnIGFzIGFueSk7XG5jb25zdCByb3V0ZXMgPSBSb3V0ZXIoKTtcblxuLy8gR2VuZXJhdGUgVG9rZW5cbnJvdXRlcy5wb3N0KCcvYXBpLzpzZXNzaW9uLzpzZWNyZXRrZXkvZ2VuZXJhdGUtdG9rZW4nLCBlbmNyeXB0U2Vzc2lvbik7XG5cbi8vIEFsbCBTZXNzaW9uc1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlY3JldGtleS9zaG93LWFsbC1zZXNzaW9ucycsXG4gIFNlc3Npb25Db250cm9sbGVyLnNob3dBbGxTZXNzaW9uc1xuKTtcbnJvdXRlcy5wb3N0KCcvYXBpLzpzZWNyZXRrZXkvc3RhcnQtYWxsJywgU2Vzc2lvbkNvbnRyb2xsZXIuc3RhcnRBbGxTZXNzaW9ucyk7XG5cbi8vIFNlc3Npb25zXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGVjay1jb25uZWN0aW9uLXNlc3Npb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuY2hlY2tDb25uZWN0aW9uU2Vzc2lvblxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1tZWRpYS1ieS1tZXNzYWdlLzptZXNzYWdlSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuZ2V0TWVkaWFCeU1lc3NhZ2Vcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9zdGF0dXMtc2Vzc2lvbicsXG4gIHZlcmlmeVRva2VuLFxuICBTZXNzaW9uQ29udHJvbGxlci5nZXRTZXNzaW9uU3RhdGVcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9xcmNvZGUtc2Vzc2lvbicsXG4gIHZlcmlmeVRva2VuLFxuICBTZXNzaW9uQ29udHJvbGxlci5nZXRRckNvZGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc3RhcnQtc2Vzc2lvbicsXG4gIHZlcmlmeVRva2VuLFxuICBTZXNzaW9uQ29udHJvbGxlci5zdGFydFNlc3Npb25cbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vbG9nb3V0LXNlc3Npb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIubG9nT3V0U2Vzc2lvblxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jbG9zZS1zZXNzaW9uJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIFNlc3Npb25Db250cm9sbGVyLmNsb3NlU2Vzc2lvblxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zdWJzY3JpYmUtcHJlc2VuY2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuc3Vic2NyaWJlUHJlc2VuY2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZG93bmxvYWQtbWVkaWEnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuZG93bmxvYWRNZWRpYUJ5TWVzc2FnZVxuKTtcblxuLy8gTWVzc2FnZXNcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLW1lc3NhZ2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZE1lc3NhZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1pbWFnZScsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRGaWxlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtc3RpY2tlcicsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRJbWFnZUFzU3RpY2tlclxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLXN0aWNrZXItZ2lmJyxcbiAgdXBsb2FkLnNpbmdsZSgnZmlsZScpLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZEltYWdlQXNTdGlja2VyR2lmXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtcmVwbHknLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIucmVwbHlNZXNzYWdlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtZmlsZScsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRGaWxlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtZmlsZS1iYXNlNjQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZEZpbGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC12b2ljZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBNZXNzYWdlQ29udHJvbGxlci5zZW5kVm9pY2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC12b2ljZS1iYXNlNjQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZFZvaWNlNjRcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1zdGF0dXMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZFN0YXR1c1RleHRcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1saW5rLXByZXZpZXcnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZExpbmtQcmV2aWV3XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbG9jYXRpb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZExvY2F0aW9uXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbWVudGlvbmVkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRNZW50aW9uZWRcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1idXR0b25zJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRCdXR0b25zXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbGlzdC1tZXNzYWdlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRMaXN0TWVzc2FnZVxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLXBvbGwtbWVzc2FnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBNZXNzYWdlQ29udHJvbGxlci5zZW5kUG9sbE1lc3NhZ2Vcbik7XG5cbi8vIEdyb3VwXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtYnJvYWRjYXN0LWxpc3QnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmdldEFsbEJyb2FkY2FzdExpc3Rcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtZ3JvdXBzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5nZXRBbGxHcm91cHNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ncm91cC1tZW1iZXJzLzpncm91cElkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5nZXRHcm91cE1lbWJlcnNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ncm91cC1hZG1pbnMvOmdyb3VwSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmdldEdyb3VwQWRtaW5zXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtaW52aXRlLWxpbmsvOmdyb3VwSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmdldEdyb3VwSW52aXRlTGlua1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dyb3VwLXJldm9rZS1saW5rLzpncm91cElkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5yZXZva2VHcm91cEludml0ZUxpbmtcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ncm91cC1tZW1iZXJzLWlkcy86Z3JvdXBJZCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuZ2V0R3JvdXBNZW1iZXJzSWRzXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NyZWF0ZS1ncm91cCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuY3JlYXRlR3JvdXBcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vbGVhdmUtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmxlYXZlR3JvdXBcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vam9pbi1jb2RlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5qb2luR3JvdXBCeUNvZGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vYWRkLXBhcnRpY2lwYW50LWdyb3VwJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5hZGRQYXJ0aWNpcGFudFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9yZW1vdmUtcGFydGljaXBhbnQtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnJlbW92ZVBhcnRpY2lwYW50XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3Byb21vdGUtcGFydGljaXBhbnQtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnByb21vdGVQYXJ0aWNpcGFudFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9kZW1vdGUtcGFydGljaXBhbnQtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmRlbW90ZVBhcnRpY2lwYW50XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2dyb3VwLWluZm8tZnJvbS1pbnZpdGUtbGluaycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuZ2V0R3JvdXBJbmZvRnJvbUludml0ZUxpbmtcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtZGVzY3JpcHRpb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnNldEdyb3VwRGVzY3JpcHRpb25cbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtcHJvcGVydHknLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnNldEdyb3VwUHJvcGVydHlcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtc3ViamVjdCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuc2V0R3JvdXBTdWJqZWN0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL21lc3NhZ2VzLWFkbWlucy1vbmx5JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5zZXRNZXNzYWdlc0FkbWluc09ubHlcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtcGljJyxcbiAgdXBsb2FkLnNpbmdsZSgnZmlsZScpLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnNldEdyb3VwUHJvZmlsZVBpY1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGFuZ2UtcHJpdmFjeS1ncm91cCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuY2hhbmdlUHJpdmFjeUdyb3VwXG4pO1xuXG4vLyBDaGF0XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtY2hhdHMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRBbGxDaGF0c1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2FsbC1jaGF0cy13aXRoLW1lc3NhZ2VzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0QWxsQ2hhdHNXaXRoTWVzc2FnZXNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtbWVzc2FnZXMtaW4tY2hhdC86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRBbGxNZXNzYWdlc0luQ2hhdFxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2FsbC1uZXctbWVzc2FnZXMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRBbGxOZXdNZXNzYWdlc1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL3VucmVhZC1tZXNzYWdlcycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldFVucmVhZE1lc3NhZ2VzXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vYWxsLXVucmVhZC1tZXNzYWdlcycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldEFsbFVucmVhZE1lc3NhZ2VzXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vY2hhdC1ieS1pZC86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRDaGF0QnlJZFxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL21lc3NhZ2UtYnktaWQvOm1lc3NhZ2VJZCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldE1lc3NhZ2VCeUlkXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vY2hhdC1pcy1vbmxpbmUvOnBob25lJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0Q2hhdElzT25saW5lXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vbGFzdC1zZWVuLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldExhc3RTZWVuXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vbGlzdC1tdXRlcy86dHlwZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldExpc3RNdXRlc1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2xvYWQtbWVzc2FnZXMtaW4tY2hhdC86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5sb2FkQW5kR2V0QWxsTWVzc2FnZXNJbkNoYXRcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtbWVzc2FnZXMvOnBob25lJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0TWVzc2FnZXNcbik7XG5cbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9hcmNoaXZlLWNoYXQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5hcmNoaXZlQ2hhdFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9hcmNoaXZlLWFsbC1jaGF0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmFyY2hpdmVBbGxDaGF0c1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jbGVhci1jaGF0JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuY2xlYXJDaGF0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NsZWFyLWFsbC1jaGF0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmNsZWFyQWxsQ2hhdHNcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZGVsZXRlLWNoYXQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5kZWxldGVDaGF0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2RlbGV0ZS1hbGwtY2hhdHMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5kZWxldGVBbGxDaGF0c1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9kZWxldGUtbWVzc2FnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmRlbGV0ZU1lc3NhZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vcmVhY3QtbWVzc2FnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnJlYWN0TWVzc2FnZVxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9mb3J3YXJkLW1lc3NhZ2VzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZm9yd2FyZE1lc3NhZ2VzXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL21hcmstdW5zZWVuJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIubWFya1Vuc2Vlbk1lc3NhZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vcGluLWNoYXQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5waW5DaGF0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NvbnRhY3QtdmNhcmQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5zZW5kQ29udGFjdFZjYXJkXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbXV0ZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNlbmRNdXRlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtc2VlbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNlbmRTZWVuXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NoYXQtc3RhdGUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5zZXRDaGF0U3RhdGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vdGVtcG9yYXJ5LW1lc3NhZ2VzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0VGVtcG9yYXJ5TWVzc2FnZXNcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vdHlwaW5nJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0VHlwaW5nXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3JlY29yZGluZycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNldFJlY29yZGluZ1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zdGFyLW1lc3NhZ2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5zdGFyTWVzc2FnZVxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL3JlYWN0aW9ucy86aWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRSZWFjdGlvbnNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi92b3Rlcy86aWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRWb3Rlc1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9yZWplY3QtY2FsbCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnJlamVjdENhbGxcbik7XG5cbi8vIENhdGFsb2dcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1wcm9kdWN0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5nZXRQcm9kdWN0c1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1wcm9kdWN0LWJ5LWlkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLmdldFByb2R1Y3RCeUlkXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2FkZC1wcm9kdWN0JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLmFkZFByb2R1Y3Rcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZWRpdC1wcm9kdWN0JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLmVkaXRQcm9kdWN0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2RlbC1wcm9kdWN0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5kZWxQcm9kdWN0c1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGFuZ2UtcHJvZHVjdC1pbWFnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5jaGFuZ2VQcm9kdWN0SW1hZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vYWRkLXByb2R1Y3QtaW1hZ2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgQ2F0YWxvZ0NvbnRyb2xsZXIuYWRkUHJvZHVjdEltYWdlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3JlbW92ZS1wcm9kdWN0LWltYWdlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLnJlbW92ZVByb2R1Y3RJbWFnZVxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1jb2xsZWN0aW9ucycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5nZXRDb2xsZWN0aW9uc1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jcmVhdGUtY29sbGVjdGlvbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5jcmVhdGVDb2xsZWN0aW9uXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2VkaXQtY29sbGVjdGlvbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5lZGl0Q29sbGVjdGlvblxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9kZWwtY29sbGVjdGlvbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5kZWxldGVDb2xsZWN0aW9uXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbGluay1jYXRhbG9nJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLnNlbmRMaW5rQ2F0YWxvZ1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZXQtcHJvZHVjdC12aXNpYmlsaXR5JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLnNldFByb2R1Y3RWaXNpYmlsaXR5XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NldC1jYXJ0LWVuYWJsZWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgQ2F0YWxvZ0NvbnRyb2xsZXIudXBkYXRlQ2FydEVuYWJsZWRcbik7XG5cbi8vIFN0YXR1c1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtdGV4dC1zdG9yaWUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU3RhdHVzQ29udHJvbGxlci5zZW5kVGV4dFN0b3JpZVxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLWltYWdlLXN0b3JpZScsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIFN0YXR1c0NvbnRyb2xsZXIuc2VuZEltYWdlU3RvcmllXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtdmlkZW8tc3RvcmllJyxcbiAgdXBsb2FkLnNpbmdsZSgnZmlsZScpLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU3RhdHVzQ29udHJvbGxlci5zZW5kVmlkZW9TdG9yaWVcbik7XG5cbi8vIExhYmVsc1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2FkZC1uZXctbGFiZWwnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTGFiZWxzQ29udHJvbGxlci5hZGROZXdMYWJlbFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9hZGQtb3ItcmVtb3ZlLWxhYmVsJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIExhYmVsc0NvbnRyb2xsZXIuYWRkT3JSZW1vdmVMYWJlbHNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtYWxsLWxhYmVscycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBMYWJlbHNDb250cm9sbGVyLmdldEFsbExhYmVsc1xuKTtcbnJvdXRlcy5wdXQoXG4gICcvYXBpLzpzZXNzaW9uL2RlbGV0ZS1hbGwtbGFiZWxzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIExhYmVsc0NvbnRyb2xsZXIuZGVsZXRlQWxsTGFiZWxzXG4pO1xucm91dGVzLnB1dChcbiAgJy9hcGkvOnNlc3Npb24vZGVsZXRlLWxhYmVsLzppZCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBMYWJlbHNDb250cm9sbGVyLmRlbGV0ZUxhYmVsXG4pO1xuXG4vLyBDb250YWN0XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGVjay1udW1iZXItc3RhdHVzLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmNoZWNrTnVtYmVyU3RhdHVzXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vYWxsLWNvbnRhY3RzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0QWxsQ29udGFjdHNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9jb250YWN0LzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldENvbnRhY3Rcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9wcm9maWxlLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldE51bWJlclByb2ZpbGVcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9wcm9maWxlLXBpYy86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRQcm9maWxlUGljRnJvbVNlcnZlclxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL3Byb2ZpbGUtc3RhdHVzLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldFN0YXR1c1xuKTtcblxuLy8gQmxvY2tsaXN0XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ibG9ja2xpc3QnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRCbG9ja0xpc3Rcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vYmxvY2stY29udGFjdCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmJsb2NrQ29udGFjdFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi91bmJsb2NrLWNvbnRhY3QnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci51bmJsb2NrQ29udGFjdFxuKTtcblxuLy8gRGV2aWNlXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtYmF0dGVyeS1sZXZlbCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldEJhdHRlcnlMZXZlbFxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2hvc3QtZGV2aWNlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0SG9zdERldmljZVxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1waG9uZS1udW1iZXInLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRQaG9uZU51bWJlclxuKTtcblxuLy8gUHJvZmlsZVxucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NldC1wcm9maWxlLXBpYycsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0UHJvZmlsZVBpY1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9wcm9maWxlLXN0YXR1cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNldFByb2ZpbGVTdGF0dXNcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vY2hhbmdlLXVzZXJuYW1lJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0UHJvZmlsZU5hbWVcbik7XG5cbi8vIEJ1c2luZXNzXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtYnVzaW5lc3MtcHJvZmlsZXMtcHJvZHVjdHMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgT3JkZXJDb250cm9sbGVyLmdldEJ1c2luZXNzUHJvZmlsZXNQcm9kdWN0c1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1vcmRlci1ieS1tZXNzYWdlSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgT3JkZXJDb250cm9sbGVyLmdldE9yZGVyYnlNc2dcbik7XG5cbnJvdXRlcy5wb3N0KCcvYXBpLzpzZXNzaW9uL2NoYXR3b290JywgRGV2aWNlQ29udHJvbGxlci5jaGF0V29vdCk7XG5cbi8vIEFwaSBEb2NcbnJvdXRlcy51c2UoJy9hcGktZG9jcycsIHN3YWdnZXJVaS5zZXJ2ZSk7XG5yb3V0ZXMuZ2V0KCcvYXBpLWRvY3MnLCBzd2FnZ2VyVWkuc2V0dXAoc3dhZ2dlckRvY3VtZW50KSk7XG5cbi8vazhzXG5yb3V0ZXMuZ2V0KCcvaGVhbHRoeicsIEhlYWx0aENoZWNrLmhlYWx0aHopO1xucm91dGVzLmdldCgnL3VuaGVhbHRoeScsIEhlYWx0aENoZWNrLnVuaGVhbHRoeSk7XG5cbmV4cG9ydCBkZWZhdWx0IHJvdXRlcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTs7QUFFQSxJQUFBSSxPQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBQyx1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQUQsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFRLGtCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxlQUFBLEdBQUFILHVCQUFBLENBQUFOLE9BQUE7QUFDQSxJQUFBVSxnQkFBQSxHQUFBSix1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQVcsaUJBQUEsR0FBQUwsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFZLGVBQUEsR0FBQU4sdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFhLGlCQUFBLEdBQUFQLHVCQUFBLENBQUFOLE9BQUE7QUFDQSxJQUFBYyxnQkFBQSxHQUFBUix1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQWUsS0FBQSxHQUFBYixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWdCLFdBQUEsR0FBQVYsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFpQixpQkFBQSxHQUFBZixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFB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