@pie-element/categorize 13.2.0-beta.0 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +68 -10
  2. package/configure/CHANGELOG.md +65 -8
  3. package/configure/package.json +5 -5
  4. package/controller/CHANGELOG.md +31 -4
  5. package/controller/package.json +1 -1
  6. package/lib/index.js +2 -2
  7. package/lib/index.js.map +1 -1
  8. package/package.json +6 -6
  9. package/configure/lib/__tests__/main.test.js +0 -100
  10. package/configure/lib/__tests__/utils.js +0 -39
  11. package/configure/lib/design/__tests__/builder.test.js +0 -34
  12. package/configure/lib/design/__tests__/buttons.test.js +0 -36
  13. package/configure/lib/design/__tests__/header.test.js +0 -37
  14. package/configure/lib/design/__tests__/index.test.js +0 -269
  15. package/configure/lib/design/__tests__/input-header.test.js +0 -41
  16. package/configure/lib/design/categories/__tests__/alternateResponses.test.js +0 -93
  17. package/configure/lib/design/categories/__tests__/category.test.js +0 -65
  18. package/configure/lib/design/categories/__tests__/choice-preview.test.js +0 -52
  19. package/configure/lib/design/categories/__tests__/droppable-placeholder.test.js +0 -63
  20. package/configure/lib/design/categories/__tests__/index.test.js +0 -91
  21. package/configure/lib/design/choices/__tests__/choice.test.js +0 -62
  22. package/configure/lib/design/choices/__tests__/config.test.js +0 -66
  23. package/configure/lib/design/choices/__tests__/index.test.js +0 -70
  24. package/controller/lib/__tests__/index.test.js +0 -526
  25. package/docs/demo/.pie/.configure/package.json +0 -10
  26. package/docs/demo/.pie/.configure/yarn.lock +0 -2122
  27. package/docs/demo/.pie/.controllers/package.json +0 -10
  28. package/docs/demo/.pie/.controllers/yarn.lock +0 -110
  29. package/docs/demo/.pie/info.entry.js +0 -89
  30. package/docs/demo/.pie/info.webpack.config.js +0 -119
  31. package/docs/demo/.pie/package.json +0 -10
  32. package/docs/demo/.pie/yarn.lock +0 -2137
  33. package/docs/demo/pie.manifest.json +0 -11
  34. package/lib/__tests__/index.test.js +0 -197
  35. package/lib/categorize/__tests__/categories.test.js +0 -138
  36. package/lib/categorize/__tests__/category.test.js +0 -137
  37. package/lib/categorize/__tests__/choice.test.js +0 -88
  38. package/lib/categorize/__tests__/choices.test.js +0 -118
  39. package/lib/categorize/__tests__/droppable-placeholder.test.js +0 -96
  40. package/lib/categorize/__tests__/grid-content.test.js +0 -48
  41. package/lib/categorize/__tests__/index.test.js +0 -250
@@ -1,526 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _index = require("../index");
5
- var _react = _interopRequireDefault(require("react"));
6
- jest.mock('@pie-lib/categorize', () => ({
7
- // used this algorithm in order to control the value of correct; check `fakeCorrect` below
8
- buildState: (mockedCategories, choices, answers) => ({
9
- categories: mockedCategories,
10
- correct: mockedCategories === answers
11
- })
12
- }));
13
- jest.mock('@pie-lib/feedback', () => ({
14
- getFeedbackForCorrectness: () => new Promise(resolve => resolve('This is getFeedbackForCorrectness response.'))
15
- }));
16
- jest.mock('@pie-lib/controller-utils', () => ({
17
- ...jest.requireActual('@pie-lib/controller-utils'),
18
- getShuffledChoices: (choices, session, updateSession, key) => {
19
- const currentShuffled = ((session || {}).shuffledValues || []).filter(v => v);
20
- if (session && !currentShuffled.length && updateSession && typeof updateSession === 'function') {
21
- updateSession();
22
- }
23
- return choices;
24
- },
25
- partialScoring: {
26
- enabled: (config, env) => {
27
- config = config || {};
28
- env = env || {};
29
- if (config.partialScoring === false) {
30
- return false;
31
- }
32
- if (env.partialScoring === false) {
33
- return false;
34
- }
35
- return true;
36
- }
37
- }
38
- }));
39
- const categories = [{
40
- id: '1',
41
- label: 'One'
42
- }];
43
- const choices = [{
44
- id: '1',
45
- content: 'Foo'
46
- }, {
47
- id: '2',
48
- content: 'Bar'
49
- }];
50
- const category10 = {
51
- id: '10',
52
- label: 'SUM=10'
53
- };
54
- const category11 = {
55
- id: '11',
56
- label: 'SUM=11'
57
- };
58
- const choice3 = {
59
- id: '3',
60
- content: '3'
61
- };
62
- const choice4 = {
63
- id: '4',
64
- content: '4'
65
- };
66
- const choice5 = {
67
- id: '5',
68
- content: '5'
69
- };
70
- const choice6 = {
71
- id: '6',
72
- content: '6'
73
- };
74
- const choice7 = {
75
- id: '7',
76
- content: '7'
77
- };
78
- const scoringCorrectResponseNoAlternates = [{
79
- category: '10',
80
- choices: ['3', '7']
81
- }, {
82
- category: '11',
83
- choices: ['4', '7']
84
- }];
85
- const scoringCorrectResponseWithAlternates = [{
86
- category: '10',
87
- choices: ['3', '7'],
88
- alternateResponses: [['4', '6']]
89
- }, {
90
- category: '11',
91
- choices: ['4', '7'],
92
- alternateResponses: [['5', '6']]
93
- }];
94
- const makeQuestion = extras => ({
95
- categories,
96
- choices,
97
- correctResponse: [{
98
- category: '1',
99
- choices: ['1', '2']
100
- }],
101
- lockChoiceOrder: true,
102
- ...extras
103
- });
104
- describe('controller', () => {
105
- let question = makeQuestion();
106
- describe('model', () => {
107
- it('returns model', async () => {
108
- const result = await (0, _index.model)(question, {}, {
109
- mode: 'gather'
110
- }, jest.fn());
111
- expect(result).toMatchObject({
112
- ...question,
113
- correctResponse: undefined
114
- });
115
- });
116
- it('returns model in evaluate mode', async () => {
117
- const result = await (0, _index.model)(question, {}, {
118
- mode: 'evaluate'
119
- }, jest.fn());
120
- expect(result).toMatchObject({
121
- ...question,
122
- correctness: 'incorrect'
123
- });
124
- });
125
- it('feedback: returns proper feedback in evaluate mode', async () => {
126
- const result = await (0, _index.model)({
127
- ...question,
128
- feedbackEnabled: true
129
- }, {}, {
130
- mode: 'evaluate'
131
- }, jest.fn());
132
- expect(result.feedback).toEqual('This is getFeedbackForCorrectness response.');
133
- });
134
- it('feedback: returns proper feedback if feedback is not enabled', async () => {
135
- const result = await (0, _index.model)({
136
- ...question,
137
- feedbackEnabled: false
138
- }, {}, {
139
- mode: 'evaluate'
140
- }, jest.fn());
141
- expect(result.feedback).toEqual(undefined);
142
- });
143
- it('feedback: returns proper feedback in gather mode', async () => {
144
- const result = await (0, _index.model)(question, {}, {
145
- mode: 'gather'
146
- }, jest.fn());
147
- expect(result.feedback).toEqual(undefined);
148
- });
149
- describe('disabled', () => {
150
- it('disabled false for gather', async () => {
151
- const result = await (0, _index.model)(question, {}, {
152
- mode: 'gather'
153
- }, jest.fn());
154
- expect(result).toMatchObject({
155
- disabled: false
156
- });
157
- });
158
- it('disabled true for view', async () => {
159
- const result = await (0, _index.model)(question, {}, {
160
- mode: 'view'
161
- }, jest.fn());
162
- expect(result).toMatchObject({
163
- disabled: true
164
- });
165
- });
166
- it('disabled true for evaluate', async () => {
167
- const result = await (0, _index.model)(question, {}, {
168
- mode: 'evaluate'
169
- }, jest.fn());
170
- expect(result).toMatchObject({
171
- disabled: true
172
- });
173
- });
174
- });
175
- it('adds correctResponse for evaluate', async () => {
176
- const result = await (0, _index.model)(question, {}, {
177
- mode: 'evaluate'
178
- }, jest.fn());
179
- expect(result).toMatchObject({
180
- correctResponse: [{
181
- category: '1',
182
- choices: ['1', '2']
183
- }]
184
- });
185
- });
186
- it('adds default config', async () => {
187
- const result = await (0, _index.model)(question, {}, {
188
- mode: 'gather'
189
- }, jest.fn());
190
- expect(result).toMatchObject({
191
- categoriesPerRow: 2,
192
- choicesLabel: ''
193
- });
194
- });
195
- describe('model - with updateSession', () => {
196
- it('calls updateSession', async () => {
197
- const session = {
198
- id: '1',
199
- element: 'categorize-element'
200
- };
201
- const env = {
202
- mode: 'gather'
203
- };
204
- const updateSession = jest.fn().mockResolvedValue();
205
- await (0, _index.model)({
206
- id: '1',
207
- element: 'categorize-element',
208
- ...question,
209
- lockChoiceOrder: false
210
- }, session, env, updateSession);
211
- expect(updateSession).toHaveBeenCalled();
212
- });
213
- });
214
- });
215
- describe('correct response', () => {
216
- it('returns correct response if env is correct', async () => {
217
- const sess = await (0, _index.createCorrectResponseSession)(question, {
218
- mode: 'gather',
219
- role: 'instructor'
220
- });
221
- expect(sess).toEqual({
222
- answers: [{
223
- category: '1',
224
- choices: ['1', '2']
225
- }],
226
- id: 1
227
- });
228
- });
229
- it('returns null env is student', async () => {
230
- const noResult = await (0, _index.createCorrectResponseSession)(question, {
231
- mode: 'gather',
232
- role: 'student'
233
- });
234
- expect(noResult).toBeNull();
235
- });
236
- });
237
- const mC1 = [{
238
- id: '10',
239
- label: 'SUM=10',
240
- correct: true,
241
- choices: [{
242
- ...choice3,
243
- correct: true
244
- }, {
245
- ...choice7,
246
- correct: true
247
- }]
248
- }, {
249
- id: '11',
250
- label: 'SUM=11',
251
- correct: false,
252
- choices: [{
253
- ...choice3,
254
- correct: true
255
- }, {
256
- ...choice7,
257
- correct: false
258
- }]
259
- }];
260
- const mC2 = [{
261
- id: '10',
262
- label: 'SUM=10',
263
- correct: true,
264
- choices: [{
265
- ...choice3,
266
- correct: true
267
- }, {
268
- ...choice7,
269
- correct: true
270
- }]
271
- }, {
272
- id: '11',
273
- label: 'SUM=11',
274
- correct: true,
275
- choices: [{
276
- ...choice3,
277
- correct: true
278
- }, {
279
- ...choice7,
280
- correct: true
281
- }]
282
- }];
283
- const mC3 = [{
284
- id: '10',
285
- label: 'SUM=10',
286
- correct: true,
287
- choices: [{
288
- ...choice3,
289
- correct: true
290
- }, {
291
- ...choice3,
292
- correct: false
293
- }, {
294
- ...choice7,
295
- correct: true
296
- }]
297
- }, {
298
- id: '11',
299
- label: 'SUM=11',
300
- correct: true,
301
- choices: [{
302
- ...choice3,
303
- correct: true
304
- }, {
305
- ...choice7,
306
- correct: true
307
- }]
308
- }];
309
- const mC4 = [{
310
- id: '10',
311
- label: 'SUM=10',
312
- correct: true,
313
- choices: [{
314
- ...choice3,
315
- correct: true
316
- }, {
317
- ...choice3,
318
- correct: false
319
- }, {
320
- ...choice7,
321
- correct: true
322
- }]
323
- }, {
324
- id: '11',
325
- label: 'SUM=11',
326
- correct: true,
327
- choices: [{
328
- ...choice3,
329
- correct: true
330
- }, {
331
- ...choice7,
332
- correct: true
333
- }, {
334
- ...choice7,
335
- correct: false
336
- }]
337
- }];
338
- const mC5 = [{
339
- id: '10',
340
- label: 'SUM=10',
341
- correct: false,
342
- choices: [{
343
- ...choice3,
344
- correct: false
345
- }, {
346
- ...choice3,
347
- correct: false
348
- }, {
349
- ...choice7,
350
- correct: false
351
- }]
352
- }, {
353
- id: '11',
354
- label: 'SUM=11',
355
- correct: false,
356
- choices: [{
357
- ...choice3,
358
- correct: false
359
- }, {
360
- ...choice7,
361
- correct: false
362
- }, {
363
- ...choice7,
364
- correct: false
365
- }]
366
- }];
367
- describe('getCorrectness', () => {
368
- it('mode: gather -> resolves undefined', () => {
369
- expect((0, _index.getCorrectness)(question, {}, {
370
- mode: 'gather'
371
- })).resolves.toEqual(undefined);
372
- });
373
- it('mode: view -> resolves undefined', () => {
374
- expect((0, _index.getCorrectness)(question, {}, {
375
- mode: 'view'
376
- })).resolves.toEqual(undefined);
377
- });
378
- const sessionCorrect = {
379
- answers: mC2
380
- };
381
- const sessionPartially = {
382
- answers: mC1
383
- };
384
- it.each`
385
- session | categories | expected
386
- ${undefined} | ${mC1} | ${'incorrect'}
387
- ${null} | ${mC1} | ${'incorrect'}
388
- ${{}} | ${mC1} | ${'incorrect'}
389
- ${sessionCorrect} | ${mC2} | ${'correct'}
390
- ${sessionPartially} | ${mC1} | ${'partially-correct'}
391
- `('mode: evaluate -> resolves $expected if session is $session', async ({
392
- session,
393
- categories,
394
- expected
395
- }) => {
396
- const res = await (0, _index.getCorrectness)({
397
- ...question,
398
- partialScoring: true,
399
- categories,
400
- correctResponse: scoringCorrectResponseNoAlternates
401
- }, session, {
402
- mode: 'evaluate'
403
- });
404
- expect(res).toEqual(expected);
405
- });
406
- });
407
- describe('getTotalScore', () => {
408
- it.each`
409
- partialScoring | mockedCategories | fakeCorrect | expected
410
- ${true} | ${mC1} | ${false} | ${0}
411
- ${false} | ${mC1} | ${false} | ${0}
412
- ${true} | ${mC1} | ${true} | ${1}
413
- ${false} | ${mC1} | ${true} | ${1}
414
- `('With Alternates, partialScoring = $partialScoring -> dychotomous: $expected', ({
415
- partialScoring,
416
- mockedCategories,
417
- fakeCorrect,
418
- expected
419
- }) => {
420
- const totalScore = (0, _index.getTotalScore)({
421
- ...question,
422
- partialScoring,
423
- categories: mockedCategories,
424
- correctResponse: scoringCorrectResponseWithAlternates
425
- }, {
426
- answers: fakeCorrect ? mockedCategories : []
427
- }, {});
428
- expect(totalScore).toEqual(expected);
429
- });
430
- it.each`
431
- partialScoring | mockedCategories | expected
432
- ${true} | ${mC1} | ${0.75}
433
- ${false} | ${mC1} | ${0}
434
- ${true} | ${mC2} | ${1}
435
- ${false} | ${mC2} | ${0}
436
- ${true} | ${mC3} | ${0.75}
437
- ${true} | ${mC4} | ${0.5}
438
- ${true} | ${mC5} | ${0}
439
- `('Without Alternates, partialScoring = $partialScoring -> $expected', ({
440
- partialScoring,
441
- mockedCategories,
442
- expected
443
- }) => {
444
- const totalScore = (0, _index.getTotalScore)({
445
- ...question,
446
- partialScoring,
447
- categories: mockedCategories,
448
- correctResponse: scoringCorrectResponseNoAlternates
449
- }, {
450
- answers: []
451
- }, {});
452
- expect(totalScore).toEqual(expected);
453
- });
454
- });
455
- describe('getPartialScore', () => {
456
- it.each`
457
- mockedCategories | expected
458
- ${mC1} | ${0.75}
459
- ${mC2} | ${1}
460
- ${mC3} | ${0.75}
461
- ${mC4} | ${0.5}
462
- ${mC5} | ${0}
463
- `('Without Alternates, partialScoring = $partialScoring -> $expected', ({
464
- mockedCategories,
465
- expected
466
- }) => {
467
- const totalScore = (0, _index.getPartialScore)(scoringCorrectResponseNoAlternates, mockedCategories);
468
- expect(totalScore).toEqual(expected);
469
- });
470
- });
471
- describe('outcome', () => {
472
- describe('mode: gather', () => {
473
- it('rejects with an error for gather', () => {
474
- expect((0, _index.outcome)(question, {}, {
475
- mode: 'gather'
476
- })).rejects.toEqual(expect.any(Error));
477
- });
478
- });
479
- describe('mode: view', () => {
480
- it('rejects with an error for gather', () => {
481
- expect((0, _index.outcome)(question, {}, {
482
- mode: 'view'
483
- })).rejects.toEqual(expect.any(Error));
484
- });
485
- });
486
- describe('mode: evaluate', () => {
487
- it.each`
488
- partialScoring | envPartialScoring | expected
489
- ${true} | ${undefined} | ${{
490
- empty: false,
491
- score: 0.75
492
- }}
493
- ${false} | ${undefined} | ${{
494
- empty: false,
495
- score: 1
496
- }}
497
- ${true} | ${false} | ${{
498
- empty: false,
499
- score: 1
500
- }}
501
- ${false} | ${true} | ${{
502
- empty: false,
503
- score: 1
504
- }}
505
- `('element.partialScoring = $partialScoring, env.partialScoring = $envPartialScoring', async ({
506
- partialScoring,
507
- envPartialScoring,
508
- expected
509
- }) => {
510
- const result = await (0, _index.outcome)({
511
- ...question,
512
- partialScoring,
513
- correctResponse: scoringCorrectResponseNoAlternates,
514
- categories: mC1
515
- }, {
516
- answers: mC1
517
- }, {
518
- mode: 'evaluate',
519
- partialScoring: envPartialScoring
520
- });
521
- expect(result).toEqual(expect.objectContaining(expected));
522
- });
523
- });
524
- });
525
- });
526
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImplc3QiLCJtb2NrIiwiYnVpbGRTdGF0ZSIsIm1vY2tlZENhdGVnb3JpZXMiLCJjaG9pY2VzIiwiYW5zd2VycyIsImNhdGVnb3JpZXMiLCJjb3JyZWN0IiwiZ2V0RmVlZGJhY2tGb3JDb3JyZWN0bmVzcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVxdWlyZUFjdHVhbCIsImdldFNodWZmbGVkQ2hvaWNlcyIsInNlc3Npb24iLCJ1cGRhdGVTZXNzaW9uIiwia2V5IiwiY3VycmVudFNodWZmbGVkIiwic2h1ZmZsZWRWYWx1ZXMiLCJmaWx0ZXIiLCJ2IiwibGVuZ3RoIiwicGFydGlhbFNjb3JpbmciLCJlbmFibGVkIiwiY29uZmlnIiwiZW52IiwiaWQiLCJsYWJlbCIsImNvbnRlbnQiLCJjYXRlZ29yeTEwIiwiY2F0ZWdvcnkxMSIsImNob2ljZTMiLCJjaG9pY2U0IiwiY2hvaWNlNSIsImNob2ljZTYiLCJjaG9pY2U3Iiwic2NvcmluZ0NvcnJlY3RSZXNwb25zZU5vQWx0ZXJuYXRlcyIsImNhdGVnb3J5Iiwic2NvcmluZ0NvcnJlY3RSZXNwb25zZVdpdGhBbHRlcm5hdGVzIiwiYWx0ZXJuYXRlUmVzcG9uc2VzIiwibWFrZVF1ZXN0aW9uIiwiZXh0cmFzIiwiY29ycmVjdFJlc3BvbnNlIiwibG9ja0Nob2ljZU9yZGVyIiwiZGVzY3JpYmUiLCJxdWVzdGlvbiIsIml0IiwicmVzdWx0IiwibW9kZWwiLCJtb2RlIiwiZm4iLCJleHBlY3QiLCJ0b01hdGNoT2JqZWN0IiwidW5kZWZpbmVkIiwiY29ycmVjdG5lc3MiLCJmZWVkYmFja0VuYWJsZWQiLCJmZWVkYmFjayIsInRvRXF1YWwiLCJkaXNhYmxlZCIsImNhdGVnb3JpZXNQZXJSb3ciLCJjaG9pY2VzTGFiZWwiLCJlbGVtZW50IiwibW9ja1Jlc29sdmVkVmFsdWUiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwic2VzcyIsImNyZWF0ZUNvcnJlY3RSZXNwb25zZVNlc3Npb24iLCJyb2xlIiwibm9SZXN1bHQiLCJ0b0JlTnVsbCIsIm1DMSIsIm1DMiIsIm1DMyIsIm1DNCIsIm1DNSIsImdldENvcnJlY3RuZXNzIiwicmVzb2x2ZXMiLCJzZXNzaW9uQ29ycmVjdCIsInNlc3Npb25QYXJ0aWFsbHkiLCJlYWNoIiwiZXhwZWN0ZWQiLCJyZXMiLCJmYWtlQ29ycmVjdCIsInRvdGFsU2NvcmUiLCJnZXRUb3RhbFNjb3JlIiwiZ2V0UGFydGlhbFNjb3JlIiwib3V0Y29tZSIsInJlamVjdHMiLCJhbnkiLCJFcnJvciIsImVtcHR5Iiwic2NvcmUiLCJlbnZQYXJ0aWFsU2NvcmluZyIsIm9iamVjdENvbnRhaW5pbmciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2luZGV4LnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kZWwsIG91dGNvbWUsIGdldENvcnJlY3RuZXNzLCBjcmVhdGVDb3JyZWN0UmVzcG9uc2VTZXNzaW9uLCBnZXRUb3RhbFNjb3JlLCBnZXRQYXJ0aWFsU2NvcmUgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2NhdGVnb3JpemUnLCAoKSA9PiAoe1xuICAvLyB1c2VkIHRoaXMgYWxnb3JpdGhtIGluIG9yZGVyIHRvIGNvbnRyb2wgdGhlIHZhbHVlIG9mIGNvcnJlY3Q7IGNoZWNrIGBmYWtlQ29ycmVjdGAgYmVsb3dcbiAgYnVpbGRTdGF0ZTogKG1vY2tlZENhdGVnb3JpZXMsIGNob2ljZXMsIGFuc3dlcnMpID0+ICh7XG4gICAgY2F0ZWdvcmllczogbW9ja2VkQ2F0ZWdvcmllcyxcbiAgICBjb3JyZWN0OiBtb2NrZWRDYXRlZ29yaWVzID09PSBhbnN3ZXJzLFxuICB9KSxcbn0pKTtcbmplc3QubW9jaygnQHBpZS1saWIvZmVlZGJhY2snLCAoKSA9PiAoe1xuICBnZXRGZWVkYmFja0ZvckNvcnJlY3RuZXNzOiAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVzb2x2ZSgnVGhpcyBpcyBnZXRGZWVkYmFja0ZvckNvcnJlY3RuZXNzIHJlc3BvbnNlLicpKSxcbn0pKTtcbmplc3QubW9jaygnQHBpZS1saWIvY29udHJvbGxlci11dGlscycsICgpID0+ICh7XG4gIC4uLmplc3QucmVxdWlyZUFjdHVhbCgnQHBpZS1saWIvY29udHJvbGxlci11dGlscycpLFxuICBnZXRTaHVmZmxlZENob2ljZXM6IChjaG9pY2VzLCBzZXNzaW9uLCB1cGRhdGVTZXNzaW9uLCBrZXkpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U2h1ZmZsZWQgPSAoKHNlc3Npb24gfHwge30pLnNodWZmbGVkVmFsdWVzIHx8IFtdKS5maWx0ZXIoKHYpID0+IHYpO1xuXG4gICAgaWYgKHNlc3Npb24gJiYgIWN1cnJlbnRTaHVmZmxlZC5sZW5ndGggJiYgdXBkYXRlU2Vzc2lvbiAmJiB0eXBlb2YgdXBkYXRlU2Vzc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdXBkYXRlU2Vzc2lvbigpO1xuICAgIH1cblxuICAgIHJldHVybiBjaG9pY2VzO1xuICB9LFxuICBwYXJ0aWFsU2NvcmluZzoge1xuICAgIGVuYWJsZWQ6IChjb25maWcsIGVudikgPT4ge1xuICAgICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgICAgZW52ID0gZW52IHx8IHt9O1xuXG4gICAgICBpZiAoY29uZmlnLnBhcnRpYWxTY29yaW5nID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbnYucGFydGlhbFNjb3JpbmcgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgfSxcbn0pKTtcblxuY29uc3QgY2F0ZWdvcmllcyA9IFt7IGlkOiAnMScsIGxhYmVsOiAnT25lJyB9XTtcbmNvbnN0IGNob2ljZXMgPSBbXG4gIHsgaWQ6ICcxJywgY29udGVudDogJ0ZvbycgfSxcbiAgeyBpZDogJzInLCBjb250ZW50OiAnQmFyJyB9LFxuXTtcblxuY29uc3QgY2F0ZWdvcnkxMCA9IHsgaWQ6ICcxMCcsIGxhYmVsOiAnU1VNPTEwJyB9O1xuY29uc3QgY2F0ZWdvcnkxMSA9IHsgaWQ6ICcxMScsIGxhYmVsOiAnU1VNPTExJyB9O1xuXG5jb25zdCBjaG9pY2UzID0geyBpZDogJzMnLCBjb250ZW50OiAnMycgfTtcbmNvbnN0IGNob2ljZTQgPSB7IGlkOiAnNCcsIGNvbnRlbnQ6ICc0JyB9O1xuY29uc3QgY2hvaWNlNSA9IHsgaWQ6ICc1JywgY29udGVudDogJzUnIH07XG5jb25zdCBjaG9pY2U2ID0geyBpZDogJzYnLCBjb250ZW50OiAnNicgfTtcbmNvbnN0IGNob2ljZTcgPSB7IGlkOiAnNycsIGNvbnRlbnQ6ICc3JyB9O1xuY29uc3Qgc2NvcmluZ0NvcnJlY3RSZXNwb25zZU5vQWx0ZXJuYXRlcyA9IFtcbiAgeyBjYXRlZ29yeTogJzEwJywgY2hvaWNlczogWyczJywgJzcnXSB9LFxuICB7IGNhdGVnb3J5OiAnMTEnLCBjaG9pY2VzOiBbJzQnLCAnNyddIH0sXG5dO1xuY29uc3Qgc2NvcmluZ0NvcnJlY3RSZXNwb25zZVdpdGhBbHRlcm5hdGVzID0gW1xuICB7IGNhdGVnb3J5OiAnMTAnLCBjaG9pY2VzOiBbJzMnLCAnNyddLCBhbHRlcm5hdGVSZXNwb25zZXM6IFtbJzQnLCAnNiddXSB9LFxuICB7IGNhdGVnb3J5OiAnMTEnLCBjaG9pY2VzOiBbJzQnLCAnNyddLCBhbHRlcm5hdGVSZXNwb25zZXM6IFtbJzUnLCAnNiddXSB9LFxuXTtcblxuY29uc3QgbWFrZVF1ZXN0aW9uID0gKGV4dHJhcykgPT4gKHtcbiAgY2F0ZWdvcmllcyxcbiAgY2hvaWNlcyxcbiAgY29ycmVjdFJlc3BvbnNlOiBbeyBjYXRlZ29yeTogJzEnLCBjaG9pY2VzOiBbJzEnLCAnMiddIH1dLFxuICBsb2NrQ2hvaWNlT3JkZXI6IHRydWUsXG4gIC4uLmV4dHJhcyxcbn0pO1xuXG5kZXNjcmliZSgnY29udHJvbGxlcicsICgpID0+IHtcbiAgbGV0IHF1ZXN0aW9uID0gbWFrZVF1ZXN0aW9uKCk7XG5cbiAgZGVzY3JpYmUoJ21vZGVsJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIG1vZGVsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdnYXRoZXInIH0sIGplc3QuZm4oKSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b01hdGNoT2JqZWN0KHsgLi4ucXVlc3Rpb24sIGNvcnJlY3RSZXNwb25zZTogdW5kZWZpbmVkIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbW9kZWwgaW4gZXZhbHVhdGUgbW9kZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vZGVsKHF1ZXN0aW9uLCB7fSwgeyBtb2RlOiAnZXZhbHVhdGUnIH0sIGplc3QuZm4oKSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b01hdGNoT2JqZWN0KHsgLi4ucXVlc3Rpb24sIGNvcnJlY3RuZXNzOiAnaW5jb3JyZWN0JyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdmZWVkYmFjazogcmV0dXJucyBwcm9wZXIgZmVlZGJhY2sgaW4gZXZhbHVhdGUgbW9kZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vZGVsKHsgLi4ucXVlc3Rpb24sIGZlZWRiYWNrRW5hYmxlZDogdHJ1ZSB9LCB7fSwgeyBtb2RlOiAnZXZhbHVhdGUnIH0sIGplc3QuZm4oKSk7XG4gICAgICBleHBlY3QocmVzdWx0LmZlZWRiYWNrKS50b0VxdWFsKCdUaGlzIGlzIGdldEZlZWRiYWNrRm9yQ29ycmVjdG5lc3MgcmVzcG9uc2UuJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZmVlZGJhY2s6IHJldHVybnMgcHJvcGVyIGZlZWRiYWNrIGlmIGZlZWRiYWNrIGlzIG5vdCBlbmFibGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWwoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5xdWVzdGlvbixcbiAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7fSxcbiAgICAgICAgeyBtb2RlOiAnZXZhbHVhdGUnIH0sXG4gICAgICAgIGplc3QuZm4oKSxcbiAgICAgICk7XG4gICAgICBleHBlY3QocmVzdWx0LmZlZWRiYWNrKS50b0VxdWFsKHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZmVlZGJhY2s6IHJldHVybnMgcHJvcGVyIGZlZWRiYWNrIGluIGdhdGhlciBtb2RlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdnYXRoZXInIH0sIGplc3QuZm4oKSk7XG4gICAgICBleHBlY3QocmVzdWx0LmZlZWRiYWNrKS50b0VxdWFsKHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgICBpdCgnZGlzYWJsZWQgZmFsc2UgZm9yIGdhdGhlcicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdnYXRoZXInIH0sIGplc3QuZm4oKSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hPYmplY3QoeyBkaXNhYmxlZDogZmFsc2UgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Rpc2FibGVkIHRydWUgZm9yIHZpZXcnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vZGVsKHF1ZXN0aW9uLCB7fSwgeyBtb2RlOiAndmlldycgfSwgamVzdC5mbigpKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaE9iamVjdCh7IGRpc2FibGVkOiB0cnVlIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkaXNhYmxlZCB0cnVlIGZvciBldmFsdWF0ZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdldmFsdWF0ZScgfSwgamVzdC5mbigpKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaE9iamVjdCh7IGRpc2FibGVkOiB0cnVlIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBjb3JyZWN0UmVzcG9uc2UgZm9yIGV2YWx1YXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdldmFsdWF0ZScgfSwgamVzdC5mbigpKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgICBjb3JyZWN0UmVzcG9uc2U6IFt7IGNhdGVnb3J5OiAnMScsIGNob2ljZXM6IFsnMScsICcyJ10gfV0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRzIGRlZmF1bHQgY29uZmlnJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdnYXRoZXInIH0sIGplc3QuZm4oKSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgY2F0ZWdvcmllc1BlclJvdzogMixcbiAgICAgICAgY2hvaWNlc0xhYmVsOiAnJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ21vZGVsIC0gd2l0aCB1cGRhdGVTZXNzaW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ2NhbGxzIHVwZGF0ZVNlc3Npb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSB7IGlkOiAnMScsIGVsZW1lbnQ6ICdjYXRlZ29yaXplLWVsZW1lbnQnIH07XG4gICAgICAgIGNvbnN0IGVudiA9IHsgbW9kZTogJ2dhdGhlcicgfTtcbiAgICAgICAgY29uc3QgdXBkYXRlU2Vzc2lvbiA9IGplc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSgpO1xuICAgICAgICBhd2FpdCBtb2RlbChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgZWxlbWVudDogJ2NhdGVnb3JpemUtZWxlbWVudCcsXG4gICAgICAgICAgICAuLi5xdWVzdGlvbixcbiAgICAgICAgICAgIGxvY2tDaG9pY2VPcmRlcjogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uLFxuICAgICAgICAgIGVudixcbiAgICAgICAgICB1cGRhdGVTZXNzaW9uLFxuICAgICAgICApO1xuICAgICAgICBleHBlY3QodXBkYXRlU2Vzc2lvbikudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb3JyZWN0IHJlc3BvbnNlJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGNvcnJlY3QgcmVzcG9uc2UgaWYgZW52IGlzIGNvcnJlY3QnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzID0gYXdhaXQgY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbihxdWVzdGlvbiwge1xuICAgICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgICAgcm9sZTogJ2luc3RydWN0b3InLFxuICAgICAgfSk7XG4gICAgICBleHBlY3Qoc2VzcykudG9FcXVhbCh7XG4gICAgICAgIGFuc3dlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXRlZ29yeTogJzEnLFxuICAgICAgICAgICAgY2hvaWNlczogWycxJywgJzInXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpZDogMSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBlbnYgaXMgc3R1ZGVudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vUmVzdWx0ID0gYXdhaXQgY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbihxdWVzdGlvbiwge1xuICAgICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgICAgcm9sZTogJ3N0dWRlbnQnLFxuICAgICAgfSk7XG4gICAgICBleHBlY3Qobm9SZXN1bHQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IG1DMSA9IFtcbiAgICB7XG4gICAgICBpZDogJzEwJyxcbiAgICAgIGxhYmVsOiAnU1VNPTEwJyxcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHsgLi4uY2hvaWNlMywgY29ycmVjdDogdHJ1ZSB9LFxuICAgICAgICB7IC4uLmNob2ljZTcsIGNvcnJlY3Q6IHRydWUgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzExJyxcbiAgICAgIGxhYmVsOiAnU1VNPTExJyxcbiAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7IC4uLmNob2ljZTMsIGNvcnJlY3Q6IHRydWUgfSxcbiAgICAgICAgeyAuLi5jaG9pY2U3LCBjb3JyZWN0OiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICBjb25zdCBtQzIgPSBbXG4gICAge1xuICAgICAgaWQ6ICcxMCcsXG4gICAgICBsYWJlbDogJ1NVTT0xMCcsXG4gICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7IC4uLmNob2ljZTMsIGNvcnJlY3Q6IHRydWUgfSxcbiAgICAgICAgeyAuLi5jaG9pY2U3LCBjb3JyZWN0OiB0cnVlIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxMScsXG4gICAgICBsYWJlbDogJ1NVTT0xMScsXG4gICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7IC4uLmNob2ljZTMsIGNvcnJlY3Q6IHRydWUgfSxcbiAgICAgICAgeyAuLi5jaG9pY2U3LCBjb3JyZWN0OiB0cnVlIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG4gIGNvbnN0IG1DMyA9IFtcbiAgICB7XG4gICAgICBpZDogJzEwJyxcbiAgICAgIGxhYmVsOiAnU1VNPTEwJyxcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHsgLi4uY2hvaWNlMywgY29ycmVjdDogdHJ1ZSB9LFxuICAgICAgICB7IC4uLmNob2ljZTMsIGNvcnJlY3Q6IGZhbHNlIH0sXG4gICAgICAgIHsgLi4uY2hvaWNlNywgY29ycmVjdDogdHJ1ZSB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMTEnLFxuICAgICAgbGFiZWw6ICdTVU09MTEnLFxuICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgeyAuLi5jaG9pY2UzLCBjb3JyZWN0OiB0cnVlIH0sXG4gICAgICAgIHsgLi4uY2hvaWNlNywgY29ycmVjdDogdHJ1ZSB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICBjb25zdCBtQzQgPSBbXG4gICAge1xuICAgICAgaWQ6ICcxMCcsXG4gICAgICBsYWJlbDogJ1NVTT0xMCcsXG4gICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7IC4uLmNob2ljZTMsIGNvcnJlY3Q6IHRydWUgfSxcbiAgICAgICAgeyAuLi5jaG9pY2UzLCBjb3JyZWN0OiBmYWxzZSB9LFxuICAgICAgICB7IC4uLmNob2ljZTcsIGNvcnJlY3Q6IHRydWUgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzExJyxcbiAgICAgIGxhYmVsOiAnU1VNPTExJyxcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHsgLi4uY2hvaWNlMywgY29ycmVjdDogdHJ1ZSB9LFxuICAgICAgICB7IC4uLmNob2ljZTcsIGNvcnJlY3Q6IHRydWUgfSxcbiAgICAgICAgeyAuLi5jaG9pY2U3LCBjb3JyZWN0OiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICBjb25zdCBtQzUgPSBbXG4gICAge1xuICAgICAgaWQ6ICcxMCcsXG4gICAgICBsYWJlbDogJ1NVTT0xMCcsXG4gICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgeyAuLi5jaG9pY2UzLCBjb3JyZWN0OiBmYWxzZSB9LFxuICAgICAgICB7IC4uLmNob2ljZTMsIGNvcnJlY3Q6IGZhbHNlIH0sXG4gICAgICAgIHsgLi4uY2hvaWNlNywgY29ycmVjdDogZmFsc2UgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzExJyxcbiAgICAgIGxhYmVsOiAnU1VNPTExJyxcbiAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7IC4uLmNob2ljZTMsIGNvcnJlY3Q6IGZhbHNlIH0sXG4gICAgICAgIHsgLi4uY2hvaWNlNywgY29ycmVjdDogZmFsc2UgfSxcbiAgICAgICAgeyAuLi5jaG9pY2U3LCBjb3JyZWN0OiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuXG4gIGRlc2NyaWJlKCdnZXRDb3JyZWN0bmVzcycsICgpID0+IHtcbiAgICBpdCgnbW9kZTogZ2F0aGVyIC0+IHJlc29sdmVzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChnZXRDb3JyZWN0bmVzcyhxdWVzdGlvbiwge30sIHsgbW9kZTogJ2dhdGhlcicgfSkpLnJlc29sdmVzLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdtb2RlOiB2aWV3IC0+IHJlc29sdmVzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChnZXRDb3JyZWN0bmVzcyhxdWVzdGlvbiwge30sIHsgbW9kZTogJ3ZpZXcnIH0pKS5yZXNvbHZlcy50b0VxdWFsKHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBzZXNzaW9uQ29ycmVjdCA9IHsgYW5zd2VyczogbUMyIH07XG4gICAgY29uc3Qgc2Vzc2lvblBhcnRpYWxseSA9IHsgYW5zd2VyczogbUMxIH07XG5cbiAgICBpdC5lYWNoYFxuICAgICAgc2Vzc2lvbiAgICAgICAgICAgICB8IGNhdGVnb3JpZXMgfCBleHBlY3RlZFxuICAgICAgJHt1bmRlZmluZWR9ICAgICAgICB8ICR7bUMxfSAgICAgfCAkeydpbmNvcnJlY3QnfVxuICAgICAgJHtudWxsfSAgICAgICAgICAgICB8ICR7bUMxfSAgICAgfCAkeydpbmNvcnJlY3QnfVxuICAgICAgJHt7fX0gICAgICAgICAgICAgICB8ICR7bUMxfSAgICAgfCAkeydpbmNvcnJlY3QnfVxuICAgICAgJHtzZXNzaW9uQ29ycmVjdH0gICB8ICR7bUMyfSAgICAgfCAkeydjb3JyZWN0J31cbiAgICAgICR7c2Vzc2lvblBhcnRpYWxseX0gfCAke21DMX0gICAgIHwgJHsncGFydGlhbGx5LWNvcnJlY3QnfVxuICAgIGAoJ21vZGU6IGV2YWx1YXRlIC0+IHJlc29sdmVzICRleHBlY3RlZCBpZiBzZXNzaW9uIGlzICRzZXNzaW9uJywgYXN5bmMgKHsgc2Vzc2lvbiwgY2F0ZWdvcmllcywgZXhwZWN0ZWQgfSkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgZ2V0Q29ycmVjdG5lc3MoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5xdWVzdGlvbixcbiAgICAgICAgICBwYXJ0aWFsU2NvcmluZzogdHJ1ZSxcbiAgICAgICAgICBjYXRlZ29yaWVzLFxuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZTogc2NvcmluZ0NvcnJlY3RSZXNwb25zZU5vQWx0ZXJuYXRlcyxcbiAgICAgICAgfSxcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgICAgeyBtb2RlOiAnZXZhbHVhdGUnIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QocmVzKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFRvdGFsU2NvcmUnLCAoKSA9PiB7XG4gICAgaXQuZWFjaGBcbiAgICAgIHBhcnRpYWxTY29yaW5nIHwgbW9ja2VkQ2F0ZWdvcmllcyB8IGZha2VDb3JyZWN0IHwgZXhwZWN0ZWRcbiAgICAgICR7dHJ1ZX0gICAgICAgIHwgJHttQzF9ICAgICAgICAgICB8ICR7ZmFsc2V9ICAgIHwgJHswfVxuICAgICAgJHtmYWxzZX0gICAgICAgfCAke21DMX0gICAgICAgICAgIHwgJHtmYWxzZX0gICAgfCAkezB9XG4gICAgICAke3RydWV9ICAgICAgICB8ICR7bUMxfSAgICAgICAgICAgfCAke3RydWV9ICAgICB8ICR7MX1cbiAgICAgICR7ZmFsc2V9ICAgICAgIHwgJHttQzF9ICAgICAgICAgICB8ICR7dHJ1ZX0gICAgIHwgJHsxfVxuICAgIGAoXG4gICAgICAnV2l0aCBBbHRlcm5hdGVzLCBwYXJ0aWFsU2NvcmluZyA9ICRwYXJ0aWFsU2NvcmluZyAtPiBkeWNob3RvbW91czogJGV4cGVjdGVkJyxcbiAgICAgICh7IHBhcnRpYWxTY29yaW5nLCBtb2NrZWRDYXRlZ29yaWVzLCBmYWtlQ29ycmVjdCwgZXhwZWN0ZWQgfSkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFNjb3JlID0gZ2V0VG90YWxTY29yZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5xdWVzdGlvbixcbiAgICAgICAgICAgIHBhcnRpYWxTY29yaW5nLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogbW9ja2VkQ2F0ZWdvcmllcyxcbiAgICAgICAgICAgIGNvcnJlY3RSZXNwb25zZTogc2NvcmluZ0NvcnJlY3RSZXNwb25zZVdpdGhBbHRlcm5hdGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBhbnN3ZXJzOiBmYWtlQ29ycmVjdCA/IG1vY2tlZENhdGVnb3JpZXMgOiBbXSB9LFxuICAgICAgICAgIHt9LFxuICAgICAgICApO1xuXG4gICAgICAgIGV4cGVjdCh0b3RhbFNjb3JlKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGl0LmVhY2hgXG4gICAgICBwYXJ0aWFsU2NvcmluZyB8IG1vY2tlZENhdGVnb3JpZXMgfCBleHBlY3RlZFxuICAgICAgJHt0cnVlfSAgICAgICAgfCAke21DMX0gICAgICAgICAgIHwgJHswLjc1fVxuICAgICAgJHtmYWxzZX0gICAgICAgfCAke21DMX0gICAgICAgICAgIHwgJHswfVxuICAgICAgJHt0cnVlfSAgICAgICAgfCAke21DMn0gICAgICAgICAgIHwgJHsxfVxuICAgICAgJHtmYWxzZX0gICAgICAgfCAke21DMn0gICAgICAgICAgIHwgJHswfVxuICAgICAgJHt0cnVlfSAgICAgICAgfCAke21DM30gICAgICAgICAgIHwgJHswLjc1fVxuICAgICAgJHt0cnVlfSAgICAgICAgfCAke21DNH0gICAgICAgICAgIHwgJHswLjV9XG4gICAgICAke3RydWV9ICAgICAgICB8ICR7bUM1fSAgICAgICAgICAgfCAkezB9XG4gICAgYChcbiAgICAgICdXaXRob3V0IEFsdGVybmF0ZXMsIHBhcnRpYWxTY29yaW5nID0gJHBhcnRpYWxTY29yaW5nIC0+ICRleHBlY3RlZCcsXG4gICAgICAoeyBwYXJ0aWFsU2NvcmluZywgbW9ja2VkQ2F0ZWdvcmllcywgZXhwZWN0ZWQgfSkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFNjb3JlID0gZ2V0VG90YWxTY29yZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5xdWVzdGlvbixcbiAgICAgICAgICAgIHBhcnRpYWxTY29yaW5nLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogbW9ja2VkQ2F0ZWdvcmllcyxcbiAgICAgICAgICAgIGNvcnJlY3RSZXNwb25zZTogc2NvcmluZ0NvcnJlY3RSZXNwb25zZU5vQWx0ZXJuYXRlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgYW5zd2VyczogW10gfSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKTtcblxuICAgICAgICBleHBlY3QodG90YWxTY29yZSkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgICB9LFxuICAgICk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRQYXJ0aWFsU2NvcmUnLCAoKSA9PiB7XG4gICAgaXQuZWFjaGBcbiAgICAgIG1vY2tlZENhdGVnb3JpZXMgfCBleHBlY3RlZFxuICAgICAgJHttQzF9ICAgICAgICAgICB8ICR7MC43NX1cbiAgICAgICR7bUMyfSAgICAgICAgICAgfCAkezF9XG4gICAgICAke21DM30gICAgICAgICAgIHwgJHswLjc1fVxuICAgICAgJHttQzR9ICAgICAgICAgICB8ICR7MC41fVxuICAgICAgJHttQzV9ICAgICAgICAgICB8ICR7MH1cbiAgICBgKCdXaXRob3V0IEFsdGVybmF0ZXMsIHBhcnRpYWxTY29yaW5nID0gJHBhcnRpYWxTY29yaW5nIC0+ICRleHBlY3RlZCcsICh7IG1vY2tlZENhdGVnb3JpZXMsIGV4cGVjdGVkIH0pID0+IHtcbiAgICAgIGNvbnN0IHRvdGFsU2NvcmUgPSBnZXRQYXJ0aWFsU2NvcmUoc2NvcmluZ0NvcnJlY3RSZXNwb25zZU5vQWx0ZXJuYXRlcywgbW9ja2VkQ2F0ZWdvcmllcyk7XG5cbiAgICAgIGV4cGVjdCh0b3RhbFNjb3JlKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ291dGNvbWUnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ21vZGU6IGdhdGhlcicsICgpID0+IHtcbiAgICAgIGl0KCdyZWplY3RzIHdpdGggYW4gZXJyb3IgZm9yIGdhdGhlcicsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KG91dGNvbWUocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdnYXRoZXInIH0pKS5yZWplY3RzLnRvRXF1YWwoZXhwZWN0LmFueShFcnJvcikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnbW9kZTogdmlldycsICgpID0+IHtcbiAgICAgIGl0KCdyZWplY3RzIHdpdGggYW4gZXJyb3IgZm9yIGdhdGhlcicsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KG91dGNvbWUocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICd2aWV3JyB9KSkucmVqZWN0cy50b0VxdWFsKGV4cGVjdC5hbnkoRXJyb3IpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ21vZGU6IGV2YWx1YXRlJywgKCkgPT4ge1xuICAgICAgaXQuZWFjaGBcbiAgICAgICAgcGFydGlhbFNjb3JpbmcgfCBlbnZQYXJ0aWFsU2NvcmluZyB8IGV4cGVjdGVkXG4gICAgICAgICR7dHJ1ZX0gICAgICAgIHwgJHt1bmRlZmluZWR9ICAgICAgfCAke3sgZW1wdHk6IGZhbHNlLCBzY29yZTogMC43NSB9fVxuICAgICAgICAke2ZhbHNlfSAgICAgICB8ICR7dW5kZWZpbmVkfSAgICAgIHwgJHt7IGVtcHR5OiBmYWxzZSwgc2NvcmU6IDEgfX1cbiAgICAgICAgJHt0cnVlfSAgICAgICAgfCAke2ZhbHNlfSAgICAgICAgICB8ICR7eyBlbXB0eTogZmFsc2UsIHNjb3JlOiAxIH19XG4gICAgICAgICR7ZmFsc2V9ICAgICAgIHwgJHt0cnVlfSAgICAgICAgICAgfCAke3sgZW1wdHk6IGZhbHNlLCBzY29yZTogMSB9fVxuICAgICAgYChcbiAgICAgICAgJ2VsZW1lbnQucGFydGlhbFNjb3JpbmcgPSAkcGFydGlhbFNjb3JpbmcsIGVudi5wYXJ0aWFsU2NvcmluZyA9ICRlbnZQYXJ0aWFsU2NvcmluZycsXG4gICAgICAgIGFzeW5jICh7IHBhcnRpYWxTY29yaW5nLCBlbnZQYXJ0aWFsU2NvcmluZywgZXhwZWN0ZWQgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG91dGNvbWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnF1ZXN0aW9uLFxuICAgICAgICAgICAgICBwYXJ0aWFsU2NvcmluZyxcbiAgICAgICAgICAgICAgY29ycmVjdFJlc3BvbnNlOiBzY29yaW5nQ29ycmVjdFJlc3BvbnNlTm9BbHRlcm5hdGVzLFxuICAgICAgICAgICAgICBjYXRlZ29yaWVzOiBtQzEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbnN3ZXJzOiBtQzEgfSxcbiAgICAgICAgICAgIHsgbW9kZTogJ2V2YWx1YXRlJywgcGFydGlhbFNjb3Jpbmc6IGVudlBhcnRpYWxTY29yaW5nIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKGV4cGVjdGVkKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQUcsSUFBSSxDQUFDQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsT0FBTztFQUN0QztFQUNBQyxVQUFVLEVBQUVBLENBQUNDLGdCQUFnQixFQUFFQyxPQUFPLEVBQUVDLE9BQU8sTUFBTTtJQUNuREMsVUFBVSxFQUFFSCxnQkFBZ0I7SUFDNUJJLE9BQU8sRUFBRUosZ0JBQWdCLEtBQUtFO0VBQ2hDLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUNITCxJQUFJLENBQUNDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPO0VBQ3BDTyx5QkFBeUIsRUFBRUEsQ0FBQSxLQUFNLElBQUlDLE9BQU8sQ0FBRUMsT0FBTyxJQUFLQSxPQUFPLENBQUMsNkNBQTZDLENBQUM7QUFDbEgsQ0FBQyxDQUFDLENBQUM7QUFDSFYsSUFBSSxDQUFDQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsT0FBTztFQUM1QyxHQUFHRCxJQUFJLENBQUNXLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQztFQUNsREMsa0JBQWtCLEVBQUVBLENBQUNSLE9BQU8sRUFBRVMsT0FBTyxFQUFFQyxhQUFh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
@@ -1,10 +0,0 @@
1
- {
2
- "description": "auto generated package.json",
3
- "license": "MIT",
4
- "name": "configure-generated-pkg",
5
- "private": true,
6
- "version": "0.0.1",
7
- "dependencies": {
8
- "@pie-element/categorize-configure": "file:../node_modules/@pie-element/categorize/configure"
9
- }
10
- }