@rosen-bridge/watcher-data-extractor 5.1.1 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/EventTriggerDB.d.ts +33 -0
- package/dist/actions/EventTriggerDB.d.ts.map +1 -0
- package/dist/actions/EventTriggerDB.js +145 -0
- package/dist/actions/commitmentDB.d.ts +32 -0
- package/dist/actions/commitmentDB.d.ts.map +1 -0
- package/dist/actions/commitmentDB.js +129 -0
- package/dist/actions/permitDB.d.ts +39 -0
- package/dist/actions/permitDB.d.ts.map +1 -0
- package/dist/actions/permitDB.js +166 -0
- package/dist/extractor/permitExtractor.d.ts +2 -0
- package/dist/extractor/permitExtractor.d.ts.map +1 -1
- package/dist/network/ergoNetworkApi.d.ts +15 -0
- package/dist/network/ergoNetworkApi.d.ts.map +1 -0
- package/dist/network/ergoNetworkApi.js +27 -0
- package/dist/network/parser.d.ts +8 -0
- package/dist/network/parser.d.ts.map +1 -0
- package/dist/network/parser.js +5 -0
- package/package.json +2 -2
- package/dist/migrations/postgres/1703509820315-migration.d.ts +0 -7
- package/dist/migrations/postgres/1703509820315-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1703509820315-migration.js +0 -66
- package/dist/migrations/postgres/1708189757400-migration.d.ts +0 -7
- package/dist/migrations/postgres/1708189757400-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1708189757400-migration.js +0 -28
- package/dist/migrations/sqlite/1703509480176-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1703509480176-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1703509480176-migration.js +0 -421
- package/dist/migrations/sqlite/1708175020320-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1708175020320-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1708175020320-migration.js +0 -27
- package/dist/migrations/sqlite/migration1706610773176-migration.d.ts +0 -7
- package/dist/migrations/sqlite/migration1706610773176-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1706610773176-migration.js +0 -419
- package/dist/transformers.d.ts +0 -17
- package/dist/transformers.d.ts.map +0 -1
- package/dist/transformers.js +0 -21
|
@@ -1,421 +0,0 @@
|
|
|
1
|
-
import EventTriggerEntity from '../../entities/EventTriggerEntity';
|
|
2
|
-
import { getWidInfo } from '../../utils';
|
|
3
|
-
export class migration1703509480176 {
|
|
4
|
-
name = 'migration1703509480176';
|
|
5
|
-
async up(queryRunner) {
|
|
6
|
-
// get all events before removing WIDs column
|
|
7
|
-
const events = await queryRunner.connection
|
|
8
|
-
.createQueryBuilder()
|
|
9
|
-
.select('id')
|
|
10
|
-
.addSelect('WIDs')
|
|
11
|
-
.from('event_trigger_entity', 'ete')
|
|
12
|
-
.getRawMany();
|
|
13
|
-
await queryRunner.query(`
|
|
14
|
-
CREATE TABLE "temporary_event_trigger_entity" (
|
|
15
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
16
|
-
"eventId" varchar NOT NULL DEFAULT ('Not-set'),
|
|
17
|
-
"txId" varchar NOT NULL,
|
|
18
|
-
"extractor" varchar NOT NULL,
|
|
19
|
-
"boxId" varchar NOT NULL,
|
|
20
|
-
"boxSerialized" varchar NOT NULL,
|
|
21
|
-
"block" varchar NOT NULL,
|
|
22
|
-
"height" integer NOT NULL,
|
|
23
|
-
"fromChain" varchar NOT NULL,
|
|
24
|
-
"toChain" varchar NOT NULL,
|
|
25
|
-
"fromAddress" varchar NOT NULL,
|
|
26
|
-
"toAddress" varchar NOT NULL,
|
|
27
|
-
"amount" varchar NOT NULL,
|
|
28
|
-
"bridgeFee" varchar NOT NULL,
|
|
29
|
-
"networkFee" varchar NOT NULL,
|
|
30
|
-
"sourceChainTokenId" varchar NOT NULL,
|
|
31
|
-
"sourceChainHeight" integer NOT NULL,
|
|
32
|
-
"targetChainTokenId" varchar NOT NULL,
|
|
33
|
-
"sourceTxId" varchar NOT NULL,
|
|
34
|
-
"sourceBlockId" varchar NOT NULL,
|
|
35
|
-
"spendBlock" text,
|
|
36
|
-
"spendHeight" integer,
|
|
37
|
-
"spendTxId" text,
|
|
38
|
-
"result" text,
|
|
39
|
-
"paymentTxId" text,
|
|
40
|
-
"WIDsCount" integer NOT NULL,
|
|
41
|
-
"WIDsHash" varchar NOT NULL,
|
|
42
|
-
CONSTRAINT "UQ_c905f221a1b6271ca4405dbbe5f" UNIQUE ("boxId", "extractor")
|
|
43
|
-
)
|
|
44
|
-
`);
|
|
45
|
-
await queryRunner.query(`
|
|
46
|
-
INSERT INTO "temporary_event_trigger_entity"(
|
|
47
|
-
"id",
|
|
48
|
-
"eventId",
|
|
49
|
-
"txId",
|
|
50
|
-
"extractor",
|
|
51
|
-
"boxId",
|
|
52
|
-
"boxSerialized",
|
|
53
|
-
"block",
|
|
54
|
-
"height",
|
|
55
|
-
"fromChain",
|
|
56
|
-
"toChain",
|
|
57
|
-
"fromAddress",
|
|
58
|
-
"toAddress",
|
|
59
|
-
"amount",
|
|
60
|
-
"bridgeFee",
|
|
61
|
-
"networkFee",
|
|
62
|
-
"sourceChainTokenId",
|
|
63
|
-
"sourceChainHeight",
|
|
64
|
-
"targetChainTokenId",
|
|
65
|
-
"sourceTxId",
|
|
66
|
-
"sourceBlockId",
|
|
67
|
-
"spendBlock",
|
|
68
|
-
"spendHeight",
|
|
69
|
-
"spendTxId",
|
|
70
|
-
"result",
|
|
71
|
-
"paymentTxId",
|
|
72
|
-
"WIDsCount",
|
|
73
|
-
"WIDsHash"
|
|
74
|
-
)
|
|
75
|
-
SELECT "id",
|
|
76
|
-
"eventId",
|
|
77
|
-
"txId",
|
|
78
|
-
"extractor",
|
|
79
|
-
"boxId",
|
|
80
|
-
"boxSerialized",
|
|
81
|
-
"block",
|
|
82
|
-
"height",
|
|
83
|
-
"fromChain",
|
|
84
|
-
"toChain",
|
|
85
|
-
"fromAddress",
|
|
86
|
-
"toAddress",
|
|
87
|
-
"amount",
|
|
88
|
-
"bridgeFee",
|
|
89
|
-
"networkFee",
|
|
90
|
-
"sourceChainTokenId",
|
|
91
|
-
"sourceChainHeight",
|
|
92
|
-
"targetChainTokenId",
|
|
93
|
-
"sourceTxId",
|
|
94
|
-
"sourceBlockId",
|
|
95
|
-
"spendBlock",
|
|
96
|
-
"spendHeight",
|
|
97
|
-
"spendTxId",
|
|
98
|
-
"result",
|
|
99
|
-
"paymentTxId",
|
|
100
|
-
0,
|
|
101
|
-
''
|
|
102
|
-
FROM "event_trigger_entity"
|
|
103
|
-
`);
|
|
104
|
-
await queryRunner.query(`
|
|
105
|
-
DROP TABLE "event_trigger_entity"
|
|
106
|
-
`);
|
|
107
|
-
await queryRunner.query(`
|
|
108
|
-
ALTER TABLE "temporary_event_trigger_entity"
|
|
109
|
-
RENAME TO "event_trigger_entity"
|
|
110
|
-
`);
|
|
111
|
-
// calculate `WIDsCount` and `WIDsHash` columns in `event_trigger_entity`
|
|
112
|
-
for (const event of events) {
|
|
113
|
-
const { WIDsHash, WIDsCount } = getWidInfo(event.WIDs);
|
|
114
|
-
await queryRunner.connection
|
|
115
|
-
.getRepository(EventTriggerEntity)
|
|
116
|
-
.update({ id: event.id }, { WIDsHash, WIDsCount });
|
|
117
|
-
}
|
|
118
|
-
await queryRunner.query(`
|
|
119
|
-
CREATE TABLE "temporary_commitment_entity" (
|
|
120
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
121
|
-
"txId" varchar NOT NULL,
|
|
122
|
-
"extractor" varchar NOT NULL,
|
|
123
|
-
"eventId" varchar NOT NULL,
|
|
124
|
-
"commitment" varchar NOT NULL,
|
|
125
|
-
"WID" varchar NOT NULL,
|
|
126
|
-
"boxId" varchar NOT NULL,
|
|
127
|
-
"block" varchar NOT NULL,
|
|
128
|
-
"height" integer NOT NULL,
|
|
129
|
-
"boxSerialized" varchar NOT NULL,
|
|
130
|
-
"spendBlock" text,
|
|
131
|
-
"spendHeight" integer,
|
|
132
|
-
"rwtCount" varchar,
|
|
133
|
-
"spendTxId" text,
|
|
134
|
-
"spendIndex" integer,
|
|
135
|
-
CONSTRAINT "UQ_cc294fc304a66f8f194840f1ece" UNIQUE ("boxId", "extractor")
|
|
136
|
-
)
|
|
137
|
-
`);
|
|
138
|
-
await queryRunner.query(`
|
|
139
|
-
INSERT INTO "temporary_commitment_entity"(
|
|
140
|
-
"id",
|
|
141
|
-
"txId",
|
|
142
|
-
"extractor",
|
|
143
|
-
"eventId",
|
|
144
|
-
"commitment",
|
|
145
|
-
"WID",
|
|
146
|
-
"boxId",
|
|
147
|
-
"block",
|
|
148
|
-
"height",
|
|
149
|
-
"boxSerialized",
|
|
150
|
-
"spendBlock",
|
|
151
|
-
"spendHeight",
|
|
152
|
-
"rwtCount"
|
|
153
|
-
)
|
|
154
|
-
SELECT "id",
|
|
155
|
-
"txId",
|
|
156
|
-
"extractor",
|
|
157
|
-
"eventId",
|
|
158
|
-
"commitment",
|
|
159
|
-
"WID",
|
|
160
|
-
"boxId",
|
|
161
|
-
"block",
|
|
162
|
-
"height",
|
|
163
|
-
"boxSerialized",
|
|
164
|
-
"spendBlock",
|
|
165
|
-
"spendHeight",
|
|
166
|
-
"rwtCount"
|
|
167
|
-
FROM "commitment_entity"
|
|
168
|
-
`);
|
|
169
|
-
await queryRunner.query(`
|
|
170
|
-
DROP TABLE "commitment_entity"
|
|
171
|
-
`);
|
|
172
|
-
await queryRunner.query(`
|
|
173
|
-
ALTER TABLE "temporary_commitment_entity"
|
|
174
|
-
RENAME TO "commitment_entity"
|
|
175
|
-
`);
|
|
176
|
-
}
|
|
177
|
-
async down(queryRunner) {
|
|
178
|
-
await queryRunner.query(`
|
|
179
|
-
ALTER TABLE "commitment_entity"
|
|
180
|
-
RENAME TO "temporary_commitment_entity"
|
|
181
|
-
`);
|
|
182
|
-
await queryRunner.query(`
|
|
183
|
-
CREATE TABLE "commitment_entity" (
|
|
184
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
185
|
-
"txId" varchar NOT NULL,
|
|
186
|
-
"extractor" varchar NOT NULL,
|
|
187
|
-
"eventId" varchar NOT NULL,
|
|
188
|
-
"commitment" varchar NOT NULL,
|
|
189
|
-
"WID" varchar NOT NULL,
|
|
190
|
-
"boxId" varchar NOT NULL,
|
|
191
|
-
"block" varchar NOT NULL,
|
|
192
|
-
"height" integer NOT NULL,
|
|
193
|
-
"boxSerialized" varchar NOT NULL,
|
|
194
|
-
"spendBlock" text,
|
|
195
|
-
"spendHeight" integer,
|
|
196
|
-
"rwtCount" varchar,
|
|
197
|
-
CONSTRAINT "UQ_cc294fc304a66f8f194840f1ece" UNIQUE ("boxId", "extractor")
|
|
198
|
-
)
|
|
199
|
-
`);
|
|
200
|
-
await queryRunner.query(`
|
|
201
|
-
INSERT INTO "commitment_entity"(
|
|
202
|
-
"id",
|
|
203
|
-
"txId",
|
|
204
|
-
"extractor",
|
|
205
|
-
"eventId",
|
|
206
|
-
"commitment",
|
|
207
|
-
"WID",
|
|
208
|
-
"boxId",
|
|
209
|
-
"block",
|
|
210
|
-
"height",
|
|
211
|
-
"boxSerialized",
|
|
212
|
-
"spendBlock",
|
|
213
|
-
"spendHeight",
|
|
214
|
-
"rwtCount"
|
|
215
|
-
)
|
|
216
|
-
SELECT "id",
|
|
217
|
-
"txId",
|
|
218
|
-
"extractor",
|
|
219
|
-
"eventId",
|
|
220
|
-
"commitment",
|
|
221
|
-
"WID",
|
|
222
|
-
"boxId",
|
|
223
|
-
"block",
|
|
224
|
-
"height",
|
|
225
|
-
"boxSerialized",
|
|
226
|
-
"spendBlock",
|
|
227
|
-
"spendHeight",
|
|
228
|
-
"rwtCount"
|
|
229
|
-
FROM "temporary_commitment_entity"
|
|
230
|
-
`);
|
|
231
|
-
await queryRunner.query(`
|
|
232
|
-
DROP TABLE "temporary_commitment_entity"
|
|
233
|
-
`);
|
|
234
|
-
await queryRunner.query(`
|
|
235
|
-
ALTER TABLE "event_trigger_entity"
|
|
236
|
-
RENAME TO "temporary_event_trigger_entity"
|
|
237
|
-
`);
|
|
238
|
-
await queryRunner.query(`
|
|
239
|
-
CREATE TABLE "event_trigger_entity" (
|
|
240
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
241
|
-
"eventId" varchar NOT NULL DEFAULT ('Not-set'),
|
|
242
|
-
"txId" varchar NOT NULL,
|
|
243
|
-
"extractor" varchar NOT NULL,
|
|
244
|
-
"boxId" varchar NOT NULL,
|
|
245
|
-
"boxSerialized" varchar NOT NULL,
|
|
246
|
-
"block" varchar NOT NULL,
|
|
247
|
-
"height" integer NOT NULL,
|
|
248
|
-
"fromChain" varchar NOT NULL,
|
|
249
|
-
"toChain" varchar NOT NULL,
|
|
250
|
-
"fromAddress" varchar NOT NULL,
|
|
251
|
-
"toAddress" varchar NOT NULL,
|
|
252
|
-
"amount" varchar NOT NULL,
|
|
253
|
-
"bridgeFee" varchar NOT NULL,
|
|
254
|
-
"networkFee" varchar NOT NULL,
|
|
255
|
-
"sourceChainTokenId" varchar NOT NULL,
|
|
256
|
-
"sourceChainHeight" integer NOT NULL,
|
|
257
|
-
"targetChainTokenId" varchar NOT NULL,
|
|
258
|
-
"sourceTxId" varchar NOT NULL,
|
|
259
|
-
"sourceBlockId" varchar NOT NULL,
|
|
260
|
-
"spendBlock" text,
|
|
261
|
-
"spendHeight" integer,
|
|
262
|
-
"spendTxId" text,
|
|
263
|
-
"result" text,
|
|
264
|
-
"paymentTxId" text,
|
|
265
|
-
CONSTRAINT "UQ_c905f221a1b6271ca4405dbbe5f" UNIQUE ("boxId", "extractor")
|
|
266
|
-
)
|
|
267
|
-
`);
|
|
268
|
-
await queryRunner.query(`
|
|
269
|
-
INSERT INTO "event_trigger_entity"(
|
|
270
|
-
"id",
|
|
271
|
-
"eventId",
|
|
272
|
-
"txId",
|
|
273
|
-
"extractor",
|
|
274
|
-
"boxId",
|
|
275
|
-
"boxSerialized",
|
|
276
|
-
"block",
|
|
277
|
-
"height",
|
|
278
|
-
"fromChain",
|
|
279
|
-
"toChain",
|
|
280
|
-
"fromAddress",
|
|
281
|
-
"toAddress",
|
|
282
|
-
"amount",
|
|
283
|
-
"bridgeFee",
|
|
284
|
-
"networkFee",
|
|
285
|
-
"sourceChainTokenId",
|
|
286
|
-
"sourceChainHeight",
|
|
287
|
-
"targetChainTokenId",
|
|
288
|
-
"sourceTxId",
|
|
289
|
-
"sourceBlockId",
|
|
290
|
-
"spendBlock",
|
|
291
|
-
"spendHeight",
|
|
292
|
-
"spendTxId",
|
|
293
|
-
"result",
|
|
294
|
-
"paymentTxId"
|
|
295
|
-
)
|
|
296
|
-
SELECT "id",
|
|
297
|
-
"eventId",
|
|
298
|
-
"txId",
|
|
299
|
-
"extractor",
|
|
300
|
-
"boxId",
|
|
301
|
-
"boxSerialized",
|
|
302
|
-
"block",
|
|
303
|
-
"height",
|
|
304
|
-
"fromChain",
|
|
305
|
-
"toChain",
|
|
306
|
-
"fromAddress",
|
|
307
|
-
"toAddress",
|
|
308
|
-
"amount",
|
|
309
|
-
"bridgeFee",
|
|
310
|
-
"networkFee",
|
|
311
|
-
"sourceChainTokenId",
|
|
312
|
-
"sourceChainHeight",
|
|
313
|
-
"targetChainTokenId",
|
|
314
|
-
"sourceTxId",
|
|
315
|
-
"sourceBlockId",
|
|
316
|
-
"spendBlock",
|
|
317
|
-
"spendHeight",
|
|
318
|
-
"spendTxId",
|
|
319
|
-
"result",
|
|
320
|
-
"paymentTxId"
|
|
321
|
-
FROM "temporary_event_trigger_entity"
|
|
322
|
-
`);
|
|
323
|
-
await queryRunner.query(`
|
|
324
|
-
DROP TABLE "temporary_event_trigger_entity"
|
|
325
|
-
`);
|
|
326
|
-
await queryRunner.query(`
|
|
327
|
-
ALTER TABLE "event_trigger_entity"
|
|
328
|
-
RENAME TO "temporary_event_trigger_entity"
|
|
329
|
-
`);
|
|
330
|
-
await queryRunner.query(`
|
|
331
|
-
CREATE TABLE "event_trigger_entity" (
|
|
332
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
333
|
-
"eventId" varchar NOT NULL DEFAULT ('Not-set'),
|
|
334
|
-
"txId" varchar NOT NULL,
|
|
335
|
-
"extractor" varchar NOT NULL,
|
|
336
|
-
"boxId" varchar NOT NULL,
|
|
337
|
-
"boxSerialized" varchar NOT NULL,
|
|
338
|
-
"block" varchar NOT NULL,
|
|
339
|
-
"height" integer NOT NULL,
|
|
340
|
-
"fromChain" varchar NOT NULL,
|
|
341
|
-
"toChain" varchar NOT NULL,
|
|
342
|
-
"fromAddress" varchar NOT NULL,
|
|
343
|
-
"toAddress" varchar NOT NULL,
|
|
344
|
-
"amount" varchar NOT NULL,
|
|
345
|
-
"bridgeFee" varchar NOT NULL,
|
|
346
|
-
"networkFee" varchar NOT NULL,
|
|
347
|
-
"sourceChainTokenId" varchar NOT NULL,
|
|
348
|
-
"sourceChainHeight" integer NOT NULL,
|
|
349
|
-
"targetChainTokenId" varchar NOT NULL,
|
|
350
|
-
"sourceTxId" varchar NOT NULL,
|
|
351
|
-
"sourceBlockId" varchar NOT NULL,
|
|
352
|
-
"WIDs" varchar NOT NULL,
|
|
353
|
-
"spendBlock" text,
|
|
354
|
-
"spendHeight" integer,
|
|
355
|
-
"spendTxId" text,
|
|
356
|
-
"result" text,
|
|
357
|
-
"paymentTxId" text,
|
|
358
|
-
CONSTRAINT "UQ_c905f221a1b6271ca4405dbbe5f" UNIQUE ("boxId", "extractor")
|
|
359
|
-
)
|
|
360
|
-
`);
|
|
361
|
-
await queryRunner.query(`
|
|
362
|
-
INSERT INTO "event_trigger_entity"(
|
|
363
|
-
"id",
|
|
364
|
-
"eventId",
|
|
365
|
-
"txId",
|
|
366
|
-
"extractor",
|
|
367
|
-
"boxId",
|
|
368
|
-
"boxSerialized",
|
|
369
|
-
"block",
|
|
370
|
-
"height",
|
|
371
|
-
"fromChain",
|
|
372
|
-
"toChain",
|
|
373
|
-
"fromAddress",
|
|
374
|
-
"toAddress",
|
|
375
|
-
"amount",
|
|
376
|
-
"bridgeFee",
|
|
377
|
-
"networkFee",
|
|
378
|
-
"sourceChainTokenId",
|
|
379
|
-
"sourceChainHeight",
|
|
380
|
-
"targetChainTokenId",
|
|
381
|
-
"sourceTxId",
|
|
382
|
-
"sourceBlockId",
|
|
383
|
-
"spendBlock",
|
|
384
|
-
"spendHeight",
|
|
385
|
-
"spendTxId",
|
|
386
|
-
"result",
|
|
387
|
-
"paymentTxId"
|
|
388
|
-
)
|
|
389
|
-
SELECT "id",
|
|
390
|
-
"eventId",
|
|
391
|
-
"txId",
|
|
392
|
-
"extractor",
|
|
393
|
-
"boxId",
|
|
394
|
-
"boxSerialized",
|
|
395
|
-
"block",
|
|
396
|
-
"height",
|
|
397
|
-
"fromChain",
|
|
398
|
-
"toChain",
|
|
399
|
-
"fromAddress",
|
|
400
|
-
"toAddress",
|
|
401
|
-
"amount",
|
|
402
|
-
"bridgeFee",
|
|
403
|
-
"networkFee",
|
|
404
|
-
"sourceChainTokenId",
|
|
405
|
-
"sourceChainHeight",
|
|
406
|
-
"targetChainTokenId",
|
|
407
|
-
"sourceTxId",
|
|
408
|
-
"sourceBlockId",
|
|
409
|
-
"spendBlock",
|
|
410
|
-
"spendHeight",
|
|
411
|
-
"spendTxId",
|
|
412
|
-
"result",
|
|
413
|
-
"paymentTxId"
|
|
414
|
-
FROM "temporary_event_trigger_entity"
|
|
415
|
-
`);
|
|
416
|
-
await queryRunner.query(`
|
|
417
|
-
DROP TABLE "temporary_event_trigger_entity"
|
|
418
|
-
`);
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcwMzUwOTQ4MDE3Ni1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvMTcwMzUwOTQ4MDE3Ni1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxrQkFBa0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBSSxHQUFHLHdCQUF3QixDQUFDO0lBRXpCLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBd0I7UUFDdEMsNkNBQTZDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLFVBQVU7YUFDeEMsa0JBQWtCLEVBQUU7YUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNaLFNBQVMsQ0FBQyxNQUFNLENBQUM7YUFDakIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQzthQUNuQyxVQUFVLEVBQUUsQ0FBQztRQUVoQixNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0ErQm5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQTBEbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztTQUVuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7OztTQUduQixDQUFDLENBQUM7UUFFUCx5RUFBeUU7UUFDekUsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7WUFDMUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUUsS0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sV0FBVyxDQUFDLFVBQVU7aUJBQ3pCLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDakMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBbUJuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQThCbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztTQUVuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7OztTQUduQixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUN4QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7OztTQUduQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBaUJuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQThCbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztTQUVuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7OztTQUduQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBNkJuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXNEbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztTQUVuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7OztTQUduQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQThCbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzRG5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7U0FFbkIsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWlncmF0aW9uSW50ZXJmYWNlLCBRdWVyeVJ1bm5lciB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IEV2ZW50VHJpZ2dlckVudGl0eSBmcm9tICcuLi8uLi9lbnRpdGllcy9FdmVudFRyaWdnZXJFbnRpdHknO1xuaW1wb3J0IHsgZ2V0V2lkSW5mbyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIG1pZ3JhdGlvbjE3MDM1MDk0ODAxNzYgaW1wbGVtZW50cyBNaWdyYXRpb25JbnRlcmZhY2Uge1xuICBuYW1lID0gJ21pZ3JhdGlvbjE3MDM1MDk0ODAxNzYnO1xuXG4gIHB1YmxpYyBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBnZXQgYWxsIGV2ZW50cyBiZWZvcmUgcmVtb3ZpbmcgV0lEcyBjb2x1bW5cbiAgICBjb25zdCBldmVudHMgPSBhd2FpdCBxdWVyeVJ1bm5lci5jb25uZWN0aW9uXG4gICAgICAuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgIC5zZWxlY3QoJ2lkJylcbiAgICAgIC5hZGRTZWxlY3QoJ1dJRHMnKVxuICAgICAgLmZyb20oJ2V2ZW50X3RyaWdnZXJfZW50aXR5JywgJ2V0ZScpXG4gICAgICAuZ2V0UmF3TWFueSgpO1xuXG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCIgKFxuICAgICAgICAgICAgICAgIFwiaWRcIiBpbnRlZ2VyIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJldmVudElkXCIgdmFyY2hhciBOT1QgTlVMTCBERUZBVUxUICgnTm90LXNldCcpLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJleHRyYWN0b3JcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYm94SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJibG9ja1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJoZWlnaHRcIiBpbnRlZ2VyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInRvQ2hhaW5cIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZnJvbUFkZHJlc3NcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidG9BZGRyZXNzXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImFtb3VudFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJicmlkZ2VGZWVcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwibmV0d29ya0ZlZVwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpblRva2VuSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5IZWlnaHRcIiBpbnRlZ2VyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZVR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlQmxvY2tJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIgdGV4dCxcbiAgICAgICAgICAgICAgICBcInNwZW5kSGVpZ2h0XCIgaW50ZWdlcixcbiAgICAgICAgICAgICAgICBcInNwZW5kVHhJZFwiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwicGF5bWVudFR4SWRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwiV0lEc0NvdW50XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcIldJRHNIYXNoXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfYzkwNWYyMjFhMWI2MjcxY2E0NDA1ZGJiZTVmXCIgVU5JUVVFIChcImJveElkXCIsIFwiZXh0cmFjdG9yXCIpXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIElOU0VSVCBJTlRPIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCIoXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJldmVudElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiLFxuICAgICAgICAgICAgICAgICAgICBcImJveElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidG9DaGFpblwiLFxuICAgICAgICAgICAgICAgICAgICBcImZyb21BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidG9BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYW1vdW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYnJpZGdlRmVlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmV0d29ya0ZlZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluVG9rZW5JZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluSGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlVHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNvdXJjZUJsb2NrSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3BlbmRIZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJyZXN1bHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJwYXltZW50VHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcIldJRHNDb3VudFwiLFxuICAgICAgICAgICAgICAgICAgICBcIldJRHNIYXNoXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBTRUxFQ1QgXCJpZFwiLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgIFwidG9BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiLFxuICAgICAgICAgICAgICAgIFwibmV0d29ya0ZlZVwiLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIixcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCIsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgRlJPTSBcImV2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgRFJPUCBUQUJMRSBcImV2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQUxURVIgVEFCTEUgXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICAgICAgICAgIFJFTkFNRSBUTyBcImV2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG5cbiAgICAvLyBjYWxjdWxhdGUgYFdJRHNDb3VudGAgYW5kIGBXSURzSGFzaGAgY29sdW1ucyBpbiBgZXZlbnRfdHJpZ2dlcl9lbnRpdHlgXG4gICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICAgIGNvbnN0IHsgV0lEc0hhc2gsIFdJRHNDb3VudCB9ID0gZ2V0V2lkSW5mbygoZXZlbnQgYXMgYW55KS5XSURzKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3Rpb25cbiAgICAgICAgLmdldFJlcG9zaXRvcnkoRXZlbnRUcmlnZ2VyRW50aXR5KVxuICAgICAgICAudXBkYXRlKHsgaWQ6IGV2ZW50LmlkIH0sIHsgV0lEc0hhc2gsIFdJRHNDb3VudCB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJ0ZW1wb3JhcnlfY29tbWl0bWVudF9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV2ZW50SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiY29tbWl0bWVudFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJXSURcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYm94SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJyd3RDb3VudFwiIHZhcmNoYXIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwic3BlbmRJbmRleFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRX2NjMjk0ZmMzMDRhNjZmOGYxOTQ4NDBmMWVjZVwiIFVOSVFVRSAoXCJib3hJZFwiLCBcImV4dHJhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBJTlNFUlQgSU5UTyBcInRlbXBvcmFyeV9jb21taXRtZW50X2VudGl0eVwiKFxuICAgICAgICAgICAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjb21taXRtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiV0lEXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3BlbmRIZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJyd3RDb3VudFwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgU0VMRUNUIFwiaWRcIixcbiAgICAgICAgICAgICAgICBcInR4SWRcIixcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgIFwiY29tbWl0bWVudFwiLFxuICAgICAgICAgICAgICAgIFwiV0lEXCIsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRIZWlnaHRcIixcbiAgICAgICAgICAgICAgICBcInJ3dENvdW50XCJcbiAgICAgICAgICAgIEZST00gXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIEFMVEVSIFRBQkxFIFwidGVtcG9yYXJ5X2NvbW1pdG1lbnRfZW50aXR5XCJcbiAgICAgICAgICAgICAgICBSRU5BTUUgVE8gXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvd24ocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQUxURVIgVEFCTEUgXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgICAgICAgICAgUkVOQU1FIFRPIFwidGVtcG9yYXJ5X2NvbW1pdG1lbnRfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwiY29tbWl0bWVudF9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV2ZW50SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiY29tbWl0bWVudFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJXSURcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYm94SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJyd3RDb3VudFwiIHZhcmNoYXIsXG4gICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRX2NjMjk0ZmMzMDRhNjZmOGYxOTQ4NDBmMWVjZVwiIFVOSVFVRSAoXCJib3hJZFwiLCBcImV4dHJhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBJTlNFUlQgSU5UTyBcImNvbW1pdG1lbnRfZW50aXR5XCIoXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImNvbW1pdG1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJXSURcIixcbiAgICAgICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcInJ3dENvdW50XCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBTRUxFQ1QgXCJpZFwiLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJldmVudElkXCIsXG4gICAgICAgICAgICAgICAgXCJjb21taXRtZW50XCIsXG4gICAgICAgICAgICAgICAgXCJXSURcIixcbiAgICAgICAgICAgICAgICBcImJveElkXCIsXG4gICAgICAgICAgICAgICAgXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwicnd0Q291bnRcIlxuICAgICAgICAgICAgRlJPTSBcInRlbXBvcmFyeV9jb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJ0ZW1wb3JhcnlfY29tbWl0bWVudF9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBBTFRFUiBUQUJMRSBcImV2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgICAgICAgICBSRU5BTUUgVE8gXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJldmVudF90cmlnZ2VyX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgaW50ZWdlciBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiIHZhcmNoYXIgTk9UIE5VTEwgREVGQVVMVCAoJ05vdC1zZXQnKSxcbiAgICAgICAgICAgICAgICBcInR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImZyb21DaGFpblwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImZyb21BZGRyZXNzXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInRvQWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYnJpZGdlRmVlXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcIm5ldHdvcmtGZWVcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluSGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInRhcmdldENoYWluVG9rZW5JZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUJsb2NrSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwicmVzdWx0XCIgdGV4dCxcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCIgdGV4dCxcbiAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfYzkwNWYyMjFhMWI2MjcxY2E0NDA1ZGJiZTVmXCIgVU5JUVVFIChcImJveElkXCIsIFwiZXh0cmFjdG9yXCIpXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIElOU0VSVCBJTlRPIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIihcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZnJvbUFkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJicmlkZ2VGZWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5IZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQmxvY2tJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kVHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInJlc3VsdFwiLFxuICAgICAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBTRUxFQ1QgXCJpZFwiLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgIFwidG9BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiLFxuICAgICAgICAgICAgICAgIFwibmV0d29ya0ZlZVwiLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIixcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgIEZST00gXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQUxURVIgVEFCTEUgXCJldmVudF90cmlnZ2VyX2VudGl0eVwiXG4gICAgICAgICAgICAgICAgUkVOQU1FIFRPIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV2ZW50SWRcIiB2YXJjaGFyIE5PVCBOVUxMIERFRkFVTFQgKCdOb3Qtc2V0JyksXG4gICAgICAgICAgICAgICAgXCJ0eElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJsb2NrXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidG9DaGFpblwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYW1vdW50XCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluVG9rZW5JZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlVHhJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcIldJRHNcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwicmVzdWx0XCIgdGV4dCxcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCIgdGV4dCxcbiAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfYzkwNWYyMjFhMWI2MjcxY2E0NDA1ZGJiZTVmXCIgVU5JUVVFIChcImJveElkXCIsIFwiZXh0cmFjdG9yXCIpXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIElOU0VSVCBJTlRPIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIihcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZnJvbUFkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJicmlkZ2VGZWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5IZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQmxvY2tJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kVHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInJlc3VsdFwiLFxuICAgICAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBTRUxFQ1QgXCJpZFwiLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgIFwidG9BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiLFxuICAgICAgICAgICAgICAgIFwibmV0d29ya0ZlZVwiLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIixcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgIEZST00gXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
-
export declare class Migration1708175020320 implements MigrationInterface {
|
|
3
|
-
name: string;
|
|
4
|
-
up(queryRunner: QueryRunner): Promise<void>;
|
|
5
|
-
down(queryRunner: QueryRunner): Promise<void>;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=1708175020320-migration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"1708175020320-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/1708175020320-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export class Migration1708175020320 {
|
|
2
|
-
name = 'Migration1708175020320';
|
|
3
|
-
async up(queryRunner) {
|
|
4
|
-
await queryRunner.query(`
|
|
5
|
-
CREATE TABLE "collateral_entity" (
|
|
6
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
7
|
-
"extractor" varchar NOT NULL,
|
|
8
|
-
"boxId" varchar NOT NULL,
|
|
9
|
-
"boxSerialized" varchar NOT NULL,
|
|
10
|
-
"wId" varchar NOT NULL,
|
|
11
|
-
"rwtCount" bigint NOT NULL,
|
|
12
|
-
"txId" varchar NOT NULL,
|
|
13
|
-
"block" varchar,
|
|
14
|
-
"height" integer,
|
|
15
|
-
"spendBlock" text,
|
|
16
|
-
"spendHeight" integer,
|
|
17
|
-
CONSTRAINT "UQ_2d4abc2071df9a2300a5e1b4616" UNIQUE ("boxId", "extractor")
|
|
18
|
-
)
|
|
19
|
-
`);
|
|
20
|
-
}
|
|
21
|
-
async down(queryRunner) {
|
|
22
|
-
await queryRunner.query(`
|
|
23
|
-
DROP TABLE "collateral_entity"
|
|
24
|
-
`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcwODE3NTAyMDMyMC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvMTcwODE3NTAyMDMyMC1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFekIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7OztTQWVuQixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUN4QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pZ3JhdGlvbkludGVyZmFjZSwgUXVlcnlSdW5uZXIgfSBmcm9tICd0eXBlb3JtJztcblxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbjE3MDgxNzUwMjAzMjAgaW1wbGVtZW50cyBNaWdyYXRpb25JbnRlcmZhY2Uge1xuICBuYW1lID0gJ01pZ3JhdGlvbjE3MDgxNzUwMjAzMjAnO1xuXG4gIHB1YmxpYyBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJjb2xsYXRlcmFsX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgaW50ZWdlciBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwid0lkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInJ3dENvdW50XCIgYmlnaW50IE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJibG9ja1wiIHZhcmNoYXIsXG4gICAgICAgICAgICAgICAgXCJoZWlnaHRcIiBpbnRlZ2VyLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRXzJkNGFiYzIwNzFkZjlhMjMwMGE1ZTFiNDYxNlwiIFVOSVFVRSAoXCJib3hJZFwiLCBcImV4dHJhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJjb2xsYXRlcmFsX2VudGl0eVwiXG4gICAgICAgIGApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
-
export declare class migration1706610773176 implements MigrationInterface {
|
|
3
|
-
name: string;
|
|
4
|
-
up(queryRunner: QueryRunner): Promise<void>;
|
|
5
|
-
down(queryRunner: QueryRunner): Promise<void>;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=migration1706610773176-migration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migration1706610773176-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/migration1706610773176-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI1D,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA+K3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAmP3D"}
|