@data-client/core 0.12.3 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +89 -15
  3. package/dist/index.umd.min.js +1 -1
  4. package/legacy/actionTypes.js +2 -1
  5. package/legacy/actions.js +1 -1
  6. package/legacy/controller/Controller.js +21 -7
  7. package/legacy/controller/createSet.js +7 -11
  8. package/legacy/controller/createSetResponse.js +32 -0
  9. package/legacy/index.js +2 -1
  10. package/legacy/manager/DevtoolsManager.js +5 -5
  11. package/legacy/manager/LogoutManager.js +3 -3
  12. package/legacy/manager/NetworkManager.js +5 -5
  13. package/legacy/manager/PollingSubscription.js +1 -1
  14. package/legacy/manager/SubscriptionManager.js +1 -1
  15. package/legacy/next/index.js +1 -1
  16. package/legacy/state/reducer/createReducer.js +6 -3
  17. package/legacy/state/reducer/fetchReducer.js +1 -1
  18. package/legacy/state/reducer/setReducer.js +7 -85
  19. package/legacy/state/reducer/setResponseReducer.js +107 -0
  20. package/legacy/types.js +1 -1
  21. package/lib/actionTypes.d.ts +1 -0
  22. package/lib/actionTypes.d.ts.map +1 -1
  23. package/lib/actionTypes.js +2 -1
  24. package/lib/actions.d.ts +23 -11
  25. package/lib/actions.d.ts.map +1 -1
  26. package/lib/actions.js +1 -1
  27. package/lib/controller/Controller.d.ts +7 -2
  28. package/lib/controller/Controller.d.ts.map +1 -1
  29. package/lib/controller/Controller.js +21 -7
  30. package/lib/controller/createSet.d.ts +5 -17
  31. package/lib/controller/createSet.d.ts.map +1 -1
  32. package/lib/controller/createSet.js +7 -11
  33. package/lib/controller/createSetResponse.d.ts +20 -0
  34. package/lib/controller/createSetResponse.d.ts.map +1 -0
  35. package/lib/controller/createSetResponse.js +32 -0
  36. package/lib/index.d.ts +1 -0
  37. package/lib/index.d.ts.map +1 -1
  38. package/lib/index.js +2 -1
  39. package/lib/manager/DevtoolsManager.d.ts.map +1 -1
  40. package/lib/manager/DevtoolsManager.js +5 -3
  41. package/lib/manager/LogoutManager.js +3 -3
  42. package/lib/manager/NetworkManager.d.ts +2 -2
  43. package/lib/manager/NetworkManager.d.ts.map +1 -1
  44. package/lib/manager/NetworkManager.js +5 -5
  45. package/lib/manager/PollingSubscription.js +1 -1
  46. package/lib/manager/SubscriptionManager.js +1 -1
  47. package/lib/next/index.js +1 -1
  48. package/lib/state/reducer/createReducer.d.ts.map +1 -1
  49. package/lib/state/reducer/createReducer.js +6 -3
  50. package/lib/state/reducer/expireReducer.d.ts +1 -1
  51. package/lib/state/reducer/fetchReducer.js +1 -1
  52. package/lib/state/reducer/invalidateReducer.d.ts +1 -1
  53. package/lib/state/reducer/setReducer.d.ts +2 -3
  54. package/lib/state/reducer/setReducer.d.ts.map +1 -1
  55. package/lib/state/reducer/setReducer.js +7 -90
  56. package/lib/state/reducer/setResponseReducer.d.ts +4 -0
  57. package/lib/state/reducer/setResponseReducer.d.ts.map +1 -0
  58. package/lib/state/reducer/setResponseReducer.js +112 -0
  59. package/lib/types.d.ts +2 -4
  60. package/lib/types.d.ts.map +1 -1
  61. package/lib/types.js +1 -1
  62. package/package.json +1 -1
  63. package/src/actionTypes.ts +1 -0
  64. package/src/actions.ts +29 -10
  65. package/src/controller/Controller.ts +25 -8
  66. package/src/controller/createSet.ts +11 -51
  67. package/src/controller/createSetResponse.ts +79 -0
  68. package/src/index.ts +1 -0
  69. package/src/manager/DevtoolsManager.ts +4 -2
  70. package/src/manager/LogoutManager.ts +2 -2
  71. package/src/manager/NetworkManager.ts +6 -6
  72. package/src/manager/__tests__/logoutManager.ts +5 -5
  73. package/src/manager/__tests__/networkManager.ts +6 -6
  74. package/src/manager/__tests__/subscriptionManager.ts +2 -2
  75. package/src/state/__tests__/reducer.ts +64 -25
  76. package/src/state/reducer/createReducer.ts +6 -1
  77. package/src/state/reducer/fetchReducer.ts +2 -2
  78. package/src/state/reducer/setReducer.ts +9 -121
  79. package/src/state/reducer/setResponseReducer.ts +151 -0
  80. package/src/types.ts +6 -5
  81. package/ts3.4/actionTypes.d.ts +1 -0
  82. package/ts3.4/actions.d.ts +23 -11
  83. package/ts3.4/controller/Controller.d.ts +10 -2
  84. package/ts3.4/controller/createSet.d.ts +5 -19
  85. package/ts3.4/controller/createSetResponse.d.ts +24 -0
  86. package/ts3.4/index.d.ts +1 -0
  87. package/ts3.4/manager/NetworkManager.d.ts +2 -2
  88. package/ts3.4/state/reducer/expireReducer.d.ts +1 -1
  89. package/ts3.4/state/reducer/invalidateReducer.d.ts +1 -1
  90. package/ts3.4/state/reducer/setReducer.d.ts +2 -3
  91. package/ts3.4/state/reducer/setResponseReducer.d.ts +4 -0
  92. package/ts3.4/types.d.ts +2 -4
@@ -6,6 +6,7 @@ import createInvalidate from './createInvalidate.js';
6
6
  import createInvalidateAll from './createInvalidateAll.js';
7
7
  import createReset from './createReset.js';
8
8
  import createSet from './createSet.js';
9
+ import createSetResponse from './createSetResponse.js';
9
10
  import { createUnsubscription, createSubscription } from './createSubscription.js';
10
11
  import ensurePojo from './ensurePojo.js';
11
12
  import { initialState } from '../state/reducer/createReducer.js';
@@ -14,7 +15,7 @@ const unsetDispatch = action => {
14
15
  throw new Error(`Dispatching while constructing your middleware is not allowed. ` + `Other middleware would not be applied to this dispatch.`);
15
16
  };
16
17
  const unsetState = () => {
17
- // This is only the value until it is set by the CacheProvider
18
+ // This is only the value until it is set by the DataProvider
18
19
  /* istanbul ignore next */
19
20
  return initialState;
20
21
  };
@@ -100,24 +101,37 @@ export default class Controller {
100
101
  */
101
102
  this.resetEntireStore = () => this.dispatch(createReset());
102
103
  /**
103
- * Stores response in cache for given Endpoint and args.
104
+ * Sets value for the Queryable and args.
104
105
  * @see https://dataclient.io/docs/api/Controller#set
105
106
  */
107
+ this.set = (schema, ...rest) => {
108
+ const value = rest[rest.length - 1];
109
+ const action = createSet(schema, {
110
+ args: rest.slice(0, rest.length - 1),
111
+ value
112
+ });
113
+ // TODO: reject with error if this fails in reducer
114
+ return this.dispatch(action);
115
+ };
116
+ /**
117
+ * Sets response for the Endpoint and args.
118
+ * @see https://dataclient.io/docs/api/Controller#setResponse
119
+ */
106
120
  this.setResponse = (endpoint, ...rest) => {
107
121
  const response = rest[rest.length - 1];
108
- const action = createSet(endpoint, {
122
+ const action = createSetResponse(endpoint, {
109
123
  args: rest.slice(0, rest.length - 1),
110
124
  response
111
125
  });
112
126
  return this.dispatch(action);
113
127
  };
114
128
  /**
115
- * Stores the result of Endpoint and args as the error provided.
129
+ * Sets an error response for the Endpoint and args.
116
130
  * @see https://dataclient.io/docs/api/Controller#setError
117
131
  */
118
132
  this.setError = (endpoint, ...rest) => {
119
133
  const response = rest[rest.length - 1];
120
- const action = createSet(endpoint, {
134
+ const action = createSetResponse(endpoint, {
121
135
  args: rest.slice(0, rest.length - 1),
122
136
  response,
123
137
  error: true
@@ -129,7 +143,7 @@ export default class Controller {
129
143
  * @see https://dataclient.io/docs/api/Controller#resolve
130
144
  */
131
145
  this.resolve = (endpoint, meta) => {
132
- return this.dispatch(createSet(endpoint, meta));
146
+ return this.dispatch(createSetResponse(endpoint, meta));
133
147
  };
134
148
  /**
135
149
  * Marks a new subscription to a given Endpoint.
@@ -330,4 +344,4 @@ class Snapshot {
330
344
  }
331
345
  }
332
346
  Snapshot.abort = new AbortOptimistic();
333
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHBpcnlTdGF0dXMiLCJNZW1vQ2FjaGUiLCJpc0VudGl0eSIsImRlbm9ybWFsaXplIiwidmFsaWRhdGVRdWVyeUtleSIsIkFib3J0T3B0aW1pc3RpYyIsImNyZWF0ZUV4cGlyZUFsbCIsImNyZWF0ZUZldGNoIiwiY3JlYXRlSW52YWxpZGF0ZSIsImNyZWF0ZUludmFsaWRhdGVBbGwiLCJjcmVhdGVSZXNldCIsImNyZWF0ZVNldCIsImNyZWF0ZVVuc3Vic2NyaXB0aW9uIiwiY3JlYXRlU3Vic2NyaXB0aW9uIiwiZW5zdXJlUG9qbyIsImluaXRpYWxTdGF0ZSIsInNlbGVjdE1ldGEiLCJ1bnNldERpc3BhdGNoIiwiYWN0aW9uIiwiRXJyb3IiLCJ1bnNldFN0YXRlIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiZGlzcGF0Y2giLCJnZXRTdGF0ZSIsIm1lbW8iLCJmZXRjaCIsImVuZHBvaW50IiwiYXJncyIsInNjaGVtYSIsIm1ldGEiLCJwcm9taXNlIiwidGhlbiIsImlucHV0IiwiZmV0Y2hJZlN0YWxlIiwiZGF0YSIsImV4cGlyZXNBdCIsImV4cGlyeVN0YXR1cyIsImdldFJlc3BvbnNlIiwiSW52YWxpZCIsIkRhdGUiLCJub3ciLCJpbnZhbGlkYXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJpbnZhbGlkYXRlQWxsIiwib3B0aW9ucyIsImtleSIsInRlc3RLZXkiLCJleHBpcmVBbGwiLCJyZXNldEVudGlyZVN0b3JlIiwic2V0UmVzcG9uc2UiLCJyZXN0IiwicmVzcG9uc2UiLCJsZW5ndGgiLCJzbGljZSIsInNldEVycm9yIiwiZXJyb3IiLCJzdWJzY3JpYmUiLCJ1bnN1YnNjcmliZSIsInNuYXBzaG90Iiwic3RhdGUiLCJmZXRjaGVkQXQiLCJTbmFwc2hvdCIsImdldEVycm9yIiwiZW5kcG9pbnRzIiwidW5kZWZpbmVkIiwiZXJyb3JQb2xpY3kiLCJtYXAiLCJpc0FjdGl2ZSIsImNhY2hlRW5kcG9pbnRzIiwic2hvdWxkUXVlcnkiLCJidWlsZFF1ZXJ5S2V5IiwiZW50aXRpZXMiLCJpbmRleGVzIiwiVmFsaWQiLCJJbmZpbml0eSIsImlzSW52YWxpZCIsInNjaGVtYUhhc0VudGl0eSIsImludmFsaWRhdGVkIiwiaW52YWxpZElmU3RhbGUiLCJJbnZhbGlkSWZTdGFsZSIsInBhdGhzIiwiZ2V0U2NoZW1hUmVzcG9uc2UiLCJlbnRpdHlNZXRhIiwiZ2V0IiwiSlNPTiIsInN0cmluZ2lmeSIsInF1ZXJ5IiwiaW52YWxpZERlbm9ybWFsaXplIiwiZW50aXR5RXhwaXJlc0F0IiwicGsiLCJfZW50aXR5TWV0YSRrZXkiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJuZXN0ZWRTY2hlbWEiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwieCIsImNvbnRyb2xsZXIiLCJhYm9ydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFcnJvclR5cGVzLFxuICBTbmFwc2hvdEludGVyZmFjZSxcbiAgU2NoZW1hLFxuICBEZW5vcm1hbGl6ZSxcbiAgUXVlcnlhYmxlLFxuICBTY2hlbWFBcmdzLFxuICBOSSxcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5pbXBvcnQge1xuICBFeHBpcnlTdGF0dXMsXG4gIEVuZHBvaW50SW50ZXJmYWNlLFxuICBGZXRjaEZ1bmN0aW9uLFxuICBSZXNvbHZlVHlwZSxcbiAgRGVub3JtYWxpemVOdWxsYWJsZSxcbiAgRW50aXR5UGF0aCxcbiAgTWVtb0NhY2hlLFxuICBpc0VudGl0eSxcbiAgZGVub3JtYWxpemUsXG4gIHZhbGlkYXRlUXVlcnlLZXksXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgQWJvcnRPcHRpbWlzdGljIGZyb20gJy4vQWJvcnRPcHRpbWlzdGljLmpzJztcbmltcG9ydCBjcmVhdGVFeHBpcmVBbGwgZnJvbSAnLi9jcmVhdGVFeHBpcmVBbGwuanMnO1xuaW1wb3J0IGNyZWF0ZUZldGNoIGZyb20gJy4vY3JlYXRlRmV0Y2guanMnO1xuaW1wb3J0IGNyZWF0ZUludmFsaWRhdGUgZnJvbSAnLi9jcmVhdGVJbnZhbGlkYXRlLmpzJztcbmltcG9ydCBjcmVhdGVJbnZhbGlkYXRlQWxsIGZyb20gJy4vY3JlYXRlSW52YWxpZGF0ZUFsbC5qcyc7XG5pbXBvcnQgY3JlYXRlUmVzZXQgZnJvbSAnLi9jcmVhdGVSZXNldC5qcyc7XG5pbXBvcnQgY3JlYXRlU2V0IGZyb20gJy4vY3JlYXRlU2V0LmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVVuc3Vic2NyaXB0aW9uLFxuICBjcmVhdGVTdWJzY3JpcHRpb24sXG59IGZyb20gJy4vY3JlYXRlU3Vic2NyaXB0aW9uLmpzJztcbmltcG9ydCBlbnN1cmVQb2pvIGZyb20gJy4vZW5zdXJlUG9qby5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJy4uL3N0YXRlL3JlZHVjZXIvY3JlYXRlUmVkdWNlci5qcyc7XG5pbXBvcnQgc2VsZWN0TWV0YSBmcm9tICcuLi9zdGF0ZS9zZWxlY3RNZXRhLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uVHlwZXMsIFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBHZW5lcmljRGlzcGF0Y2ggPSAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCB0eXBlIERhdGFDbGllbnREaXNwYXRjaCA9ICh2YWx1ZTogQWN0aW9uVHlwZXMpID0+IFByb21pc2U8dm9pZD47XG5cbmludGVyZmFjZSBDb25zdHJ1Y3RvclByb3BzPEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2g+IHtcbiAgZGlzcGF0Y2g/OiBEO1xuICBnZXRTdGF0ZT86ICgpID0+IFN0YXRlPHVua25vd24+O1xuICBtZW1vPzogUGljazxNZW1vQ2FjaGUsICdkZW5vcm1hbGl6ZScgfCAncXVlcnknIHwgJ2J1aWxkUXVlcnlLZXknPjtcbn1cblxuY29uc3QgdW5zZXREaXNwYXRjaCA9IChhY3Rpb246IHVua25vd24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBEaXNwYXRjaGluZyB3aGlsZSBjb25zdHJ1Y3RpbmcgeW91ciBtaWRkbGV3YXJlIGlzIG5vdCBhbGxvd2VkLiBgICtcbiAgICAgIGBPdGhlciBtaWRkbGV3YXJlIHdvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoaXMgZGlzcGF0Y2guYCxcbiAgKTtcbn07XG5jb25zdCB1bnNldFN0YXRlID0gKCk6IFN0YXRlPHVua25vd24+ID0+IHtcbiAgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIENhY2hlUHJvdmlkZXJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5cbi8qKlxuICogSW1wZXJhdGl2ZSBjb250cm9sIG9mIFJlYWN0aXZlIERhdGEgQ2xpZW50IHN0b3JlXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRyb2xsZXI8XG4gIEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4+IHtcbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHRvIFJlYWN0aXZlIERhdGEgQ2xpZW50IHJlZHVjZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZGlzcGF0Y2hcbiAgICovXG4gIGRlY2xhcmUgcmVhZG9ubHkgZGlzcGF0Y2g6IEQ7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsYXRlc3Qgc3RhdGUgc25hcHNob3QgdGhhdCBpcyBmdWxseSBjb21taXR0ZWQuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgaW1wZXJhdGl2ZSB1c2UtY2FzZXMgbGlrZSBldmVudCBoYW5kbGVycy5cbiAgICogVGhpcyBzaG91bGQgKm5vdCogYmUgdXNlZCB0byByZW5kZXI7IGluc3RlYWQgdXNlU3VzcGVuc2UoKSBvciB1c2VDYWNoZSgpXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0U3RhdGVcbiAgICovXG4gIGRlY2xhcmUgcmVhZG9ubHkgZ2V0U3RhdGU6ICgpID0+IFN0YXRlPHVua25vd24+O1xuICAvKipcbiAgICogU2luZ2xldG9uIHRvIG1haW50YWluIHJlZmVyZW50aWFsIGVxdWFsaXR5IGJldHdlZW4gY2FsbHNcbiAgICovXG4gIGRlY2xhcmUgcmVhZG9ubHkgbWVtbzogUGljazxcbiAgICBNZW1vQ2FjaGUsXG4gICAgJ2Rlbm9ybWFsaXplJyB8ICdxdWVyeScgfCAnYnVpbGRRdWVyeUtleSdcbiAgPjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZGlzcGF0Y2ggPSB1bnNldERpc3BhdGNoIGFzIGFueSxcbiAgICBnZXRTdGF0ZSA9IHVuc2V0U3RhdGUsXG4gICAgbWVtbyA9IG5ldyBNZW1vQ2FjaGUoKSxcbiAgfTogQ29uc3RydWN0b3JQcm9wczxEPiA9IHt9KSB7XG4gICAgdGhpcy5kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgIHRoaXMuZ2V0U3RhdGUgPSBnZXRTdGF0ZTtcbiAgICB0aGlzLm1lbW8gPSBtZW1vO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKiBBY3Rpb24gRGlzcGF0Y2hlcnMgKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBlbmRwb2ludCB3aXRoIGdpdmVuIGFyZ3MsIHVwZGF0aW5nIHRoZSBSZWFjdGl2ZSBEYXRhIENsaWVudCBjYWNoZSB3aXRoIHRoZSByZXNwb25zZSBvciBlcnJvciB1cG9uIGNvbXBsZXRpb24uXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZmV0Y2hcbiAgICovXG4gIGZldGNoID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPiB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiBFWydzY2hlbWEnXSBleHRlbmRzIHVuZGVmaW5lZCB8IG51bGwgPyBSZXR1cm5UeXBlPEU+XG4gIDogUHJvbWlzZTxEZW5vcm1hbGl6ZTxFWydzY2hlbWEnXT4+ID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVGZXRjaChlbmRwb2ludCwge1xuICAgICAgYXJncyxcbiAgICB9KTtcbiAgICB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG5cbiAgICBpZiAoZW5kcG9pbnQuc2NoZW1hKSB7XG4gICAgICByZXR1cm4gYWN0aW9uLm1ldGEucHJvbWlzZS50aGVuKGlucHV0ID0+XG4gICAgICAgIGRlbm9ybWFsaXplKGlucHV0LCBlbmRwb2ludC5zY2hlbWEsIHt9LCBhcmdzKSxcbiAgICAgICkgYXMgYW55O1xuICAgIH1cbiAgICByZXR1cm4gYWN0aW9uLm1ldGEucHJvbWlzZSBhcyBhbnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgb25seSBpZiBlbmRwb2ludCBpcyBjb25zaWRlcmVkICdzdGFsZSc7IG90aGVyd2lzZSByZXR1cm5zIHVuZGVmaW5lZFxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ZldGNoSWZTdGFsZVxuICAgKi9cbiAgZmV0Y2hJZlN0YWxlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPiB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiBFWydzY2hlbWEnXSBleHRlbmRzIHVuZGVmaW5lZCB8IG51bGwgPyBSZXR1cm5UeXBlPEU+IHwgUmVzb2x2ZVR5cGU8RT5cbiAgOiBQcm9taXNlPERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPj4gfCBEZW5vcm1hbGl6ZTxFWydzY2hlbWEnXT4gPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgZXhwaXJlc0F0LCBleHBpcnlTdGF0dXMgfSA9IHRoaXMuZ2V0UmVzcG9uc2UoXG4gICAgICBlbmRwb2ludCxcbiAgICAgIC4uLmFyZ3MsXG4gICAgICB0aGlzLmdldFN0YXRlKCksXG4gICAgKTtcbiAgICBpZiAoZXhwaXJ5U3RhdHVzICE9PSBFeHBpcnlTdGF0dXMuSW52YWxpZCAmJiBEYXRlLm5vdygpIDw9IGV4cGlyZXNBdClcbiAgICAgIHJldHVybiBkYXRhIGFzIGFueTtcbiAgICByZXR1cm4gdGhpcy5mZXRjaChlbmRwb2ludCwgLi4uYXJncyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZvcmNlcyByZWZldGNoaW5nIGFuZCBzdXNwZW5zZSBvbiB1c2VTdXNwZW5zZSB3aXRoIHRoZSBzYW1lIEVuZHBvaW50IGFuZCBwYXJhbWV0ZXJzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVcbiAgICovXG4gIGludmFsaWRhdGUgPSA8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGwgP1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgY3JlYXRlSW52YWxpZGF0ZShlbmRwb2ludCwge1xuICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIG9uIGFsbCBtYXRjaGluZyBlbmRwb2ludCByZXN1bHQga2V5cy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlQWxsXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGludmFsaWRhdGlvbiBpcyBjb21taXRlZC5cbiAgICovXG4gIGludmFsaWRhdGVBbGwgPSAob3B0aW9uczogeyB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4gfSkgPT5cbiAgICB0aGlzLmRpc3BhdGNoKGNyZWF0ZUludmFsaWRhdGVBbGwoKGtleTogc3RyaW5nKSA9PiBvcHRpb25zLnRlc3RLZXkoa2V5KSkpO1xuXG4gIC8qKlxuICAgKiBTZXRzIGFsbCBtYXRjaGluZyBlbmRwb2ludCByZXN1bHQga2V5cyB0byBiZSBTVEFMRS5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNleHBpcmVBbGxcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXhwaXJ5IGlzIGNvbW1pdGVkLiAqTk9UKiBmZXRjaCBwcm9taXNlXG4gICAqL1xuICBleHBpcmVBbGwgPSAob3B0aW9uczogeyB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4gfSkgPT5cbiAgICB0aGlzLmRpc3BhdGNoKGNyZWF0ZUV4cGlyZUFsbCgoa2V5OiBzdHJpbmcpID0+IG9wdGlvbnMudGVzdEtleShrZXkpKSk7XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgZW50aXJlIFJlYWN0aXZlIERhdGEgQ2xpZW50IGNhY2hlLiBBbGwgaW5mbGlnaHQgcmVxdWVzdHMgd2lsbCBub3QgcmVzb2x2ZS5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNldEVudGlyZVN0b3JlXG4gICAqL1xuICByZXNldEVudGlyZVN0b3JlID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5kaXNwYXRjaChjcmVhdGVSZXNldCgpKTtcblxuICAvKipcbiAgICogU3RvcmVzIHJlc3BvbnNlIGluIGNhY2hlIGZvciBnaXZlbiBFbmRwb2ludCBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRcbiAgICovXG4gIHNldFJlc3BvbnNlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgYW55XVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogUmVzb2x2ZVR5cGU8RT4gPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0KGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH07XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgcmVzdWx0IG9mIEVuZHBvaW50IGFuZCBhcmdzIGFzIHRoZSBlcnJvciBwcm92aWRlZC5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRFcnJvclxuICAgKi9cbiAgc2V0RXJyb3IgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBFcnJvcl1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IEVycm9yID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZVNldChlbmRwb2ludCwge1xuICAgICAgYXJnczogcmVzdC5zbGljZSgwLCByZXN0Lmxlbmd0aCAtIDEpIGFzIFBhcmFtZXRlcnM8RT4sXG4gICAgICByZXNwb25zZSxcbiAgICAgIGVycm9yOiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGluZmxpZ2h0IGZldGNoLiBgZmV0Y2hlZEF0YCBzaG91bGQgYGZldGNoYCdzIGBjcmVhdGVkQXRgXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjcmVzb2x2ZVxuICAgKi9cbiAgcmVzb2x2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgbWV0YTpcbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogRXJyb3I7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogYW55O1xuICAgICAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgICAgIGVycm9yPzogZmFsc2UgfCB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNyZWF0ZVNldChlbmRwb2ludCwgbWV0YSBhcyBhbnkpKTtcbiAgfTtcblxuICAvKipcbiAgICogTWFya3MgYSBuZXcgc3Vic2NyaXB0aW9uIHRvIGEgZ2l2ZW4gRW5kcG9pbnQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc3Vic2NyaWJlXG4gICAqL1xuICBzdWJzY3JpYmUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPFxuICAgICAgRmV0Y2hGdW5jdGlvbixcbiAgICAgIFNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCB8IGZhbHNlXG4gICAgPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGwgP1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgY3JlYXRlU3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgYXJnczogYXJncyBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKlxuICAgKiBNYXJrcyBjb21wbGV0aW9uIG9mIHN1YnNjcmlwdGlvbiB0byBhIGdpdmVuIEVuZHBvaW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Vuc3Vic2NyaWJlXG4gICAqL1xuICB1bnN1YnNjcmliZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U8XG4gICAgICBGZXRjaEZ1bmN0aW9uLFxuICAgICAgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkIHwgZmFsc2VcbiAgICA+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbCA/XG4gICAgICB0aGlzLmRpc3BhdGNoKFxuICAgICAgICBjcmVhdGVVbnN1YnNjcmlwdGlvbihlbmRwb2ludCwge1xuICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKioqKioqKioqKioqKioqIE1vcmUgKioqKioqKioqKioqKioqL1xuXG4gIC8qIFRPRE86XG4gIGFib3J0ID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IFByb21pc2U8dm9pZD5cbiAgKi9cblxuICAvKipcbiAgICogR2V0cyBhIHNuYXBzaG90IChodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QpXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc25hcHNob3RcbiAgICovXG4gIHNuYXBzaG90ID0gKHN0YXRlOiBTdGF0ZTx1bmtub3duPiwgZmV0Y2hlZEF0PzogbnVtYmVyKTogU25hcHNob3RJbnRlcmZhY2UgPT4ge1xuICAgIHJldHVybiBuZXcgU25hcHNob3QodGhpcywgc3RhdGUsIGZldGNoZWRBdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVycm9yLCBpZiBhbnksIGZvciBhIGdpdmVuIGVuZHBvaW50LiBSZXR1cm5zIHVuZGVmaW5lZCBmb3Igbm8gZXJyb3JzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldEVycm9yXG4gICAqL1xuICBnZXRFcnJvcjxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIFN0YXRlPHVua25vd24+XVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5Jz4+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+LCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcihcbiAgICBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLnVua25vd25bXSwgU3RhdGU8dW5rbm93bj5dXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQge1xuICAgIGlmIChyZXN0WzBdID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qgc3RhdGUgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV0gYXMgU3RhdGU8dW5rbm93bj47XG4gICAgLy8gdGhpcyBpcyB0eXBlc2NyaXB0IGdlbmVyaWNzIGJyZWFraW5nXG4gICAgY29uc3QgYXJnczogYW55ID0gcmVzdC5zbGljZSgwLCByZXN0Lmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IGtleSA9IGVuZHBvaW50LmtleSguLi5hcmdzKTtcblxuICAgIGNvbnN0IG1ldGEgPSBzZWxlY3RNZXRhKHN0YXRlLCBrZXkpO1xuICAgIGNvbnN0IGVycm9yID0gc3RhdGUuZW5kcG9pbnRzW2tleV07XG5cbiAgICBpZiAoZXJyb3IgIT09IHVuZGVmaW5lZCAmJiBtZXRhPy5lcnJvclBvbGljeSA9PT0gJ3NvZnQnKSByZXR1cm47XG5cbiAgICByZXR1cm4gbWV0YT8uZXJyb3IgYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIChnbG9iYWxseSByZWZlcmVudGlhbGx5IHN0YWJsZSkgcmVzcG9uc2UgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQvYXJncyBwYWlyIGZyb20gc3RhdGUgZ2l2ZW4uXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UmVzcG9uc2VcbiAgICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDpcbiAgICAgIHwgcmVhZG9ubHkgW251bGwsIFN0YXRlPHVua25vd24+XVxuICAgICAgfCByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgU3RhdGU8dW5rbm93bj5dXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLihyZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdKSxcbiAgICAgIFN0YXRlPHVua25vd24+LFxuICAgIF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlKFxuICAgIGVuZHBvaW50OiBFbmRwb2ludEludGVyZmFjZSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4udW5rbm93bltdLCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IHVua25vd247XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH0ge1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPHVua25vd24+O1xuICAgIC8vIHRoaXMgaXMgdHlwZXNjcmlwdCBnZW5lcmljcyBicmVha2luZ1xuICAgIGNvbnN0IGFyZ3M6IGFueSA9IHJlc3RcbiAgICAgIC5zbGljZSgwLCByZXN0Lmxlbmd0aCAtIDEpXG4gICAgICAvLyBoYW5kbGUgRm9ybURhdGFcbiAgICAgIC5tYXAoZW5zdXJlUG9qbyk7XG4gICAgY29uc3QgaXNBY3RpdmUgPSBhcmdzLmxlbmd0aCAhPT0gMSB8fCBhcmdzWzBdICE9PSBudWxsO1xuICAgIGNvbnN0IGtleSA9IGlzQWN0aXZlID8gZW5kcG9pbnQua2V5KC4uLmFyZ3MpIDogJyc7XG4gICAgY29uc3QgY2FjaGVFbmRwb2ludHMgPSBpc0FjdGl2ZSA/IHN0YXRlLmVuZHBvaW50c1trZXldIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNjaGVtYSA9IGVuZHBvaW50LnNjaGVtYTtcbiAgICBjb25zdCBtZXRhID0gc2VsZWN0TWV0YShzdGF0ZSwga2V5KTtcbiAgICBsZXQgZXhwaXJlc0F0ID0gbWV0YT8uZXhwaXJlc0F0O1xuICAgIC8vIGlmIHdlIGhhdmUgbm8gZW5kcG9pbnQgZW50cnksIGFuZCBvdXIgZW5kcG9pbnQgaGFzIGEgc2NoZW1hIC0gdHJ5IHF1ZXJ5aW5nIHRoZSBzdG9yZVxuICAgIGNvbnN0IHNob3VsZFF1ZXJ5ID0gY2FjaGVFbmRwb2ludHMgPT09IHVuZGVmaW5lZCAmJiBzY2hlbWEgIT09IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGlucHV0ID1cbiAgICAgIHNob3VsZFF1ZXJ5ID9cbiAgICAgICAgLy8gbm90aGluZyBpbiBlbmRwb2ludHMgY2FjaGUsIHNvIHRyeSBxdWVyeWluZyBpZiB3ZSBoYXZlIGEgc2NoZW1hIHRvIGRvIHNvXG4gICAgICAgIHRoaXMubWVtby5idWlsZFF1ZXJ5S2V5KFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgYXJncyxcbiAgICAgICAgICBzdGF0ZS5lbnRpdGllcyBhcyBhbnksXG4gICAgICAgICAgc3RhdGUuaW5kZXhlcyxcbiAgICAgICAgKVxuICAgICAgOiBjYWNoZUVuZHBvaW50cztcblxuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIC8vIHdoZW4gbm90IGFjdGl2ZSBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeSBpbnB1dCB3aXRob3V0IGRlbm9ybWFsaXppbmdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IGlucHV0IGFzIGFueSxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXMuVmFsaWQsXG4gICAgICAgIGV4cGlyZXNBdDogSW5maW5pdHksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICBpZiAoc2hvdWxkUXVlcnkpIHtcbiAgICAgIGlzSW52YWxpZCA9ICF2YWxpZGF0ZVF1ZXJ5S2V5KGlucHV0KTtcbiAgICB9IGVsc2UgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYUhhc0VudGl0eShzY2hlbWEpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBjYWNoZUVuZHBvaW50cyxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOlxuICAgICAgICAgIG1ldGE/LmludmFsaWRhdGVkID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgICA6IGNhY2hlRW5kcG9pbnRzICYmICFlbmRwb2ludC5pbnZhbGlkSWZTdGFsZSA/IEV4cGlyeVN0YXR1cy5WYWxpZFxuICAgICAgICAgIDogRXhwaXJ5U3RhdHVzLkludmFsaWRJZlN0YWxlLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdCB8fCAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBzZWNvbmQgYXJndW1lbnQgaXMgZmFsc2UgaWYgYW55IGVudGl0aWVzIGFyZSBtaXNzaW5nXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IHRoaXMubWVtby5kZW5vcm1hbGl6ZShcbiAgICAgIGlucHV0LFxuICAgICAgc2NoZW1hLFxuICAgICAgc3RhdGUuZW50aXRpZXMsXG4gICAgICBhcmdzLFxuICAgICkgYXMgeyBkYXRhOiBhbnk7IHBhdGhzOiBFbnRpdHlQYXRoW10gfTtcblxuICAgIC8vIG5vdGU6IGlzSW52YWxpZCBjYW4gb25seSBiZSB0cnVlIGlmIHNob3VsZFF1ZXJ5IGlzIHRydWVcbiAgICBpZiAoIWV4cGlyZXNBdCAmJiBpc0ludmFsaWQpIGV4cGlyZXNBdCA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRTY2hlbWFSZXNwb25zZShcbiAgICAgIGRhdGEsXG4gICAgICBwYXRocyxcbiAgICAgIHN0YXRlLmVudGl0eU1ldGEsXG4gICAgICBleHBpcmVzQXQsXG4gICAgICBlbmRwb2ludC5pbnZhbGlkSWZTdGFsZSB8fCBpc0ludmFsaWQsXG4gICAgICBtZXRhLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyB0aGUgc3RvcmUgZm9yIGEgUXVlcmFibGUgc2NoZW1hXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLlNjaGVtYUFyZ3M8Uz4sXG4gICAgICBQaWNrPFN0YXRlPHVua25vd24+LCAnZW50aXRpZXMnIHwgJ2VudGl0eU1ldGEnPixcbiAgICBdXG4gICk6IERlbm9ybWFsaXplTnVsbGFibGU8Uz4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPGFueT47XG4gICAgLy8gdGhpcyBpcyB0eXBlc2NyaXB0IGdlbmVyaWNzIGJyZWFraW5nXG4gICAgY29uc3QgYXJnczogYW55ID0gcmVzdFxuICAgICAgLnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSlcbiAgICAgIC5tYXAoZW5zdXJlUG9qbykgYXMgU2NoZW1hQXJnczxTPjtcblxuICAgIC8vIE5PVEU6IGRpZmZlcmVudCBvcmRlcnMgY2FuIHJlc3VsdCBpbiBjYWNoZSBidXN0aW5nIGhlcmU7IGJ1dCBzaW5jZSBpdCdzIGp1c3QgYSBwZXJmIHBlbmFsdHkgd2Ugd2lsbCBhbGxvdyBmb3Igbm93XG4gICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcy5tZW1vLnF1ZXJ5KFxuICAgICAga2V5LFxuICAgICAgc2NoZW1hLFxuICAgICAgYXJncyxcbiAgICAgIHN0YXRlLmVudGl0aWVzIGFzIGFueSxcbiAgICAgIHN0YXRlLmluZGV4ZXMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2NoZW1hUmVzcG9uc2U8VD4oXG4gICAgZGF0YTogVCxcbiAgICBwYXRoczogRW50aXR5UGF0aFtdLFxuICAgIGVudGl0eU1ldGE6IFN0YXRlPHVua25vd24+WydlbnRpdHlNZXRhJ10sXG4gICAgZXhwaXJlc0F0OiBudW1iZXIsXG4gICAgaW52YWxpZElmU3RhbGU6IGJvb2xlYW4sXG4gICAgbWV0YTogeyBlcnJvcj86IHVua25vd247IGludmFsaWRhdGVkPzogdW5rbm93biB9ID0ge30sXG4gICk6IHtcbiAgICBkYXRhOiBUO1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICBjb25zdCBpbnZhbGlkRGVub3JtYWxpemUgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG5cbiAgICAvLyBmYWxsYmFjayB0byBlbnRpdHkgZXhwaXJ5IHRpbWVcbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJlc0F0KHBhdGhzLCBlbnRpdHlNZXRhKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9jb25jZXB0cy9leHBpcnktcG9saWN5I2V4cGlyeS1zdGF0dXNcbiAgICAvLyB3ZSBkb24ndCB0cmFjayB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN0YWxlIG9yIGZyZXNoIGJlY2F1c2UgdGhhdCBpcyB0aWVkIHRvIHRyaWdnZXJpbmdcbiAgICAvLyBjb25kaXRpb25zXG4gICAgY29uc3QgZXhwaXJ5U3RhdHVzID1cbiAgICAgIG1ldGE/LmludmFsaWRhdGVkIHx8IChpbnZhbGlkRGVub3JtYWxpemUgJiYgIW1ldGE/LmVycm9yKSA/XG4gICAgICAgIEV4cGlyeVN0YXR1cy5JbnZhbGlkXG4gICAgICA6IGludmFsaWREZW5vcm1hbGl6ZSB8fCBpbnZhbGlkSWZTdGFsZSA/IEV4cGlyeVN0YXR1cy5JbnZhbGlkSWZTdGFsZVxuICAgICAgOiBFeHBpcnlTdGF0dXMuVmFsaWQ7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcnlTdGF0dXMsIGV4cGlyZXNBdCB9O1xuICB9XG59XG5cbi8vIGJlbmNobWFyazogaHR0cHM6Ly93d3cubWVhc3VyZXRoYXQubmV0L0JlbmNobWFya3MvU2hvdy8yNDY5MS8wL21pbi1yZWR1Y2VyLXZzLWltcGVyYXRpdmUtd2l0aC1wYXRoc1xuLy8gZWFybGllc3QgZXhwaXJ5IGRpY3RhdGVzIGFnZVxuZnVuY3Rpb24gZW50aXR5RXhwaXJlc0F0KFxuICBwYXRoczogRW50aXR5UGF0aFtdLFxuICBlbnRpdHlNZXRhOiB7XG4gICAgcmVhZG9ubHkgW2VudGl0eUtleTogc3RyaW5nXToge1xuICAgICAgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiB7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyOyAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgQ2FjaGVQcm92aWRlclxuICAgICAgfTtcbiAgICB9O1xuICB9LFxuKSB7XG4gIGxldCBleHBpcmVzQXQgPSBJbmZpbml0eTtcbiAgZm9yIChjb25zdCB7IHBrLCBrZXkgfSBvZiBwYXRocykge1xuICAgIGNvbnN0IGVudGl0eUV4cGlyeSA9IGVudGl0eU1ldGFba2V5XT8uW3BrXT8uZXhwaXJlc0F0O1xuICAgIC8vIGV4cGlyZXNBdCB3aWxsIGFsd2F5cyByZXNvbHZlIHRvIGZhbHNlIHdpdGggYW55IGNvbXBhcmlzb25cbiAgICBpZiAoZW50aXR5RXhwaXJ5IDwgZXhwaXJlc0F0KSBleHBpcmVzQXQgPSBlbnRpdHlFeHBpcnk7XG4gIH1cbiAgcmV0dXJuIGV4cGlyZXNBdDtcbn1cblxuLyoqIERldGVybWluZSB3aGV0aGVyIHRoZSBzY2hlbWEgaGFzIGFueSBlbnRpdGllcy5cbiAqXG4gKiBXaXRob3V0IGVudGl0aWVzLCBkZW5vcm1hbGl6YXRpb24gaXMgbm90IG5lZWRlZCwgYW5kIHJlc3VsdHMgc2hvdWxkIG5vdCBiZSBxdWVyaWVkLlxuICovXG5mdW5jdGlvbiBzY2hlbWFIYXNFbnRpdHkoc2NoZW1hOiBTY2hlbWEpOiBib29sZWFuIHtcbiAgaWYgKGlzRW50aXR5KHNjaGVtYSkpIHJldHVybiB0cnVlO1xuICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKVxuICAgIHJldHVybiBzY2hlbWEubGVuZ3RoICE9PSAwICYmIHNjaGVtYUhhc0VudGl0eShzY2hlbWFbMF0pO1xuICBpZiAoc2NoZW1hICYmICh0eXBlb2Ygc2NoZW1hID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygc2NoZW1hID09PSAnZnVuY3Rpb24nKSkge1xuICAgIGNvbnN0IG5lc3RlZFNjaGVtYSA9XG4gICAgICAnc2NoZW1hJyBpbiBzY2hlbWEgPyAoc2NoZW1hLnNjaGVtYSBhcyBSZWNvcmQ8c3RyaW5nLCBTY2hlbWE+KSA6IHNjaGVtYTtcbiAgICBpZiAodHlwZW9mIG5lc3RlZFNjaGVtYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHNjaGVtYUhhc0VudGl0eShuZXN0ZWRTY2hlbWEpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhuZXN0ZWRTY2hlbWEpLnNvbWUoeCA9PiBzY2hlbWFIYXNFbnRpdHkoeCkpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IHR5cGUgeyBFcnJvclR5cGVzIH07XG5cbmNsYXNzIFNuYXBzaG90PFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIFNuYXBzaG90SW50ZXJmYWNlIHtcbiAgc3RhdGljIHJlYWRvbmx5IGFib3J0ID0gbmV3IEFib3J0T3B0aW1pc3RpYygpO1xuXG4gIHByaXZhdGUgc3RhdGU6IFN0YXRlPFQ+O1xuICBwcml2YXRlIGNvbnRyb2xsZXI6IENvbnRyb2xsZXI7XG4gIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyO1xuICByZWFkb25seSBhYm9ydCA9IFNuYXBzaG90LmFib3J0O1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsIHN0YXRlOiBTdGF0ZTxUPiwgZmV0Y2hlZEF0ID0gMCkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgIHRoaXMuZmV0Y2hlZEF0ID0gZmV0Y2hlZEF0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKiBEYXRhIEFjY2VzcyAqKioqKioqKioqKioqKiovXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZSAqL1xuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFtudWxsXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5JyB8ICdzY2hlbWEnIHwgJ2ludmFsaWRJZlN0YWxlJz4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRSZXNwb25zZShlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0RXJyb3IgKi9cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcjxFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+PihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknPj4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldEVycm9yKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZWQgbWVtb2l6ZWQgdmFsdWUgZm9yIGFueSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLmFyZ3M6IFNjaGVtYUFyZ3M8Uz5cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXQoc2NoZW1hLCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFTQSxTQUNFQSxZQUFZLEVBTVpDLFNBQVMsRUFDVEMsUUFBUSxFQUNSQyxXQUFXLEVBQ1hDLGdCQUFnQixRQUNYLHdCQUF3QjtBQUUvQixPQUFPQyxlQUFlLE1BQU0sc0JBQXNCO0FBQ2xELE9BQU9DLGVBQWUsTUFBTSxzQkFBc0I7QUFDbEQsT0FBT0MsV0FBVyxNQUFNLGtCQUFrQjtBQUMxQyxPQUFPQyxnQkFBZ0IsTUFBTSx1QkFBdUI7QUFDcEQsT0FBT0MsbUJBQW1CLE1BQU0sMEJBQTBCO0FBQzFELE9BQU9DLFdBQVcsTUFBTSxrQkFBa0I7QUFDMUMsT0FBT0MsU0FBUyxNQUFNLGdCQUFnQjtBQUN0QyxTQUNFQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixRQUNiLHlCQUF5QjtBQUNoQyxPQUFPQyxVQUFVLE1BQU0saUJBQWlCO0FBRXhDLFNBQVNDLFlBQVksUUFBUSxtQ0FBbUM7QUFDaEUsT0FBT0MsVUFBVSxNQUFNLHdCQUF3QjtBQVkvQyxNQUFNQyxhQUFhLEdBQUlDLE1BQWUsSUFBb0I7RUFDeEQsTUFB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
347
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHBpcnlTdGF0dXMiLCJNZW1vQ2FjaGUiLCJpc0VudGl0eSIsImRlbm9ybWFsaXplIiwidmFsaWRhdGVRdWVyeUtleSIsIkFib3J0T3B0aW1pc3RpYyIsImNyZWF0ZUV4cGlyZUFsbCIsImNyZWF0ZUZldGNoIiwiY3JlYXRlSW52YWxpZGF0ZSIsImNyZWF0ZUludmFsaWRhdGVBbGwiLCJjcmVhdGVSZXNldCIsImNyZWF0ZVNldCIsImNyZWF0ZVNldFJlc3BvbnNlIiwiY3JlYXRlVW5zdWJzY3JpcHRpb24iLCJjcmVhdGVTdWJzY3JpcHRpb24iLCJlbnN1cmVQb2pvIiwiaW5pdGlhbFN0YXRlIiwic2VsZWN0TWV0YSIsInVuc2V0RGlzcGF0Y2giLCJhY3Rpb24iLCJFcnJvciIsInVuc2V0U3RhdGUiLCJDb250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJkaXNwYXRjaCIsImdldFN0YXRlIiwibWVtbyIsImZldGNoIiwiZW5kcG9pbnQiLCJhcmdzIiwic2NoZW1hIiwibWV0YSIsInByb21pc2UiLCJ0aGVuIiwiaW5wdXQiLCJmZXRjaElmU3RhbGUiLCJkYXRhIiwiZXhwaXJlc0F0IiwiZXhwaXJ5U3RhdHVzIiwiZ2V0UmVzcG9uc2UiLCJJbnZhbGlkIiwiRGF0ZSIsIm5vdyIsImludmFsaWRhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImludmFsaWRhdGVBbGwiLCJvcHRpb25zIiwia2V5IiwidGVzdEtleSIsImV4cGlyZUFsbCIsInJlc2V0RW50aXJlU3RvcmUiLCJzZXQiLCJyZXN0IiwidmFsdWUiLCJsZW5ndGgiLCJzbGljZSIsInNldFJlc3BvbnNlIiwicmVzcG9uc2UiLCJzZXRFcnJvciIsImVycm9yIiwic3Vic2NyaWJlIiwidW5zdWJzY3JpYmUiLCJzbmFwc2hvdCIsInN0YXRlIiwiZmV0Y2hlZEF0IiwiU25hcHNob3QiLCJnZXRFcnJvciIsImVuZHBvaW50cyIsInVuZGVmaW5lZCIsImVycm9yUG9saWN5IiwibWFwIiwiaXNBY3RpdmUiLCJjYWNoZUVuZHBvaW50cyIsInNob3VsZFF1ZXJ5IiwiYnVpbGRRdWVyeUtleSIsImVudGl0aWVzIiwiaW5kZXhlcyIsIlZhbGlkIiwiSW5maW5pdHkiLCJpc0ludmFsaWQiLCJzY2hlbWFIYXNFbnRpdHkiLCJpbnZhbGlkYXRlZCIsImludmFsaWRJZlN0YWxlIiwiSW52YWxpZElmU3RhbGUiLCJwYXRocyIsImdldFNjaGVtYVJlc3BvbnNlIiwiZW50aXR5TWV0YSIsImdldCIsIkpTT04iLCJzdHJpbmdpZnkiLCJxdWVyeSIsImludmFsaWREZW5vcm1hbGl6ZSIsImVudGl0eUV4cGlyZXNBdCIsInBrIiwiX2VudGl0eU1ldGEka2V5IiwiZW50aXR5RXhwaXJ5IiwiQXJyYXkiLCJpc0FycmF5IiwibmVzdGVkU2NoZW1hIiwiT2JqZWN0IiwidmFsdWVzIiwic29tZSIsIngiLCJjb250cm9sbGVyIiwiYWJvcnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9Db250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRXJyb3JUeXBlcyxcbiAgU25hcHNob3RJbnRlcmZhY2UsXG4gIFNjaGVtYSxcbiAgRGVub3JtYWxpemUsXG4gIFF1ZXJ5YWJsZSxcbiAgU2NoZW1hQXJncyxcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5pbXBvcnQge1xuICBFeHBpcnlTdGF0dXMsXG4gIEVuZHBvaW50SW50ZXJmYWNlLFxuICBGZXRjaEZ1bmN0aW9uLFxuICBSZXNvbHZlVHlwZSxcbiAgRGVub3JtYWxpemVOdWxsYWJsZSxcbiAgRW50aXR5UGF0aCxcbiAgTWVtb0NhY2hlLFxuICBpc0VudGl0eSxcbiAgZGVub3JtYWxpemUsXG4gIHZhbGlkYXRlUXVlcnlLZXksXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgQWJvcnRPcHRpbWlzdGljIGZyb20gJy4vQWJvcnRPcHRpbWlzdGljLmpzJztcbmltcG9ydCBjcmVhdGVFeHBpcmVBbGwgZnJvbSAnLi9jcmVhdGVFeHBpcmVBbGwuanMnO1xuaW1wb3J0IGNyZWF0ZUZldGNoIGZyb20gJy4vY3JlYXRlRmV0Y2guanMnO1xuaW1wb3J0IGNyZWF0ZUludmFsaWRhdGUgZnJvbSAnLi9jcmVhdGVJbnZhbGlkYXRlLmpzJztcbmltcG9ydCBjcmVhdGVJbnZhbGlkYXRlQWxsIGZyb20gJy4vY3JlYXRlSW52YWxpZGF0ZUFsbC5qcyc7XG5pbXBvcnQgY3JlYXRlUmVzZXQgZnJvbSAnLi9jcmVhdGVSZXNldC5qcyc7XG5pbXBvcnQgY3JlYXRlU2V0IGZyb20gJy4vY3JlYXRlU2V0LmpzJztcbmltcG9ydCBjcmVhdGVTZXRSZXNwb25zZSBmcm9tICcuL2NyZWF0ZVNldFJlc3BvbnNlLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVVuc3Vic2NyaXB0aW9uLFxuICBjcmVhdGVTdWJzY3JpcHRpb24sXG59IGZyb20gJy4vY3JlYXRlU3Vic2NyaXB0aW9uLmpzJztcbmltcG9ydCBlbnN1cmVQb2pvIGZyb20gJy4vZW5zdXJlUG9qby5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJy4uL3N0YXRlL3JlZHVjZXIvY3JlYXRlUmVkdWNlci5qcyc7XG5pbXBvcnQgc2VsZWN0TWV0YSBmcm9tICcuLi9zdGF0ZS9zZWxlY3RNZXRhLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uVHlwZXMsIFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBHZW5lcmljRGlzcGF0Y2ggPSAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCB0eXBlIERhdGFDbGllbnREaXNwYXRjaCA9ICh2YWx1ZTogQWN0aW9uVHlwZXMpID0+IFByb21pc2U8dm9pZD47XG5cbmludGVyZmFjZSBDb25zdHJ1Y3RvclByb3BzPEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2g+IHtcbiAgZGlzcGF0Y2g/OiBEO1xuICBnZXRTdGF0ZT86ICgpID0+IFN0YXRlPHVua25vd24+O1xuICBtZW1vPzogUGljazxNZW1vQ2FjaGUsICdkZW5vcm1hbGl6ZScgfCAncXVlcnknIHwgJ2J1aWxkUXVlcnlLZXknPjtcbn1cblxuY29uc3QgdW5zZXREaXNwYXRjaCA9IChhY3Rpb246IHVua25vd24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBEaXNwYXRjaGluZyB3aGlsZSBjb25zdHJ1Y3RpbmcgeW91ciBtaWRkbGV3YXJlIGlzIG5vdCBhbGxvd2VkLiBgICtcbiAgICAgIGBPdGhlciBtaWRkbGV3YXJlIHdvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoaXMgZGlzcGF0Y2guYCxcbiAgKTtcbn07XG5jb25zdCB1bnNldFN0YXRlID0gKCk6IFN0YXRlPHVua25vd24+ID0+IHtcbiAgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIERhdGFQcm92aWRlclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gaW5pdGlhbFN0YXRlO1xufTtcblxuLyoqXG4gKiBJbXBlcmF0aXZlIGNvbnRyb2wgb2YgUmVhY3RpdmUgRGF0YSBDbGllbnQgc3RvcmVcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udHJvbGxlcjxcbiAgRCBleHRlbmRzIEdlbmVyaWNEaXNwYXRjaCA9IERhdGFDbGllbnREaXNwYXRjaCxcbj4ge1xuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24gdG8gUmVhY3RpdmUgRGF0YSBDbGllbnQgcmVkdWNlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNkaXNwYXRjaFxuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBkaXNwYXRjaDogRDtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGxhdGVzdCBzdGF0ZSBzbmFwc2hvdCB0aGF0IGlzIGZ1bGx5IGNvbW1pdHRlZC5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBpbXBlcmF0aXZlIHVzZS1jYXNlcyBsaWtlIGV2ZW50IGhhbmRsZXJzLlxuICAgKiBUaGlzIHNob3VsZCAqbm90KiBiZSB1c2VkIHRvIHJlbmRlcjsgaW5zdGVhZCB1c2VTdXNwZW5zZSgpIG9yIHVzZUNhY2hlKClcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRTdGF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBnZXRTdGF0ZTogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIC8qKlxuICAgKiBTaW5nbGV0b24gdG8gbWFpbnRhaW4gcmVmZXJlbnRpYWwgZXF1YWxpdHkgYmV0d2VlbiBjYWxsc1xuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBtZW1vOiBQaWNrPFxuICAgIE1lbW9DYWNoZSxcbiAgICAnZGVub3JtYWxpemUnIHwgJ3F1ZXJ5JyB8ICdidWlsZFF1ZXJ5S2V5J1xuICA+O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBkaXNwYXRjaCA9IHVuc2V0RGlzcGF0Y2ggYXMgYW55LFxuICAgIGdldFN0YXRlID0gdW5zZXRTdGF0ZSxcbiAgICBtZW1vID0gbmV3IE1lbW9DYWNoZSgpLFxuICB9OiBDb25zdHJ1Y3RvclByb3BzPEQ+ID0ge30pIHtcbiAgICB0aGlzLmRpc3BhdGNoID0gZGlzcGF0Y2g7XG4gICAgdGhpcy5nZXRTdGF0ZSA9IGdldFN0YXRlO1xuICAgIHRoaXMubWVtbyA9IG1lbW87XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIEFjdGlvbiBEaXNwYXRjaGVycyAqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGVuZHBvaW50IHdpdGggZ2l2ZW4gYXJncywgdXBkYXRpbmcgdGhlIFJlYWN0aXZlIERhdGEgQ2xpZW50IGNhY2hlIHdpdGggdGhlIHJlc3BvbnNlIG9yIGVycm9yIHVwb24gY29tcGxldGlvbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNmZXRjaFxuICAgKi9cbiAgZmV0Y2ggPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+IH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IEVbJ3NjaGVtYSddIGV4dGVuZHMgdW5kZWZpbmVkIHwgbnVsbCA/IFJldHVyblR5cGU8RT5cbiAgOiBQcm9taXNlPERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPj4gPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZUZldGNoKGVuZHBvaW50LCB7XG4gICAgICBhcmdzLFxuICAgIH0pO1xuICAgIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcblxuICAgIGlmIChlbmRwb2ludC5zY2hlbWEpIHtcbiAgICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlLnRoZW4oaW5wdXQgPT5cbiAgICAgICAgZGVub3JtYWxpemUoaW5wdXQsIGVuZHBvaW50LnNjaGVtYSwge30sIGFyZ3MpLFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogRmV0Y2hlcyBvbmx5IGlmIGVuZHBvaW50IGlzIGNvbnNpZGVyZWQgJ3N0YWxlJzsgb3RoZXJ3aXNlIHJldHVybnMgdW5kZWZpbmVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZmV0Y2hJZlN0YWxlXG4gICAqL1xuICBmZXRjaElmU3RhbGUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+IH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IEVbJ3NjaGVtYSddIGV4dGVuZHMgdW5kZWZpbmVkIHwgbnVsbCA/IFJldHVyblR5cGU8RT4gfCBSZXNvbHZlVHlwZTxFPlxuICA6IFByb21pc2U8RGVub3JtYWxpemU8RVsnc2NoZW1hJ10+PiB8IERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPiA9PiB7XG4gICAgY29uc3QgeyBkYXRhLCBleHBpcmVzQXQsIGV4cGlyeVN0YXR1cyB9ID0gdGhpcy5nZXRSZXNwb25zZShcbiAgICAgIGVuZHBvaW50LFxuICAgICAgLi4uYXJncyxcbiAgICAgIHRoaXMuZ2V0U3RhdGUoKSxcbiAgICApO1xuICAgIGlmIChleHBpcnlTdGF0dXMgIT09IEV4cGlyeVN0YXR1cy5JbnZhbGlkICYmIERhdGUubm93KCkgPD0gZXhwaXJlc0F0KVxuICAgICAgcmV0dXJuIGRhdGEgYXMgYW55O1xuICAgIHJldHVybiB0aGlzLmZldGNoKGVuZHBvaW50LCAuLi5hcmdzKTtcbiAgfTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIHdpdGggdGhlIHNhbWUgRW5kcG9pbnQgYW5kIHBhcmFtZXRlcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjaW52YWxpZGF0ZVxuICAgKi9cbiAgaW52YWxpZGF0ZSA9IDxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbCA/XG4gICAgICB0aGlzLmRpc3BhdGNoKFxuICAgICAgICBjcmVhdGVJbnZhbGlkYXRlKGVuZHBvaW50LCB7XG4gICAgICAgICAgYXJnczogYXJncyBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKlxuICAgKiBGb3JjZXMgcmVmZXRjaGluZyBhbmQgc3VzcGVuc2Ugb24gdXNlU3VzcGVuc2Ugb24gYWxsIG1hdGNoaW5nIGVuZHBvaW50IHJlc3VsdCBrZXlzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVBbGxcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gaW52YWxpZGF0aW9uIGlzIGNvbW1pdGVkLlxuICAgKi9cbiAgaW52YWxpZGF0ZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlSW52YWxpZGF0ZUFsbCgoa2V5OiBzdHJpbmcpID0+IG9wdGlvbnMudGVzdEtleShrZXkpKSk7XG5cbiAgLyoqXG4gICAqIFNldHMgYWxsIG1hdGNoaW5nIGVuZHBvaW50IHJlc3VsdCBrZXlzIHRvIGJlIFNUQUxFLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2V4cGlyZUFsbFxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBleHBpcnkgaXMgY29tbWl0ZWQuICpOT1QqIGZldGNoIHByb21pc2VcbiAgICovXG4gIGV4cGlyZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlRXhwaXJlQWxsKChrZXk6IHN0cmluZykgPT4gb3B0aW9ucy50ZXN0S2V5KGtleSkpKTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbnRpcmUgUmVhY3RpdmUgRGF0YSBDbGllbnQgY2FjaGUuIEFsbCBpbmZsaWdodCByZXF1ZXN0cyB3aWxsIG5vdCByZXNvbHZlLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Jlc2V0RW50aXJlU3RvcmVcbiAgICovXG4gIHJlc2V0RW50aXJlU3RvcmUgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLmRpc3BhdGNoKGNyZWF0ZVJlc2V0KCkpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHZhbHVlIGZvciB0aGUgUXVlcnlhYmxlIGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFxuICAgKi9cbiAgc2V0ID0gPFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uU2NoZW1hQXJnczxTPiwgYW55XVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCB2YWx1ZTogRGVub3JtYWxpemU8Uz4gPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0KHNjaGVtYSwge1xuICAgICAgYXJnczogcmVzdC5zbGljZSgwLCByZXN0Lmxlbmd0aCAtIDEpIGFzIFNjaGVtYUFyZ3M8Uz4sXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgICAvLyBUT0RPOiByZWplY3Qgd2l0aCBlcnJvciBpZiB0aGlzIGZhaWxzIGluIHJlZHVjZXJcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTZXRzIHJlc3BvbnNlIGZvciB0aGUgRW5kcG9pbnQgYW5kIGFyZ3MuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc2V0UmVzcG9uc2VcbiAgICovXG4gIHNldFJlc3BvbnNlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgYW55XVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogUmVzb2x2ZVR5cGU8RT4gPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0cyBhbiBlcnJvciByZXNwb25zZSBmb3IgdGhlIEVuZHBvaW50IGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldEVycm9yXG4gICAqL1xuICBzZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIEVycm9yXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogRXJyb3IgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBlcnJvcjogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBpbmZsaWdodCBmZXRjaC4gYGZldGNoZWRBdGAgc2hvdWxkIGBmZXRjaGAncyBgY3JlYXRlZEF0YFxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Jlc29sdmVcbiAgICovXG4gIHJlc29sdmUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIG1ldGE6XG4gICAgICB8IHtcbiAgICAgICAgICBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl07XG4gICAgICAgICAgcmVzcG9uc2U6IEVycm9yO1xuICAgICAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgICAgIGVycm9yOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl07XG4gICAgICAgICAgcmVzcG9uc2U6IGFueTtcbiAgICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgICAgICBlcnJvcj86IGZhbHNlIHwgdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChjcmVhdGVTZXRSZXNwb25zZShlbmRwb2ludCwgbWV0YSBhcyBhbnkpKTtcbiAgfTtcblxuICAvKipcbiAgICogTWFya3MgYSBuZXcgc3Vic2NyaXB0aW9uIHRvIGEgZ2l2ZW4gRW5kcG9pbnQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc3Vic2NyaWJlXG4gICAqL1xuICBzdWJzY3JpYmUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPFxuICAgICAgRmV0Y2hGdW5jdGlvbixcbiAgICAgIFNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCB8IGZhbHNlXG4gICAgPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGwgP1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgY3JlYXRlU3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgYXJnczogYXJncyBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKlxuICAgKiBNYXJrcyBjb21wbGV0aW9uIG9mIHN1YnNjcmlwdGlvbiB0byBhIGdpdmVuIEVuZHBvaW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Vuc3Vic2NyaWJlXG4gICAqL1xuICB1bnN1YnNjcmliZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U8XG4gICAgICBGZXRjaEZ1bmN0aW9uLFxuICAgICAgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkIHwgZmFsc2VcbiAgICA+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbCA/XG4gICAgICB0aGlzLmRpc3BhdGNoKFxuICAgICAgICBjcmVhdGVVbnN1YnNjcmlwdGlvbihlbmRwb2ludCwge1xuICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKioqKioqKioqKioqKioqIE1vcmUgKioqKioqKioqKioqKioqL1xuXG4gIC8qIFRPRE86XG4gIGFib3J0ID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IFByb21pc2U8dm9pZD5cbiAgKi9cblxuICAvKipcbiAgICogR2V0cyBhIHNuYXBzaG90IChodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QpXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc25hcHNob3RcbiAgICovXG4gIHNuYXBzaG90ID0gKHN0YXRlOiBTdGF0ZTx1bmtub3duPiwgZmV0Y2hlZEF0PzogbnVtYmVyKTogU25hcHNob3RJbnRlcmZhY2UgPT4ge1xuICAgIHJldHVybiBuZXcgU25hcHNob3QodGhpcywgc3RhdGUsIGZldGNoZWRBdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVycm9yLCBpZiBhbnksIGZvciBhIGdpdmVuIGVuZHBvaW50LiBSZXR1cm5zIHVuZGVmaW5lZCBmb3Igbm8gZXJyb3JzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldEVycm9yXG4gICAqL1xuICBnZXRFcnJvcjxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIFN0YXRlPHVua25vd24+XVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5Jz4+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+LCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcihcbiAgICBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLnVua25vd25bXSwgU3RhdGU8dW5rbm93bj5dXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQge1xuICAgIGlmIChyZXN0WzBdID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qgc3RhdGUgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV0gYXMgU3RhdGU8dW5rbm93bj47XG4gICAgLy8gdGhpcyBpcyB0eXBlc2NyaXB0IGdlbmVyaWNzIGJyZWFraW5nXG4gICAgY29uc3QgYXJnczogYW55ID0gcmVzdC5zbGljZSgwLCByZXN0Lmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IGtleSA9IGVuZHBvaW50LmtleSguLi5hcmdzKTtcblxuICAgIGNvbnN0IG1ldGEgPSBzZWxlY3RNZXRhKHN0YXRlLCBrZXkpO1xuICAgIGNvbnN0IGVycm9yID0gc3RhdGUuZW5kcG9pbnRzW2tleV07XG5cbiAgICBpZiAoZXJyb3IgIT09IHVuZGVmaW5lZCAmJiBtZXRhPy5lcnJvclBvbGljeSA9PT0gJ3NvZnQnKSByZXR1cm47XG5cbiAgICByZXR1cm4gbWV0YT8uZXJyb3IgYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIChnbG9iYWxseSByZWZlcmVudGlhbGx5IHN0YWJsZSkgcmVzcG9uc2UgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQvYXJncyBwYWlyIGZyb20gc3RhdGUgZ2l2ZW4uXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UmVzcG9uc2VcbiAgICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDpcbiAgICAgIHwgcmVhZG9ubHkgW251bGwsIFN0YXRlPHVua25vd24+XVxuICAgICAgfCByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgU3RhdGU8dW5rbm93bj5dXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLihyZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdKSxcbiAgICAgIFN0YXRlPHVua25vd24+LFxuICAgIF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlKFxuICAgIGVuZHBvaW50OiBFbmRwb2ludEludGVyZmFjZSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4udW5rbm93bltdLCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IHVua25vd247XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH0ge1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPHVua25vd24+O1xuICAgIC8vIHRoaXMgaXMgdHlwZXNjcmlwdCBnZW5lcmljcyBicmVha2luZ1xuICAgIGNvbnN0IGFyZ3M6IGFueSA9IHJlc3RcbiAgICAgIC5zbGljZSgwLCByZXN0Lmxlbmd0aCAtIDEpXG4gICAgICAvLyBoYW5kbGUgRm9ybURhdGFcbiAgICAgIC5tYXAoZW5zdXJlUG9qbyk7XG4gICAgY29uc3QgaXNBY3RpdmUgPSBhcmdzLmxlbmd0aCAhPT0gMSB8fCBhcmdzWzBdICE9PSBudWxsO1xuICAgIGNvbnN0IGtleSA9IGlzQWN0aXZlID8gZW5kcG9pbnQua2V5KC4uLmFyZ3MpIDogJyc7XG4gICAgY29uc3QgY2FjaGVFbmRwb2ludHMgPSBpc0FjdGl2ZSA/IHN0YXRlLmVuZHBvaW50c1trZXldIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNjaGVtYSA9IGVuZHBvaW50LnNjaGVtYTtcbiAgICBjb25zdCBtZXRhID0gc2VsZWN0TWV0YShzdGF0ZSwga2V5KTtcbiAgICBsZXQgZXhwaXJlc0F0ID0gbWV0YT8uZXhwaXJlc0F0O1xuICAgIC8vIGlmIHdlIGhhdmUgbm8gZW5kcG9pbnQgZW50cnksIGFuZCBvdXIgZW5kcG9pbnQgaGFzIGEgc2NoZW1hIC0gdHJ5IHF1ZXJ5aW5nIHRoZSBzdG9yZVxuICAgIGNvbnN0IHNob3VsZFF1ZXJ5ID0gY2FjaGVFbmRwb2ludHMgPT09IHVuZGVmaW5lZCAmJiBzY2hlbWEgIT09IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGlucHV0ID1cbiAgICAgIHNob3VsZFF1ZXJ5ID9cbiAgICAgICAgLy8gbm90aGluZyBpbiBlbmRwb2ludHMgY2FjaGUsIHNvIHRyeSBxdWVyeWluZyBpZiB3ZSBoYXZlIGEgc2NoZW1hIHRvIGRvIHNvXG4gICAgICAgIHRoaXMubWVtby5idWlsZFF1ZXJ5S2V5KFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgYXJncyxcbiAgICAgICAgICBzdGF0ZS5lbnRpdGllcyBhcyBhbnksXG4gICAgICAgICAgc3RhdGUuaW5kZXhlcyxcbiAgICAgICAgKVxuICAgICAgOiBjYWNoZUVuZHBvaW50cztcblxuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIC8vIHdoZW4gbm90IGFjdGl2ZSBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeSBpbnB1dCB3aXRob3V0IGRlbm9ybWFsaXppbmdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IGlucHV0IGFzIGFueSxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXMuVmFsaWQsXG4gICAgICAgIGV4cGlyZXNBdDogSW5maW5pdHksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICBpZiAoc2hvdWxkUXVlcnkpIHtcbiAgICAgIGlzSW52YWxpZCA9ICF2YWxpZGF0ZVF1ZXJ5S2V5KGlucHV0KTtcbiAgICB9IGVsc2UgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYUhhc0VudGl0eShzY2hlbWEpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBjYWNoZUVuZHBvaW50cyxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOlxuICAgICAgICAgIG1ldGE/LmludmFsaWRhdGVkID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgICA6IGNhY2hlRW5kcG9pbnRzICYmICFlbmRwb2ludC5pbnZhbGlkSWZTdGFsZSA/IEV4cGlyeVN0YXR1cy5WYWxpZFxuICAgICAgICAgIDogRXhwaXJ5U3RhdHVzLkludmFsaWRJZlN0YWxlLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdCB8fCAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBzZWNvbmQgYXJndW1lbnQgaXMgZmFsc2UgaWYgYW55IGVudGl0aWVzIGFyZSBtaXNzaW5nXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IHRoaXMubWVtby5kZW5vcm1hbGl6ZShcbiAgICAgIGlucHV0LFxuICAgICAgc2NoZW1hLFxuICAgICAgc3RhdGUuZW50aXRpZXMsXG4gICAgICBhcmdzLFxuICAgICkgYXMgeyBkYXRhOiBhbnk7IHBhdGhzOiBFbnRpdHlQYXRoW10gfTtcblxuICAgIC8vIG5vdGU6IGlzSW52YWxpZCBjYW4gb25seSBiZSB0cnVlIGlmIHNob3VsZFF1ZXJ5IGlzIHRydWVcbiAgICBpZiAoIWV4cGlyZXNBdCAmJiBpc0ludmFsaWQpIGV4cGlyZXNBdCA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRTY2hlbWFSZXNwb25zZShcbiAgICAgIGRhdGEsXG4gICAgICBwYXRocyxcbiAgICAgIHN0YXRlLmVudGl0eU1ldGEsXG4gICAgICBleHBpcmVzQXQsXG4gICAgICBlbmRwb2ludC5pbnZhbGlkSWZTdGFsZSB8fCBpc0ludmFsaWQsXG4gICAgICBtZXRhLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyB0aGUgc3RvcmUgZm9yIGEgUXVlcmFibGUgc2NoZW1hXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLlNjaGVtYUFyZ3M8Uz4sXG4gICAgICBQaWNrPFN0YXRlPHVua25vd24+LCAnZW50aXRpZXMnIHwgJ2VudGl0eU1ldGEnPixcbiAgICBdXG4gICk6IERlbm9ybWFsaXplTnVsbGFibGU8Uz4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPGFueT47XG4gICAgLy8gdGhpcyBpcyB0eXBlc2NyaXB0IGdlbmVyaWNzIGJyZWFraW5nXG4gICAgY29uc3QgYXJnczogYW55ID0gcmVzdFxuICAgICAgLnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSlcbiAgICAgIC5tYXAoZW5zdXJlUG9qbykgYXMgU2NoZW1hQXJnczxTPjtcblxuICAgIC8vIE5PVEU6IGRpZmZlcmVudCBvcmRlcnMgY2FuIHJlc3VsdCBpbiBjYWNoZSBidXN0aW5nIGhlcmU7IGJ1dCBzaW5jZSBpdCdzIGp1c3QgYSBwZXJmIHBlbmFsdHkgd2Ugd2lsbCBhbGxvdyBmb3Igbm93XG4gICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcy5tZW1vLnF1ZXJ5KFxuICAgICAga2V5LFxuICAgICAgc2NoZW1hLFxuICAgICAgYXJncyxcbiAgICAgIHN0YXRlLmVudGl0aWVzIGFzIGFueSxcbiAgICAgIHN0YXRlLmluZGV4ZXMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2NoZW1hUmVzcG9uc2U8VD4oXG4gICAgZGF0YTogVCxcbiAgICBwYXRoczogRW50aXR5UGF0aFtdLFxuICAgIGVudGl0eU1ldGE6IFN0YXRlPHVua25vd24+WydlbnRpdHlNZXRhJ10sXG4gICAgZXhwaXJlc0F0OiBudW1iZXIsXG4gICAgaW52YWxpZElmU3RhbGU6IGJvb2xlYW4sXG4gICAgbWV0YTogeyBlcnJvcj86IHVua25vd247IGludmFsaWRhdGVkPzogdW5rbm93biB9ID0ge30sXG4gICk6IHtcbiAgICBkYXRhOiBUO1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICBjb25zdCBpbnZhbGlkRGVub3JtYWxpemUgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG5cbiAgICAvLyBmYWxsYmFjayB0byBlbnRpdHkgZXhwaXJ5IHRpbWVcbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJlc0F0KHBhdGhzLCBlbnRpdHlNZXRhKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9jb25jZXB0cy9leHBpcnktcG9saWN5I2V4cGlyeS1zdGF0dXNcbiAgICAvLyB3ZSBkb24ndCB0cmFjayB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN0YWxlIG9yIGZyZXNoIGJlY2F1c2UgdGhhdCBpcyB0aWVkIHRvIHRyaWdnZXJpbmdcbiAgICAvLyBjb25kaXRpb25zXG4gICAgY29uc3QgZXhwaXJ5U3RhdHVzID1cbiAgICAgIG1ldGE/LmludmFsaWRhdGVkIHx8IChpbnZhbGlkRGVub3JtYWxpemUgJiYgIW1ldGE/LmVycm9yKSA/XG4gICAgICAgIEV4cGlyeVN0YXR1cy5JbnZhbGlkXG4gICAgICA6IGludmFsaWREZW5vcm1hbGl6ZSB8fCBpbnZhbGlkSWZTdGFsZSA/IEV4cGlyeVN0YXR1cy5JbnZhbGlkSWZTdGFsZVxuICAgICAgOiBFeHBpcnlTdGF0dXMuVmFsaWQ7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcnlTdGF0dXMsIGV4cGlyZXNBdCB9O1xuICB9XG59XG5cbi8vIGJlbmNobWFyazogaHR0cHM6Ly93d3cubWVhc3VyZXRoYXQubmV0L0JlbmNobWFya3MvU2hvdy8yNDY5MS8wL21pbi1yZWR1Y2VyLXZzLWltcGVyYXRpdmUtd2l0aC1wYXRoc1xuLy8gZWFybGllc3QgZXhwaXJ5IGRpY3RhdGVzIGFnZVxuZnVuY3Rpb24gZW50aXR5RXhwaXJlc0F0KFxuICBwYXRoczogRW50aXR5UGF0aFtdLFxuICBlbnRpdHlNZXRhOiB7XG4gICAgcmVhZG9ubHkgW2VudGl0eUtleTogc3RyaW5nXToge1xuICAgICAgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiB7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyOyAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgRGF0YVByb3ZpZGVyXG4gICAgICB9O1xuICAgIH07XG4gIH0sXG4pIHtcbiAgbGV0IGV4cGlyZXNBdCA9IEluZmluaXR5O1xuICBmb3IgKGNvbnN0IHsgcGssIGtleSB9IG9mIHBhdGhzKSB7XG4gICAgY29uc3QgZW50aXR5RXhwaXJ5ID0gZW50aXR5TWV0YVtrZXldPy5bcGtdPy5leHBpcmVzQXQ7XG4gICAgLy8gZXhwaXJlc0F0IHdpbGwgYWx3YXlzIHJlc29sdmUgdG8gZmFsc2Ugd2l0aCBhbnkgY29tcGFyaXNvblxuICAgIGlmIChlbnRpdHlFeHBpcnkgPCBleHBpcmVzQXQpIGV4cGlyZXNBdCA9IGVudGl0eUV4cGlyeTtcbiAgfVxuICByZXR1cm4gZXhwaXJlc0F0O1xufVxuXG4vKiogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNjaGVtYSBoYXMgYW55IGVudGl0aWVzLlxuICpcbiAqIFdpdGhvdXQgZW50aXRpZXMsIGRlbm9ybWFsaXphdGlvbiBpcyBub3QgbmVlZGVkLCBhbmQgcmVzdWx0cyBzaG91bGQgbm90IGJlIHF1ZXJpZWQuXG4gKi9cbmZ1bmN0aW9uIHNjaGVtYUhhc0VudGl0eShzY2hlbWE6IFNjaGVtYSk6IGJvb2xlYW4ge1xuICBpZiAoaXNFbnRpdHkoc2NoZW1hKSkgcmV0dXJuIHRydWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgc2NoZW1hSGFzRW50aXR5KHNjaGVtYVswXSk7XG4gIGlmIChzY2hlbWEgJiYgKHR5cGVvZiBzY2hlbWEgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBzY2hlbWEgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgY29uc3QgbmVzdGVkU2NoZW1hID1cbiAgICAgICdzY2hlbWEnIGluIHNjaGVtYSA/IChzY2hlbWEuc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIFNjaGVtYT4pIDogc2NoZW1hO1xuICAgIGlmICh0eXBlb2YgbmVzdGVkU2NoZW1hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gc2NoZW1hSGFzRW50aXR5KG5lc3RlZFNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG5lc3RlZFNjaGVtYSkuc29tZSh4ID0+IHNjaGVtYUhhc0VudGl0eSh4KSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgYWJvcnQgPSBuZXcgQWJvcnRPcHRpbWlzdGljKCk7XG5cbiAgcHJpdmF0ZSBzdGF0ZTogU3RhdGU8VD47XG4gIHByaXZhdGUgY29udHJvbGxlcjogQ29udHJvbGxlcjtcbiAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGFib3J0ID0gU25hcHNob3QuYWJvcnQ7XG5cbiAgY29uc3RydWN0b3IoY29udHJvbGxlcjogQ29udHJvbGxlciwgc3RhdGU6IFN0YXRlPFQ+LCBmZXRjaGVkQXQgPSAwKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgdGhpcy5mZXRjaGVkQXQgPSBmZXRjaGVkQXQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIERhdGEgQWNjZXNzICoqKioqKioqKioqKioqKi9cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFJlc3BvbnNlICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRFcnJvciAqL1xuICBnZXRFcnJvcjxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5Jz4+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcjxFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+PihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuZ2V0RXJyb3IoZW5kcG9pbnQsIC4uLmFyZ3MsIHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlZCBtZW1vaXplZCB2YWx1ZSBmb3IgYW55IFF1ZXJhYmxlIHNjaGVtYVxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRcbiAgICovXG4gIGdldDxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgICBzY2hlbWE6IFMsXG4gICAgLi4uYXJnczogU2NoZW1hQXJnczxTPlxuICApOiBEZW5vcm1hbGl6ZU51bGxhYmxlPFM+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldChzY2hlbWEsIC4uLmFyZ3MsIHRoaXMuc3RhdGUpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQVFBLFNBQ0VBLFlBQVksRUFNWkMsU0FBUyxFQUNUQyxRQUFRLEVBQ1JDLFdBQVcsRUFDWEMsZ0JBQWdCLFFBQ1gsd0JBQXdCO0FBRS9CLE9BQU9DLGVBQWUsTUFBTSxzQkFBc0I7QUFDbEQsT0FBT0MsZUFBZSxNQUFNLHNCQUFzQjtBQUNsRCxPQUFPQyxXQUFXLE1BQU0sa0JBQWtCO0FBQzFDLE9BQU9DLGdCQUFnQixNQUFNLHVCQUF1QjtBQUNwRCxPQUFPQyxtQkFBbUIsTUFBTSwwQkFBMEI7QUFDMUQsT0FBT0MsV0FBVyxNQUFNLGtCQUFrQjtBQUMxQyxPQUFPQyxTQUFTLE1BQU0sZ0JBQWdCO0FBQ3RDLE9BQU9DLGlCQUFpQixNQUFNLHdCQUF3QjtBQUN0RCxTQUNFQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixRQUNiLHlCQUF5QjtBQUNoQyxPQUFPQyxVQUFVLE1BQU0saUJBQWlCO0FBRXhDLFNBQVNDLFlBQVksUUFBUSxtQ0FBbUM7QUFDaEUsT0FBT0MsVUFBVSxNQUFNLHdCQUF3QjtBQVkvQyxNQUFNQyxhQUFhLEdBQUlDLE1BQWUsSUFBb0I7RUFDeEQsTUFBTSxJQUFJQyxLQUFLLENBQ2IsaUVBQWlFLEdBQy9ELHlEQUNKLENBQUM7QUFDSCxDQUFDO0FBQ0QsTUFBTUMsVUFBVSxHQUFHQSxDQUFBLEtBQXNCO0VBQ3ZDO0VBQ0E7RUFDQSxPQUFPTCxZQUFZO0FBQ3JCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1NLFVBQVUsQ0FFN0I7RUFDQTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztFQUVFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFNRUMsV0FBV0Es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
@@ -1,20 +1,8 @@
1
- import type { EndpointInterface, ResolveType } from '@data-client/normalizr';
2
- import { EndpointUpdateFunction } from './types.js';
1
+ import type { Queryable, SchemaArgs } from '@data-client/normalizr';
3
2
  import type { SetAction } from '../types.js';
4
- export default function createSet<E extends EndpointInterface & {
5
- update?: EndpointUpdateFunction<E>;
6
- }>(endpoint: E, options: {
7
- args: readonly [...Parameters<E>];
8
- response: Error;
3
+ export default function createSet<S extends Queryable>(schema: S, { args, fetchedAt, value, }: {
4
+ args: readonly [...SchemaArgs<S>];
5
+ value: any;
9
6
  fetchedAt?: number;
10
- error: true;
11
- }): SetAction<E>;
12
- export default function createSet<E extends EndpointInterface & {
13
- update?: EndpointUpdateFunction<E>;
14
- }>(endpoint: E, options: {
15
- args: readonly [...Parameters<E>];
16
- response: ResolveType<E>;
17
- fetchedAt?: number;
18
- error?: false;
19
- }): SetAction<E>;
7
+ }): SetAction<S>;
20
8
  //# sourceMappingURL=createSet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createSet.d.ts","sourceRoot":"","sources":["../../src/controller/createSet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,CAAC,SAAS,iBAAiB,GAAG;IAC5B,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;CACpC,EAED,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE;IACP,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;CACb,GACA,SAAS,CAAC,CAAC,CAAC,CAAC;AAEhB,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,CAAC,SAAS,iBAAiB,GAAG;IAC5B,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;CACpC,EAED,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE;IACP,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GACA,SAAS,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"createSet.d.ts","sourceRoot":"","sources":["../../src/controller/createSet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpE,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAC,SAAS,SAAS,EACnD,MAAM,EAAE,CAAC,EACT,EACE,IAAI,EACJ,SAAS,EACT,KAAK,GACN,EAAE;IACD,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,SAAS,CAAC,CAAC,CAAC,CAqBd"}
@@ -1,13 +1,11 @@
1
1
  import ensurePojo from './ensurePojo.js';
2
2
  import { SET_TYPE } from '../actionTypes.js';
3
- export default function createSet(endpoint, {
3
+ export default function createSet(schema, {
4
4
  args,
5
5
  fetchedAt,
6
- response,
7
- error = false
6
+ value
8
7
  }) {
9
- var _endpoint$errorExpiry, _endpoint$dataExpiryL;
10
- const expiryLength = error ? (_endpoint$errorExpiry = endpoint.errorExpiryLength) != null ? _endpoint$errorExpiry : 1000 : (_endpoint$dataExpiryL = endpoint.dataExpiryLength) != null ? _endpoint$dataExpiryL : 60000;
8
+ const expiryLength = 60000;
11
9
  /* istanbul ignore next */
12
10
  if (process.env.NODE_ENV === 'development' && expiryLength < 0) {
13
11
  throw new Error('Negative expiry length are not allowed.');
@@ -17,16 +15,14 @@ export default function createSet(endpoint, {
17
15
  args: args.map(ensurePojo),
18
16
  fetchedAt: fetchedAt != null ? fetchedAt : now,
19
17
  date: now,
20
- expiresAt: now + expiryLength,
21
- key: endpoint.key(...args)
18
+ expiresAt: now + expiryLength
22
19
  };
23
20
  const action = {
24
21
  type: SET_TYPE,
25
- payload: response,
26
- endpoint: endpoint,
22
+ value,
23
+ schema,
27
24
  meta
28
25
  };
29
- if (error) action.error = true;
30
26
  return action;
31
27
  }
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnN1cmVQb2pvIiwiU0VUX1RZUEUiLCJjcmVhdGVTZXQiLCJlbmRwb2ludCIsImFyZ3MiLCJmZXRjaGVkQXQiLCJyZXNwb25zZSIsImVycm9yIiwiX2VuZHBvaW50JGVycm9yRXhwaXJ5IiwiX2VuZHBvaW50JGRhdGFFeHBpcnlMIiwiZXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRXJyb3IiLCJub3ciLCJEYXRlIiwibWV0YSIsIm1hcCIsImRhdGUiLCJleHBpcmVzQXQiLCJrZXkiLCJhY3Rpb24iLCJ0eXBlIiwicGF5bG9hZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL2NyZWF0ZVNldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlLCBSZXNvbHZlVHlwZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgZW5zdXJlUG9qbyBmcm9tICcuL2Vuc3VyZVBvam8uanMnO1xuaW1wb3J0IHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgU0VUX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNldEFjdGlvbiwgU2V0TWV0YSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU2V0PFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgfSxcbj4oXG4gIGVuZHBvaW50OiBFLFxuICBvcHRpb25zOiB7XG4gICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgIHJlc3BvbnNlOiBFcnJvcjtcbiAgICBmZXRjaGVkQXQ/OiBudW1iZXI7XG4gICAgZXJyb3I6IHRydWU7XG4gIH0sXG4pOiBTZXRBY3Rpb248RT47XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldDxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gIH0sXG4+KFxuICBlbmRwb2ludDogRSxcbiAgb3B0aW9uczoge1xuICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICByZXNwb25zZTogUmVzb2x2ZVR5cGU8RT47XG4gICAgZmV0Y2hlZEF0PzogbnVtYmVyO1xuICAgIGVycm9yPzogZmFsc2U7XG4gIH0sXG4pOiBTZXRBY3Rpb248RT47XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldDxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gIH0sXG4+KFxuICBlbmRwb2ludDogRSxcbiAge1xuICAgIGFyZ3MsXG4gICAgZmV0Y2hlZEF0LFxuICAgIHJlc3BvbnNlLFxuICAgIGVycm9yID0gZmFsc2UsXG4gIH06IHtcbiAgICBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl07XG4gICAgcmVzcG9uc2U6IGFueTtcbiAgICBmZXRjaGVkQXQ/OiBudW1iZXI7XG4gICAgZXJyb3I/OiBib29sZWFuO1xuICB9LFxuKTogU2V0QWN0aW9uPEU+IHtcbiAgY29uc3QgZXhwaXJ5TGVuZ3RoOiBudW1iZXIgPVxuICAgIGVycm9yID9cbiAgICAgIGVuZHBvaW50LmVycm9yRXhwaXJ5TGVuZ3RoID8/IDEwMDBcbiAgICA6IGVuZHBvaW50LmRhdGFFeHBpcnlMZW5ndGggPz8gNjAwMDA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJiBleHBpcnlMZW5ndGggPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOZWdhdGl2ZSBleHBpcnkgbGVuZ3RoIGFyZSBub3QgYWxsb3dlZC4nKTtcbiAgfVxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBtZXRhOiBTZXRNZXRhID0ge1xuICAgIGFyZ3M6IGFyZ3MubWFwKGVuc3VyZVBvam8pLFxuICAgIGZldGNoZWRBdDogZmV0Y2hlZEF0ID8/IG5vdyxcbiAgICBkYXRlOiBub3csXG4gICAgZXhwaXJlc0F0OiBub3cgKyBleHBpcnlMZW5ndGgsXG4gICAga2V5OiBlbmRwb2ludC5rZXkoLi4uYXJncyksXG4gIH07XG5cbiAgY29uc3QgYWN0aW9uOiBTZXRBY3Rpb248RT4gPSB7XG4gICAgdHlwZTogU0VUX1RZUEUsXG4gICAgcGF5bG9hZDogcmVzcG9uc2UsXG4gICAgZW5kcG9pbnQ6IGVuZHBvaW50LFxuICAgIG1ldGEsXG4gIH07XG4gIGlmIChlcnJvcikgKGFjdGlvbiBhcyBhbnkpLmVycm9yID0gdHJ1ZTtcbiAgcmV0dXJuIGFjdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBT0EsVUFBVSxNQUFNLGlCQUFpQjtBQUV4QyxTQUFTQyxRQUFRLFFBQVEsbUJBQW1CO0FBK0I1QyxlQUFlLFNBQVNDLFNBQVNBLENBSy9CQyxRQUFXLEVBQ1g7RUFDRUMsSUFBSTtFQUNKQyxTQUFTO0VBQ1RDLFFBQVE7RUFDUkMsS0FBSyxHQUFHO0FBTVYsQ0FBQyxFQUNhO0VBQUEsSUFBQUMscUJBQUEsRUFBQUMscUJBQUE7RUFDZCxNQUFNQyxZQUFvQixHQUN4QkgsS0FBSyxJQUFBQyxxQkFBQSxHQUNITCxRQUFRLENBQUNRLGlCQUFpQixZQUFBSCxxQkFBQSxHQUFJLElBQUksSUFBQUMscUJBQUEsR0FDbENOLFFBQVEsQ0FBQ1MsZ0JBQWdCLFlBQUFILHFCQUFBLEdBQUksS0FBSztFQUN0QztFQUNBLElBQUlJLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssYUFBYSxJQUFJTCxZQUFZLEdBQUcsQ0FBQyxFQUFFO0lBQzlELE1BQU0sSUFBSU0sS0FBSyxDQUFDLHlDQUF5QyxDQUFDO0VBQzVEO0VBQ0EsTUFBTUMsR0FBRyxHQUFHQyxJQUFJLENBQUNELEdBQUcsQ0FBQyxDQUFDO0VBQ3RCLE1BQU1FLElBQWEsR0FBRztJQUNwQmYsSUFBSSxFQUFFQSxJQUFJLENBQUNnQixHQUFHLENBQUNwQixVQUFVLENBQUM7SUFDMUJLLFNBQVMsRUFBRUEsU0FBUyxXQUFUQSxTQUFTLEdBQUlZLEdBQUc7SUFDM0JJLElBQUksRUFBRUosR0FBRztJQUNUSyxTQUFTLEVBQUVMLEdBQUcsR0FBR1AsWUFBWTtJQUM3QmEsR0FBRyxFQUFFcEIsUUFBUSxDQUFDb0IsR0FBRyxDQUFDLEdBQUduQixJQUFJO0VBQzNCLENBQUM7RUFFRCxNQUFNb0IsTUFBb0IsR0FBRztJQUMzQkMsSUFBSSxFQUFFeEIsUUFBUTtJQUNkeUIsT0FBTyxFQUFFcEIsUUFBUTtJQUNqQkgsUUFBUSxFQUFFQSxRQUFRO0lBQ2xCZ0I7RUFDRixDQUFDO0VBQ0QsSUFBSVosS0FBSyxFQUFHaUIsTUFBTSxDQUFTakIsS0FBSyxHQUFHLElBQUk7RUFDdkMsT0FBT2lCLE1BQU07QUFDZiIsImlnbm9yZUxpc3QiOltdfQ==
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnN1cmVQb2pvIiwiU0VUX1RZUEUiLCJjcmVhdGVTZXQiLCJzY2hlbWEiLCJhcmdzIiwiZmV0Y2hlZEF0IiwidmFsdWUiLCJleHBpcnlMZW5ndGgiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJFcnJvciIsIm5vdyIsIkRhdGUiLCJtZXRhIiwibWFwIiwiZGF0ZSIsImV4cGlyZXNBdCIsImFjdGlvbiIsInR5cGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVTZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBRdWVyeWFibGUsIFNjaGVtYUFyZ3MgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IGVuc3VyZVBvam8gZnJvbSAnLi9lbnN1cmVQb2pvLmpzJztcbmltcG9ydCB7IFNFVF9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXRBY3Rpb24sIFNldE1ldGEgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldDxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgc2NoZW1hOiBTLFxuICB7XG4gICAgYXJncyxcbiAgICBmZXRjaGVkQXQsXG4gICAgdmFsdWUsXG4gIH06IHtcbiAgICBhcmdzOiByZWFkb25seSBbLi4uU2NoZW1hQXJnczxTPl07XG4gICAgdmFsdWU6IGFueTtcbiAgICBmZXRjaGVkQXQ/OiBudW1iZXI7XG4gIH0sXG4pOiBTZXRBY3Rpb248Uz4ge1xuICBjb25zdCBleHBpcnlMZW5ndGg6IG51bWJlciA9IDYwMDAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgZXhwaXJ5TGVuZ3RoIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTmVnYXRpdmUgZXhwaXJ5IGxlbmd0aCBhcmUgbm90IGFsbG93ZWQuJyk7XG4gIH1cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgbWV0YTogU2V0TWV0YSA9IHtcbiAgICBhcmdzOiBhcmdzLm1hcChlbnN1cmVQb2pvKSxcbiAgICBmZXRjaGVkQXQ6IGZldGNoZWRBdCA/PyBub3csXG4gICAgZGF0ZTogbm93LFxuICAgIGV4cGlyZXNBdDogbm93ICsgZXhwaXJ5TGVuZ3RoLFxuICB9O1xuXG4gIGNvbnN0IGFjdGlvbjogU2V0QWN0aW9uPFM+ID0ge1xuICAgIHR5cGU6IFNFVF9UWVBFLFxuICAgIHZhbHVlLFxuICAgIHNjaGVtYSxcbiAgICBtZXRhLFxuICB9O1xuICByZXR1cm4gYWN0aW9uO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxVQUFVLE1BQU0saUJBQWlCO0FBQ3hDLFNBQVNDLFFBQVEsUUFBUSxtQkFBbUI7QUFHNUMsZUFBZSxTQUFTQyxTQUFTQSxDQUMvQkMsTUFBUyxFQUNUO0VBQ0VDLElBQUk7RUFDSkMsU0FBUztFQUNUQztBQUtGLENBQUMsRUFDYTtFQUNkLE1BQU1DLFlBQW9CLEdBQUcsS0FBSztFQUNsQztFQUNBLElBQUlDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssYUFBYSxJQUFJSCxZQUFZLEdBQUcsQ0FBQyxFQUFFO0lBQzlELE1BQU0sSUFBSUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDO0VBQzVEO0VBQ0EsTUFBTUMsR0FBRyxHQUFHQyxJQUFJLENBQUNELEdBQUcsQ0FBQyxDQUFDO0VBQ3RCLE1BQU1FLElBQWEsR0FBRztJQUNwQlYsSUFBSSxFQUFFQSxJQUFJLENBQUNXLEdBQUcsQ0FBQ2YsVUFBVSxDQUFDO0lBQzFCSyxTQUFTLEVBQUVBLFNBQVMsV0FBVEEsU0FBUyxHQUFJTyxHQUFHO0lBQzNCSSxJQUFJLEVBQUVKLEdBQUc7SUFDVEssU0FBUyxFQUFFTCxHQUFHLEdBQUdMO0VBQ25CLENBQUM7RUFFRCxNQUFNVyxNQUFvQixHQUFHO0lBQzNCQyxJQUFJLEVBQUVsQixRQUFRO0lBQ2RLLEtBQUs7SUFDTEgsTUFBTTtJQUNOVztFQUNGLENBQUM7RUFDRCxPQUFPSSxNQUFNO0FBQ2YiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,20 @@
1
+ import type { EndpointInterface, ResolveType } from '@data-client/normalizr';
2
+ import { EndpointUpdateFunction } from './types.js';
3
+ import type { SetResponseAction } from '../types.js';
4
+ export default function createSetResponse<E extends EndpointInterface & {
5
+ update?: EndpointUpdateFunction<E>;
6
+ }>(endpoint: E, options: {
7
+ args: readonly [...Parameters<E>];
8
+ response: Error;
9
+ fetchedAt?: number;
10
+ error: true;
11
+ }): SetResponseAction<E>;
12
+ export default function createSetResponse<E extends EndpointInterface & {
13
+ update?: EndpointUpdateFunction<E>;
14
+ }>(endpoint: E, options: {
15
+ args: readonly [...Parameters<E>];
16
+ response: ResolveType<E>;
17
+ fetchedAt?: number;
18
+ error?: false;
19
+ }): SetResponseAction<E>;
20
+ //# sourceMappingURL=createSetResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSetResponse.d.ts","sourceRoot":"","sources":["../../src/controller/createSetResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AAEtE,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,CAAC,SAAS,iBAAiB,GAAG;IAC5B,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;CACpC,EAED,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE;IACP,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;CACb,GACA,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAExB,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,CAAC,SAAS,iBAAiB,GAAG;IAC5B,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;CACpC,EAED,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE;IACP,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GACA,iBAAiB,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import ensurePojo from './ensurePojo.js';
2
+ import { SET_RESPONSE_TYPE } from '../actionTypes.js';
3
+ export default function createSetResponse(endpoint, {
4
+ args,
5
+ fetchedAt,
6
+ response,
7
+ error = false
8
+ }) {
9
+ var _endpoint$errorExpiry, _endpoint$dataExpiryL;
10
+ const expiryLength = error ? (_endpoint$errorExpiry = endpoint.errorExpiryLength) != null ? _endpoint$errorExpiry : 1000 : (_endpoint$dataExpiryL = endpoint.dataExpiryLength) != null ? _endpoint$dataExpiryL : 60000;
11
+ /* istanbul ignore next */
12
+ if (process.env.NODE_ENV === 'development' && expiryLength < 0) {
13
+ throw new Error('Negative expiry length are not allowed.');
14
+ }
15
+ const now = Date.now();
16
+ const meta = {
17
+ args: args.map(ensurePojo),
18
+ fetchedAt: fetchedAt != null ? fetchedAt : now,
19
+ date: now,
20
+ expiresAt: now + expiryLength,
21
+ key: endpoint.key(...args)
22
+ };
23
+ const action = {
24
+ type: SET_RESPONSE_TYPE,
25
+ payload: response,
26
+ endpoint: endpoint,
27
+ meta
28
+ };
29
+ if (error) action.error = true;
30
+ return action;
31
+ }
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnN1cmVQb2pvIiwiU0VUX1JFU1BPTlNFX1RZUEUiLCJjcmVhdGVTZXRSZXNwb25zZSIsImVuZHBvaW50IiwiYXJncyIsImZldGNoZWRBdCIsInJlc3BvbnNlIiwiZXJyb3IiLCJfZW5kcG9pbnQkZXJyb3JFeHBpcnkiLCJfZW5kcG9pbnQkZGF0YUV4cGlyeUwiLCJleHBpcnlMZW5ndGgiLCJlcnJvckV4cGlyeUxlbmd0aCIsImRhdGFFeHBpcnlMZW5ndGgiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJFcnJvciIsIm5vdyIsIkRhdGUiLCJtZXRhIiwibWFwIiwiZGF0ZSIsImV4cGlyZXNBdCIsImtleSIsImFjdGlvbiIsInR5cGUiLCJwYXlsb2FkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvY3JlYXRlU2V0UmVzcG9uc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbmRwb2ludEludGVyZmFjZSwgUmVzb2x2ZVR5cGUgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IGVuc3VyZVBvam8gZnJvbSAnLi9lbnN1cmVQb2pvLmpzJztcbmltcG9ydCB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IFNFVF9SRVNQT05TRV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXRSZXNwb25zZUFjdGlvbiwgU2V0UmVzcG9uc2VNZXRhIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTZXRSZXNwb25zZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gIH0sXG4+KFxuICBlbmRwb2ludDogRSxcbiAgb3B0aW9uczoge1xuICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICByZXNwb25zZTogRXJyb3I7XG4gICAgZmV0Y2hlZEF0PzogbnVtYmVyO1xuICAgIGVycm9yOiB0cnVlO1xuICB9LFxuKTogU2V0UmVzcG9uc2VBY3Rpb248RT47XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldFJlc3BvbnNlPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgfSxcbj4oXG4gIGVuZHBvaW50OiBFLFxuICBvcHRpb25zOiB7XG4gICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgIHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPjtcbiAgICBmZXRjaGVkQXQ/OiBudW1iZXI7XG4gICAgZXJyb3I/OiBmYWxzZTtcbiAgfSxcbik6IFNldFJlc3BvbnNlQWN0aW9uPEU+O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTZXRSZXNwb25zZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gIH0sXG4+KFxuICBlbmRwb2ludDogRSxcbiAge1xuICAgIGFyZ3MsXG4gICAgZmV0Y2hlZEF0LFxuICAgIHJlc3BvbnNlLFxuICAgIGVycm9yID0gZmFsc2UsXG4gIH06IHtcbiAgICBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl07XG4gICAgcmVzcG9uc2U6IGFueTtcbiAgICBmZXRjaGVkQXQ/OiBudW1iZXI7XG4gICAgZXJyb3I/OiBib29sZWFuO1xuICB9LFxuKTogU2V0UmVzcG9uc2VBY3Rpb248RT4ge1xuICBjb25zdCBleHBpcnlMZW5ndGg6IG51bWJlciA9XG4gICAgZXJyb3IgP1xuICAgICAgZW5kcG9pbnQuZXJyb3JFeHBpcnlMZW5ndGggPz8gMTAwMFxuICAgIDogZW5kcG9pbnQuZGF0YUV4cGlyeUxlbmd0aCA/PyA2MDAwMDtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmIGV4cGlyeUxlbmd0aCA8IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05lZ2F0aXZlIGV4cGlyeSBsZW5ndGggYXJlIG5vdCBhbGxvd2VkLicpO1xuICB9XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IG1ldGE6IFNldFJlc3BvbnNlTWV0YSA9IHtcbiAgICBhcmdzOiBhcmdzLm1hcChlbnN1cmVQb2pvKSxcbiAgICBmZXRjaGVkQXQ6IGZldGNoZWRBdCA/PyBub3csXG4gICAgZGF0ZTogbm93LFxuICAgIGV4cGlyZXNBdDogbm93ICsgZXhwaXJ5TGVuZ3RoLFxuICAgIGtleTogZW5kcG9pbnQua2V5KC4uLmFyZ3MpLFxuICB9O1xuXG4gIGNvbnN0IGFjdGlvbjogU2V0UmVzcG9uc2VBY3Rpb248RT4gPSB7XG4gICAgdHlwZTogU0VUX1JFU1BPTlNFX1RZUEUsXG4gICAgcGF5bG9hZDogcmVzcG9uc2UsXG4gICAgZW5kcG9pbnQ6IGVuZHBvaW50LFxuICAgIG1ldGEsXG4gIH07XG4gIGlmIChlcnJvcikgKGFjdGlvbiBhcyBhbnkpLmVycm9yID0gdHJ1ZTtcbiAgcmV0dXJuIGFjdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBT0EsVUFBVSxNQUFNLGlCQUFpQjtBQUV4QyxTQUFTQyxpQkFBaUIsUUFBUSxtQkFBbUI7QUErQnJELGVBQWUsU0FBU0MsaUJBQWlCQSxDQUt2Q0MsUUFBVyxFQUNYO0VBQ0VDLElBQUk7RUFDSkMsU0FBUztFQUNUQyxRQUFRO0VBQ1JDLEtBQUssR0FBRztBQU1WLENBQUMsRUFDcUI7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxxQkFBQTtFQUN0QixNQUFNQyxZQUFvQixHQUN4QkgsS0FBSyxJQUFBQyxxQkFBQSxHQUNITCxRQUFRLENBQUNRLGlCQUFpQixZQUFBSCxxQkFBQSxHQUFJLElBQUksSUFBQUMscUJBQUEsR0FDbENOLFFBQVEsQ0FBQ1MsZ0JBQWdCLFlBQUFILHFCQUFBLEdBQUksS0FBSztFQUN0QztFQUNBLElBQUlJLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssYUFBYSxJQUFJTCxZQUFZLEdBQUcsQ0FBQyxFQUFFO0lBQzlELE1BQU0sSUFBSU0sS0FBSyxDQUFDLHlDQUF5QyxDQUFDO0VBQzVEO0VBQ0EsTUFBTUMsR0FBRyxHQUFHQyxJQUFJLENBQUNELEdBQUcsQ0FBQyxDQUFDO0VBQ3RCLE1BQU1FLElBQXFCLEdBQUc7SUFDNUJmLElBQUksRUFBRUEsSUFBSSxDQUFDZ0IsR0FBRyxDQUFDcEIsVUFBVSxDQUFDO0lBQzFCSyxTQUFTLEVBQUVBLFNBQVMsV0FBVEEsU0FBUyxHQUFJWSxHQUFHO0lBQzNCSSxJQUFJLEVBQUVKLEdBQUc7SUFDVEssU0FBUyxFQUFFTCxHQUFHLEdBQUdQLFlBQVk7SUFDN0JhLEdBQUcsRUFBRXBCLFFBQVEsQ0FBQ29CLEdBQUcsQ0FBQyxHQUFHbkIsSUFBSTtFQUMzQixDQUFDO0VBRUQsTUFBTW9CLE1BQTRCLEdBQUc7SUFDbkNDLElBQUksRUFBRXhCLGlCQUFpQjtJQUN2QnlCLE9BQU8sRUFBRXBCLFFBQVE7SUFDakJILFFBQVEsRUFBRUEsUUFBUTtJQUNsQmdCO0VBQ0YsQ0FBQztFQUNELElBQUlaLEtBQUssRUFBR2lCLE1BQU0sQ0FBU2pCLEtBQUssR0FBRyxJQUFJO0VBQ3ZDLE9BQU9pQixNQUFNO0FBQ2YiLCJpZ25vcmVMaXN0IjpbXX0=
package/lib/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export { default as Controller } from './controller/Controller.js';
8
8
  export type { DataClientDispatch, GenericDispatch, } from './controller/Controller.js';
9
9
  export { default as createFetch } from './controller/createFetch.js';
10
10
  export { default as createSet } from './controller/createSet.js';
11
+ export { default as createSetResponse } from './controller/createSetResponse.js';
11
12
  export * from './controller/types.js';
12
13
  export * as actionTypes from './actionTypes.js';
13
14
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,EAAE,GACH,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,UAAU,GACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,YAAY,GACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEjE,cAAc,uBAAuB,CAAC;AACtC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAEhD,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,EAAE,GACH,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,UAAU,GACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,YAAY,GACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEjF,cAAc,uBAAuB,CAAC;AACtC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAEhD,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
package/lib/index.js CHANGED
@@ -10,10 +10,11 @@ export { default as applyManager } from './manager/applyManager.js';
10
10
  export { default as Controller } from './controller/Controller.js';
11
11
  export { default as createFetch } from './controller/createFetch.js';
12
12
  export { default as createSet } from './controller/createSet.js';
13
+ export { default as createSetResponse } from './controller/createSetResponse.js';
13
14
  export * from './controller/types.js';
14
15
  import * as _actionTypes from './actionTypes.js';
15
16
  export { _actionTypes as actionTypes };
16
17
  /* istanbul ignore next */
17
18
  export * from './types.js';
18
19
  export * from './manager/index.js';
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJoYXNPd24iLCJpdCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9JTlRFUk5BTF9fIiwiX19JTlRFUk5BTF9fIiwiRXhwaXJ5U3RhdHVzIiwiZGVmYXVsdCIsIk5ldHdvcmtNYW5hZ2VyIiwiUmVzZXRFcnJvciIsImNyZWF0ZVJlZHVjZXIiLCJpbml0aWFsU3RhdGUiLCJhcHBseU1hbmFnZXIiLCJDb250cm9sbGVyIiwiY3JlYXRlRmV0Y2giLCJjcmVhdGVTZXQiLCJfYWN0aW9uVHlwZXMiLCJhY3Rpb25UeXBlcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJPYmplY3QuaGFzT3duID1cbiAgT2JqZWN0Lmhhc093biB8fFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG4gIH07XG5cbmV4cG9ydCAqIGFzIF9fSU5URVJOQUxfXyBmcm9tICcuL2ludGVybmFsLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgTmV0d29ya0Vycm9yLFxuICBVbmtub3duRXJyb3IsXG4gIEVycm9yVHlwZXMsXG4gIFNjaGVtYSxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEVudGl0eUludGVyZmFjZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIERlbm9ybWFsaXplTnVsbGFibGUsXG4gIERlbm9ybWFsaXplLFxuICBOb3JtYWxpemUsXG4gIE5vcm1hbGl6ZU51bGxhYmxlLFxuICBGZXRjaEZ1bmN0aW9uLFxuICBFbmRwb2ludEV4dHJhT3B0aW9ucyxcbiAgUXVlcnlhYmxlLFxuICBTY2hlbWFBcmdzLFxuICBOSSxcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5leHBvcnQgeyBFeHBpcnlTdGF0dXMgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgTmV0d29ya01hbmFnZXIsXG4gIFJlc2V0RXJyb3IsXG59IGZyb20gJy4vbWFuYWdlci9OZXR3b3JrTWFuYWdlci5qcyc7XG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGNyZWF0ZVJlZHVjZXIsXG4gIGluaXRpYWxTdGF0ZSxcbn0gZnJvbSAnLi9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcHBseU1hbmFnZXIgfSBmcm9tICcuL21hbmFnZXIvYXBwbHlNYW5hZ2VyLmpzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuZXhwb3J0IHR5cGUge1xuICBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4gIEdlbmVyaWNEaXNwYXRjaCxcbn0gZnJvbSAnLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVGZXRjaCB9IGZyb20gJy4vY29udHJvbGxlci9jcmVhdGVGZXRjaC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZVNldCB9IGZyb20gJy4vY29udHJvbGxlci9jcmVhdGVTZXQuanMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuZXhwb3J0ICogYXMgYWN0aW9uVHlwZXMgZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL21hbmFnZXIvaW5kZXguanMnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxNQUFNLEdBQ1hELE1BQU0sQ0FBQ0MsTUFBTSxJQUNiLDBCQUEyQixTQUFTQSxNQUFNQSxDQUFDQyxFQUFFLEVBQUVDLEdBQUcsRUFBRTtFQUNsRCxPQUFPSCxNQUFNLENBQUNJLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLEVBQUUsRUFBRUMsR0FBRyxDQUFDO0FBQ3RELENBQUM7QUFBQyxZQUFBSSxXQUFBLE1BRTBCLGVBQWU7QUFBQSxTQUFBQSxXQUFBLElBQWpDQyxZQUFZO0FBbUJ4QixTQUFTQyxZQUFZLFFBQVEsd0JBQXdCO0FBQ3JELFNBQ0VDLE9BQU8sSUFBSUMsY0FBYyxFQUN6QkMsVUFBVSxRQUNMLDZCQUE2QjtBQUNwQyxTQUNFRixPQUFPLElBQUlHLGFBQWEsRUFDeEJDLFlBQVksUUFDUCxrQ0FBa0M7QUFDekMsU0FBU0osT0FBTyxJQUFJSyxZQUFZLFFBQVEsMkJBQTJCO0FBRW5FLFNBQVNMLE9BQU8sSUFBSU0sVUFBVSxRQUFRLDRCQUE0QjtBQUtsRSxTQUFTTixPQUFPLElBQUlPLFdBQVcsUUFBUSw2QkFBNkI7QUFDcEUsU0FBU1AsT0FBTyxJQUFJUSxTQUFTLFFBQVEsMkJBQTJCO0FBRWhFLGNBQWMsdUJBQXVCO0FBQUMsWUFBQUMsWUFBQSxNQUNULGtCQUFrQjtBQUFBLFNBQUFBLFlBQUEsSUFBbkNDLFdBQVc7QUFDdkI7QUFDQSxjQUFjLFlBQVk7QUFDMUIsY0FBYyxvQkFBb0IiLCJpZ25vcmVMaXN0IjpbXX0=
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJoYXNPd24iLCJpdCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9JTlRFUk5BTF9fIiwiX19JTlRFUk5BTF9fIiwiRXhwaXJ5U3RhdHVzIiwiZGVmYXVsdCIsIk5ldHdvcmtNYW5hZ2VyIiwiUmVzZXRFcnJvciIsImNyZWF0ZVJlZHVjZXIiLCJpbml0aWFsU3RhdGUiLCJhcHBseU1hbmFnZXIiLCJDb250cm9sbGVyIiwiY3JlYXRlRmV0Y2giLCJjcmVhdGVTZXQiLCJjcmVhdGVTZXRSZXNwb25zZSIsIl9hY3Rpb25UeXBlcyIsImFjdGlvblR5cGVzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIk9iamVjdC5oYXNPd24gPVxuICBPYmplY3QuaGFzT3duIHx8XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbiAgfTtcblxuZXhwb3J0ICogYXMgX19JTlRFUk5BTF9fIGZyb20gJy4vaW50ZXJuYWwuanMnO1xuZXhwb3J0IHR5cGUge1xuICBOZXR3b3JrRXJyb3IsXG4gIFVua25vd25FcnJvcixcbiAgRXJyb3JUeXBlcyxcbiAgU2NoZW1hLFxuICBFbmRwb2ludEludGVyZmFjZSxcbiAgRW50aXR5SW50ZXJmYWNlLFxuICBSZXNvbHZlVHlwZSxcbiAgRGVub3JtYWxpemVOdWxsYWJsZSxcbiAgRGVub3JtYWxpemUsXG4gIE5vcm1hbGl6ZSxcbiAgTm9ybWFsaXplTnVsbGFibGUsXG4gIEZldGNoRnVuY3Rpb24sXG4gIEVuZHBvaW50RXh0cmFPcHRpb25zLFxuICBRdWVyeWFibGUsXG4gIFNjaGVtYUFyZ3MsXG4gIE5JLFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcbmV4cG9ydCB7IEV4cGlyeVN0YXR1cyB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBOZXR3b3JrTWFuYWdlcixcbiAgUmVzZXRFcnJvcixcbn0gZnJvbSAnLi9tYW5hZ2VyL05ldHdvcmtNYW5hZ2VyLmpzJztcbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgY3JlYXRlUmVkdWNlcixcbiAgaW5pdGlhbFN0YXRlLFxufSBmcm9tICcuL3N0YXRlL3JlZHVjZXIvY3JlYXRlUmVkdWNlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFwcGx5TWFuYWdlciB9IGZyb20gJy4vbWFuYWdlci9hcHBseU1hbmFnZXIuanMnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIERhdGFDbGllbnREaXNwYXRjaCxcbiAgR2VuZXJpY0Rpc3BhdGNoLFxufSBmcm9tICcuL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZUZldGNoIH0gZnJvbSAnLi9jb250cm9sbGVyL2NyZWF0ZUZldGNoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlU2V0IH0gZnJvbSAnLi9jb250cm9sbGVyL2NyZWF0ZVNldC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZVNldFJlc3BvbnNlIH0gZnJvbSAnLi9jb250cm9sbGVyL2NyZWF0ZVNldFJlc3BvbnNlLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9sbGVyL3R5cGVzLmpzJztcbmV4cG9ydCAqIGFzIGFjdGlvblR5cGVzIGZyb20gJy4vYWN0aW9uVHlwZXMuanMnO1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYW5hZ2VyL2luZGV4LmpzJztcbiJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsTUFBTSxHQUNYRCxNQUFNLENBQUNDLE1BQU0sSUFDYiwwQkFBMkIsU0FBU0EsTUFBTUEsQ0FBQ0MsRUFBRSxFQUFFQyxHQUFHLEVBQUU7RUFDbEQsT0FBT0gsTUFBTSxDQUFDSSxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixFQUFFLEVBQUVDLEdBQUcsQ0FBQztBQUN0RCxDQUFDO0FBQUMsWUFBQUksV0FBQSxNQUUwQixlQUFlO0FBQUEsU0FBQUEsV0FBQSxJQUFqQ0MsWUFBWTtBQW1CeEIsU0FBU0MsWUFBWSxRQUFRLHdCQUF3QjtBQUNyRCxTQUNFQyxPQUFPLElBQUlDLGNBQWMsRUFDekJDLFVBQVUsUUFDTCw2QkFBNkI7QUFDcEMsU0FDRUYsT0FBTyxJQUFJRyxhQUFhLEVBQ3hCQyxZQUFZLFFBQ1Asa0NBQWtDO0FBQ3pDLFNBQVNKLE9BQU8sSUFBSUssWUFBWSxRQUFRLDJCQUEyQjtBQUVuRSxTQUFTTCxPQUFPLElBQUlNLFVBQVUsUUFBUSw0QkFBNEI7QUFLbEUsU0FBU04sT0FBTyxJQUFJTyxXQUFXLFFBQVEsNkJBQTZCO0FBQ3BFLFNBQVNQLE9BQU8sSUFBSVEsU0FBUyxRQUFRLDJCQUEyQjtBQUNoRSxTQUFTUixPQUFPLElBQUlTLGlCQUFpQixRQUFRLG1DQUFtQztBQUVoRixjQUFjLHVCQUF1QjtBQUFDLFlBQUFDLFlBQUEsTUFDVCxrQkFBa0I7QUFBQSxTQUFBQSxZQUFBLElBQW5DQyxXQUFXO0FBQ3ZCO0FBQ0EsY0FBYyxZQUFZO0FBQzFCLGNBQWMsb0JBQW9CIiwiaWdub3JlTGlzdCI6W119
@@ -1 +1 @@
1
- {"version":3,"file":"DevtoolsManager.d.ts","sourceRoot":"","sources":["../../src/manager/DevtoolsManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EAAE,cAAc,EAAE,CAAC;AAiE/B;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,OAAO;IACrD,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,UAAkB,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5C,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAM;IACxD,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,eAAe,SAAO;gBAGpB,MAAM,CAAC,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO;IA8DhD,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG;IAapC,yCAAyC;IACzC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAKtB,gDAAgD;IAChD,OAAO;IAEP;;OAEG;IACH,aAAa;CAGd"}
1
+ {"version":3,"file":"DevtoolsManager.d.ts","sourceRoot":"","sources":["../../src/manager/DevtoolsManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EAAE,cAAc,EAAE,CAAC;AAiE/B;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,OAAO;IACrD,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,UAAkB,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5C,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAM;IACxD,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,eAAe,SAAO;gBAGpB,MAAM,CAAC,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO;IAgEhD,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG;IAapC,yCAAyC;IACzC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAKtB,gDAAgD;IAChD,OAAO;IAEP;;OAEG;IACH,aAAa;CAGd"}
@@ -60,8 +60,10 @@ export default class DevToolsManager {
60
60
  /* istanbul ignore next */
61
61
  this.devTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__.connect({
62
62
  ...DEFAULT_CONFIG,
63
- config
63
+ ...config
64
64
  });
65
+ // we cut it in half so we should double so we don't lose
66
+ if (config != null && config.maxAge) this.maxBufferLength = config.maxAge * 2;
65
67
  if (process.env.NODE_ENV !== 'production' && this.devTools) {
66
68
  this.devTools.subscribe(msg => {
67
69
  switch (msg.type) {
@@ -114,7 +116,7 @@ export default class DevToolsManager {
114
116
  }
115
117
  handleAction(action, state) {
116
118
  if (this.started) {
117
- this.devTools.send(action, state, undefined, 'RDC');
119
+ this.devTools.send(action, state);
118
120
  } else {
119
121
  // avoid this getting too big in case this is long running
120
122
  // we cut in half so we aren't constantly reallocating
@@ -140,4 +142,4 @@ export default class DevToolsManager {
140
142
  return this.middleware;
141
143
  }
142
144
  }
143
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVSZWR1Y2VyIiwiREVGQVVMVF9DT05GSUciLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJfZ2xvYmFsVGhpcyRkb2N1bWVudCIsImV4dHJhRW5kcG9pbnRLZXlzIiwic2VyaWFsaXplRW5kcG9pbnQiLCJlbmRwb2ludCIsIl90b0pTT04iLCJfZW5kcG9pbnQkc2NoZW1hIiwic2VyaWFsIiwibmFtZSIsInNjaGVtYSIsInRvSlNPTiIsInNpZGVFZmZlY3QiLCJmb3JFYWNoIiwia2V5IiwiSEFTSU5UTCIsIkludGwiLCJnbG9iYWxUaGlzIiwiZG9jdW1lbnQiLCJ0aXRsZSIsImF1dG9QYXVzZSIsImFjdGlvblNhbml0aXplciIsImFjdGlvbiIsInNlcmlhbGl6ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJyZXBsYWNlciIsInZhbHVlIiwiaXNGaW5pdGUiLCJlbmRzV2l0aCIsIkRhdGVUaW1lRm9ybWF0IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsImZyYWN0aW9uYWxTZWNvbmREaWdpdHMiLCJmb3JtYXQiLCJEZXZUb29sc01hbmFnZXIiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInNraXBMb2dnaW5nIiwic3RhcnRlZCIsImFjdGlvbnMiLCJtYXhCdWZmZXJMZW5ndGgiLCJkZXZUb29scyIsIndpbmRvdyIsIl9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18iLCJjb25uZWN0Iiwic3Vic2NyaWJlIiwibXNnIiwidHlwZSIsImxlbmd0aCIsInN0YXRlIiwiaGFuZGxlQWN0aW9uIiwicGF5bG9hZCIsImNvbnRyb2xsZXIiLCJyZXNldEVudGlyZVN0b3JlIiwibWlkZGxld2FyZSIsInJlZHVjZXIiLCJnZXRTdGF0ZSIsIm5leHQiLCJyZXQiLCJ0aGVuIiwib3B0aW1pc3RpYyIsInJlZHVjZSIsInNlbmQiLCJzbGljZSIsInB1c2giLCJpbml0IiwiY2xlYW51cCIsImdldE1pZGRsZXdhcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9EZXZ0b29sc01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8taW5uZXItZGVjbGFyYXRpb25zICovXG5pbXBvcnQgdHlwZSB7IERldlRvb2xzQ29uZmlnIH0gZnJvbSAnLi9kZXZ0b29sc1R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gJy4vTG9nb3V0TWFuYWdlci5qcyc7XG5pbXBvcnQgeyBDb250cm9sbGVyLCBFbmRwb2ludEludGVyZmFjZSB9IGZyb20gJy4uL2luZGV4LmpzJztcbmltcG9ydCBjcmVhdGVSZWR1Y2VyIGZyb20gJy4uL3N0YXRlL3JlZHVjZXIvY3JlYXRlUmVkdWNlci5qcyc7XG5pbXBvcnQgdHlwZSB7IE1hbmFnZXIsIFN0YXRlLCBBY3Rpb25UeXBlcyB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBEZXZUb29sc0NvbmZpZyB9O1xuXG5sZXQgREVGQVVMVF9DT05GSUcgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgY29uc3QgZXh0cmFFbmRwb2ludEtleXMgPSBbXG4gICAgJ2RhdGFFeHBpcnlMZW5ndGgnLFxuICAgICdlcnJvckV4cGlyeUxlbmd0aCcsXG4gICAgJ2Vycm9yUG9saWN5JyxcbiAgICAnaW52YWxpZElmU3RhbGUnLFxuICAgICdwb2xsRnJlcXVlbmN5JyxcbiAgICAnZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlJyxcbiAgICAndXBkYXRlJyxcbiAgXTtcblxuICBmdW5jdGlvbiBzZXJpYWxpemVFbmRwb2ludChlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UpIHtcbiAgICBjb25zdCBzZXJpYWw6IGFueSA9IHtcbiAgICAgIG5hbWU6IGVuZHBvaW50Lm5hbWUsXG4gICAgICBzY2hlbWE6IChlbmRwb2ludC5zY2hlbWEgYXMgYW55KT8udG9KU09OPy4oKSA/PyBlbmRwb2ludC5zY2hlbWEsXG4gICAgICBzaWRlRWZmZWN0OiBlbmRwb2ludC5zaWRlRWZmZWN0LFxuICAgIH07XG4gICAgZXh0cmFFbmRwb2ludEtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGtleSBpbiBlbmRwb2ludClcbiAgICAgICAgc2VyaWFsW2tleV0gPSBlbmRwb2ludFtrZXkgYXMga2V5b2YgRW5kcG9pbnRJbnRlcmZhY2VdO1xuICAgIH0pO1xuICAgIHJldHVybiBzZXJpYWw7XG4gIH1cblxuICBjb25zdCBIQVNJTlRMID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnO1xuICBERUZBVUxUX0NPTkZJRyA9IHtcbiAgICBuYW1lOiBgRGF0YSBDbGllbnQ6ICR7Z2xvYmFsVGhpcy5kb2N1bWVudD8udGl0bGV9YCxcbiAgICBhdXRvUGF1c2U6IHRydWUsXG4gICAgYWN0aW9uU2FuaXRpemVyOiAoYWN0aW9uOiBBY3Rpb25UeXBlcykgPT4ge1xuICAgICAgaWYgKCEoJ2VuZHBvaW50JyBpbiBhY3Rpb24pKSByZXR1cm4gYWN0aW9uO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICBlbmRwb2ludDogc2VyaWFsaXplRW5kcG9pbnQoYWN0aW9uLmVuZHBvaW50KSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IHtcbiAgICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXBsYWNlcjpcbiAgICAgICAgSEFTSU5UTCA/XG4gICAgICAgICAgKGtleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIGlzRmluaXRlKHZhbHVlKSAmJlxuICAgICAgICAgICAgICAoa2V5ID09PSAnZGF0ZScgfHwga2V5LmVuZHNXaXRoKCdBdCcpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMyxcbiAgICAgICAgICAgICAgfSkuZm9ybWF0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKiBJbnRlZ3JhdGVzIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL3JlZHV4anMvcmVkdXgtZGV2dG9vbHNcbiAqXG4gKiBPcHRpb25zOiBodHRwczovL2dpdGh1Yi5jb20vcmVkdXhqcy9yZWR1eC1kZXZ0b29scy9ibG9iL21haW4vZXh0ZW5zaW9uL2RvY3MvQVBJL0FyZ3VtZW50cy5tZFxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0RldlRvb2xzTWFuYWdlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXZUb29sc01hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgZGV2VG9vbHM6IHVuZGVmaW5lZCB8IGFueTtcbiAgcHJvdGVjdGVkIHN0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGFjdGlvbnM6IFtBY3Rpb25UeXBlcywgU3RhdGU8dW5rbm93bj5dW10gPSBbXTtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgY29udHJvbGxlcjogQ29udHJvbGxlcjtcbiAgbWF4QnVmZmVyTGVuZ3RoID0gMTAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbmZpZz86IERldlRvb2xzQ29uZmlnLFxuICAgIHNraXBMb2dnaW5nPzogKGFjdGlvbjogQWN0aW9uVHlwZXMpID0+IGJvb2xlYW4sXG4gICkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy5kZXZUb29scyA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgKHdpbmRvdyBhcyBhbnkpLl9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18gJiZcbiAgICAgICh3aW5kb3cgYXMgYW55KS5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fLmNvbm5lY3Qoe1xuICAgICAgICAuLi5ERUZBVUxUX0NPTkZJRyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgfSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdGhpcy5kZXZUb29scykge1xuICAgICAgdGhpcy5kZXZUb29scy5zdWJzY3JpYmUoKG1zZzogYW55KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdTVEFSVCc6XG4gICAgICAgICAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmFjdGlvbnMuZm9yRWFjaCgoW2FjdGlvbiwgc3RhdGVdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb24oYWN0aW9uLCBzdGF0ZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1NUT1AnOlxuICAgICAgICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdESVNQQVRDSCc6XG4gICAgICAgICAgICBpZiAobXNnLnBheWxvYWQudHlwZSA9PT0gJ1JFU0VUJykge1xuICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIucmVzZXRFbnRpcmVTdG9yZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMuZGV2VG9vbHMpIHtcbiAgICAgIHRoaXMubWlkZGxld2FyZSA9IGNvbnRyb2xsZXIgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgICAgICBjb25zdCByZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihjb250cm9sbGVyIGFzIGFueSk7XG4gICAgICAgIGxldCBzdGF0ZSA9IGNvbnRyb2xsZXIuZ2V0U3RhdGUoKTtcbiAgICAgICAgcmV0dXJuIG5leHQgPT4gYWN0aW9uID0+IHtcbiAgICAgICAgICBjb25zdCByZXQgPSBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgaWYgKHRoaXMuc3RhcnRlZCkge1xuICAgICAgICAgICAgLy8gd2UgdHJhY2sgc3RhdGUgY2hhbmdlcyBoZXJlIHNpbmNlIGdldFN0YXRlKCkgd2lsbCBvbmx5IHVwZGF0ZSBhZnRlciBhIGJhdGNoIGNvbW1pdFxuICAgICAgICAgICAgc3RhdGUgPSByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGNvbnRyb2xsZXIuZ2V0U3RhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0LnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNraXBMb2dnaW5nPy4oYWN0aW9uKSkgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb24oYWN0aW9uLCBzdGF0ZS5vcHRpbWlzdGljLnJlZHVjZShyZWR1Y2VyLCBzdGF0ZSkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pZGRsZXdhcmUgPSAoKSA9PiBuZXh0ID0+IGFjdGlvbiA9PiBuZXh0KGFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQWN0aW9uKGFjdGlvbjogYW55LCBzdGF0ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuc3RhcnRlZCkge1xuICAgICAgdGhpcy5kZXZUb29scy5zZW5kKGFjdGlvbiwgc3RhdGUsIHVuZGVmaW5lZCwgJ1JEQycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdm9pZCB0aGlzIGdldHRpbmcgdG9vIGJpZyBpbiBjYXNlIHRoaXMgaXMgbG9uZyBydW5uaW5nXG4gICAgICAvLyB3ZSBjdXQgaW4gaGFsZiBzbyB3ZSBhcmVuJ3QgY29uc3RhbnRseSByZWFsbG9jYXRpbmdcbiAgICAgIGlmICh0aGlzLmFjdGlvbnMubGVuZ3RoID4gdGhpcy5tYXhCdWZmZXJMZW5ndGgpXG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucy5zbGljZSh0aGlzLm1heEJ1ZmZlckxlbmd0aCAvIDIpO1xuICAgICAgLy8gcXVldWUgYWN0aW9uc1xuICAgICAgdGhpcy5hY3Rpb25zLnB1c2goW2FjdGlvbiwgc3RhdGVdKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gaW5pdGlhbCBzdGF0ZSBpcyByZWFkeSAqL1xuICBpbml0KHN0YXRlOiBTdGF0ZTxhbnk+KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMuZGV2VG9vbHMpIHRoaXMuZGV2VG9vbHMuaW5pdChzdGF0ZSk7XG4gIH1cblxuICAvKiogRW5zdXJlcyBhbGwgc3Vic2NyaXB0aW9ucyBhcmUgY2xlYW5lZCB1cC4gKi9cbiAgY2xlYW51cCgpIHt9XG5cbiAgLyoqIEF0dGFjaGVzIE1hbmFnZXIgdG8gc3RvcmVcbiAgICpcbiAgICovXG4gIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWlkZGxld2FyZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFJQSxPQUFPQSxhQUFhLE1BQU0sbUNBQW1DO0FBSzdELElBQUlDLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFFdkIsSUFBSUMsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxZQUFZLEVBQUU7RUFBQSxJQUFBQyxvQkFBQTtFQUN6QyxNQUFNQyxpQkFBaUIsR0FBRyxDQUN4QixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixRQUFRLENBQ1Q7RUFFRCxTQUFTQyxpQkFBaUJBLENBQUNDLFFBQTJCLEVBQUU7SUFBQSxJQUFBQyxPQUFBLEVBQUFDLGdCQUFBO0lBQ3RELE1BQU1DLE1BQVcsR0FBRztNQUNsQkMsSUFBSSxFQUFFSixRQUFRLENBQUNJLElBQUk7TUFDbkJDLE1BQU0sR0FBQUosT0FBQSxJQUFBQyxnQkFBQSxHQUFHRixRQUFRLENBQUNLLE1BQU0sYUFBaEJILGdCQUFBLENBQTBCSSxNQUFNLG9CQUFoQ0osZ0JBQUEsQ0FBMEJJLE1BQU0sQ0FBRyxDQUFDLFlBQUFMLE9BQUEsR0FBSUQsUUFBUSxDQUFDSyxNQUFNO01BQy9ERSxVQUFVLEVBQUVQLFFBQVEsQ0FBQ087SUFDdkIsQ0FBQztJQUNEVCxpQkFBaUIsQ0FBQ1UsT0FBTyxDQUFDQyxHQUFHLElBQUk7TUFDL0IsSUFBSUEsR0FBRyxJQUFJVCxRQUFRLEVBQ2pCRyxNQUFNLENBQUNNLEdBQUcsQ0FBQyxHQUFHVCxRQUFRLENBQUNTLEdBQUcsQ0FBNEI7SUFDMUQsQ0FBQyxDQUFDO0lBQ0YsT0FBT04sTUFBTTtFQUNmO0VBRUEsTUFBTU8sT0FBTyxHQUFHLE9BQU9DLElBQUks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
145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVSZWR1Y2VyIiwiREVGQVVMVF9DT05GSUciLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJfZ2xvYmFsVGhpcyRkb2N1bWVudCIsImV4dHJhRW5kcG9pbnRLZXlzIiwic2VyaWFsaXplRW5kcG9pbnQiLCJlbmRwb2ludCIsIl90b0pTT04iLCJfZW5kcG9pbnQkc2NoZW1hIiwic2VyaWFsIiwibmFtZSIsInNjaGVtYSIsInRvSlNPTiIsInNpZGVFZmZlY3QiLCJmb3JFYWNoIiwia2V5IiwiSEFTSU5UTCIsIkludGwiLCJnbG9iYWxUaGlzIiwiZG9jdW1lbnQiLCJ0aXRsZSIsImF1dG9QYXVzZSIsImFjdGlvblNhbml0aXplciIsImFjdGlvbiIsInNlcmlhbGl6ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJyZXBsYWNlciIsInZhbHVlIiwiaXNGaW5pdGUiLCJlbmRzV2l0aCIsIkRhdGVUaW1lRm9ybWF0IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsImZyYWN0aW9uYWxTZWNvbmREaWdpdHMiLCJmb3JtYXQiLCJEZXZUb29sc01hbmFnZXIiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInNraXBMb2dnaW5nIiwic3RhcnRlZCIsImFjdGlvbnMiLCJtYXhCdWZmZXJMZW5ndGgiLCJkZXZUb29scyIsIndpbmRvdyIsIl9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18iLCJjb25uZWN0IiwibWF4QWdlIiwic3Vic2NyaWJlIiwibXNnIiwidHlwZSIsImxlbmd0aCIsInN0YXRlIiwiaGFuZGxlQWN0aW9uIiwicGF5bG9hZCIsImNvbnRyb2xsZXIiLCJyZXNldEVudGlyZVN0b3JlIiwibWlkZGxld2FyZSIsInJlZHVjZXIiLCJnZXRTdGF0ZSIsIm5leHQiLCJyZXQiLCJ0aGVuIiwib3B0aW1pc3RpYyIsInJlZHVjZSIsInNlbmQiLCJzbGljZSIsInB1c2giLCJpbml0IiwiY2xlYW51cCIsImdldE1pZGRsZXdhcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9EZXZ0b29sc01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8taW5uZXItZGVjbGFyYXRpb25zICovXG5pbXBvcnQgdHlwZSB7IERldlRvb2xzQ29uZmlnIH0gZnJvbSAnLi9kZXZ0b29sc1R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gJy4vTG9nb3V0TWFuYWdlci5qcyc7XG5pbXBvcnQgeyBDb250cm9sbGVyLCBFbmRwb2ludEludGVyZmFjZSB9IGZyb20gJy4uL2luZGV4LmpzJztcbmltcG9ydCBjcmVhdGVSZWR1Y2VyIGZyb20gJy4uL3N0YXRlL3JlZHVjZXIvY3JlYXRlUmVkdWNlci5qcyc7XG5pbXBvcnQgdHlwZSB7IE1hbmFnZXIsIFN0YXRlLCBBY3Rpb25UeXBlcyB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBEZXZUb29sc0NvbmZpZyB9O1xuXG5sZXQgREVGQVVMVF9DT05GSUcgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgY29uc3QgZXh0cmFFbmRwb2ludEtleXMgPSBbXG4gICAgJ2RhdGFFeHBpcnlMZW5ndGgnLFxuICAgICdlcnJvckV4cGlyeUxlbmd0aCcsXG4gICAgJ2Vycm9yUG9saWN5JyxcbiAgICAnaW52YWxpZElmU3RhbGUnLFxuICAgICdwb2xsRnJlcXVlbmN5JyxcbiAgICAnZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlJyxcbiAgICAndXBkYXRlJyxcbiAgXTtcblxuICBmdW5jdGlvbiBzZXJpYWxpemVFbmRwb2ludChlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UpIHtcbiAgICBjb25zdCBzZXJpYWw6IGFueSA9IHtcbiAgICAgIG5hbWU6IGVuZHBvaW50Lm5hbWUsXG4gICAgICBzY2hlbWE6IChlbmRwb2ludC5zY2hlbWEgYXMgYW55KT8udG9KU09OPy4oKSA/PyBlbmRwb2ludC5zY2hlbWEsXG4gICAgICBzaWRlRWZmZWN0OiBlbmRwb2ludC5zaWRlRWZmZWN0LFxuICAgIH07XG4gICAgZXh0cmFFbmRwb2ludEtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGtleSBpbiBlbmRwb2ludClcbiAgICAgICAgc2VyaWFsW2tleV0gPSBlbmRwb2ludFtrZXkgYXMga2V5b2YgRW5kcG9pbnRJbnRlcmZhY2VdO1xuICAgIH0pO1xuICAgIHJldHVybiBzZXJpYWw7XG4gIH1cblxuICBjb25zdCBIQVNJTlRMID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnO1xuICBERUZBVUxUX0NPTkZJRyA9IHtcbiAgICBuYW1lOiBgRGF0YSBDbGllbnQ6ICR7Z2xvYmFsVGhpcy5kb2N1bWVudD8udGl0bGV9YCxcbiAgICBhdXRvUGF1c2U6IHRydWUsXG4gICAgYWN0aW9uU2FuaXRpemVyOiAoYWN0aW9uOiBBY3Rpb25UeXBlcykgPT4ge1xuICAgICAgaWYgKCEoJ2VuZHBvaW50JyBpbiBhY3Rpb24pKSByZXR1cm4gYWN0aW9uO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICBlbmRwb2ludDogc2VyaWFsaXplRW5kcG9pbnQoYWN0aW9uLmVuZHBvaW50KSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IHtcbiAgICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXBsYWNlcjpcbiAgICAgICAgSEFTSU5UTCA/XG4gICAgICAgICAgKGtleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIGlzRmluaXRlKHZhbHVlKSAmJlxuICAgICAgICAgICAgICAoa2V5ID09PSAnZGF0ZScgfHwga2V5LmVuZHNXaXRoKCdBdCcpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMyxcbiAgICAgICAgICAgICAgfSkuZm9ybWF0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKiBJbnRlZ3JhdGVzIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL3JlZHV4anMvcmVkdXgtZGV2dG9vbHNcbiAqXG4gKiBPcHRpb25zOiBodHRwczovL2dpdGh1Yi5jb20vcmVkdXhqcy9yZWR1eC1kZXZ0b29scy9ibG9iL21haW4vZXh0ZW5zaW9uL2RvY3MvQVBJL0FyZ3VtZW50cy5tZFxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0RldlRvb2xzTWFuYWdlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXZUb29sc01hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgZGV2VG9vbHM6IHVuZGVmaW5lZCB8IGFueTtcbiAgcHJvdGVjdGVkIHN0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGFjdGlvbnM6IFtBY3Rpb25UeXBlcywgU3RhdGU8dW5rbm93bj5dW10gPSBbXTtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgY29udHJvbGxlcjogQ29udHJvbGxlcjtcbiAgbWF4QnVmZmVyTGVuZ3RoID0gMTAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbmZpZz86IERldlRvb2xzQ29uZmlnLFxuICAgIHNraXBMb2dnaW5nPzogKGFjdGlvbjogQWN0aW9uVHlwZXMpID0+IGJvb2xlYW4sXG4gICkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy5kZXZUb29scyA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgKHdpbmRvdyBhcyBhbnkpLl9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18gJiZcbiAgICAgICh3aW5kb3cgYXMgYW55KS5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fLmNvbm5lY3Qoe1xuICAgICAgICAuLi5ERUZBVUxUX0NPTkZJRyxcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgfSk7XG4gICAgLy8gd2UgY3V0IGl0IGluIGhhbGYgc28gd2Ugc2hvdWxkIGRvdWJsZSBzbyB3ZSBkb24ndCBsb3NlXG4gICAgaWYgKGNvbmZpZz8ubWF4QWdlKSB0aGlzLm1heEJ1ZmZlckxlbmd0aCA9IGNvbmZpZy5tYXhBZ2UgKiAyO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHRoaXMuZGV2VG9vbHMpIHtcbiAgICAgIHRoaXMuZGV2VG9vbHMuc3Vic2NyaWJlKChtc2c6IGFueSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1zZy50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnU1RBUlQnOlxuICAgICAgICAgICAgdGhpcy5zdGFydGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zLmZvckVhY2goKFthY3Rpb24sIHN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQWN0aW9uKGFjdGlvbiwgc3RhdGUpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdTVE9QJzpcbiAgICAgICAgICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnRElTUEFUQ0gnOlxuICAgICAgICAgICAgaWYgKG1zZy5wYXlsb2FkLnR5cGUgPT09ICdSRVNFVCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLnJlc2V0RW50aXJlU3RvcmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmRldlRvb2xzKSB7XG4gICAgICB0aGlzLm1pZGRsZXdhcmUgPSBjb250cm9sbGVyID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcbiAgICAgICAgY29uc3QgcmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoY29udHJvbGxlciBhcyBhbnkpO1xuICAgICAgICBsZXQgc3RhdGUgPSBjb250cm9sbGVyLmdldFN0YXRlKCk7XG4gICAgICAgIHJldHVybiBuZXh0ID0+IGFjdGlvbiA9PiB7XG4gICAgICAgICAgY29uc3QgcmV0ID0gbmV4dChhY3Rpb24pO1xuICAgICAgICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgICAgICAgIC8vIHdlIHRyYWNrIHN0YXRlIGNoYW5nZXMgaGVyZSBzaW5jZSBnZXRTdGF0ZSgpIHdpbGwgb25seSB1cGRhdGUgYWZ0ZXIgYSBiYXRjaCBjb21taXRcbiAgICAgICAgICAgIHN0YXRlID0gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUgPSBjb250cm9sbGVyLmdldFN0YXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChza2lwTG9nZ2luZz8uKGFjdGlvbikpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQWN0aW9uKGFjdGlvbiwgc3RhdGUub3B0aW1pc3RpYy5yZWR1Y2UocmVkdWNlciwgc3RhdGUpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5taWRkbGV3YXJlID0gKCkgPT4gbmV4dCA9PiBhY3Rpb24gPT4gbmV4dChhY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFjdGlvbihhY3Rpb246IGFueSwgc3RhdGU6IGFueSkge1xuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIHRoaXMuZGV2VG9vbHMuc2VuZChhY3Rpb24sIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYXZvaWQgdGhpcyBnZXR0aW5nIHRvbyBiaWcgaW4gY2FzZSB0aGlzIGlzIGxvbmcgcnVubmluZ1xuICAgICAgLy8gd2UgY3V0IGluIGhhbGYgc28gd2UgYXJlbid0IGNvbnN0YW50bHkgcmVhbGxvY2F0aW5nXG4gICAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IHRoaXMubWF4QnVmZmVyTGVuZ3RoKVxuICAgICAgICB0aGlzLmFjdGlvbnMgPSB0aGlzLmFjdGlvbnMuc2xpY2UodGhpcy5tYXhCdWZmZXJMZW5ndGggLyAyKTtcbiAgICAgIC8vIHF1ZXVlIGFjdGlvbnNcbiAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKFthY3Rpb24sIHN0YXRlXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIGluaXRpYWwgc3RhdGUgaXMgcmVhZHkgKi9cbiAgaW5pdChzdGF0ZTogU3RhdGU8YW55Pikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLmRldlRvb2xzKSB0aGlzLmRldlRvb2xzLmluaXQoc3RhdGUpO1xuICB9XG5cbiAgLyoqIEVuc3VyZXMgYWxsIHN1YnNjcmlwdGlvbnMgYXJlIGNsZWFuZWQgdXAuICovXG4gIGNsZWFudXAoKSB7fVxuXG4gIC8qKiBBdHRhY2hlcyBNYW5hZ2VyIHRvIHN0b3JlXG4gICAqXG4gICAqL1xuICBnZXRNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBSUEsT0FBT0EsYUFBYSxNQUFNLG1DQUFtQztBQUs3RCxJQUFJQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBRXZCLElBQUlDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssWUFBWSxFQUFFO0VBQUEsSUFBQUMsb0JBQUE7RUFDekMsTUFBTUMsaUJBQWlCLEdBQUcsQ0FDeEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsUUFBUSxDQUNUO0VBRUQsU0FBU0MsaUJBQWlCQSxDQUFDQyxRQUEyQixFQUFFO0lBQUEsSUFBQUMsT0FBQSxFQUFBQyxnQkFBQTtJQUN0RCxNQUFNQyxNQUFXLEdBQUc7TUFDbEJDLElBQUksRUFBRUosUUFBUSxDQUFDSSxJQUFJO01BQ25CQyxNQUFNLEdBQUFKLE9BQUEsSUFBQUMsZ0JBQUEsR0FBR0YsUUFBUSxDQUFDSyxNQUFNLGFBQWhCSCxnQkFBQSxDQUEwQkksTUFBTSxvQkFBaENKLGdCQUFBLENBQTBCSSxNQUFNLENBQUcsQ0FBQyxZQUFBTCxPQUFBLEdBQUlELFFBQVEsQ0FBQ0ssTUFBTTtNQUMvREUsVUFBVSxFQUFFUCxRQUFRLENBQUNPO0lBQ3ZCLENBQUM7SUFDRFQsaUJBQWlCLENBQUNVLE9BQU8sQ0FBQ0MsR0FBRyxJQUFJO01BQy9CLElBQUlBLEdBQUcsSUFBSVQsUUFBUSxFQUNqQkcsTUFBTSxDQUFDTSxHQUFHLENBQUMsR0FBR1QsUUFBUSxDQUFDUyxHQUFHLENBQTRCO0lBQzFELENBQUMsQ0FBQztJQUNGLE9BQU9OLE1BQU07RUFDZjtFQUVBLE1BQU1PLE9BQU8sR0FBRyxPQUFPQyxJQUFJLEtBQUssV0FBVztFQUMzQ2xCLGNBQWMsR0FBRztJQUNmVyxJQUFJLEVBQUUsaUJBQUFQLG9CQUFBLEdBQWdCZSxVQUFVLENBQUNDLFFBQVEscUJBQW5CaEIsb0JBQUEsQ0FBcUJpQixLQUFLLEVBQUU7SUFDbERDLFNBQVMsRUFBRSxJQUFJO0lBQ2ZDLGVBQWUsRUFBR0MsTUFBbUIsSUFBSztNQUN4QyxJQUFJLEVBQUUsVUFBVSxJQUFJQSxNQUFNLENBQUMsRUFBRSxPQUFPQSxNQUFNO01BQzFDLE9BQU87UUFDTCxHQUFHQSxNQUFNO1FBQ1RqQixRQUFRLEVBQUVELGlCQUFpQixDQUFDa0IsTUFBTSxDQUFDakIsUUFBUTtNQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUNEa0IsU0FBUyxFQUFFO01BQ1RDLE9BQU8sRUFBRUMsU0FBUztNQUNsQjtNQUNBQyxRQUFRLEVBQ05YLE9BQU8sR0FDTCxDQUFDRCxHQUE2QixFQUFFYSxLQUFjLEtBQUs7UUFDakQsSUFDRSxPQUFPQSxLQUFLLEtBQUssUUFBUSxJQUN6QixPQUFPYixHQUFHLEtBQUssUUFBUSxJQUN2QmMsUUFBUSxDQUFDRCxLQUFLLENBQUMsS0FDZGIsR0FBRyxLQUFLLE1BQU0sSUFBSUEsR0FBRyxDQUFDZSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDdEM7VUFDQSxPQUFPYixJQUFJLENBQUNjLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDbENDLElBQUksRUFBRSxTQUFTO1lBQ2ZDLE1BQU0sRUFBRSxTQUFTO1lBQ2pCQyxNQUFNLEVBQUUsU0FBUztZQUNqQkMsc0JBQXNCLEVBQUU7VUFDMUIsQ0FBQyxDQUFDLENBQUNDLE1BQU0sQ0FBQ1IsS0FBSyxDQUFDO1FBQ2xCO1FBQ0EsT0FBT0EsS0FBSztNQUNkLENBQUMsR0FDREY7SUFDTjtFQUNGLENBQUM7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1XLGVBQWUsQ0FBb0I7RUFRdERDLFdBQVdBLENBQ1RDLE1BQXVCLEVBQ3ZCQyxXQUE4QyxFQUM5QztJQUFBLEtBUlFDLE9BQU8sR0FBRyxLQUFLO0lBQUEsS0FDZkMsT0FBTyxHQUFvQyxFQUFFO0lBQUEsS0FFdkRDLGVBQWUsR0FBRyxHQUFHO0lBTW5CO0lBQ0EsSUFBSSxDQUFDQyxRQUFRLEdBQ1gsT0FBT0MsTUFBTSxLQUFLLFdBQVcsSUFDNUJBLE1BQU0sQ0FBU0MsNEJBQTRCLElBQzNDRCxNQUFNLENBQVNDLDRCQUE0QixDQUFDQyxPQUFPLENBQUM7TUFDbkQsR0FBR2hELGNBQWM7TUFDakIsR0FBR3dDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0o7SUFDQSxJQUFJQSxNQUFNLFlBQU5BLE1BQU0sQ0FBRVMsTUFBTSxFQUFFLElBQUksQ0FBQ0wsZUFBZSxHQUFHSixNQUFNLENBQUNTLE1BQU0sR0FBRyxDQUFDO0lBQzVELElBQUloRCxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMwQyxRQUFRLEVBQUU7TUFDMUQsSUFBSSxDQUFDQSxRQUFRLENBQUNLLFNBQVMsQ0FBRUMsR0FBUSxJQUFLO1FBQ3BDLFFBQVFBLEdBQUcsQ0FBQ0MsSUFBSTtVQUNkLEtBQUssT0FBTztZQUNWLElBQUksQ0FBQ1YsT0FBTyxHQUFHLElBQUk7WUFFbkIsSUFBSSxJQUFJLENBQUNDLE9BQU8sQ0FBQ1UsTUFBTSxFQUFFO2NBQ3ZCLElBQUksQ0FBQ1YsT0FBTyxDQUFDNUIsT0FBTyxDQUFDLENBQUMsQ0FBQ1MsTUFBTSxFQUFFOEIsS0FBSyxDQUFDLEtBQUs7Z0JBQ3hDLElBQUksQ0FBQ0MsWUFBWSxDQUFDL0IsTUFBTSxFQUFFOEIsS0FBSyxDQUFDO2NBQ2xDLENBQUMsQ0FBQztjQUNGLElBQUksQ0FBQ1gsT0FBTyxHQUFHLEVBQUU7WUFDbkI7WUFDQTtVQUNGLEtBQUssTUFBTTtZQUNULElBQUksQ0FBQ0QsT0FBTyxHQUFHLEtBQUs7WUFDcEI7VUFDRixLQUFLLFVBQVU7WUFDYixJQUFJUyxHQUFHLENBQUNLLE9BQU8sQ0FBQ0osSUFBSSxLQUFLLE9BQU8sRUFBRTtjQUNoQyxJQUFJLENBQUNLLFVBQVUsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQztZQUNwQztZQUNBO1FBQ0o7TUFDRixDQUFDLENBQUM7SUFDSjs7SUFFQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLENBQUNiLFFBQVEsRUFBRTtNQUNqQixJQUFJLENBQUNjLFVBQVUsR0FBR0YsVUFBVSxJQUFJO1FBQzlCLElBQUksQ0FBQ0EsVUFBVSxHQUFHQSxVQUFVO1FBQzVCLE1BQU1HLE9BQU8sR0FBRzdELGFBQWEsQ0FBQzBELFVBQWlCLENBQUM7UUFDaEQsSUFBSUgsS0FBSyxHQUFHRyxVQUFVLENBQUNJLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE9BQU9DLElBQUksSUFBSXRDLE1BQU0sSUFBSTtVQUN2QixNQUFNdUMsR0FBRyxHQUFHRCxJQUFJLENBQUN0QyxNQUFNLENBQUM7VUFDeEIsSUFBSSxJQUFJLENBQUNrQixPQUFPLEVBQUU7WUFDaEI7WUFDQVksS0FBSyxHQUFHTSxPQUFPLENBQUNOLEtBQUssRUFBRTlCLE1BQU0sQ0FBQztVQUNoQyxDQUFDLE1BQU07WUFDTDhCLEtBQUssR0FBR0csVUFBVSxDQUFDSSxRQUFRLENBQUMsQ0FBQztVQUMvQjtVQUNBRSxHQUFHLENBQUNDLElBQUksQ0FBQyxNQUFNO1lBQ2IsSUFBSXZCLFdBQVcsWUFBWEEsV0FBVyxDQUFHakIsTUFBTSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDK0IsWUFBWSxDQUFDL0IsTUFBTSxFQUFFOEIsS0FBSyxDQUFDVyxVQUFVLENBQUNDLE1BQU0sQ0FBQ04sT0FBTyxFQUFFTixLQUFLLENBQUMsQ0FBQztVQUNwRSxDQUFDLENBQUM7VUFDRixPQUFPUyxHQUFHO1FBQ1osQ0FBQztNQUNILENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTCxJQUFJLENBQUNKLFVBQVUsR0FBRyxNQUFNRyxJQUFJLElBQUl0QyxNQUFNLElBQUlzQyxJQUFJLENBQUN0QyxNQUFNLENBQUM7SUFDeEQ7RUFDRjtFQUVBK0IsWUFBWUEsQ0FBQy9CLE1BQVcsRUFBRThCLEtBQVUsRUFBRTtJQUNwQyxJQUFJLElBQUksQ0FBQ1osT0FBTyxFQUFFO01BQ2hCLElBQUksQ0FBQ0csUUFBUSxDQUFDc0IsSUFBSSxDQUFDM0MsTUFBTSxFQUFFOEIsS0FBSyxDQUFDO0lBQ25DLENBQUMsTUFBTTtNQUNMO01BQ0E7TUFDQSxJQUFJLElBQUksQ0FBQ1gsT0FBTyxDQUFDVSxNQUFNLEdBQUcsSUFBSSxDQUFDVCxlQUFlLEVBQzVDLElBQUksQ0FBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQ0EsT0FBTyxDQUFDeUIsS0FBSyxDQUFDLElBQUksQ0FBQ3hCLGVBQWUsR0FBRyxDQUFDLENBQUM7TUFDN0Q7TUFDQSxJQUFJLENBQUNELE9BQU8sQ0FBQzBCLElBQUksQ0FBQyxDQUFDN0MsTUFBTSxFQUFFOEIsS0FBSyxDQUFDLENBQUM7SUFDcEM7RUFDRjs7RUFFQTtFQUNBZ0IsSUFBSUEsQ0FBQ2hCLEtBQWlCLEVBQUU7SUFDdEI7SUFDQSxJQUFJLElBQUksQ0FBQ1QsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUSxDQUFDeUIsSUFBSSxDQUFDaEIsS0FBSyxDQUFDO0VBQzlDOztFQUVBO0VBQ0FpQixPQUFPQSxDQUFBLEVBQUcsQ0FBQzs7RUFFWDtBQUNGO0FBQ0E7RUFDRUMsYUFBYUEsQ0FBQSxFQUFHO0lBQ2QsT0FBTyxJQUFJLENBQUNiLFVBQVU7RUFDeEI7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,4 +1,4 @@
1
- import { SET_TYPE } from '../actionTypes.js';
1
+ import { SET_RESPONSE_TYPE } from '../actionTypes.js';
2
2
  /** Handling network unauthorized indicators like HTTP 401
3
3
  *
4
4
  * @see https://dataclient.io/docs/api/LogoutManager
@@ -12,7 +12,7 @@ export default class LogoutManager {
12
12
  if (shouldLogout) this.shouldLogout = shouldLogout;
13
13
  this.middleware = controller => next => async action => {
14
14
  await next(action);
15
- if (action.type === SET_TYPE && action.error && this.shouldLogout(action.payload)) {
15
+ if (action.type === SET_RESPONSE_TYPE && action.error && this.shouldLogout(action.payload)) {
16
16
  this.handleLogout(controller);
17
17
  }
18
18
  };
@@ -31,4 +31,4 @@ export default class LogoutManager {
31
31
  }
32
32
 
33
33
  // this further restricts the types to be future compatible
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfVFlQRSIsIkxvZ291dE1hbmFnZXIiLCJjb25zdHJ1Y3RvciIsImhhbmRsZUxvZ291dCIsInNob3VsZExvZ291dCIsIm1pZGRsZXdhcmUiLCJjb250cm9sbGVyIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJlcnJvciIsInBheWxvYWQiLCJjbGVhbnVwIiwiZ2V0TWlkZGxld2FyZSIsInN0YXR1cyIsInJlc2V0RW50aXJlU3RvcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9Mb2dvdXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNFVF9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB7IFVua25vd25FcnJvciB9IGZyb20gJy4uL2luZGV4LmpzJztcbmltcG9ydCB7IEFjdGlvblR5cGVzLCBNYW5hZ2VyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogSGFuZGxpbmcgbmV0d29yayB1bmF1dGhvcml6ZWQgaW5kaWNhdG9ycyBsaWtlIEhUVFAgNDAxXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvTG9nb3V0TWFuYWdlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dvdXRNYW5hZ2VyIGltcGxlbWVudHMgTWFuYWdlciB7XG4gIHByb3RlY3RlZCBkZWNsYXJlIG1pZGRsZXdhcmU6IE1pZGRsZXdhcmU7XG5cbiAgY29uc3RydWN0b3IoeyBoYW5kbGVMb2dvdXQsIHNob3VsZExvZ291dCB9OiBQcm9wcyA9IHt9KSB7XG4gICAgaWYgKGhhbmRsZUxvZ291dCkgdGhpcy5oYW5kbGVMb2dvdXQgPSBoYW5kbGVMb2dvdXQ7XG4gICAgaWYgKHNob3VsZExvZ291dCkgdGhpcy5zaG91bGRMb2dvdXQgPSBzaG91bGRMb2dvdXQ7XG4gICAgdGhpcy5taWRkbGV3YXJlID0gY29udHJvbGxlciA9PiBuZXh0ID0+IGFzeW5jIGFjdGlvbiA9PiB7XG4gICAgICBhd2FpdCBuZXh0KGFjdGlvbik7XG4gICAgICBpZiAoXG4gICAgICAgIGFjdGlvbi50eXBlID09PSBTRVRfVFlQRSAmJlxuICAgICAgICBhY3Rpb24uZXJyb3IgJiZcbiAgICAgICAgdGhpcy5zaG91bGRMb2dvdXQoYWN0aW9uLnBheWxvYWQpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oYW5kbGVMb2dvdXQoY29udHJvbGxlcik7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNsZWFudXAoKSB7fVxuXG4gIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWlkZGxld2FyZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG91bGRMb2dvdXQoZXJyb3I6IFVua25vd25FcnJvcikge1xuICAgIC8vIDQwMSBpbmRpY2F0ZXMgcmVhdXRob3JpemF0aW9uIGlzIG5lZWRlZFxuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPT09IDQwMTtcbiAgfVxuXG4gIGhhbmRsZUxvZ291dChjb250cm9sbGVyOiBDb250cm9sbGVyPERpc3BhdGNoPikge1xuICAgIGNvbnRyb2xsZXIucmVzZXRFbnRpcmVTdG9yZSgpO1xuICB9XG59XG5cbnR5cGUgRGlzcGF0Y2ggPSAodmFsdWU6IEFjdGlvblR5cGVzKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4vLyB0aGlzIGZ1cnRoZXIgcmVzdHJpY3RzIHRoZSB0eXBlcyB0byBiZSBmdXR1cmUgY29tcGF0aWJsZVxuZXhwb3J0IHR5cGUgTWlkZGxld2FyZSA9IDxDIGV4dGVuZHMgQ29udHJvbGxlcjxEaXNwYXRjaD4+KFxuICBjb250cm9sbGVyOiBDLFxuKSA9PiAobmV4dDogQ1snZGlzcGF0Y2gnXSkgPT4gQ1snZGlzcGF0Y2gnXTtcblxudHlwZSBIYW5kbGVMb2dvdXQgPSAoY29udHJvbGxlcjogQ29udHJvbGxlcjxEaXNwYXRjaD4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGhhbmRsZUxvZ291dD86IEhhbmRsZUxvZ291dDtcbiAgc2hvdWxkTG9nb3V0PzogKGVycm9yOiBVbmtub3duRXJyb3IpID0+IGJvb2xlYW47XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBUSxtQkFBbUI7QUFLNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGFBQWEsQ0FBb0I7RUFHcERDLFdBQVdBLENBQUM7SUFBRUMsWUFBWTtJQUFFQztFQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdEQsSUFBSUQsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBWSxHQUFHQSxZQUFZO0lBQ2xELElBQUlDLFlBQVksRUFBRSxJQUFJLENBQUNBLFlBQVksR0FBR0EsWUFBWTtJQUNsRCxJQUFJLENBQUNDLFVBQVUsR0FBR0MsVUFBVSxJQUFJQyxJQUFJLElBQUksTUFBTUMsTUFBTSxJQUFJO01BQ3RELE1BQU1ELElBQUksQ0FBQ0MsTUFBTSxDQUFDO01BQ2xCLElBQ0VBLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLVCxRQUFRLElBQ3hCUSxNQUFNLENBQUNFLEtBQUssSUFDWixJQUFJLENBQUNOLFlBQVksQ0FBQ0ksTUFBTSxDQUFDRyxPQUFPLENBQUMsRUFDakM7UUFDQSxJQUFJLENBQUNSLFlBQVksQ0FBQ0csVUFBVSxDQUFDO01BQy9CO0lBQ0YsQ0FBQztFQUNIO0VBRUFNLE9BQU9BLENBQUEsRUFBRyxDQUFDO0VBRVhDLGFBQWFBLENBQUEsRUFBRztJQUNkLE9BQU8sSUFBSSxDQUFDUixVQUFVO0VBQ3hCO0VBRVVELFlBQVlBLENBQUNNLEtBQW1CLEVBQUU7SUFDMUM7SUFDQSxPQUFPQSxLQUFLLENBQUNJLE1BQU0sS0FBSyxHQUFHO0VBQzdCO0VBRUFYLFlBQVlBLENBQUNHLFVBQWdDLEVBQUU7SUFDN0NBLFVBQVUsQ0FBQ1MsZ0JBQWdCLENBQUMsQ0FBQztFQUMvQjtBQUNGOztBQUlBIiwiaWdub3JlTGlzdCI6W119
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0VfVFlQRSIsIkxvZ291dE1hbmFnZXIiLCJjb25zdHJ1Y3RvciIsImhhbmRsZUxvZ291dCIsInNob3VsZExvZ291dCIsIm1pZGRsZXdhcmUiLCJjb250cm9sbGVyIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJlcnJvciIsInBheWxvYWQiLCJjbGVhbnVwIiwiZ2V0TWlkZGxld2FyZSIsInN0YXR1cyIsInJlc2V0RW50aXJlU3RvcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9Mb2dvdXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNFVF9SRVNQT05TRV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB7IFVua25vd25FcnJvciB9IGZyb20gJy4uL2luZGV4LmpzJztcbmltcG9ydCB7IEFjdGlvblR5cGVzLCBNYW5hZ2VyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogSGFuZGxpbmcgbmV0d29yayB1bmF1dGhvcml6ZWQgaW5kaWNhdG9ycyBsaWtlIEhUVFAgNDAxXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvTG9nb3V0TWFuYWdlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dvdXRNYW5hZ2VyIGltcGxlbWVudHMgTWFuYWdlciB7XG4gIHByb3RlY3RlZCBkZWNsYXJlIG1pZGRsZXdhcmU6IE1pZGRsZXdhcmU7XG5cbiAgY29uc3RydWN0b3IoeyBoYW5kbGVMb2dvdXQsIHNob3VsZExvZ291dCB9OiBQcm9wcyA9IHt9KSB7XG4gICAgaWYgKGhhbmRsZUxvZ291dCkgdGhpcy5oYW5kbGVMb2dvdXQgPSBoYW5kbGVMb2dvdXQ7XG4gICAgaWYgKHNob3VsZExvZ291dCkgdGhpcy5zaG91bGRMb2dvdXQgPSBzaG91bGRMb2dvdXQ7XG4gICAgdGhpcy5taWRkbGV3YXJlID0gY29udHJvbGxlciA9PiBuZXh0ID0+IGFzeW5jIGFjdGlvbiA9PiB7XG4gICAgICBhd2FpdCBuZXh0KGFjdGlvbik7XG4gICAgICBpZiAoXG4gICAgICAgIGFjdGlvbi50eXBlID09PSBTRVRfUkVTUE9OU0VfVFlQRSAmJlxuICAgICAgICBhY3Rpb24uZXJyb3IgJiZcbiAgICAgICAgdGhpcy5zaG91bGRMb2dvdXQoYWN0aW9uLnBheWxvYWQpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oYW5kbGVMb2dvdXQoY29udHJvbGxlcik7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNsZWFudXAoKSB7fVxuXG4gIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWlkZGxld2FyZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG91bGRMb2dvdXQoZXJyb3I6IFVua25vd25FcnJvcikge1xuICAgIC8vIDQwMSBpbmRpY2F0ZXMgcmVhdXRob3JpemF0aW9uIGlzIG5lZWRlZFxuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPT09IDQwMTtcbiAgfVxuXG4gIGhhbmRsZUxvZ291dChjb250cm9sbGVyOiBDb250cm9sbGVyPERpc3BhdGNoPikge1xuICAgIGNvbnRyb2xsZXIucmVzZXRFbnRpcmVTdG9yZSgpO1xuICB9XG59XG5cbnR5cGUgRGlzcGF0Y2ggPSAodmFsdWU6IEFjdGlvblR5cGVzKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4vLyB0aGlzIGZ1cnRoZXIgcmVzdHJpY3RzIHRoZSB0eXBlcyB0byBiZSBmdXR1cmUgY29tcGF0aWJsZVxuZXhwb3J0IHR5cGUgTWlkZGxld2FyZSA9IDxDIGV4dGVuZHMgQ29udHJvbGxlcjxEaXNwYXRjaD4+KFxuICBjb250cm9sbGVyOiBDLFxuKSA9PiAobmV4dDogQ1snZGlzcGF0Y2gnXSkgPT4gQ1snZGlzcGF0Y2gnXTtcblxudHlwZSBIYW5kbGVMb2dvdXQgPSAoY29udHJvbGxlcjogQ29udHJvbGxlcjxEaXNwYXRjaD4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGhhbmRsZUxvZ291dD86IEhhbmRsZUxvZ291dDtcbiAgc2hvdWxkTG9nb3V0PzogKGVycm9yOiBVbmtub3duRXJyb3IpID0+IGJvb2xlYW47XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGlCQUFpQixRQUFRLG1CQUFtQjtBQUtyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBTUMsYUFBYSxDQUFvQjtFQUdwREMsV0FBV0EsQ0FBQztJQUFFQyxZQUFZO0lBQUVDO0VBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUN0RCxJQUFJRCxZQUFZLEVBQUUsSUFBSSxDQUFDQSxZQUFZLEdBQUdBLFlBQVk7SUFDbEQsSUFBSUMsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBWSxHQUFHQSxZQUFZO0lBQ2xELElBQUksQ0FBQ0MsVUFBVSxHQUFHQyxVQUFVLElBQUlDLElBQUksSUFBSSxNQUFNQyxNQUFNLElBQUk7TUFDdEQsTUFBTUQsSUFBSSxDQUFDQyxNQUFNLENBQUM7TUFDbEIsSUFDRUEsTUFBTSxDQUFDQyxJQUFJLEtBQUtULGlCQUFpQixJQUNqQ1EsTUFBTSxDQUFDRSxLQUFLLElBQ1osSUFBSSxDQUFDTixZQUFZLENBQUNJLE1BQU0sQ0FBQ0csT0FBTyxDQUFDLEVBQ2pDO1FBQ0EsSUFBSSxDQUFDUixZQUFZLENBQUNHLFVBQVUsQ0FBQztNQUMvQjtJQUNGLENBQUM7RUFDSDtFQUVBTSxPQUFPQSxDQUFBLEVBQUcsQ0FBQztFQUVYQyxhQUFhQSxDQUFBLEVBQUc7SUFDZCxPQUFPLElBQUksQ0FBQ1IsVUFBVTtFQUN4QjtFQUVVRCxZQUFZQSxDQUFDTSxLQUFtQixFQUFFO0lBQzFDO0lBQ0EsT0FBT0EsS0FBSyxDQUFDSSxNQUFNLEtBQUssR0FBRztFQUM3QjtFQUVBWCxZQUFZQSxDQUFDRyxVQUFnQyxFQUFFO0lBQzdDQSxVQUFVLENBQUNTLGdCQUFnQixDQUFDLENBQUM7RUFDL0I7QUFDRjs7QUFJQSIsImlnbm9yZUxpc3QiOltdfQ==