@magic-xpa/engine 4.801.0-dev481.310 → 4.801.0-dev481.313

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/esm2020/index.mjs +1 -3
  2. package/esm2020/src/ClientManager.mjs +3 -39
  3. package/esm2020/src/ConstInterface.mjs +2 -216
  4. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  5. package/esm2020/src/FlowMonitorInterface.mjs +1 -23
  6. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +2 -28
  7. package/esm2020/src/data/DataView.mjs +1 -23
  8. package/esm2020/src/data/FieldsTable.mjs +1 -9
  9. package/esm2020/src/data/RecordOutOfDataViewException.mjs +1 -9
  10. package/esm2020/src/env/Environment.mjs +2 -71
  11. package/esm2020/src/event/EventHandler.mjs +1 -12
  12. package/esm2020/src/event/EventsManager.mjs +2 -2
  13. package/esm2020/src/event/RunTimeEvent.mjs +1 -15
  14. package/esm2020/src/event/UserEventsTable.mjs +1 -4
  15. package/esm2020/src/exp/YesNoExp.mjs +1 -6
  16. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +1 -4
  17. package/esm2020/src/remote/ServerError.mjs +1 -5
  18. package/esm2020/src/rt/Argument.mjs +2 -11
  19. package/esm2020/src/rt/Boundary.mjs +1 -7
  20. package/esm2020/src/rt/DataviewHeaders.mjs +1 -4
  21. package/esm2020/src/rt/HandlersTable.mjs +1 -4
  22. package/esm2020/src/rt/Transaction.mjs +1 -2
  23. package/esm2020/src/tasks/MGDataCollection.mjs +1 -8
  24. package/esm2020/src/tasks/sort/SortCollection.mjs +1 -6
  25. package/fesm2015/magic-xpa-engine.mjs +38 -522
  26. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  27. package/fesm2020/magic-xpa-engine.mjs +38 -522
  28. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  29. package/index.d.ts +0 -2
  30. package/package.json +4 -4
  31. package/src/ClientManager.d.ts +0 -10
  32. package/src/ConstInterface.d.ts +1 -214
  33. package/src/FlowMonitorInterface.d.ts +0 -22
  34. package/src/commands/ClientToServer/CommandFactory.d.ts +0 -7
  35. package/src/data/DataView.d.ts +0 -5
  36. package/src/data/FieldsTable.d.ts +0 -1
  37. package/src/data/RecordOutOfDataViewException.d.ts +0 -3
  38. package/src/env/Environment.d.ts +0 -27
  39. package/src/event/EventHandler.d.ts +0 -4
  40. package/src/event/RunTimeEvent.d.ts +0 -8
  41. package/src/event/UserEventsTable.d.ts +0 -1
  42. package/src/exp/YesNoExp.d.ts +0 -1
  43. package/src/remote/ServerError.d.ts +0 -4
  44. package/src/rt/Argument.d.ts +0 -1
  45. package/src/rt/Boundary.d.ts +0 -3
  46. package/src/rt/DataviewHeaders.d.ts +0 -1
  47. package/src/rt/HandlersTable.d.ts +0 -1
  48. package/src/rt/Transaction.d.ts +0 -1
  49. package/src/tasks/MGDataCollection.d.ts +0 -1
  50. package/src/tasks/sort/SortCollection.d.ts +0 -1
  51. package/esm2020/src/tasks/MenusDeserializer.mjs +0 -3
  52. package/esm2020/src/util/Process.mjs +0 -7
  53. package/src/tasks/MenusDeserializer.d.ts +0 -2
  54. package/src/util/Process.d.ts +0 -3
@@ -37,12 +37,6 @@ export class RunTimeEvent extends RunTimeEventBase {
37
37
  this._task = null;
38
38
  this._taskTag = null;
39
39
  this._val = null;
40
- this.IsSubTree = false;
41
- this.IsFormFocus = false;
42
- this.ActivatedFromMDIFrame = false;
43
- this.PrgFlow = '\0';
44
- this.CopyGlobalParams = false;
45
- this.MainProgVars = null;
46
40
  this.IgnoreSpecifiedControl = false;
47
41
  this.LastFocusedVal = null;
48
42
  if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase))
@@ -215,11 +209,6 @@ export class RunTimeEvent extends RunTimeEventBase {
215
209
  this._mgdId = mgdID;
216
210
  this._isIdleTimer = isIdle;
217
211
  }
218
- setClose(mgdID, closeActCode) {
219
- super.setInternal(closeActCode);
220
- this._mgdId = mgdID;
221
- this._guiTriggeredEvent = true;
222
- }
223
212
  getDisplayLine() {
224
213
  return this._displayLine;
225
214
  }
@@ -376,9 +365,6 @@ export class RunTimeEvent extends RunTimeEventBase {
376
365
  setProduceClick(produceClick) {
377
366
  this._produceClick = produceClick;
378
367
  }
379
- setActEnableList(actList) {
380
- this._actEnableList = actList;
381
- }
382
368
  getActEnableList() {
383
369
  return this._actEnableList;
384
370
  }
@@ -403,4 +389,4 @@ export class RunTimeEvent extends RunTimeEventBase {
403
389
  ]);
404
390
  }
405
391
  }
406
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuVGltZUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9SdW5UaW1lRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakcsT0FBTyxFQUFDLFlBQVksRUFBa0IsYUFBYSxFQUFFLFNBQVMsRUFBWSxhQUFhLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzdDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQWdCO0lBNEZoRCxZQUFZLHNDQUEyQyxFQUFFLDJGQUFpRyxFQUFFLGtGQUF3RixFQUFFLFNBQWtCLEVBQUUsS0FBYyxFQUFFLE1BQWU7UUFDdlMsS0FBSyxFQUFFLENBQUM7UUF2RkYsa0JBQWEsR0FBd0IsSUFBSSxDQUFDO1FBQzFDLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsaUJBQVksR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFD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RCxJQUFJLFNBQVMsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLG9DQUFvQyxFQUFFO1lBQzFELElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDdkcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFyLCBJQ29tcGFyYWJsZSwgSW50MzIsIExpc3QsIE5TdHJpbmcsIFN0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0ZvcmNlRXhpdCwgSW50ZXJuYWxJbnRlcmZhY2UsIFByaW9yaXR5LCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtHdWlGaWVsZEJhc2UsIExhc3RGb2N1c2VkVmFsLCBNZ0NvbnRyb2xCYXNlLCBNb2RpZmllcnMsIFByb3BlcnR5LCBQcm9wSW50ZXJmYWNlLH0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7RXZlbnRTdWJUeXBlfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuaW1wb3J0IHtFdmVudH0gZnJvbSBcIi4vRXZlbnRcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJndW1lbnRzTGlzdH0gZnJvbSBcIi4uL3J0L0FyZ3VtZW50c0xpc3RcIjtcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gXCIuLi90YXNrcy9NR0RhdGFcIjtcclxuaW1wb3J0IHtUYXNrQmFzZX0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tCYXNlXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50QmFzZX0gZnJvbSBcIi4vUnVuVGltZUV2ZW50QmFzZVwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHJ1bnRpbWUgZXZlbnRzXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBSdW5UaW1lRXZlbnQgZXh0ZW5kcyBSdW5UaW1lRXZlbnRCYXNlIGltcGxlbWVudHMgSUNvbXBhcmFibGUge1xyXG5cclxuICAvLyBBVFRFTlRJT04gIVxyXG4gIC8vIGFueSBjaGFuZ2UgdG8gdGhlIG1lbWJlciB2YXJpYWJsZXMgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGNoYW5nZSB0byB0aGUgQ1RPUiB0aGF0XHJcbiAgLy8gZ2V0cyBvbmUgYXJndW1lbnQgb2YgdGhlIHR5cGUgJ0V2ZW50JyBhbmQgb25lIGFyZ3VtZW50IG9mIHRoZSB0eXBlICdSdW5UaW1lRXZlbnQnLlxyXG5cclxuICBwcml2YXRlIF9jb250cm9sc0xpc3Q6IExpc3Q8TWdDb250cm9sQmFzZT4gPSBudWxsOyAvLyBsaXN0IG9mIGNvbnRyb2xzXHJcbiAgcHJpdmF0ZSBfZGlyZWN0aW9uOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX2Rpc3BsYXlMaW5lOiBudW1iZXIgPSBJbnQzMi5NaW5WYWx1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfZXZlbnRTdWJUeXBlOiBFdmVudFN1YlR5cGUgPSBFdmVudFN1YlR5cGUuTm9ybWFsO1xyXG5cclxuICBwcml2YXRlIF9hY3RFbmFibGVMaXN0OiBudW1iZXJbXSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYXJnTGlzdDogQXJndW1lbnRzTGlzdCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3RybDogTWdDb250cm9sQmFzZSA9IG51bGw7IC8vIHRoZSBjb250cm9sIG9uIHdoaWNoIHRoZSBldmVudCB3YXMgdHJpZ2dlcmVkXHJcbiAgcHJpdmF0ZSBfZG90TmV0T2JqZWN0OiBhbnkgPSBudWxsOyAvLyBvYmplY3Qga2V5IG9mIGEgY29udHJvbFxyXG4gIHByaXZhdGUgX2V2ZW50RmxkOiBHdWlGaWVsZEJhc2UgPSBudWxsOyAvLyBGb3IgdmFyaWFibGUgZXZlbnRzIC0gdGhlIGZpZWxkIG9uIHdoaWNoIHRoZSBjb250cm9sIHdhcyB0cmlnZ2VyZWRcclxuICBwcml2YXRlIF9mcm9tU2VydmVyOiBib29sZWFuID0gZmFsc2U7ICAvLyBpZiBUUlVFLCB0aGUgZXZlbnQgd2FzIGNyZWF0ZWQgb24gdGhlIHNlcnZlciBhbmQgc2VudCB0byB0aGUgY2xpZW50XHJcbiAgcHJpdmF0ZSBfZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgdHJ1ZSwgdGhlIGV2ZW50IHdhcyB0cmlnZ2VyZWQgYnkgR1VJIGxldmVsIChpbmNsdWRlcyB0aW1lciBldmVudHMpXHJcbiAgcHJpdmF0ZSBfaW1tZWRpYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNJZGxlVGltZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1JlYWxSZWZyZXNoOiBib29sZWFuID0gdHJ1ZTsgLy8gdXNlZCBvbmx5IGluIE1HX0FDVF9WSUVXX1JFRlJFU0ggZXZlbnRzIHRvIGluZGljYXRlIGEgcmVmcmVzaCBpbnZva2VkIFNwZWNpZmljYWxseSBieSB0aGUgdXNlclxyXG4gIHByaXZhdGUgX21nZElkOiBudW1iZXIgPSAwOyAvLyBtZ2RhdGEgaWQgdGhhdCBzZW50IHRpbWVyIGV2ZW50XHJcbiAgcHJpdmF0ZSBfcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG51bGw7XHJcblxyXG4gIC8vIFVzZWQgb25seSBpZiAndGFzaycgaXMgYSBtYWluIHByZy4gQSByZWZlcmVuY2UgdG8gdGhlIHRhc2sgd2hpY2hcclxuICAvLyBjYXVzZWQgdGhlIG1haW4gcHJnIHRvIGJlY29tZSBhY3RpdmUgaW4gdGhlIHJ1bnRpbWUuXHJcbiAgcHJpdmF0ZSBfbXByZ0NyZWF0b3I6IFRhc2tCYXNlID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfcHJpb3JpdHk6IFByaW9yaXR5ID0gUHJpb3JpdHkuSElHSDsgLy8gcHJpb3JpdHkgb2YgZXZlbnQgZm9yIGV2ZW50cyBxdWV1ZVxyXG5cclxuICBwcml2YXRlIF9wcm9kdWNlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgVFJVRSwgdGhlIGV2ZW50IHNob3VsZCBwcm9kdWNlIGNsaWNrXHJcbiAgcHJpdmF0ZSBfcmV2ZXJzaWJsZUV4aXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3Rpb25FbmQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uU3RhcnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfc2VuZEFsbDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gdGhpcyBmbGFnIGlzIHNldCBmb3Igc2VuZGluZyBhbGwgcmVjb3Jkc1xyXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2tCYXNlID0gbnVsbDsgLy8gYSByZWZlcmVuY2UgdG8gdGhlIHRhc2tcclxuICBwcml2YXRlIF90YXNrVGFnOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgdGFzayBpZCBvbiB3aGljaCB0aGUgZXZlbnQgd2FzIHRyaWdnZXJlZFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDtcclxuXHJcbiAgSXNTdWJUcmVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNGb3JtRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQWN0aXZhdGVkRnJvbU1ESUZyYW1lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgUHJnRmxvdzogc3RyaW5nID0gJ1xcMCc7XHJcbiAgQ29weUdsb2JhbFBhcmFtczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIE1haW5Qcm9nVmFyczogTGlzdDxzdHJpbmc+ID0gbnVsbDtcclxuXHJcblxyXG4gIHNldCBDb250cm9sKHZhbHVlOiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICB0aGlzLl9jdHJsID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgRGlzcGxheUxpbmUodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBDb250cm9sKCk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3VsZCB0aGUgY29udHJvbCBzZXQgb24gdGhlIGV2ZW50IGJlIGlnbm9yZWQuIGlmIHRydWUsIHdoZW4gcHJvY2Vzc2luZyB0aGUgZXZlbnQgd2Ugc2hvdWxkXHJcbiAgLy8vIHVzZSB0aGUgY3VycmVudCBmb2N1c2VkIGNvbnRyb2wgaW5zdGVhZCBvZiB0aGUgb25lIHNldCBvbiB0aGUgZXZlbnQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBJZ25vcmVTcGVjaWZpZWRDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIExhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCA9IG51bGw7IC8vIHZhbHVlIG9mIGxhc3QgZWRpdGVkIGNvbnRyb2xcclxuXHJcbiAgZ2V0IENvbnRyb2xzTGlzdCgpOiBMaXN0PE1nQ29udHJvbEJhc2U+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXQgRGlyZWN0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IodGFza1JlZjogVGFza0Jhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tSZWY6IFRhc2tCYXNlLCBjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4sIGlnbm9yZVNwZWNpZmllZENvbnRyb2w6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tyZWY6IFRhc2tCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoZmxkUmVmOiBHdWlGaWVsZEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgbGluZTogbnVtYmVyLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgY29udHJvbHNMaXN0OiBMaXN0PE1nQ29udHJvbEJhc2U+LCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZGlyZWN0aW9uOiBudW1iZXIsIGxpbmU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgY29sdW1uSGVhZGVyOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoZXZ0OiBFdmVudCwgcnRFdnQ6IFJ1blRpbWVFdmVudCk7XHJcbiAgY29uc3RydWN0b3IocnRFdnQ6IFJ1blRpbWVFdmVudCk7XHJcbiAgY29uc3RydWN0b3IodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQ6IGFueSwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaz86IGFueSwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZT86IGFueSwgeU9yQ3RsSWR4PzogbnVtYmVyLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgVGFza0Jhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzUodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgVGFza0Jhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl82KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzcodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfOCh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl85KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFRhc2tCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMCh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBHdWlGaWVsZEJhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzExKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IE51bWJlcikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTIodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMyh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaywgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrIGluc3RhbmNlb2YgTGlzdCkgJiYgKGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUgPT09IG51bGwgfHwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZS5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTQodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2ssIGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE1KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA2KVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE2KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIEV2ZW50KSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrIGluc3RhbmNlb2YgUnVuVGltZUV2ZW50KSkge1xyXG4gICAgICAvLyBDYWxsIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgdG8gaW5pdGlhbGl6ZSB0aGUgZXZlbnQgdHlwZSBhbmQgdGhlIG90aGVyIGZpZWxkc1xyXG4gICAgICBzdXBlci5jb25zdHJ1Y3Rvcl8xKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xNyggY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFJ1blRpbWVFdmVudClcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSB0YXNrPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzUodGFza1JlZjogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdCh0YXNrUmVmKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj5yZWZlcmVuY2UgdG8gdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsUmVmXCI+cmVmZXJlbmNlIHRvIGNvbnRyb2w8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfNih0YXNrUmVmOiBUYXNrQmFzZSwgY3RybFJlZjogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl81KChjdHJsUmVmICE9PSBudWxsKSA/ICg8VGFza0Jhc2U+Y3RybFJlZi5nZXRGb3JtKCkuZ2V0VGFzaygpKSA6IHRhc2tSZWYpO1xyXG4gICAgdGhpcy5Db250cm9sID0gY3RybFJlZjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfNyhjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzYobnVsbCwgY3RybFJlZik7XHJcbiAgICBpZiAoY3RybFJlZiAhPT0gbnVsbCAmJiBzdXBlci5nZXRUeXBlKCkgPT09IENoYXIuTWluVmFsdWUpIC8vIG5vdCBpbml0aWFsaXplZCB5ZXRcclxuICAgIHtcclxuICAgICAgLy8gb24gdGhlIGZpcnN0IHRpbWUsIGlmIGEgVFJJR0dFUiBwcm9wZXJ0eSBleGlzdHMsIHBhcnNlIHRoZSBldmVudCBhbmQgYWRkIGl0IHRvIHRoZSBjb250cm9sXHJcbiAgICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IGN0cmxSZWYuR2V0Q29tcHV0ZWRQcm9wZXJ0eShQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UUklHR0VSKTtcclxuICAgICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgICBsZXQgeG1sUGFyc2VyOiBYbWxQYXJzZXIgPSBuZXcgWG1sUGFyc2VyKHByb3AuR2V0Q29tcHV0ZWRWYWx1ZSgpKTtcclxuICAgICAgICBzdXBlci5maWxsRGF0YSh4bWxQYXJzZXIsIDxUYXNrQmFzZT5jdHJsUmVmLmdldEZvcm0oKS5nZXRUYXNrKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsUmVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl84KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzcoY3RybFJlZik7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IGd1aVRyaWdnZXJlZEV2ZW50O1xyXG4gICAgaWYgKGd1aVRyaWdnZXJlZEV2ZW50KSB7XHJcbiAgICAgIC8vIEV2ZW50cyB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgR1VJIGxldmVsLCBtdXN0IGJlIGV4ZWN1dGVkIGFmdGVyIGFsbFxyXG4gICAgICAvLyBvdGhlciBldmVudHMsIHRodXMgdGhheSBoYXZlIGxvdyBwcmlvcml0eTtcclxuICAgICAgdGhpcy5fcHJpb3JpdHkgPSBQcmlvcml0eS5MT1c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsUmVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl85KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5JZ25vcmVTcGVjaWZpZWRDb250cm9sID0gaWdub3JlU3BlY2lmaWVkQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tyZWZcIj5yZWZlcmVuY2UgdG8gdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMCh0YXNrcmVmOiBUYXNrQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfNSh0YXNrcmVmKTtcclxuICAgIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50ID0gZ3VpVHJpZ2dlcmVkRXZlbnQ7XHJcbiAgICBpZiAoZ3VpVHJpZ2dlcmVkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fcHJpb3JpdHkgPSBQcmlvcml0eS5MT1c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgZmllbGQ8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTEoZmxkUmVmOiBHdWlGaWVsZEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50RmxkID0gZmxkUmVmO1xyXG4gICAgdGhpcy5pbml0KChmbGRSZWYgIT09IG51bGwpID8gKDxUYXNrQmFzZT5mbGRSZWYuZ2V0VGFzaygpKSA6IG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFJlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSBjb250cm9sIG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cmVkIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+dGhlIGxpbmUgb2YgdGhlIHRhYmxlIGluIHdoaWNoIHRoZSBjb250cm9sIGlzIGxvY2F0ZWQgPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEyKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl83KGN0cmxSZWYpO1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSBsaW5lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMyhjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBsaW5lOiBudW1iZXIsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSBsaW5lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNChjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBjb250cm9sc0xpc3Q6IExpc3Q8TWdDb250cm9sQmFzZT4sIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5fY29udHJvbHNMaXN0ID0gY29udHJvbHNMaXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNShjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBkaXJlY3Rpb246IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIHRydWUpO1xyXG4gICAgdGhpcy5fZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlICk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1IgLSBjcmVhdGVzIGEgbmV3IHJ1biB0aW1lIGV2ZW50IGJ5IGNvcHlpbmcgdGhlIG1lbWJlciB2YXJpYWJsZXMgb2YgYSBnaXZlblxyXG4gIC8vLyAgIGV2ZW50IGFuZCB0aGUgbWVtYmVyIHZhcmlhYmxlcyBvZiBhIGdpdmVuIHJ1biB0aW1lIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV2dFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCB0byBiZSB1c2VkIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJydEV2dFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBydW4gdGltZSBldmVudCB0byBiZSB1c2VkIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNyggcnRFdnQ6IFJ1blRpbWVFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFza1RhZyA9IHJ0RXZ0Ll90YXNrVGFnO1xyXG4gICAgdGhpcy5fdGFzayA9IHJ0RXZ0Ll90YXNrO1xyXG4gICAgdGhpcy5Db250cm9sID0gcnRFdnQuQ29udHJvbDtcclxuICAgIHRoaXMuX2V2ZW50RmxkID0gcnRFdnQuX2V2ZW50RmxkO1xyXG4gICAgdGhpcy5fbWdkSWQgPSBydEV2dC5fbWdkSWQ7XHJcbiAgICB0aGlzLl9kaXNwbGF5TGluZSA9IHJ0RXZ0Ll9kaXNwbGF5TGluZTtcclxuICAgIHRoaXMuX3JldmVyc2libGVFeGl0ID0gcnRFdnQuX3JldmVyc2libGVFeGl0O1xyXG4gICAgdGhpcy5fYXJnTGlzdCA9IHJ0RXZ0Ll9hcmdMaXN0O1xyXG4gICAgdGhpcy5faW1tZWRpYXRlID0gcnRFdnQuX2ltbWVkaWF0ZTtcclxuICAgIHRoaXMuX21wcmdDcmVhdG9yID0gcnRFdnQuX21wcmdDcmVhdG9yO1xyXG4gICAgdGhpcy5fcHJpb3JpdHkgPSBydEV2dC5fcHJpb3JpdHk7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IHJ0RXZ0Ll9ndWlUcmlnZ2VyZWRFdmVudDtcclxuICAgIHRoaXMuX2lzSWRsZVRpbWVyID0gcnRFdnQuX2lzSWRsZVRpbWVyO1xyXG4gICAgdGhpcy5fdmFsID0gcnRFdnQuX3ZhbDtcclxuICAgIHRoaXMuX3NlbGVjdGlvblN0YXJ0ID0gcnRFdnQuX3NlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uRW5kID0gcnRFdnQuX3NlbGVjdGlvbkVuZDtcclxuICAgIHRoaXMuX2NvbnRyb2xzTGlzdCA9IHJ0RXZ0Ll9jb250cm9sc0xpc3Q7XHJcbiAgICB0aGlzLl9kaXJlY3Rpb24gPSBydEV2dC5fZGlyZWN0aW9uO1xyXG4gICAgdGhpcy5fZG90TmV0T2JqZWN0ID0gcnRFdnQuX2RvdE5ldE9iamVjdDtcclxuICAgIHRoaXMuTGFzdEZvY3VzZWRWYWwgPSBydEV2dC5MYXN0Rm9jdXNlZFZhbDtcclxuICAgIHRoaXMuX3JvdXRlUGFyYW1zID0gcnRFdnQuX3JvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbXBsZW1lbnRpbmcgY29tcGFyYXRvciwgdGhlIGV2ZW50cyBhcmUgY29tcGFyZWQgYnkgcHJpb3JpdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIENvbXBhcmVUbyhvYmo6IGFueSk6IG51bWJlciB7XHJcbiAgICBsZXQgb3RoZXJUaW1lRXZlbnQ6IFJ1blRpbWVFdmVudCA9IDxSdW5UaW1lRXZlbnQ+b2JqO1xyXG4gICAgbGV0IG90aGVyUHJpb3JpdHk6IFByaW9yaXR5ID0gb3RoZXJUaW1lRXZlbnQuX3ByaW9yaXR5O1xyXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gb3RoZXJQcmlvcml0eSAtIHRoaXMuX3ByaW9yaXR5O1xyXG4gICAgaWYgKHJlc3VsdCA9PT0gMClcclxuICAgICAgcmVzdWx0ID0gPG51bWJlcj4odGhpcy5fdGltZXN0YW1wIC0gb3RoZXJUaW1lRXZlbnQuX3RpbWVzdGFtcCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgYSByZXBsaWNhIG9mIHRoaXMgcnVudGltZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVwbGljYXRlKCk6IFJ1blRpbWVFdmVudCB7XHJcbiAgICBsZXQgcnVuVGltZUV2ZW50OiBSdW5UaW1lRXZlbnQgPSBuZXcgUnVuVGltZUV2ZW50KHRoaXMpO1xyXG4gICAgcnVuVGltZUV2ZW50LnNldFRpbWVzdGFtcCgpO1xyXG4gICAgcmV0dXJuIHJ1blRpbWVFdmVudDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhIGhlbHBlciBtZXRob2QgdGhhdCBkb2VzIHNvbWUgY29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBzb21lIG9mIHRoZSBjb25zdHJ1Y3RvcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgaW5pdCh0YXNrUmVmOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFzayA9ICh0YXNrUmVmIHx8ICg8TUdEYXRhPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRDdXJyTUdEYXRhKCkpLmdldEZpcnN0VGFzaygpKTtcclxuICAgIHRoaXMuX3Rhc2tUYWcgPSAoKHRoaXMuX3Rhc2sgPT09IG51bGwpID8gXCJcIiA6IHRoaXMuX3Rhc2suZ2V0VGFza1RhZygpKTtcclxuICAgIHRoaXMuX21wcmdDcmVhdG9yID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb252ZXJ0cyBwYXJhbWV0ZXJzIHRvIGFyZ3VtZW50IGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnZlcnRQYXJhbXNUb0FyZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hcmdMaXN0ID0gbmV3IEFyZ3VtZW50c0xpc3QoKTtcclxuICAgIHRoaXMuX2FyZ0xpc3QuYnVpbGRMaXN0RnJvbVBhcmFtcyh0aGlzLl9wYXJhbWV0ZXJzLCB0aGlzLl9wYXJhbUF0dHJzLCB0aGlzLl9wYXJhbVZhbHMsIHRoaXMuX3BhcmFtTnVsbHMpO1xyXG4gICAgdGhpcy5fcGFyYW1ldGVycyA9IDA7XHJcbiAgICB0aGlzLl9wYXJhbUF0dHJzID0gbnVsbDtcclxuICAgIHRoaXMuX3BhcmFtVmFscyA9IG51bGw7XHJcbiAgICB0aGlzLl9wYXJhbU51bGxzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFRhc2soKTogVGFza0Jhc2Uge1xyXG4gICAgc3VwZXIuZmluZFVzZXJFdmVudCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rhc2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFUYXNrXCI+LSByZWZlcmVuY2UgdG8gYSB0YXNrPC9wYXJhbT5cclxuICBzZXRUYXNrKHRhc2tSZWY6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl90YXNrID0gdGFza1JlZjtcclxuXHJcbiAgICBpZiAodGhpcy5fdGFzayAhPT0gbnVsbClcclxuICAgICAgdGhpcy5fdGFza1RhZyA9IHRoaXMuX3Rhc2suZ2V0VGFza1RhZygpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl90YXNrVGFnID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSBUaW1lciBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+dGhlIG51bWJlciBvZiBzZWNvbmRzIGZvciB0aGlzIGV2ZW50czwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJudW1iZXJXbmRcIj50aGUgbWdkYXRhIElEIGZvciB0aGUgZXZlbnQ8L3BhcmFtPlxyXG4gIHNldFRpbWVyKHNlYzogbnVtYmVyLCBtZ2RJRDogbnVtYmVyLCBpc0lkbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSIC8qJ1QnKi87XHJcbiAgICB0aGlzLl9zZWNvbmRzID0gc2VjO1xyXG4gICAgdGhpcy5fbWdkSWQgPSBtZ2RJRDtcclxuICAgIHRoaXMuX2lzSWRsZVRpbWVyID0gaXNJZGxlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdkSURcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNsb3NlQWN0Q29kZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzZXRDbG9zZShtZ2RJRDogbnVtYmVyLCBjbG9zZUFjdENvZGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc3VwZXIuc2V0SW50ZXJuYWwoY2xvc2VBY3RDb2RlKTtcclxuICAgIHRoaXMuX21nZElkID0gbWdkSUQ7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBsaW5lIGluIHRhYmxlIG9mIGNvbnRyb2wgaW4gYSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgbGluZSBudW1iZXI8L3JldHVybnM+XHJcbiAgZ2V0RGlzcGxheUxpbmUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TGluZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbnVtYmVyIG9mIHdpbmRvdyAoZm9yIHRpbWVyIGV2ZW50cylcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE1nZElEKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWdkSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0QnJrTGV2ZWwoKTogc3RyaW5nO1xyXG4gIGdldEJya0xldmVsKGZsb3dNb25pdG9yOiBib29sZWFuKTogc3RyaW5nO1xyXG4gIGdldEJya0xldmVsKGZsb3dNb25pdG9yPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRCcmtMZXZlbF8wMCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMDEoZmxvd01vbml0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wMCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxldmVsOiBzdHJpbmcgPSBzdXBlci5nZXRCcmtMZXZlbCgpO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLkludGVybmFsRXZlbnQpIHtcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgIGxldmVsICs9IHRoaXMuQ29udHJvbC5OYW1lO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVkFSSUFCTEU6XHJcbiAgICAgICAgICBsZXZlbCArPSB0aGlzLl9ldmVudEZsZC5nZXRWYXJOYW1lKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wMShmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3VwZXIuZ2V0QnJrTGV2ZWwoZmxvd01vbml0b3IpO1xyXG4gIH1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSBuZXcgY29udHJvbCBmb3IgdGhlIHJ1bnRpbWUgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibmV3Q3RybFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBuZXcgY29udHJvbCA8L3BhcmFtPlxyXG4gIHNldEN0cmwobmV3Q3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3RybCA9IG5ld0N0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSByZXZlcnNpYmxlIGV4aXQgZmxhZyB0byBmYWxzZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0Tm9uUmV2ZXJzaWJsZUV4aXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXZlcnNpYmxlRXhpdCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSByZXZlcnNpYmxlIGV4aXQgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmV2ZXJzaWJsZUV4aXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmV2ZXJzaWJsZUV4aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgWE1MIEV2ZW50IHN0cmluZyBmb3IgU2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IHZvaWQge1xyXG4gICAgbWVzc2FnZS5BcHBlbmQoXCJcXG4gICBcIiArIFhNTENvbnN0YW50cy5UQUdfT1BFTiArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19FVkVOVCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IENoYXIuTWluVmFsdWUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FVkVOVFRZUEUgKyBcIj1cXFwiXCIgKyB0aGlzLl90eXBlICsgXCJcXFwiXCIpO1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTSAmJiB0aGlzLmtiZEl0bSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBtb2RpZmllcjogTW9kaWZpZXJzID0gdGhpcy5rYmRJdG0uZ2V0TW9kaWZpZXIoKTtcclxuICAgICAgaWYgKG1vZGlmaWVyICE9PSBNb2RpZmllcnMuTU9ESUZJRVJfTk9ORSlcclxuICAgICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTU9ESUZJRVIgKyBcIj1cXFwiXCIgKyBtb2RpZmllciArIFwiXFxcIlwiKTtcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX0tFWUNPREUgKyBcIj1cXFwiXCIgKyB0aGlzLmtiZEl0bS5nZXRLZXlDb2RlKCkgKyBcIlxcXCJcIik7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5JbnRlcm5hbEV2ZW50ICE9PSBJbnQzMi5NaW5WYWx1ZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX0lOVEVSTkFMRVZFTlQgKyBcIj1cXFwiXCIgKyB0aGlzLkludGVybmFsRXZlbnQgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5fc2Vjb25kcyAhPT0gSW50MzIuTWluVmFsdWUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TRUNPTkRTICsgXCI9XFxcIlwiICsgdGhpcy5fc2Vjb25kcyArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLkV4cCAhPSBudWxsKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIFhNTENvbnN0YW50cy5NR19BVFRSX0VYUCArIFwiPVxcXCJcIiArIHRoaXMuRXhwLmdldElkKCkgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5fZm9yY2VFeGl0ICE9PSBGb3JjZUV4aXQuTm9uZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBYTUxDb25zdGFudHMuTUdfQVRUUl9FWFAgKyBcIj1cXFwiXCIgKyA8c3RyaW5nPnRoaXMuX2ZvcmNlRXhpdCArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLlVzZXJFdnQgIT0gbnVsbClcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX1VTRVIgKyBcIj1cXFwiXCIgKyB0aGlzLlVzZXJFdnRUYXNrVGFnICsgXCIsXCIgKyB0aGlzLl91c2VyRXZ0SWR4ICsgXCJcXFwiXCIpO1xyXG5cclxuICAgIG1lc3NhZ2UuQXBwZW5kKFhNTENvbnN0YW50cy5UQUdfVEVSTSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBhcmdMaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBhcmdMaXN0PC9yZXR1cm5zPlxyXG4gIGdldEFyZ0xpc3QoKTogQXJndW1lbnRzTGlzdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJnTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFyZ0xpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYUFyZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHNldEFyZ0xpc3QoYUFyZ0xpc3Q6IEFyZ3VtZW50c0xpc3QpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0aGlzLl9hcmdMaXN0ID09PSBudWxsO1xyXG4gICAgdGhpcy5fYXJnTGlzdCA9IGFBcmdMaXN0O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFyZ0xpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYUFyZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHNldFJvdXRlUGFyYW1MaXN0KHJvdXRlUGFyYW1zOiBMaXN0PGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3JvdXRlUGFyYW1zID0gcm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXRSb3V0ZVBhcmFtTGlzdCgpOiBMaXN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIHZhbHVlIHRvIHRoZSBpbW1lZGlhdGUgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj50aGUgdmFsdWUgdG8gdXNlPC9wYXJhbT5cclxuICBzZXRJbW1lZGlhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbW1lZGlhdGUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGltbWVkaWF0ZSBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc0ltbWVkaWF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbW1lZGlhdGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHRhc2sgd2hpY2ggaXMgXCJyZXNwb25zaWJsZVwiIGZvciBhIG1haW4gcHJvZ3JhbSB0byBiZWNvbWUgYWN0aXZlLlxyXG4gIC8vLyAgIEZvciBleGFtcGxlOiBpZiB0YXNrIEEgY2FsbHMgdGFzayBCIGFuZCBCJ3MgY3RsSWR4IGlzIGRpZmZlcmVudCB0aGFuIEEncywgdGhlbiBCJ3MgbWFpblxyXG4gIC8vLyAgIHByb2dyYW0gd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSB0YXNrIGhpcmFyY2h5IHRodXMgQiBpcyBcInJlc3BvbnNpYmxlXCIgZm9yIHRoZSBtYWluIHByZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3JjXCI+dGhlIFwicmVzcG9uc2libGVcIiB0YXNrLjwvcGFyYW0+XHJcbiAgc2V0TWFpblByZ0NyZWF0b3Ioc3JjOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fbXByZ0NyZWF0b3IgPSBzcmM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB0YXNrIHdoaWNoIGlzIFwicmVzcG9uc2libGVcIiBmb3IgYSBtYWluIHByb2dyYW0ncyBleGVjdXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIFwicmVzcG9uc2libGVcIiB0YXNrLjwvcmV0dXJucz5cclxuICBnZXRNYWluUHJnQ3JlYXRvcigpOiBUYXNrQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbXByZ0NyZWF0b3I7XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIGlzUmVhbFJlZnJlc2ggZmxhZyB0byBhIGdpdmVuIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRJc1JlYWxSZWZyZXNoKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNSZWFsUmVmcmVzaCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB0eXBlIG9mIGEgcmVmcmVzaCBldmVudCB0cnVlIGlzIHJlYWwgcmVmcmVzaCBlLmkuIG9uZSBpbnZva2VkIGRpcmVjdGxseSBieSB0aGUgdXNlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0UmVmcmVzaFR5cGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNSZWFsUmVmcmVzaDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBtYXJrIHRoZSBldmVudCBhcyBhbiBldmVudCB3aGljaCB3YXMgY3JlYXRlZCBieSB0aGUgc2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRGcm9tU2VydmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZnJvbVNlcnZlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgbWFyayB0aGUgZXZlbnQgYXMgYW4gZXZlbnQgd2hpY2ggd2FzIG5vdCBjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlc2V0RnJvbVNlcnZlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Zyb21TZXJ2ZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4gYW4gaW5kaWNhdGlvbiB3aGVhdGhlciB0aGUgc2VydmVyIGNyZWF0ZWQgdGhpcyBldmVudFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgaXNGcm9tU2VydmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zyb21TZXJ2ZXI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHJldHVybnM+IGFuIGluZGljYXRpb24gd2hlYXRoZXIgdGhlIGV2ZW50IGlzIGEgcGFydCBvZiBxdWl0IHByb2Nlc3NcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGlzUXVpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgPT09IEV2ZW50U3ViVHlwZS5DYW5jZWxJc1F1aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSW5kaWNhdGVzIHRoYXQgd2UgZG8gbm90IHdhbnQgdGhlIE1HX0FDVF9DQU5DRUwgdG8gcGVyZm9ybSByb2xsYmFjay5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUm9sbGJhY2tJbkNhbmNlbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgIT09IEV2ZW50U3ViVHlwZS5DYW5jZWxXaXRoTm9Sb2xsYmFjaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIHdoaWxlIGV4aXQgdGhlIHRhc2sgZHVlIGVycm9yIChjYW4gYmUgb24gYW55IGVycm9yIGluIGRhdGFiYXNlIGluIG5vbiBpbnRlcmFjdGl2ZSlcclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEV4aXREdWVUb0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSA9PT0gRXZlbnRTdWJUeXBlLkV4aXREdWVUb0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEluZGljYXRlcyB0aGF0IHdlIGRvIG5vdCB3YW50IHRoZSBNR19BQ1RfQ0FOQ0VMIHRvIHBlcmZvcm0gcm9sbGJhY2suXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFJ0Vmlld1JlZnJlc2hVc2VDdXJyZW50Um93KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSA9PT0gRXZlbnRTdWJUeXBlLlJ0UmVmcmVzaFZpZXdVc2VDdXJyZW50Um93O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgc3ViIGV2ZW50IHR5cGUgKHVzZSBmb3IgY2FuY2VsICYgcnRfdmlld19yZWZyZXNoIGFjdGlvbilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFNldEV2ZW50U3ViVHlwZShldmVudFN1YlR5cGU6IEV2ZW50U3ViVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXZlbnRTdWJUeXBlID0gZXZlbnRTdWJUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgRmllbGRCYXNlIHdob3NlIGNoYW5nZSB0cmlnZ2VyZWQgdGhpcyBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnJlZmVyZW5jZSB0byB0aGUgZmllbGQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50PC9yZXR1cm5zPlxyXG4gIGdldEZsZCgpOiBHdWlGaWVsZEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50RmxkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEd1aSBFdmVudCAtIGV2ZW50IHRoYXQgd2VyZSBhZGRlZCBieSBHdWkgTGF5ZXIsIGxpa2UgY2xpY2ssIHRpbWVyLCBlY3RcclxuICAvLy8gICBGb3IgYWxsIHRoaXMgZXZlbnQgdGhlIHByaW9yaXR5IGlzIGxvd1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGZvciBHVUkgRXZlbnRzIDwvcmV0dXJucz5cclxuICBpc0d1aVRyaWdnZXJlZEV2ZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBwcmlvcml0eSA8L3JldHVybnM+XHJcbiAgZ2V0UHJpb3JpdHkoKTogUHJpb3JpdHkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByaW9yaXR5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgcHJpb3JpdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJpb3JpdHlcIj4gPC9wYXJhbT5cclxuICBzZXRQcmlvcml0eShwcmlvcml0eTogUHJpb3JpdHkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ByaW9yaXR5ID0gcHJpb3JpdHk7XHJcbiAgfVxyXG5cclxuICBpc0lkbGVUaW1lcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0lkbGVUaW1lcjtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDtcclxuICB9XHJcblxyXG5cclxuICBnZXRTdGFydFNlbGVjdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblN0YXJ0O1xyXG4gIH1cclxuXHJcbiAgZ2V0RW5kU2VsZWN0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uRW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgc2V0RWRpdFBhcm1zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXJ0XCI+c3RhcnQgc2VsZWN0aW9uPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImVuZFwiPmVuZCBzZWxlY3Rpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFwiPnRoZSB0ZXh0IGJlaW5nIHdyaXR0ZW48L3BhcmFtPlxyXG4gIHNldEVkaXRQYXJtcyhzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25TdGFydCA9IHN0YXJ0O1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uRW5kID0gZW5kO1xyXG4gICAgdGhpcy5zZXRWYWx1ZSh0ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgZm9yIHByb2R1Y2VDbGljayBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGlzUHJvZHVjZUNsaWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb2R1Y2VDbGljaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgcHJvZHVjZSBjbGlja1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9kdWNlQ2xpY2tcIj48L3BhcmFtPlxyXG4gIHNldFByb2R1Y2VDbGljayhwcm9kdWNlQ2xpY2s6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3Byb2R1Y2VDbGljayA9IHByb2R1Y2VDbGljaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFjdGlvbiBsaXN0IHRvIGVuYWJsZS9kaXNhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFjdExpc3RcIj48L3BhcmFtPlxyXG4gIHNldEFjdEVuYWJsZUxpc3QoYWN0TGlzdDogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjdEVuYWJsZUxpc3QgPSBhY3RMaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYWN0aW9uIGxpc3QgdG8gZW5hYmxlL2Rpc2FibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0QWN0RW5hYmxlTGlzdCgpOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0RW5hYmxlTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gc2VuZCBhbGwgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBpc1NlbmRBbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VuZEFsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgc2VuZGFsbCBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlbmRBbGxcIj4gPC9wYXJhbT5cclxuICBzZXRTZW5kQWxsKHNlbmRBbGw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlbmRBbGwgPSBzZW5kQWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENoZWNrIGlmIHRoaXMgZXZlbnQgaXMgYmxvY2tlZCBieSB0aGUgY3VycmVudGx5IGFjdGl2ZSB3aW5kb3cuIElmIHRoZVxyXG4gIC8vLyAgIGN1cnJlbnQgd2luZG93IGlzIG1vZGFsLCBhbmQgdGhlIGV2ZW50IGRlZmluZWQgaW4gb25lIG9mIGl0cyBhbmNlc3RvcnMsXHJcbiAgLy8vICAgdGhlIGV2ZW50IHNob3VsZCBub3QgYmUgZXhlY3V0ZWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFjdGl2ZVdpbmRvd0RhdGFcIj5UaGUgTUdEYXRhIG9iamVjdCBkZXNjcmliaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIHdpbmRvdy48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5cclxuICAvLy8gICBUaGUgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB3aW5kb3cgaXMgbW9kYWwgaXMgYVxyXG4gIC8vLyAgIGRlc2NlbmRhbnQgb2YgdGhlIGV2ZW50J3MgdGFzay4gT3RoZXJ3aXNlIGl0IHJldHVybnMgZmFsc2UuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBwdWJsaWMgaXNCbG9ja2VkQnlNb2RhbFdpbmRvdyhhY3RpdmVXaW5kb3dEYXRhOiBNR0RhdGEpOiBib29sZWFuIHtcclxuICAgIGlmIChhY3RpdmVXaW5kb3dEYXRhLklzTW9kYWwpIHtcclxuICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZXZlbnQncyB0YXNrIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBhY3RpdmUgd2luZG93J3MgdGFzay5cclxuICAgICAgbGV0IGV2ZW50VGFzazogVGFza0Jhc2UgPSB0aGlzLmdldFRhc2soKTtcclxuICAgICAgbGV0IGJhc2VUYXNrOiBUYXNrQmFzZSA9IGFjdGl2ZVdpbmRvd0RhdGEuZ2V0VGFzaygwKTtcclxuICAgICAgaWYgKGV2ZW50VGFzayAhPT0gYmFzZVRhc2sgJiYgYmFzZVRhc2suaXNEZXNjZW5kZW50T2YoZXZlbnRUYXNrKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoXCJ7e1JURXZlbnQgezB9ICh7MX0pLCB0eXBlIHsyfXszfX19XCIsIFtcclxuICAgICAgdGhpcy5nZXRCcmtMZXZlbCgpLCB0aGlzLkludGVybmFsRXZlbnQsIHRoaXMuX3R5cGUsICh0aGlzLl90YXNrID09PSBudWxsKSA/IFwiXCIgOiAoXCIgb24gXCIgKyB0aGlzLl90YXNrKVxyXG4gICAgXSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuVGltZUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9SdW5UaW1lRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakcsT0FBTyxFQUFDLFlBQVksRUFBa0IsYUFBYSxFQUFFLFNBQVMsRUFBWSxhQUFhLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzdDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQWdCO0lBcUZoRCxZQUFZLHNDQUEyQyxFQUFFLDJGQUFpRyxFQUFFLGtGQUF3RixFQUFFLFNBQWtCLEVBQUUsS0FBYyxFQUFFLE1BQWU7UUFDdlMsS0FBSyxFQUFFLENBQUM7UUFoRkYsa0JBQWEsR0FBd0IsSUFBSSxDQUFDO1FBQzFDLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsaUJBQVksR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFD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OlsiaW1wb3J0IHtDaGFyLCBJQ29tcGFyYWJsZSwgSW50MzIsIExpc3QsIE5TdHJpbmcsIFN0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0ZvcmNlRXhpdCwgSW50ZXJuYWxJbnRlcmZhY2UsIFByaW9yaXR5LCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtHdWlGaWVsZEJhc2UsIExhc3RGb2N1c2VkVmFsLCBNZ0NvbnRyb2xCYXNlLCBNb2RpZmllcnMsIFByb3BlcnR5LCBQcm9wSW50ZXJmYWNlLH0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7RXZlbnRTdWJUeXBlfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuaW1wb3J0IHtFdmVudH0gZnJvbSBcIi4vRXZlbnRcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJndW1lbnRzTGlzdH0gZnJvbSBcIi4uL3J0L0FyZ3VtZW50c0xpc3RcIjtcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gXCIuLi90YXNrcy9NR0RhdGFcIjtcclxuaW1wb3J0IHtUYXNrQmFzZX0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tCYXNlXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50QmFzZX0gZnJvbSBcIi4vUnVuVGltZUV2ZW50QmFzZVwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHJ1bnRpbWUgZXZlbnRzXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBSdW5UaW1lRXZlbnQgZXh0ZW5kcyBSdW5UaW1lRXZlbnRCYXNlIGltcGxlbWVudHMgSUNvbXBhcmFibGUge1xyXG5cclxuICAvLyBBVFRFTlRJT04gIVxyXG4gIC8vIGFueSBjaGFuZ2UgdG8gdGhlIG1lbWJlciB2YXJpYWJsZXMgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGNoYW5nZSB0byB0aGUgQ1RPUiB0aGF0XHJcbiAgLy8gZ2V0cyBvbmUgYXJndW1lbnQgb2YgdGhlIHR5cGUgJ0V2ZW50JyBhbmQgb25lIGFyZ3VtZW50IG9mIHRoZSB0eXBlICdSdW5UaW1lRXZlbnQnLlxyXG5cclxuICBwcml2YXRlIF9jb250cm9sc0xpc3Q6IExpc3Q8TWdDb250cm9sQmFzZT4gPSBudWxsOyAvLyBsaXN0IG9mIGNvbnRyb2xzXHJcbiAgcHJpdmF0ZSBfZGlyZWN0aW9uOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX2Rpc3BsYXlMaW5lOiBudW1iZXIgPSBJbnQzMi5NaW5WYWx1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfZXZlbnRTdWJUeXBlOiBFdmVudFN1YlR5cGUgPSBFdmVudFN1YlR5cGUuTm9ybWFsO1xyXG5cclxuICBwcml2YXRlIF9hY3RFbmFibGVMaXN0OiBudW1iZXJbXSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYXJnTGlzdDogQXJndW1lbnRzTGlzdCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3RybDogTWdDb250cm9sQmFzZSA9IG51bGw7IC8vIHRoZSBjb250cm9sIG9uIHdoaWNoIHRoZSBldmVudCB3YXMgdHJpZ2dlcmVkXHJcbiAgcHJpdmF0ZSBfZG90TmV0T2JqZWN0OiBhbnkgPSBudWxsOyAvLyBvYmplY3Qga2V5IG9mIGEgY29udHJvbFxyXG4gIHByaXZhdGUgX2V2ZW50RmxkOiBHdWlGaWVsZEJhc2UgPSBudWxsOyAvLyBGb3IgdmFyaWFibGUgZXZlbnRzIC0gdGhlIGZpZWxkIG9uIHdoaWNoIHRoZSBjb250cm9sIHdhcyB0cmlnZ2VyZWRcclxuICBwcml2YXRlIF9mcm9tU2VydmVyOiBib29sZWFuID0gZmFsc2U7ICAvLyBpZiBUUlVFLCB0aGUgZXZlbnQgd2FzIGNyZWF0ZWQgb24gdGhlIHNlcnZlciBhbmQgc2VudCB0byB0aGUgY2xpZW50XHJcbiAgcHJpdmF0ZSBfZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgdHJ1ZSwgdGhlIGV2ZW50IHdhcyB0cmlnZ2VyZWQgYnkgR1VJIGxldmVsIChpbmNsdWRlcyB0aW1lciBldmVudHMpXHJcbiAgcHJpdmF0ZSBfaW1tZWRpYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNJZGxlVGltZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1JlYWxSZWZyZXNoOiBib29sZWFuID0gdHJ1ZTsgLy8gdXNlZCBvbmx5IGluIE1HX0FDVF9WSUVXX1JFRlJFU0ggZXZlbnRzIHRvIGluZGljYXRlIGEgcmVmcmVzaCBpbnZva2VkIFNwZWNpZmljYWxseSBieSB0aGUgdXNlclxyXG4gIHByaXZhdGUgX21nZElkOiBudW1iZXIgPSAwOyAvLyBtZ2RhdGEgaWQgdGhhdCBzZW50IHRpbWVyIGV2ZW50XHJcbiAgcHJpdmF0ZSBfcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG51bGw7XHJcblxyXG4gIC8vIFVzZWQgb25seSBpZiAndGFzaycgaXMgYSBtYWluIHByZy4gQSByZWZlcmVuY2UgdG8gdGhlIHRhc2sgd2hpY2hcclxuICAvLyBjYXVzZWQgdGhlIG1haW4gcHJnIHRvIGJlY29tZSBhY3RpdmUgaW4gdGhlIHJ1bnRpbWUuXHJcbiAgcHJpdmF0ZSBfbXByZ0NyZWF0b3I6IFRhc2tCYXNlID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfcHJpb3JpdHk6IFByaW9yaXR5ID0gUHJpb3JpdHkuSElHSDsgLy8gcHJpb3JpdHkgb2YgZXZlbnQgZm9yIGV2ZW50cyBxdWV1ZVxyXG5cclxuICBwcml2YXRlIF9wcm9kdWNlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgVFJVRSwgdGhlIGV2ZW50IHNob3VsZCBwcm9kdWNlIGNsaWNrXHJcbiAgcHJpdmF0ZSBfcmV2ZXJzaWJsZUV4aXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3Rpb25FbmQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uU3RhcnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfc2VuZEFsbDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gdGhpcyBmbGFnIGlzIHNldCBmb3Igc2VuZGluZyBhbGwgcmVjb3Jkc1xyXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2tCYXNlID0gbnVsbDsgLy8gYSByZWZlcmVuY2UgdG8gdGhlIHRhc2tcclxuICBwcml2YXRlIF90YXNrVGFnOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgdGFzayBpZCBvbiB3aGljaCB0aGUgZXZlbnQgd2FzIHRyaWdnZXJlZFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDtcclxuXHJcblxyXG5cclxuICBzZXQgQ29udHJvbCh2YWx1ZTogTWdDb250cm9sQmFzZSkge1xyXG4gICAgdGhpcy5fY3RybCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0IERpc3BsYXlMaW5lKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2Rpc3BsYXlMaW5lID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgQ29udHJvbCgpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9jdHJsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTaG91bGQgdGhlIGNvbnRyb2wgc2V0IG9uIHRoZSBldmVudCBiZSBpZ25vcmVkLiBpZiB0cnVlLCB3aGVuIHByb2Nlc3NpbmcgdGhlIGV2ZW50IHdlIHNob3VsZFxyXG4gIC8vLyB1c2UgdGhlIGN1cnJlbnQgZm9jdXNlZCBjb250cm9sIGluc3RlYWQgb2YgdGhlIG9uZSBzZXQgb24gdGhlIGV2ZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgSWdub3JlU3BlY2lmaWVkQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBMYXN0Rm9jdXNlZFZhbDogTGFzdEZvY3VzZWRWYWwgPSBudWxsOyAvLyB2YWx1ZSBvZiBsYXN0IGVkaXRlZCBjb250cm9sXHJcblxyXG4gIGdldCBDb250cm9sc0xpc3QoKTogTGlzdDxNZ0NvbnRyb2xCYXNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHNMaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IERpcmVjdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGlvbjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHRhc2tSZWY6IFRhc2tCYXNlKTtcclxuICBjb25zdHJ1Y3Rvcih0YXNrUmVmOiBUYXNrQmFzZSwgY3RybFJlZjogTWdDb250cm9sQmFzZSk7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSk7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sOiBib29sZWFuKTtcclxuICBjb25zdHJ1Y3Rvcih0YXNrcmVmOiBUYXNrQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKGZsZFJlZjogR3VpRmllbGRCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBsaW5lOiBudW1iZXIpO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlciwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGNvbnRyb2xzTGlzdDogTGlzdDxNZ0NvbnRyb2xCYXNlPiwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGRpcmVjdGlvbjogbnVtYmVyLCBsaW5lOiBudW1iZXIpO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGNvbHVtbkhlYWRlcjogc3RyaW5nLCB4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpO1xyXG4gIGNvbnN0cnVjdG9yKGV2dDogRXZlbnQsIHJ0RXZ0OiBSdW5UaW1lRXZlbnQpO1xyXG4gIGNvbnN0cnVjdG9yKHJ0RXZ0OiBSdW5UaW1lRXZlbnQpO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0OiBhbnksIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2s/OiBhbnksIGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWU/OiBhbnksIHlPckN0bElkeD86IG51bWJlciwgd2lkdGg/OiBudW1iZXIsIGhlaWdodD86IG51bWJlcikge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFRhc2tCYXNlKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl81KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFRhc2tCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrIGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfNih0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl83KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IEJvb2xlYW4pKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzgodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikgJiYgKGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUgPT09IG51bGwgfHwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZS5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfOSh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaywgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBUYXNrQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgR3VpRmllbGRCYXNlKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMSh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzEyKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IE51bWJlcikgJiYgKGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUgPT09IG51bGwgfHwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZS5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTModGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2ssIGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayBpbnN0YW5jZW9mIExpc3QpICYmIChpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lID09PSBudWxsIHx8IGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUuY29uc3RydWN0b3IgPT09IEJvb2xlYW4pKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE0KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IE51bWJlcikgJiYgKGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUgPT09IG51bGwgfHwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZS5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xNSh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNilcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xNih0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBFdmVudCkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayBpbnN0YW5jZW9mIFJ1blRpbWVFdmVudCkpIHtcclxuICAgICAgLy8gQ2FsbCBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgdGhlIGV2ZW50IHR5cGUgYW5kIHRoZSBvdGhlciBmaWVsZHNcclxuICAgICAgc3VwZXIuY29uc3RydWN0b3JfMSh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTcoIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBSdW5UaW1lRXZlbnQpXHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgdGFzazwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl81KHRhc2tSZWY6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXQodGFza1JlZik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrUmVmXCI+cmVmZXJlbmNlIHRvIHRhc2s8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFJlZlwiPnJlZmVyZW5jZSB0byBjb250cm9sPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzYodGFza1JlZjogVGFza0Jhc2UsIGN0cmxSZWY6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfNSgoY3RybFJlZiAhPT0gbnVsbCkgPyAoPFRhc2tCYXNlPmN0cmxSZWYuZ2V0Rm9ybSgpLmdldFRhc2soKSkgOiB0YXNrUmVmKTtcclxuICAgIHRoaXMuQ29udHJvbCA9IGN0cmxSZWY7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsUmVmXCI+YSByZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2wgPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzcoY3RybFJlZjogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl82KG51bGwsIGN0cmxSZWYpO1xyXG4gICAgaWYgKGN0cmxSZWYgIT09IG51bGwgJiYgc3VwZXIuZ2V0VHlwZSgpID09PSBDaGFyLk1pblZhbHVlKSAvLyBub3QgaW5pdGlhbGl6ZWQgeWV0XHJcbiAgICB7XHJcbiAgICAgIC8vIG9uIHRoZSBmaXJzdCB0aW1lLCBpZiBhIFRSSUdHRVIgcHJvcGVydHkgZXhpc3RzLCBwYXJzZSB0aGUgZXZlbnQgYW5kIGFkZCBpdCB0byB0aGUgY29udHJvbFxyXG4gICAgICBsZXQgcHJvcDogUHJvcGVydHkgPSBjdHJsUmVmLkdldENvbXB1dGVkUHJvcGVydHkoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVFJJR0dFUik7XHJcbiAgICAgIGlmIChwcm9wICE9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHhtbFBhcnNlcjogWG1sUGFyc2VyID0gbmV3IFhtbFBhcnNlcihwcm9wLkdldENvbXB1dGVkVmFsdWUoKSk7XHJcbiAgICAgICAgc3VwZXIuZmlsbERhdGEoeG1sUGFyc2VyLCA8VGFza0Jhc2U+Y3RybFJlZi5nZXRGb3JtKCkuZ2V0VGFzaygpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFJlZlwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpVHJpZ2dlcmVkRXZlbnRcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfOChjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl83KGN0cmxSZWYpO1xyXG4gICAgdGhpcy5fZ3VpVHJpZ2dlcmVkRXZlbnQgPSBndWlUcmlnZ2VyZWRFdmVudDtcclxuICAgIGlmIChndWlUcmlnZ2VyZWRFdmVudCkge1xyXG4gICAgICAvLyBFdmVudHMgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IEdVSSBsZXZlbCwgbXVzdCBiZSBleGVjdXRlZCBhZnRlciBhbGxcclxuICAgICAgLy8gb3RoZXIgZXZlbnRzLCB0aHVzIHRoYXkgaGF2ZSBsb3cgcHJpb3JpdHk7XHJcbiAgICAgIHRoaXMuX3ByaW9yaXR5ID0gUHJpb3JpdHkuTE9XO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFJlZlwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpVHJpZ2dlcmVkRXZlbnRcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfOShjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbiwgaWdub3JlU3BlY2lmaWVkQ29udHJvbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIGd1aVRyaWdnZXJlZEV2ZW50KTtcclxuICAgIHRoaXMuSWdub3JlU3BlY2lmaWVkQ29udHJvbCA9IGlnbm9yZVNwZWNpZmllZENvbnRyb2w7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrcmVmXCI+cmVmZXJlbmNlIHRvIHRhc2s8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpVHJpZ2dlcmVkRXZlbnRcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTAodGFza3JlZjogVGFza0Jhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzUodGFza3JlZik7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IGd1aVRyaWdnZXJlZEV2ZW50O1xyXG4gICAgaWYgKGd1aVRyaWdnZXJlZEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuX3ByaW9yaXR5ID0gUHJpb3JpdHkuTE9XO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkUmVmXCI+YSByZWZlcmVuY2UgdG8gdGhlIGZpZWxkPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzExKGZsZFJlZjogR3VpRmllbGRCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9ldmVudEZsZCA9IGZsZFJlZjtcclxuICAgIHRoaXMuaW5pdCgoZmxkUmVmICE9PSBudWxsKSA/ICg8VGFza0Jhc2U+ZmxkUmVmLmdldFRhc2soKSkgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbCBvbiB3aGljaCB0aGUgZXZlbnQgb2NjdXJlZCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPnRoZSBsaW5lIG9mIHRoZSB0YWJsZSBpbiB3aGljaCB0aGUgY29udHJvbCBpcyBsb2NhdGVkIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBsaW5lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfNyhjdHJsUmVmKTtcclxuICAgIHRoaXMuX2Rpc3BsYXlMaW5lID0gbGluZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTMoY3RybFJlZjogTWdDb250cm9sQmFzZSwgbGluZTogbnVtYmVyLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIGd1aVRyaWdnZXJlZEV2ZW50KTtcclxuICAgIHRoaXMuX2Rpc3BsYXlMaW5lID0gbGluZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTQoY3RybFJlZjogTWdDb250cm9sQmFzZSwgY29udHJvbHNMaXN0OiBMaXN0PE1nQ29udHJvbEJhc2U+LCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIGd1aVRyaWdnZXJlZEV2ZW50KTtcclxuICAgIHRoaXMuX2NvbnRyb2xzTGlzdCA9IGNvbnRyb2xzTGlzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTUoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZGlyZWN0aW9uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfOChjdHJsUmVmLCB0cnVlKTtcclxuICAgIHRoaXMuX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTYoY3RybFJlZjogTWdDb250cm9sQmFzZSApOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfOChjdHJsUmVmLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SIC0gY3JlYXRlcyBhIG5ldyBydW4gdGltZSBldmVudCBieSBjb3B5aW5nIHRoZSBtZW1iZXIgdmFyaWFibGVzIG9mIGEgZ2l2ZW5cclxuICAvLy8gICBldmVudCBhbmQgdGhlIG1lbWJlciB2YXJpYWJsZXMgb2YgYSBnaXZlbiBydW4gdGltZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJldnRcIj5hIHJlZmVyZW5jZSB0byB0aGUgZXZlbnQgdG8gYmUgdXNlZCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicnRFdnRcIj5hIHJlZmVyZW5jZSB0byB0aGUgcnVuIHRpbWUgZXZlbnQgdG8gYmUgdXNlZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTcoIHJ0RXZ0OiBSdW5UaW1lRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Rhc2tUYWcgPSBydEV2dC5fdGFza1RhZztcclxuICAgIHRoaXMuX3Rhc2sgPSBydEV2dC5fdGFzaztcclxuICAgIHRoaXMuQ29udHJvbCA9IHJ0RXZ0LkNvbnRyb2w7XHJcbiAgICB0aGlzLl9ldmVudEZsZCA9IHJ0RXZ0Ll9ldmVudEZsZDtcclxuICAgIHRoaXMuX21nZElkID0gcnRFdnQuX21nZElkO1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSBydEV2dC5fZGlzcGxheUxpbmU7XHJcbiAgICB0aGlzLl9yZXZlcnNpYmxlRXhpdCA9IHJ0RXZ0Ll9yZXZlcnNpYmxlRXhpdDtcclxuICAgIHRoaXMuX2FyZ0xpc3QgPSBydEV2dC5fYXJnTGlzdDtcclxuICAgIHRoaXMuX2ltbWVkaWF0ZSA9IHJ0RXZ0Ll9pbW1lZGlhdGU7XHJcbiAgICB0aGlzLl9tcHJnQ3JlYXRvciA9IHJ0RXZ0Ll9tcHJnQ3JlYXRvcjtcclxuICAgIHRoaXMuX3ByaW9yaXR5ID0gcnRFdnQuX3ByaW9yaXR5O1xyXG4gICAgdGhpcy5fZ3VpVHJpZ2dlcmVkRXZlbnQgPSBydEV2dC5fZ3VpVHJpZ2dlcmVkRXZlbnQ7XHJcbiAgICB0aGlzLl9pc0lkbGVUaW1lciA9IHJ0RXZ0Ll9pc0lkbGVUaW1lcjtcclxuICAgIHRoaXMuX3ZhbCA9IHJ0RXZ0Ll92YWw7XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25TdGFydCA9IHJ0RXZ0Ll9zZWxlY3Rpb25TdGFydDtcclxuICAgIHRoaXMuX3NlbGVjdGlvbkVuZCA9IHJ0RXZ0Ll9zZWxlY3Rpb25FbmQ7XHJcbiAgICB0aGlzLl9jb250cm9sc0xpc3QgPSBydEV2dC5fY29udHJvbHNMaXN0O1xyXG4gICAgdGhpcy5fZGlyZWN0aW9uID0gcnRFdnQuX2RpcmVjdGlvbjtcclxuICAgIHRoaXMuX2RvdE5ldE9iamVjdCA9IHJ0RXZ0Ll9kb3ROZXRPYmplY3Q7XHJcbiAgICB0aGlzLkxhc3RGb2N1c2VkVmFsID0gcnRFdnQuTGFzdEZvY3VzZWRWYWw7XHJcbiAgICB0aGlzLl9yb3V0ZVBhcmFtcyA9IHJ0RXZ0Ll9yb3V0ZVBhcmFtcztcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW1wbGVtZW50aW5nIGNvbXBhcmF0b3IsIHRoZSBldmVudHMgYXJlIGNvbXBhcmVkIGJ5IHByaW9yaXR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDb21wYXJlVG8ob2JqOiBhbnkpOiBudW1iZXIge1xyXG4gICAgbGV0IG90aGVyVGltZUV2ZW50OiBSdW5UaW1lRXZlbnQgPSA8UnVuVGltZUV2ZW50Pm9iajtcclxuICAgIGxldCBvdGhlclByaW9yaXR5OiBQcmlvcml0eSA9IG90aGVyVGltZUV2ZW50Ll9wcmlvcml0eTtcclxuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IG90aGVyUHJpb3JpdHkgLSB0aGlzLl9wcmlvcml0eTtcclxuICAgIGlmIChyZXN1bHQgPT09IDApXHJcbiAgICAgIHJlc3VsdCA9IDxudW1iZXI+KHRoaXMuX3RpbWVzdGFtcCAtIG90aGVyVGltZUV2ZW50Ll90aW1lc3RhbXApO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIGEgcmVwbGljYSBvZiB0aGlzIHJ1bnRpbWUgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlcGxpY2F0ZSgpOiBSdW5UaW1lRXZlbnQge1xyXG4gICAgbGV0IHJ1blRpbWVFdmVudDogUnVuVGltZUV2ZW50ID0gbmV3IFJ1blRpbWVFdmVudCh0aGlzKTtcclxuICAgIHJ1blRpbWVFdmVudC5zZXRUaW1lc3RhbXAoKTtcclxuICAgIHJldHVybiBydW5UaW1lRXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYSBoZWxwZXIgbWV0aG9kIHRoYXQgZG9lcyBzb21lIGNvbW1vbiBpbml0aWFsaXphdGlvbiBmb3Igc29tZSBvZiB0aGUgY29uc3RydWN0b3JzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGluaXQodGFza1JlZjogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Rhc2sgPSAodGFza1JlZiB8fCAoPE1HRGF0YT5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpKS5nZXRGaXJzdFRhc2soKSk7XHJcbiAgICB0aGlzLl90YXNrVGFnID0gKCh0aGlzLl90YXNrID09PSBudWxsKSA/IFwiXCIgOiB0aGlzLl90YXNrLmdldFRhc2tUYWcoKSk7XHJcbiAgICB0aGlzLl9tcHJnQ3JlYXRvciA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29udmVydHMgcGFyYW1ldGVycyB0byBhcmd1bWVudCBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb252ZXJ0UGFyYW1zVG9BcmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXJnTGlzdCA9IG5ldyBBcmd1bWVudHNMaXN0KCk7XHJcbiAgICB0aGlzLl9hcmdMaXN0LmJ1aWxkTGlzdEZyb21QYXJhbXModGhpcy5fcGFyYW1ldGVycywgdGhpcy5fcGFyYW1BdHRycywgdGhpcy5fcGFyYW1WYWxzLCB0aGlzLl9wYXJhbU51bGxzKTtcclxuICAgIHRoaXMuX3BhcmFtZXRlcnMgPSAwO1xyXG4gICAgdGhpcy5fcGFyYW1BdHRycyA9IG51bGw7XHJcbiAgICB0aGlzLl9wYXJhbVZhbHMgPSBudWxsO1xyXG4gICAgdGhpcy5fcGFyYW1OdWxscyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRUYXNrKCk6IFRhc2tCYXNlIHtcclxuICAgIHN1cGVyLmZpbmRVc2VyRXZlbnQoKTtcclxuICAgIHJldHVybiB0aGlzLl90YXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhVGFza1wiPi0gcmVmZXJlbmNlIHRvIGEgdGFzazwvcGFyYW0+XHJcbiAgc2V0VGFzayh0YXNrUmVmOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFzayA9IHRhc2tSZWY7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Rhc2sgIT09IG51bGwpXHJcbiAgICAgIHRoaXMuX3Rhc2tUYWcgPSB0aGlzLl90YXNrLmdldFRhc2tUYWcoKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fdGFza1RhZyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgVGltZXIgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2Vjb25kc1wiPnRoZSBudW1iZXIgb2Ygc2Vjb25kcyBmb3IgdGhpcyBldmVudHM8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibnVtYmVyV25kXCI+dGhlIG1nZGF0YSBJRCBmb3IgdGhlIGV2ZW50PC9wYXJhbT5cclxuICBzZXRUaW1lcihzZWM6IG51bWJlciwgbWdkSUQ6IG51bWJlciwgaXNJZGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUiAvKidUJyovO1xyXG4gICAgdGhpcy5fc2Vjb25kcyA9IHNlYztcclxuICAgIHRoaXMuX21nZElkID0gbWdkSUQ7XHJcbiAgICB0aGlzLl9pc0lkbGVUaW1lciA9IGlzSWRsZTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBsaW5lIGluIHRhYmxlIG9mIGNvbnRyb2wgaW4gYSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgbGluZSBudW1iZXI8L3JldHVybnM+XHJcbiAgZ2V0RGlzcGxheUxpbmUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TGluZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbnVtYmVyIG9mIHdpbmRvdyAoZm9yIHRpbWVyIGV2ZW50cylcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE1nZElEKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWdkSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0QnJrTGV2ZWwoKTogc3RyaW5nO1xyXG4gIGdldEJya0xldmVsKGZsb3dNb25pdG9yOiBib29sZWFuKTogc3RyaW5nO1xyXG4gIGdldEJya0xldmVsKGZsb3dNb25pdG9yPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRCcmtMZXZlbF8wMCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMDEoZmxvd01vbml0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wMCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxldmVsOiBzdHJpbmcgPSBzdXBlci5nZXRCcmtMZXZlbCgpO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLkludGVybmFsRXZlbnQpIHtcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgIGxldmVsICs9IHRoaXMuQ29udHJvbC5OYW1lO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVkFSSUFCTEU6XHJcbiAgICAgICAgICBsZXZlbCArPSB0aGlzLl9ldmVudEZsZC5nZXRWYXJOYW1lKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wMShmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3VwZXIuZ2V0QnJrTGV2ZWwoZmxvd01vbml0b3IpO1xyXG4gIH1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSBuZXcgY29udHJvbCBmb3IgdGhlIHJ1bnRpbWUgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibmV3Q3RybFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBuZXcgY29udHJvbCA8L3BhcmFtPlxyXG4gIHNldEN0cmwobmV3Q3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3RybCA9IG5ld0N0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSByZXZlcnNpYmxlIGV4aXQgZmxhZyB0byBmYWxzZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0Tm9uUmV2ZXJzaWJsZUV4aXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXZlcnNpYmxlRXhpdCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSByZXZlcnNpYmxlIGV4aXQgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmV2ZXJzaWJsZUV4aXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmV2ZXJzaWJsZUV4aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgWE1MIEV2ZW50IHN0cmluZyBmb3IgU2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IHZvaWQge1xyXG4gICAgbWVzc2FnZS5BcHBlbmQoXCJcXG4gICBcIiArIFhNTENvbnN0YW50cy5UQUdfT1BFTiArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19FVkVOVCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IENoYXIuTWluVmFsdWUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FVkVOVFRZUEUgKyBcIj1cXFwiXCIgKyB0aGlzLl90eXBlICsgXCJcXFwiXCIpO1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTSAmJiB0aGlzLmtiZEl0bSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBtb2RpZmllcjogTW9kaWZpZXJzID0gdGhpcy5rYmRJdG0uZ2V0TW9kaWZpZXIoKTtcclxuICAgICAgaWYgKG1vZGlmaWVyICE9PSBNb2RpZmllcnMuTU9ESUZJRVJfTk9ORSlcclxuICAgICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTU9ESUZJRVIgKyBcIj1cXFwiXCIgKyBtb2RpZmllciArIFwiXFxcIlwiKTtcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX0tFWUNPREUgKyBcIj1cXFwiXCIgKyB0aGlzLmtiZEl0bS5nZXRLZXlDb2RlKCkgKyBcIlxcXCJcIik7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5JbnRlcm5hbEV2ZW50ICE9PSBJbnQzMi5NaW5WYWx1ZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX0lOVEVSTkFMRVZFTlQgKyBcIj1cXFwiXCIgKyB0aGlzLkludGVybmFsRXZlbnQgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5fc2Vjb25kcyAhPT0gSW50MzIuTWluVmFsdWUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TRUNPTkRTICsgXCI9XFxcIlwiICsgdGhpcy5fc2Vjb25kcyArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLkV4cCAhPSBudWxsKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIFhNTENvbnN0YW50cy5NR19BVFRSX0VYUCArIFwiPVxcXCJcIiArIHRoaXMuRXhwLmdldElkKCkgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5fZm9yY2VFeGl0ICE9PSBGb3JjZUV4aXQuTm9uZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBYTUxDb25zdGFudHMuTUdfQVRUUl9FWFAgKyBcIj1cXFwiXCIgKyA8c3RyaW5nPnRoaXMuX2ZvcmNlRXhpdCArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLlVzZXJFdnQgIT0gbnVsbClcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX1VTRVIgKyBcIj1cXFwiXCIgKyB0aGlzLlVzZXJFdnRUYXNrVGFnICsgXCIsXCIgKyB0aGlzLl91c2VyRXZ0SWR4ICsgXCJcXFwiXCIpO1xyXG5cclxuICAgIG1lc3NhZ2UuQXBwZW5kKFhNTENvbnN0YW50cy5UQUdfVEVSTSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBhcmdMaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBhcmdMaXN0PC9yZXR1cm5zPlxyXG4gIGdldEFyZ0xpc3QoKTogQXJndW1lbnRzTGlzdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJnTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFyZ0xpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYUFyZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHNldEFyZ0xpc3QoYUFyZ0xpc3Q6IEFyZ3VtZW50c0xpc3QpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0aGlzLl9hcmdMaXN0ID09PSBudWxsO1xyXG4gICAgdGhpcy5fYXJnTGlzdCA9IGFBcmdMaXN0O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFyZ0xpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYUFyZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHNldFJvdXRlUGFyYW1MaXN0KHJvdXRlUGFyYW1zOiBMaXN0PGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3JvdXRlUGFyYW1zID0gcm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXRSb3V0ZVBhcmFtTGlzdCgpOiBMaXN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIHZhbHVlIHRvIHRoZSBpbW1lZGlhdGUgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj50aGUgdmFsdWUgdG8gdXNlPC9wYXJhbT5cclxuICBzZXRJbW1lZGlhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbW1lZGlhdGUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGltbWVkaWF0ZSBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc0ltbWVkaWF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbW1lZGlhdGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHRhc2sgd2hpY2ggaXMgXCJyZXNwb25zaWJsZVwiIGZvciBhIG1haW4gcHJvZ3JhbSB0byBiZWNvbWUgYWN0aXZlLlxyXG4gIC8vLyAgIEZvciBleGFtcGxlOiBpZiB0YXNrIEEgY2FsbHMgdGFzayBCIGFuZCBCJ3MgY3RsSWR4IGlzIGRpZmZlcmVudCB0aGFuIEEncywgdGhlbiBCJ3MgbWFpblxyXG4gIC8vLyAgIHByb2dyYW0gd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSB0YXNrIGhpcmFyY2h5IHRodXMgQiBpcyBcInJlc3BvbnNpYmxlXCIgZm9yIHRoZSBtYWluIHByZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3JjXCI+dGhlIFwicmVzcG9uc2libGVcIiB0YXNrLjwvcGFyYW0+XHJcbiAgc2V0TWFpblByZ0NyZWF0b3Ioc3JjOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fbXByZ0NyZWF0b3IgPSBzcmM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB0YXNrIHdoaWNoIGlzIFwicmVzcG9uc2libGVcIiBmb3IgYSBtYWluIHByb2dyYW0ncyBleGVjdXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIFwicmVzcG9uc2libGVcIiB0YXNrLjwvcmV0dXJucz5cclxuICBnZXRNYWluUHJnQ3JlYXRvcigpOiBUYXNrQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbXByZ0NyZWF0b3I7XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIGlzUmVhbFJlZnJlc2ggZmxhZyB0byBhIGdpdmVuIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRJc1JlYWxSZWZyZXNoKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNSZWFsUmVmcmVzaCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB0eXBlIG9mIGEgcmVmcmVzaCBldmVudCB0cnVlIGlzIHJlYWwgcmVmcmVzaCBlLmkuIG9uZSBpbnZva2VkIGRpcmVjdGxseSBieSB0aGUgdXNlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0UmVmcmVzaFR5cGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNSZWFsUmVmcmVzaDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBtYXJrIHRoZSBldmVudCBhcyBhbiBldmVudCB3aGljaCB3YXMgY3JlYXRlZCBieSB0aGUgc2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRGcm9tU2VydmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZnJvbVNlcnZlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgbWFyayB0aGUgZXZlbnQgYXMgYW4gZXZlbnQgd2hpY2ggd2FzIG5vdCBjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlc2V0RnJvbVNlcnZlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Zyb21TZXJ2ZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4gYW4gaW5kaWNhdGlvbiB3aGVhdGhlciB0aGUgc2VydmVyIGNyZWF0ZWQgdGhpcyBldmVudFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgaXNGcm9tU2VydmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zyb21TZXJ2ZXI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHJldHVybnM+IGFuIGluZGljYXRpb24gd2hlYXRoZXIgdGhlIGV2ZW50IGlzIGEgcGFydCBvZiBxdWl0IHByb2Nlc3NcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGlzUXVpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgPT09IEV2ZW50U3ViVHlwZS5DYW5jZWxJc1F1aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSW5kaWNhdGVzIHRoYXQgd2UgZG8gbm90IHdhbnQgdGhlIE1HX0FDVF9DQU5DRUwgdG8gcGVyZm9ybSByb2xsYmFjay5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUm9sbGJhY2tJbkNhbmNlbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgIT09IEV2ZW50U3ViVHlwZS5DYW5jZWxXaXRoTm9Sb2xsYmFjaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIHdoaWxlIGV4aXQgdGhlIHRhc2sgZHVlIGVycm9yIChjYW4gYmUgb24gYW55IGVycm9yIGluIGRhdGFiYXNlIGluIG5vbiBpbnRlcmFjdGl2ZSlcclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEV4aXREdWVUb0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSA9PT0gRXZlbnRTdWJUeXBlLkV4aXREdWVUb0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEluZGljYXRlcyB0aGF0IHdlIGRvIG5vdCB3YW50IHRoZSBNR19BQ1RfQ0FOQ0VMIHRvIHBlcmZvcm0gcm9sbGJhY2suXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFJ0Vmlld1JlZnJlc2hVc2VDdXJyZW50Um93KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSA9PT0gRXZlbnRTdWJUeXBlLlJ0UmVmcmVzaFZpZXdVc2VDdXJyZW50Um93O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgc3ViIGV2ZW50IHR5cGUgKHVzZSBmb3IgY2FuY2VsICYgcnRfdmlld19yZWZyZXNoIGFjdGlvbilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFNldEV2ZW50U3ViVHlwZShldmVudFN1YlR5cGU6IEV2ZW50U3ViVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXZlbnRTdWJUeXBlID0gZXZlbnRTdWJUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgRmllbGRCYXNlIHdob3NlIGNoYW5nZSB0cmlnZ2VyZWQgdGhpcyBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnJlZmVyZW5jZSB0byB0aGUgZmllbGQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50PC9yZXR1cm5zPlxyXG4gIGdldEZsZCgpOiBHdWlGaWVsZEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50RmxkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEd1aSBFdmVudCAtIGV2ZW50IHRoYXQgd2VyZSBhZGRlZCBieSBHdWkgTGF5ZXIsIGxpa2UgY2xpY2ssIHRpbWVyLCBlY3RcclxuICAvLy8gICBGb3IgYWxsIHRoaXMgZXZlbnQgdGhlIHByaW9yaXR5IGlzIGxvd1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGZvciBHVUkgRXZlbnRzIDwvcmV0dXJucz5cclxuICBpc0d1aVRyaWdnZXJlZEV2ZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBwcmlvcml0eSA8L3JldHVybnM+XHJcbiAgZ2V0UHJpb3JpdHkoKTogUHJpb3JpdHkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByaW9yaXR5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgcHJpb3JpdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJpb3JpdHlcIj4gPC9wYXJhbT5cclxuICBzZXRQcmlvcml0eShwcmlvcml0eTogUHJpb3JpdHkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ByaW9yaXR5ID0gcHJpb3JpdHk7XHJcbiAgfVxyXG5cclxuICBpc0lkbGVUaW1lcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0lkbGVUaW1lcjtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDtcclxuICB9XHJcblxyXG5cclxuICBnZXRTdGFydFNlbGVjdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblN0YXJ0O1xyXG4gIH1cclxuXHJcbiAgZ2V0RW5kU2VsZWN0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uRW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgc2V0RWRpdFBhcm1zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXJ0XCI+c3RhcnQgc2VsZWN0aW9uPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImVuZFwiPmVuZCBzZWxlY3Rpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFwiPnRoZSB0ZXh0IGJlaW5nIHdyaXR0ZW48L3BhcmFtPlxyXG4gIHNldEVkaXRQYXJtcyhzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25TdGFydCA9IHN0YXJ0O1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uRW5kID0gZW5kO1xyXG4gICAgdGhpcy5zZXRWYWx1ZSh0ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgZm9yIHByb2R1Y2VDbGljayBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGlzUHJvZHVjZUNsaWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb2R1Y2VDbGljaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgcHJvZHVjZSBjbGlja1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9kdWNlQ2xpY2tcIj48L3BhcmFtPlxyXG4gIHNldFByb2R1Y2VDbGljayhwcm9kdWNlQ2xpY2s6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3Byb2R1Y2VDbGljayA9IHByb2R1Y2VDbGljaztcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBhY3Rpb24gbGlzdCB0byBlbmFibGUvZGlzYWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBnZXRBY3RFbmFibGVMaXN0KCk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RFbmFibGVMaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiBzZW5kIGFsbCBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGlzU2VuZEFsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zZW5kQWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBzZW5kYWxsIGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2VuZEFsbFwiPiA8L3BhcmFtPlxyXG4gIHNldFNlbmRBbGwoc2VuZEFsbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VuZEFsbCA9IHNlbmRBbGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ2hlY2sgaWYgdGhpcyBldmVudCBpcyBibG9ja2VkIGJ5IHRoZSBjdXJyZW50bHkgYWN0aXZlIHdpbmRvdy4gSWYgdGhlXHJcbiAgLy8vICAgY3VycmVudCB3aW5kb3cgaXMgbW9kYWwsIGFuZCB0aGUgZXZlbnQgZGVmaW5lZCBpbiBvbmUgb2YgaXRzIGFuY2VzdG9ycyxcclxuICAvLy8gICB0aGUgZXZlbnQgc2hvdWxkIG5vdCBiZSBleGVjdXRlZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYWN0aXZlV2luZG93RGF0YVwiPlRoZSBNR0RhdGEgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgd2luZG93LjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlxyXG4gIC8vLyAgIFRoZSBtZXRob2QgcmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50bHkgYWN0aXZlIHdpbmRvdyBpcyBtb2RhbCBpcyBhXHJcbiAgLy8vICAgZGVzY2VuZGFudCBvZiB0aGUgZXZlbnQncyB0YXNrLiBPdGhlcndpc2UgaXQgcmV0dXJucyBmYWxzZS5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHB1YmxpYyBpc0Jsb2NrZWRCeU1vZGFsV2luZG93KGFjdGl2ZVdpbmRvd0RhdGE6IE1HRGF0YSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGFjdGl2ZVdpbmRvd0RhdGEuSXNNb2RhbCkge1xyXG4gICAgICAvLyBDaGVjayB0aGF0IHRoZSBldmVudCdzIHRhc2sgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGFjdGl2ZSB3aW5kb3cncyB0YXNrLlxyXG4gICAgICBsZXQgZXZlbnRUYXNrOiBUYXNrQmFzZSA9IHRoaXMuZ2V0VGFzaygpO1xyXG4gICAgICBsZXQgYmFzZVRhc2s6IFRhc2tCYXNlID0gYWN0aXZlV2luZG93RGF0YS5nZXRUYXNrKDApO1xyXG4gICAgICBpZiAoZXZlbnRUYXNrICE9PSBiYXNlVGFzayAmJiBiYXNlVGFzay5pc0Rlc2NlbmRlbnRPZihldmVudFRhc2spKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBOU3RyaW5nLkZvcm1hdChcInt7UlRFdmVudCB7MH0gKHsxfSksIHR5cGUgezJ9ezN9fX1cIiwgW1xyXG4gICAgICB0aGlzLmdldEJya0xldmVsKCksIHRoaXMuSW50ZXJuYWxFdmVudCwgdGhpcy5fdHlwZSwgKHRoaXMuX3Rhc2sgPT09IG51bGwpID8gXCJcIiA6IChcIiBvbiBcIiArIHRoaXMuX3Rhc2spXHJcbiAgICBdKTtcclxuICB9XHJcbn1cclxuIl19
@@ -38,13 +38,10 @@ export class UserEventsTable {
38
38
  return null;
39
39
  return this._userEventsTab.get_Item(idx);
40
40
  }
41
- getIdxByEvent(evt) {
42
- return this._userEventsTab.indexOf(evt);
43
- }
44
41
  getSize() {
45
42
  if (this._userEventsTab === null)
46
43
  return 0;
47
44
  return this._userEventsTab.length;
48
45
  }
49
46
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckV2ZW50c1RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9Vc2VyRXZlbnRzVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbkQsTUFBTSxPQUFPLGVBQWU7SUFNMUI7UUFMUSxtQkFBYyxHQUFnQixJQUFJLENBQUM7UUFNekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLElBQUksRUFBUyxDQUFDO0lBQzFDLENBQUM7SUFLRCxRQUFRLENBQUMsR0FBUyxFQUFDLE1BQWlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7U0FDL0Q7SUFDSCxDQUFDO0lBTU8sZ0JBQWdCLENBQUMsTUFBaUIsRUFBRSxZQUFvQixFQUFFLEdBQVM7UUFDekUsSUFBSSxZQUFZLEtBQUssSUFBSTtZQUN2QixPQUFPLEtBQUssQ0FBQztRQUVmLFFBQVEsWUFBWSxFQUFFO1lBQ3BCLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsR0FBVSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUM3QixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07YUFDUDtZQUNELEtBQUssY0FBYyxDQUFDLGtCQUFrQjtnQkFDcEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXBHLE1BQU07WUFFUixLQUFLLGNBQWMsQ0FBQyxzQkFBc0I7Z0JBQ3hDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEtBQUssQ0FBQztZQUVmO2dCQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsNkRBQTZELEdBQUcsWUFBWSxDQUFDLENBQUM7Z0JBQ3pILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQsUUFBUSxDQUFDLEdBQVc7UUFFbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07WUFDOUUsT0FBTyxJQUFJLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFNRCxhQUFhLENBQUMsR0FBVTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFLRCxPQUFPO1FBRUwsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7WUFDOUIsT0FBTyxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3QgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IExvZ2dlciwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vRXZlbnQnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuXHJcbi8vIFVzZXIgZXZlbnRzIHRhYmxlOjx1c2VyZXZlbnRzPiBldmVudCDigKY8L3VzZXJldmVudHM+XHJcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRzVGFibGUge1xyXG4gIHByaXZhdGUgX3VzZXJFdmVudHNUYWI6IExpc3Q8RXZlbnQ+ID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fdXNlckV2ZW50c1RhYiA9IG5ldyBMaXN0PEV2ZW50PigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBpbm5lciBkYXRhIDogVmVjdG9yIHVzZXJFdmVudHNUYWJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHRzazogVGFzayxwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIsIHBhcnNlci5nZXROZXh0VGFnKCksIHRzaykpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5wb3NzaWJsZSAgdGFnIG5hbWUsIG5hbWUgb2Ygb2JqZWN0LCB3aGljaCBuZWVkIGJlIGFsbG9jYXRlZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhwYXJzZXI6IFhtbFBhcnNlciwgZm91bmRUYWdOYW1lOiBzdHJpbmcsIHRzazogVGFzayk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAoZm91bmRUYWdOYW1lKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UOiB7XHJcbiAgICAgICAgbGV0IGV2dDogRXZlbnQgPSBuZXcgRXZlbnQoKTtcclxuICAgICAgICBldnQuZmlsbERhdGEocGFyc2VyLCB0c2spO1xyXG4gICAgICAgIHRoaXMuX3VzZXJFdmVudHNUYWIucHVzaChldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTtcclxuICAgICAgICAvLyBlbmQgb2Ygb3V0ZXIgdGFnIGFuZCBpdHMgXCI+XCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBVc2VyRXZlbnRzVGFibGUuaW5pdElubmVyT2JqZWN0cyA6IFwiICsgZm91bmRUYWdOYW1lKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdXNlciBldmVudCBieSBpdHMgaW5kZXggaW4gdGhlIHZlY3RvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIHJlcXVlc3RlZCBldmVudCA8L3BhcmFtPlxyXG4gIGdldEV2ZW50KGlkeDogbnVtYmVyKTogRXZlbnQge1xyXG5cclxuICAgIGlmIChpZHggPCAwIHx8IHRoaXMuX3VzZXJFdmVudHNUYWIgPT09IG51bGwgfHwgaWR4ID49IHRoaXMuX3VzZXJFdmVudHNUYWIubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRXZlbnRzVGFiLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGlkeCBvZiB0aGUgZXZlbnQgaW4gdGhlIGV2ZW50cyB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJldmVudFwiPnRvIGZpbmQgaXRzIGlkeCA8L3BhcmFtPlxyXG4gIGdldElkeEJ5RXZlbnQoZXZ0OiBFdmVudCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlckV2ZW50c1RhYi5pbmRleE9mKGV2dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHNpemUgb2YgdGhlIHVzZXIgZXZlbnRzIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTaXplKCk6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKHRoaXMuX3VzZXJFdmVudHNUYWIgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJFdmVudHNUYWIubGVuZ3RoO1xyXG4gIH1cclxufVxyXG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckV2ZW50c1RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9Vc2VyRXZlbnRzVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbkQsTUFBTSxPQUFPLGVBQWU7SUFNMUI7UUFMUSxtQkFBYyxHQUFnQixJQUFJLENBQUM7UUFNekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLElBQUksRUFBUyxDQUFDO0lBQzFDLENBQUM7SUFLRCxRQUFRLENBQUMsR0FBUyxFQUFDLE1BQWlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7U0FDL0Q7SUFDSCxDQUFDO0lBTU8sZ0JBQWdCLENBQUMsTUFBaUIsRUFBRSxZQUFvQixFQUFFLEdBQVM7UUFDekUsSUFBSSxZQUFZLEtBQUssSUFBSTtZQUN2QixPQUFPLEtBQUssQ0FBQztRQUVmLFFBQVEsWUFBWSxFQUFFO1lBQ3BCLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsR0FBVSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUM3QixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07YUFDUDtZQUNELEtBQUssY0FBYyxDQUFDLGtCQUFrQjtnQkFDcEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXBHLE1BQU07WUFFUixLQUFLLGNBQWMsQ0FBQyxzQkFBc0I7Z0JBQ3hDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEtBQUssQ0FBQztZQUVmO2dCQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsNkRBQTZELEdBQUcsWUFBWSxDQUFDLENBQUM7Z0JBQ3pILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQsUUFBUSxDQUFDLEdBQVc7UUFFbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07WUFDOUUsT0FBTyxJQUFJLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFNRCxPQUFPO1FBRUwsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7WUFDOUIsT0FBTyxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3QgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IExvZ2dlciwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vRXZlbnQnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuXHJcbi8vIFVzZXIgZXZlbnRzIHRhYmxlOjx1c2VyZXZlbnRzPiBldmVudCDigKY8L3VzZXJldmVudHM+XHJcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRzVGFibGUge1xyXG4gIHByaXZhdGUgX3VzZXJFdmVudHNUYWI6IExpc3Q8RXZlbnQ+ID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fdXNlckV2ZW50c1RhYiA9IG5ldyBMaXN0PEV2ZW50PigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBpbm5lciBkYXRhIDogVmVjdG9yIHVzZXJFdmVudHNUYWJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHRzazogVGFzayxwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIsIHBhcnNlci5nZXROZXh0VGFnKCksIHRzaykpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5wb3NzaWJsZSAgdGFnIG5hbWUsIG5hbWUgb2Ygb2JqZWN0LCB3aGljaCBuZWVkIGJlIGFsbG9jYXRlZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhwYXJzZXI6IFhtbFBhcnNlciwgZm91bmRUYWdOYW1lOiBzdHJpbmcsIHRzazogVGFzayk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAoZm91bmRUYWdOYW1lKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UOiB7XHJcbiAgICAgICAgbGV0IGV2dDogRXZlbnQgPSBuZXcgRXZlbnQoKTtcclxuICAgICAgICBldnQuZmlsbERhdGEocGFyc2VyLCB0c2spO1xyXG4gICAgICAgIHRoaXMuX3VzZXJFdmVudHNUYWIucHVzaChldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTtcclxuICAgICAgICAvLyBlbmQgb2Ygb3V0ZXIgdGFnIGFuZCBpdHMgXCI+XCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBVc2VyRXZlbnRzVGFibGUuaW5pdElubmVyT2JqZWN0cyA6IFwiICsgZm91bmRUYWdOYW1lKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdXNlciBldmVudCBieSBpdHMgaW5kZXggaW4gdGhlIHZlY3RvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIHJlcXVlc3RlZCBldmVudCA8L3BhcmFtPlxyXG4gIGdldEV2ZW50KGlkeDogbnVtYmVyKTogRXZlbnQge1xyXG5cclxuICAgIGlmIChpZHggPCAwIHx8IHRoaXMuX3VzZXJFdmVudHNUYWIgPT09IG51bGwgfHwgaWR4ID49IHRoaXMuX3VzZXJFdmVudHNUYWIubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRXZlbnRzVGFiLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzaXplIG9mIHRoZSB1c2VyIGV2ZW50cyB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG5cclxuICAgIGlmICh0aGlzLl91c2VyRXZlbnRzVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRXZlbnRzVGFiLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIl19
@@ -32,10 +32,5 @@ export class YesNoExp {
32
32
  return this._exp.computedByServerOnly();
33
33
  return false;
34
34
  }
35
- isClientExp() {
36
- if (this._exp != null)
37
- return this._exp.computedByClientOnly();
38
- return false;
39
- }
40
35
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWWVzTm9FeHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V4cC9ZZXNOb0V4cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPaEQsTUFBTSxPQUFPLFFBQVE7SUFJbkIsWUFBWSxVQUFtQjtRQUh2QixTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFHNUIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQU9ELE1BQU0sQ0FBQyxJQUFVLEVBQUUsTUFBYztRQUUvQixRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixLQUFLLEdBQUc7Z0JBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLE1BQU07WUFFUixLQUFLLEdBQUc7Z0JBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLE1BQU07WUFFUjtnQkFDRSxJQUFJLEtBQUssR0FBVyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLElBQUksSUFBSSxJQUFJO29CQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUtELEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUk7WUFDcEIsT0FBTyxNQUFNLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFLRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7WUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDMUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBS0QsV0FBVztRQUVULElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJO1lBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzFDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtYbWxQYXJzZXIsIFN0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbnZlcnRvcn0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7RXhwcmVzc2lvbn0gZnJvbSBcIi4vRXhwcmVzc2lvblwiO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuLi90YXNrcy9UYXNrXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIFllc05vRXhwIGNsYXNzIHJlcHJlc2VudCBhIFllcy9Oby9FeHByZXNzaW9uIGNvbWJpbmF0aW9uXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBZZXNOb0V4cCB7XHJcbiAgcHJpdmF0ZSBfZXhwOiBFeHByZXNzaW9uID0gbnVsbDtcclxuICBwcml2YXRlIF92YWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoZGVmYXVsdFZhbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fdmFsID0gZGVmYXVsdFZhbDtcclxuICAgIHRoaXMuX2V4cCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgWWVzL05vL0V4cHJlc3Npb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnRoZSB0YXNrIHRvIGxvb2sgZm9yIGV4cHJlc3Npb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RyVmFsXCI+dGhlIHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBZZXMvTm8vRXhwcmVzc2lvbjwvcGFyYW0+XHJcbiAgc2V0VmFsKHRhc2s6IFRhc2ssIHN0clZhbDogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgc3dpdGNoIChzdHJWYWxbMF0pIHtcclxuICAgICAgY2FzZSAnWSc6XHJcbiAgICAgICAgdGhpcy5fdmFsID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ04nOlxyXG4gICAgICAgIHRoaXMuX3ZhbCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBsZXQgZXhwSWQ6IG51bWJlciA9IFhtbFBhcnNlci5nZXRJbnQoc3RyVmFsKTtcclxuICAgICAgICBpZiAodGFzayAhPSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5fZXhwID0gdGFzay5nZXRFeHBCeUlkKGV4cElkKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWWVzL05vL0V4cHJlc3Npb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIGdldFZhbCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLl9leHAgIT09IG51bGwpXHJcbiAgICAgIHJldHVybiBhd2FpdCBEaXNwbGF5Q29udmVydG9yLnRvQm9vbGVhbihhd2FpdCB0aGlzLl9leHAuZXZhbHVhdGVXaXRoUmVzdWx0VHlwZUFuZExlbmd0aChTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU4sIDApKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiBhbiBleHByZXNzaW9uIGV4aXN0cyBhbmQgaXQgaXMgYSBzZXJ2ZXIgc2lkZSBvbmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzU2VydmVyRXhwKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuX2V4cCAhPSBudWxsKVxyXG4gICAgICByZXR1cm4gdGhpcy5fZXhwLmNvbXB1dGVkQnlTZXJ2ZXJPbmx5KCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIGFuIGV4cHJlc3Npb24gZXhpc3RzIGFuZCBpdCBpcyBhIGNsaWVudCBzaWRlIG9uZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNDbGllbnRFeHAoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKHRoaXMuX2V4cCAhPSBudWxsKVxyXG4gICAgICByZXR1cm4gdGhpcy5fZXhwLmNvbXB1dGVkQnlDbGllbnRPbmx5KCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWWVzTm9FeHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V4cC9ZZXNOb0V4cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPaEQsTUFBTSxPQUFPLFFBQVE7SUFJbkIsWUFBWSxVQUFtQjtRQUh2QixTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFHNUIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQU9ELE1BQU0sQ0FBQyxJQUFVLEVBQUUsTUFBYztRQUUvQixRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixLQUFLLEdBQUc7Z0JBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLE1BQU07WUFFUixLQUFLLEdBQUc7Z0JBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLE1BQU07WUFFUjtnQkFDRSxJQUFJLEtBQUssR0FBVyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLElBQUksSUFBSSxJQUFJO29CQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUtELEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUk7WUFDcEIsT0FBTyxNQUFNLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFLRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7WUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDMUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1htbFBhcnNlciwgU3RvcmFnZUF0dHJpYnV0ZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtEaXNwbGF5Q29udmVydG9yfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtFeHByZXNzaW9ufSBmcm9tIFwiLi9FeHByZXNzaW9uXCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgWWVzTm9FeHAgY2xhc3MgcmVwcmVzZW50IGEgWWVzL05vL0V4cHJlc3Npb24gY29tYmluYXRpb25cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFllc05vRXhwIHtcclxuICBwcml2YXRlIF9leHA6IEV4cHJlc3Npb24gPSBudWxsO1xyXG4gIHByaXZhdGUgX3ZhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihkZWZhdWx0VmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl92YWwgPSBkZWZhdWx0VmFsO1xyXG4gICAgdGhpcy5fZXhwID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHZhbHVlIG9mIHRoZSBZZXMvTm8vRXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+dGhlIHRhc2sgdG8gbG9vayBmb3IgZXhwcmVzc2lvbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJWYWxcIj50aGUgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIFllcy9Oby9FeHByZXNzaW9uPC9wYXJhbT5cclxuICBzZXRWYWwodGFzazogVGFzaywgc3RyVmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICBzd2l0Y2ggKHN0clZhbFswXSkge1xyXG4gICAgICBjYXNlICdZJzpcclxuICAgICAgICB0aGlzLl92YWwgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnTic6XHJcbiAgICAgICAgdGhpcy5fdmFsID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGxldCBleHBJZDogbnVtYmVyID0gWG1sUGFyc2VyLmdldEludChzdHJWYWwpO1xyXG4gICAgICAgIGlmICh0YXNrICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLl9leHAgPSB0YXNrLmdldEV4cEJ5SWQoZXhwSWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBZZXMvTm8vRXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgZ2V0VmFsKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuX2V4cCAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGF3YWl0IERpc3BsYXlDb252ZXJ0b3IudG9Cb29sZWFuKGF3YWl0IHRoaXMuX2V4cC5ldmFsdWF0ZVdpdGhSZXN1bHRUeXBlQW5kTGVuZ3RoKFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiwgMCkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl92YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIGFuIGV4cHJlc3Npb24gZXhpc3RzIGFuZCBpdCBpcyBhIHNlcnZlciBzaWRlIG9uZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNTZXJ2ZXJFeHAoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5fZXhwICE9IG51bGwpXHJcbiAgICAgIHJldHVybiB0aGlzLl9leHAuY29tcHV0ZWRCeVNlcnZlck9ubHkoKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=