react-elmish 6.4.1 → 6.5.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -257,12 +257,15 @@ You can call one of the functions of that object:
257
257
  |---|---|
258
258
  | `cmd.ofMsg` | Dispatches a new message. |
259
259
  | `cmd.batch` | Aggregates an array of messages. |
260
+ | `cmd.ofEither` | Calls a function (sync or async) and maps the result into a message. |
261
+ | `cmd.ofSuccess` | Same as `ofEither` but ignores the error case. |
262
+ | `cmd.ofError` | Same as `ofEither` but ignores the success case. |
260
263
  | `cmd.ofFunc.either` | Calls a synchronous function and maps the result into a message. |
261
- | `cmd.ofFunc.attempt` | Like `either` but ignores the success case. |
262
- | `cmd.ofFunc.perform` | Like `either` but ignores the error case. |
264
+ | `cmd.ofFunc.perform` | Same as `either` but ignores the error case. |
265
+ | `cmd.ofFunc.attempt` | Same as `either` but ignores the success case. |
263
266
  | `cmd.ofPromise.either` | Calls an async function and maps the result into a message. |
264
- | `cmd.ofPromise.attempt` | Like `either` but ignores the success case. |
265
- | `cmd.ofPromise.perform` | Like `either` but ignores the error case. |
267
+ | `cmd.ofPromise.perform` | Same as `either` but ignores the error case. |
268
+ | `cmd.ofPromise.attempt` | Same as `either` but ignores the success case. |
266
269
  | `cmd.ofSub` | Use this function to trigger a command in a subscription. |
267
270
 
268
271
  ### Dispatch a message
@@ -334,7 +337,7 @@ and handle the messages in the **update** function:
334
337
  // If loadSettings resolves it dispatches "SettingsLoaded"
335
338
  // If it fails it dispatches "Error"
336
339
  // The return type of loadSettings must fit Msg.settingsLoaded
337
- return [{}, cmd.ofPromise.either(loadSettings, Msg.settingsLoaded, Msg.error, "firstArg", 123)];
340
+ return [{}, cmd.ofEither(loadSettings, Msg.settingsLoaded, Msg.error, "firstArg", 123)];
338
341
  },
339
342
 
340
343
  settingsLoaded () {
@@ -368,7 +371,7 @@ export function init (props: Props): InitResult {
368
371
  To dispatch more than one command from `init` or `update` you can either use the `cmd.batch` function or simply return multiple commands:
369
372
 
370
373
  ```ts
371
- return [{}, cmd.ofMsg(Msg.loadData()), cmd.ofPromise.either(doStuff, Msg.success, Msg.error)];
374
+ return [{}, cmd.ofMsg(Msg.loadData()), cmd.ofEither(doStuff, Msg.success, Msg.error)];
372
375
  ```
373
376
 
374
377
  ## Subscriptions
@@ -601,7 +604,7 @@ export function init (): Model {
601
604
 
602
605
  export const update: UpdateMap<Props, Model, Message> = {
603
606
  loadSettings () {
604
- return [{}, cmd.ofPromise.either(loadSettings, Msg.settingsLoaded, Msg.error)];
607
+ return [{}, cmd.ofEither(loadSettings, Msg.settingsLoaded, Msg.error)];
605
608
  }
606
609
 
607
610
  settingsLoaded ({ settings }) {
@@ -708,7 +711,7 @@ export function init (): InitResult<Model, Message> {
708
711
  export function update (_model: Model, msg: Message): UpdateReturnType<Model, Message> {
709
712
  switch (msg.name) {
710
713
  case "loadSettings":
711
- return [{}, cmd.ofPromise.either(loadSettings, Msg.settingsLoaded, Msg.error)];
714
+ return [{}, cmd.ofEither(loadSettings, Msg.settingsLoaded, Msg.error)];
712
715
 
713
716
  case "settingsLoaded":
714
717
  return [{ settings: msg.settings }];
@@ -827,7 +830,7 @@ To inform the parent component about some action, let's say to close a dialog fo
827
830
  {
828
831
  // ...
829
832
  close () {
830
- return [{}, cmd.ofFunc.attempt(props.onClose, Msg.error)];
833
+ return [{}, cmd.ofError(props.onClose, Msg.error)];
831
834
  }
832
835
  // ...
833
836
  };
package/dist/cmd.d.ts CHANGED
@@ -15,6 +15,28 @@ declare const cmd: {
15
15
  * @param {Sub<TMessage>} sub The subscriber function.
16
16
  */
17
17
  ofSub<TMessage_2 extends Message>(sub: Sub<TMessage_2>): Cmd<TMessage_2>;
18
+ /**
19
+ * Creates a command out of a function and maps the result. This can also be an async function.
20
+ * @param task The function to call.
21
+ * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
22
+ * @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
23
+ * @param args The parameters of the task.
24
+ */
25
+ ofEither<TMessage_3 extends Message, TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofSuccess: (result: Awaited<TReturn>) => TMessage_3, ofError: (error: Error) => TMessage_3, ...args: TArgs): Cmd<TMessage_3>;
26
+ /**
27
+ * Creates a command out of a function and ignores the error case. This can also be an async function.
28
+ * @param task The async function to call.
29
+ * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
30
+ * @param args The parameters of the task.
31
+ */
32
+ ofSuccess<TMessage_4 extends Message, TArgs_1 extends unknown[], TReturn_1>(task: (...args: TArgs_1) => TReturn_1, ofSuccess: (result: Awaited<TReturn_1>) => TMessage_4, ...args: TArgs_1): Cmd<TMessage_4>;
33
+ /**
34
+ * Creates a command out of a function and ignores the success case. This can also be an async function.
35
+ * @param task The function to call.
36
+ * @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
37
+ * @param args The parameters of the task.
38
+ */
39
+ ofError<TMessage_5 extends Message, TArgs_2 extends unknown[], TReturn_2>(task: (...args: TArgs_2) => TReturn_2, ofError: (error: Error) => TMessage_5, ...args: TArgs_2): Cmd<TMessage_5>;
18
40
  /**
19
41
  * Provides functionalities to create commands from simple functions.
20
42
  */
@@ -26,21 +48,21 @@ declare const cmd: {
26
48
  * @param ofError Creates the message to dispatch when an error occurred.
27
49
  * @param args The parameters of the task.
28
50
  */
29
- either<TMessage_3 extends Message, TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofSuccess: (result: TReturn) => TMessage_3, ofError: (error: Error) => TMessage_3, ...args: TArgs): Cmd<TMessage_3>;
51
+ either<TMessage_6 extends Message, TArgs_3 extends unknown[], TReturn_3>(task: (...args: TArgs_3) => TReturn_3, ofSuccess: (result: TReturn_3) => TMessage_6, ofError: (error: Error) => TMessage_6, ...args: TArgs_3): Cmd<TMessage_6>;
30
52
  /**
31
53
  * Creates a command out of a simple function and ignores the error case.
32
54
  * @param task The function to call.
33
55
  * @param ofSuccess Creates the message to dispatch after a successful call of the task.
34
56
  * @param args The parameters of the task.
35
57
  */
36
- perform<TMessage_4 extends Message, TArgs_1 extends unknown[], TReturn_1>(task: (...args: TArgs_1) => TReturn_1, ofSuccess: (result: TReturn_1) => TMessage_4, ...args: TArgs_1): Cmd<TMessage_4>;
58
+ perform<TMessage_7 extends Message, TArgs_4 extends unknown[], TReturn_4>(task: (...args: TArgs_4) => TReturn_4, ofSuccess: (result: TReturn_4) => TMessage_7, ...args: TArgs_4): Cmd<TMessage_7>;
37
59
  /**
38
60
  * Creates a command out of a simple function and ignores the success case.
39
61
  * @param task The function to call.
40
62
  * @param ofError Creates the message to dispatch when an error occurred.
41
63
  * @param args The parameters of the task.
42
64
  */
43
- attempt<TMessage_5 extends Message, TArgs_2 extends unknown[], TReturn_2>(task: (...args: TArgs_2) => TReturn_2, ofError: (error: Error) => TMessage_5, ...args: TArgs_2): Cmd<TMessage_5>;
65
+ attempt<TMessage_8 extends Message, TArgs_5 extends unknown[], TReturn_5>(task: (...args: TArgs_5) => TReturn_5, ofError: (error: Error) => TMessage_8, ...args: TArgs_5): Cmd<TMessage_8>;
44
66
  };
45
67
  /**
46
68
  * Provides functionalities to create commands from async functions.
@@ -53,21 +75,21 @@ declare const cmd: {
53
75
  * @param ofError Creates the message to dispatch when the promise is rejected.
54
76
  * @param args The parameters of the task.
55
77
  */
56
- either<TMessage_6 extends Message, TArgs_3 extends unknown[], TReturn_3>(task: (...args: TArgs_3) => Promise<TReturn_3>, ofSuccess: (result: TReturn_3) => TMessage_6, ofError: (error: Error) => TMessage_6, ...args: TArgs_3): Cmd<TMessage_6>;
78
+ either<TMessage_9 extends Message, TArgs_6 extends unknown[], TReturn_6>(task: (...args: TArgs_6) => Promise<TReturn_6>, ofSuccess: (result: TReturn_6) => TMessage_9, ofError: (error: Error) => TMessage_9, ...args: TArgs_6): Cmd<TMessage_9>;
57
79
  /**
58
80
  * Creates a command out of an async function and ignores the error case.
59
81
  * @param task The async function to call.
60
82
  * @param ofSuccess Creates the message to dispatch when the promise is resolved.
61
83
  * @param args The parameters of the task.
62
84
  */
63
- perform<TMessage_7 extends Message, TArgs_4 extends unknown[], TReturn_4>(task: (...args: TArgs_4) => Promise<TReturn_4>, ofSuccess: (result: TReturn_4) => TMessage_7, ...args: TArgs_4): Cmd<TMessage_7>;
85
+ perform<TMessage_10 extends Message, TArgs_7 extends unknown[], TReturn_7>(task: (...args: TArgs_7) => Promise<TReturn_7>, ofSuccess: (result: TReturn_7) => TMessage_10, ...args: TArgs_7): Cmd<TMessage_10>;
64
86
  /**
65
87
  * Creates a command out of an async function and ignores the success case.
66
88
  * @param task The async function to call.
67
89
  * @param ofError Creates the message to dispatch when the promise is rejected.
68
90
  * @param args The parameters of the task.
69
91
  */
70
- attempt<TMessage_8 extends Message, TArgs_5 extends unknown[], TReturn_5>(task: (...args: TArgs_5) => Promise<TReturn_5>, ofError: (error: Error) => TMessage_8, ...args: TArgs_5): Cmd<TMessage_8>;
92
+ attempt<TMessage_11 extends Message, TArgs_8 extends unknown[], TReturn_8>(task: (...args: TArgs_8) => Promise<TReturn_8>, ofError: (error: Error) => TMessage_11, ...args: TArgs_8): Cmd<TMessage_11>;
71
93
  };
72
94
  };
73
95
  export { cmd, };
package/dist/cmd.js CHANGED
@@ -31,6 +31,78 @@ var cmd = {
31
31
  ofSub: function ofSub(sub) {
32
32
  return [sub];
33
33
  },
34
+ /**
35
+ * Creates a command out of a function and maps the result. This can also be an async function.
36
+ * @param task The function to call.
37
+ * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
38
+ * @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
39
+ * @param args The parameters of the task.
40
+ */
41
+ ofEither: function ofEither(task, ofSuccess, ofError) {
42
+ for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
43
+ args[_key2 - 3] = arguments[_key2];
44
+ }
45
+ var bind = function bind(dispatch) {
46
+ try {
47
+ var taskResult = task.apply(void 0, args);
48
+ Promise.resolve(taskResult).then(function (result) {
49
+ return dispatch(ofSuccess(result));
50
+ })["catch"](function (ex) {
51
+ return dispatch(ofError(ex));
52
+ });
53
+ } catch (ex) {
54
+ dispatch(ofError(ex));
55
+ }
56
+ };
57
+ return [bind];
58
+ },
59
+ /**
60
+ * Creates a command out of a function and ignores the error case. This can also be an async function.
61
+ * @param task The async function to call.
62
+ * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
63
+ * @param args The parameters of the task.
64
+ */
65
+ ofSuccess: function ofSuccess(task, _ofSuccess) {
66
+ for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
67
+ args[_key3 - 2] = arguments[_key3];
68
+ }
69
+ var bind = function bind(dispatch) {
70
+ var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFallbackHandler;
71
+ try {
72
+ var taskResult = task.apply(void 0, args);
73
+ Promise.resolve(taskResult).then(function (result) {
74
+ return dispatch(_ofSuccess(result));
75
+ })["catch"](fallback);
76
+ } catch (ex) {
77
+ fallback(ex);
78
+ }
79
+ };
80
+ return [bind];
81
+ },
82
+ /**
83
+ * Creates a command out of a function and ignores the success case. This can also be an async function.
84
+ * @param task The function to call.
85
+ * @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
86
+ * @param args The parameters of the task.
87
+ */
88
+ ofError: function ofError(task, _ofError) {
89
+ for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
90
+ args[_key4 - 2] = arguments[_key4];
91
+ }
92
+ var bind = function bind(dispatch, fallback) {
93
+ try {
94
+ var taskResult = task.apply(void 0, args);
95
+ Promise.resolve(taskResult).then(function () {
96
+ return fallback === null || fallback === void 0 ? void 0 : fallback();
97
+ })["catch"](function (ex) {
98
+ return dispatch(_ofError(ex));
99
+ });
100
+ } catch (ex) {
101
+ dispatch(_ofError(ex));
102
+ }
103
+ };
104
+ return [bind];
105
+ },
34
106
  /**
35
107
  * Provides functionalities to create commands from simple functions.
36
108
  */
@@ -43,8 +115,8 @@ var cmd = {
43
115
  * @param args The parameters of the task.
44
116
  */
45
117
  either: function either(task, ofSuccess, ofError) {
46
- for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
47
- args[_key2 - 3] = arguments[_key2];
118
+ for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
119
+ args[_key5 - 3] = arguments[_key5];
48
120
  }
49
121
  var bind = function bind(dispatch) {
50
122
  try {
@@ -63,8 +135,8 @@ var cmd = {
63
135
  * @param args The parameters of the task.
64
136
  */
65
137
  perform: function perform(task, ofSuccess) {
66
- for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
67
- args[_key3 - 2] = arguments[_key3];
138
+ for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
139
+ args[_key6 - 2] = arguments[_key6];
68
140
  }
69
141
  var bind = function bind(dispatch, fallback) {
70
142
  try {
@@ -85,8 +157,8 @@ var cmd = {
85
157
  * @param args The parameters of the task.
86
158
  */
87
159
  attempt: function attempt(task, ofError) {
88
- for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
89
- args[_key4 - 2] = arguments[_key4];
160
+ for (var _len7 = arguments.length, args = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
161
+ args[_key7 - 2] = arguments[_key7];
90
162
  }
91
163
  var bind = function bind(dispatch, fallback) {
92
164
  try {
@@ -113,8 +185,8 @@ var cmd = {
113
185
  * @param args The parameters of the task.
114
186
  */
115
187
  either: function either(task, ofSuccess, ofError) {
116
- for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
117
- args[_key5 - 3] = arguments[_key5];
188
+ for (var _len8 = arguments.length, args = new Array(_len8 > 3 ? _len8 - 3 : 0), _key8 = 3; _key8 < _len8; _key8++) {
189
+ args[_key8 - 3] = arguments[_key8];
118
190
  }
119
191
  var bind = function bind(dispatch) {
120
192
  task.apply(void 0, args).then(function (result) {
@@ -132,12 +204,9 @@ var cmd = {
132
204
  * @param args The parameters of the task.
133
205
  */
134
206
  perform: function perform(task, ofSuccess) {
135
- for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
136
- args[_key6 - 2] = arguments[_key6];
207
+ for (var _len9 = arguments.length, args = new Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) {
208
+ args[_key9 - 2] = arguments[_key9];
137
209
  }
138
- var defaultFallbackHandler = function defaultFallbackHandler() {
139
- // blank
140
- };
141
210
  var bind = function bind(dispatch) {
142
211
  var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFallbackHandler;
143
212
  task.apply(void 0, args).then(function (result) {
@@ -153,8 +222,8 @@ var cmd = {
153
222
  * @param args The parameters of the task.
154
223
  */
155
224
  attempt: function attempt(task, ofError) {
156
- for (var _len7 = arguments.length, args = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
157
- args[_key7 - 2] = arguments[_key7];
225
+ for (var _len10 = arguments.length, args = new Array(_len10 > 2 ? _len10 - 2 : 0), _key10 = 2; _key10 < _len10; _key10++) {
226
+ args[_key10 - 2] = arguments[_key10];
158
227
  }
159
228
  var bind = function bind(dispatch, fallback) {
160
229
  task.apply(void 0, args).then(function () {
@@ -170,4 +239,7 @@ var cmd = {
170
239
  }
171
240
  };
172
241
  exports.cmd = cmd;
173
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbWQiLCJvZk1zZyIsIm1zZyIsImRpc3BhdGNoIiwiYmF0Y2giLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiY29tbWFuZHMiLCJBcnJheSIsIl9rZXkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZGdW5jIiwiZWl0aGVyIiwidGFzayIsIm9mU3VjY2VzcyIsIm9mRXJyb3IiLCJfbGVuMiIsImFyZ3MiLCJfa2V5MiIsImJpbmQiLCJyZXN1bHQiLCJhcHBseSIsImV4IiwicGVyZm9ybSIsIl9sZW4zIiwiX2tleTMiLCJmYWxsYmFjayIsImF0dGVtcHQiLCJfbGVuNCIsIl9rZXk0Iiwib2ZQcm9taXNlIiwiX2xlbjUiLCJfa2V5NSIsInRoZW4iLCJfbGVuNiIsIl9rZXk2IiwiZGVmYXVsdEZhbGxiYWNrSGFuZGxlciIsInVuZGVmaW5lZCIsIl9sZW43IiwiX2tleTciLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2NtZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbWQsIERpc3BhdGNoLCBGYWxsYmFja0hhbmRsZXIsIE1lc3NhZ2UsIFN1YiB9IGZyb20gXCIuL1R5cGVzXCI7XG5cbmNvbnN0IGNtZCA9IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgc3BlY2lmaWMgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBvZk1zZzxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+IChtc2c6IFRNZXNzYWdlKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBbZGlzcGF0Y2ggPT4gZGlzcGF0Y2gobXNnKV07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoLi4uY29tbWFuZHM6IChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkIHwgbnVsbCkgW10pOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ29tbWFuZCB0byBjYWxsIHRoZSBzdWJzY3JpYmVyLlxuICAgICAqIEBwYXJhbSB7U3ViPFRNZXNzYWdlPn0gc3ViIFRoZSBzdWJzY3JpYmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIG9mU3ViPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gKHN1YjogU3ViPFRNZXNzYWdlPik6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICByZXR1cm4gW3N1Yl07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8gY3JlYXRlIGNvbW1hbmRzIGZyb20gc2ltcGxlIGZ1bmN0aW9ucy5cbiAgICAgKi9cbiAgICBvZkZ1bmM6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBtYXBzIHRoZSByZXN1bHQuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSB0YXNrLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgZWl0aGVyPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm08VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrKGV4IGFzIEVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIGFzeW5jIGZ1bmN0aW9ucy5cbiAgICAgKi9cbiAgICBvZlByb21pc2U6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBtYXBzIHRoZSByZXN1bHQuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBlaXRoZXI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm08VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gYmxhbmtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s6IEZhbGxiYWNrSGFuZGxlciA9IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZhbGxiYWNrKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmV4cG9ydCB7XG4gICAgY21kLFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRztFQUNSO0FBQ0o7QUFDQTtBQUNBO0VBQ0lDLEtBQUssV0FBQUEsTUFBNEJDLEdBQWEsRUFBaUI7SUFDM0QsT0FBTyxDQUFDLFVBQUFDLFFBQVE7TUFBQSxPQUFJQSxRQUFRLENBQUNELEdBQUcsQ0FB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
242
+ function defaultFallbackHandler() {
243
+ // blank
244
+ }
245
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbWQiLCJvZk1zZyIsIm1zZyIsImRpc3BhdGNoIiwiYmF0Y2giLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiY29tbWFuZHMiLCJBcnJheSIsIl9rZXkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZFaXRoZXIiLCJ0YXNrIiwib2ZTdWNjZXNzIiwib2ZFcnJvciIsIl9sZW4yIiwiYXJncyIsIl9rZXkyIiwiYmluZCIsInRhc2tSZXN1bHQiLCJhcHBseSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInJlc3VsdCIsImV4IiwiX2xlbjMiLCJfa2V5MyIsImZhbGxiYWNrIiwidW5kZWZpbmVkIiwiZGVmYXVsdEZhbGxiYWNrSGFuZGxlciIsIl9sZW40IiwiX2tleTQiLCJvZkZ1bmMiLCJlaXRoZXIiLCJfbGVuNSIsIl9rZXk1IiwicGVyZm9ybSIsIl9sZW42IiwiX2tleTYiLCJhdHRlbXB0IiwiX2xlbjciLCJfa2V5NyIsIm9mUHJvbWlzZSIsIl9sZW44IiwiX2tleTgiLCJfbGVuOSIsIl9rZXk5IiwiX2xlbjEwIiwiX2tleTEwIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jbWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCwgRmFsbGJhY2tIYW5kbGVyLCBNZXNzYWdlLCBTdWIgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG5jb25zdCBjbWQgPSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc3BlY2lmaWMgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIHNwZWNpZmljIG1lc3NhZ2UuXG4gICAgICovXG4gICAgb2ZNc2c8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAobXNnOiBUTWVzc2FnZSk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICByZXR1cm4gW2Rpc3BhdGNoID0+IGRpc3BhdGNoKG1zZyldO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoLi4uY29tbWFuZHM6IChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkIHwgbnVsbCkgW10pOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb21tYW5kIHRvIGNhbGwgdGhlIHN1YnNjcmliZXIuXG4gICAgICogQHBhcmFtIHtTdWI8VE1lc3NhZ2U+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBbc3ViXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LiBUaGlzIGNhbiBhbHNvIGJlIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZFaXRoZXI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBBd2FpdGVkPFRSZXR1cm4+KSA9PiBUTWVzc2FnZSwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh0YXNrUmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbYmluZF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuIFRoaXMgY2FuIGFsc28gYmUgYW4gYXN5bmMgZnVuY3Rpb24uXG4gICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBmdW5jdGlvbiBydW5zIHN1Y2Nlc3NmdWxseSBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZTdWNjZXNzPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogQXdhaXRlZDxUUmV0dXJuPikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s6IEZhbGxiYWNrSGFuZGxlciA9IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFza1Jlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUodGFza1Jlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZhbGxiYWNrKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbYmluZF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIHN1Y2Nlc3MgY2FzZS4gVGhpcyBjYW4gYWxzbyBiZSBhbiBhc3luYyBmdW5jdGlvbi5cbiAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBmdW5jdGlvbiBydW5zIHN1Y2Nlc3NmdWxseSBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZFcnJvcjxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh0YXNrUmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBmYWxsYmFjaz8uKCkpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChvZkVycm9yKGV4IGFzIEVycm9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIHNpbXBsZSBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZGdW5jOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgdGFzay5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm08VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrKGV4IGFzIEVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0PFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyB0byBjcmVhdGUgY29tbWFuZHMgZnJvbSBhc3luYyBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZQcm9taXNlOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgZWl0aGVyPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBlcnJvciBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBwZXJmb3JtPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4sIGZhbGxiYWNrOiBGYWxsYmFja0hhbmRsZXIgPSBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZmFsbGJhY2spO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIHN1Y2Nlc3MgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGF0dGVtcHQ8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4sIGZhbGxiYWNrPzogRmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyICgpOiB2b2lkIHtcbiAgICAvLyBibGFua1xufVxuXG5leHBvcnQge1xuICAgIGNtZCxcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUc7RUFDUjtBQUNKO0FBQ0E7QUFDQTtFQUNJQyxLQUFLLFdBQUFBLE1BQTRCQyxHQUFhLEVBQWlCO0lBQzNELE9BQU8sQ0FBQyxVQUFBQyxRQUFRO01BQUEsT0FBSUEsUUFBUSxDQUFDRCxHQUFHLENBQUM7SUFBQSxFQUFDO0VBQ3RDLENBQUM7RUFFRDtBQUNKO0FBQ0E7QUFDQTtFQUNJRSxLQUFLLFdBQUFBLE1BQUEsRUFBK0Y7SUFBQSxTQUFBQyxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFoRUMsUUFBUSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtNQUFSRixRQUFRLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO0lBQUE7SUFDeEMsT0FBUUYsUUFBUSxDQUFDRyxN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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-elmish",
3
- "version": "6.4.1",
3
+ "version": "6.5.0-beta.2",
4
4
  "description": "Elmish for React using Typescript",
5
5
  "author": "atheck",
6
6
  "license": "MIT",