react-elmish 5.0.1 → 5.1.1-beta.1
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/README.md +80 -105
- package/dist/Cmd.js +3 -20
- package/dist/Common.js +1 -6
- package/dist/ElmComponent.js +14 -68
- package/dist/ErrorHandling.js +3 -9
- package/dist/Init.js +2 -3
- package/dist/Testing/createUpdateArgsFactory.js +1 -5
- package/dist/Testing/execCmd.js +2 -16
- package/dist/Testing/fakeOptions.js +2 -4
- package/dist/Testing/getOfMsgParams.js +1 -4
- package/dist/Testing/getUpdateFn.js +1 -3
- package/dist/Testing/index.js +1 -6
- package/dist/Testing/renderWithModel.js +1 -4
- package/dist/index.js +1 -6
- package/dist/useElmish.js +19 -55
- package/installScript.js +4 -0
- package/package.json +13 -12
package/README.md
CHANGED
|
@@ -7,9 +7,8 @@ This library brings the elmish pattern to react.
|
|
|
7
7
|
|
|
8
8
|
- [Installation](#installation)
|
|
9
9
|
- [Basic Usage](#basic-usage)
|
|
10
|
-
- [More
|
|
11
|
-
- [Message
|
|
12
|
-
- [Symbols instead of strings](#symbols-instead-of-strings)
|
|
10
|
+
- [More about messages](#more-about-messages)
|
|
11
|
+
- [Message parameters](#message-parameters)
|
|
13
12
|
- [Dispatch commands in the update map or update function](#dispatch-commands-in-the-update-map-or-update-function)
|
|
14
13
|
- [Dispatch a message](#dispatch-a-message)
|
|
15
14
|
- [Call an async function](#call-an-async-function)
|
|
@@ -25,9 +24,8 @@ This library brings the elmish pattern to react.
|
|
|
25
24
|
- [With an update function](#with-an-update-function)
|
|
26
25
|
- [Call back parent components](#call-back-parent-components)
|
|
27
26
|
- [Testing](#testing)
|
|
28
|
-
- [Testing the
|
|
27
|
+
- [Testing the update handler](#testing-the-update-handler)
|
|
29
28
|
- [Testing all (async) messages](#testing-all-async-messages)
|
|
30
|
-
- [Testing with an UpdateMap](#testing-with-an-updatemap)
|
|
31
29
|
- [UI Tests](#ui-tests)
|
|
32
30
|
- [Migrations](#migrations)
|
|
33
31
|
- [From v1.x to v2.x](#from-v1x-to-v2x)
|
|
@@ -112,9 +110,9 @@ export const update: UpdateMap<Props, Model, Message> = {
|
|
|
112
110
|
};
|
|
113
111
|
```
|
|
114
112
|
|
|
115
|
-
**Note:** When using an `UpdateMap` it is recommended to use camelCase for message names ("increment" instead of "Increment").
|
|
113
|
+
**Note:** When using an `UpdateMap` it is recommended to use camelCase for message names (e.g. "increment" instead of "Increment").
|
|
116
114
|
|
|
117
|
-
Alternatively we can use an
|
|
115
|
+
Alternatively we can use an `update` function:
|
|
118
116
|
|
|
119
117
|
```ts
|
|
120
118
|
export const update = (model: Model, msg: Msg, props: Props): UpdateReturnType<Model, Message> => {
|
|
@@ -159,12 +157,12 @@ function App (props: Props): JSX.Element {
|
|
|
159
157
|
}
|
|
160
158
|
```
|
|
161
159
|
|
|
162
|
-
|
|
160
|
+
You can also write the component as a **class component**:
|
|
163
161
|
|
|
164
162
|
```tsx
|
|
165
163
|
// Import everything from the App.ts
|
|
166
164
|
import { Model, Message, Props, init, update, Msg } as Shared from "../App";
|
|
167
|
-
// Import the ElmComponent which extends
|
|
165
|
+
// Import the ElmComponent which extends React.Component
|
|
168
166
|
import { ElmComponent } from "react-elmish";
|
|
169
167
|
import React from "react";
|
|
170
168
|
|
|
@@ -195,17 +193,19 @@ class App extends ElmComponent<Model, Message, Props> {
|
|
|
195
193
|
}
|
|
196
194
|
```
|
|
197
195
|
|
|
196
|
+
> **Note**: When using a class component, you can only use an `update` function. Class components do not support `UpdateMap`s.
|
|
197
|
+
|
|
198
198
|
You can use these components like any other React component.
|
|
199
199
|
|
|
200
200
|
> **Note**: It is recommended to separate business logic and the view into separate modules. Here we put the `Messages`, `Model`, `Props`, `init`, and `update` functions into **App.ts**. The elmish React Component resides in a **Components** subfolder and is named **App.tsx**.
|
|
201
201
|
>
|
|
202
202
|
> You can even split the contents of the **App.ts** into two files: **Types.ts** (`Message`, `Model`, and `Props`) and **State.ts** (`init` and `update`).
|
|
203
203
|
|
|
204
|
-
## More
|
|
204
|
+
## More about messages
|
|
205
205
|
|
|
206
|
-
### Message
|
|
206
|
+
### Message parameters
|
|
207
207
|
|
|
208
|
-
Messages can also have
|
|
208
|
+
Messages can also have parameters. You can modify the example above and pass an optional step value to the **Increment** message:
|
|
209
209
|
|
|
210
210
|
```ts
|
|
211
211
|
export type Message =
|
|
@@ -218,13 +218,17 @@ export const Msg = {
|
|
|
218
218
|
}
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
Then use this
|
|
221
|
+
Then use this parameter in the update handler:
|
|
222
222
|
|
|
223
223
|
```ts
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
224
|
+
{
|
|
225
|
+
// ...
|
|
226
|
+
// We destructure the message parameter here
|
|
227
|
+
increment ({ step }) {
|
|
228
|
+
return [{ value: model.value + (step ?? 1)}]
|
|
229
|
+
}
|
|
230
|
+
// ...
|
|
231
|
+
};
|
|
228
232
|
```
|
|
229
233
|
|
|
230
234
|
In the **render** method you can add another button to increment the value by 10:
|
|
@@ -235,44 +239,6 @@ In the **render** method you can add another button to increment the value by 10
|
|
|
235
239
|
...
|
|
236
240
|
```
|
|
237
241
|
|
|
238
|
-
### Symbols instead of strings
|
|
239
|
-
|
|
240
|
-
You can also use **Symbols** for the message type instead of strings:
|
|
241
|
-
|
|
242
|
-
1. Declare a Symbol for the message:
|
|
243
|
-
|
|
244
|
-
```ts
|
|
245
|
-
const ResetMsg = Symbol("reset");
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
1. Use this Symbol as message name:
|
|
249
|
-
|
|
250
|
-
```ts
|
|
251
|
-
export type Message =
|
|
252
|
-
...
|
|
253
|
-
| { name: typeof ResetMsg }
|
|
254
|
-
...
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
1. Create the convenient function
|
|
258
|
-
|
|
259
|
-
```ts
|
|
260
|
-
export const Msg = {
|
|
261
|
-
...
|
|
262
|
-
reset: (): Message => ({ name: ResetMsg }),
|
|
263
|
-
...
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
1. Handle the new message in the **update** function:
|
|
268
|
-
|
|
269
|
-
```ts
|
|
270
|
-
...
|
|
271
|
-
case ResetMsg:
|
|
272
|
-
return [{ value: 0 }];
|
|
273
|
-
...
|
|
274
|
-
```
|
|
275
|
-
|
|
276
242
|
## Dispatch commands in the update map or update function
|
|
277
243
|
|
|
278
244
|
In addition to modifying the model, you can dispatch new commands here.
|
|
@@ -319,14 +285,17 @@ export const Msg = {
|
|
|
319
285
|
const cmd = createCmd<Message>();
|
|
320
286
|
```
|
|
321
287
|
|
|
322
|
-
In the **update** function you can dispatch that message like this:
|
|
288
|
+
In the **update map** or **update** function you can dispatch that message like this:
|
|
323
289
|
|
|
324
290
|
```ts
|
|
325
|
-
|
|
326
|
-
|
|
291
|
+
{
|
|
292
|
+
increment () {
|
|
293
|
+
return [{ value: model.value + 1 }, cmd.ofMsg(Msg.printLastMessage("Incremented by one"))];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
327
296
|
```
|
|
328
297
|
|
|
329
|
-
This new message will immediately be dispatched after returning from the **update
|
|
298
|
+
This new message will immediately be dispatched after returning from the **update** handler.
|
|
330
299
|
|
|
331
300
|
### Call an async function
|
|
332
301
|
|
|
@@ -361,20 +330,25 @@ export const Msg = {
|
|
|
361
330
|
and handle the messages in the **update** function:
|
|
362
331
|
|
|
363
332
|
```ts
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
333
|
+
{
|
|
334
|
+
// ...
|
|
335
|
+
loadSettings () {
|
|
336
|
+
// Create a command out of the async function with the provided arguments
|
|
337
|
+
// If loadSettings resolves it dispatches "SettingsLoaded"
|
|
338
|
+
// If it fails it dispatches "Error"
|
|
339
|
+
// The return type of loadSettings must fit Msg.settingsLoaded
|
|
340
|
+
return [{}, cmd.ofPromise.either(loadSettings, Msg.settingsLoaded, Msg.error, "firstArg", 123)];
|
|
341
|
+
},
|
|
342
|
+
|
|
343
|
+
settingsLoaded () {
|
|
344
|
+
return [{ settings: msg.settings }];
|
|
345
|
+
},
|
|
346
|
+
|
|
347
|
+
error () {
|
|
348
|
+
return handleError(msg.error);
|
|
349
|
+
},
|
|
350
|
+
// ...
|
|
351
|
+
};
|
|
378
352
|
```
|
|
379
353
|
|
|
380
354
|
### Dispatch a command from `init`
|
|
@@ -855,10 +829,13 @@ To inform the parent component about some action, let's say to close a dialog fo
|
|
|
855
829
|
1. Handle the message and call the callback function:
|
|
856
830
|
|
|
857
831
|
```ts Dialog.ts
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
832
|
+
{
|
|
833
|
+
// ...
|
|
834
|
+
close () {
|
|
835
|
+
return [{}, cmd.ofFunc.attempt(props.onClose, Msg.error)];
|
|
836
|
+
}
|
|
837
|
+
// ...
|
|
838
|
+
};
|
|
862
839
|
```
|
|
863
840
|
|
|
864
841
|
1. In the **render** method of the parent component pass the callback as prop
|
|
@@ -871,7 +848,7 @@ To inform the parent component about some action, let's say to close a dialog fo
|
|
|
871
848
|
|
|
872
849
|
## Testing
|
|
873
850
|
|
|
874
|
-
To test your **update**
|
|
851
|
+
To test your **update** handler you can use some helper functions in `react-elmish/dist/Testing`:
|
|
875
852
|
|
|
876
853
|
| Function | Description |
|
|
877
854
|
| --- | --- |
|
|
@@ -880,7 +857,20 @@ To test your **update** function you can use some helper functions in `react-elm
|
|
|
880
857
|
| `getUpdateFn` | Returns an `update` function for your update map object. |
|
|
881
858
|
| `createUpdateArgsFactory` | Creates a factory function to create a message, a model, and props in a test. |
|
|
882
859
|
|
|
883
|
-
### Testing the
|
|
860
|
+
### Testing the update handler
|
|
861
|
+
|
|
862
|
+
**Note**: When using an `UpdateMap`, you can get an `update` function by calling `getUpdateFn`:
|
|
863
|
+
|
|
864
|
+
```ts
|
|
865
|
+
import { getUpdateFn } from "react-elmish/dist/Testing";
|
|
866
|
+
|
|
867
|
+
const update = getUpdateFn(updateMap);
|
|
868
|
+
|
|
869
|
+
// Call the update function in the test
|
|
870
|
+
const [model, cmd] = update(msg, model, props);
|
|
871
|
+
```
|
|
872
|
+
|
|
873
|
+
A simple test:
|
|
884
874
|
|
|
885
875
|
```ts
|
|
886
876
|
import * as Testing from "react-elmish/dist/Testing";
|
|
@@ -890,20 +880,18 @@ const createUpdateArgs = Testing.createUpdateArgsFactory(() => ({ /* initial mod
|
|
|
890
880
|
...
|
|
891
881
|
it("returns the correct model and cmd", () => {
|
|
892
882
|
// arrange
|
|
893
|
-
const
|
|
894
|
-
|
|
895
|
-
const expectedValue = // what you expect in the model
|
|
896
|
-
const expectedCmds = [
|
|
897
|
-
Shared.Msg.expectedMsg1("arg"),
|
|
898
|
-
Shared.Msg.expectedMsg2(),
|
|
899
|
-
];
|
|
883
|
+
const args = createUpdateArgs(Msg.test(), { /* optionally override model here */ }, { /* optionally override props here */ });
|
|
900
884
|
|
|
901
885
|
// act
|
|
902
|
-
|
|
886
|
+
// Call the update handler
|
|
887
|
+
const [newModel, cmd] = update(..args);
|
|
903
888
|
|
|
904
889
|
// assert
|
|
905
|
-
expect(newModel
|
|
906
|
-
expect(Testing.getOfMsgParams(cmd)).toEqual(
|
|
890
|
+
expect(newModel).toStrictEqual({ /* what you expect in the model */ });
|
|
891
|
+
expect(Testing.getOfMsgParams(cmd)).toEqual([
|
|
892
|
+
Msg.expectedMsg1("arg"),
|
|
893
|
+
Msg.expectedMsg2(),
|
|
894
|
+
]);
|
|
907
895
|
});
|
|
908
896
|
...
|
|
909
897
|
```
|
|
@@ -920,35 +908,22 @@ import * as Testing from "react-elmish/dist/Testing";
|
|
|
920
908
|
...
|
|
921
909
|
it("returns the correct cmd", () => {
|
|
922
910
|
// arrange
|
|
923
|
-
const
|
|
911
|
+
const args = createUpdateArgs(Msg.asyncTest());
|
|
924
912
|
|
|
925
913
|
// mock function which is called when the "AsyncTest" message is handled
|
|
926
914
|
const functionMock = jest.fn();
|
|
927
915
|
|
|
928
916
|
// act
|
|
929
|
-
const [, cmd] =
|
|
917
|
+
const [, cmd] = update(...args);
|
|
930
918
|
const messages = await Testing.execCmd(cmd);
|
|
931
919
|
|
|
932
920
|
// assert
|
|
933
921
|
expect(functionMock).toBeCalled();
|
|
934
|
-
expect(messages).toEqual([
|
|
922
|
+
expect(messages).toEqual([Msg.asyncTestSuccess()])
|
|
935
923
|
});
|
|
936
924
|
...
|
|
937
925
|
```
|
|
938
926
|
|
|
939
|
-
### Testing with an UpdateMap
|
|
940
|
-
|
|
941
|
-
To test your update map, you can get an `update` function by calling `getUpdateFn`:
|
|
942
|
-
|
|
943
|
-
```ts
|
|
944
|
-
import { getUpdateFn } from "react-elmish/dist/Testing";
|
|
945
|
-
|
|
946
|
-
const update = getUpdateFn(updateMap);
|
|
947
|
-
|
|
948
|
-
// in your test call update as usual
|
|
949
|
-
const [model, cmd] = update(msg, model, props);
|
|
950
|
-
```
|
|
951
|
-
|
|
952
927
|
### UI Tests
|
|
953
928
|
|
|
954
929
|
To test UI components with a fake model you can use `renderWithModel` from the Testing namespace. The first parameter is a function to render your component (e.g. with **@testing-library/react**). The second parameter is the fake model or an options object, where you can also pass a fake `dispatch` function.
|
package/dist/Cmd.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createCmd = createCmd;
|
|
7
|
-
|
|
8
7
|
/**
|
|
9
8
|
* Type of the dispatch function.
|
|
10
9
|
*/
|
|
@@ -34,7 +33,6 @@ function createCmd() {
|
|
|
34
33
|
for (var _len = arguments.length, commands = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
35
34
|
commands[_key] = arguments[_key];
|
|
36
35
|
}
|
|
37
|
-
|
|
38
36
|
return commands.filter(Boolean).flat();
|
|
39
37
|
},
|
|
40
38
|
ofSub: function ofSub(sub) {
|
|
@@ -45,28 +43,23 @@ function createCmd() {
|
|
|
45
43
|
for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
|
|
46
44
|
args[_key2 - 3] = arguments[_key2];
|
|
47
45
|
}
|
|
48
|
-
|
|
49
46
|
var bind = function bind(dispatch) {
|
|
50
47
|
try {
|
|
51
48
|
var _result = task.apply(void 0, args);
|
|
52
|
-
|
|
53
49
|
dispatch(ofSuccess(_result));
|
|
54
50
|
} catch (ex) {
|
|
55
51
|
dispatch(ofError(ex));
|
|
56
52
|
}
|
|
57
53
|
};
|
|
58
|
-
|
|
59
54
|
return [bind];
|
|
60
55
|
},
|
|
61
56
|
perform: function perform(task, ofSuccess) {
|
|
62
57
|
for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
|
|
63
58
|
args[_key3 - 2] = arguments[_key3];
|
|
64
59
|
}
|
|
65
|
-
|
|
66
60
|
var bind = function bind(dispatch, fallback) {
|
|
67
61
|
try {
|
|
68
62
|
var _result2 = task.apply(void 0, args);
|
|
69
|
-
|
|
70
63
|
dispatch(ofSuccess(_result2));
|
|
71
64
|
} catch (ex) {
|
|
72
65
|
if (fallback) {
|
|
@@ -74,18 +67,15 @@ function createCmd() {
|
|
|
74
67
|
}
|
|
75
68
|
}
|
|
76
69
|
};
|
|
77
|
-
|
|
78
70
|
return [bind];
|
|
79
71
|
},
|
|
80
72
|
attempt: function attempt(task, ofError) {
|
|
81
73
|
for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
|
|
82
74
|
args[_key4 - 2] = arguments[_key4];
|
|
83
75
|
}
|
|
84
|
-
|
|
85
76
|
var bind = function bind(dispatch, fallback) {
|
|
86
77
|
try {
|
|
87
78
|
task.apply(void 0, args);
|
|
88
|
-
|
|
89
79
|
if (fallback) {
|
|
90
80
|
fallback();
|
|
91
81
|
}
|
|
@@ -93,7 +83,6 @@ function createCmd() {
|
|
|
93
83
|
dispatch(ofError(ex));
|
|
94
84
|
}
|
|
95
85
|
};
|
|
96
|
-
|
|
97
86
|
return [bind];
|
|
98
87
|
}
|
|
99
88
|
},
|
|
@@ -102,7 +91,6 @@ function createCmd() {
|
|
|
102
91
|
for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
|
|
103
92
|
args[_key5 - 3] = arguments[_key5];
|
|
104
93
|
}
|
|
105
|
-
|
|
106
94
|
var bind = function bind(dispatch) {
|
|
107
95
|
task.apply(void 0, args).then(function (result) {
|
|
108
96
|
return dispatch(ofSuccess(result));
|
|
@@ -110,31 +98,27 @@ function createCmd() {
|
|
|
110
98
|
return dispatch(ofError(ex));
|
|
111
99
|
});
|
|
112
100
|
};
|
|
113
|
-
|
|
114
101
|
return [bind];
|
|
115
102
|
},
|
|
116
103
|
perform: function perform(task, ofSuccess) {
|
|
117
104
|
for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
|
|
118
105
|
args[_key6 - 2] = arguments[_key6];
|
|
119
106
|
}
|
|
120
|
-
|
|
121
|
-
|
|
107
|
+
var defaultFallbackHandler = function defaultFallbackHandler() {
|
|
108
|
+
// blank
|
|
122
109
|
};
|
|
123
|
-
|
|
124
110
|
var bind = function bind(dispatch) {
|
|
125
111
|
var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFallbackHandler;
|
|
126
112
|
task.apply(void 0, args).then(function (result) {
|
|
127
113
|
return dispatch(ofSuccess(result));
|
|
128
114
|
})["catch"](fallback);
|
|
129
115
|
};
|
|
130
|
-
|
|
131
116
|
return [bind];
|
|
132
117
|
},
|
|
133
118
|
attempt: function attempt(task, ofError) {
|
|
134
119
|
for (var _len7 = arguments.length, args = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
|
|
135
120
|
args[_key7 - 2] = arguments[_key7];
|
|
136
121
|
}
|
|
137
|
-
|
|
138
122
|
var bind = function bind(dispatch, fallback) {
|
|
139
123
|
task.apply(void 0, args).then(function () {
|
|
140
124
|
if (fallback) {
|
|
@@ -144,10 +128,9 @@ function createCmd() {
|
|
|
144
128
|
return dispatch(ofError(ex));
|
|
145
129
|
});
|
|
146
130
|
};
|
|
147
|
-
|
|
148
131
|
return [bind];
|
|
149
132
|
}
|
|
150
133
|
}
|
|
151
134
|
};
|
|
152
135
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDbWQiLCJub25lIiwib2ZNc2ciLCJtc2ciLCJkaXNwYXRjaCIsImJhdGNoIiwiY29tbWFuZHMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZGdW5jIiwiZWl0aGVyIiwidGFzayIsIm9mU3VjY2VzcyIsIm9mRXJyb3IiLCJhcmdzIiwiYmluZCIsInJlc3VsdCIsImV4IiwicGVyZm9ybSIsImZhbGxiYWNrIiwiYXR0ZW1wdCIsIm9mUHJvbWlzZSIsInRoZW4iLCJkZWZhdWx0RmFsbGJhY2tIYW5kbGVyIl0sInNvdXJjZXMiOlsiLi4vc3JjL0NtZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgb2YgdGhlIGRpc3BhdGNoIGZ1bmN0aW9uLlxuICovXG50eXBlIERpc3BhdGNoPFRNZXNzYWdlPiA9IChtc2c6IFRNZXNzYWdlKSA9PiB2b2lkO1xuXG50eXBlIEZhbGxiYWNrSGFuZGxlciA9IChlcnJvcj86IEVycm9yKSA9PiB2b2lkO1xudHlwZSBTdWI8VE1zZz4gPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNc2c+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcikgPT4gdm9pZDtcblxuLyoqXG4gKiBUeXBlIG9mIGEgY29tbWFuZC5cbiAqL1xudHlwZSBDbWQ8VE1lc3NhZ2U+ID0gU3ViPFRNZXNzYWdlPiBbXTtcblxuLyoqXG4gKiBDb250YWlucyBmdW5jdGlvbnMgdG8gY3JlYXRlIGNvbW1hbmRzLlxuICogQHRlbXBsYXRlIFRNZXNzYWdlIFR5cGUgb2YgdGhlIE1lc3NhZ2UgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xuaW50ZXJmYWNlIENvbW1hbmQ8VE1lc3NhZ2U+IHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGVtcHR5IGNvbW1hbmQuXG4gICAgICogQGRlcHJlY2F0ZWQgRG8gcmV0dXJuIG5vdGhpbmcgKGB1bmRlZmluZWRgKSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIG5vbmU6IFtdLFxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNwZWNpZmljIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtUTWVzc2FnZX0gbXNnIFRoZSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqL1xuICAgIG9mTXNnOiAobXNnOiBUTWVzc2FnZSkgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g6ICguLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKSBbXSkgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAvKipcbiAgICAgKiBDb21tYW5kIHRvIGNhbGwgdGhlIHN1YnNjcmliZXIuXG4gICAgICogQHBhcmFtIHtTdWI8VE1lc3NhZ2U+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI6IChzdWI6IFN1YjxUTWVzc2FnZT4pID0+IENtZDxUTWVzc2FnZT4sXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIHNpbXBsZSBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZGdW5jOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgdGFzay5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm06IDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8gY3JlYXRlIGNvbW1hbmRzIGZyb20gYXN5bmMgZnVuY3Rpb25zLlxuICAgICAqL1xuICAgIG9mUHJvbWlzZToge1xuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3VsdC5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgcGVyZm9ybTogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0OiA8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNZXNzYWdlPixcbiAgICB9LFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0eXBlZCBpbnN0YW5jZSBvZiB0aGUgQ29tbWFuZCBjbGFzcy5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgTXNnIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNtZDxUTWVzc2FnZT4gKCk6IENvbW1hbmQ8VE1lc3NhZ2U+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub25lOiBbXSxcbiAgICAgICAgb2ZNc2cgKG1zZzogVE1lc3NhZ2UpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIHJldHVybiBbZGlzcGF0Y2ggPT4gZGlzcGF0Y2gobXNnKV07XG4gICAgICAgIH0sXG4gICAgICAgIGJhdGNoICguLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKSBbXSk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvZlN1YiAoc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICByZXR1cm4gW3N1Yl07XG4gICAgICAgIH0sXG4gICAgICAgIG9mRnVuYzoge1xuICAgICAgICAgICAgZWl0aGVyPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcmZvcm08VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0ZW1wdDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb2ZQcm9taXNlOiB7XG4gICAgICAgICAgICBlaXRoZXI8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcmZvcm08VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZhbGxiYWNrSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYmxhbmtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjazogRmFsbGJhY2tIYW5kbGVyID0gZGVmYXVsdEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0ZW1wdDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSB7XG4gICAgRGlzcGF0Y2gsXG4gICAgQ21kLFxufTtcblxuZXhwb3J0IHtcbiAgICBjcmVhdGVDbWQsXG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7QUFNQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBOEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBVCxHQUFtRDtFQUMvQyxPQUFPO0lBQ0hDLElBQUksRUFBRSxFQURIO0lBRUhDLEtBRkcsaUJBRUlDLEdBRkosRUFFa0M7TUFDakMsT0FBTyxDQUFDLFVBQUFDLFFBQVE7UUFBQSxPQUFJQSxRQUFRLENBQUNELEdBQUQsQ0FBWjtNQUFBLENBQVQsQ0FBUDtJQUNILENBSkU7SUFLSEUsS0FMRyxtQkFLdUU7TUFBQSxrQ0FBaEVDLFFBQWdFO1FBQWhFQSxRQUFnRTtNQUFBOztNQUN0RSxPQUFRQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JDLE9BQWhCLENBQUQsQ0FBK0NDLElBQS9DLEVBQVA7SUFDSCxDQVBFO0lBUUhDLEtBUkcsaUJBUUlDLEdBUkosRUFRdUM7TUFDdEMsT0FBTyxDQUFDQSxHQUFELENBQVA7SUFDSCxDQVZFO0lBV0hDLE1BQU0sRUFBRTtNQUNKQyxNQURJLGtCQUNzQ0MsSUFEdEMsRUFDeUVDLFNBRHpFLEVBQ21IQyxPQURuSCxFQUN1TDtRQUFBLG1DQUE1QkMsSUFBNEI7VUFBNUJBLElBQTRCO1FBQUE7O1FBQ3ZMLElBQU1DLElBQUksR0FBRyxTQUFQQSxJQUFPLENBQUNkLFFBQUQsRUFBd0M7VUFDakQsSUFBSTtZQUNBLElBQU1lLE9BQU0sR0FBR0wsSUFBSSxNQUFKLFNBQVFHLElBQVIsQ0FBZjs7WUFFQWIsUUFBUSxDQUFDVyxTQUFTLENBQUNJLE9BQUQsQ0FBVixDQUFSO1VBQ0gsQ0FKRCxDQUlFLE9BQU9DLEVBQVAsRUFBb0I7WUFDbEJoQixRQUFRLENBQUNZLE9BQU8sQ0FBQ0ksRUFBRCxDQUFSLENBQVI7VUFDSDtRQUNKLENBUkQ7O1FBVUEsT0FBTyxDQUFDRixJQUFELENBQVA7TUFDSCxDQWJHO01BY0pHLE9BZEksbUJBY3VDUCxJQWR2QyxFQWMwRUMsU0FkMUUsRUFjbUo7UUFBQSxtQ0FBNUJFLElBQTRCO1VBQTVCQSxJQUE0QjtRQUFBOztRQUNuSixJQUFNQyxJQUFJLEdBQUcsU0FBUEEsSUFBTyxDQUFDZCxRQUFELEVBQStCa0IsUUFBL0IsRUFBb0U7VUFDN0UsSUFBSTtZQUNBLElBQU1ILFFBQU0sR0FBR0wsSUFBSSxNQUFKLFNBQVFHLElBQVIsQ0FBZjs7WUFFQWIsUUFBUSxDQUFDVyxTQUFTLENBQUNJLFFBQUQsQ0FBVixDQUFSO1VBQ0gsQ0FKRCxDQUlFLE9BQU9DLEVBQVAsRUFBb0I7WUFDbEIsSUFBSUUsUUFBSixFQUFjO2NBQ1ZBLFFBQVEsQ0FBQ0YsRUFBRCxDQUFSO1lBQ0g7VUFDSjtRQUNKLENBVkQ7O1FBWUEsT0FBTyxDQUFDRixJQUFELENBQVA7TUFDSCxDQTVCRztNQTZCSkssT0E3QkksbUJBNkJ1Q1QsSUE3QnZDLEVBNkIwRUUsT0E3QjFFLEVBNkI4STtRQUFBLG1DQUE1QkMsSUFBNEI7VUFBNUJBLElBQTRCO1FBQUE7O1FBQzlJLElBQU1DLElBQUksR0FBRyxTQUFQQSxJQUFPLENBQUNkLFFBQUQsRUFBK0JrQixRQUEvQixFQUFvRTtVQUM3RSxJQUFJO1lBQ0FSLElBQUksTUFBSixTQUFRRyxJQUFSOztZQUVBLElBQUlLLFFBQUosRUFBYztjQUNWQSxRQUFRO1lBQ1g7VUFDSixDQU5ELENBTUUsT0FBT0YsRUFBUCxFQUFvQjtZQUNsQmhCLFFBQVEsQ0FBQ1ksT0FBTyxDQUFDSSxFQUFELENBQVIsQ0FBUjtVQUNIO1FBQ0osQ0FWRDs7UUFZQSxPQUFPLENBQUNGLElBQUQsQ0FBUDtNQUNIO0lBM0NHLENBWEw7SUF3REhNLFNBQVMsRUFBRTtNQUNQWCxNQURPLGtCQUNtQ0MsSUFEbkMsRUFDK0VDLFNBRC9FLEVBQ3lIQyxPQUR6SCxFQUM2TDtRQUFBLG1DQUE1QkMsSUFBNEI7VUFBNUJBLElBQTRCO1FBQUE7O1FBQ2hNLElBQU1DLElBQUksR0FBRyxTQUFQQSxJQUFPLENBQUNkLFFBQUQsRUFBd0M7VUFDakRVLElBQUksTUFBSixTQUFRRyxJQUFSLEVBQWNRLElBQWQsQ0FBbUIsVUFBQU4sTUFBTTtZQUFBLE9BQUlmLFFBQVEsQ0FBQ1csU0FBUyxDQUFDSSxNQUFELENBQVYsQ0FBWjtVQUFBLENBQXpCLFdBQ1csVUFBQ0MsRUFBRDtZQUFBLE9BQWVoQixRQUFRLENBQUNZLE9BQU8sQ0FBQ0ksRUFBRCxDQUFSLENBQXZCO1VBQUEsQ0FEWDtRQUVILENBSEQ7O1FBS0EsT0FBTyxDQUFDRixJQUFELENBQVA7TUFDSCxDQVJNO01BU1BHLE9BVE8sbUJBU29DUCxJQVRwQyxFQVNnRkMsU0FUaEYsRUFTeUo7UUFBQSxtQ0FBNUJFLElBQTRCO1VBQTVCQSxJQUE0QjtRQUFBOztRQUM1SixJQUFNUyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXlCLEdBQVksQ0FDdkM7UUFDSCxDQUZEOztRQUlBLElBQU1SLElBQUksR0FBRyxTQUFQQSxJQUFPLENBQUNkLFFBQUQsRUFBNEY7VUFBQSxJQUE3RGtCLFFBQTZELHVFQUFqQ0ksc0JBQWlDO1VBQ3JHWixJQUFJLE1BQUosU0FBUUcsSUFBUixFQUFjUSxJQUFkLENBQW1CLFVBQUFOLE1BQU07WUFBQSxPQUFJZixRQUFRLENBQUNXLFNBQVMsQ0FBQ0ksTUFBRCxDQUFWLENBQVo7VUFBQSxDQUF6QixXQUNXRyxRQURYO1FBRUgsQ0FIRDs7UUFLQSxPQUFPLENBQUNKLElBQUQsQ0FBUDtNQUNILENBcEJNO01BcUJQSyxPQXJCTyxtQkFxQm9DVCxJQXJCcEMsRUFxQmdGRSxPQXJCaEYsRUFxQm9KO1FBQUEsbUNBQTVCQyxJQUE0QjtVQUE1QkEsSUFBNEI7UUFBQTs7UUFDdkosSUFBTUMsSUFBSSxHQUFHLFNBQVBBLElBQU8sQ0FBQ2QsUUFBRCxFQUErQmtCLFFBQS9CLEVBQW9FO1VBQzdFUixJQUFJLE1BQUosU0FBUUcsSUFBUixFQUFjUSxJQUFkLENBQW1CLFlBQU07WUFDckIsSUFBSUgsUUFBSixFQUFjO2NBQ1ZBLFFBQVE7WUFDWDtVQUNKLENBSkQsV0FLVyxVQUFDRixFQUFEO1lBQUEsT0FBZWhCLFFBQVEsQ0FBQ1ksT0FBTyxDQUFDSSxFQUFELENBQVIsQ0FBdkI7VUFBQSxDQUxYO1FBTUgsQ0FQRDs7UUFTQSxPQUFPLENBQUNGLElBQUQsQ0FBUDtNQUNIO0lBaENNO0VBeERSLENBQVA7QUEyRkgifQ==
|
|
136
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDbWQiLCJub25lIiwib2ZNc2ciLCJtc2ciLCJkaXNwYXRjaCIsImJhdGNoIiwiY29tbWFuZHMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZGdW5jIiwiZWl0aGVyIiwidGFzayIsIm9mU3VjY2VzcyIsIm9mRXJyb3IiLCJhcmdzIiwiYmluZCIsInJlc3VsdCIsImV4IiwicGVyZm9ybSIsImZhbGxiYWNrIiwiYXR0ZW1wdCIsIm9mUHJvbWlzZSIsInRoZW4iLCJkZWZhdWx0RmFsbGJhY2tIYW5kbGVyIl0sInNvdXJjZXMiOlsiLi4vc3JjL0NtZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgb2YgdGhlIGRpc3BhdGNoIGZ1bmN0aW9uLlxuICovXG50eXBlIERpc3BhdGNoPFRNZXNzYWdlPiA9IChtc2c6IFRNZXNzYWdlKSA9PiB2b2lkO1xuXG50eXBlIEZhbGxiYWNrSGFuZGxlciA9IChlcnJvcj86IEVycm9yKSA9PiB2b2lkO1xudHlwZSBTdWI8VE1zZz4gPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNc2c+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcikgPT4gdm9pZDtcblxuLyoqXG4gKiBUeXBlIG9mIGEgY29tbWFuZC5cbiAqL1xudHlwZSBDbWQ8VE1lc3NhZ2U+ID0gU3ViPFRNZXNzYWdlPiBbXTtcblxuLyoqXG4gKiBDb250YWlucyBmdW5jdGlvbnMgdG8gY3JlYXRlIGNvbW1hbmRzLlxuICogQHRlbXBsYXRlIFRNZXNzYWdlIFR5cGUgb2YgdGhlIE1lc3NhZ2UgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xuaW50ZXJmYWNlIENvbW1hbmQ8VE1lc3NhZ2U+IHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGVtcHR5IGNvbW1hbmQuXG4gICAgICogQGRlcHJlY2F0ZWQgRG8gcmV0dXJuIG5vdGhpbmcgKGB1bmRlZmluZWRgKSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIG5vbmU6IFtdLFxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNwZWNpZmljIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtUTWVzc2FnZX0gbXNnIFRoZSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqL1xuICAgIG9mTXNnOiAobXNnOiBUTWVzc2FnZSkgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g6ICguLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKSBbXSkgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAvKipcbiAgICAgKiBDb21tYW5kIHRvIGNhbGwgdGhlIHN1YnNjcmliZXIuXG4gICAgICogQHBhcmFtIHtTdWI8VE1lc3NhZ2U+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI6IChzdWI6IFN1YjxUTWVzc2FnZT4pID0+IENtZDxUTWVzc2FnZT4sXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIHNpbXBsZSBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZGdW5jOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgdGFzay5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm06IDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8gY3JlYXRlIGNvbW1hbmRzIGZyb20gYXN5bmMgZnVuY3Rpb25zLlxuICAgICAqL1xuICAgIG9mUHJvbWlzZToge1xuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3VsdC5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgcGVyZm9ybTogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0OiA8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNZXNzYWdlPixcbiAgICB9LFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0eXBlZCBpbnN0YW5jZSBvZiB0aGUgQ29tbWFuZCBjbGFzcy5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgTXNnIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNtZDxUTWVzc2FnZT4gKCk6IENvbW1hbmQ8VE1lc3NhZ2U+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub25lOiBbXSxcbiAgICAgICAgb2ZNc2cgKG1zZzogVE1lc3NhZ2UpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIHJldHVybiBbZGlzcGF0Y2ggPT4gZGlzcGF0Y2gobXNnKV07XG4gICAgICAgIH0sXG4gICAgICAgIGJhdGNoICguLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKSBbXSk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvZlN1YiAoc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICByZXR1cm4gW3N1Yl07XG4gICAgICAgIH0sXG4gICAgICAgIG9mRnVuYzoge1xuICAgICAgICAgICAgZWl0aGVyPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcmZvcm08VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0ZW1wdDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb2ZQcm9taXNlOiB7XG4gICAgICAgICAgICBlaXRoZXI8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcmZvcm08VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZhbGxiYWNrSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYmxhbmtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjazogRmFsbGJhY2tIYW5kbGVyID0gZGVmYXVsdEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0ZW1wdDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSB7XG4gICAgRGlzcGF0Y2gs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
|
package/dist/Common.js
CHANGED
|
@@ -6,24 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.execCmd = execCmd;
|
|
7
7
|
exports.logMessage = logMessage;
|
|
8
8
|
exports.modelHasChanged = modelHasChanged;
|
|
9
|
-
|
|
10
9
|
var _Init = require("./Init");
|
|
11
|
-
|
|
12
10
|
function logMessage(name, msg) {
|
|
13
11
|
var _Services$logger, _Services$logger2, _Services$dispatchMid;
|
|
14
|
-
|
|
15
12
|
(_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 ? void 0 : _Services$logger.info("Elm", "message from", name, msg.name);
|
|
16
13
|
(_Services$logger2 = _Init.Services.logger) === null || _Services$logger2 === void 0 ? void 0 : _Services$logger2.debug("Elm", "message from", name, msg);
|
|
17
14
|
(_Services$dispatchMid = _Init.Services.dispatchMiddleware) === null || _Services$dispatchMid === void 0 ? void 0 : _Services$dispatchMid.call(_Init.Services, msg);
|
|
18
15
|
}
|
|
19
|
-
|
|
20
16
|
function modelHasChanged(currentModel, model) {
|
|
21
17
|
return !Object.is(model, currentModel) && Object.getOwnPropertyNames(model).length > 0;
|
|
22
18
|
}
|
|
23
|
-
|
|
24
19
|
function execCmd(cmd, dispatch) {
|
|
25
20
|
cmd.forEach(function (call) {
|
|
26
21
|
return call(dispatch);
|
|
27
22
|
});
|
|
28
23
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dNZXNzYWdlIiwibmFtZSIsIm1zZyIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiaW5mbyIsImRlYnVnIiwiZGlzcGF0Y2hNaWRkbGV3YXJlIiwibW9kZWxIYXNDaGFuZ2VkIiwiY3VycmVudE1vZGVsIiwibW9kZWwiLCJPYmplY3QiLCJpcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJsZW5ndGgiLCJleGVjQ21kIiwiY21kIiwiZGlzcGF0Y2giLCJmb3JFYWNoIiwiY2FsbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9Db21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgU2VydmljZXMgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBNZXNzYWdlQmFzZSB9IGZyb20gXCIuL1R5cGVzXCI7XG5cbmZ1bmN0aW9uIGxvZ01lc3NhZ2U8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gKG5hbWU6IHN0cmluZywgbXNnOiBUTWVzc2FnZSk6IHZvaWQge1xuICAgIFNlcnZpY2VzLmxvZ2dlcj8uaW5mbyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBtc2cubmFtZSk7XG4gICAgU2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBtc2cpO1xuXG4gICAgU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlPy4obXNnKTtcbn1cblxuZnVuY3Rpb24gbW9kZWxIYXNDaGFuZ2VkPFRNb2RlbD4gKGN1cnJlbnRNb2RlbDogVE1vZGVsLCBtb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFPYmplY3QuaXMobW9kZWwsIGN1cnJlbnRNb2RlbCkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobW9kZWwpLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGV4ZWNDbWQ8VE1lc3NhZ2U+IChjbWQ6IENtZDxUTWVzc2FnZT4sIGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkIHtcbiAgICBjbWQuZm9yRWFjaChjYWxsID0+
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dNZXNzYWdlIiwibmFtZSIsIm1zZyIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiaW5mbyIsImRlYnVnIiwiZGlzcGF0Y2hNaWRkbGV3YXJlIiwibW9kZWxIYXNDaGFuZ2VkIiwiY3VycmVudE1vZGVsIiwibW9kZWwiLCJPYmplY3QiLCJpcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJsZW5ndGgiLCJleGVjQ21kIiwiY21kIiwiZGlzcGF0Y2giLCJmb3JFYWNoIiwiY2FsbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9Db21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgU2VydmljZXMgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBNZXNzYWdlQmFzZSB9IGZyb20gXCIuL1R5cGVzXCI7XG5cbmZ1bmN0aW9uIGxvZ01lc3NhZ2U8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gKG5hbWU6IHN0cmluZywgbXNnOiBUTWVzc2FnZSk6IHZvaWQge1xuICAgIFNlcnZpY2VzLmxvZ2dlcj8uaW5mbyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBtc2cubmFtZSk7XG4gICAgU2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBtc2cpO1xuXG4gICAgU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlPy4obXNnKTtcbn1cblxuZnVuY3Rpb24gbW9kZWxIYXNDaGFuZ2VkPFRNb2RlbD4gKGN1cnJlbnRNb2RlbDogVE1vZGVsLCBtb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFPYmplY3QuaXMobW9kZWwsIGN1cnJlbnRNb2RlbCkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobW9kZWwpLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGV4ZWNDbWQ8VE1lc3NhZ2U+IChjbWQ6IENtZDxUTWVzc2FnZT4sIGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkIHtcbiAgICBjbWQuZm9yRWFjaChjYWxsID0+IGNhbGwoZGlzcGF0Y2gpKTtcbn1cblxuZXhwb3J0IHtcbiAgICBsb2dNZXNzYWdlLFxuICAgIG1vZGVsSGFzQ2hhbmdlZCxcbiAgICBleGVjQ21kLFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0E7QUFHQSxTQUFTQSxVQUFVLENBQWdDQyxJQUFZLEVBQUVDLEdBQWEsRUFBUTtFQUFBO0VBQ2xGLG9CQUFBQyxjQUFRLENBQUNDLE1BQU0scURBQWYsaUJBQWlCQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRUosSUFBSSxFQUFFQyxHQUFHLENBQUNELElBQUksQ0FBQztFQUM1RCxxQkFBQUUsY0FBUSxDQUFDQyxNQUFNLHNEQUFmLGtCQUFpQkUsS0FBSyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUVMLElBQUksRUFBRUMsR0FBRyxDQUFDO0VBRXhELHlCQUFBQyxjQUFRLENBQUNJLGtCQUFrQiwwREFBM0IsMkJBQUFKLGNBQVEsRUFBc0JELEdBQUcsQ0FBQztBQUN0QztBQUVBLFNBQVNNLGVBQWUsQ0FBVUMsWUFBb0IsRUFBRUMsS0FBc0IsRUFBVztFQUNyRixPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsRUFBRSxDQUFDRixLQUFLLEVBQUVELFlBQVksQ0FBQyxJQUFJRSxNQUFNLENBQUNFLG1CQUFtQixDQUFDSCxLQUFLLENBQUMsQ0FBQ0ksTUFBTSxHQUFHLENBQUM7QUFDMUY7QUFFQSxTQUFTQyxPQUFPLENBQVlDLEdBQWtCLEVBQUVDLFFBQTRCLEVBQVE7RUFDaEZELEdBQUcsQ0FBQ0UsT0FBTyxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFJQSxJQUFJLENBQUNGLFFBQVEsQ0FBQztFQUFBLEVBQUM7QUFDdkMifQ==
|