@kaspernj/api-maker 1.0.2168 → 1.0.2169
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bootstrap/card.js +3 -3
- package/build/bootstrap/checkboxes.js +3 -3
- package/build/bootstrap/invalid-feedback.d.ts +4 -1
- package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
- package/build/draggable-sort/index.d.ts +1 -0
- package/build/draggable-sort/index.d.ts.map +1 -1
- package/build/draggable-sort/index.js +2 -1
- package/build/draggable-sort/item.d.ts +1 -0
- package/build/draggable-sort/item.d.ts.map +1 -1
- package/build/draggable-sort/item.js +12 -7
- package/build/event-connection.d.ts +7 -1
- package/build/event-connection.d.ts.map +1 -1
- package/build/event-model-class.d.ts +6 -1
- package/build/event-model-class.d.ts.map +1 -1
- package/build/inputs/attachment.js +2 -2
- package/build/inputs/input.js +2 -2
- package/build/router/route.d.ts.map +1 -1
- package/build/router/route.js +5 -6
- package/build/router/switch.d.ts.map +1 -1
- package/build/router/switch.js +4 -6
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +2 -2
- package/build/super-admin/edit-page/edit-attribute-content.js +2 -2
- package/build/super-admin/index.js +4 -4
- package/build/super-admin/layout/header/index.js +5 -3
- package/build/super-admin/layout/index.js +5 -3
- package/build/super-admin/layout/menu/menu-item.js +7 -3
- package/build/super-admin/show-reflection-link.js +2 -2
- package/build/table/blocking-overlay.js +2 -2
- package/build/table/filters/filter-form.js +27 -27
- package/build/table/filters/index.d.ts.map +1 -1
- package/build/table/filters/index.js +23 -21
- package/build/table/filters/load-search-modal.d.ts.map +1 -1
- package/build/table/filters/load-search-modal.js +3 -5
- package/build/table/header-column.d.ts +4 -1
- package/build/table/header-column.d.ts.map +1 -1
- package/build/table/header-column.js +7 -6
- package/build/table/header-select.js +7 -3
- package/build/table/move-dragged-column-position.d.ts +40 -0
- package/build/table/move-dragged-column-position.d.ts.map +1 -0
- package/build/table/move-dragged-column-position.js +37 -0
- package/build/table/table.d.ts.map +1 -1
- package/build/table/table.js +38 -37
- package/build/table/worker-plugins-check-all-checkbox.js +7 -7
- package/build/table/worker-plugins-checkbox.js +3 -5
- package/build/updated-attribute.d.ts +13 -15
- package/build/updated-attribute.d.ts.map +1 -1
- package/build/updated-attribute.js +31 -21
- package/build/use-can-can.js +3 -3
- package/build/use-collection.d.ts.map +1 -1
- package/build/use-collection.js +13 -21
- package/build/use-current-user-context.js +3 -3
- package/build/use-model.d.ts.map +1 -1
- package/build/use-model.js +7 -4
- package/build/utils/button.js +7 -3
- package/build/utils/checkbox.js +3 -3
- package/build/utils/checkboxes.js +3 -3
- package/package.json +2 -2
package/build/use-collection.js
CHANGED
|
@@ -228,11 +228,9 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
228
228
|
const overallCount = await baseQuery.count();
|
|
229
229
|
if (loadOverallCountGeneration != this.loadOverallCountGeneration)
|
|
230
230
|
return;
|
|
231
|
-
this.
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
showNoRecordsFoundContent: this.showNoRecordsFoundContent({ overallCount })
|
|
235
|
-
});
|
|
231
|
+
this.s.overallCount = overallCount;
|
|
232
|
+
this.s.showNoRecordsAvailableContent = this.showNoRecordsAvailableContent({ overallCount });
|
|
233
|
+
this.s.showNoRecordsFoundContent = this.showNoRecordsFoundContent({ overallCount });
|
|
236
234
|
};
|
|
237
235
|
/** @returns {{qParams: UseCollectionDefaultParams, searchParams: string[]}} */
|
|
238
236
|
loadQParams() {
|
|
@@ -247,10 +245,8 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
247
245
|
searchParams.push(parsedSearchParam);
|
|
248
246
|
}
|
|
249
247
|
}
|
|
250
|
-
this.
|
|
251
|
-
|
|
252
|
-
searchParams
|
|
253
|
-
});
|
|
248
|
+
this.s.qParams = qParamsToSet;
|
|
249
|
+
this.s.searchParams = searchParams;
|
|
254
250
|
return {
|
|
255
251
|
qParams: qParamsToSet,
|
|
256
252
|
searchParams
|
|
@@ -329,20 +325,16 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
329
325
|
result
|
|
330
326
|
});
|
|
331
327
|
}
|
|
332
|
-
this.
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
showNoRecordsFoundContent: this.showNoRecordsFoundContent({ models })
|
|
338
|
-
});
|
|
328
|
+
this.s.models = models;
|
|
329
|
+
this.s.query = query;
|
|
330
|
+
this.s.result = result;
|
|
331
|
+
this.s.showNoRecordsAvailableContent = this.showNoRecordsAvailableContent({ models });
|
|
332
|
+
this.s.showNoRecordsFoundContent = this.showNoRecordsFoundContent({ models });
|
|
339
333
|
};
|
|
340
334
|
/** @param {{model: BaseModelInstance}} args */
|
|
341
335
|
onModelDestroyed(args) {
|
|
342
336
|
const destroyedModel = digg(args, "model");
|
|
343
|
-
this.
|
|
344
|
-
models: this.s.models.filter((model) => /** @type {BaseModelWithId} */ (model).id() != /** @type {BaseModelWithId} */ (destroyedModel).id())
|
|
345
|
-
});
|
|
337
|
+
this.s.models = this.s.models.filter((model) => /** @type {BaseModelWithId} */ (model).id() != /** @type {BaseModelWithId} */ (destroyedModel).id());
|
|
346
338
|
}
|
|
347
339
|
/** @param {{model: BaseModelInstance}} args */
|
|
348
340
|
onModelUpdated(args) {
|
|
@@ -357,7 +349,7 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
357
349
|
}
|
|
358
350
|
/** @returns {void} */
|
|
359
351
|
componentDidMount() {
|
|
360
|
-
this.
|
|
352
|
+
this.s.readyToLoad = true;
|
|
361
353
|
}
|
|
362
354
|
/** @returns {void} */
|
|
363
355
|
setup() {
|
|
@@ -465,4 +457,4 @@ const useCollection = (props, cacheKeys = []) => {
|
|
|
465
457
|
return result;
|
|
466
458
|
};
|
|
467
459
|
export default useCollection;
|
|
468
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1jb2xsZWN0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWiw2RkFBNkY7QUFDN0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6RCxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQy9CLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBRTFFLHlFQUF5RTtBQUN6RSxxRUFBcUU7QUFDckUsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUNuRSxnRUFBZ0U7QUFDaEUsNEZBQTRGO0FBQzVGLDhGQUE4RjtBQUM5Rix5RkFBeUY7QUFDekYsb0dBQW9HO0FBQ3BHLGtHQUFrRztBQUNsRywySEFBMkg7QUFDM0g7Ozs7Ozs7R0FPRztBQUNILDBGQUEwRjtBQUMxRixnR0FBZ0c7QUFDaEc7Ozs7O0dBS0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUg7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw4Q0FBOEM7QUFDOUMsd0VBQXdFO0FBQ3hFLE1BQU0sc0JBQXVCLFNBQVEsU0FBUztJQUM1QyxLQUFLLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztRQUN2QixPQUFPLEVBQUUsRUFBRTtRQUNY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QVUsRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFO1FBQ2xDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFO0tBQ3pDLENBQUMsQ0FBQTtJQUNGLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBRXZILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBRTlDLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsZUFBZSxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzLCBuby11c2UtYmVmb3JlLWRlZmluZSwgcHJlZmVyLW9iamVjdC1zcHJlYWQsIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IHtTaGFwZUhvb2ssIHVzZVNoYXBlSG9va30gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlXCJcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50cy5qc1wiXG5pbXBvcnQge3VzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB1c2VDcmVhdGVkRXZlbnQgZnJvbSBcIi4vdXNlLWNyZWF0ZWQtZXZlbnQuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuXG4vKiogQHR5cGVkZWYge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsQ2xhc3MgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9IEJhc2VNb2RlbEluc3RhbmNlICovXG4vKiogQHR5cGVkZWYge0Jhc2VNb2RlbEluc3RhbmNlICYge2lkOiAoKSA9PiBudW1iZXIgfCBzdHJpbmd9fSBCYXNlTW9kZWxXaXRoSWQgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLmRlZmF1bHR9IE1vZGVsQ29sbGVjdGlvbiAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL3Jlc3VsdC5qc1wiKS5kZWZhdWx0fSBDb2xsZWN0aW9uUmVzdWx0ICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vY29sbGVjdGlvbi5qc1wiKS5Db2xsZWN0aW9uU2VhcmNoUGFyYW1zfSBVc2VDb2xsZWN0aW9uU2VhcmNoUGFyYW1zICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vY29sbGVjdGlvbi5qc1wiKS5Db2xsZWN0aW9uUmFuc2Fja1BhcmFtc30gVXNlQ29sbGVjdGlvblJhbnNhY2tQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLlF1ZXJ5UGFyYW1WYWx1ZU1hcH0gVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLlF1ZXJ5UGFyYW1WYWx1ZSB8IHVuZGVmaW5lZH0gVXNlQ29sbGVjdGlvblF1ZXJ5UGFyYW1WYWx1ZSAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBVc2VDb2xsZWN0aW9uUXVlcnlQYXJhbVZhbHVlIHwgc3RyaW5nW10+fSBVc2VDb2xsZWN0aW9uUXVlcnlQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7KGFyZ3M6IHtxdWVyeTogTW9kZWxDb2xsZWN0aW9ufSkgPT4gUHJvbWlzZTxDb2xsZWN0aW9uUmVzdWx0PiB8IENvbGxlY3Rpb25SZXN1bHR9IFVzZUNvbGxlY3Rpb25RdWVyeU1ldGhvZCAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7KGFyZ3M6IHtcbiAqICAgbW9kZWxzOiBCYXNlTW9kZWxJbnN0YW5jZVtdLFxuICogICBxUGFyYW1zOiBVc2VDb2xsZWN0aW9uRGVmYXVsdFBhcmFtcyxcbiAqICAgcXVlcnk6IE1vZGVsQ29sbGVjdGlvbixcbiAqICAgcmVzdWx0OiBDb2xsZWN0aW9uUmVzdWx0XG4gKiB9KSA9PiB2b2lkfSBPbk1vZGVsc0xvYWRlZENhbGxiYWNrXG4gKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVscz86IEJhc2VNb2RlbEluc3RhbmNlW10sIG92ZXJhbGxDb3VudD86IG51bWJlcn19IE5vUmVjb3Jkc1N0YXRlQXJncyAqL1xuLyoqIEB0eXBlZGVmIHt7cVBhcmFtcz86IFVzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zLCBzZWFyY2hQYXJhbXM/OiBzdHJpbmdbXX19IExvYWRNb2RlbHNBcmdzICovXG4vKipcbiAqIEB0eXBlZGVmIHtVc2VDb2xsZWN0aW9uUmVzdWx0ICYgUmVjb3JkPFxuICogICBzdHJpbmcsXG4gKiAgIEJhc2VNb2RlbEluc3RhbmNlW10gfCBzdHJpbmcgfCBudW1iZXIgfCBDb2xsZWN0aW9uUmVzdWx0IHwgTW9kZWxDb2xsZWN0aW9uIHwgc3RyaW5nW10gfCBmYWxzZSB8IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZVxuICogPn0gVXNlQ29sbGVjdGlvblJldHVyblZhbHVlXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gVXNlQ29sbGVjdGlvbkhvb2tQcm9wc1xuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFthYmlsaXRpZXNdXG4gKiBAcHJvcGVydHkge1VzZUNvbGxlY3Rpb25RdWVyeVBhcmFtVmFsdWVbXX0gW2NhY2hlS2V5c11cbiAqIEBwcm9wZXJ0eSB7TW9kZWxDb2xsZWN0aW9ufSBbY29sbGVjdGlvbl1cbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IFtkZWZhdWx0UGFyYW1zXVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2dyb3VwQnldXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCAoKCkgPT4gYm9vbGVhbil9IFtpZkNvbmRpdGlvbl1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbGltaXRdXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbENsYXNzfSBtb2RlbENsYXNzXG4gKiBAcHJvcGVydHkgeygpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW25vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRdXG4gKiBAcHJvcGVydHkgeygpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW25vUmVjb3Jkc0ZvdW5kQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7T25Nb2RlbHNMb2FkZWRDYWxsYmFja30gW29uTW9kZWxzTG9hZGVkXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbcGFnaW5hdGlvbl1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtwcmVsb2Fkc11cbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvblF1ZXJ5TWV0aG9kfSBbcXVlcnlNZXRob2RdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3F1ZXJ5TmFtZV1cbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvblJhbnNhY2tQYXJhbXN9IFtyYW5zYWNrXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdENvbHVtbnNdXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gVXNlQ29sbGVjdGlvblJlc3VsdFxuICogQHByb3BlcnR5IHtCYXNlTW9kZWxJbnN0YW5jZVtdIHwgdW5kZWZpbmVkfSBtb2RlbHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtb2RlbElkc0NhY2hlU3RyaW5nXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gb3ZlcmFsbENvdW50XG4gKiBAcHJvcGVydHkge1VzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zfSBxUGFyYW1zXG4gKiBAcHJvcGVydHkge01vZGVsQ29sbGVjdGlvbiB8IHVuZGVmaW5lZH0gcXVlcnlcbiAgKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlOYW1lXG4gICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UGVyS2V5XG4gICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UU5hbWVcbiAgKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlTTmFtZVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVBhZ2VOYW1lXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlYWR5VG9Mb2FkXG4gKiBAcHJvcGVydHkge0NvbGxlY3Rpb25SZXN1bHQgfCB1bmRlZmluZWR9IHJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gc2VhcmNoUGFyYW1zXG4gICogQHByb3BlcnR5IHtmYWxzZSB8IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRcbiAgKiBAcHJvcGVydHkge2ZhbHNlIHwgaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBwcm9wcy5hYmlsaXRpZXNcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLmRlZmF1bHR9IHByb3BzLmNvbGxlY3Rpb25cbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IHByb3BzLmRlZmF1bHRQYXJhbXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzLmdyb3VwQnlcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IGJvb2xlYW59IHByb3BzLmlmQ29uZGl0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMubGltaXRcbiAqIEBwYXJhbSB7QmFzZU1vZGVsQ2xhc3N9IHByb3BzLm1vZGVsQ2xhc3NcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gcHJvcHMubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBwcm9wcy5ub1JlY29yZHNGb3VuZENvbnRlbnRcbiAqIEBwYXJhbSB7T25Nb2RlbHNMb2FkZWRDYWxsYmFja30gcHJvcHMub25Nb2RlbHNMb2FkZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucGFnaW5hdGlvblxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHMucHJlbG9hZHNcbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvblF1ZXJ5TWV0aG9kfSBwcm9wcy5xdWVyeU1ldGhvZFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLnF1ZXJ5TmFtZVxuICogQHBhcmFtIHtVc2VDb2xsZWN0aW9uUmFuc2Fja1BhcmFtc30gcHJvcHMucmFuc2Fja1xuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IHByb3BzLnNlbGVjdFxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IHByb3BzLnNlbGVjdENvbHVtbnNcbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvblF1ZXJ5UGFyYW1WYWx1ZVtdfSBjYWNoZUtleXNcbiAqIEByZXR1cm5zIHtVc2VDb2xsZWN0aW9uUmV0dXJuVmFsdWV9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VDb2xsZWN0aW9uU3RhdGVcbiAqIEBwcm9wZXJ0eSB7QmFzZU1vZGVsSW5zdGFuY2VbXSB8IHVuZGVmaW5lZH0gbW9kZWxzXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gb3ZlcmFsbENvdW50XG4gKiBAcHJvcGVydHkge1VzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zfSBxUGFyYW1zXG4gKiBAcHJvcGVydHkge01vZGVsQ29sbGVjdGlvbiB8IHVuZGVmaW5lZH0gcXVlcnlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVhZHlUb0xvYWRcbiAqIEBwcm9wZXJ0eSB7Q29sbGVjdGlvblJlc3VsdCB8IHVuZGVmaW5lZH0gcmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBzZWFyY2hQYXJhbXNcbiAqIEBwcm9wZXJ0eSB7ZmFsc2UgfCBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50XG4gKiBAcHJvcGVydHkge2ZhbHNlIHwgaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XG4gKi9cblxuLyoqIEhvb2sgc3RhdGUgY29udGFpbmVyIGZvciB1c2VDb2xsZWN0aW9uLiAqL1xuLyoqIEBhdWdtZW50cyB7U2hhcGVIb29rPFVzZUNvbGxlY3Rpb25Ib29rUHJvcHMsIFVzZUNvbGxlY3Rpb25TdGF0ZT59ICovXG5jbGFzcyBVc2VDb2xsZWN0aW9uU2hhcGVIb29rIGV4dGVuZHMgU2hhcGVIb29rIHtcbiAgc3RhdGUgPSAvKiogQHR5cGUge1VzZUNvbGxlY3Rpb25TdGF0ZX0gKi8gKHtcbiAgICBtb2RlbHM6IHVuZGVmaW5lZCxcbiAgICBvdmVyYWxsQ291bnQ6IHVuZGVmaW5lZCxcbiAgICBxUGFyYW1zOiB7fSxcbiAgICBxdWVyeTogdW5kZWZpbmVkLFxuICAgIHJlYWR5VG9Mb2FkOiBmYWxzZSxcbiAgICByZXN1bHQ6IHVuZGVmaW5lZCxcbiAgICBzZWFyY2hQYXJhbXM6IHVuZGVmaW5lZCxcbiAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogZmFsc2UsXG4gICAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudDogZmFsc2VcbiAgfSlcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkhvb2tQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbiA9IDBcbiAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uID0gMFxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucC5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeVBlcktleSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5xdWVyeU5hbWUoKX1fcGVyYFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5UU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMucXVlcnlOYW1lKCl9X3FgXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgcXVlcnlTTmFtZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5xdWVyeU5hbWUoKX1fc2BcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeVBhZ2VOYW1lKCkge1xuICAgIHJldHVybiBgJHt0aGlzLnF1ZXJ5TmFtZSgpfV9wYWdlYFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIG1vZGVsSWRzQ2FjaGVTdHJpbmcoKSB7XG4gICAgaWYgKHRoaXMucy5tb2RlbHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFwibW9kZWxzLXVuZGVmaW5lZFwiXG4gICAgfSBlbHNlIGlmICh0aGlzLnMubW9kZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwibm8tbW9kZWxzXCJcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucy5tb2RlbHMubWFwKChtb2RlbCkgPT4gbW9kZWwuY2FjaGVLZXkoKSk/LmpvaW4oXCItLS1cIilcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0Z1bmN0aW9uICYge2NsZWFyPzogKCkgPT4gdm9pZH19ICovXG4gIGxvYWRNb2RlbHNEZWJvdW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcImxvYWRNb2RlbHNEZWJvdW5jZVwiLCAoKSA9PiBkZWJvdW5jZSgoKSA9PiB0aGlzLmxvYWRNb2RlbHMoKSkpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtOb1JlY29yZHNTdGF0ZUFyZ3N9IGFyZ3NcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudChhcmdzKSB7XG4gICAgbGV0IG1vZGVscywgb3ZlcmFsbENvdW50XG5cbiAgICBpZiAoYXJncy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gYXJncy5tb2RlbHNcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gdGhpcy5zLm1vZGVsc1xuICAgIH1cblxuICAgIGlmIChhcmdzLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSBhcmdzLm92ZXJhbGxDb3VudFxuICAgIH0gZWxzZSBpZiAodGhpcy5zLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSB0aGlzLnMub3ZlcmFsbENvdW50XG4gICAgfVxuXG4gICAgaWYgKG1vZGVscyA9PT0gdW5kZWZpbmVkIHx8IG92ZXJhbGxDb3VudCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucC5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50ID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwICYmIG92ZXJhbGxDb3VudCA9PT0gMCAmJiB0aGlzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCkgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9SZWNvcmRzU3RhdGVBcmdzfSBhcmdzXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudChhcmdzKSB7XG4gICAgbGV0IG1vZGVscywgb3ZlcmFsbENvdW50XG5cbiAgICBpZiAoYXJncy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gYXJncy5tb2RlbHNcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gdGhpcy5zLm1vZGVsc1xuICAgIH1cblxuICAgIGlmIChhcmdzLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSBhcmdzLm92ZXJhbGxDb3VudFxuICAgIH0gZWxzZSBpZiAodGhpcy5zLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSB0aGlzLnMub3ZlcmFsbENvdW50XG4gICAgfVxuXG4gICAgaWYgKG1vZGVscyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucC5ub1JlY29yZHNGb3VuZENvbnRlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG5cbiAgICAvLyBEb250IHNob3cgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCB0b2dldGhlciB3aXRoIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCAmJiBvdmVyYWxsQ291bnQgPT09IDAgJiYgdGhpcy5wLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQpIHJldHVybiBmYWxzZVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwICYmIHRoaXMucC5ub1JlY29yZHNGb3VuZENvbnRlbnQpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgbG9hZE92ZXJhbGxDb3VudCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBJZ25vcmUgbGF0ZSBvdmVyYWxsLWNvdW50IHJlc3BvbnNlcyBvbmNlIGEgbmV3ZXIgbG9hZCBjeWNsZSBoYXMgc3RhcnRlZCBvciB0aGUgaG9vayB1bm1vdW50ZWQuXG4gICAgY29uc3QgbG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gPSB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uICsgMVxuXG4gICAgdGhpcy5sb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbiA9IGxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uXG5cbiAgICBjb25zdCBiYXNlUXVlcnkgPSB0aGlzLnAuY29sbGVjdGlvbiB8fCB0aGlzLnAubW9kZWxDbGFzcy5hbGwoKVxuICAgIGNvbnN0IG92ZXJhbGxDb3VudCA9IGF3YWl0IGJhc2VRdWVyeS5jb3VudCgpXG5cbiAgICBpZiAobG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gIT0gdGhpcy5sb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbikgcmV0dXJuXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG92ZXJhbGxDb3VudCxcbiAgICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KHtvdmVyYWxsQ291bnR9KSxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMuc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCh7b3ZlcmFsbENvdW50fSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt7cVBhcmFtczogVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMsIHNlYXJjaFBhcmFtczogc3RyaW5nW119fSAqL1xuICBsb2FkUVBhcmFtcygpIHtcbiAgICBsZXQgcVBhcmFtc1RvU2V0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wLmRlZmF1bHRQYXJhbXMpXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gW11cblxuICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zICYmIHRoaXMucXVlcnlRTmFtZSgpIGluIHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHFQYXJhbXNUb1NldCA9IEpTT04ucGFyc2UoZGlnZyh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLnF1ZXJ5UU5hbWUoKSkpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5U05hbWUoKV0pIHtcbiAgICAgIGZvciAoY29uc3QgcmF3U2VhcmNoUGFyYW0gb2YgdGhpcy5xdWVyeVBhcmFtc1t0aGlzLnF1ZXJ5U05hbWUoKV0pIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU2VhcmNoUGFyYW0gPSBKU09OLnBhcnNlKHJhd1NlYXJjaFBhcmFtKVxuXG4gICAgICAgIHNlYXJjaFBhcmFtcy5wdXNoKHBhcnNlZFNlYXJjaFBhcmFtKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgcVBhcmFtczogcVBhcmFtc1RvU2V0LFxuICAgICAgc2VhcmNoUGFyYW1zXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICBxUGFyYW1zOiBxUGFyYW1zVG9TZXQsXG4gICAgICBzZWFyY2hQYXJhbXNcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IFthcmdzXVxuICAgKiBAcGFyYW0ge1VzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zfSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJncy5zZWFyY2hQYXJhbXNdXG4gICAqIEByZXR1cm5zIHt7cVBhcmFtczogVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMsIHNlYXJjaFBhcmFtczogc3RyaW5nW119fVxuICAgKi9cbiAgbG9hZE1vZGVsc0FyZ3MoYXJncyA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHFQYXJhbXM6IGFyZ3MucVBhcmFtcyA/PyB0aGlzLnMucVBhcmFtcyxcbiAgICAgIHNlYXJjaFBhcmFtczogYXJncy5zZWFyY2hQYXJhbXMgPz8gdGhpcy5zLnNlYXJjaFBhcmFtc1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdXG4gICAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IFthcmdzLnFQYXJhbXNdXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzLnNlYXJjaFBhcmFtc11cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBsb2FkTW9kZWxzID0gYXN5bmMgKGFyZ3MgPSB7fSkgPT4ge1xuICAgIC8vIE9ubHkgdGhlIG5ld2VzdCBjb2xsZWN0aW9uIHJlcXVlc3QgaXMgYWxsb3dlZCB0byB1cGRhdGUgc3RhdGUgYWZ0ZXIgbmF2aWdhdGlvbi9maWx0ZXIgY2hhbmdlcy5cbiAgICBjb25zdCBsb2FkTW9kZWxzR2VuZXJhdGlvbiA9IHRoaXMubG9hZE1vZGVsc0dlbmVyYXRpb24gKyAxXG4gICAgY29uc3Qge3FQYXJhbXMsIHNlYXJjaFBhcmFtc30gPSB0aGlzLmxvYWRNb2RlbHNBcmdzKGFyZ3MpXG5cbiAgICB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uID0gbG9hZE1vZGVsc0dlbmVyYXRpb25cbiAgICBsZXQgcXVlcnkgPSB0aGlzLnAuY29sbGVjdGlvbj8uY2xvbmUoKSB8fCB0aGlzLnAubW9kZWxDbGFzcy5yYW5zYWNrKClcblxuICAgIGlmICh0aGlzLnAucGFnaW5hdGlvbikge1xuICAgICAgY29uc3QgcGFnZSA9IHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5UGFnZU5hbWUoKV0gfHwgMVxuICAgICAgbGV0IHBlciA9IHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5UGVyS2V5KCldIHx8IDMwXG5cbiAgICAgIGlmIChwZXIgPT0gXCJhbGxcIikge1xuICAgICAgICBwZXIgPSA5OTlfOTk5Xzk5OVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVyID0gTnVtYmVyKHBlcilcbiAgICAgIH1cblxuICAgICAgcXVlcnkucGFnZShwYWdlKS5wZXIocGVyKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnAuZ3JvdXBCeSkgcXVlcnkgPSBxdWVyeS5ncm91cEJ5KC4uLnRoaXMucC5ncm91cEJ5KVxuXG4gICAgcXVlcnkgPSBxdWVyeVxuICAgICAgLnJhbnNhY2soLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuQ29sbGVjdGlvblJhbnNhY2tQYXJhbXN9ICovIChxUGFyYW1zKSlcbiAgICAgIC5zZWFyY2goc2VhcmNoUGFyYW1zKVxuICAgICAgLnNlYXJjaEtleSh0aGlzLnF1ZXJ5UU5hbWUoKSlcbiAgICAgIC5wYWdlS2V5KHRoaXMucXVlcnlQYWdlTmFtZSgpKVxuICAgICAgLnBlcktleSh0aGlzLnF1ZXJ5UGVyS2V5KCkpXG5cbiAgICBpZiAodGhpcy5wLmFiaWxpdGllcykgcXVlcnkuYWJpbGl0aWVzKHRoaXMucC5hYmlsaXRpZXMpXG4gICAgaWYgKHRoaXMucC5saW1pdCAhPT0gdW5kZWZpbmVkKSBxdWVyeS5saW1pdCh0aGlzLnAubGltaXQpXG4gICAgaWYgKHRoaXMucC5wcmVsb2FkcykgcXVlcnkucHJlbG9hZCh0aGlzLnAucHJlbG9hZHMpXG4gICAgaWYgKHRoaXMucC5yYW5zYWNrKSBxdWVyeS5yYW5zYWNrKHRoaXMucC5yYW5zYWNrKVxuICAgIGlmICh0aGlzLnAuc2VsZWN0KSBxdWVyeS5zZWxlY3QodGhpcy5wLnNlbGVjdClcbiAgICBpZiAodGhpcy5wLnNlbGVjdENvbHVtbnMpIHF1ZXJ5LnNlbGVjdENvbHVtbnModGhpcy5wLnNlbGVjdENvbHVtbnMpXG5cbiAgICBsZXQgcmVzdWx0XG5cbiAgICBpZiAodGhpcy5wLnF1ZXJ5TWV0aG9kKSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnAucXVlcnlNZXRob2Qoe3F1ZXJ5fSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcXVlcnkucmVzdWx0KClcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbHMgPSByZXN1bHQubW9kZWxzKClcblxuICAgIGlmIChsb2FkTW9kZWxzR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uKSByZXR1cm5cblxuICAgIGlmICh0aGlzLnAub25Nb2RlbHNMb2FkZWQpIHtcbiAgICAgIHRoaXMucC5vbk1vZGVsc0xvYWRlZCh7XG4gICAgICAgIG1vZGVscyxcbiAgICAgICAgcVBhcmFtczogdGhpcy5zLnFQYXJhbXMsXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICByZXN1bHRcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBtb2RlbHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHN9KSxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMuc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCh7bW9kZWxzfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX19IGFyZ3MgKi9cbiAgb25Nb2RlbERlc3Ryb3llZChhcmdzKSB7XG4gICAgY29uc3QgZGVzdHJveWVkTW9kZWwgPSBkaWdnKGFyZ3MsIFwibW9kZWxcIilcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbW9kZWxzOiB0aGlzLnMubW9kZWxzLmZpbHRlcigobW9kZWwpID0+IC8qKiBAdHlwZSB7QmFzZU1vZGVsV2l0aElkfSAqLyAobW9kZWwpLmlkKCkgIT0gLyoqIEB0eXBlIHtCYXNlTW9kZWxXaXRoSWR9ICovIChkZXN0cm95ZWRNb2RlbCkuaWQoKSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX19IGFyZ3MgKi9cbiAgb25Nb2RlbFVwZGF0ZWQoYXJncykge1xuICAgIGNvbnN0IHVwZGF0ZWRNb2RlbCA9IGRpZ2coYXJncywgXCJtb2RlbFwiKVxuICAgIGNvbnN0IGZvdW5kTW9kZWwgPSB0aGlzLnMubW9kZWxzLmZpbmQoKG1vZGVsKSA9PiAvKiogQHR5cGUge0Jhc2VNb2RlbFdpdGhJZH0gKi8gKG1vZGVsKS5pZCgpID09IC8qKiBAdHlwZSB7QmFzZU1vZGVsV2l0aElkfSAqLyAodXBkYXRlZE1vZGVsKS5pZCgpKVxuXG4gICAgaWYgKGZvdW5kTW9kZWwpIHRoaXMubG9hZE1vZGVsc0RlYm91bmNlKCkoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvbkNyZWF0ZWQoKSB7XG4gICAgdGhpcy5sb2FkTW9kZWxzRGVib3VuY2UoKSgpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe3JlYWR5VG9Mb2FkOiB0cnVlfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIC8vIFdhaXQgdW50aWwgY29tcG9uZW50RGlkTW91bnQgaGFzIGZsaXBwZWQgcmVhZHlUb0xvYWQgc28gdGhlIGZpcnN0IGxvYWQgcnVucyBhZnRlciB1c2VTaGFwZUhvb2sgaGFzIG1hcmtlZCB0aGUgaG9vayBtb3VudGVkLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnMucmVhZHlUb0xvYWQpIHJldHVyblxuICAgICAgICBsZXQgaWZDb25kaXRpb25NZXRcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucC5pZkNvbmRpdGlvbiA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRoaXMucC5pZkNvbmRpdGlvbigpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wLmlmQ29uZGl0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRoaXMucC5pZkNvbmRpdGlvblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlmQ29uZGl0aW9uTWV0KSB7XG4gICAgICAgICAgY29uc3Qge3FQYXJhbXMsIHNlYXJjaFBhcmFtc30gPSB0aGlzLmxvYWRRUGFyYW1zKClcblxuICAgICAgICAgIHRoaXMubG9hZE1vZGVscyh7cVBhcmFtcywgc2VhcmNoUGFyYW1zfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgdGhpcy5wLm1vZGVsQ2xhc3MsXG4gICAgICAgIHRoaXMucC5pZkNvbmRpdGlvbixcbiAgICAgICAgdGhpcy5xdWVyeU5hbWUoKSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlRTmFtZSgpXSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQYWdlTmFtZSgpXSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQZXJLZXkoKV0sXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5U05hbWUoKV0sXG4gICAgICAgIHRoaXMucy5yZWFkeVRvTG9hZCxcbiAgICAgICAgdGhpcy5wLmNvbGxlY3Rpb25cbiAgICAgIF0uY29uY2F0KHRoaXMucC5jYWNoZUtleXMpXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zLnJlYWR5VG9Mb2FkKSByZXR1cm5cbiAgICAgIGlmICh0aGlzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCkge1xuICAgICAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnQoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAubW9kZWxDbGFzcywgdGhpcy5zLnJlYWR5VG9Mb2FkXSlcblxuICAgIHVzZUNyZWF0ZWRFdmVudCh0aGlzLnAubW9kZWxDbGFzcywgKCkgPT4gdGhpcy5vbkNyZWF0ZWQoKSlcblxuICAgIC8vIEludmFsaWRhdGUgYW55IGluLWZsaWdodCBhc3luYyByZXNwb25zZXMgc28gdW5tb3VudGVkIGhvb2tzIGNhbm5vdCB3cml0ZSBzdGFsZSBzdGF0ZS5cbiAgICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbiArPSAxXG4gICAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uICs9IDFcbiAgICAgIHRoaXMubG9hZE1vZGVsc0RlYm91bmNlKCkuY2xlYXI/LigpXG4gICAgfSwgW10pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY29ubmVjdGlvbnMgPSBbXVxuXG4gICAgICBpZiAodGhpcy5zLm1vZGVscykge1xuICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMucy5tb2RlbHMpIHtcbiAgICAgICAgICBjb25uZWN0aW9ucy5wdXNoKE1vZGVsRXZlbnRzLmNvbm5lY3RVcGRhdGVkKG1vZGVsLCAoYXJncykgPT4gdGhpcy5vbk1vZGVsVXBkYXRlZChhcmdzKSkpXG4gICAgICAgICAgY29ubmVjdGlvbnMucHVzaChNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKG1vZGVsLCAoYXJncykgPT4gdGhpcy5vbk1vZGVsRGVzdHJveWVkKGFyZ3MpKSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgY29ubmVjdGlvbnMpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLnVuc3Vic2NyaWJlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFt0aGlzLm1vZGVsSWRzQ2FjaGVTdHJpbmcoKV0pXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1VzZUNvbGxlY3Rpb25Ib29rUHJvcHN9IHByb3BzXG4gKiBAcGFyYW0ge1VzZUNvbGxlY3Rpb25RdWVyeVBhcmFtVmFsdWVbXX0gW2NhY2hlS2V5c11cbiAqIEByZXR1cm5zIHtVc2VDb2xsZWN0aW9uUmV0dXJuVmFsdWV9XG4gKi9cbmNvbnN0IHVzZUNvbGxlY3Rpb24gPSAocHJvcHMsIGNhY2hlS2V5cyA9IFtdKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhYmlsaXRpZXMsXG4gICAgY29sbGVjdGlvbixcbiAgICBkZWZhdWx0UGFyYW1zLFxuICAgIGdyb3VwQnksXG4gICAgaWZDb25kaXRpb24sXG4gICAgbGltaXQsXG4gICAgbW9kZWxDbGFzcyxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50ID0gdW5kZWZpbmVkLFxuICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudCA9IHVuZGVmaW5lZCxcbiAgICBvbk1vZGVsc0xvYWRlZCxcbiAgICBwYWdpbmF0aW9uID0gZmFsc2UsXG4gICAgcHJlbG9hZHMgPSBbXSxcbiAgICBxdWVyeU1ldGhvZCxcbiAgICBxdWVyeU5hbWUsXG4gICAgcmFuc2FjayxcbiAgICBzZWxlY3QgPSB7fSxcbiAgICBzZWxlY3RDb2x1bW5zLFxuICAgIC4uLnJlc3RQcm9wc1xuICB9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIHVzZUNvbGxlY3Rpb246ICR7T2JqZWN0LmtleXMocmVzdFByb3BzKS5qb2luKFwiLCBcIil9YClcbiAgfVxuXG4gIGNvbnN0IHNoYXBlSG9vayA9IHVzZVNoYXBlSG9vayhVc2VDb2xsZWN0aW9uU2hhcGVIb29rLCB7XG4gICAgYWJpbGl0aWVzLFxuICAgIGNhY2hlS2V5cyxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgZ3JvdXBCeSxcbiAgICBpZkNvbmRpdGlvbixcbiAgICBsaW1pdCxcbiAgICBtb2RlbENsYXNzLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgIHBhZ2luYXRpb24sXG4gICAgcHJlbG9hZHMsXG4gICAgcXVlcnlNZXRob2QsXG4gICAgcXVlcnlOYW1lLFxuICAgIHJhbnNhY2ssXG4gICAgc2VsZWN0LFxuICAgIHNlbGVjdENvbHVtbnNcbiAgfSlcbiAgY29uc3QgcmVzdWx0ID0gLyoqIEB0eXBlIHtVc2VDb2xsZWN0aW9uUmV0dXJuVmFsdWV9ICovICh7XG4gICAgLi4uc2hhcGVIb29rLnN0YXRlLFxuICAgIG1vZGVsSWRzQ2FjaGVTdHJpbmc6IHNoYXBlSG9vay5tb2RlbElkc0NhY2hlU3RyaW5nKCksXG4gICAgcXVlcnlOYW1lOiBzaGFwZUhvb2sucXVlcnlOYW1lKCksXG4gICAgcXVlcnlQZXJLZXk6IHNoYXBlSG9vay5xdWVyeVBlcktleSgpLFxuICAgIHF1ZXJ5UU5hbWU6IHNoYXBlSG9vay5xdWVyeVFOYW1lKCksXG4gICAgcXVlcnlTTmFtZTogc2hhcGVIb29rLnF1ZXJ5U05hbWUoKSxcbiAgICBxdWVyeVBhZ2VOYW1lOiBzaGFwZUhvb2sucXVlcnlQYWdlTmFtZSgpXG4gIH0pXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gaW5mbGVjdGlvbi5wbHVyYWxpemUoaW5mbGVjdGlvbi5jYW1lbGl6ZShzaGFwZUhvb2sucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgdHJ1ZSkpXG5cbiAgcmVzdWx0W21vZGVsVmFyaWFibGVOYW1lXSA9IHNoYXBlSG9vay5zLm1vZGVsc1xuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ29sbGVjdGlvblxuIl19
|
|
460
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1jb2xsZWN0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWiw2RkFBNkY7QUFDN0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6RCxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQy9CLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBRTFFLHlFQUF5RTtBQUN6RSxxRUFBcUU7QUFDckUsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUNuRSxnRUFBZ0U7QUFDaEUsNEZBQTRGO0FBQzVGLDhGQUE4RjtBQUM5Rix5RkFBeUY7QUFDekYsb0dBQW9HO0FBQ3BHLGtHQUFrRztBQUNsRywySEFBMkg7QUFDM0g7Ozs7Ozs7R0FPRztBQUNILDBGQUEwRjtBQUMxRixnR0FBZ0c7QUFDaEc7Ozs7O0dBS0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUg7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw4Q0FBOEM7QUFDOUMsd0VBQXdFO0FBQ3hFLE1BQU0sc0JBQXVCLFNBQVEsU0FBUztJQUM1QyxLQUFLLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztRQUN2QixPQUFPLEVBQUUsRUFBRTtRQUNYLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLDZCQUE2QixFQUFFLEtBQUs7UUFDcEMseUJBQXlCLEVBQUUsS0FBSztLQUNqQyxDQUFDLENBQUE7SUFFRjs7O09BR0c7SUFDSCxZQUFZLEtBQUs7UUFDZixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDWixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7SUFDOUIsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDdEYsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixXQUFXO1FBQ1QsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFBO0lBQ2xDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsVUFBVTtRQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQTtJQUNoQyxDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLFVBQVU7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUE7SUFDaEMsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixhQUFhO1FBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFBO0lBQ25DLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsT0FBTyxrQkFBa0IsQ0FBQTtRQUMzQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxXQUFXLENBQUE7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILDZCQUE2QixDQUFDLElBQUk7UUFDaEMsSUFBSSxNQUFNLEVBQUUsWUFBWSxDQUFBO1FBRXhCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUN0QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUNsQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUE7UUFDcEMsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCLEtBQUssU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFBO1FBQ3RILElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksWUFBWSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRTlGLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLElBQUk7UUFDNUIsSUFBSSxNQUFNLEVBQUUsWUFBWSxDQUFBO1FBRXhCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUN0QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUNsQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUE7UUFDcEMsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUVwRiw4RUFBOEU7UUFDOUUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxZQUFZLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDL0YsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRXBFLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELCtCQUErQjtJQUMvQixnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRTtRQUM1QixpR0FBaUc7UUFDakcsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFBO1FBRXRFLElBQUksQ0FBQywwQkFBMEIsR0FBRywwQkFBMEIsQ0FBQTtRQUU1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM5RCxNQUFNLFlBQVksR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUU1QyxJQUFJLDBCQUEwQixJQUFJLElBQUksQ0FBQywwQkFBMEI7WUFBRSxPQUFNO1FBRXpFLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxFQUFDLFlBQVksRUFBQyxDQUFDLENBQUE7UUFDekYsSUFBSSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsRUFBQyxZQUFZLEVBQUMsQ0FBQyxDQUFBO0lBQ25GLENBQUMsQ0FBQTtJQUVELCtFQUErRTtJQUMvRSxXQUFXO1FBQ1QsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUMxRCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUE7UUFFdkIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUQsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN0RSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxLQUFLLE1BQU0sY0FBYyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDakUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUVwRCxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7WUFDdEMsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUE7UUFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO1FBRWxDLE9BQU87WUFDTCxPQUFPLEVBQUUsWUFBWTtZQUNyQixZQUFZO1NBQ2IsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtRQUN0QixPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3ZDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWTtTQUN2RCxDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDL0IsaUdBQWlHO1FBQ2pHLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQTtRQUMxRCxNQUFNLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFekQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFBO1FBQ2hELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXJFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzFELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7WUFFdEQsSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ2pCLEdBQUcsR0FBRyxXQUFXLENBQUE7WUFDbkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDbkIsQ0FBQztZQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztZQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU1RCxLQUFLLEdBQUcsS0FBSzthQUNWLE9BQU8sQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25GLE1BQU0sQ0FBQyxZQUFZLENBQUM7YUFDcEIsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUU3QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN2RCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDbkQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDakQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWE7WUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFbkUsSUFBSSxNQUFNLENBQUE7UUFFVixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFBO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQy9CLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFOUIsSUFBSSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTTtRQUU3RCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7Z0JBQ3BCLE1BQU07Z0JBQ04sT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDdkIsS0FBSztnQkFDTCxNQUFNO2FBQ1AsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDcEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQTtRQUNuRixJQUFJLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQyxDQUFBO0lBRUQsK0NBQStDO0lBQy9DLGdCQUFnQixDQUFDLElBQUk7UUFDbkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUUxQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLDhCQUE4QixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksOEJBQThCLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RKLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsY0FBYyxDQUFDLElBQUk7UUFDakIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLDhCQUE4QixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksOEJBQThCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRW5KLElBQUksVUFBVTtZQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUE7SUFDN0MsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixTQUFTO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQTtJQUMzQixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO1FBRW5DLDhIQUE4SDtRQUM5SCxTQUFTLENBQ1AsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVztnQkFBRSxPQUFNO1lBQy9CLElBQUksY0FBYyxDQUFBO1lBRWxCLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDNUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDdkMsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QyxjQUFjLEdBQUcsSUFBSSxDQUFBO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUE7WUFDckMsQ0FBQztZQUVELElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO2dCQUVsRCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUE7WUFDMUMsQ0FBQztRQUNILENBQUMsRUFDRDtZQUNFLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTtZQUNqQixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVztZQUNsQixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVU7U0FDbEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDM0IsQ0FBQTtRQUVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXO2dCQUFFLE9BQU07WUFDL0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBQ3pCLENBQUM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFFM0MsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRTFELHdGQUF3RjtRQUN4RixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUE7WUFDOUIsSUFBSSxDQUFDLDBCQUEwQixJQUFJLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBQ3JDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVOLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUE7WUFFdEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2xDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUN4RixXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQzlGLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDckMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFBO2dCQUMxQixDQUFDO1lBQ0gsQ0FBQyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDOUMsTUFBTSxFQUNKLFNBQVMsRUFDVCxVQUFVLEVBQ1YsYUFBYSxFQUNiLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxFQUNMLFVBQVUsRUFDVix5QkFBeUIsR0FBRyxTQUFTLEVBQ3JDLHFCQUFxQixHQUFHLFNBQVMsRUFDakMsY0FBYyxFQUNkLFVBQVUsR0FBRyxLQUFLLEVBQ2xCLFFBQVEsR0FBRyxFQUFFLEVBQ2IsV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxHQUFHLEVBQUUsRUFDWCxhQUFhLEVBQ2IsR0FBRyxTQUFTLEVBQ2IsR0FBRyxLQUFLLENBQUE7SUFFVCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixFQUFFO1FBQ3JELFNBQVM7UUFDVCxTQUFTO1FBQ1QsVUFBVTtRQUNWLGFBQWE7UUFDYixPQUFPO1FBQ1AsV0FBVztRQUNYLEtBQUs7UUFDTCxVQUFVO1FBQ1YseUJBQXlCO1FBQ3pCLHFCQUFxQjtRQUNyQixjQUFjO1FBQ2QsVUFBVTtRQUNWLFFBQVE7UUFDUixXQUFXO1FBQ1gsU0FBUztRQUNULE9BQU87UUFDUCxNQUFNO1FBQ04sYUFBYTtLQUNkLENBQUMsQ0FBQTtJQUNGLE1BQU0sTUFBTSxHQUFHLHVDQUF1QyxDQUFDLENBQUM7UUFDdEQsR0FBRyxTQUFTLENBQUMsS0FBSztRQUNsQixtQkFBbUIsRUFBRSxTQUFTLENBQUMsbUJBQW1CLEVBQUU7UUFDcEQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUU7UUFDaEMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUU7UUFDcEMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUU7UUFDbEMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUU7UUFDbEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhLEVBQUU7S0FDekMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFdkgsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFFOUMsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxlQUFlLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMsIG5vLXVzZS1iZWZvcmUtZGVmaW5lLCBwcmVmZXItb2JqZWN0LXNwcmVhZCwgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge1NoYXBlSG9vaywgdXNlU2hhcGVIb29rfSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmVcIlxuaW1wb3J0IGRlYm91bmNlIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZUNyZWF0ZWRFdmVudCBmcm9tIFwiLi91c2UtY3JlYXRlZC1ldmVudC5qc1wiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtcy5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWxDbGFzcyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsSW5zdGFuY2UgKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsSW5zdGFuY2UgJiB7aWQ6ICgpID0+IG51bWJlciB8IHN0cmluZ319IEJhc2VNb2RlbFdpdGhJZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gTW9kZWxDb2xsZWN0aW9uICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vcmVzdWx0LmpzXCIpLmRlZmF1bHR9IENvbGxlY3Rpb25SZXN1bHQgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLkNvbGxlY3Rpb25TZWFyY2hQYXJhbXN9IFVzZUNvbGxlY3Rpb25TZWFyY2hQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLkNvbGxlY3Rpb25SYW5zYWNrUGFyYW1zfSBVc2VDb2xsZWN0aW9uUmFuc2Fja1BhcmFtcyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuUXVlcnlQYXJhbVZhbHVlTWFwfSBVc2VDb2xsZWN0aW9uRGVmYXVsdFBhcmFtcyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuUXVlcnlQYXJhbVZhbHVlIHwgdW5kZWZpbmVkfSBVc2VDb2xsZWN0aW9uUXVlcnlQYXJhbVZhbHVlICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIFVzZUNvbGxlY3Rpb25RdWVyeVBhcmFtVmFsdWUgfCBzdHJpbmdbXT59IFVzZUNvbGxlY3Rpb25RdWVyeVBhcmFtcyAqL1xuLyoqIEB0eXBlZGVmIHsoYXJnczoge3F1ZXJ5OiBNb2RlbENvbGxlY3Rpb259KSA9PiBQcm9taXNlPENvbGxlY3Rpb25SZXN1bHQ+IHwgQ29sbGVjdGlvblJlc3VsdH0gVXNlQ29sbGVjdGlvblF1ZXJ5TWV0aG9kICovXG4vKipcbiAqIEB0eXBlZGVmIHsoYXJnczoge1xuICogICBtb2RlbHM6IEJhc2VNb2RlbEluc3RhbmNlW10sXG4gKiAgIHFQYXJhbXM6IFVzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zLFxuICogICBxdWVyeTogTW9kZWxDb2xsZWN0aW9uLFxuICogICByZXN1bHQ6IENvbGxlY3Rpb25SZXN1bHRcbiAqIH0pID0+IHZvaWR9IE9uTW9kZWxzTG9hZGVkQ2FsbGJhY2tcbiAqL1xuLyoqIEB0eXBlZGVmIHt7bW9kZWxzPzogQmFzZU1vZGVsSW5zdGFuY2VbXSwgb3ZlcmFsbENvdW50PzogbnVtYmVyfX0gTm9SZWNvcmRzU3RhdGVBcmdzICovXG4vKiogQHR5cGVkZWYge3txUGFyYW1zPzogVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMsIHNlYXJjaFBhcmFtcz86IHN0cmluZ1tdfX0gTG9hZE1vZGVsc0FyZ3MgKi9cbi8qKlxuICogQHR5cGVkZWYge1VzZUNvbGxlY3Rpb25SZXN1bHQgJiBSZWNvcmQ8XG4gKiAgIHN0cmluZyxcbiAqICAgQmFzZU1vZGVsSW5zdGFuY2VbXSB8IHN0cmluZyB8IG51bWJlciB8IENvbGxlY3Rpb25SZXN1bHQgfCBNb2RlbENvbGxlY3Rpb24gfCBzdHJpbmdbXSB8IGZhbHNlIHwgaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlXG4gKiA+fSBVc2VDb2xsZWN0aW9uUmV0dXJuVmFsdWVcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VDb2xsZWN0aW9uSG9va1Byb3BzXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW2FiaWxpdGllc11cbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvblF1ZXJ5UGFyYW1WYWx1ZVtdfSBbY2FjaGVLZXlzXVxuICogQHByb3BlcnR5IHtNb2RlbENvbGxlY3Rpb259IFtjb2xsZWN0aW9uXVxuICogQHByb3BlcnR5IHtVc2VDb2xsZWN0aW9uRGVmYXVsdFBhcmFtc30gW2RlZmF1bHRQYXJhbXNdXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbZ3JvdXBCeV1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8ICgoKSA9PiBib29sZWFuKX0gW2lmQ29uZGl0aW9uXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtsaW1pdF1cbiAqIEBwcm9wZXJ0eSB7QmFzZU1vZGVsQ2xhc3N9IG1vZGVsQ2xhc3NcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbbm9SZWNvcmRzRm91bmRDb250ZW50XVxuICogQHByb3BlcnR5IHtPbk1vZGVsc0xvYWRlZENhbGxiYWNrfSBbb25Nb2RlbHNMb2FkZWRdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwYWdpbmF0aW9uXVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW3ByZWxvYWRzXVxuICogQHByb3BlcnR5IHtVc2VDb2xsZWN0aW9uUXVlcnlNZXRob2R9IFtxdWVyeU1ldGhvZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcXVlcnlOYW1lXVxuICogQHByb3BlcnR5IHtVc2VDb2xsZWN0aW9uUmFuc2Fja1BhcmFtc30gW3JhbnNhY2tdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdF1cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbc2VsZWN0Q29sdW1uc11cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VDb2xsZWN0aW9uUmVzdWx0XG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbEluc3RhbmNlW10gfCB1bmRlZmluZWR9IG1vZGVsc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG1vZGVsSWRzQ2FjaGVTdHJpbmdcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBvdmVyYWxsQ291bnRcbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IHFQYXJhbXNcbiAqIEBwcm9wZXJ0eSB7TW9kZWxDb2xsZWN0aW9uIHwgdW5kZWZpbmVkfSBxdWVyeVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeU5hbWVcbiAgKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlQZXJLZXlcbiAgKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlRTmFtZVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVNOYW1lXG4gICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UGFnZU5hbWVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVhZHlUb0xvYWRcbiAqIEBwcm9wZXJ0eSB7Q29sbGVjdGlvblJlc3VsdCB8IHVuZGVmaW5lZH0gcmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBzZWFyY2hQYXJhbXNcbiAgKiBAcHJvcGVydHkge2ZhbHNlIHwgaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFxuICAqIEBwcm9wZXJ0eSB7ZmFsc2UgfCBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IHByb3BzLmFiaWxpdGllc1xuICogQHBhcmFtIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gcHJvcHMuY29sbGVjdGlvblxuICogQHBhcmFtIHtVc2VDb2xsZWN0aW9uRGVmYXVsdFBhcmFtc30gcHJvcHMuZGVmYXVsdFBhcmFtc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHMuZ3JvdXBCeVxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogYm9vbGVhbn0gcHJvcHMuaWZDb25kaXRpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5saW1pdFxuICogQHBhcmFtIHtCYXNlTW9kZWxDbGFzc30gcHJvcHMubW9kZWxDbGFzc1xuICogQHBhcmFtIHtmdW5jdGlvbigpIDogaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBwcm9wcy5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50XG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IHByb3BzLm5vUmVjb3Jkc0ZvdW5kQ29udGVudFxuICogQHBhcmFtIHtPbk1vZGVsc0xvYWRlZENhbGxiYWNrfSBwcm9wcy5vbk1vZGVsc0xvYWRlZFxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5wYWdpbmF0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wcy5wcmVsb2Fkc1xuICogQHBhcmFtIHtVc2VDb2xsZWN0aW9uUXVlcnlNZXRob2R9IHByb3BzLnF1ZXJ5TWV0aG9kXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMucXVlcnlOYW1lXG4gKiBAcGFyYW0ge1VzZUNvbGxlY3Rpb25SYW5zYWNrUGFyYW1zfSBwcm9wcy5yYW5zYWNrXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gcHJvcHMuc2VsZWN0XG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gcHJvcHMuc2VsZWN0Q29sdW1uc1xuICogQHBhcmFtIHtVc2VDb2xsZWN0aW9uUXVlcnlQYXJhbVZhbHVlW119IGNhY2hlS2V5c1xuICogQHJldHVybnMge1VzZUNvbGxlY3Rpb25SZXR1cm5WYWx1ZX1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFVzZUNvbGxlY3Rpb25TdGF0ZVxuICogQHByb3BlcnR5IHtCYXNlTW9kZWxJbnN0YW5jZVtdIHwgdW5kZWZpbmVkfSBtb2RlbHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBvdmVyYWxsQ291bnRcbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IHFQYXJhbXNcbiAqIEBwcm9wZXJ0eSB7TW9kZWxDb2xsZWN0aW9uIHwgdW5kZWZpbmVkfSBxdWVyeVxuICogQHByb3BlcnR5IHtib29sZWFufSByZWFkeVRvTG9hZFxuICogQHByb3BlcnR5IHtDb2xsZWN0aW9uUmVzdWx0IHwgdW5kZWZpbmVkfSByZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW10gfCB1bmRlZmluZWR9IHNlYXJjaFBhcmFtc1xuICogQHByb3BlcnR5IHtmYWxzZSB8IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRcbiAqIEBwcm9wZXJ0eSB7ZmFsc2UgfCBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAqL1xuXG4vKiogSG9vayBzdGF0ZSBjb250YWluZXIgZm9yIHVzZUNvbGxlY3Rpb24uICovXG4vKiogQGF1Z21lbnRzIHtTaGFwZUhvb2s8VXNlQ29sbGVjdGlvbkhvb2tQcm9wcywgVXNlQ29sbGVjdGlvblN0YXRlPn0gKi9cbmNsYXNzIFVzZUNvbGxlY3Rpb25TaGFwZUhvb2sgZXh0ZW5kcyBTaGFwZUhvb2sge1xuICBzdGF0ZSA9IC8qKiBAdHlwZSB7VXNlQ29sbGVjdGlvblN0YXRlfSAqLyAoe1xuICAgIG1vZGVsczogdW5kZWZpbmVkLFxuICAgIG92ZXJhbGxDb3VudDogdW5kZWZpbmVkLFxuICAgIHFQYXJhbXM6IHt9LFxuICAgIHF1ZXJ5OiB1bmRlZmluZWQsXG4gICAgcmVhZHlUb0xvYWQ6IGZhbHNlLFxuICAgIHJlc3VsdDogdW5kZWZpbmVkLFxuICAgIHNlYXJjaFBhcmFtczogdW5kZWZpbmVkLFxuICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBmYWxzZSxcbiAgICBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50OiBmYWxzZVxuICB9KVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtVc2VDb2xsZWN0aW9uSG9va1Byb3BzfSBwcm9wc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uID0gMFxuICAgIHRoaXMubG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gPSAwXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5UGVyS2V5KCkge1xuICAgIHJldHVybiBgJHt0aGlzLnF1ZXJ5TmFtZSgpfV9wZXJgXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgcXVlcnlRTmFtZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5xdWVyeU5hbWUoKX1fcWBcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeVNOYW1lKCkge1xuICAgIHJldHVybiBgJHt0aGlzLnF1ZXJ5TmFtZSgpfV9zYFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5UGFnZU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMucXVlcnlOYW1lKCl9X3BhZ2VgXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgbW9kZWxJZHNDYWNoZVN0cmluZygpIHtcbiAgICBpZiAodGhpcy5zLm1vZGVscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gXCJtb2RlbHMtdW5kZWZpbmVkXCJcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gXCJuby1tb2RlbHNcIlxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zLm1vZGVscy5tYXAoKG1vZGVsKSA9PiBtb2RlbC5jYWNoZUtleSgpKT8uam9pbihcIi0tLVwiKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7RnVuY3Rpb24gJiB7Y2xlYXI/OiAoKSA9PiB2b2lkfX0gKi9cbiAgbG9hZE1vZGVsc0RlYm91bmNlKCkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlKFwibG9hZE1vZGVsc0RlYm91bmNlXCIsICgpID0+IGRlYm91bmNlKCgpID0+IHRoaXMubG9hZE1vZGVscygpKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vUmVjb3Jkc1N0YXRlQXJnc30gYXJnc1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KGFyZ3MpIHtcbiAgICBsZXQgbW9kZWxzLCBvdmVyYWxsQ291bnRcblxuICAgIGlmIChhcmdzLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSBhcmdzLm1vZGVsc1xuICAgIH0gZWxzZSBpZiAodGhpcy5zLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSB0aGlzLnMubW9kZWxzXG4gICAgfVxuXG4gICAgaWYgKGFyZ3Mub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IGFyZ3Mub3ZlcmFsbENvdW50XG4gICAgfSBlbHNlIGlmICh0aGlzLnMub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IHRoaXMucy5vdmVyYWxsQ291bnRcbiAgICB9XG5cbiAgICBpZiAobW9kZWxzID09PSB1bmRlZmluZWQgfHwgb3ZlcmFsbENvdW50ID09PSB1bmRlZmluZWQgfHwgdGhpcy5wLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKG1vZGVscy5sZW5ndGggPT09IDAgJiYgb3ZlcmFsbENvdW50ID09PSAwICYmIHRoaXMucC5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50KSByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtOb1JlY29yZHNTdGF0ZUFyZ3N9IGFyZ3NcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50KGFyZ3MpIHtcbiAgICBsZXQgbW9kZWxzLCBvdmVyYWxsQ291bnRcblxuICAgIGlmIChhcmdzLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSBhcmdzLm1vZGVsc1xuICAgIH0gZWxzZSBpZiAodGhpcy5zLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSB0aGlzLnMubW9kZWxzXG4gICAgfVxuXG4gICAgaWYgKGFyZ3Mub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IGFyZ3Mub3ZlcmFsbENvdW50XG4gICAgfSBlbHNlIGlmICh0aGlzLnMub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IHRoaXMucy5vdmVyYWxsQ291bnRcbiAgICB9XG5cbiAgICBpZiAobW9kZWxzID09PSB1bmRlZmluZWQgfHwgdGhpcy5wLm5vUmVjb3Jkc0ZvdW5kQ29udGVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2VcblxuICAgIC8vIERvbnQgc2hvdyBub1JlY29yZHNBdmFpbGFibGVDb250ZW50IHRvZ2V0aGVyIHdpdGggbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwICYmIG92ZXJhbGxDb3VudCA9PT0gMCAmJiB0aGlzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKG1vZGVscy5sZW5ndGggPT09IDAgJiYgdGhpcy5wLm5vUmVjb3Jkc0ZvdW5kQ29udGVudCkgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBsb2FkT3ZlcmFsbENvdW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIElnbm9yZSBsYXRlIG92ZXJhbGwtY291bnQgcmVzcG9uc2VzIG9uY2UgYSBuZXdlciBsb2FkIGN5Y2xlIGhhcyBzdGFydGVkIG9yIHRoZSBob29rIHVubW91bnRlZC5cbiAgICBjb25zdCBsb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbiA9IHRoaXMubG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gKyAxXG5cbiAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uID0gbG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb25cblxuICAgIGNvbnN0IGJhc2VRdWVyeSA9IHRoaXMucC5jb2xsZWN0aW9uIHx8IHRoaXMucC5tb2RlbENsYXNzLmFsbCgpXG4gICAgY29uc3Qgb3ZlcmFsbENvdW50ID0gYXdhaXQgYmFzZVF1ZXJ5LmNvdW50KClcblxuICAgIGlmIChsb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uKSByZXR1cm5cblxuICAgIHRoaXMucy5vdmVyYWxsQ291bnQgPSBvdmVyYWxsQ291bnRcbiAgICB0aGlzLnMuc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgPSB0aGlzLnNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KHtvdmVyYWxsQ291bnR9KVxuICAgIHRoaXMucy5zaG93Tm9SZWNvcmRzRm91bmRDb250ZW50ID0gdGhpcy5zaG93Tm9SZWNvcmRzRm91bmRDb250ZW50KHtvdmVyYWxsQ291bnR9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt7cVBhcmFtczogVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMsIHNlYXJjaFBhcmFtczogc3RyaW5nW119fSAqL1xuICBsb2FkUVBhcmFtcygpIHtcbiAgICBsZXQgcVBhcmFtc1RvU2V0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wLmRlZmF1bHRQYXJhbXMpXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gW11cblxuICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zICYmIHRoaXMucXVlcnlRTmFtZSgpIGluIHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHFQYXJhbXNUb1NldCA9IEpTT04ucGFyc2UoZGlnZyh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLnF1ZXJ5UU5hbWUoKSkpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5U05hbWUoKV0pIHtcbiAgICAgIGZvciAoY29uc3QgcmF3U2VhcmNoUGFyYW0gb2YgdGhpcy5xdWVyeVBhcmFtc1t0aGlzLnF1ZXJ5U05hbWUoKV0pIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU2VhcmNoUGFyYW0gPSBKU09OLnBhcnNlKHJhd1NlYXJjaFBhcmFtKVxuXG4gICAgICAgIHNlYXJjaFBhcmFtcy5wdXNoKHBhcnNlZFNlYXJjaFBhcmFtKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucy5xUGFyYW1zID0gcVBhcmFtc1RvU2V0XG4gICAgdGhpcy5zLnNlYXJjaFBhcmFtcyA9IHNlYXJjaFBhcmFtc1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHFQYXJhbXM6IHFQYXJhbXNUb1NldCxcbiAgICAgIHNlYXJjaFBhcmFtc1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdXG4gICAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IFthcmdzLnFQYXJhbXNdXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzLnNlYXJjaFBhcmFtc11cbiAgICogQHJldHVybnMge3txUGFyYW1zOiBVc2VDb2xsZWN0aW9uRGVmYXVsdFBhcmFtcywgc2VhcmNoUGFyYW1zOiBzdHJpbmdbXX19XG4gICAqL1xuICBsb2FkTW9kZWxzQXJncyhhcmdzID0ge30pIHtcbiAgICByZXR1cm4ge1xuICAgICAgcVBhcmFtczogYXJncy5xUGFyYW1zID8/IHRoaXMucy5xUGFyYW1zLFxuICAgICAgc2VhcmNoUGFyYW1zOiBhcmdzLnNlYXJjaFBhcmFtcyA/PyB0aGlzLnMuc2VhcmNoUGFyYW1zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtVc2VDb2xsZWN0aW9uRGVmYXVsdFBhcmFtc30gW2FyZ3MucVBhcmFtc11cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3Muc2VhcmNoUGFyYW1zXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGxvYWRNb2RlbHMgPSBhc3luYyAoYXJncyA9IHt9KSA9PiB7XG4gICAgLy8gT25seSB0aGUgbmV3ZXN0IGNvbGxlY3Rpb24gcmVxdWVzdCBpcyBhbGxvd2VkIHRvIHVwZGF0ZSBzdGF0ZSBhZnRlciBuYXZpZ2F0aW9uL2ZpbHRlciBjaGFuZ2VzLlxuICAgIGNvbnN0IGxvYWRNb2RlbHNHZW5lcmF0aW9uID0gdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbiArIDFcbiAgICBjb25zdCB7cVBhcmFtcywgc2VhcmNoUGFyYW1zfSA9IHRoaXMubG9hZE1vZGVsc0FyZ3MoYXJncylcblxuICAgIHRoaXMubG9hZE1vZGVsc0dlbmVyYXRpb24gPSBsb2FkTW9kZWxzR2VuZXJhdGlvblxuICAgIGxldCBxdWVyeSA9IHRoaXMucC5jb2xsZWN0aW9uPy5jbG9uZSgpIHx8IHRoaXMucC5tb2RlbENsYXNzLnJhbnNhY2soKVxuXG4gICAgaWYgKHRoaXMucC5wYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlID0gdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQYWdlTmFtZSgpXSB8fCAxXG4gICAgICBsZXQgcGVyID0gdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQZXJLZXkoKV0gfHwgMzBcblxuICAgICAgaWYgKHBlciA9PSBcImFsbFwiKSB7XG4gICAgICAgIHBlciA9IDk5OV85OTlfOTk5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZXIgPSBOdW1iZXIocGVyKVxuICAgICAgfVxuXG4gICAgICBxdWVyeS5wYWdlKHBhZ2UpLnBlcihwZXIpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucC5ncm91cEJ5KSBxdWVyeSA9IHF1ZXJ5Lmdyb3VwQnkoLi4udGhpcy5wLmdyb3VwQnkpXG5cbiAgICBxdWVyeSA9IHF1ZXJ5XG4gICAgICAucmFuc2FjaygvKiogQHR5cGUge2ltcG9ydChcIi4vY29sbGVjdGlvbi5qc1wiKS5Db2xsZWN0aW9uUmFuc2Fja1BhcmFtc30gKi8gKHFQYXJhbXMpKVxuICAgICAgLnNlYXJjaChzZWFyY2hQYXJhbXMpXG4gICAgICAuc2VhcmNoS2V5KHRoaXMucXVlcnlRTmFtZSgpKVxuICAgICAgLnBhZ2VLZXkodGhpcy5xdWVyeVBhZ2VOYW1lKCkpXG4gICAgICAucGVyS2V5KHRoaXMucXVlcnlQZXJLZXkoKSlcblxuICAgIGlmICh0aGlzLnAuYWJpbGl0aWVzKSBxdWVyeS5hYmlsaXRpZXModGhpcy5wLmFiaWxpdGllcylcbiAgICBpZiAodGhpcy5wLmxpbWl0ICE9PSB1bmRlZmluZWQpIHF1ZXJ5LmxpbWl0KHRoaXMucC5saW1pdClcbiAgICBpZiAodGhpcy5wLnByZWxvYWRzKSBxdWVyeS5wcmVsb2FkKHRoaXMucC5wcmVsb2FkcylcbiAgICBpZiAodGhpcy5wLnJhbnNhY2spIHF1ZXJ5LnJhbnNhY2sodGhpcy5wLnJhbnNhY2spXG4gICAgaWYgKHRoaXMucC5zZWxlY3QpIHF1ZXJ5LnNlbGVjdCh0aGlzLnAuc2VsZWN0KVxuICAgIGlmICh0aGlzLnAuc2VsZWN0Q29sdW1ucykgcXVlcnkuc2VsZWN0Q29sdW1ucyh0aGlzLnAuc2VsZWN0Q29sdW1ucylcblxuICAgIGxldCByZXN1bHRcblxuICAgIGlmICh0aGlzLnAucXVlcnlNZXRob2QpIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMucC5xdWVyeU1ldGhvZCh7cXVlcnl9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBxdWVyeS5yZXN1bHQoKVxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVscyA9IHJlc3VsdC5tb2RlbHMoKVxuXG4gICAgaWYgKGxvYWRNb2RlbHNHZW5lcmF0aW9uICE9IHRoaXMubG9hZE1vZGVsc0dlbmVyYXRpb24pIHJldHVyblxuXG4gICAgaWYgKHRoaXMucC5vbk1vZGVsc0xvYWRlZCkge1xuICAgICAgdGhpcy5wLm9uTW9kZWxzTG9hZGVkKHtcbiAgICAgICAgbW9kZWxzLFxuICAgICAgICBxUGFyYW1zOiB0aGlzLnMucVBhcmFtcyxcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHJlc3VsdFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLnMubW9kZWxzID0gbW9kZWxzXG4gICAgdGhpcy5zLnF1ZXJ5ID0gcXVlcnlcbiAgICB0aGlzLnMucmVzdWx0ID0gcmVzdWx0XG4gICAgdGhpcy5zLnNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50ID0gdGhpcy5zaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCh7bW9kZWxzfSlcbiAgICB0aGlzLnMuc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCA9IHRoaXMuc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCh7bW9kZWxzfSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3ttb2RlbDogQmFzZU1vZGVsSW5zdGFuY2V9fSBhcmdzICovXG4gIG9uTW9kZWxEZXN0cm95ZWQoYXJncykge1xuICAgIGNvbnN0IGRlc3Ryb3llZE1vZGVsID0gZGlnZyhhcmdzLCBcIm1vZGVsXCIpXG5cbiAgICB0aGlzLnMubW9kZWxzID0gdGhpcy5zLm1vZGVscy5maWx0ZXIoKG1vZGVsKSA9PiAvKiogQHR5cGUge0Jhc2VNb2RlbFdpdGhJZH0gKi8gKG1vZGVsKS5pZCgpICE9IC8qKiBAdHlwZSB7QmFzZU1vZGVsV2l0aElkfSAqLyAoZGVzdHJveWVkTW9kZWwpLmlkKCkpXG4gIH1cblxuICAvKiogQHBhcmFtIHt7bW9kZWw6IEJhc2VNb2RlbEluc3RhbmNlfX0gYXJncyAqL1xuICBvbk1vZGVsVXBkYXRlZChhcmdzKSB7XG4gICAgY29uc3QgdXBkYXRlZE1vZGVsID0gZGlnZyhhcmdzLCBcIm1vZGVsXCIpXG4gICAgY29uc3QgZm91bmRNb2RlbCA9IHRoaXMucy5tb2RlbHMuZmluZCgobW9kZWwpID0+IC8qKiBAdHlwZSB7QmFzZU1vZGVsV2l0aElkfSAqLyAobW9kZWwpLmlkKCkgPT0gLyoqIEB0eXBlIHtCYXNlTW9kZWxXaXRoSWR9ICovICh1cGRhdGVkTW9kZWwpLmlkKCkpXG5cbiAgICBpZiAoZm91bmRNb2RlbCkgdGhpcy5sb2FkTW9kZWxzRGVib3VuY2UoKSgpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIG9uQ3JlYXRlZCgpIHtcbiAgICB0aGlzLmxvYWRNb2RlbHNEZWJvdW5jZSgpKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5zLnJlYWR5VG9Mb2FkID0gdHJ1ZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBzZXR1cCgpIHtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdXNlUXVlcnlQYXJhbXMoKVxuXG4gICAgLy8gV2FpdCB1bnRpbCBjb21wb25lbnREaWRNb3VudCBoYXMgZmxpcHBlZCByZWFkeVRvTG9hZCBzbyB0aGUgZmlyc3QgbG9hZCBydW5zIGFmdGVyIHVzZVNoYXBlSG9vayBoYXMgbWFya2VkIHRoZSBob29rIG1vdW50ZWQuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucy5yZWFkeVRvTG9hZCkgcmV0dXJuXG4gICAgICAgIGxldCBpZkNvbmRpdGlvbk1ldFxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wLmlmQ29uZGl0aW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIGlmQ29uZGl0aW9uTWV0ID0gdGhpcy5wLmlmQ29uZGl0aW9uKClcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnAuaWZDb25kaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmQ29uZGl0aW9uTWV0ID0gdHJ1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmQ29uZGl0aW9uTWV0ID0gdGhpcy5wLmlmQ29uZGl0aW9uXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWZDb25kaXRpb25NZXQpIHtcbiAgICAgICAgICBjb25zdCB7cVBhcmFtcywgc2VhcmNoUGFyYW1zfSA9IHRoaXMubG9hZFFQYXJhbXMoKVxuXG4gICAgICAgICAgdGhpcy5sb2FkTW9kZWxzKHtxUGFyYW1zLCBzZWFyY2hQYXJhbXN9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICB0aGlzLnAubW9kZWxDbGFzcyxcbiAgICAgICAgdGhpcy5wLmlmQ29uZGl0aW9uLFxuICAgICAgICB0aGlzLnF1ZXJ5TmFtZSgpLFxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zPy5bdGhpcy5xdWVyeVFOYW1lKCldLFxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zPy5bdGhpcy5xdWVyeVBhZ2VOYW1lKCldLFxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zPy5bdGhpcy5xdWVyeVBlcktleSgpXSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlTTmFtZSgpXSxcbiAgICAgICAgdGhpcy5zLnJlYWR5VG9Mb2FkLFxuICAgICAgICB0aGlzLnAuY29sbGVjdGlvblxuICAgICAgXS5jb25jYXQodGhpcy5wLmNhY2hlS2V5cylcbiAgICApXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnMucmVhZHlUb0xvYWQpIHJldHVyblxuICAgICAgaWYgKHRoaXMucC5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50KSB7XG4gICAgICAgIHRoaXMubG9hZE92ZXJhbGxDb3VudCgpXG4gICAgICB9XG4gICAgfSwgW3RoaXMucC5tb2RlbENsYXNzLCB0aGlzLnMucmVhZHlUb0xvYWRdKVxuXG4gICAgdXNlQ3JlYXRlZEV2ZW50KHRoaXMucC5tb2RlbENsYXNzLCAoKSA9PiB0aGlzLm9uQ3JlYXRlZCgpKVxuXG4gICAgLy8gSW52YWxpZGF0ZSBhbnkgaW4tZmxpZ2h0IGFzeW5jIHJlc3BvbnNlcyBzbyB1bm1vdW50ZWQgaG9va3MgY2Fubm90IHdyaXRlIHN0YWxlIHN0YXRlLlxuICAgIHVzZUVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uICs9IDFcbiAgICAgIHRoaXMubG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gKz0gMVxuICAgICAgdGhpcy5sb2FkTW9kZWxzRGVib3VuY2UoKS5jbGVhcj8uKClcbiAgICB9LCBbXSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjb25uZWN0aW9ucyA9IFtdXG5cbiAgICAgIGlmICh0aGlzLnMubW9kZWxzKSB7XG4gICAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgdGhpcy5zLm1vZGVscykge1xuICAgICAgICAgIGNvbm5lY3Rpb25zLnB1c2goTW9kZWxFdmVudHMuY29ubmVjdFVwZGF0ZWQobW9kZWwsIChhcmdzKSA9PiB0aGlzLm9uTW9kZWxVcGRhdGVkKGFyZ3MpKSlcbiAgICAgICAgICBjb25uZWN0aW9ucy5wdXNoKE1vZGVsRXZlbnRzLmNvbm5lY3REZXN0cm95ZWQobW9kZWwsIChhcmdzKSA9PiB0aGlzLm9uTW9kZWxEZXN0cm95ZWQoYXJncykpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY29ubmVjdGlvbiBvZiBjb25uZWN0aW9ucykge1xuICAgICAgICAgIGNvbm5lY3Rpb24udW5zdWJzY3JpYmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW3RoaXMubW9kZWxJZHNDYWNoZVN0cmluZygpXSlcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkhvb2tQcm9wc30gcHJvcHNcbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvblF1ZXJ5UGFyYW1WYWx1ZVtdfSBbY2FjaGVLZXlzXVxuICogQHJldHVybnMge1VzZUNvbGxlY3Rpb25SZXR1cm5WYWx1ZX1cbiAqL1xuY29uc3QgdXNlQ29sbGVjdGlvbiA9IChwcm9wcywgY2FjaGVLZXlzID0gW10pID0+IHtcbiAgY29uc3Qge1xuICAgIGFiaWxpdGllcyxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgZ3JvdXBCeSxcbiAgICBpZkNvbmRpdGlvbixcbiAgICBsaW1pdCxcbiAgICBtb2RlbENsYXNzLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgPSB1bmRlZmluZWQsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50ID0gdW5kZWZpbmVkLFxuICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgIHBhZ2luYXRpb24gPSBmYWxzZSxcbiAgICBwcmVsb2FkcyA9IFtdLFxuICAgIHF1ZXJ5TWV0aG9kLFxuICAgIHF1ZXJ5TmFtZSxcbiAgICByYW5zYWNrLFxuICAgIHNlbGVjdCA9IHt9LFxuICAgIHNlbGVjdENvbHVtbnMsXG4gICAgLi4ucmVzdFByb3BzXG4gIH0gPSBwcm9wc1xuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvcHMgZ2l2ZW4gdG8gdXNlQ29sbGVjdGlvbjogJHtPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgY29uc3Qgc2hhcGVIb29rID0gdXNlU2hhcGVIb29rKFVzZUNvbGxlY3Rpb25TaGFwZUhvb2ssIHtcbiAgICBhYmlsaXRpZXMsXG4gICAgY2FjaGVLZXlzLFxuICAgIGNvbGxlY3Rpb24sXG4gICAgZGVmYXVsdFBhcmFtcyxcbiAgICBncm91cEJ5LFxuICAgIGlmQ29uZGl0aW9uLFxuICAgIGxpbWl0LFxuICAgIG1vZGVsQ2xhc3MsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICBub1JlY29yZHNGb3VuZENvbnRlbnQsXG4gICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgcGFnaW5hdGlvbixcbiAgICBwcmVsb2FkcyxcbiAgICBxdWVyeU1ldGhvZCxcbiAgICBxdWVyeU5hbWUsXG4gICAgcmFuc2FjayxcbiAgICBzZWxlY3QsXG4gICAgc2VsZWN0Q29sdW1uc1xuICB9KVxuICBjb25zdCByZXN1bHQgPSAvKiogQHR5cGUge1VzZUNvbGxlY3Rpb25SZXR1cm5WYWx1ZX0gKi8gKHtcbiAgICAuLi5zaGFwZUhvb2suc3RhdGUsXG4gICAgbW9kZWxJZHNDYWNoZVN0cmluZzogc2hhcGVIb29rLm1vZGVsSWRzQ2FjaGVTdHJpbmcoKSxcbiAgICBxdWVyeU5hbWU6IHNoYXBlSG9vay5xdWVyeU5hbWUoKSxcbiAgICBxdWVyeVBlcktleTogc2hhcGVIb29rLnF1ZXJ5UGVyS2V5KCksXG4gICAgcXVlcnlRTmFtZTogc2hhcGVIb29rLnF1ZXJ5UU5hbWUoKSxcbiAgICBxdWVyeVNOYW1lOiBzaGFwZUhvb2sucXVlcnlTTmFtZSgpLFxuICAgIHF1ZXJ5UGFnZU5hbWU6IHNoYXBlSG9vay5xdWVyeVBhZ2VOYW1lKClcbiAgfSlcbiAgY29uc3QgbW9kZWxWYXJpYWJsZU5hbWUgPSBpbmZsZWN0aW9uLnBsdXJhbGl6ZShpbmZsZWN0aW9uLmNhbWVsaXplKHNoYXBlSG9vay5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lLCB0cnVlKSlcblxuICByZXN1bHRbbW9kZWxWYXJpYWJsZU5hbWVdID0gc2hhcGVIb29rLnMubW9kZWxzXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDb2xsZWN0aW9uXG4iXX0=
|
|
@@ -94,7 +94,7 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
94
94
|
return;
|
|
95
95
|
if (current)
|
|
96
96
|
Devise.updateSession(current);
|
|
97
|
-
this.
|
|
97
|
+
this.s.result = { loaded: true, model: current };
|
|
98
98
|
events.emit("currentUserLoaded", { current });
|
|
99
99
|
};
|
|
100
100
|
defaultCurrentUser = () => {
|
|
@@ -112,7 +112,7 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
112
112
|
return current;
|
|
113
113
|
};
|
|
114
114
|
updateCurrentUser = () => {
|
|
115
|
-
this.
|
|
115
|
+
this.s.result = { loaded: true, model: Devise[this.scopeName]() };
|
|
116
116
|
};
|
|
117
117
|
onDeviseSignIn = () => {
|
|
118
118
|
// Invalidate any in-flight loadCurrentUserFromRequest — it was dispatched
|
|
@@ -130,4 +130,4 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
130
130
|
this.updateCurrentUser();
|
|
131
131
|
};
|
|
132
132
|
}));
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWN1cnJlbnQtdXNlci1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtY3VycmVudC11c2VyLWNvbnRleHQuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBQ3BDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHVCQUF1QixDQUFBO0FBQzVDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sZUFBZSxNQUFNLHNCQUFzQixDQUFBO0FBQ2xELE9BQU8sTUFBTSxNQUFNLG9DQUFvQyxDQUFBO0FBRXZELE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUMsSUFBSSxFQUFFLGtDQUFrQyxFQUFDLENBQUMsQ0FBQTtBQUVyRTs7R0FFRztBQUNIOzs7O0dBSUc7QUFDSDs7OztHQUlHO0FBQ0g7OztHQUdHO0FBQ0gsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLE1BQU0sNkJBQThCLFNBQVEsY0FBYztJQUMzSSxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDeEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0tBQ3hCLENB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LHlFQUF5RTtRQUN6RSx3RUFBd0U7UUFDeEUseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7SUFDMUIsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2UuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXIuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlcy5qc1wiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IHtldmVudHN9IGZyb20gXCIuL3VzZS1jdXJyZW50LXVzZXIuanNcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcInlhLXVzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VOb3cgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3VzZS1ub3cuanNcIlxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHtuYW1lOiBcIkFwaU1ha2VyIC8gVXNlQ3VycmVudFVzZXJDb250ZXh0XCJ9KVxuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL3VzZS1jdXJyZW50LXVzZXIuanNcIikuQ3VycmVudFVzZXJNb2RlbH0gQ3VycmVudFVzZXJNb2RlbFxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlc3VsdFxuICogQHByb3BlcnR5IHtib29sZWFufSBsb2FkZWRcbiAqIEBwcm9wZXJ0eSB7Q3VycmVudFVzZXJNb2RlbH0gbW9kZWxcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IGNoaWxkcmVuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Njb3BlXVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN0YXRlXG4gKiBAcHJvcGVydHkge1Jlc3VsdH0gcmVzdWx0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJVc2VDdXJyZW50VXNlckNvbnRleHQgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIHNjb3BlOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pXG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBzY29wZTogXCJ1c2VyXCJcbiAgfVxuXG4gIHN0YXRlID0ge1xuICAgIHJlc3VsdDogLyoqIEB0eXBlIHtSZXN1bHR9ICovICh7XG4gICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgbW9kZWw6IG51bGxcbiAgICB9KVxuICB9XG5cbiAgbG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkID0gMFxuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KFwicmVhY3RcIikuQ29udGV4dDxpbXBvcnQoXCIuL3VzZS1jdXJyZW50LXVzZXIuanNcIikuQ3VycmVudFVzZXJDb250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+fSAqL1xuICBTY29wZUNvbnRleHRcblxuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgc2NvcGVcblxuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgc2NvcGVOYW1lXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzLnAuc2NvcGUgPz8gXCJ1c2VyXCJcbiAgICBjb25zdCBzY29wZU5hbWUgPSBgY3VycmVudCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSl9YFxuICAgIGNvbnN0IHNjb3BlSW5zdGFuY2UgPSBEZXZpc2UuZ2V0U2NvcGUoc2NvcGUpXG5cbiAgICB0aGlzLnNjb3BlID0gc2NvcGVcbiAgICB0aGlzLnNjb3BlTmFtZSA9IHNjb3BlTmFtZVxuICAgIHRoaXMuU2NvcGVDb250ZXh0ID0gc2NvcGVJbnN0YW5jZS5nZXRDb250ZXh0KClcblxuICAgIHVzZU5vdygoKSA9PiB7XG4gICAgICBpZiAoRGV2aXNlLmN1cnJlbnQoKS5oYXNDdXJyZW50U2NvcGUodGhpcy5zY29wZSkgfHwgRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUodGhpcy5zY29wZSkpIHtcbiAgICAgICAgdGhpcy5zLnJlc3VsdCA9IHtsb2FkZWQ6IGZhbHNlLCBtb2RlbDogdGhpcy5kZWZhdWx0Q3VycmVudFVzZXIoKSA/PyBudWxsfVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUodGhpcy5zY29wZSkgJiYgIURldmlzZS5jdXJyZW50KCkuaGFzQ3VycmVudFNjb3BlKHRoaXMuc2NvcGUpKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgRGV2aXNlIGhhc24ndCBnb3QgY3VycmVudCBzY29wZSAke3RoaXMuc2NvcGV9IHNvIGxvYWRpbmcgZnJvbSByZXF1ZXN0YClcbiAgICAgICAgdGhpcy5sb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCgpXG4gICAgICB9XG5cbiAgICAgIC8vIERpc2NhcmQgYW55IGluLWZsaWdodCBjdXJyZW50LXVzZXIgbG9hZCB3aGVuIHRoaXMgaW5zdGFuY2UgdGVhcnMgZG93bi5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkICs9IDFcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduSW5cIiwgdGhpcy50dC5vbkRldmlzZVNpZ25JbilcbiAgICB1c2VFdmVudEVtaXR0ZXIoRGV2aXNlLmV2ZW50cygpLCBcIm9uRGV2aXNlU2lnbk91dFwiLCB0aGlzLnR0Lm9uRGV2aXNlU2lnbk91dClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7U2NvcGVDb250ZXh0fSA9IHRoaXNcblxuICAgIHJldHVybiAoXG4gICAgICA8U2NvcGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnMucmVzdWx0fT5cbiAgICAgICAge3RoaXMucC5jaGlsZHJlbn1cbiAgICAgIDwvU2NvcGVDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuXG4gIGxvYWRDdXJyZW50VXNlckZyb21SZXF1ZXN0ID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIElnbm9yZSBsYXRlIGN1cnJlbnQtdXNlciByZXNwb25zZXMgc28gdGhlIGxpdmUgcHJvdmlkZXIgY29udHJvbHMgc2Vzc2lvbiBzdGF0ZS5cbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLmxvYWRDdXJyZW50VXNlclJlcXVlc3RJZCArIDFcblxuICAgIHRoaXMubG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkID0gcmVxdWVzdElkXG5cbiAgICBjb25zdCBnZXRBcmdzTWV0aG9kTmFtZSA9IGBnZXQke2luZmxlY3Rpb24uY2FtZWxpemUodGhpcy5zY29wZSl9QXJnc2BcbiAgICBjb25zdCBhcmdzID0gRGV2aXNlW2dldEFyZ3NNZXRob2ROYW1lXSgpXG5cbiAgICBsb2dnZXIuZGVidWcoKCkgPT4gYExvYWRpbmcgJHt0aGlzLnNjb3BlfSB3aXRoIHJlcXVlc3RgKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpDdXJyZW50XCIsIHtxdWVyeTogYXJncy5xdWVyeSwgc2NvcGU6IHRoaXMuc2NvcGV9KVxuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIpWzBdXG5cbiAgICBpZiAocmVxdWVzdElkICE9IHRoaXMubG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkKSByZXR1cm5cblxuICAgIGlmIChjdXJyZW50KSBEZXZpc2UudXBkYXRlU2Vzc2lvbihjdXJyZW50KVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7cmVzdWx0OiB7bG9hZGVkOiB0cnVlLCBtb2RlbDogY3VycmVudH19KVxuXG4gICAgZXZlbnRzLmVtaXQoXCJjdXJyZW50VXNlckxvYWRlZFwiLCB7Y3VycmVudH0pXG4gIH1cblxuICBkZWZhdWx0Q3VycmVudFVzZXIgPSAoKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRcblxuICAgIGlmIChEZXZpc2UuY3VycmVudCgpLmhhc0N1cnJlbnRTY29wZSh0aGlzLnNjb3BlKSkge1xuICAgICAgY3VycmVudCA9IERldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHRoaXMuc2NvcGUpXG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFNldHRpbmcgJHt0aGlzLnNjb3BlfSBmcm9tIGN1cnJlbnQgc2NvcGU6ICR7Y3VycmVudD8uaWQoKX1gKVxuICAgIH0gZWxzZSBpZiAoRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUodGhpcy5zY29wZSkpIHtcbiAgICAgIGN1cnJlbnQgPSBEZXZpc2VbdGhpcy5zY29wZU5hbWVdKClcbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgU2V0dGluZyAke3RoaXMuc2NvcGV9IGZyb20gZ2xvYmFsIGN1cnJlbnQgc2NvcGU6ICR7Y3VycmVudD8uaWQoKX1gKVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50KSBldmVudHMuZW1pdChcImN1cnJlbnRVc2VyTG9hZGVkXCIsIHtjdXJyZW50fSlcblxuICAgIHJldHVybiBjdXJyZW50XG4gIH1cblxuICB1cGRhdGVDdXJyZW50VXNlciA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtyZXN1bHQ6IHtsb2FkZWQ6IHRydWUsIG1vZGVsOiBEZXZpc2VbdGhpcy5zY29wZU5hbWVdKCl9fSlcbiAgfVxuXG4gIG9uRGV2aXNlU2lnbkluID0gKCkgPT4ge1xuICAgIC8vIEludmFsaWRhdGUgYW55IGluLWZsaWdodCBsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCDigJQgaXQgd2FzIGRpc3BhdGNoZWRcbiAgICAvLyBhZ2FpbnN0IHRoZSBwcmUtc2lnbi1pbiBzZXNzaW9uIGFuZCB3aWxsIHJlc29sdmUgd2l0aCBjdXJyZW50OiBudWxsLFxuICAgIC8vIGZsaXBwaW5nIHRoZSBjb250ZXh0IGJhY2sgdG8gc2lnbmVkLW91dCBhbmQgcmUtbW91bnRpbmcgdGhlIHNpZ24taW5cbiAgICAvLyBjb21wb25lbnQgYWZ0ZXIgd2UndmUgYWxyZWFkeSBhcHBsaWVkIHRoZSBzaWduZWQtaW4gc3RhdGUgaGVyZS5cbiAgICB0aGlzLmxvYWRDdXJyZW50VXNlclJlcXVlc3RJZCArPSAxXG4gICAgdGhpcy51cGRhdGVDdXJyZW50VXNlcigpXG4gIH1cblxuICBvbkRldmlzZVNpZ25PdXQgPSAoKSA9PiB7XG4gICAgLy8gU3ltbWV0cmljIHRvIG9uRGV2aXNlU2lnbkluOiBhIGxhdGUgcmVzcG9uc2UgZnJvbSBhIHJlcXVlc3QgZGlzcGF0Y2hlZFxuICAgIC8vIGJlZm9yZSBzaWduLW91dCBjb3VsZCBvdGhlcndpc2Ugb3ZlcndyaXRlIHRoZSBzaWduZWQtb3V0IHN0YXRlIHdpdGggYVxuICAgIC8vIHN0YWxlIHNpZ25lZC1pbiBtb2RlbC5cbiAgICB0aGlzLmxvYWRDdXJyZW50VXNlclJlcXVlc3RJZCArPSAxXG4gICAgdGhpcy51cGRhdGVDdXJyZW50VXNlcigpXG4gIH1cbn0pKVxuIl19
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWN1cnJlbnQtdXNlci1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtY3VycmVudC11c2VyLWNvbnRleHQuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBQ3BDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHVCQUF1QixDQUFBO0FBQzVDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sZUFBZSxNQUFNLHNCQUFzQixDQUFBO0FBQ2xELE9BQU8sTUFBTSxNQUFNLG9DQUFvQyxDQUFBO0FBRXZELE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUMsSUFBSSxFQUFFLGtDQUFrQyxFQUFDLENBQUMsQ0FBQTtBQUVyRTs7R0FFRztBQUNIOzs7O0dBSUc7QUFDSDs7OztHQUlHO0FBQ0g7OztHQUdHO0FBQ0gsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLE1BQU0sNkJBQThCLFNBQVEsY0FBYztJQUMzSSxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDeEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0tBQ3hCLENB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QXlCO1FBQ3pCLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7SUFDMUIsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2UuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXIuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlcy5qc1wiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IHtldmVudHN9IGZyb20gXCIuL3VzZS1jdXJyZW50LXVzZXIuanNcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcInlhLXVzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VOb3cgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3VzZS1ub3cuanNcIlxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHtuYW1lOiBcIkFwaU1ha2VyIC8gVXNlQ3VycmVudFVzZXJDb250ZXh0XCJ9KVxuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL3VzZS1jdXJyZW50LXVzZXIuanNcIikuQ3VycmVudFVzZXJNb2RlbH0gQ3VycmVudFVzZXJNb2RlbFxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlc3VsdFxuICogQHByb3BlcnR5IHtib29sZWFufSBsb2FkZWRcbiAqIEBwcm9wZXJ0eSB7Q3VycmVudFVzZXJNb2RlbH0gbW9kZWxcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IGNoaWxkcmVuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Njb3BlXVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN0YXRlXG4gKiBAcHJvcGVydHkge1Jlc3VsdH0gcmVzdWx0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJVc2VDdXJyZW50VXNlckNvbnRleHQgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIHNjb3BlOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pXG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBzY29wZTogXCJ1c2VyXCJcbiAgfVxuXG4gIHN0YXRlID0ge1xuICAgIHJlc3VsdDogLyoqIEB0eXBlIHtSZXN1bHR9ICovICh7XG4gICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgbW9kZWw6IG51bGxcbiAgICB9KVxuICB9XG5cbiAgbG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkID0gMFxuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KFwicmVhY3RcIikuQ29udGV4dDxpbXBvcnQoXCIuL3VzZS1jdXJyZW50LXVzZXIuanNcIikuQ3VycmVudFVzZXJDb250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+fSAqL1xuICBTY29wZUNvbnRleHRcblxuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgc2NvcGVcblxuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgc2NvcGVOYW1lXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzLnAuc2NvcGUgPz8gXCJ1c2VyXCJcbiAgICBjb25zdCBzY29wZU5hbWUgPSBgY3VycmVudCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSl9YFxuICAgIGNvbnN0IHNjb3BlSW5zdGFuY2UgPSBEZXZpc2UuZ2V0U2NvcGUoc2NvcGUpXG5cbiAgICB0aGlzLnNjb3BlID0gc2NvcGVcbiAgICB0aGlzLnNjb3BlTmFtZSA9IHNjb3BlTmFtZVxuICAgIHRoaXMuU2NvcGVDb250ZXh0ID0gc2NvcGVJbnN0YW5jZS5nZXRDb250ZXh0KClcblxuICAgIHVzZU5vdygoKSA9PiB7XG4gICAgICBpZiAoRGV2aXNlLmN1cnJlbnQoKS5oYXNDdXJyZW50U2NvcGUodGhpcy5zY29wZSkgfHwgRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUodGhpcy5zY29wZSkpIHtcbiAgICAgICAgdGhpcy5zLnJlc3VsdCA9IHtsb2FkZWQ6IGZhbHNlLCBtb2RlbDogdGhpcy5kZWZhdWx0Q3VycmVudFVzZXIoKSA/PyBudWxsfVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUodGhpcy5zY29wZSkgJiYgIURldmlzZS5jdXJyZW50KCkuaGFzQ3VycmVudFNjb3BlKHRoaXMuc2NvcGUpKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgRGV2aXNlIGhhc24ndCBnb3QgY3VycmVudCBzY29wZSAke3RoaXMuc2NvcGV9IHNvIGxvYWRpbmcgZnJvbSByZXF1ZXN0YClcbiAgICAgICAgdGhpcy5sb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCgpXG4gICAgICB9XG5cbiAgICAgIC8vIERpc2NhcmQgYW55IGluLWZsaWdodCBjdXJyZW50LXVzZXIgbG9hZCB3aGVuIHRoaXMgaW5zdGFuY2UgdGVhcnMgZG93bi5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkICs9IDFcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduSW5cIiwgdGhpcy50dC5vbkRldmlzZVNpZ25JbilcbiAgICB1c2VFdmVudEVtaXR0ZXIoRGV2aXNlLmV2ZW50cygpLCBcIm9uRGV2aXNlU2lnbk91dFwiLCB0aGlzLnR0Lm9uRGV2aXNlU2lnbk91dClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7U2NvcGVDb250ZXh0fSA9IHRoaXNcblxuICAgIHJldHVybiAoXG4gICAgICA8U2NvcGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnMucmVzdWx0fT5cbiAgICAgICAge3RoaXMucC5jaGlsZHJlbn1cbiAgICAgIDwvU2NvcGVDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuXG4gIGxvYWRDdXJyZW50VXNlckZyb21SZXF1ZXN0ID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIElnbm9yZSBsYXRlIGN1cnJlbnQtdXNlciByZXNwb25zZXMgc28gdGhlIGxpdmUgcHJvdmlkZXIgY29udHJvbHMgc2Vzc2lvbiBzdGF0ZS5cbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLmxvYWRDdXJyZW50VXNlclJlcXVlc3RJZCArIDFcblxuICAgIHRoaXMubG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkID0gcmVxdWVzdElkXG5cbiAgICBjb25zdCBnZXRBcmdzTWV0aG9kTmFtZSA9IGBnZXQke2luZmxlY3Rpb24uY2FtZWxpemUodGhpcy5zY29wZSl9QXJnc2BcbiAgICBjb25zdCBhcmdzID0gRGV2aXNlW2dldEFyZ3NNZXRob2ROYW1lXSgpXG5cbiAgICBsb2dnZXIuZGVidWcoKCkgPT4gYExvYWRpbmcgJHt0aGlzLnNjb3BlfSB3aXRoIHJlcXVlc3RgKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpDdXJyZW50XCIsIHtxdWVyeTogYXJncy5xdWVyeSwgc2NvcGU6IHRoaXMuc2NvcGV9KVxuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIpWzBdXG5cbiAgICBpZiAocmVxdWVzdElkICE9IHRoaXMubG9hZEN1cnJlbnRVc2VyUmVxdWVzdElkKSByZXR1cm5cblxuICAgIGlmIChjdXJyZW50KSBEZXZpc2UudXBkYXRlU2Vzc2lvbihjdXJyZW50KVxuXG4gICAgdGhpcy5zLnJlc3VsdCA9IHtsb2FkZWQ6IHRydWUsIG1vZGVsOiBjdXJyZW50fVxuXG4gICAgZXZlbnRzLmVtaXQoXCJjdXJyZW50VXNlckxvYWRlZFwiLCB7Y3VycmVudH0pXG4gIH1cblxuICBkZWZhdWx0Q3VycmVudFVzZXIgPSAoKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRcblxuICAgIGlmIChEZXZpc2UuY3VycmVudCgpLmhhc0N1cnJlbnRTY29wZSh0aGlzLnNjb3BlKSkge1xuICAgICAgY3VycmVudCA9IERldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHRoaXMuc2NvcGUpXG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFNldHRpbmcgJHt0aGlzLnNjb3BlfSBmcm9tIGN1cnJlbnQgc2NvcGU6ICR7Y3VycmVudD8uaWQoKX1gKVxuICAgIH0gZWxzZSBpZiAoRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUodGhpcy5zY29wZSkpIHtcbiAgICAgIGN1cnJlbnQgPSBEZXZpc2VbdGhpcy5zY29wZU5hbWVdKClcbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgU2V0dGluZyAke3RoaXMuc2NvcGV9IGZyb20gZ2xvYmFsIGN1cnJlbnQgc2NvcGU6ICR7Y3VycmVudD8uaWQoKX1gKVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50KSBldmVudHMuZW1pdChcImN1cnJlbnRVc2VyTG9hZGVkXCIsIHtjdXJyZW50fSlcblxuICAgIHJldHVybiBjdXJyZW50XG4gIH1cblxuICB1cGRhdGVDdXJyZW50VXNlciA9ICgpID0+IHtcbiAgICB0aGlzLnMucmVzdWx0ID0ge2xvYWRlZDogdHJ1ZSwgbW9kZWw6IERldmlzZVt0aGlzLnNjb3BlTmFtZV0oKX1cbiAgfVxuXG4gIG9uRGV2aXNlU2lnbkluID0gKCkgPT4ge1xuICAgIC8vIEludmFsaWRhdGUgYW55IGluLWZsaWdodCBsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCDigJQgaXQgd2FzIGRpc3BhdGNoZWRcbiAgICAvLyBhZ2FpbnN0IHRoZSBwcmUtc2lnbi1pbiBzZXNzaW9uIGFuZCB3aWxsIHJlc29sdmUgd2l0aCBjdXJyZW50OiBudWxsLFxuICAgIC8vIGZsaXBwaW5nIHRoZSBjb250ZXh0IGJhY2sgdG8gc2lnbmVkLW91dCBhbmQgcmUtbW91bnRpbmcgdGhlIHNpZ24taW5cbiAgICAvLyBjb21wb25lbnQgYWZ0ZXIgd2UndmUgYWxyZWFkeSBhcHBsaWVkIHRoZSBzaWduZWQtaW4gc3RhdGUgaGVyZS5cbiAgICB0aGlzLmxvYWRDdXJyZW50VXNlclJlcXVlc3RJZCArPSAxXG4gICAgdGhpcy51cGRhdGVDdXJyZW50VXNlcigpXG4gIH1cblxuICBvbkRldmlzZVNpZ25PdXQgPSAoKSA9PiB7XG4gICAgLy8gU3ltbWV0cmljIHRvIG9uRGV2aXNlU2lnbkluOiBhIGxhdGUgcmVzcG9uc2UgZnJvbSBhIHJlcXVlc3QgZGlzcGF0Y2hlZFxuICAgIC8vIGJlZm9yZSBzaWduLW91dCBjb3VsZCBvdGhlcndpc2Ugb3ZlcndyaXRlIHRoZSBzaWduZWQtb3V0IHN0YXRlIHdpdGggYVxuICAgIC8vIHN0YWxlIHNpZ25lZC1pbiBtb2RlbC5cbiAgICB0aGlzLmxvYWRDdXJyZW50VXNlclJlcXVlc3RJZCArPSAxXG4gICAgdGhpcy51cGRhdGVDdXJyZW50VXNlcigpXG4gIH1cbn0pKVxuIl19
|
package/build/use-model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-model.d.ts","sourceRoot":"/src/","sources":["use-model.js"],"names":[],"mappings":";6BAUc,cAAc,iBAAiB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"use-model.d.ts","sourceRoot":"/src/","sources":["use-model.js"],"names":[],"mappings":";6BAUc,cAAc,iBAAiB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA2di0d,CAAC;;;yBAA6O,CAAC;;;;;;;gBAAoc,CAAC;;;;;yBAAm7E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAzdj9jB,iBAAiB,GAAG;IAAC,EAAE,EAAE,MAAM,MAAM,GAAG,MAAM,CAAA;CAAC;;kCAE/C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;iCAC9D,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;kCACrD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;4BAC3C;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAC;+BAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;sCAC9D;IAAC,QAAQ,CAAC,EAAE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAAC;yCAC/D;IAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAC,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAA;KAAC,KAAK,cAAc,CAAA;CAAC;sCACpF;IAAC,UAAU,EAAE,cAAc,CAAA;CAAC;sCAC5B;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;;iBAG9D,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI;oBACjD,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI;;;aAIjD,OAAO;gBACP,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxB,kBAAkB,EAAE;mBACpB,OAAO;aACP,cAAc;uBACd,CAAC,IAAI,EAAE;QAAC,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAA;KAAC,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;YACrF,aAAa;gBACb,uBAAuB,GAAG,OAAO;oBACjC,gBAAgB;kBAChB,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI;eACtC,OAAO;cACP,MAAM,EAAE,GAAG,MAAM;YACjB,eAAe;aACf,MAAM,EAAE,GAAG,MAAM;;8BAEjB,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,uBAAuB,KAAK,YAAY,CAAC;;cAGhE,eAAe;mBACf,cAAc,GAAG,0BAA0B;;;WAM3C,iBAAiB,GAAG,SAAS;cAC7B,OAAO,GAAG,SAAS;;6BAIpB;IACR,KAAK,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AA2YhF;;;;;GAKG;AACH,yCAJW,cAAc,GAAG,0BAA0B,YAC3C,eAAe,GACb,cAAc,CAmB1B"}
|
package/build/use-model.js
CHANGED
|
@@ -227,7 +227,8 @@ class UseModelShapeHook extends ShapeHook {
|
|
|
227
227
|
else if (!this.s.model && !model && this.s.notFound) {
|
|
228
228
|
return;
|
|
229
229
|
}
|
|
230
|
-
this.
|
|
230
|
+
this.s.model = model;
|
|
231
|
+
this.s.notFound = !model;
|
|
231
232
|
};
|
|
232
233
|
/** @param {number} loadModelGeneration */
|
|
233
234
|
loadNewModel = async (loadModelGeneration) => {
|
|
@@ -247,7 +248,8 @@ class UseModelShapeHook extends ShapeHook {
|
|
|
247
248
|
});
|
|
248
249
|
if (loadModelGeneration != this.loadModelGeneration)
|
|
249
250
|
return;
|
|
250
|
-
this.
|
|
251
|
+
this.s.model = model;
|
|
252
|
+
this.s.notFound = false;
|
|
251
253
|
};
|
|
252
254
|
/** @returns {Promise<void>} */
|
|
253
255
|
loadModel = async () => {
|
|
@@ -340,7 +342,8 @@ class UseModelShapeHook extends ShapeHook {
|
|
|
340
342
|
if (this.s.model === undefined) {
|
|
341
343
|
const syncNewModel = this.syncNewModel();
|
|
342
344
|
if (syncNewModel) {
|
|
343
|
-
this.
|
|
345
|
+
this.s.model = syncNewModel;
|
|
346
|
+
this.s.notFound = false;
|
|
344
347
|
}
|
|
345
348
|
}
|
|
346
349
|
if (this.shouldWaitForUpdatedConnection()) {
|
|
@@ -407,4 +410,4 @@ const useModel = (modelClassArg, argsArg = {}) => {
|
|
|
407
410
|
return result;
|
|
408
411
|
};
|
|
409
412
|
export default useModel;
|
|
410
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDL0IsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sV0FBVyxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBQzFFLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBRXBELHlFQUF5RTtBQUN6RSxxRUFBcUU7QUFDckUsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUNuRSxvR0FBb0c7QUFDcEcsMEZBQTBGO0FBQzFGLGlGQUFpRjtBQUNqRiw2REFBNkQ7QUFDN0QsaUdBQWlHO0FBQ2pHLHlHQUF5RztBQUN6RyxpSUFBaUk7QUFDakksc0VBQXNFO0FBQ3RFLHdHQUF3RztBQUN4Rzs7OztHQUlHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxrR0FBa0c7QUFDbEc7Ozs7R0FJRztBQUVILHlDQUF5QztBQUN6Qzs7OztHQUlHO0FBRUg7Ozs7OztHQU1HO0FBRUgsbUVBQW1FO0FBQ25FLE1BQU0saUJBQWtCLFNBQVEsU0FBUztJQUN2QyxLQUFLLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztRQUNwQyxLQUFLLEVBQUUsU0FBUztRQUNoQixRQUFRLEVBQUUsU0FBUztLQUNwQixDQUFDLENBQUE7SUFFRixrQ0FBa0MsR0FBRyxTQUFTLENBQUE7SUFFOUM7OztPQUdHO0lBQ0gsWUFBWSxLQUFLO1FBQ2YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ1osSUFBSSxDQUFDLG9CQUFv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QUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUM5RyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sUUFBUSxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUMvQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQTtJQUMzRSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDdEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ25DLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUM1QyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBQ3ZELE1BQU0sTUFBTSxHQUFHO1FBQ2IsS0FBSztRQUNMLE9BQU87UUFDUCxRQUFRO0tBQ1QsQ0FBQTtJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNqQyxNQUFNLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFBO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixVQUFVLENBQUMsR0FBRyxRQUFRLENBQUE7SUFFakQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxlQUFlLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge1NoYXBlSG9vaywgdXNlU2hhcGVIb29rfSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmVcIlxuaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgRGV2aXNlIGZyb20gXCIuL2RldmlzZS5qc1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBNb2RlbEV2ZW50cyBmcm9tIFwiLi9tb2RlbC1ldmVudHMuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuaW1wb3J0IHVzZVVwZGF0ZWRFdmVudCBmcm9tIFwiLi91c2UtdXBkYXRlZC1ldmVudC5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWxDbGFzcyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsSW5zdGFuY2UgKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsSW5zdGFuY2UgJiB7aWQ6ICgpID0+IG51bWJlciB8IHN0cmluZ319IEJhc2VNb2RlbFdpdGhJZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gTW9kZWxDb2xsZWN0aW9uICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCB1bmRlZmluZWQ+fSBVc2VNb2RlbFF1ZXJ5UGFyYW1zICovXG4vKiogQHR5cGVkZWYge3N0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkfSBVc2VNb2RlbENhY2hlVmFsdWUgKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxNYXRjaFBhcmFtcyAqL1xuLyoqIEB0eXBlZGVmIHt7cGFyYW1zOiBVc2VNb2RlbE1hdGNoUGFyYW1zfX0gVXNlTW9kZWxNYXRjaCAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxEZWZhdWx0cyAqL1xuLyoqIEB0eXBlZGVmIHt7ZGVmYXVsdHM/OiAoKSA9PiBVc2VNb2RlbERlZmF1bHRzIHwgUHJvbWlzZTxVc2VNb2RlbERlZmF1bHRzPn19IFVzZU1vZGVsTmV3SWZOb0lkQ29uZmlnICovXG4vKiogQHR5cGVkZWYge3tjYWxsYmFjazogKGFyZ3M6IHtxdWVyeVBhcmFtczogVXNlTW9kZWxRdWVyeVBhcmFtcyB8IHVuZGVmaW5lZH0pID0+IEJhc2VNb2RlbENsYXNzfX0gVXNlTW9kZWxNb2RlbENsYXNzUmVzb2x2ZXIgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsQ2xhc3M6IEJhc2VNb2RlbENsYXNzfX0gVXNlTW9kZWxBcmdzRmFjdG9yeUFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX0gJiBSZWNvcmQ8c3RyaW5nLCBCYXNlTW9kZWxJbnN0YW5jZT59IFVzZU1vZGVsT25EZXN0cm95ZWRBcmdzICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFVzZU1vZGVsRXZlbnRzXG4gKiBAcHJvcGVydHkgeyhldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWR9IGFkZExpc3RlbmVyXG4gKiBAcHJvcGVydHkgeyhldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWR9IHJlbW92ZUxpc3RlbmVyXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gdXNlTW9kZWxBcmdzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFthY3RpdmVdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW2FiaWxpdGllc11cbiAqIEBwcm9wZXJ0eSB7VXNlTW9kZWxDYWNoZVZhbHVlW119IFtjYWNoZUFyZ3NdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtldmVudFVwZGF0ZWRdXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsRXZlbnRzfSBbZXZlbnRzXVxuICogQHByb3BlcnR5IHsoYXJnczoge3F1ZXJ5UGFyYW1zOiBVc2VNb2RlbFF1ZXJ5UGFyYW1zIHwgdW5kZWZpbmVkfSkgPT4gbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkfSBbbG9hZEJ5UXVlcnlQYXJhbV1cbiAqIEBwcm9wZXJ0eSB7VXNlTW9kZWxNYXRjaH0gW21hdGNoXVxuICogQHByb3BlcnR5IHtVc2VNb2RlbE5ld0lmTm9JZENvbmZpZyB8IGJvb2xlYW59IFtuZXdJZk5vSWRdXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsRGVmYXVsdHN9IFtuZXdBdHRyaWJ1dGVzXVxuICogQHByb3BlcnR5IHsoY3R4OiBVc2VNb2RlbE9uRGVzdHJveWVkQXJncykgPT4gdm9pZH0gW29uRGVzdHJveWVkXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbb3B0aW9uYWxdXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgb2JqZWN0fSBbcHJlbG9hZF1cbiAqIEBwcm9wZXJ0eSB7TW9kZWxDb2xsZWN0aW9ufSBbcXVlcnldXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgb2JqZWN0fSBbc2VsZWN0XVxuICovXG4vKiogQHR5cGVkZWYge3VzZU1vZGVsQXJncyB8ICgoYXJnczogVXNlTW9kZWxBcmdzRmFjdG9yeUFyZ3MpID0+IHVzZU1vZGVsQXJncyl9IFVzZU1vZGVsQXJnc0FyZyAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VNb2RlbFNoYXBlSG9va1Byb3BzXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsQXJnc0FyZ30gW2FyZ3NBcmddXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbENsYXNzIHwgVXNlTW9kZWxNb2RlbENsYXNzUmVzb2x2ZXJ9IG1vZGVsQ2xhc3NBcmdcbiAqL1xuXG4vKiogSG9vayBzdGF0ZSBjb250YWluZXIgZm9yIHVzZU1vZGVsLiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VNb2RlbFN0YXRlXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkfSBtb2RlbFxuICogQHByb3BlcnR5IHtib29sZWFuIHwgdW5kZWZpbmVkfSBub3RGb3VuZFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge3tcbiAqICAgbW9kZWw6IEJhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkLFxuICogICBtb2RlbElkOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQsXG4gKiAgIG5vdEZvdW5kOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gKiB9ICYgUmVjb3JkPHN0cmluZywgQmFzZU1vZGVsSW5zdGFuY2UgfCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxSZXN1bHRcbiAqL1xuXG4vKiogQGF1Z21lbnRzIHtTaGFwZUhvb2s8VXNlTW9kZWxTaGFwZUhvb2tQcm9wcywgVXNlTW9kZWxTdGF0ZT59ICovXG5jbGFzcyBVc2VNb2RlbFNoYXBlSG9vayBleHRlbmRzIFNoYXBlSG9vayB7XG4gIHN0YXRlID0gLyoqIEB0eXBlIHtVc2VNb2RlbFN0YXRlfSAqLyAoe1xuICAgIG1vZGVsOiB1bmRlZmluZWQsXG4gICAgbm90Rm91bmQ6IHVuZGVmaW5lZFxuICB9KVxuXG4gIHVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0SWQgPSB1bmRlZmluZWRcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7VXNlTW9kZWxTaGFwZUhvb2tQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCA9IGZhbHNlXG4gICAgdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uID0gMFxuICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBudWxsXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25SZWFkeSA9IGZhbHNlXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gIShcImFjdGl2ZVwiIGluIHRoaXMuYXJncygpKSB8fCBCb29sZWFuKHRoaXMuYXJncygpLmFjdGl2ZSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dXNlTW9kZWxBcmdzfSAqL1xuICBhcmdzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wLmFyZ3NBcmcgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcoe21vZGVsQ2xhc3M6IHRoaXMubW9kZWxDbGFzcygpfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcgfHwge31cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7QmFzZU1vZGVsQ2xhc3N9ICovXG4gIG1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnAubW9kZWxDbGFzc0FyZyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmcuY2FsbGJhY2soe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmdcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBwYXJhbXNWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kZWxDbGFzcygpLm1vZGVsTmFtZSgpXG4gICAgICAucGFyYW1LZXkoKX1faWRgXG4gIH1cblxuICAvKiogQHJldHVybnMge251bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgbW9kZWxJZCgpIHtcbiAgICBpZiAodGhpcy5hcmdzKCkubG9hZEJ5UXVlcnlQYXJhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXJncygpLmxvYWRCeVF1ZXJ5UGFyYW0oe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJncygpLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmdzKCkubWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkJvdGggJ2xvYWRCeVF1ZXJ5UGFyYW0nIGFuZCAnbWF0Y2gnIHdhc24ndCBnaXZlblwiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MoKS5tYXRjaC5wYXJhbXNbdGhpcy5wYXJhbXNWYXJpYWJsZU5hbWUoKV0gfHwgdGhpcy5hcmdzKCkubWF0Y2gucGFyYW1zLmlkXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgbW9kZWxWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGluZmxlY3Rpb24uY2FtZWxpemUodGhpcy5tb2RlbENsYXNzKCkubW9kZWxDbGFzc0RhdGEoKS5uYW1lLCB0cnVlKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtVc2VNb2RlbENhY2hlVmFsdWVbXX0gKi9cbiAgY2FjaGVBcmdzKCkge1xuICAgIHJldHVybiBbdGhpcy5tb2RlbElkKCldLmNvbmNhdCh0aGlzLmFyZ3MoKS5jYWNoZUFyZ3MgfHwgW10sIHRoaXMucXVlcnlQYXJhbXMpXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIHNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQgJiYgdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMucy5tb2RlbClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxEZWZhdWx0c30gKi9cbiAgbmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpIHtcbiAgICBjb25zdCBtb2RlbERhdGFGcm9tUGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcz8uW1xuICAgICAgdGhpcy5tb2RlbENsYXNzKCkubW9kZWxOYW1lKClcbiAgICAgICAgLnBhcmFtS2V5KClcbiAgICBdXG5cbiAgICByZXR1cm4gdHlwZW9mIG1vZGVsRGF0YUZyb21QYXJhbXMgPT0gXCJvYmplY3RcIiAmJiBtb2RlbERhdGFGcm9tUGFyYW1zID8gbW9kZWxEYXRhRnJvbVBhcmFtcyA6IHt9XG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGhhc0FzeW5jRGVmYXVsdHMoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCAmJiB0eXBlb2YgdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdC50aGVuID09IFwiZnVuY3Rpb25cIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxOZXdJZk5vSWRDb25maWcgfCBudWxsfSAqL1xuICBuZXdJZk5vSWRDb25maWcoKSB7XG4gICAgY29uc3Qge25ld0lmTm9JZH0gPSB0aGlzLmFyZ3MoKVxuXG4gICAgaWYgKCFuZXdJZk5vSWQgfHwgbmV3SWZOb0lkID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBuZXdJZk5vSWRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxEZWZhdWx0cyB8IG51bGx9ICovXG4gIHN5bmNEZWZhdWx0c0Zvck5ld01vZGVsKCkge1xuICAgIGNvbnN0IG5ld0lmTm9JZENvbmZpZyA9IHRoaXMubmV3SWZOb0lkQ29uZmlnKClcblxuICAgIGlmICghbmV3SWZOb0lkQ29uZmlnPy5kZWZhdWx0cykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0FzeW5jRGVmYXVsdHMoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmYXVsdHNSZXN1bHQgPSBuZXdJZk5vSWRDb25maWcuZGVmYXVsdHMoKVxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgJiYgdHlwZW9mIGRlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0IHx8IHt9XG4gIH1cblxuICAvKiogQHJldHVybnMge0Jhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkfSAqL1xuICBzeW5jTmV3TW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpIHx8ICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQgfHwgdGhpcy5tb2RlbElkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMuc3luY0RlZmF1bHRzRm9yTmV3TW9kZWwoKVxuXG4gICAgaWYgKGRlZmF1bHRzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgZGF0YToge2E6IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHRoaXMuYXJncygpLm5ld0F0dHJpYnV0ZXMsIHRoaXMubmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpKX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtCYXNlTW9kZWxJbnN0YW5jZSB8IHVuZGVmaW5lZH0gKi9cbiAgc3Vic2NyaXB0aW9uTW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbCkge1xuICAgICAgcmV0dXJuIHRoaXMucy5tb2RlbFxuICAgIH0gZWxzZSBpZiAoIXRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGRhdGE6IHthOiB7W3RoaXMubW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKV06IHRoaXMubW9kZWxJZCgpfX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7bnVtYmVyfSBsb2FkTW9kZWxHZW5lcmF0aW9uICovXG4gIGxvYWRFeGlzdGluZ01vZGVsID0gYXN5bmMgKGxvYWRNb2RlbEdlbmVyYXRpb24pID0+IHtcbiAgICBsZXQgcXVlcnlcblxuICAgIGlmICh0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgcXVlcnkgPSB0aGlzLm1vZGVsQ2xhc3MoKS5yYW5zYWNrKHtpZF9lcTogdGhpcy5tb2RlbElkKCl9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5hcmdzKCkucXVlcnkpIHtcbiAgICAgIHF1ZXJ5ID0gdGhpcy5hcmdzKCkucXVlcnkuY2xvbmUoKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXRjaFBhcmFtcyA9IHRoaXMuYXJncygpLm1hdGNoPy5wYXJhbXMgfHwge31cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbCBJRCB3YXMgZ2l2ZW46ICR7dGhpcy5tb2RlbElkKCl9IGJ5ICcke3RoaXMucGFyYW1zVmFyaWFibGVOYW1lKCl9JyBpbiBxdWVyeSBwYXJhbXM6ICR7T2JqZWN0LmtleXMobWF0Y2hQYXJhbXMpLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpIHF1ZXJ5LmFiaWxpdGllcyh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpXG4gICAgaWYgKHRoaXMuYXJncygpLnByZWxvYWQpIHF1ZXJ5LnByZWxvYWQodGhpcy5hcmdzKCkucHJlbG9hZClcbiAgICBpZiAodGhpcy5hcmdzKCkuc2VsZWN0KSBxdWVyeS5zZWxlY3QodGhpcy5hcmdzKCkuc2VsZWN0KVxuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBxdWVyeS5maXJzdCgpXG5cbiAgICBpZiAobG9hZE1vZGVsR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24pIHJldHVyblxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zLm1vZGVsICYmXG4gICAgICBtb2RlbCAmJlxuICAgICAgIXRoaXMucy5ub3RGb3VuZCAmJlxuICAgICAgdGhpcy5zLm1vZGVsLmZ1bGxDYWNoZUtleSgpID09IG1vZGVsLmZ1bGxDYWNoZUtleSgpXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKCF0aGlzLnMubW9kZWwgJiYgIW1vZGVsICYmIHRoaXMucy5ub3RGb3VuZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWwsIG5vdEZvdW5kOiAhbW9kZWx9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7bnVtYmVyfSBsb2FkTW9kZWxHZW5lcmF0aW9uICovXG4gIGxvYWROZXdNb2RlbCA9IGFzeW5jIChsb2FkTW9kZWxHZW5lcmF0aW9uKSA9PiB7XG4gICAgbGV0IGRlZmF1bHRzID0ge31cbiAgICBjb25zdCBuZXdJZk5vSWRDb25maWcgPSB0aGlzLm5ld0lmTm9JZENvbmZpZygpXG5cbiAgICBpZiAobmV3SWZOb0lkQ29uZmlnPy5kZWZhdWx0cykge1xuICAgICAgbGV0IGRlZmF1bHRzUmVzdWx0ID0gdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdFxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgZGVmYXVsdHNSZXN1bHQgPSBuZXdJZk5vSWRDb25maWcuZGVmYXVsdHMoKVxuICAgICAgfVxuXG4gICAgICB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gbnVsbFxuICAgICAgZGVmYXVsdHMgPSBhd2FpdCBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsID0gbmV3ICh0aGlzLm1vZGVsQ2xhc3MoKSkoe1xuICAgICAgaXNOZXdSZWNvcmQ6IHRydWUsXG4gICAgICBkYXRhOiB7YTogT2JqZWN0LmFzc2lnbihkZWZhdWx0cywgdGhpcy5hcmdzKCkubmV3QXR0cmlidXRlcywgdGhpcy5uZXdNb2RlbERhdGFGcm9tUGFyYW1zKCkpfVxuICAgIH0pXG5cbiAgICBpZiAobG9hZE1vZGVsR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24pIHJldHVyblxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWwsIG5vdEZvdW5kOiBmYWxzZX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59ICovXG4gIGxvYWRNb2RlbCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBPbmx5IHRoZSBuZXdlc3QgbW9kZWwgcmVxdWVzdCBtYXkgdXBkYXRlIHN0YXRlIGFmdGVyIHJvdXRlIG9yIGF1dGggY2hhbmdlcy5cbiAgICBjb25zdCBsb2FkTW9kZWxHZW5lcmF0aW9uID0gdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uICsgMVxuXG4gICAgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCA9IHRydWVcbiAgICB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gPSBsb2FkTW9kZWxHZW5lcmF0aW9uXG4gICAgaWYgKHRoaXMuYWN0aXZlKCkgJiYgdGhpcy5hcmdzKCkubmV3SWZOb0lkICYmICF0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTmV3TW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlKCkgJiYgKCF0aGlzLmFyZ3MoKS5vcHRpb25hbCB8fCB0aGlzLm1vZGVsSWQoKSB8fCB0aGlzLmFyZ3MoKS5xdWVyeSkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEV4aXN0aW5nTW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKSB7XG4gICAgaWYgKHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZClcbiAgICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgZW5zdXJlSW5pdGlhbExvYWRGYWxsYmFjaygpIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkgfHwgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5jbGVhclVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0KClcbiAgICB0aGlzLnVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy51cGRhdGVkQ29ubmVjdGlvblJlYWR5ICYmICF0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICAgIH1cbiAgICB9LCAxMDAwKVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX19IGFyZ3MgKi9cbiAgb25EZXN0cm95ZWQgPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGZvcndhcmRBcmdzID0ge21vZGVsOiBhcmdzLm1vZGVsfVxuXG4gICAgZm9yd2FyZEFyZ3NbdGhpcy5tb2RlbFZhcmlhYmxlTmFtZSgpXSA9IGFyZ3MubW9kZWxcblxuICAgIHRoaXMuYXJncygpLm9uRGVzdHJveWVkKGZvcndhcmRBcmdzKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblNpZ25lZEluID0gKCkgPT4ge1xuICAgIHRoaXMubG9hZE1vZGVsKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgb25TaWduZWRPdXQgPSAoKSA9PiB7XG4gICAgdGhpcy5sb2FkTW9kZWwoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblVwZGF0ZWRFdmVudENvbm5lY3RlZCA9ICgpID0+IHtcbiAgICB0aGlzLnVwZGF0ZWRDb25uZWN0aW9uUmVhZHkgPSB0cnVlXG4gICAgdGhpcy5jbGVhclVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0KClcblxuICAgIGlmICh0aGlzLnNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpICYmICF0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICB0aGlzLmxvYWRNb2RlbCgpXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtCYXNlTW9kZWxJbnN0YW5jZSB8IHVuZGVmaW5lZH0gKi9cbiAgdmlzaWJsZU1vZGVsKCkge1xuICAgIGxldCBtb2RlbCA9IHRoaXMucy5tb2RlbFxuXG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgbW9kZWwgPSB0aGlzLnN5bmNOZXdNb2RlbCgpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsSWQoKSAmJiBtb2RlbCAmJiAvKiogQHR5cGUge0Jhc2VNb2RlbFdpdGhJZH0gKi8gKG1vZGVsKS5pZCgpICE9IHRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMuYXJncygpLnF1ZXJ5ICYmICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgdmlzaWJsZU5vdEZvdW5kKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmUoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbElkKCkgJiYgdGhpcy52aXNpYmxlTW9kZWwoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMuYXJncygpLnF1ZXJ5ICYmICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLm5vdEZvdW5kXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHNldHVwKCkge1xuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnMubW9kZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IHN5bmNOZXdNb2RlbCA9IHRoaXMuc3luY05ld01vZGVsKClcblxuICAgICAgICAgIGlmIChzeW5jTmV3TW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGVsOiBzeW5jTmV3TW9kZWwsIG5vdEZvdW5kOiBmYWxzZX0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkpIHtcbiAgICAgICAgICB0aGlzLmVuc3VyZUluaXRpYWxMb2FkRmFsbGJhY2soKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRoaXMuY2FjaGVBcmdzKClcbiAgICApXG5cbiAgICAvLyBJbnZhbGlkYXRlIGluLWZsaWdodCBhc3luYyByZXNwb25zZXMgc28gc3RhbGUgbG9hZHMgY2Fubm90IHdyaXRlIGFmdGVyIHVubW91bnQuXG4gICAgdXNlRWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICAgIHRoaXMuY2xlYXJVcGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dCgpXG4gICAgICB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gKz0gMVxuICAgIH0sIFtdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5hcmdzKCkuZXZlbnRzKSByZXR1cm5cblxuICAgICAgdGhpcy5hcmdzKCkuZXZlbnRzLmFkZExpc3RlbmVyKFwicmVsb2FkTW9kZWxcIiwgdGhpcy5sb2FkTW9kZWwpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYXJncygpLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihcInJlbG9hZE1vZGVsXCIsIHRoaXMubG9hZE1vZGVsKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLmFyZ3MoKS5ldmVudHNdKVxuXG4gICAgdXNlVXBkYXRlZEV2ZW50KHRoaXMuc3Vic2NyaXB0aW9uTW9kZWwoKSwgdGhpcy5sb2FkTW9kZWwsIHtcbiAgICAgIG9uQ29ubmVjdGVkOiB0aGlzLm9uVXBkYXRlZEV2ZW50Q29ubmVjdGVkXG4gICAgfSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBEZXZpc2UuZXZlbnRzKCkuYWRkTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25JblwiLCB0aGlzLm9uU2lnbmVkSW4pXG4gICAgICBEZXZpc2UuZXZlbnRzKCkuYWRkTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgdGhpcy5vblNpZ25lZE91dClcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgRGV2aXNlLmV2ZW50cygpLnJlbW92ZUxpc3RlbmVyKFwib25EZXZpc2VTaWduSW5cIiwgdGhpcy5vblNpZ25lZEluKVxuICAgICAgICBEZXZpc2UuZXZlbnRzKCkucmVtb3ZlTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgdGhpcy5vblNpZ25lZE91dClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zLm1vZGVsIHx8ICF0aGlzLmFyZ3MoKS5vbkRlc3Ryb3llZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGNvbm5lY3REZXN0cm95ZWQgPSBNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKHRoaXMucy5tb2RlbCwgdGhpcy5vbkRlc3Ryb3llZClcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29ubmVjdERlc3Ryb3llZC51bnN1YnNjcmliZSgpXG4gICAgICB9XG4gICAgfSwgW3RoaXMuYXJncygpLm9uRGVzdHJveWVkLCB0aGlzLnMubW9kZWwgPyAvKiogQHR5cGUge0Jhc2VNb2RlbFdpdGhJZH0gKi8gKHRoaXMucy5tb2RlbCkuaWQoKSA6IHVuZGVmaW5lZF0pXG4gIH1cbn1cblxuLyoqXG4gKiB1c2VNb2RlbC5cbiAqIEBwYXJhbSB7QmFzZU1vZGVsQ2xhc3MgfCBVc2VNb2RlbE1vZGVsQ2xhc3NSZXNvbHZlcn0gbW9kZWxDbGFzc0FyZ1xuICogQHBhcmFtIHtVc2VNb2RlbEFyZ3NBcmd9IFthcmdzQXJnXVxuICogQHJldHVybnMge1VzZU1vZGVsUmVzdWx0fVxuICovXG5jb25zdCB1c2VNb2RlbCA9IChtb2RlbENsYXNzQXJnLCBhcmdzQXJnID0ge30pID0+IHtcbiAgY29uc3Qgc2hhcGVIb29rID0gdXNlU2hhcGVIb29rKFVzZU1vZGVsU2hhcGVIb29rLCB7YXJnc0FyZywgbW9kZWxDbGFzc0FyZ30pXG4gIGNvbnN0IG1vZGVsID0gc2hhcGVIb29rLnZpc2libGVNb2RlbCgpXG4gIGNvbnN0IG1vZGVsSWQgPSBzaGFwZUhvb2subW9kZWxJZCgpXG4gIGNvbnN0IG5vdEZvdW5kID0gc2hhcGVIb29rLnZpc2libGVOb3RGb3VuZCgpXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gc2hhcGVIb29rLm1vZGVsVmFyaWFibGVOYW1lKClcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIG1vZGVsLFxuICAgIG1vZGVsSWQsXG4gICAgbm90Rm91bmRcbiAgfVxuXG4gIHJlc3VsdFttb2RlbFZhcmlhYmxlTmFtZV0gPSBtb2RlbFxuICByZXN1bHRbYCR7bW9kZWxWYXJpYWJsZU5hbWV9SWRgXSA9IG1vZGVsSWRcbiAgcmVzdWx0W2Ake21vZGVsVmFyaWFibGVOYW1lfU5vdEZvdW5kYF0gPSBub3RGb3VuZFxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlTW9kZWxcbiJdfQ==
|
|
413
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDL0IsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sV0FBVyxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBQzFFLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBRXBELHlFQUF5RTtBQUN6RSxxRUFBcUU7QUFDckUsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUNuRSxvR0FBb0c7QUFDcEcsMEZBQTBGO0FBQzFGLGlGQUFpRjtBQUNqRiw2REFBNkQ7QUFDN0QsaUdBQWlHO0FBQ2pHLHlHQUF5RztBQUN6RyxpSUFBaUk7QUFDakksc0VBQXNFO0FBQ3RFLHdHQUF3RztBQUN4Rzs7OztHQUlHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxrR0FBa0c7QUFDbEc7Ozs7R0FJRztBQUVILHlDQUF5QztBQUN6Qzs7OztHQUlHO0FBRUg7Ozs7OztHQU1HO0FBRUgsbUVBQW1FO0FBQ25FLE1BQU0saUJBQWtCLFNBQVEsU0FBUztJQUN2QyxLQUFLLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztRQUNwQyxLQUFLLEVBQUUsU0FBUztRQUNoQixRQUFRLEVBQUUsU0FBUztLQUNwQixDQUFDLENBQUE7SUFFRixrQ0FBa0MsR0FBRyxTQUFTLENBQUE7SUFFOUM7OztPQUdHO0lBQ0gsWUFBWSxLQUFLO1FBQ2YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ1osSUFBSSxDQUFDLG9CQUFv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QUMsQ0FBQTtRQUNILENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUM5RyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sUUFBUSxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUMvQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQTtJQUMzRSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDdEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ25DLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUM1QyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBQ3ZELE1BQU0sTUFBTSxHQUFHO1FBQ2IsS0FBSztRQUNMLE9BQU87UUFDUCxRQUFRO0tBQ1QsQ0FBQTtJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNqQyxNQUFNLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFBO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixVQUFVLENBQUMsR0FBRyxRQUFRLENBQUE7SUFFakQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxlQUFlLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge1NoYXBlSG9vaywgdXNlU2hhcGVIb29rfSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmVcIlxuaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgRGV2aXNlIGZyb20gXCIuL2RldmlzZS5qc1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBNb2RlbEV2ZW50cyBmcm9tIFwiLi9tb2RlbC1ldmVudHMuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuaW1wb3J0IHVzZVVwZGF0ZWRFdmVudCBmcm9tIFwiLi91c2UtdXBkYXRlZC1ldmVudC5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWxDbGFzcyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsSW5zdGFuY2UgKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsSW5zdGFuY2UgJiB7aWQ6ICgpID0+IG51bWJlciB8IHN0cmluZ319IEJhc2VNb2RlbFdpdGhJZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gTW9kZWxDb2xsZWN0aW9uICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCB1bmRlZmluZWQ+fSBVc2VNb2RlbFF1ZXJ5UGFyYW1zICovXG4vKiogQHR5cGVkZWYge3N0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkfSBVc2VNb2RlbENhY2hlVmFsdWUgKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxNYXRjaFBhcmFtcyAqL1xuLyoqIEB0eXBlZGVmIHt7cGFyYW1zOiBVc2VNb2RlbE1hdGNoUGFyYW1zfX0gVXNlTW9kZWxNYXRjaCAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxEZWZhdWx0cyAqL1xuLyoqIEB0eXBlZGVmIHt7ZGVmYXVsdHM/OiAoKSA9PiBVc2VNb2RlbERlZmF1bHRzIHwgUHJvbWlzZTxVc2VNb2RlbERlZmF1bHRzPn19IFVzZU1vZGVsTmV3SWZOb0lkQ29uZmlnICovXG4vKiogQHR5cGVkZWYge3tjYWxsYmFjazogKGFyZ3M6IHtxdWVyeVBhcmFtczogVXNlTW9kZWxRdWVyeVBhcmFtcyB8IHVuZGVmaW5lZH0pID0+IEJhc2VNb2RlbENsYXNzfX0gVXNlTW9kZWxNb2RlbENsYXNzUmVzb2x2ZXIgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsQ2xhc3M6IEJhc2VNb2RlbENsYXNzfX0gVXNlTW9kZWxBcmdzRmFjdG9yeUFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX0gJiBSZWNvcmQ8c3RyaW5nLCBCYXNlTW9kZWxJbnN0YW5jZT59IFVzZU1vZGVsT25EZXN0cm95ZWRBcmdzICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFVzZU1vZGVsRXZlbnRzXG4gKiBAcHJvcGVydHkgeyhldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWR9IGFkZExpc3RlbmVyXG4gKiBAcHJvcGVydHkgeyhldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWR9IHJlbW92ZUxpc3RlbmVyXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gdXNlTW9kZWxBcmdzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFthY3RpdmVdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW2FiaWxpdGllc11cbiAqIEBwcm9wZXJ0eSB7VXNlTW9kZWxDYWNoZVZhbHVlW119IFtjYWNoZUFyZ3NdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtldmVudFVwZGF0ZWRdXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsRXZlbnRzfSBbZXZlbnRzXVxuICogQHByb3BlcnR5IHsoYXJnczoge3F1ZXJ5UGFyYW1zOiBVc2VNb2RlbFF1ZXJ5UGFyYW1zIHwgdW5kZWZpbmVkfSkgPT4gbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkfSBbbG9hZEJ5UXVlcnlQYXJhbV1cbiAqIEBwcm9wZXJ0eSB7VXNlTW9kZWxNYXRjaH0gW21hdGNoXVxuICogQHByb3BlcnR5IHtVc2VNb2RlbE5ld0lmTm9JZENvbmZpZyB8IGJvb2xlYW59IFtuZXdJZk5vSWRdXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsRGVmYXVsdHN9IFtuZXdBdHRyaWJ1dGVzXVxuICogQHByb3BlcnR5IHsoY3R4OiBVc2VNb2RlbE9uRGVzdHJveWVkQXJncykgPT4gdm9pZH0gW29uRGVzdHJveWVkXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbb3B0aW9uYWxdXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgb2JqZWN0fSBbcHJlbG9hZF1cbiAqIEBwcm9wZXJ0eSB7TW9kZWxDb2xsZWN0aW9ufSBbcXVlcnldXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgb2JqZWN0fSBbc2VsZWN0XVxuICovXG4vKiogQHR5cGVkZWYge3VzZU1vZGVsQXJncyB8ICgoYXJnczogVXNlTW9kZWxBcmdzRmFjdG9yeUFyZ3MpID0+IHVzZU1vZGVsQXJncyl9IFVzZU1vZGVsQXJnc0FyZyAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VNb2RlbFNoYXBlSG9va1Byb3BzXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsQXJnc0FyZ30gW2FyZ3NBcmddXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbENsYXNzIHwgVXNlTW9kZWxNb2RlbENsYXNzUmVzb2x2ZXJ9IG1vZGVsQ2xhc3NBcmdcbiAqL1xuXG4vKiogSG9vayBzdGF0ZSBjb250YWluZXIgZm9yIHVzZU1vZGVsLiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VNb2RlbFN0YXRlXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkfSBtb2RlbFxuICogQHByb3BlcnR5IHtib29sZWFuIHwgdW5kZWZpbmVkfSBub3RGb3VuZFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge3tcbiAqICAgbW9kZWw6IEJhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkLFxuICogICBtb2RlbElkOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQsXG4gKiAgIG5vdEZvdW5kOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gKiB9ICYgUmVjb3JkPHN0cmluZywgQmFzZU1vZGVsSW5zdGFuY2UgfCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxSZXN1bHRcbiAqL1xuXG4vKiogQGF1Z21lbnRzIHtTaGFwZUhvb2s8VXNlTW9kZWxTaGFwZUhvb2tQcm9wcywgVXNlTW9kZWxTdGF0ZT59ICovXG5jbGFzcyBVc2VNb2RlbFNoYXBlSG9vayBleHRlbmRzIFNoYXBlSG9vayB7XG4gIHN0YXRlID0gLyoqIEB0eXBlIHtVc2VNb2RlbFN0YXRlfSAqLyAoe1xuICAgIG1vZGVsOiB1bmRlZmluZWQsXG4gICAgbm90Rm91bmQ6IHVuZGVmaW5lZFxuICB9KVxuXG4gIHVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0SWQgPSB1bmRlZmluZWRcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7VXNlTW9kZWxTaGFwZUhvb2tQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCA9IGZhbHNlXG4gICAgdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uID0gMFxuICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBudWxsXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25SZWFkeSA9IGZhbHNlXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gIShcImFjdGl2ZVwiIGluIHRoaXMuYXJncygpKSB8fCBCb29sZWFuKHRoaXMuYXJncygpLmFjdGl2ZSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dXNlTW9kZWxBcmdzfSAqL1xuICBhcmdzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wLmFyZ3NBcmcgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcoe21vZGVsQ2xhc3M6IHRoaXMubW9kZWxDbGFzcygpfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcgfHwge31cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7QmFzZU1vZGVsQ2xhc3N9ICovXG4gIG1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnAubW9kZWxDbGFzc0FyZyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmcuY2FsbGJhY2soe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmdcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBwYXJhbXNWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kZWxDbGFzcygpLm1vZGVsTmFtZSgpXG4gICAgICAucGFyYW1LZXkoKX1faWRgXG4gIH1cblxuICAvKiogQHJldHVybnMge251bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgbW9kZWxJZCgpIHtcbiAgICBpZiAodGhpcy5hcmdzKCkubG9hZEJ5UXVlcnlQYXJhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXJncygpLmxvYWRCeVF1ZXJ5UGFyYW0oe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJncygpLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmdzKCkubWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkJvdGggJ2xvYWRCeVF1ZXJ5UGFyYW0nIGFuZCAnbWF0Y2gnIHdhc24ndCBnaXZlblwiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MoKS5tYXRjaC5wYXJhbXNbdGhpcy5wYXJhbXNWYXJpYWJsZU5hbWUoKV0gfHwgdGhpcy5hcmdzKCkubWF0Y2gucGFyYW1zLmlkXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgbW9kZWxWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGluZmxlY3Rpb24uY2FtZWxpemUodGhpcy5tb2RlbENsYXNzKCkubW9kZWxDbGFzc0RhdGEoKS5uYW1lLCB0cnVlKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtVc2VNb2RlbENhY2hlVmFsdWVbXX0gKi9cbiAgY2FjaGVBcmdzKCkge1xuICAgIHJldHVybiBbdGhpcy5tb2RlbElkKCldLmNvbmNhdCh0aGlzLmFyZ3MoKS5jYWNoZUFyZ3MgfHwgW10sIHRoaXMucXVlcnlQYXJhbXMpXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIHNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQgJiYgdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMucy5tb2RlbClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxEZWZhdWx0c30gKi9cbiAgbmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpIHtcbiAgICBjb25zdCBtb2RlbERhdGFGcm9tUGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcz8uW1xuICAgICAgdGhpcy5tb2RlbENsYXNzKCkubW9kZWxOYW1lKClcbiAgICAgICAgLnBhcmFtS2V5KClcbiAgICBdXG5cbiAgICByZXR1cm4gdHlwZW9mIG1vZGVsRGF0YUZyb21QYXJhbXMgPT0gXCJvYmplY3RcIiAmJiBtb2RlbERhdGFGcm9tUGFyYW1zID8gbW9kZWxEYXRhRnJvbVBhcmFtcyA6IHt9XG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGhhc0FzeW5jRGVmYXVsdHMoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCAmJiB0eXBlb2YgdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdC50aGVuID09IFwiZnVuY3Rpb25cIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxOZXdJZk5vSWRDb25maWcgfCBudWxsfSAqL1xuICBuZXdJZk5vSWRDb25maWcoKSB7XG4gICAgY29uc3Qge25ld0lmTm9JZH0gPSB0aGlzLmFyZ3MoKVxuXG4gICAgaWYgKCFuZXdJZk5vSWQgfHwgbmV3SWZOb0lkID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBuZXdJZk5vSWRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxEZWZhdWx0cyB8IG51bGx9ICovXG4gIHN5bmNEZWZhdWx0c0Zvck5ld01vZGVsKCkge1xuICAgIGNvbnN0IG5ld0lmTm9JZENvbmZpZyA9IHRoaXMubmV3SWZOb0lkQ29uZmlnKClcblxuICAgIGlmICghbmV3SWZOb0lkQ29uZmlnPy5kZWZhdWx0cykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0FzeW5jRGVmYXVsdHMoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmYXVsdHNSZXN1bHQgPSBuZXdJZk5vSWRDb25maWcuZGVmYXVsdHMoKVxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgJiYgdHlwZW9mIGRlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0IHx8IHt9XG4gIH1cblxuICAvKiogQHJldHVybnMge0Jhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkfSAqL1xuICBzeW5jTmV3TW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpIHx8ICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQgfHwgdGhpcy5tb2RlbElkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMuc3luY0RlZmF1bHRzRm9yTmV3TW9kZWwoKVxuXG4gICAgaWYgKGRlZmF1bHRzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgZGF0YToge2E6IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHRoaXMuYXJncygpLm5ld0F0dHJpYnV0ZXMsIHRoaXMubmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpKX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtCYXNlTW9kZWxJbnN0YW5jZSB8IHVuZGVmaW5lZH0gKi9cbiAgc3Vic2NyaXB0aW9uTW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbCkge1xuICAgICAgcmV0dXJuIHRoaXMucy5tb2RlbFxuICAgIH0gZWxzZSBpZiAoIXRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGRhdGE6IHthOiB7W3RoaXMubW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKV06IHRoaXMubW9kZWxJZCgpfX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7bnVtYmVyfSBsb2FkTW9kZWxHZW5lcmF0aW9uICovXG4gIGxvYWRFeGlzdGluZ01vZGVsID0gYXN5bmMgKGxvYWRNb2RlbEdlbmVyYXRpb24pID0+IHtcbiAgICBsZXQgcXVlcnlcblxuICAgIGlmICh0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgcXVlcnkgPSB0aGlzLm1vZGVsQ2xhc3MoKS5yYW5zYWNrKHtpZF9lcTogdGhpcy5tb2RlbElkKCl9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5hcmdzKCkucXVlcnkpIHtcbiAgICAgIHF1ZXJ5ID0gdGhpcy5hcmdzKCkucXVlcnkuY2xvbmUoKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXRjaFBhcmFtcyA9IHRoaXMuYXJncygpLm1hdGNoPy5wYXJhbXMgfHwge31cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbCBJRCB3YXMgZ2l2ZW46ICR7dGhpcy5tb2RlbElkKCl9IGJ5ICcke3RoaXMucGFyYW1zVmFyaWFibGVOYW1lKCl9JyBpbiBxdWVyeSBwYXJhbXM6ICR7T2JqZWN0LmtleXMobWF0Y2hQYXJhbXMpLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpIHF1ZXJ5LmFiaWxpdGllcyh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpXG4gICAgaWYgKHRoaXMuYXJncygpLnByZWxvYWQpIHF1ZXJ5LnByZWxvYWQodGhpcy5hcmdzKCkucHJlbG9hZClcbiAgICBpZiAodGhpcy5hcmdzKCkuc2VsZWN0KSBxdWVyeS5zZWxlY3QodGhpcy5hcmdzKCkuc2VsZWN0KVxuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBxdWVyeS5maXJzdCgpXG5cbiAgICBpZiAobG9hZE1vZGVsR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24pIHJldHVyblxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zLm1vZGVsICYmXG4gICAgICBtb2RlbCAmJlxuICAgICAgIXRoaXMucy5ub3RGb3VuZCAmJlxuICAgICAgdGhpcy5zLm1vZGVsLmZ1bGxDYWNoZUtleSgpID09IG1vZGVsLmZ1bGxDYWNoZUtleSgpXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKCF0aGlzLnMubW9kZWwgJiYgIW1vZGVsICYmIHRoaXMucy5ub3RGb3VuZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLnMubm90Rm91bmQgPSAhbW9kZWxcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge251bWJlcn0gbG9hZE1vZGVsR2VuZXJhdGlvbiAqL1xuICBsb2FkTmV3TW9kZWwgPSBhc3luYyAobG9hZE1vZGVsR2VuZXJhdGlvbikgPT4ge1xuICAgIGxldCBkZWZhdWx0cyA9IHt9XG4gICAgY29uc3QgbmV3SWZOb0lkQ29uZmlnID0gdGhpcy5uZXdJZk5vSWRDb25maWcoKVxuXG4gICAgaWYgKG5ld0lmTm9JZENvbmZpZz8uZGVmYXVsdHMpIHtcbiAgICAgIGxldCBkZWZhdWx0c1Jlc3VsdCA9IHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHRcblxuICAgICAgaWYgKGRlZmF1bHRzUmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgIGRlZmF1bHRzUmVzdWx0ID0gbmV3SWZOb0lkQ29uZmlnLmRlZmF1bHRzKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9IG51bGxcbiAgICAgIGRlZmF1bHRzID0gYXdhaXQgZGVmYXVsdHNSZXN1bHRcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbCA9IG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgZGF0YToge2E6IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHRoaXMuYXJncygpLm5ld0F0dHJpYnV0ZXMsIHRoaXMubmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpKX1cbiAgICB9KVxuXG4gICAgaWYgKGxvYWRNb2RlbEdlbmVyYXRpb24gIT0gdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uKSByZXR1cm5cblxuICAgIHRoaXMucy5tb2RlbCA9IG1vZGVsXG4gICAgdGhpcy5zLm5vdEZvdW5kID0gZmFsc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgbG9hZE1vZGVsID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIE9ubHkgdGhlIG5ld2VzdCBtb2RlbCByZXF1ZXN0IG1heSB1cGRhdGUgc3RhdGUgYWZ0ZXIgcm91dGUgb3IgYXV0aCBjaGFuZ2VzLlxuICAgIGNvbnN0IGxvYWRNb2RlbEdlbmVyYXRpb24gPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gKyAxXG5cbiAgICB0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkID0gdHJ1ZVxuICAgIHRoaXMubG9hZE1vZGVsR2VuZXJhdGlvbiA9IGxvYWRNb2RlbEdlbmVyYXRpb25cbiAgICBpZiAodGhpcy5hY3RpdmUoKSAmJiB0aGlzLmFyZ3MoKS5uZXdJZk5vSWQgJiYgIXRoaXMubW9kZWxJZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWROZXdNb2RlbChsb2FkTW9kZWxHZW5lcmF0aW9uKVxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmUoKSAmJiAoIXRoaXMuYXJncygpLm9wdGlvbmFsIHx8IHRoaXMubW9kZWxJZCgpIHx8IHRoaXMuYXJncygpLnF1ZXJ5KSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRXhpc3RpbmdNb2RlbChsb2FkTW9kZWxHZW5lcmF0aW9uKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgY2xlYXJVcGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dCgpIHtcbiAgICBpZiAodGhpcy51cGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy51cGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dElkKVxuICAgICAgdGhpcy51cGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dElkID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBlbnN1cmVJbml0aWFsTG9hZEZhbGxiYWNrKCkge1xuICAgIGlmICghdGhpcy5zaG91bGRXYWl0Rm9yVXBkYXRlZENvbm5lY3Rpb24oKSB8fCB0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKVxuICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVwZGF0ZWRDb25uZWN0aW9uUmVhZHkgJiYgIXRoaXMuaW5pdGlhbExvYWRUcmlnZ2VyZWQpIHtcbiAgICAgICAgdGhpcy5sb2FkTW9kZWwoKVxuICAgICAgfVxuICAgIH0sIDEwMDApXG4gIH1cblxuICAvKiogQHBhcmFtIHt7bW9kZWw6IEJhc2VNb2RlbEluc3RhbmNlfX0gYXJncyAqL1xuICBvbkRlc3Ryb3llZCA9IChhcmdzKSA9PiB7XG4gICAgY29uc3QgZm9yd2FyZEFyZ3MgPSB7bW9kZWw6IGFyZ3MubW9kZWx9XG5cbiAgICBmb3J3YXJkQXJnc1t0aGlzLm1vZGVsVmFyaWFibGVOYW1lKCldID0gYXJncy5tb2RlbFxuXG4gICAgdGhpcy5hcmdzKCkub25EZXN0cm95ZWQoZm9yd2FyZEFyZ3MpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIG9uU2lnbmVkSW4gPSAoKSA9PiB7XG4gICAgdGhpcy5sb2FkTW9kZWwoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblNpZ25lZE91dCA9ICgpID0+IHtcbiAgICB0aGlzLmxvYWRNb2RlbCgpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIG9uVXBkYXRlZEV2ZW50Q29ubmVjdGVkID0gKCkgPT4ge1xuICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25SZWFkeSA9IHRydWVcbiAgICB0aGlzLmNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkgJiYgIXRoaXMuaW5pdGlhbExvYWRUcmlnZ2VyZWQpIHtcbiAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0Jhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkfSAqL1xuICB2aXNpYmxlTW9kZWwoKSB7XG4gICAgbGV0IG1vZGVsID0gdGhpcy5zLm1vZGVsXG5cbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICBtb2RlbCA9IHRoaXMuc3luY05ld01vZGVsKClcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYWN0aXZlKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWxJZCgpICYmIG1vZGVsICYmIC8qKiBAdHlwZSB7QmFzZU1vZGVsV2l0aElkfSAqLyAobW9kZWwpLmlkKCkgIT0gdGhpcy5tb2RlbElkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm1vZGVsSWQoKSAmJiAhdGhpcy5hcmdzKCkucXVlcnkgJiYgIXRoaXMuYXJncygpLm5ld0lmTm9JZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICB2aXNpYmxlTm90Rm91bmQoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsSWQoKSAmJiB0aGlzLnZpc2libGVNb2RlbCgpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm1vZGVsSWQoKSAmJiAhdGhpcy5hcmdzKCkucXVlcnkgJiYgIXRoaXMuYXJncygpLm5ld0lmTm9JZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnMubm90Rm91bmRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucy5tb2RlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgc3luY05ld01vZGVsID0gdGhpcy5zeW5jTmV3TW9kZWwoKVxuXG4gICAgICAgICAgaWYgKHN5bmNOZXdNb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5zLm1vZGVsID0gc3luY05ld01vZGVsXG4gICAgICAgICAgICB0aGlzLnMubm90Rm91bmQgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpKSB7XG4gICAgICAgICAgdGhpcy5lbnN1cmVJbml0aWFsTG9hZEZhbGxiYWNrKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRNb2RlbCgpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0aGlzLmNhY2hlQXJncygpXG4gICAgKVxuXG4gICAgLy8gSW52YWxpZGF0ZSBpbi1mbGlnaHQgYXN5bmMgcmVzcG9uc2VzIHNvIHN0YWxlIGxvYWRzIGNhbm5vdCB3cml0ZSBhZnRlciB1bm1vdW50LlxuICAgIHVzZUVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKVxuICAgICAgdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uICs9IDFcbiAgICB9LCBbXSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYXJncygpLmV2ZW50cykgcmV0dXJuXG5cbiAgICAgIHRoaXMuYXJncygpLmV2ZW50cy5hZGRMaXN0ZW5lcihcInJlbG9hZE1vZGVsXCIsIHRoaXMubG9hZE1vZGVsKVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLmFyZ3MoKS5ldmVudHMucmVtb3ZlTGlzdGVuZXIoXCJyZWxvYWRNb2RlbFwiLCB0aGlzLmxvYWRNb2RlbClcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5hcmdzKCkuZXZlbnRzXSlcblxuICAgIHVzZVVwZGF0ZWRFdmVudCh0aGlzLnN1YnNjcmlwdGlvbk1vZGVsKCksIHRoaXMubG9hZE1vZGVsLCB7XG4gICAgICBvbkNvbm5lY3RlZDogdGhpcy5vblVwZGF0ZWRFdmVudENvbm5lY3RlZFxuICAgIH0pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgRGV2aXNlLmV2ZW50cygpLmFkZExpc3RlbmVyKFwib25EZXZpc2VTaWduSW5cIiwgdGhpcy5vblNpZ25lZEluKVxuICAgICAgRGV2aXNlLmV2ZW50cygpLmFkZExpc3RlbmVyKFwib25EZXZpc2VTaWduT3V0XCIsIHRoaXMub25TaWduZWRPdXQpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIERldmlzZS5ldmVudHMoKS5yZW1vdmVMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbkluXCIsIHRoaXMub25TaWduZWRJbilcbiAgICAgICAgRGV2aXNlLmV2ZW50cygpLnJlbW92ZUxpc3RlbmVyKFwib25EZXZpc2VTaWduT3V0XCIsIHRoaXMub25TaWduZWRPdXQpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucy5tb2RlbCB8fCAhdGhpcy5hcmdzKCkub25EZXN0cm95ZWQpIHJldHVyblxuXG4gICAgICBjb25zdCBjb25uZWN0RGVzdHJveWVkID0gTW9kZWxFdmVudHMuY29ubmVjdERlc3Ryb3llZCh0aGlzLnMubW9kZWwsIHRoaXMub25EZXN0cm95ZWQpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbm5lY3REZXN0cm95ZWQudW5zdWJzY3JpYmUoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLmFyZ3MoKS5vbkRlc3Ryb3llZCwgdGhpcy5zLm1vZGVsID8gLyoqIEB0eXBlIHtCYXNlTW9kZWxXaXRoSWR9ICovICh0aGlzLnMubW9kZWwpLmlkKCkgOiB1bmRlZmluZWRdKVxuICB9XG59XG5cbi8qKlxuICogdXNlTW9kZWwuXG4gKiBAcGFyYW0ge0Jhc2VNb2RlbENsYXNzIHwgVXNlTW9kZWxNb2RlbENsYXNzUmVzb2x2ZXJ9IG1vZGVsQ2xhc3NBcmdcbiAqIEBwYXJhbSB7VXNlTW9kZWxBcmdzQXJnfSBbYXJnc0FyZ11cbiAqIEByZXR1cm5zIHtVc2VNb2RlbFJlc3VsdH1cbiAqL1xuY29uc3QgdXNlTW9kZWwgPSAobW9kZWxDbGFzc0FyZywgYXJnc0FyZyA9IHt9KSA9PiB7XG4gIGNvbnN0IHNoYXBlSG9vayA9IHVzZVNoYXBlSG9vayhVc2VNb2RlbFNoYXBlSG9vaywge2FyZ3NBcmcsIG1vZGVsQ2xhc3NBcmd9KVxuICBjb25zdCBtb2RlbCA9IHNoYXBlSG9vay52aXNpYmxlTW9kZWwoKVxuICBjb25zdCBtb2RlbElkID0gc2hhcGVIb29rLm1vZGVsSWQoKVxuICBjb25zdCBub3RGb3VuZCA9IHNoYXBlSG9vay52aXNpYmxlTm90Rm91bmQoKVxuICBjb25zdCBtb2RlbFZhcmlhYmxlTmFtZSA9IHNoYXBlSG9vay5tb2RlbFZhcmlhYmxlTmFtZSgpXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBtb2RlbCxcbiAgICBtb2RlbElkLFxuICAgIG5vdEZvdW5kXG4gIH1cblxuICByZXN1bHRbbW9kZWxWYXJpYWJsZU5hbWVdID0gbW9kZWxcbiAgcmVzdWx0W2Ake21vZGVsVmFyaWFibGVOYW1lfUlkYF0gPSBtb2RlbElkXG4gIHJlc3VsdFtgJHttb2RlbFZhcmlhYmxlTmFtZX1Ob3RGb3VuZGBdID0gbm90Rm91bmRcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZU1vZGVsXG4iXX0=
|