@dashkite/joy 0.3.15 → 0.4.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.
@@ -1,400 +1,354 @@
1
1
  var Queue, _includes, collect, each, events, find, fold, includes, isAny, join, map, partition, project, reduce, reject, resolve, select, start, tap, uniqueBy;
2
-
3
- import { generic } from "./generic.js";
4
- import { wrap, curry, binary, ternary, tee, apply } from "./function.js";
5
- import { negate } from "./predicate.js";
6
- import { isString, isNumber, isArray, isFunction, isIterable, isReagent } from "./type.js";
7
- import { get } from "./object.js";
2
+ import { generic } from "./generic";
3
+ import { wrap, curry, binary, ternary, tee, apply } from "./function";
4
+ import { negate } from "./predicate";
5
+ import { isString, isNumber, isArray, isFunction, isIterable, isReagent } from "./type";
6
+ import { get } from "./object";
7
+ import { eq } from "./value";
8
8
  isAny = wrap(true);
9
9
  _includes = generic({
10
- name: "includes"
11
- });
12
- generic(_includes, wrap(true), isReagent, async function (a, ax) {
13
- var _a;
14
-
15
- for await (_a of ax) {
16
- if (Object.is(a, _a)) {
17
- return true;
10
+ name: "includes"
11
+ });
12
+ generic(_includes, wrap(true), isReagent, async function(a, ax) {
13
+ var _a;
14
+ for await (_a of ax){
15
+ if (Object.is(a, _a)) {
16
+ return true;
17
+ }
18
18
  }
19
- }
20
-
21
- return false;
22
- });
23
- generic(_includes, wrap(true), isIterable, function (a, ax) {
24
- var _a;
25
-
26
- for (_a of ax) {
27
- if (Object.is(a, _a)) {
28
- return true;
19
+ return false;
20
+ });
21
+ generic(_includes, wrap(true), isIterable, function(a, ax) {
22
+ var _a;
23
+ for (_a of ax){
24
+ if (Object.is(a, _a)) {
25
+ return true;
26
+ }
29
27
  }
30
- }
31
-
32
- return false;
28
+ return false;
33
29
  });
34
- generic(_includes, wrap(true), isArray, function (a, ax) {
35
- return ax.includes(a);
30
+ generic(_includes, wrap(true), isArray, function(a, ax) {
31
+ return ax.includes(a);
36
32
  });
37
33
  includes = curry(binary(_includes));
38
-
39
- uniqueBy = function (f, ax) {
40
- var a, bx;
41
- bx = [];
42
-
43
- for (a of ax) {
44
- if (bx.find(function (b) {
45
- return f(a, b);
46
- }) == null) {
47
- bx.push(a);
34
+ // TODO should this return an iterator?
35
+ uniqueBy = function(f, ax) {
36
+ var a, bx;
37
+ bx = [];
38
+ for (a of ax){
39
+ if (bx.find(function(b) {
40
+ return f(a, b);
41
+ }) == null) {
42
+ bx.push(a);
43
+ }
48
44
  }
49
- }
50
-
51
- return bx;
45
+ return bx;
52
46
  };
53
-
54
47
  map = generic({
55
- name: "map"
48
+ name: "map"
56
49
  });
57
- generic(map, isFunction, isIterable, function* (f, i) {
58
- var results, x;
59
- results = [];
60
-
61
- for (x of i) {
62
- results.push(yield f(x));
63
- }
64
-
65
- return results;
50
+ generic(map, isFunction, isIterable, function*(f, i) {
51
+ var results, x;
52
+ results = [];
53
+ for (x of i){
54
+ results.push((yield f(x)));
55
+ }
56
+ return results;
66
57
  });
67
- generic(map, isFunction, isReagent, async function* (f, r) {
68
- var results, x;
69
- results = [];
70
-
71
- for await (x of r) {
72
- results.push(yield f(x));
73
- }
74
-
75
- return results;
58
+ generic(map, isFunction, isReagent, async function*(f, r) {
59
+ var results, x;
60
+ results = [];
61
+ for await (x of r){
62
+ results.push((yield f(x)));
63
+ }
64
+ return results;
76
65
  });
77
- generic(map, isFunction, isArray, function (f, ax) {
78
- return ax.map(function (x) {
79
- return f(x);
80
- });
66
+ generic(map, isFunction, isArray, function(f, ax) {
67
+ return ax.map(function(x) {
68
+ return f(x);
69
+ });
81
70
  });
82
71
  map = curry(binary(map));
83
- project = curry(function (p, i) {
84
- return map(get(p), i);
72
+ project = curry(function(p, i) {
73
+ return map(get(p), i);
85
74
  });
86
75
  find = generic({
87
- name: "find"
88
- });
89
- generic(find, isFunction, isIterable, async function (f, i) {
90
- var x;
91
-
92
- for (x of i) {
93
- if ((await f(x)) === true) {
94
- return x;
76
+ name: "find"
77
+ });
78
+ generic(find, isFunction, isIterable, async function(f, i) {
79
+ var x;
80
+ for (x of i){
81
+ if (await f(x) === true) {
82
+ return x;
83
+ }
95
84
  }
96
- }
97
-
98
- return void 0;
99
- });
100
- generic(find, isFunction, isReagent, async function (f, r) {
101
- var x;
102
-
103
- for await (x of r) {
104
- if ((await f(x)) === true) {
105
- return x;
85
+ return void 0;
86
+ });
87
+ generic(find, isFunction, isReagent, async function(f, r) {
88
+ var x;
89
+ for await (x of r){
90
+ if (await f(x) === true) {
91
+ return x;
92
+ }
106
93
  }
107
- }
108
-
109
- return void 0;
94
+ return void 0;
110
95
  });
111
- generic(find, isFunction, isArray, function (f, ax) {
112
- return ax.find(function (x) {
113
- return f(x);
114
- });
96
+ generic(find, isFunction, isArray, function(f, ax) {
97
+ return ax.find(function(x) {
98
+ return f(x);
99
+ });
115
100
  });
116
101
  find = curry(binary(find));
117
102
  tap = generic({
118
- name: "tap"
103
+ name: "tap"
119
104
  });
120
- generic(tap, isFunction, isIterable, function* (f, i) {
121
- var results, x;
122
- results = [];
123
-
124
- for (x of i) {
125
- results.push(yield tee(f)(x));
126
- }
127
-
128
- return results;
105
+ generic(tap, isFunction, isIterable, function*(f, i) {
106
+ var results, x;
107
+ results = [];
108
+ for (x of i){
109
+ results.push((yield tee(f)(x)));
110
+ }
111
+ return results;
129
112
  });
130
- generic(tap, isFunction, isReagent, async function* (f, r) {
131
- var results, x;
132
- results = [];
133
-
134
- for await (x of r) {
135
- results.push(yield tee(f)(x));
136
- }
137
-
138
- return results;
113
+ generic(tap, isFunction, isReagent, async function*(f, r) {
114
+ var results, x;
115
+ results = [];
116
+ for await (x of r){
117
+ results.push((yield tee(f)(x)));
118
+ }
119
+ return results;
139
120
  });
140
121
  tap = curry(binary(tap));
141
122
  select = generic({
142
- name: "select"
143
- });
144
- generic(select, isFunction, isIterable, function* (f, i) {
145
- var results, x;
146
- results = [];
147
-
148
- for (x of i) {
149
- if (f(x)) {
150
- results.push(yield x);
123
+ name: "select"
124
+ });
125
+ generic(select, isFunction, isIterable, function*(f, i) {
126
+ var results, x;
127
+ results = [];
128
+ for (x of i){
129
+ if (f(x)) {
130
+ results.push((yield x));
131
+ }
151
132
  }
152
- }
153
-
154
- return results;
155
- });
156
- generic(select, isFunction, isReagent, async function* (f, r) {
157
- var results, x;
158
- results = [];
159
-
160
- for await (x of r) {
161
- if (f(x)) {
162
- results.push(yield x);
133
+ return results;
134
+ });
135
+ generic(select, isFunction, isReagent, async function*(f, r) {
136
+ var results, x;
137
+ results = [];
138
+ for await (x of r){
139
+ if (f(x)) {
140
+ results.push((yield x));
141
+ }
163
142
  }
164
- }
165
-
166
- return results;
143
+ return results;
167
144
  });
168
- generic(select, isFunction, isArray, function (f, ax) {
169
- return ax.filter(f);
145
+ generic(select, isFunction, isArray, function(f, ax) {
146
+ return ax.filter(f);
170
147
  });
171
148
  select = curry(binary(select));
172
- reject = curry(function (f, i) {
173
- return select(negate(f), i);
174
- });
175
- resolve = curry(async function* (filter, producer) {
176
- var ref, results, x;
177
- ref = filter(producer);
178
- results = [];
179
-
180
- for await (x of ref) {
181
- results.push(yield await x);
182
- }
183
-
184
- return results;
149
+ reject = curry(function(f, i) {
150
+ return select(negate(f), i);
151
+ });
152
+ resolve = curry(async function*(filter, producer) {
153
+ var ref, results, x;
154
+ ref = filter(producer);
155
+ results = [];
156
+ for await (x of ref){
157
+ results.push((yield await x));
158
+ }
159
+ return results;
185
160
  });
186
161
  collect = generic({
187
- name: "start"
162
+ name: "start"
188
163
  });
189
- generic(collect, isIterable, function (i) {
190
- return Array.from(i);
164
+ generic(collect, isIterable, function(i) {
165
+ return Array.from(i);
191
166
  });
192
- generic(collect, isReagent, async function (r) {
193
- var results, x;
194
- results = [];
195
-
196
- for await (x of r) {
197
- results.push(x);
198
- }
199
-
200
- return results;
167
+ generic(collect, isReagent, async function(r) {
168
+ var results, x;
169
+ results = [];
170
+ for await (x of r){
171
+ results.push(x);
172
+ }
173
+ return results;
201
174
  });
202
175
  start = generic({
203
- name: "start"
176
+ name: "start"
204
177
  });
205
- generic(start, isIterable, function (i) {
206
- var x;
207
-
208
- for (x of i) {
209
- void 0;
210
- }
211
-
212
- return void 0;
178
+ generic(start, isIterable, function(i) {
179
+ var x;
180
+ for (x of i){
181
+ void 0;
182
+ }
183
+ return void 0;
213
184
  });
214
- generic(start, isReagent, async function (r) {
215
- var x;
216
-
217
- for await (x of r) {
218
- void 0;
219
- }
220
-
221
- return void 0;
185
+ generic(start, isReagent, async function(r) {
186
+ var x;
187
+ for await (x of r){
188
+ void 0;
189
+ }
190
+ return void 0;
222
191
  });
223
192
  each = generic({
224
- name: "each"
193
+ name: "each"
225
194
  });
226
- generic(each, isFunction, isIterable, function (f, i) {
227
- var x;
228
-
229
- for (x of i) {
230
- f(x);
231
- }
232
-
233
- return void 0;
195
+ generic(each, isFunction, isIterable, function(f, i) {
196
+ var x;
197
+ for (x of i){
198
+ f(x);
199
+ }
200
+ return void 0;
234
201
  });
235
- generic(each, isFunction, isReagent, async function (f, r) {
236
- var x;
237
-
238
- for await (x of r) {
239
- f(x);
240
- }
241
-
242
- return void 0;
202
+ generic(each, isFunction, isReagent, async function(f, r) {
203
+ var x;
204
+ for await (x of r){
205
+ f(x);
206
+ }
207
+ return void 0;
243
208
  });
244
- generic(each, isFunction, isArray, function (f, ax) {
245
- return ax.forEach(f);
209
+ generic(each, isFunction, isArray, function(f, ax) {
210
+ return ax.forEach(f);
246
211
  });
247
212
  each = curry(binary(each));
248
213
  reduce = generic({
249
- name: "fold/reduce"
214
+ name: "fold/reduce"
250
215
  });
251
- generic(reduce, isFunction, isAny, isIterable, function (f, k, i) {
252
- var x;
253
-
254
- for (x of i) {
255
- k = f(k, x);
256
- }
257
-
258
- return k;
216
+ generic(reduce, isFunction, isAny, isIterable, function(f, k, i) {
217
+ var x;
218
+ for (x of i){
219
+ k = f(k, x);
220
+ }
221
+ return k;
259
222
  });
260
- generic(reduce, isFunction, isAny, isReagent, async function (f, k, r) {
261
- var x;
262
-
263
- for await (x of r) {
264
- k = f(k, x);
265
- }
266
-
267
- return k;
223
+ generic(reduce, isFunction, isAny, isReagent, async function(f, k, r) {
224
+ var x;
225
+ for await (x of r){
226
+ k = f(k, x);
227
+ }
228
+ return k;
268
229
  });
269
- generic(reduce, isFunction, isAny, isArray, function (f, k, ax) {
270
- return ax.reduce(f, k);
230
+ generic(reduce, isFunction, isAny, isArray, function(f, k, ax) {
231
+ return ax.reduce(f, k);
271
232
  });
272
233
  reduce = fold = curry(ternary(reduce));
273
234
  join = generic({
274
- name: "join"
235
+ name: "join"
275
236
  });
276
- generic(join, isFunction, isIterable, function (f, i) {
277
- var n, r, x;
278
- n = 0;
279
-
280
- for (x of i) {
281
- r = n++ > 0 ? f(r, x) : x;
282
- }
283
-
284
- return r;
237
+ generic(join, isFunction, isIterable, function(f, i) {
238
+ var n, r, x;
239
+ n = 0;
240
+ for (x of i){
241
+ r = n++ > 0 ? f(r, x) : x;
242
+ }
243
+ return r;
285
244
  });
286
- generic(join, isFunction, isReagent, async function (f, i) {
287
- var n, r, x;
288
- n = 0;
289
-
290
- for await (x of i) {
291
- r = n++ > 0 ? f(r, x) : x;
292
- }
293
-
294
- return r;
245
+ generic(join, isFunction, isReagent, async function(f, i) {
246
+ var n, r, x;
247
+ n = 0;
248
+ for await (x of i){
249
+ r = n++ > 0 ? f(r, x) : x;
250
+ }
251
+ return r;
295
252
  });
296
- generic(join, isString, isIterable, function (a, i) {
297
- return join(a, collect(i));
253
+ generic(join, isString, isIterable, function(a, i) {
254
+ return join(a, collect(i));
298
255
  });
299
- generic(join, isString, isReagent, async function (a, i) {
300
- return join(a, await collect(i));
256
+ generic(join, isString, isReagent, async function(a, i) {
257
+ return join(a, await collect(i));
301
258
  });
302
- generic(join, isString, isArray, function (a, ax) {
303
- return ax.join(a);
259
+ generic(join, isString, isArray, function(a, ax) {
260
+ return ax.join(a);
304
261
  });
305
262
  join = curry(binary(join));
306
263
  partition = generic({
307
- name: "partition"
308
- });
309
- generic(partition, isNumber, isIterable, function* (n, i) {
310
- var batch, x;
311
- batch = [];
312
-
313
- for (x of i) {
314
- batch.push(x);
315
-
316
- if (batch.length === n) {
317
- yield batch;
318
- batch = [];
264
+ name: "partition"
265
+ });
266
+ generic(partition, isNumber, isIterable, function*(n, i) {
267
+ var batch, x;
268
+ batch = [];
269
+ for (x of i){
270
+ batch.push(x);
271
+ if (batch.length === n) {
272
+ yield batch;
273
+ batch = [];
274
+ }
275
+ }
276
+ if (batch.length > 0) {
277
+ return yield batch;
319
278
  }
320
- }
321
-
322
- if (batch.length > 0) {
323
- return yield batch;
324
- }
325
279
  });
326
- generic(partition, isNumber, isReagent, async function* (n, r) {
327
- var batch, x;
328
- batch = [];
329
-
330
- for await (x of r) {
331
- batch.push(x);
332
-
333
- if (batch.length === n) {
334
- yield batch;
335
- batch = [];
280
+ generic(partition, isNumber, isReagent, async function*(n, r) {
281
+ var batch, x;
282
+ batch = [];
283
+ for await (x of r){
284
+ batch.push(x);
285
+ if (batch.length === n) {
286
+ yield batch;
287
+ batch = [];
288
+ }
289
+ }
290
+ if (batch.length > 0) {
291
+ return yield batch;
336
292
  }
337
- }
338
-
339
- if (batch.length > 0) {
340
- return yield batch;
341
- }
342
293
  });
343
294
  Queue = class Queue {
344
- static create() {
345
- return new Queue();
346
- }
347
-
348
- constructor() {
349
- this.q = [];
350
- this.p = [];
351
- }
352
-
353
- enqueue(value) {
354
- if (this.p.length > 0) {
355
- return apply(this.p.shift(), [value]);
356
- } else {
357
- return this.q.push(value);
295
+ static make() {
296
+ return new Queue();
358
297
  }
359
- }
360
-
361
- dequeue() {
362
- if (this.q.length > 0) {
363
- return this.q.shift();
364
- } else {
365
- return new Promise(resolve => {
366
- return this.p.push(resolve);
367
- });
298
+ static create() {
299
+ return new Queue();
300
+ }
301
+ constructor(){
302
+ this.p = [];
303
+ this.q = [];
304
+ }
305
+ enqueue(value) {
306
+ if (this.p.length > 0) {
307
+ apply(this.p.shift(), [
308
+ value
309
+ ]);
310
+ } else {
311
+ this.q.push(value);
312
+ }
313
+ return this;
314
+ }
315
+ dequeue() {
316
+ if (this.q.length > 0) {
317
+ return this.q.shift();
318
+ } else {
319
+ return new Promise((resolve)=>{
320
+ return this.p.push(resolve);
321
+ });
322
+ }
323
+ }
324
+ isIdle() {
325
+ return this.p.length === 0 && this.q.length === 0;
326
+ }
327
+ async *[Symbol.asyncIterator]() {
328
+ while(true){
329
+ yield await this.dequeue();
330
+ }
368
331
  }
369
- }
370
-
371
- isIdle() {
372
- return this.p.length === 0 && this.q.length === 0;
373
- }
374
-
375
332
  };
376
- events = curry(async function* (name, source) {
377
- var q, results;
378
- q = Queue.create();
379
-
380
- if (source.on != null) {
381
- source.on(name, function (event) {
382
- return q.enqueue(event);
383
- });
384
- } else if (source.addEventListener != null) {
385
- source.addEventListener(name, function (event) {
386
- return q.enqueue(event);
387
- });
388
- } else {
389
- throw new TypeError("events: source must support `on` or `addEventListener` method");
390
- }
391
-
392
- results = [];
393
-
394
- while (true) {
395
- results.push(yield await q.dequeue());
396
- }
397
-
398
- return results;
333
+ events = curry(async function*(name, source) {
334
+ var q;
335
+ q = Queue.create();
336
+ if (source.on != null) {
337
+ source.on(name, function(event) {
338
+ return q.enqueue(event);
339
+ });
340
+ } else if (source.addEventListener != null) {
341
+ source.addEventListener(name, function(event) {
342
+ return q.enqueue(event);
343
+ });
344
+ } else {
345
+ throw new TypeError("events: source must support `on` or `addEventListener` method");
346
+ }
347
+ while(true){
348
+ yield await q.dequeue();
349
+ }
399
350
  });
400
- export { includes, uniqueBy, map, project, find, tap, select, reject, resolve, collect, start, each, reduce, join, partition, Queue, events };
351
+ export { includes, uniqueBy, map, project, find, tap, select, reject, resolve, collect, start, each, reduce, join, partition, Queue, events }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL2l0ZXJhYmxlLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLEtBQUEsRUFBQSxTQUFBLEVBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsU0FBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLEVBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLEdBQUEsRUFBQTs7QUFBQSxPQUFBO0VBQVEsT0FBUjtDQUFBLE1BQUE7O0FBQ0EsT0FBQTtFQUFRLElBQVI7RUFBYyxLQUFkO0VBQXFCLE1BQXJCO0VBQTZCLE9BQTdCO0VBQXNDLEdBQXRDO0VBQTJDLEtBQTNDO0NBQUEsTUFBQTs7QUFDQSxPQUFBO0VBQVEsTUFBUjtDQUFBLE1BQUE7O0FBQ0EsT0FBQTtFQUFRLFFBQVI7RUFBa0IsUUFBbEI7RUFBNEIsT0FBNUI7RUFBcUMsVUFBckM7RUFDRSxVQURGO0VBQ2MsU0FEZDtDQUFBLE1BQUE7O0FBRUEsT0FBQTtFQUFRLEdBQVI7Q0FBQSxNQUFBOztBQUNBLE9BQUE7RUFBUyxFQUFUO0NBQUEsTUFBQTs7QUFDQSxLQUFBLEdBQVEsSUFBQSxDQUFLLElBQUw7O0FBRVIsU0FBQSxHQUFZLE9BQUEsQ0FDVjtFQUFBLElBQUEsRUFBTTtBQUFOLENBRFU7O0FBR1osT0FBQSxDQUFRLFNBQVIsRUFBb0IsSUFBQSxDQUFLLElBQUwsQ0FBcEIsRUFBZ0MsU0FBaEMsRUFBMkMsTUFBQSxRQUFBLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FBQTtBQUMzQyxNQUFBO0VBQUUsb0JBQUE7SUFDRSxJQUFlLE1BQU0sQ0FBQyxFQUFQLENBQVUsQ0FBVixFQUFhLEVBQWIsQ0FBZjtBQUFBLGFBQU8sS0FBUDs7RUFERjtTQUVBO0FBSHlDLENB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O0FBV1QsT0FBQTtFQUNFLFFBREY7RUFFRSxRQUZGO0VBR0UsR0FIRjtFQUlFLE9BSkY7RUFLRSxJQUxGO0VBTUUsR0FORjtFQU9FLE1BUEY7RUFRRSxNQVJGO0VBU0UsT0FURjtFQVVFLE9BVkY7RUFXRSxLQVhGO0VBWUUsSUFaRjtFQWFFLE1BYkY7RUFjRSxJQWRGO0VBZUUsU0FmRjtFQWdCRSxLQWhCRjtFQWlCRSxNQWpCRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2VuZXJpY30gZnJvbSBcIi4vZ2VuZXJpY1wiXG5pbXBvcnQge3dyYXAsIGN1cnJ5LCBiaW5hcnksIHRlcm5hcnksIHRlZSwgYXBwbHl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcbmltcG9ydCB7bmVnYXRlfSBmcm9tIFwiLi9wcmVkaWNhdGVcIlxuaW1wb3J0IHtpc1N0cmluZywgaXNOdW1iZXIsIGlzQXJyYXksIGlzRnVuY3Rpb24sXG4gIGlzSXRlcmFibGUsIGlzUmVhZ2VudH0gZnJvbSBcIi4vdHlwZVwiXG5pbXBvcnQge2dldH0gZnJvbSBcIi4vb2JqZWN0XCJcbmltcG9ydCB7IGVxIH0gZnJvbSBcIi4vdmFsdWVcIlxuaXNBbnkgPSB3cmFwIHRydWVcblxuX2luY2x1ZGVzID0gZ2VuZXJpY1xuICBuYW1lOiBcImluY2x1ZGVzXCJcblxuZ2VuZXJpYyBfaW5jbHVkZXMsICh3cmFwIHRydWUpLCBpc1JlYWdlbnQsIChhLCBheCkgLT5cbiAgZm9yIGF3YWl0IF9hIGZyb20gYXhcbiAgICByZXR1cm4gdHJ1ZSBpZiBPYmplY3QuaXMgYSwgX2FcbiAgZmFsc2VcblxuZ2VuZXJpYyBfaW5jbHVkZXMsICh3cmFwIHRydWUpLCBpc0l0ZXJhYmxlLCAoYSwgYXgpIC0+XG4gIGZvciBfYSBmcm9tIGF4XG4gICAgcmV0dXJuIHRydWUgaWYgT2JqZWN0LmlzIGEsIF9hXG4gIGZhbHNlXG5cbmdlbmVyaWMgX2luY2x1ZGVzLCAod3JhcCB0cnVlKSwgaXNBcnJheSwgKGEsIGF4KSAtPlxuICBheC5pbmNsdWRlcyBhXG5cbmluY2x1ZGVzID0gY3VycnkgYmluYXJ5IF9pbmNsdWRlc1xuXG4jIFRPRE8gc2hvdWxkIHRoaXMgcmV0dXJuIGFuIGl0ZXJhdG9yP1xudW5pcXVlQnkgPSAoZiwgYXgpIC0+XG4gIGJ4ID0gW11cbiAgKGJ4LnB1c2ggYSkgZm9yIGEgZnJvbSBheCB3aGVuICEoYnguZmluZCAoYikgLT4gZiBhLCBiKT9cbiAgYnhcblxubWFwID0gZ2VuZXJpYyBuYW1lOiBcIm1hcFwiXG5nZW5lcmljIG1hcCwgaXNGdW5jdGlvbiwgaXNJdGVyYWJsZSwgKGYsIGkpIC0+IHlpZWxkIChmIHgpIGZvciB4IGZyb20gaVxuZ2VuZXJpYyBtYXAsIGlzRnVuY3Rpb24sIGlzUmVhZ2VudCwgKGYsIHIpIC0+IHlpZWxkIChmIHgpIGZvciBhd2FpdCB4IGZyb20gclxuZ2VuZXJpYyBtYXAsIGlzRnVuY3Rpb24sIGlzQXJyYXksIChmLCBheCkgLT4gYXgubWFwICh4KSAtPiBmIHhcbm1hcCA9IGN1cnJ5IGJpbmFyeSBtYXBcblxucHJvamVjdCA9IGN1cnJ5IChwLCBpKSAtPiBtYXAgKGdldCBwKSwgaVxuXG5maW5kID0gZ2VuZXJpYyBuYW1lOiBcImZpbmRcIlxuZ2VuZXJpYyBmaW5kLCBpc0Z1bmN0aW9uLCBpc0l0ZXJhYmxlLCAoZiwgaSkgLT5cbiAgZm9yIHggZnJvbSBpXG4gICAgcmV0dXJuIHggaWYgKGF3YWl0IGYgeCkgPT0gdHJ1ZVxuICB1bmRlZmluZWRcbmdlbmVyaWMgZmluZCwgaXNGdW5jdGlvbiwgaXNSZWFnZW50LCAoZiwgcikgLT5cbiAgZm9yIGF3YWl0IHggZnJvbSByXG4gICAgcmV0dXJuIHggaWYgKGF3YWl0IGYgeCkgPT0gdHJ1ZVxuICB1bmRlZmluZWRcbmdlbmVyaWMgZmluZCwgaXNGdW5jdGlvbiwgaXNBcnJheSwgKGYsIGF4KSAtPiBheC5maW5kICh4KSAtPiBmIHhcbmZpbmQgPSBjdXJyeSBiaW5hcnkgZmluZFxuXG50YXAgPSBnZW5lcmljIG5hbWU6IFwidGFwXCJcbmdlbmVyaWMgdGFwLCBpc0Z1bmN0aW9uLCBpc0l0ZXJhYmxlLFxuICAoZiwgaSkgLT4geWllbGQgKCh0ZWUgZikgeCkgZm9yIHggZnJvbSBpXG5nZW5lcmljIHRhcCwgaXNGdW5jdGlvbiwgaXNSZWFnZW50LFxuICAoZiwgcikgLT4geWllbGQgKCh0ZWUgZikgeCkgZm9yIGF3YWl0IHggZnJvbSByXG50YXAgPSBjdXJyeSBiaW5hcnkgdGFwXG5cbnNlbGVjdCA9IGdlbmVyaWMgbmFtZTogXCJzZWxlY3RcIlxuZ2VuZXJpYyBzZWxlY3QsIGlzRnVuY3Rpb24sIGlzSXRlcmFibGUsXG4gIChmLCBpKSAtPiB5aWVsZCB4IGZvciB4IGZyb20gaSB3aGVuIGYgeFxuZ2VuZXJpYyBzZWxlY3QsIGlzRnVuY3Rpb24sIGlzUmVhZ2VudCxcbiAgKGYsIHIpIC0+IHlpZWxkIHggZm9yIGF3YWl0IHggZnJvbSByIHdoZW4gZiB4XG5nZW5lcmljIHNlbGVjdCwgaXNGdW5jdGlvbiwgaXNBcnJheSxcbiAgKGYsIGF4KSAtPiBheC5maWx0ZXIgZlxuc2VsZWN0ID0gY3VycnkgYmluYXJ5IHNlbGVjdFxuXG5yZWplY3QgPSBjdXJyeSAoZiwgaSkgLT4gc2VsZWN0IChuZWdhdGUgZiksIGlcblxucmVzb2x2ZSA9IGN1cnJ5IChmaWx0ZXIsIHByb2R1Y2VyKSAtPlxuICB5aWVsZCBhd2FpdCB4IGZvciBhd2FpdCB4IGZyb20gZmlsdGVyIHByb2R1Y2VyXG5cbmNvbGxlY3QgPSBnZW5lcmljIG5hbWU6IFwic3RhcnRcIlxuZ2VuZXJpYyBjb2xsZWN0LCBpc0l0ZXJhYmxlLCAoaSkgLT4gQXJyYXkuZnJvbSBpXG5nZW5lcmljIGNvbGxlY3QsIGlzUmVhZ2VudCwgKHIpIC0+IHggZm9yIGF3YWl0IHggZnJvbSByXG5cbnN0YXJ0ID0gZ2VuZXJpYyBuYW1lOiBcInN0YXJ0XCJcbmdlbmVyaWMgc3RhcnQsIGlzSXRlcmFibGUsIChpKSAtPiB1bmRlZmluZWQgZm9yIHggZnJvbSBpIDsgdW5kZWZpbmVkXG5nZW5lcmljIHN0YXJ0LCBpc1JlYWdlbnQsIChyKSAtPiB1bmRlZmluZWQgZm9yIGF3YWl0IHggZnJvbSByIDsgdW5kZWZpbmVkXG5cbmVhY2ggPSBnZW5lcmljIG5hbWU6IFwiZWFjaFwiXG5nZW5lcmljIGVhY2gsIGlzRnVuY3Rpb24sIGlzSXRlcmFibGUsXG4gIChmLCBpKSAtPiBmIHggZm9yIHggZnJvbSBpIDsgdW5kZWZpbmVkXG5nZW5lcmljIGVhY2gsIGlzRnVuY3Rpb24sIGlzUmVhZ2VudCxcbiAgKGYsIHIpIC0+IGYgeCBmb3IgYXdhaXQgeCBmcm9tIHIgOyB1bmRlZmluZWRcbmdlbmVyaWMgZWFjaCwgaXNGdW5jdGlvbiwgaXNBcnJheSxcbiAgKGYsIGF4KSAtPiBheC5mb3JFYWNoIGZcbmVhY2ggPSBjdXJyeSBiaW5hcnkgZWFjaFxuXG5yZWR1Y2UgPSBnZW5lcmljIG5hbWU6IFwiZm9sZC9yZWR1Y2VcIlxuZ2VuZXJpYyByZWR1Y2UsIGlzRnVuY3Rpb24sIGlzQW55LCBpc0l0ZXJhYmxlLFxuICAoZiwgaywgaSkgLT4gKGsgPSBmIGssIHgpIGZvciB4IGZyb20gaSA7IGtcbmdlbmVyaWMgcmVkdWNlLCBpc0Z1bmN0aW9uLCBpc0FueSwgaXNSZWFnZW50LFxuICAoZiwgaywgcikgLT4gKGsgPSBmIGssIHgpIGZvciBhd2FpdCB4IGZyb20gciA7IGtcbmdlbmVyaWMgcmVkdWNlLCBpc0Z1bmN0aW9uLCBpc0FueSwgaXNBcnJheSxcbiAgKGYsIGssIGF4KSAtPiBheC5yZWR1Y2UgZiwga1xucmVkdWNlID0gZm9sZCA9IGN1cnJ5IHRlcm5hcnkgcmVkdWNlXG5cbmpvaW4gPSBnZW5lcmljIG5hbWU6IFwiam9pblwiXG5nZW5lcmljIGpvaW4sIGlzRnVuY3Rpb24sIGlzSXRlcmFibGUsIChmLCBpKSAtPlxuICBuID0gMFxuICBmb3IgeCBmcm9tIGlcbiAgICByID0gaWYgbisrID4gMCB0aGVuIGYgciwgeCBlbHNlIHhcbiAgclxuXG5nZW5lcmljIGpvaW4sIGlzRnVuY3Rpb24sIGlzUmVhZ2VudCwgKGYsIGkpIC0+XG4gIG4gPSAwXG4gIGZvciBhd2FpdCB4IGZyb20gaVxuICAgIHIgPSBpZiBuKysgPiAwIHRoZW4gZiByLCB4IGVsc2UgeFxuICByXG5nZW5lcmljIGpvaW4sIGlzU3RyaW5nLCBpc0l0ZXJhYmxlLCAoYSwgaSkgLT5cbiAgam9pbiBhLCBjb2xsZWN0IGlcblxuZ2VuZXJpYyBqb2luLCBpc1N0cmluZywgaXNSZWFnZW50LCAoYSwgaSkgLT5cbiAgam9pbiBhLCBhd2FpdCBjb2xsZWN0IGlcblxuZ2VuZXJpYyBqb2luLCBpc1N0cmluZywgaXNBcnJheSwgKGEsIGF4KSAtPiBheC5qb2luIGFcblxuam9pbiA9IGN1cnJ5IGJpbmFyeSBqb2luXG5cblxucGFydGl0aW9uID0gZ2VuZXJpYyBuYW1lOiBcInBhcnRpdGlvblwiXG5nZW5lcmljIHBhcnRpdGlvbiwgaXNOdW1iZXIsIGlzSXRlcmFibGUsIChuLCBpKSAtPlxuICBiYXRjaCA9IFtdXG4gIGZvciB4IGZyb20gaVxuICAgIGJhdGNoLnB1c2ggeFxuICAgIGlmIGJhdGNoLmxlbmd0aCA9PSBuXG4gICAgICB5aWVsZCBiYXRjaFxuICAgICAgYmF0Y2ggPSBbXVxuICBpZiBiYXRjaC5sZW5ndGggPiAwXG4gICAgeWllbGQgYmF0Y2hcblxuZ2VuZXJpYyBwYXJ0aXRpb24sIGlzTnVtYmVyLCBpc1JlYWdlbnQsIChuLCByKSAtPlxuICBiYXRjaCA9IFtdXG4gIGZvciBhd2FpdCB4IGZyb20gclxuICAgIGJhdGNoLnB1c2ggeFxuICAgIGlmIGJhdGNoLmxlbmd0aCA9PSBuXG4gICAgICB5aWVsZCBiYXRjaFxuICAgICAgYmF0Y2ggPSBbXVxuICBpZiBiYXRjaC5sZW5ndGggPiAwXG4gICAgeWllbGQgYmF0Y2hcblxuXG5jbGFzcyBRdWV1ZVxuXG4gIEBtYWtlOiAtPiBuZXcgUXVldWVcblxuICBAY3JlYXRlOiAtPiBuZXcgUXVldWVcblxuICBjb25zdHJ1Y3RvcjogLT5cbiAgICBAcCA9IFtdXG4gICAgQHEgPSBbXVxuXG4gIGVucXVldWU6ICggdmFsdWUgKSAtPlxuICAgIGlmIEBwLmxlbmd0aCA+IDBcbiAgICAgIGFwcGx5IEBwLnNoaWZ0KCksIFsgdmFsdWUgXVxuICAgIGVsc2VcbiAgICAgIEBxLnB1c2ggdmFsdWVcbiAgICBAXG5cbiAgZGVxdWV1ZTogLT5cbiAgICBpZiBAcS5sZW5ndGggPiAwXG4gICAgICBAcS5zaGlmdCgpXG4gICAgZWxzZVxuICAgICAgbmV3IFByb21pc2UgKCByZXNvbHZlICkgPT4gQHAucHVzaCByZXNvbHZlXG5cbiAgaXNJZGxlOiAtPiBAcC5sZW5ndGggPT0gMCAmJiBAcS5sZW5ndGggPT0gMFxuXG4gIFsgU3ltYm9sLmFzeW5jSXRlcmF0b3IgXTogLT5cbiAgICBsb29wIHlpZWxkIGF3YWl0IEBkZXF1ZXVlKClcbiAgICByZXR1cm5cblxuZXZlbnRzID0gY3VycnkgKG5hbWUsIHNvdXJjZSkgLT5cbiAgcSA9IFF1ZXVlLmNyZWF0ZSgpXG4gIGlmIHNvdXJjZS5vbj9cbiAgICBzb3VyY2Uub24gbmFtZSwgKGV2ZW50KSAtPiBxLmVucXVldWUgZXZlbnRcbiAgZWxzZSBpZiBzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcj9cbiAgICBzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lciBuYW1lLCAoZXZlbnQpIC0+IHEuZW5xdWV1ZSBldmVudFxuICBlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IgXCJldmVudHM6IHNvdXJjZSBtdXN0IHN1cHBvcnRcbiAgICBgb25gIG9yIGBhZGRFdmVudExpc3RlbmVyYCBtZXRob2RcIlxuICBsb29wIHlpZWxkIGF3YWl0IHEuZGVxdWV1ZSgpXG4gIHJldHVyblxuXG5leHBvcnQge1xuICBpbmNsdWRlc1xuICB1bmlxdWVCeVxuICBtYXBcbiAgcHJvamVjdFxuICBmaW5kXG4gIHRhcFxuICBzZWxlY3RcbiAgcmVqZWN0XG4gIHJlc29sdmVcbiAgY29sbGVjdFxuICBzdGFydFxuICBlYWNoXG4gIHJlZHVjZVxuICBqb2luXG4gIHBhcnRpdGlvblxuICBRdWV1ZVxuICBldmVudHNcbn1cbiJdfQ==
352
+ //# sourceURL=/@dashkite/joy/src/iterable.coffee
353
+
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9AZGFzaGtpdGUvam95L3NyYy9pdGVyYWJsZS5jb2ZmZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnZW5lcmljfSBmcm9tIFwiLi9nZW5lcmljXCJcbmltcG9ydCB7d3JhcCwgY3VycnksIGJpbmFyeSwgdGVybmFyeSwgdGVlLCBhcHBseX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuaW1wb3J0IHtuZWdhdGV9IGZyb20gXCIuL3ByZWRpY2F0ZVwiXG5pbXBvcnQge2lzU3RyaW5nLCBpc051bWJlciwgaXNBcnJheSwgaXNGdW5jdGlvbixcbiAgaXNJdGVyYWJsZSwgaXNSZWFnZW50fSBmcm9tIFwiLi90eXBlXCJcbmltcG9ydCB7Z2V0fSBmcm9tIFwiLi9vYmplY3RcIlxuaW1wb3J0IHsgZXEgfSBmcm9tIFwiLi92YWx1ZVwiXG5pc0FueSA9IHdyYXAgdHJ1ZVxuXG5faW5jbHVkZXMgPSBnZW5lcmljXG4gIG5hbWU6IFwiaW5jbHVkZXNcIlxuXG5nZW5lcmljIF9pbmNsdWRlcywgKHdyYXAgdHJ1ZSksIGlzUmVhZ2VudCwgKGEsIGF4KSAtPlxuICBmb3IgYXdhaXQgX2EgZnJvbSBheFxuICAgIHJldHVybiB0cnVlIGlmIE9iamVjdC5pcyBhLCBfYVxuICBmYWxzZVxuXG5nZW5lcmljIF9pbmNsdWRlcywgKHdyYXAgdHJ1ZSksIGlzSXRlcmFibGUsIChhLCBheCkgLT5cbiAgZm9yIF9hIGZyb20gYXhcbiAgICByZXR1cm4gdHJ1ZSBpZiBPYmplY3QuaXMgYSwgX2FcbiAgZmFsc2VcblxuZ2VuZXJpYyBfaW5jbHVkZXMsICh3cmFwIHRydWUpLCBpc0FycmF5LCAoYSwgYXgpIC0+XG4gIGF4LmluY2x1ZGVzIGFcblxuaW5jbHVkZXMgPSBjdXJyeSBiaW5hcnkgX2luY2x1ZGVzXG5cbiMgVE9ETyBzaG91bGQgdGhpcyByZXR1cm4gYW4gaXRlcmF0b3I/XG51bmlxdWVCeSA9IChmLCBheCkgLT5cbiAgYnggPSBbXVxuICAoYngucHVzaCBhKSBmb3IgYSBmcm9tIGF4IHdoZW4gIShieC5maW5kIChiKSAtPiBmIGEsIGIpP1xuICBieFxuXG5tYXAgPSBnZW5lcmljIG5hbWU6IFwibWFwXCJcbmdlbmVyaWMgbWFwLCBpc0Z1bmN0aW9uLCBpc0l0ZXJhYmxlLCAoZiwgaSkgLT4geWllbGQgKGYgeCkgZm9yIHggZnJvbSBpXG5nZW5lcmljIG1hcCwgaXNGdW5jdGlvbiwgaXNSZWFnZW50LCAoZiwgcikgLT4geWllbGQgKGYgeCkgZm9yIGF3YWl0IHggZnJvbSByXG5nZW5lcmljIG1hcCwgaXNGdW5jdGlvbiwgaXNBcnJheSwgKGYsIGF4KSAtPiBheC5tYXAgKHgpIC0+IGYgeFxubWFwID0gY3VycnkgYmluYXJ5IG1hcFxuXG5wcm9qZWN0ID0gY3VycnkgKHAsIGkpIC0+IG1hcCAoZ2V0IHApLCBpXG5cbmZpbmQgPSBnZW5lcmljIG5hbWU6IFwiZmluZFwiXG5nZW5lcmljIGZpbmQsIGlzRnVuY3Rpb24sIGlzSXRlcmFibGUsIChmLCBpKSAtPlxuICBmb3IgeCBmcm9tIGlcbiAgICByZXR1cm4geCBpZiAoYXdhaXQgZiB4KSA9PSB0cnVlXG4gIHVuZGVmaW5lZFxuZ2VuZXJpYyBmaW5kLCBpc0Z1bmN0aW9uLCBpc1JlYWdlbnQsIChmLCByKSAtPlxuICBmb3IgYXdhaXQgeCBmcm9tIHJcbiAgICByZXR1cm4geCBpZiAoYXdhaXQgZiB4KSA9PSB0cnVlXG4gIHVuZGVmaW5lZFxuZ2VuZXJpYyBmaW5kLCBpc0Z1bmN0aW9uLCBpc0FycmF5LCAoZiwgYXgpIC0+IGF4LmZpbmQgKHgpIC0+IGYgeFxuZmluZCA9IGN1cnJ5IGJpbmFyeSBmaW5kXG5cbnRhcCA9IGdlbmVyaWMgbmFtZTogXCJ0YXBcIlxuZ2VuZXJpYyB0YXAsIGlzRnVuY3Rpb24sIGlzSXRlcmFibGUsXG4gIChmLCBpKSAtPiB5aWVsZCAoKHRlZSBmKSB4KSBmb3IgeCBmcm9tIGlcbmdlbmVyaWMgdGFwLCBpc0Z1bmN0aW9uLCBpc1JlYWdlbnQsXG4gIChmLCByKSAtPiB5aWVsZCAoKHRlZSBmKSB4KSBmb3IgYXdhaXQgeCBmcm9tIHJcbnRhcCA9IGN1cnJ5IGJpbmFyeSB0YXBcblxuc2VsZWN0ID0gZ2VuZXJpYyBuYW1lOiBcInNlbGVjdFwiXG5nZW5lcmljIHNlbGVjdCwgaXNGdW5jdGlvbiwgaXNJdGVyYWJsZSxcbiAgKGYsIGkpIC0+IHlpZWxkIHggZm9yIHggZnJvbSBpIHdoZW4gZiB4XG5nZW5lcmljIHNlbGVjdCwgaXNGdW5jdGlvbiwgaXNSZWFnZW50LFxuICAoZiwgcikgLT4geWllbGQgeCBmb3IgYXdhaXQgeCBmcm9tIHIgd2hlbiBmIHhcbmdlbmVyaWMgc2VsZWN0LCBpc0Z1bmN0aW9uLCBpc0FycmF5LFxuICAoZiwgYXgpIC0+IGF4LmZpbHRlciBmXG5zZWxlY3QgPSBjdXJyeSBiaW5hcnkgc2VsZWN0XG5cbnJlamVjdCA9IGN1cnJ5IChmLCBpKSAtPiBzZWxlY3QgKG5lZ2F0ZSBmKSwgaVxuXG5yZXNvbHZlID0gY3VycnkgKGZpbHRlciwgcHJvZHVjZXIpIC0+XG4gIHlpZWxkIGF3YWl0IHggZm9yIGF3YWl0IHggZnJvbSBmaWx0ZXIgcHJvZHVjZXJcblxuY29sbGVjdCA9IGdlbmVyaWMgbmFtZTogXCJzdGFydFwiXG5nZW5lcmljIGNvbGxlY3QsIGlzSXRlcmFibGUsIChpKSAtPiBBcnJheS5mcm9tIGlcbmdlbmVyaWMgY29sbGVjdCwgaXNSZWFnZW50LCAocikgLT4geCBmb3IgYXdhaXQgeCBmcm9tIHJcblxuc3RhcnQgPSBnZW5lcmljIG5hbWU6IFwic3RhcnRcIlxuZ2VuZXJpYyBzdGFydCwgaXNJdGVyYWJsZSwgKGkpIC0+IHVuZGVmaW5lZCBmb3IgeCBmcm9tIGkgOyB1bmRlZmluZWRcbmdlbmVyaWMgc3RhcnQsIGlzUmVhZ2VudCwgKHIpIC0+IHVuZGVmaW5lZCBmb3IgYXdhaXQgeCBmcm9tIHIgOyB1bmRlZmluZWRcblxuZWFjaCA9IGdlbmVyaWMgbmFtZTogXCJlYWNoXCJcbmdlbmVyaWMgZWFjaCwgaXNGdW5jdGlvbiwgaXNJdGVyYWJsZSxcbiAgKGYsIGkpIC0+IGYgeCBmb3IgeCBmcm9tIGkgOyB1bmRlZmluZWRcbmdlbmVyaWMgZWFjaCwgaXNGdW5jdGlvbiwgaXNSZWFnZW50LFxuICAoZiwgcikgLT4gZiB4IGZvciBhd2FpdCB4IGZyb20gciA7IHVuZGVmaW5lZFxuZ2VuZXJpYyBlYWNoLCBpc0Z1bmN0aW9uLCBpc0FycmF5LFxuICAoZiwgYXgpIC0+IGF4LmZvckVhY2ggZlxuZWFjaCA9IGN1cnJ5IGJpbmFyeSBlYWNoXG5cbnJlZHVjZSA9IGdlbmVyaWMgbmFtZTogXCJmb2xkL3JlZHVjZVwiXG5nZW5lcmljIHJlZHVjZSwgaXNGdW5jdGlvbiwgaXNBbnksIGlzSXRlcmFibGUsXG4gIChmLCBrLCBpKSAtPiAoayA9IGYgaywgeCkgZm9yIHggZnJvbSBpIDsga1xuZ2VuZXJpYyByZWR1Y2UsIGlzRnVuY3Rpb24sIGlzQW55LCBpc1JlYWdlbnQsXG4gIChmLCBrLCByKSAtPiAoayA9IGYgaywgeCkgZm9yIGF3YWl0IHggZnJvbSByIDsga1xuZ2VuZXJpYyByZWR1Y2UsIGlzRnVuY3Rpb24sIGlzQW55LCBpc0FycmF5LFxuICAoZiwgaywgYXgpIC0+IGF4LnJlZHVjZSBmLCBrXG5yZWR1Y2UgPSBmb2xkID0gY3VycnkgdGVybmFyeSByZWR1Y2Vcblxuam9pbiA9IGdlbmVyaWMgbmFtZTogXCJqb2luXCJcbmdlbmVyaWMgam9pbiwgaXNGdW5jdGlvbiwgaXNJdGVyYWJsZSwgKGYsIGkpIC0+XG4gIG4gPSAwXG4gIGZvciB4IGZyb20gaVxuICAgIHIgPSBpZiBuKysgPiAwIHRoZW4gZiByLCB4IGVsc2UgeFxuICByXG5cbmdlbmVyaWMgam9pbiwgaXNGdW5jdGlvbiwgaXNSZWFnZW50LCAoZiwgaSkgLT5cbiAgbiA9IDBcbiAgZm9yIGF3YWl0IHggZnJvbSBpXG4gICAgciA9IGlmIG4rKyA+IDAgdGhlbiBmIHIsIHggZWxzZSB4XG4gIHJcbmdlbmVyaWMgam9pbiwgaXNTdHJpbmcsIGlzSXRlcmFibGUsIChhLCBpKSAtPlxuICBqb2luIGEsIGNvbGxlY3QgaVxuXG5nZW5lcmljIGpvaW4sIGlzU3RyaW5nLCBpc1JlYWdlbnQsIChhLCBpKSAtPlxuICBqb2luIGEsIGF3YWl0IGNvbGxlY3QgaVxuXG5nZW5lcmljIGpvaW4sIGlzU3RyaW5nLCBpc0FycmF5LCAoYSwgYXgpIC0+IGF4LmpvaW4gYVxuXG5qb2luID0gY3VycnkgYmluYXJ5IGpvaW5cblxuXG5wYXJ0aXRpb24gPSBnZW5lcmljIG5hbWU6IFwicGFydGl0aW9uXCJcbmdlbmVyaWMgcGFydGl0aW9uLCBpc051bWJlciwgaXNJdGVyYWJsZSwgKG4sIGkpIC0+XG4gIGJhdGNoID0gW11cbiAgZm9yIHggZnJvbSBpXG4gICAgYmF0Y2gucHVzaCB4XG4gICAgaWYgYmF0Y2gubGVuZ3RoID09IG5cbiAgICAgIHlpZWxkIGJhdGNoXG4gICAgICBiYXRjaCA9IFtdXG4gIGlmIGJhdGNoLmxlbmd0aCA+IDBcbiAgICB5aWVsZCBiYXRjaFxuXG5nZW5lcmljIHBhcnRpdGlvbiwgaXNOdW1iZXIsIGlzUmVhZ2VudCwgKG4sIHIpIC0+XG4gIGJhdGNoID0gW11cbiAgZm9yIGF3YWl0IHggZnJvbSByXG4gICAgYmF0Y2gucHVzaCB4XG4gICAgaWYgYmF0Y2gubGVuZ3RoID09IG5cbiAgICAgIHlpZWxkIGJhdGNoXG4gICAgICBiYXRjaCA9IFtdXG4gIGlmIGJhdGNoLmxlbmd0aCA+IDBcbiAgICB5aWVsZCBiYXRjaFxuXG5cbmNsYXNzIFF1ZXVlXG5cbiAgQG1ha2U6IC0+IG5ldyBRdWV1ZVxuXG4gIEBjcmVhdGU6IC0+IG5ldyBRdWV1ZVxuXG4gIGNvbnN0cnVjdG9yOiAtPlxuICAgIEBwID0gW11cbiAgICBAcSA9IFtdXG5cbiAgZW5xdWV1ZTogKCB2YWx1ZSApIC0+XG4gICAgaWYgQHAubGVuZ3RoID4gMFxuICAgICAgYXBwbHkgQHAuc2hpZnQoKSwgWyB2YWx1ZSBdXG4gICAgZWxzZVxuICAgICAgQHEucHVzaCB2YWx1ZVxuICAgIEBcblxuICBkZXF1ZXVlOiAtPlxuICAgIGlmIEBxLmxlbmd0aCA+IDBcbiAgICAgIEBxLnNoaWZ0KClcbiAgICBlbHNlXG4gICAgICBuZXcgUHJvbWlzZSAoIHJlc29sdmUgKSA9PiBAcC5wdXNoIHJlc29sdmVcblxuICBpc0lkbGU6IC0+IEBwLmxlbmd0aCA9PSAwICYmIEBxLmxlbmd0aCA9PSAwXG5cbiAgWyBTeW1ib2wuYXN5bmNJdGVyYXRvciBdOiAtPlxuICAgIGxvb3AgeWllbGQgYXdhaXQgQGRlcXVldWUoKVxuICAgIHJldHVyblxuXG5ldmVudHMgPSBjdXJyeSAobmFtZSwgc291cmNlKSAtPlxuICBxID0gUXVldWUuY3JlYXRlKClcbiAgaWYgc291cmNlLm9uP1xuICAgIHNvdXJjZS5vbiBuYW1lLCAoZXZlbnQpIC0+IHEuZW5xdWV1ZSBldmVudFxuICBlbHNlIGlmIHNvdXJjZS5hZGRFdmVudExpc3RlbmVyP1xuICAgIHNvdXJjZS5hZGRFdmVudExpc3RlbmVyIG5hbWUsIChldmVudCkgLT4gcS5lbnF1ZXVlIGV2ZW50XG4gIGVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvciBcImV2ZW50czogc291cmNlIG11c3Qgc3VwcG9ydFxuICAgIGBvbmAgb3IgYGFkZEV2ZW50TGlzdGVuZXJgIG1ldGhvZFwiXG4gIGxvb3AgeWllbGQgYXdhaXQgcS5kZXF1ZXVlKClcbiAgcmV0dXJuXG5cbmV4cG9ydCB7XG4gIGluY2x1ZGVzXG4gIHVuaXF1ZUJ5XG4gIG1hcFxuICBwcm9qZWN0XG4gIGZpbmRcbiAgdGFwXG4gIHNlbGVjdFxuICByZWplY3RcbiAgcmVzb2x2ZVxuICBjb2xsZWN0XG4gIHN0YXJ0XG4gIGVhY2hcbiAgcmVkdWNlXG4gIGpvaW5cbiAgcGFydGl0aW9uXG4gIFF1ZXVlXG4gIGV2ZW50c1xufVxuIl0sIm5hbWVzIjpbIlF1ZXVlIiwiX2luY2x1ZGVzIiwiY29sbGVjdCIsImVhY2giLCJldmVudHMiLCJmaW5kIiwiZm9sZCIsImluY2x1ZGVzIiwiaXNBbnkiLCJqb2luIiwibWFwIiwicGFydGl0aW9uIiwicHJvamVjdCIsInJlZHVjZSIsInJlamVjdCIsInJlc29sdmUiLCJzZWxlY3QiLCJzdGFydCIsInRhcCIsInVuaXF1ZUJ5IiwiZ2VuZXJpYyIsIndyYXAiLCJjdXJyeSIsImJpbmFyeSIsInRlcm5hcnkiLCJ0ZWUiLCJhcHBseSIsIm5lZ2F0ZSIsImlzU3RyaW5nIiwiaXNOdW1iZXIiLCJpc0FycmF5IiwiaXNGdW5jdGlvbiIsImlzSXRlcmFibGUiLCJpc1JlYWdlbnQiLCJnZXQiLCJlcSIsIm5hbWUiLCJhIiwiYXgiLCJfYSIsIk9iamVjdCIsImlzIiwiZiIsImJ4IiwiYiIsInB1c2giLCJpIiwicmVzdWx0cyIsIngiLCJyIiwicCIsImZpbHRlciIsInByb2R1Y2VyIiwicmVmIiwiQXJyYXkiLCJmcm9tIiwiZm9yRWFjaCIsImsiLCJuIiwiYmF0Y2giLCJsZW5ndGgiLCJtYWtlIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJxIiwiZW5xdWV1ZSIsInZhbHVlIiwic2hpZnQiLCJkZXF1ZXVlIiwiUHJvbWlzZSIsImlzSWRsZSIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJzb3VyY2UiLCJvbiIsImV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIlR5cGVFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQUEsT0FBQUMsV0FBQUMsU0FBQUMsTUFBQUMsUUFBQUMsTUFBQUMsTUFBQUMsVUFBQUMsT0FBQUMsTUFBQUMsS0FBQUMsV0FBQUMsU0FBQUMsUUFBQUMsUUFBQUMsU0FBQUMsUUFBQUMsT0FBQUMsS0FBQUM7QUFBQSxTQUFRQyxPQUFSLFFBQUEsWUFBQTtBQUNBLFNBQVFDLElBQVIsRUFBY0MsS0FBZCxFQUFxQkMsTUFBckIsRUFBNkJDLE9BQTdCLEVBQXNDQyxHQUF0QyxFQUEyQ0MsS0FBM0MsUUFBQSxhQUFBO0FBQ0EsU0FBUUMsTUFBUixRQUFBLGNBQUE7QUFDQSxTQUFRQyxRQUFSLEVBQWtCQyxRQUFsQixFQUE0QkMsT0FBNUIsRUFBcUNDLFVBQXJDLEVBQ0VDLFVBREYsRUFDY0MsU0FEZCxRQUFBLFNBQUE7QUFFQSxTQUFRQyxHQUFSLFFBQUEsV0FBQTtBQUNBLFNBQVND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