@gravitee/ui-policy-studio-angular 15.7.1 → 15.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -121,6 +121,9 @@ export class GioPolicyStudioComponent {
121
121
  if (changes.policies || changes.sharedPolicyGroupPolicies) {
122
122
  this.initGenericPolicies();
123
123
  }
124
+ if (changes.loading && this.loading && !this.saving) {
125
+ this.saving = true;
126
+ }
124
127
  }
125
128
  ngOnDestroy() {
126
129
  this.unSavingButtonSubscription?.unsubscribe();
@@ -185,6 +188,7 @@ export class GioPolicyStudioComponent {
185
188
  ...(this.hasFlowExecutionChanged ? { flowExecution: this.flowExecution } : {}),
186
189
  });
187
190
  this.saving = true;
191
+ this.disableSaveButton = true;
188
192
  this.unSavingButtonSubscription?.unsubscribe();
189
193
  if (this.enableSavingTimer) {
190
194
  this.unSavingButtonSubscription = timer(5000).subscribe(() => {
@@ -297,4 +301,4 @@ const getPlansChangeOutput = (flowsGroups, initialFlowsGroups) => {
297
301
  }));
298
302
  return plansWithChangedFlowsOutput.length > 0 ? plansWithChangedFlowsOutput : null;
299
303
  };
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9wb2xpY3ktc3R1ZGlvL2dpby1wb2xpY3ktc3R1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFVTCxpQkFBaUIsRUFHakIsZUFBZSxHQUVoQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUN6RyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7OztBQW9CM0csTUFBTSxP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Q0FBQyxDQUFDLElBQUksQ0FBQztBQUNyRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGRpZmZlcmVuY2VCeSwgZmxhdHRlbiwgaXNFcXVhbCwgb21pdCwgdW5pb25CeSwgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRU1QVFksIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5pbXBvcnQge1xuICBDb25uZWN0b3JJbmZvLFxuICBGbG93LFxuICBGbG93RXhlY3V0aW9uLFxuICBQbGFuLFxuICBQb2xpY3ksXG4gIFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyLFxuICBQb2xpY3lTY2hlbWFGZXRjaGVyLFxuICBTYXZlT3V0cHV0LFxuICBTaGFyZWRQb2xpY3lHcm91cFBvbGljeSxcbiAgdG9HZW5lcmljUG9saWNpZXMsXG4gIEdlbmVyaWNQb2xpY3ksXG4gIFBvbGljeUlucHV0LFxuICBmcm9tUG9saWN5SW5wdXQsXG4gIEFwaVR5cGUsXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93c01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Zsb3dzLW1lbnUvZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEZsb3dHcm91cFZNLCBGbG93Vk0gfSBmcm9tICcuL2dpby1wb2xpY3ktc3R1ZGlvLm1vZGVsJztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb1NlcnZpY2UgfSBmcm9tICcuL2dpby1wb2xpY3ktc3R1ZGlvLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBGbG93U2VsZWN0aW9uID0geyBwbGFuSW5kZXg6IG51bWJlcjsgZmxvd0luZGV4OiBudW1iZXIgfTtcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgR2lvSWNvbnNNb2R1bGUsXG4gICAgR2lvUG9saWN5U3R1ZGlvRmxvd3NNZW51Q29tcG9uZW50LFxuICAgIEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQsXG4gIF0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBvbGljeS1zdHVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcG9saWN5LXN0dWRpby5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBNYXkgYmUgc2V0IHRvIGB0cnVlYCBpZiB0aGUgQVBJIGlzIG5vdCBtYW5hZ2VhYmxlIGZyb20gdGhlIFVJIChlLmcuIGt1YmVybmV0ZXMgb3BlcmF0b3IgQVBJcylcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBUEkgdHlwZSAocmVxdWlyZWQpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgLyoqXG4gICAqIEZsb3cgZXhlY3V0aW9uIGNvbmZpZyAocmVxdWlyZWQpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvd0V4ZWN1dGlvbiE6IEZsb3dFeGVjdXRpb247XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZW50cnlwb2ludHMgdG8gZGlzcGxheVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVudHJ5cG9pbnRzSW5mbzogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZW5kcG9pbnRzIHRvIGRpc3BsYXlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmRwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBjb21tb24gZmxvd3MgdG8gYWRkIHRvIGNvbW1vbiBmbG93cyBncm91cFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGNvbW1vbkZsb3dzOiBGbG93W10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBwbGFucyB3aXRoIHRoZWlyIGZsb3dzXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhbnM6IFBsYW5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHBvbGljaWVzIHVzYWJsZSBpbiB0aGUgcG9saWN5IHN0dWRpb1xuICAgKi9cbiAgQElucHV0KHtcbiAgICB0cmFuc2Zvcm06IChwb2xpY2llczogdW5rbm93bikgPT4gcG9saWNpZXMgPz8gW10sXG4gIH0pXG4gIHB1YmxpYyBzZXQgcG9saWNpZXModmFsdWU6IChQb2xpY3lJbnB1dCB8IFBvbGljeSlbXSkge1xuICAgIHRoaXMuX3BvbGljaWVzID0gdmFsdWUubWFwKGZyb21Qb2xpY3lJbnB1dCk7XG4gIH1cbiAgcHVibGljIGdldCBwb2xpY2llcygpOiBQb2xpY3lbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvbGljaWVzO1xuICB9XG4gIHByaXZhdGUgX3BvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFNoYXJlZFBvbGljeUdyb3VwcyB1c2FibGUgaW4gdGhlIHN0dWRpb1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNoYXJlZFBvbGljeUdyb3VwUG9saWNpZXM6IFNoYXJlZFBvbGljeUdyb3VwUG9saWN5W10gPSBbXTtcblxuICAvKipcbiAgICogV2hlbiBhIHBvbGljeSBpcyBub3QgYXZhaWxhYmxlIHdpdGggdGhlIGN1cnJlbnQgbGljZW5zZSxcbiAgICogdGhpcyBVUkwgaXMgdXNlZCB0byByZWRpcmVjdCB0aGUgdXNlciB0byB0aGUgdHJpYWwgcGFnZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmlhbFVybD86IHN0cmluZztcblxuICAvKipcbiAgICogTG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gUG9saWN5IFN0dWRpbyBuZWVkcyB0byBmZXRjaCB0aGUgcG9saWN5IHNjaGVtYVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBwb2xpY3kgc2NoZW1hXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5U2NoZW1hRmV0Y2hlcjogUG9saWN5U2NoZW1hRmV0Y2hlciA9ICgpID0+IEVNUFRZO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBQb2xpY3kgU3R1ZGlvIG5lZWRzIHRvIGZldGNoIHRoZSBwb2xpY3kgZG9jdW1lbnRhdGlvblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBwb2xpY3kgZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyOiBQb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlciA9ICgpID0+IEVNUFRZO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3dJbmRleGVzOiBGbG93U2VsZWN0aW9uID0geyBwbGFuSW5kZXg6IDAsIGZsb3dJbmRleDogMCB9O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRGbG93Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rmxvd1NlbGVjdGlvbj4oKTtcblxuICAvKipcbiAgICogUmV0dXJuIHdoYXQgaXMgbmVlZGVkIHRvIHNhdmUuXG4gICAqKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxTYXZlT3V0cHV0PigpO1xuXG4gIHB1YmxpYyBjb25uZWN0b3JzVG9vbHRpcCA9ICcnO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3c/OiBGbG93Vk0gPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdID0gW107XG5cbiAgcHVibGljIGRpc2FibGVTYXZlQnV0dG9uID0gdHJ1ZTtcblxuICBwdWJsaWMgc2F2aW5nID0gZmFsc2U7XG5cbiAgLy8gVXNlZCB0byBrZWVwIHRyYWNrIG9mIGluaXRpYWwgZmxvd3MgZ3JvdXBzIHRvIGtub3cgaWYgdGhlcmUgYXJlIGRlbGV0ZWQgZmxvd3NcbiAgcHJpdmF0ZSBpbml0aWFsRmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10gPSBbXTtcblxuICBwcml2YXRlIGhhc0Zsb3dFeGVjdXRpb25DaGFuZ2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB1blNhdmluZ0J1dHRvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVuYWJsZVNhdmluZ1RpbWVyID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgZ2VuZXJpY1BvbGljaWVzOiBHZW5lcmljUG9saWN5W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBvbGljeVN0dWRpb1NlcnZpY2U6IEdpb1BvbGljeVN0dWRpb1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5lbnRyeXBvaW50c0luZm8gfHwgY2hhbmdlcy5lbmRwb2ludHNJbmZvKSB7XG4gICAgICB0aGlzLmNvbm5lY3RvcnNUb29sdGlwID0gYEVudHJ5cG9pbnRzOiAkeyh0aGlzLmVudHJ5cG9pbnRzSW5mbyA/PyBbXSkubWFwKGUgPT4gZS5uYW1lKS5qb2luKCcsICcpfVxcbkVuZHBvaW50czogJHsoXG4gICAgICAgIHRoaXMuZW5kcG9pbnRzSW5mbyA/PyBbXVxuICAgICAgKVxuICAgICAgICAubWFwKGUgPT4gZS5uYW1lKVxuICAgICAgICAuam9pbignLCAnKX1gO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbW1vbkZsb3dzIHx8IGNoYW5nZXMucGxhbnMgfHwgY2hhbmdlcy5zZWxlY3RlZEZsb3dJbmRleGVzKSB7XG4gICAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmxvd3NHcm91cHMgPSBnZXRGbG93c0dyb3Vwcyh0aGlzLmFwaVR5cGUsIHRoaXMuY29tbW9uRmxvd3MsIHRoaXMucGxhbnMpO1xuICAgICAgdGhpcy5pbml0aWFsRmxvd3NHcm91cHMgPSBjbG9uZURlZXAodGhpcy5mbG93c0dyb3Vwcyk7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxvdyA9IHRoaXMuZmxvd3NHcm91cHNbdGhpcy5zZWxlY3RlZEZsb3dJbmRleGVzPy5wbGFuSW5kZXggPz8gMF0/LmZsb3dzW3RoaXMuc2VsZWN0ZWRGbG93SW5kZXhlcz8uZmxvd0luZGV4ID8/IDBdO1xuXG4gICAgICAvLyBSZXNldCBzYXZpbmcgc3RhdGUgd2hlbiBmbG93c0dyb3VwcyBhcmUgdXBkYXRlZFxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMudW5TYXZpbmdCdXR0b25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucG9saWN5U2NoZW1hRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeVNjaGVtYUZldGNoZXIodGhpcy5wb2xpY3lTY2hlbWFGZXRjaGVyKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5wb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyKHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnBvbGljaWVzIHx8IGNoYW5nZXMuc2hhcmVkUG9saWN5R3JvdXBQb2xpY2llcykge1xuICAgICAgdGhpcy5pbml0R2VuZXJpY1BvbGljaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5TYXZpbmdCdXR0b25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25GbG93RXhlY3V0aW9uQ2hhbmdlKGZsb3dFeGVjdXRpb246IEZsb3dFeGVjdXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmhhc0Zsb3dFeGVjdXRpb25DaGFuZ2VkID0gIWlzRXF1YWwodGhpcy5mbG93RXhlY3V0aW9uLCBmbG93RXhlY3V0aW9uKTtcbiAgICBpZiAodGhpcy5oYXNGbG93RXhlY3V0aW9uQ2hhbmdlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5mbG93RXhlY3V0aW9uID0gZmxvd0V4ZWN1dGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GbG93c0dyb3Vwc0NoYW5nZShmbG93c0dyb3VwczogRmxvd0dyb3VwVk1bXSk6IHZvaWQge1xuICAgIHRoaXMuZmxvd3NHcm91cHMgPSBjbG9uZURlZXAoZmxvd3NHcm91cHMpO1xuICAgIHRoaXMuZGlzYWJsZVNhdmVCdXR0b24gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsb3cpIHtcbiAgICAgIHRoaXMub25TZWxlY3RGbG93KHRoaXMuc2VsZWN0ZWRGbG93Ll9pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRGbG93Q2hhbmdlKGZsb3c6IEZsb3dWTSk6IHZvaWQge1xuICAgIHRoaXMuZmxvd3NHcm91cHMgPSB0aGlzLmZsb3dzR3JvdXBzLm1hcChmbG93R3JvdXAgPT4gKHtcbiAgICAgIC4uLmZsb3dHcm91cCxcbiAgICAgIGZsb3dzOiBmbG93R3JvdXAuZmxvd3MubWFwKGYgPT4gKGYuX2lkID09PSBmbG93Ll9pZCA/IGZsb3cgOiBmKSksXG4gICAgfSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRGbG93ID0gZmxvdztcbiAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RGbG93KGZsb3dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IG5ld1BsYW5JbmRleCA9IDA7XG4gICAgbGV0IG5ld0Zsb3dJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgY3VycmVudFBsYW5JbmRleCA9IDA7IGN1cnJlbnRQbGFuSW5kZXggPCB0aGlzLmZsb3dzR3JvdXBzLmxlbmd0aDsgY3VycmVudFBsYW5JbmRleCsrKSB7XG4gICAgICBjb25zdCBpbmRleFdpdGhpblBsYW4gPSB0aGlzLmZsb3dzR3JvdXBzW2N1cnJlbnRQbGFuSW5kZXhdLmZsb3dzLmZpbmRJbmRleChmbG93ID0+IGZsb3cuX2lkID09PSBmbG93SWQpO1xuICAgICAgaWYgKGluZGV4V2l0aGluUGxhbiAhPT0gLTEpIHtcbiAgICAgICAgbmV3UGxhbkluZGV4ID0gY3VycmVudFBsYW5JbmRleDtcbiAgICAgICAgbmV3Rmxvd0luZGV4ID0gaW5kZXhXaXRoaW5QbGFuO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRmxvd0luZGV4ZXMgPSB7IHBsYW5JbmRleDogbmV3UGxhbkluZGV4LCBmbG93SW5kZXg6IG5ld0Zsb3dJbmRleCB9O1xuXG4gICAgdGhpcy5zZWxlY3RlZEZsb3cgPSB0aGlzLmZsb3dzR3JvdXBzW25ld1BsYW5JbmRleF0uZmxvd3NbbmV3Rmxvd0luZGV4XTtcblxuICAgIHRoaXMuc2VsZWN0ZWRGbG93Q2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRGbG93SW5kZXhlcyk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVTZWxlY3RlZEZsb3coZmxvdzogRmxvd1ZNKTogdm9pZCB7XG4gICAgLy8gRGVmaW5lIG5leHQgc2VsZWN0ZWQgZmxvdyBhbmQgcmVtb3ZlIGZsb3cgZnJvbSBmbG93c0dyb3Vwc1xuICAgIGNvbnN0IGFsbEZsb3dzSWQgPSBmbGF0dGVuKHRoaXMuZmxvd3NHcm91cHMubWFwKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuZmxvd3MpKS5tYXAoZiA9PiBmLl9pZCk7XG4gICAgY29uc3QgZmxvd1RvRGVsZXRlSW5kZXggPSBhbGxGbG93c0lkLmluZGV4T2YoZmxvdy5faWQpO1xuICAgIGNvbnN0IG5leHRTZWxlY3RlZEZsb3dJZCA9IGFsbEZsb3dzSWRbZmxvd1RvRGVsZXRlSW5kZXggKyAxXSA/PyBhbGxGbG93c0lkW2Zsb3dUb0RlbGV0ZUluZGV4IC0gMV07XG4gICAgdGhpcy5mbG93c0dyb3VwcyA9IHRoaXMuZmxvd3NHcm91cHMubWFwKGZsb3dHcm91cCA9PiAoe1xuICAgICAgLi4uZmxvd0dyb3VwLFxuICAgICAgZmxvd3M6IGZsb3dHcm91cC5mbG93cy5maWx0ZXIoZiA9PiBmLl9pZCAhPT0gZmxvdy5faWQpLFxuICAgIH0pKTtcblxuICAgIHRoaXMub25TZWxlY3RGbG93KG5leHRTZWxlY3RlZEZsb3dJZCk7XG5cbiAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25TYXZlKCk6IHZvaWQge1xuICAgIC8vIEVtaXQgY29tbW9uIGZsb3dzIG9ubHkgaWYgdGhleSBoYXZlIGJlZW4gdXBkYXRlZFxuICAgIGNvbnN0IGNvbW1vbkZsb3dzID0gZ2V0Q29tbW9uRmxvd3NPdXRwdXQodGhpcy5mbG93c0dyb3VwcywgdGhpcy5pbml0aWFsRmxvd3NHcm91cHMpO1xuXG4gICAgLy8gRW1pdCBwbGFucyBvbmx5IGlmIHRoZXkgaGF2ZSBiZWVuIHVwZGF0ZWRcbiAgICBjb25zdCBwbGFuc1RvVXBkYXRlID0gZ2V0UGxhbnNDaGFuZ2VPdXRwdXQodGhpcy5mbG93c0dyb3VwcywgdGhpcy5pbml0aWFsRmxvd3NHcm91cHMpO1xuICAgIHRoaXMuc2F2ZS5lbWl0KHtcbiAgICAgIC4uLihjb21tb25GbG93cyA/IHsgY29tbW9uRmxvd3MgfSA6IHt9KSxcbiAgICAgIC4uLihwbGFuc1RvVXBkYXRlID8geyBwbGFuc1RvVXBkYXRlIH0gOiB7fSksXG4gICAgICAuLi4odGhpcy5oYXNGbG93RXhlY3V0aW9uQ2hhbmdlZCA/IHsgZmxvd0V4ZWN1dGlvbjogdGhpcy5mbG93RXhlY3V0aW9uIH0gOiB7fSksXG4gICAgfSk7XG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy51blNhdmluZ0J1dHRvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5lbmFibGVTYXZpbmdUaW1lcikge1xuICAgICAgdGhpcy51blNhdmluZ0J1dHRvblN1YnNjcmlwdGlvbiA9IHRpbWVyKDUwMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRHZW5lcmljUG9saWNpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5nZW5lcmljUG9saWNpZXMgPSB0b0dlbmVyaWNQb2xpY2llcyh0aGlzLnBvbGljaWVzID8/IFtdLCB0aGlzLnNoYXJlZFBvbGljeUdyb3VwUG9saWNpZXMgPz8gW10pO1xuICB9XG59XG5cbmNvbnN0IGdldEZsb3dzR3JvdXBzID0gKGFwaVR5cGU6IEFwaVR5cGUsIGNvbW1vbkZsb3dzOiBGbG93W10gPSBbXSwgcGxhbnM6IFBsYW5bXSA9IFtdKTogRmxvd0dyb3VwVk1bXSA9PiB7XG4gIGNvbnN0IGNvbW1GbG93c0dyb3VwOiBGbG93R3JvdXBWTSA9IHtcbiAgICBfaWQ6ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnLFxuICAgIF9pc1BsYW46IGZhbHNlLFxuICAgIG5hbWU6ICdBbGwgcGxhbnMnLFxuICAgIGZsb3dzOiBjb21tb25GbG93cy5tYXAoZmxvdyA9PiAoeyAuLi5mbG93LCBfaWQ6IHVuaXF1ZUlkKCdmbG93XycpLCBfaGFzQ2hhbmdlZDogZmFsc2UsIF9wYXJlbnRGbG93R3JvdXBOYW1lOiAnQ29tbW9uJyB9KSksXG4gIH07XG5cbiAgcmV0dXJuIFtcbiAgICAuLi5wbGFucy5tYXAocGxhbiA9PiAoe1xuICAgICAgX2lkOiB1bmlxdWVJZCgnZmxvd3NHcm91cF8nKSxcbiAgICAgIF9wbGFuSWQ6IHBsYW4uaWQsXG4gICAgICBfaXNQbGFuOiB0cnVlLFxuICAgICAgbmFtZTogcGxhbi5uYW1lLFxuICAgICAgZmxvd3M6IHBsYW4uZmxvd3MubWFwKGZsb3cgPT4gKHsgLi4uZmxvdywgX2lkOiB1bmlxdWVJZCgnZmxvd18nKSwgX2hhc0NoYW5nZWQ6IGZhbHNlLCBfcGFyZW50Rmxvd0dyb3VwTmFtZTogcGxhbi5uYW1lIH0pKSxcbiAgICB9KSksXG4gICAgY29tbUZsb3dzR3JvdXAsXG4gIF07XG59O1xuXG5jb25zdCBnZXRDb21tb25GbG93c091dHB1dCA9IChmbG93c0dyb3VwczogRmxvd0dyb3VwVk1bXSwgaW5pdGlhbEZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdKTogRmxvd1tdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNvbW1vbkZsb3dzR3JvdXAgPSBmbG93c0dyb3Vwcy5maW5kKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuX2lkID09PSAnZmxvd3NHcm91cF9jb21tb25GbG93Jyk7XG4gIGNvbnN0IGluaXRpYWxDb21tb25GbG93c0dyb3VwID0gaW5pdGlhbEZsb3dzR3JvdXBzLmZpbmQoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5faWQgPT09ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnKTtcbiAgLy8gQ2hlY2sgaWYgY29tbW9uIGZsb3dzIGhhdmUgYmVlbiB1cGRhdGVkXG4gIGNvbnN0IGhhc0NoYW5nZWQgPSBjb21tb25GbG93c0dyb3VwPy5mbG93cy5zb21lKGZsb3cgPT4gZmxvdy5faGFzQ2hhbmdlZCk7XG5cbiAgLy8gQ2hlY2sgaWYgY29tbW9uIGZsb3dzIGhhdmUgYmVlbiBkZWxldGVkXG4gIGNvbnN0IGhhc0RlbGV0ZWRGbG93ID0gZGlmZmVyZW5jZUJ5KGluaXRpYWxDb21tb25GbG93c0dyb3VwPy5mbG93cyA/PyBbXSwgY29tbW9uRmxvd3NHcm91cD8uZmxvd3MgPz8gW10sICdfaWQnKS5sZW5ndGggPiAwO1xuXG4gIHJldHVybiBoYXNDaGFuZ2VkIHx8IGhhc0RlbGV0ZWRGbG93XG4gICAgPyAoY29tbW9uRmxvd3NHcm91cD8uZmxvd3MgPz8gW10pLm1hcChmbG93ID0+IG9taXQoZmxvdywgJ19pZCcsICdfaGFzQ2hhbmdlZCcsICdfcGFyZW50Rmxvd0dyb3VwTmFtZScpKVxuICAgIDogbnVsbDtcbn07XG5cbmNvbnN0IGdldFBsYW5zQ2hhbmdlT3V0cHV0ID0gKGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdLCBpbml0aWFsRmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10pOiBQbGFuW10gfCBudWxsID0+IHtcbiAgY29uc3QgcGxhbnNHcm91cHMgPSBmbG93c0dyb3Vwcy5maWx0ZXIoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5faWQgIT09ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnKTtcbiAgY29uc3QgaW5pdGlhbFBsYW5zR3JvdXBzID0gaW5pdGlhbEZsb3dzR3JvdXBzLmZpbHRlcihmbG93R3JvdXAgPT4gZmxvd0dyb3VwLl9pZCAhPT0gJ2Zsb3dzR3JvdXBfY29tbW9uRmxvdycpO1xuXG4gIC8vIEdldCBwbGFucyB3aXRoIGNoYW5nZWQgZmxvd3NcbiAgY29uc3QgcGxhbnNHcm91cHNXaXRoQ2hhbmdlZEZsb3dzID0gcGxhbnNHcm91cHMuZmlsdGVyKHBsYW4gPT4gcGxhbi5mbG93cy5zb21lKGZsb3cgPT4gZmxvdy5faGFzQ2hhbmdlZCkpO1xuXG4gIC8vIEdldCBwbGFucyB3aXRoIGRlbGV0ZWQgZmxvd3NcbiAgY29uc3QgcGxhbnNHcm91cHNXaXRoRGVsZXRlZEZsb3dzOiBGbG93R3JvdXBWTVtdID0gW107XG5cbiAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGRlbGV0ZWQgZmxvd3MgaW4gaW5pdGlhbCBpbml0aWFsUGxhbnNHcm91cHNcbiAgaW5pdGlhbFBsYW5zR3JvdXBzLmZvckVhY2gocGxhbiA9PiB7XG4gICAgY29uc3QgcGxhbkdyb3VwVG9Db21wYXJlID0gcGxhbnNHcm91cHMuZmluZChwID0+IHAuX3BsYW5JZCA9PT0gcGxhbi5fcGxhbklkKTtcbiAgICBpZiAocGxhbkdyb3VwVG9Db21wYXJlICYmIGRpZmZlcmVuY2VCeShwbGFuLmZsb3dzLCBwbGFuR3JvdXBUb0NvbXBhcmU/LmZsb3dzID8/IFtdLCAnX2lkJykubGVuZ3RoID4gMCkge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIGRlbGV0ZWQgZmxvd3MsIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBjb21wbGV0ZSBwbGFuIHdpdGggdGhlIG5ldyBmbG93c1xuICAgICAgcGxhbnNHcm91cHNXaXRoRGVsZXRlZEZsb3dzLnB1c2gocGxhbkdyb3VwVG9Db21wYXJlKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIE1lcmdlIHBsYW5zIHdpdGggY2hhbmdlZCBmbG93cyBhbmQgcGxhbnMgd2l0aCBkZWxldGVkIGZsb3dzXG4gIGNvbnN0IHBsYW5zV2l0aENoYW5nZWRGbG93c091dHB1dCA9IHVuaW9uQnkoWy4uLnBsYW5zR3JvdXBzV2l0aENoYW5nZWRGbG93cywgLi4ucGxhbnNHcm91cHNXaXRoRGVsZXRlZEZsb3dzXSwgJ19wbGFuSWQnKS5tYXAocGxhbiA9PiAoe1xuICAgIC4uLm9taXQocGxhbiwgJ19pZCcsICdfaXNQbGFuJywgJ19wbGFuSWQnKSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAtLSBwbGFuSWQgaXMgYWx3YXlzIGRlZmluZWRcbiAgICBpZDogcGxhbi5fcGxhbklkISxcbiAgICBmbG93czogcGxhbi5mbG93cy5tYXAoZmxvdyA9PiBvbWl0KGZsb3csICdfaWQnLCAnX2hhc0NoYW5nZWQnLCAnX3BhcmVudEZsb3dHcm91cE5hbWUnKSksXG4gIH0pKTtcblxuICByZXR1cm4gcGxhbnNXaXRoQ2hhbmdlZEZsb3dzT3V0cHV0Lmxlbmd0aCA+IDAgPyBwbGFuc1dpdGhDaGFuZ2VkRmxvd3NPdXRwdXQgOiBudWxsO1xufTtcbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2FwaUluZm9cIiAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIGxvYWRpbmdBcGlJbmZvXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJnaW8tYmFkZ2UtcHJpbWFyeVwiPlxuICAgICAge3sgYXBpVHlwZSB8IHRpdGxlY2FzZSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJnaW8tYmFkZ2UtbmV1dHJhbFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJjb25uZWN0b3JzVG9vbHRpcFwiXG4gICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICBtYXRUb29sdGlwQ2xhc3M9XCJnaW8tcG9saWN5LXN0dWRpb19fdG9vbHRpcC1saW5lLWJyZWFrXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gKm5nRm9yPVwibGV0IGVudHJ5cG9pbnQgb2YgZW50cnlwb2ludHNJbmZvXCIgY2xhc3M9XCJnaW8tbGVmdFwiIFtzdmdJY29uXT1cImVudHJ5cG9pbnQuaWNvblwiPjwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gKm5nRm9yPVwibGV0IGVuZHBvaW50IG9mIGVuZHBvaW50c0luZm9cIiBjbGFzcz1cImdpby1sZWZ0XCIgW3N2Z0ljb25dPVwiZW5kcG9pbnQuaWNvblwiPjwvbWF0LWljb24+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNsb2FkaW5nQXBpSW5mbz5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19hcGlJbmZvXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImdpby1iYWRnZS1wcmltYXJ5XCI+Jm5ic3A7PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJnaW8tYmFkZ2UtbmV1dHJhbFwiPiZuYnNwOzwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19idG5cIj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiIXNhdmluZ1wiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCBkaXNhYmxlU2F2ZUJ1dHRvblwiIChjbGljayk9XCJvblNhdmUoKVwiPlNhdmU8L2J1dHRvbj5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2F2aW5nXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGRpc2FibGVkPlNhdmluZy4uLjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwid3JhcHBlcl9fZmxvd3NNZW51XCI+XG4gICAgPGdpby1wcy1mbG93cy1tZW51XG4gICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgIFtmbG93RXhlY3V0aW9uXT1cImZsb3dFeGVjdXRpb25cIlxuICAgICAgW2Zsb3dzR3JvdXBzXT1cImZsb3dzR3JvdXBzXCJcbiAgICAgIFtlbnRyeXBvaW50c109XCJlbnRyeXBvaW50c0luZm9cIlxuICAgICAgW2VudHJ5cG9pbnRzSW5mb109XCJlbnRyeXBvaW50c0luZm9cIlxuICAgICAgKGZsb3dzR3JvdXBzQ2hhbmdlKT1cIm9uRmxvd3NHcm91cHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoZmxvd0V4ZWN1dGlvbkNoYW5nZSk9XCJvbkZsb3dFeGVjdXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbc2VsZWN0ZWRGbG93SWRdPVwic2VsZWN0ZWRGbG93Py5faWRcIlxuICAgICAgKHNlbGVjdGVkRmxvd0lkQ2hhbmdlKT1cIm9uU2VsZWN0RmxvdygkZXZlbnQpXCJcbiAgICAgIChkZWxldGVGbG93KT1cIm9uRGVsZXRlU2VsZWN0ZWRGbG93KCRldmVudClcIlxuICAgID48L2dpby1wcy1mbG93cy1tZW51PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwid3JhcHBlcl9fZmxvd0RldGFpbHNcIj5cbiAgICA8Z2lvLXBzLWZsb3ctZGV0YWlsc1xuICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICBbZmxvd109XCJzZWxlY3RlZEZsb3dcIlxuICAgICAgW2VudHJ5cG9pbnRzSW5mb109XCJlbnRyeXBvaW50c0luZm9cIlxuICAgICAgW2VuZHBvaW50c0luZm9dPVwiZW5kcG9pbnRzSW5mb1wiXG4gICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgIChmbG93Q2hhbmdlKT1cIm9uU2VsZWN0ZWRGbG93Q2hhbmdlKCRldmVudClcIlxuICAgICAgKGRlbGV0ZUZsb3cpPVwib25EZWxldGVTZWxlY3RlZEZsb3coJGV2ZW50KVwiXG4gICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9wb2xpY3ktc3R1ZGlvL2dpby1wb2xpY3ktc3R1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFVTCxpQkFBaUIsRUFHakIsZUFBZSxHQUVoQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUN6RyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7OztBQW9CM0csTUFBTSxP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QUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztLQUN4RixDQUFDLENBQUMsQ0FBQztJQUVKLE9BQU8sMkJBQTJCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNyRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGRpZmZlcmVuY2VCeSwgZmxhdHRlbiwgaXNFcXVhbCwgb21pdCwgdW5pb25CeSwgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRU1QVFksIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5pbXBvcnQge1xuICBDb25uZWN0b3JJbmZvLFxuICBGbG93LFxuICBGbG93RXhlY3V0aW9uLFxuICBQbGFuLFxuICBQb2xpY3ksXG4gIFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyLFxuICBQb2xpY3lTY2hlbWFGZXRjaGVyLFxuICBTYXZlT3V0cHV0LFxuICBTaGFyZWRQb2xpY3lHcm91cFBvbGljeSxcbiAgdG9HZW5lcmljUG9saWNpZXMsXG4gIEdlbmVyaWNQb2xpY3ksXG4gIFBvbGljeUlucHV0LFxuICBmcm9tUG9saWN5SW5wdXQsXG4gIEFwaVR5cGUsXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93c01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Zsb3dzLW1lbnUvZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEZsb3dHcm91cFZNLCBGbG93Vk0gfSBmcm9tICcuL2dpby1wb2xpY3ktc3R1ZGlvLm1vZGVsJztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb1NlcnZpY2UgfSBmcm9tICcuL2dpby1wb2xpY3ktc3R1ZGlvLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBGbG93U2VsZWN0aW9uID0geyBwbGFuSW5kZXg6IG51bWJlcjsgZmxvd0luZGV4OiBudW1iZXIgfTtcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgR2lvSWNvbnNNb2R1bGUsXG4gICAgR2lvUG9saWN5U3R1ZGlvRmxvd3NNZW51Q29tcG9uZW50LFxuICAgIEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQsXG4gIF0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBvbGljeS1zdHVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcG9saWN5LXN0dWRpby5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBNYXkgYmUgc2V0IHRvIGB0cnVlYCBpZiB0aGUgQVBJIGlzIG5vdCBtYW5hZ2VhYmxlIGZyb20gdGhlIFVJIChlLmcuIGt1YmVybmV0ZXMgb3BlcmF0b3IgQVBJcylcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBUEkgdHlwZSAocmVxdWlyZWQpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgLyoqXG4gICAqIEZsb3cgZXhlY3V0aW9uIGNvbmZpZyAocmVxdWlyZWQpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvd0V4ZWN1dGlvbiE6IEZsb3dFeGVjdXRpb247XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZW50cnlwb2ludHMgdG8gZGlzcGxheVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVudHJ5cG9pbnRzSW5mbzogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZW5kcG9pbnRzIHRvIGRpc3BsYXlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmRwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBjb21tb24gZmxvd3MgdG8gYWRkIHRvIGNvbW1vbiBmbG93cyBncm91cFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGNvbW1vbkZsb3dzOiBGbG93W10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBwbGFucyB3aXRoIHRoZWlyIGZsb3dzXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhbnM6IFBsYW5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHBvbGljaWVzIHVzYWJsZSBpbiB0aGUgcG9saWN5IHN0dWRpb1xuICAgKi9cbiAgQElucHV0KHtcbiAgICB0cmFuc2Zvcm06IChwb2xpY2llczogdW5rbm93bikgPT4gcG9saWNpZXMgPz8gW10sXG4gIH0pXG4gIHB1YmxpYyBzZXQgcG9saWNpZXModmFsdWU6IChQb2xpY3lJbnB1dCB8IFBvbGljeSlbXSkge1xuICAgIHRoaXMuX3BvbGljaWVzID0gdmFsdWUubWFwKGZyb21Qb2xpY3lJbnB1dCk7XG4gIH1cbiAgcHVibGljIGdldCBwb2xpY2llcygpOiBQb2xpY3lbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvbGljaWVzO1xuICB9XG4gIHByaXZhdGUgX3BvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFNoYXJlZFBvbGljeUdyb3VwcyB1c2FibGUgaW4gdGhlIHN0dWRpb1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNoYXJlZFBvbGljeUdyb3VwUG9saWNpZXM6IFNoYXJlZFBvbGljeUdyb3VwUG9saWN5W10gPSBbXTtcblxuICAvKipcbiAgICogV2hlbiBhIHBvbGljeSBpcyBub3QgYXZhaWxhYmxlIHdpdGggdGhlIGN1cnJlbnQgbGljZW5zZSxcbiAgICogdGhpcyBVUkwgaXMgdXNlZCB0byByZWRpcmVjdCB0aGUgdXNlciB0byB0aGUgdHJpYWwgcGFnZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmlhbFVybD86IHN0cmluZztcblxuICAvKipcbiAgICogTG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gUG9saWN5IFN0dWRpbyBuZWVkcyB0byBmZXRjaCB0aGUgcG9saWN5IHNjaGVtYVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBwb2xpY3kgc2NoZW1hXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5U2NoZW1hRmV0Y2hlcjogUG9saWN5U2NoZW1hRmV0Y2hlciA9ICgpID0+IEVNUFRZO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBQb2xpY3kgU3R1ZGlvIG5lZWRzIHRvIGZldGNoIHRoZSBwb2xpY3kgZG9jdW1lbnRhdGlvblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBwb2xpY3kgZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyOiBQb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlciA9ICgpID0+IEVNUFRZO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3dJbmRleGVzOiBGbG93U2VsZWN0aW9uID0geyBwbGFuSW5kZXg6IDAsIGZsb3dJbmRleDogMCB9O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRGbG93Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rmxvd1NlbGVjdGlvbj4oKTtcblxuICAvKipcbiAgICogUmV0dXJuIHdoYXQgaXMgbmVlZGVkIHRvIHNhdmUuXG4gICAqKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxTYXZlT3V0cHV0PigpO1xuXG4gIHB1YmxpYyBjb25uZWN0b3JzVG9vbHRpcCA9ICcnO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3c/OiBGbG93Vk0gPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdID0gW107XG5cbiAgcHVibGljIGRpc2FibGVTYXZlQnV0dG9uID0gdHJ1ZTtcblxuICBwdWJsaWMgc2F2aW5nID0gZmFsc2U7XG5cbiAgLy8gVXNlZCB0byBrZWVwIHRyYWNrIG9mIGluaXRpYWwgZmxvd3MgZ3JvdXBzIHRvIGtub3cgaWYgdGhlcmUgYXJlIGRlbGV0ZWQgZmxvd3NcbiAgcHJpdmF0ZSBpbml0aWFsRmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10gPSBbXTtcblxuICBwcml2YXRlIGhhc0Zsb3dFeGVjdXRpb25DaGFuZ2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB1blNhdmluZ0J1dHRvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVuYWJsZVNhdmluZ1RpbWVyID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgZ2VuZXJpY1BvbGljaWVzOiBHZW5lcmljUG9saWN5W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBvbGljeVN0dWRpb1NlcnZpY2U6IEdpb1BvbGljeVN0dWRpb1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5lbnRyeXBvaW50c0luZm8gfHwgY2hhbmdlcy5lbmRwb2ludHNJbmZvKSB7XG4gICAgICB0aGlzLmNvbm5lY3RvcnNUb29sdGlwID0gYEVudHJ5cG9pbnRzOiAkeyh0aGlzLmVudHJ5cG9pbnRzSW5mbyA/PyBbXSkubWFwKGUgPT4gZS5uYW1lKS5qb2luKCcsICcpfVxcbkVuZHBvaW50czogJHsoXG4gICAgICAgIHRoaXMuZW5kcG9pbnRzSW5mbyA/PyBbXVxuICAgICAgKVxuICAgICAgICAubWFwKGUgPT4gZS5uYW1lKVxuICAgICAgICAuam9pbignLCAnKX1gO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbW1vbkZsb3dzIHx8IGNoYW5nZXMucGxhbnMgfHwgY2hhbmdlcy5zZWxlY3RlZEZsb3dJbmRleGVzKSB7XG4gICAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmxvd3NHcm91cHMgPSBnZXRGbG93c0dyb3Vwcyh0aGlzLmFwaVR5cGUsIHRoaXMuY29tbW9uRmxvd3MsIHRoaXMucGxhbnMpO1xuICAgICAgdGhpcy5pbml0aWFsRmxvd3NHcm91cHMgPSBjbG9uZURlZXAodGhpcy5mbG93c0dyb3Vwcyk7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxvdyA9IHRoaXMuZmxvd3NHcm91cHNbdGhpcy5zZWxlY3RlZEZsb3dJbmRleGVzPy5wbGFuSW5kZXggPz8gMF0/LmZsb3dzW3RoaXMuc2VsZWN0ZWRGbG93SW5kZXhlcz8uZmxvd0luZGV4ID8/IDBdO1xuXG4gICAgICAvLyBSZXNldCBzYXZpbmcgc3RhdGUgd2hlbiBmbG93c0dyb3VwcyBhcmUgdXBkYXRlZFxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMudW5TYXZpbmdCdXR0b25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucG9saWN5U2NoZW1hRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeVNjaGVtYUZldGNoZXIodGhpcy5wb2xpY3lTY2hlbWFGZXRjaGVyKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5wb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyKHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnBvbGljaWVzIHx8IGNoYW5nZXMuc2hhcmVkUG9saWN5R3JvdXBQb2xpY2llcykge1xuICAgICAgdGhpcy5pbml0R2VuZXJpY1BvbGljaWVzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmxvYWRpbmcgJiYgdGhpcy5sb2FkaW5nICYmICF0aGlzLnNhdmluZykge1xuICAgICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuU2F2aW5nQnV0dG9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRmxvd0V4ZWN1dGlvbkNoYW5nZShmbG93RXhlY3V0aW9uOiBGbG93RXhlY3V0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5oYXNGbG93RXhlY3V0aW9uQ2hhbmdlZCA9ICFpc0VxdWFsKHRoaXMuZmxvd0V4ZWN1dGlvbiwgZmxvd0V4ZWN1dGlvbik7XG4gICAgaWYgKHRoaXMuaGFzRmxvd0V4ZWN1dGlvbkNoYW5nZWQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZVNhdmVCdXR0b24gPSBmYWxzZTtcbiAgICAgIHRoaXMuZmxvd0V4ZWN1dGlvbiA9IGZsb3dFeGVjdXRpb247XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRmxvd3NHcm91cHNDaGFuZ2UoZmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10pOiB2b2lkIHtcbiAgICB0aGlzLmZsb3dzR3JvdXBzID0gY2xvbmVEZWVwKGZsb3dzR3JvdXBzKTtcbiAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG93KSB7XG4gICAgICB0aGlzLm9uU2VsZWN0Rmxvdyh0aGlzLnNlbGVjdGVkRmxvdy5faWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkRmxvd0NoYW5nZShmbG93OiBGbG93Vk0pOiB2b2lkIHtcbiAgICB0aGlzLmZsb3dzR3JvdXBzID0gdGhpcy5mbG93c0dyb3Vwcy5tYXAoZmxvd0dyb3VwID0+ICh7XG4gICAgICAuLi5mbG93R3JvdXAsXG4gICAgICBmbG93czogZmxvd0dyb3VwLmZsb3dzLm1hcChmID0+IChmLl9pZCA9PT0gZmxvdy5faWQgPyBmbG93IDogZikpLFxuICAgIH0pKTtcbiAgICB0aGlzLnNlbGVjdGVkRmxvdyA9IGZsb3c7XG4gICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0RmxvdyhmbG93SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBuZXdQbGFuSW5kZXggPSAwO1xuICAgIGxldCBuZXdGbG93SW5kZXggPSAwO1xuICAgIGZvciAobGV0IGN1cnJlbnRQbGFuSW5kZXggPSAwOyBjdXJyZW50UGxhbkluZGV4IDwgdGhpcy5mbG93c0dyb3Vwcy5sZW5ndGg7IGN1cnJlbnRQbGFuSW5kZXgrKykge1xuICAgICAgY29uc3QgaW5kZXhXaXRoaW5QbGFuID0gdGhpcy5mbG93c0dyb3Vwc1tjdXJyZW50UGxhbkluZGV4XS5mbG93cy5maW5kSW5kZXgoZmxvdyA9PiBmbG93Ll9pZCA9PT0gZmxvd0lkKTtcbiAgICAgIGlmIChpbmRleFdpdGhpblBsYW4gIT09IC0xKSB7XG4gICAgICAgIG5ld1BsYW5JbmRleCA9IGN1cnJlbnRQbGFuSW5kZXg7XG4gICAgICAgIG5ld0Zsb3dJbmRleCA9IGluZGV4V2l0aGluUGxhbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZEZsb3dJbmRleGVzID0geyBwbGFuSW5kZXg6IG5ld1BsYW5JbmRleCwgZmxvd0luZGV4OiBuZXdGbG93SW5kZXggfTtcblxuICAgIHRoaXMuc2VsZWN0ZWRGbG93ID0gdGhpcy5mbG93c0dyb3Vwc1tuZXdQbGFuSW5kZXhdLmZsb3dzW25ld0Zsb3dJbmRleF07XG5cbiAgICB0aGlzLnNlbGVjdGVkRmxvd0NoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkRmxvd0luZGV4ZXMpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlU2VsZWN0ZWRGbG93KGZsb3c6IEZsb3dWTSk6IHZvaWQge1xuICAgIC8vIERlZmluZSBuZXh0IHNlbGVjdGVkIGZsb3cgYW5kIHJlbW92ZSBmbG93IGZyb20gZmxvd3NHcm91cHNcbiAgICBjb25zdCBhbGxGbG93c0lkID0gZmxhdHRlbih0aGlzLmZsb3dzR3JvdXBzLm1hcChmbG93R3JvdXAgPT4gZmxvd0dyb3VwLmZsb3dzKSkubWFwKGYgPT4gZi5faWQpO1xuICAgIGNvbnN0IGZsb3dUb0RlbGV0ZUluZGV4ID0gYWxsRmxvd3NJZC5pbmRleE9mKGZsb3cuX2lkKTtcbiAgICBjb25zdCBuZXh0U2VsZWN0ZWRGbG93SWQgPSBhbGxGbG93c0lkW2Zsb3dUb0RlbGV0ZUluZGV4ICsgMV0gPz8gYWxsRmxvd3NJZFtmbG93VG9EZWxldGVJbmRleCAtIDFdO1xuICAgIHRoaXMuZmxvd3NHcm91cHMgPSB0aGlzLmZsb3dzR3JvdXBzLm1hcChmbG93R3JvdXAgPT4gKHtcbiAgICAgIC4uLmZsb3dHcm91cCxcbiAgICAgIGZsb3dzOiBmbG93R3JvdXAuZmxvd3MuZmlsdGVyKGYgPT4gZi5faWQgIT09IGZsb3cuX2lkKSxcbiAgICB9KSk7XG5cbiAgICB0aGlzLm9uU2VsZWN0RmxvdyhuZXh0U2VsZWN0ZWRGbG93SWQpO1xuXG4gICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICAvLyBFbWl0IGNvbW1vbiBmbG93cyBvbmx5IGlmIHRoZXkgaGF2ZSBiZWVuIHVwZGF0ZWRcbiAgICBjb25zdCBjb21tb25GbG93cyA9IGdldENvbW1vbkZsb3dzT3V0cHV0KHRoaXMuZmxvd3NHcm91cHMsIHRoaXMuaW5pdGlhbEZsb3dzR3JvdXBzKTtcblxuICAgIC8vIEVtaXQgcGxhbnMgb25seSBpZiB0aGV5IGhhdmUgYmVlbiB1cGRhdGVkXG4gICAgY29uc3QgcGxhbnNUb1VwZGF0ZSA9IGdldFBsYW5zQ2hhbmdlT3V0cHV0KHRoaXMuZmxvd3NHcm91cHMsIHRoaXMuaW5pdGlhbEZsb3dzR3JvdXBzKTtcbiAgICB0aGlzLnNhdmUuZW1pdCh7XG4gICAgICAuLi4oY29tbW9uRmxvd3MgPyB7IGNvbW1vbkZsb3dzIH0gOiB7fSksXG4gICAgICAuLi4ocGxhbnNUb1VwZGF0ZSA/IHsgcGxhbnNUb1VwZGF0ZSB9IDoge30pLFxuICAgICAgLi4uKHRoaXMuaGFzRmxvd0V4ZWN1dGlvbkNoYW5nZWQgPyB7IGZsb3dFeGVjdXRpb246IHRoaXMuZmxvd0V4ZWN1dGlvbiB9IDoge30pLFxuICAgIH0pO1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gdHJ1ZTtcblxuICAgIHRoaXMudW5TYXZpbmdCdXR0b25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMuZW5hYmxlU2F2aW5nVGltZXIpIHtcbiAgICAgIHRoaXMudW5TYXZpbmdCdXR0b25TdWJzY3JpcHRpb24gPSB0aW1lcig1MDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0R2VuZXJpY1BvbGljaWVzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJpY1BvbGljaWVzID0gdG9HZW5lcmljUG9saWNpZXModGhpcy5wb2xpY2llcyA/PyBbXSwgdGhpcy5zaGFyZWRQb2xpY3lHcm91cFBvbGljaWVzID8/IFtdKTtcbiAgfVxufVxuXG5jb25zdCBnZXRGbG93c0dyb3VwcyA9IChhcGlUeXBlOiBBcGlUeXBlLCBjb21tb25GbG93czogRmxvd1tdID0gW10sIHBsYW5zOiBQbGFuW10gPSBbXSk6IEZsb3dHcm91cFZNW10gPT4ge1xuICBjb25zdCBjb21tRmxvd3NHcm91cDogRmxvd0dyb3VwVk0gPSB7XG4gICAgX2lkOiAnZmxvd3NHcm91cF9jb21tb25GbG93JyxcbiAgICBfaXNQbGFuOiBmYWxzZSxcbiAgICBuYW1lOiAnQWxsIHBsYW5zJyxcbiAgICBmbG93czogY29tbW9uRmxvd3MubWFwKGZsb3cgPT4gKHsgLi4uZmxvdywgX2lkOiB1bmlxdWVJZCgnZmxvd18nKSwgX2hhc0NoYW5nZWQ6IGZhbHNlLCBfcGFyZW50Rmxvd0dyb3VwTmFtZTogJ0NvbW1vbicgfSkpLFxuICB9O1xuXG4gIHJldHVybiBbXG4gICAgLi4ucGxhbnMubWFwKHBsYW4gPT4gKHtcbiAgICAgIF9pZDogdW5pcXVlSWQoJ2Zsb3dzR3JvdXBfJyksXG4gICAgICBfcGxhbklkOiBwbGFuLmlkLFxuICAgICAgX2lzUGxhbjogdHJ1ZSxcbiAgICAgIG5hbWU6IHBsYW4ubmFtZSxcbiAgICAgIGZsb3dzOiBwbGFuLmZsb3dzLm1hcChmbG93ID0+ICh7IC4uLmZsb3csIF9pZDogdW5pcXVlSWQoJ2Zsb3dfJyksIF9oYXNDaGFuZ2VkOiBmYWxzZSwgX3BhcmVudEZsb3dHcm91cE5hbWU6IHBsYW4ubmFtZSB9KSksXG4gICAgfSkpLFxuICAgIGNvbW1GbG93c0dyb3VwLFxuICBdO1xufTtcblxuY29uc3QgZ2V0Q29tbW9uRmxvd3NPdXRwdXQgPSAoZmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10sIGluaXRpYWxGbG93c0dyb3VwczogRmxvd0dyb3VwVk1bXSk6IEZsb3dbXSB8IG51bGwgPT4ge1xuICBjb25zdCBjb21tb25GbG93c0dyb3VwID0gZmxvd3NHcm91cHMuZmluZChmbG93R3JvdXAgPT4gZmxvd0dyb3VwLl9pZCA9PT0gJ2Zsb3dzR3JvdXBfY29tbW9uRmxvdycpO1xuICBjb25zdCBpbml0aWFsQ29tbW9uRmxvd3NHcm91cCA9IGluaXRpYWxGbG93c0dyb3Vwcy5maW5kKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuX2lkID09PSAnZmxvd3NHcm91cF9jb21tb25GbG93Jyk7XG4gIC8vIENoZWNrIGlmIGNvbW1vbiBmbG93cyBoYXZlIGJlZW4gdXBkYXRlZFxuICBjb25zdCBoYXNDaGFuZ2VkID0gY29tbW9uRmxvd3NHcm91cD8uZmxvd3Muc29tZShmbG93ID0+IGZsb3cuX2hhc0NoYW5nZWQpO1xuXG4gIC8vIENoZWNrIGlmIGNvbW1vbiBmbG93cyBoYXZlIGJlZW4gZGVsZXRlZFxuICBjb25zdCBoYXNEZWxldGVkRmxvdyA9IGRpZmZlcmVuY2VCeShpbml0aWFsQ29tbW9uRmxvd3NHcm91cD8uZmxvd3MgPz8gW10sIGNvbW1vbkZsb3dzR3JvdXA/LmZsb3dzID8/IFtdLCAnX2lkJykubGVuZ3RoID4gMDtcblxuICByZXR1cm4gaGFzQ2hhbmdlZCB8fCBoYXNEZWxldGVkRmxvd1xuICAgID8gKGNvbW1vbkZsb3dzR3JvdXA/LmZsb3dzID8/IFtdKS5tYXAoZmxvdyA9PiBvbWl0KGZsb3csICdfaWQnLCAnX2hhc0NoYW5nZWQnLCAnX3BhcmVudEZsb3dHcm91cE5hbWUnKSlcbiAgICA6IG51bGw7XG59O1xuXG5jb25zdCBnZXRQbGFuc0NoYW5nZU91dHB1dCA9IChmbG93c0dyb3VwczogRmxvd0dyb3VwVk1bXSwgaW5pdGlhbEZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdKTogUGxhbltdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHBsYW5zR3JvdXBzID0gZmxvd3NHcm91cHMuZmlsdGVyKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuX2lkICE9PSAnZmxvd3NHcm91cF9jb21tb25GbG93Jyk7XG4gIGNvbnN0IGluaXRpYWxQbGFuc0dyb3VwcyA9IGluaXRpYWxGbG93c0dyb3Vwcy5maWx0ZXIoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5faWQgIT09ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnKTtcblxuICAvLyBHZXQgcGxhbnMgd2l0aCBjaGFuZ2VkIGZsb3dzXG4gIGNvbnN0IHBsYW5zR3JvdXBzV2l0aENoYW5nZWRGbG93cyA9IHBsYW5zR3JvdXBzLmZpbHRlcihwbGFuID0+IHBsYW4uZmxvd3Muc29tZShmbG93ID0+IGZsb3cuX2hhc0NoYW5nZWQpKTtcblxuICAvLyBHZXQgcGxhbnMgd2l0aCBkZWxldGVkIGZsb3dzXG4gIGNvbnN0IHBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93czogRmxvd0dyb3VwVk1bXSA9IFtdO1xuXG4gIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBkZWxldGVkIGZsb3dzIGluIGluaXRpYWwgaW5pdGlhbFBsYW5zR3JvdXBzXG4gIGluaXRpYWxQbGFuc0dyb3Vwcy5mb3JFYWNoKHBsYW4gPT4ge1xuICAgIGNvbnN0IHBsYW5Hcm91cFRvQ29tcGFyZSA9IHBsYW5zR3JvdXBzLmZpbmQocCA9PiBwLl9wbGFuSWQgPT09IHBsYW4uX3BsYW5JZCk7XG4gICAgaWYgKHBsYW5Hcm91cFRvQ29tcGFyZSAmJiBkaWZmZXJlbmNlQnkocGxhbi5mbG93cywgcGxhbkdyb3VwVG9Db21wYXJlPy5mbG93cyA/PyBbXSwgJ19pZCcpLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBkZWxldGVkIGZsb3dzLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgY29tcGxldGUgcGxhbiB3aXRoIHRoZSBuZXcgZmxvd3NcbiAgICAgIHBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93cy5wdXNoKHBsYW5Hcm91cFRvQ29tcGFyZSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBNZXJnZSBwbGFucyB3aXRoIGNoYW5nZWQgZmxvd3MgYW5kIHBsYW5zIHdpdGggZGVsZXRlZCBmbG93c1xuICBjb25zdCBwbGFuc1dpdGhDaGFuZ2VkRmxvd3NPdXRwdXQgPSB1bmlvbkJ5KFsuLi5wbGFuc0dyb3Vwc1dpdGhDaGFuZ2VkRmxvd3MsIC4uLnBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93c10sICdfcGxhbklkJykubWFwKHBsYW4gPT4gKHtcbiAgICAuLi5vbWl0KHBsYW4sICdfaWQnLCAnX2lzUGxhbicsICdfcGxhbklkJyksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gLS0gcGxhbklkIGlzIGFsd2F5cyBkZWZpbmVkXG4gICAgaWQ6IHBsYW4uX3BsYW5JZCEsXG4gICAgZmxvd3M6IHBsYW4uZmxvd3MubWFwKGZsb3cgPT4gb21pdChmbG93LCAnX2lkJywgJ19oYXNDaGFuZ2VkJywgJ19wYXJlbnRGbG93R3JvdXBOYW1lJykpLFxuICB9KSk7XG5cbiAgcmV0dXJuIHBsYW5zV2l0aENoYW5nZWRGbG93c091dHB1dC5sZW5ndGggPiAwID8gcGxhbnNXaXRoQ2hhbmdlZEZsb3dzT3V0cHV0IDogbnVsbDtcbn07XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19hcGlJbmZvXCIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkaW5nQXBpSW5mb1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ2lvLWJhZGdlLXByaW1hcnlcIj5cbiAgICAgIHt7IGFwaVR5cGUgfCB0aXRsZWNhc2UgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZ2lvLWJhZGdlLW5ldXRyYWxcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiY29ubmVjdG9yc1Rvb2x0aXBcIlxuICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgbWF0VG9vbHRpcENsYXNzPVwiZ2lvLXBvbGljeS1zdHVkaW9fX3Rvb2x0aXAtbGluZS1icmVha1wiXG4gICAgPlxuICAgICAgPG1hdC1pY29uICpuZ0Zvcj1cImxldCBlbnRyeXBvaW50IG9mIGVudHJ5cG9pbnRzSW5mb1wiIGNsYXNzPVwiZ2lvLWxlZnRcIiBbc3ZnSWNvbl09XCJlbnRyeXBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgICAgPG1hdC1pY29uICpuZ0Zvcj1cImxldCBlbmRwb2ludCBvZiBlbmRwb2ludHNJbmZvXCIgY2xhc3M9XCJnaW8tbGVmdFwiIFtzdmdJY29uXT1cImVuZHBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0FwaUluZm8+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fYXBpSW5mb1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJnaW8tYmFkZ2UtcHJpbWFyeVwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZ2lvLWJhZGdlLW5ldXRyYWxcIj4mbmJzcDs8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdiBjbGFzcz1cImhlYWRlcl9fYnRuXCI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIiFzYXZpbmdcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgZGlzYWJsZVNhdmVCdXR0b25cIiAoY2xpY2spPVwib25TYXZlKClcIj5TYXZlPC9idXR0b24+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInNhdmluZ1wiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBkaXNhYmxlZD5TYXZpbmcuLi48L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJfX2Zsb3dzTWVudVwiPlxuICAgIDxnaW8tcHMtZmxvd3MtbWVudVxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICBbZmxvd0V4ZWN1dGlvbl09XCJmbG93RXhlY3V0aW9uXCJcbiAgICAgIFtmbG93c0dyb3Vwc109XCJmbG93c0dyb3Vwc1wiXG4gICAgICBbZW50cnlwb2ludHNdPVwiZW50cnlwb2ludHNJbmZvXCJcbiAgICAgIFtlbnRyeXBvaW50c0luZm9dPVwiZW50cnlwb2ludHNJbmZvXCJcbiAgICAgIChmbG93c0dyb3Vwc0NoYW5nZSk9XCJvbkZsb3dzR3JvdXBzQ2hhbmdlKCRldmVudClcIlxuICAgICAgKGZsb3dFeGVjdXRpb25DaGFuZ2UpPVwib25GbG93RXhlY3V0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgW3NlbGVjdGVkRmxvd0lkXT1cInNlbGVjdGVkRmxvdz8uX2lkXCJcbiAgICAgIChzZWxlY3RlZEZsb3dJZENoYW5nZSk9XCJvblNlbGVjdEZsb3coJGV2ZW50KVwiXG4gICAgICAoZGVsZXRlRmxvdyk9XCJvbkRlbGV0ZVNlbGVjdGVkRmxvdygkZXZlbnQpXCJcbiAgICA+PC9naW8tcHMtZmxvd3MtbWVudT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJfX2Zsb3dEZXRhaWxzXCI+XG4gICAgPGdpby1wcy1mbG93LWRldGFpbHNcbiAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgW2Zsb3ddPVwic2VsZWN0ZWRGbG93XCJcbiAgICAgIFtlbnRyeXBvaW50c0luZm9dPVwiZW50cnlwb2ludHNJbmZvXCJcbiAgICAgIFtlbmRwb2ludHNJbmZvXT1cImVuZHBvaW50c0luZm9cIlxuICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAoZmxvd0NoYW5nZSk9XCJvblNlbGVjdGVkRmxvd0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChkZWxldGVGbG93KT1cIm9uRGVsZXRlU2VsZWN0ZWRGbG93KCRldmVudClcIlxuICAgID48L2dpby1wcy1mbG93LWRldGFpbHM+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -2135,6 +2135,9 @@ class GioPolicyStudioComponent {
2135
2135
  if (changes.policies || changes.sharedPolicyGroupPolicies) {
2136
2136
  this.initGenericPolicies();
2137
2137
  }
2138
+ if (changes.loading && this.loading && !this.saving) {
2139
+ this.saving = true;
2140
+ }
2138
2141
  }
2139
2142
  ngOnDestroy() {
2140
2143
  this.unSavingButtonSubscription?.unsubscribe();
@@ -2199,6 +2202,7 @@ class GioPolicyStudioComponent {
2199
2202
  ...(this.hasFlowExecutionChanged ? { flowExecution: this.flowExecution } : {}),
2200
2203
  });
2201
2204
  this.saving = true;
2205
+ this.disableSaveButton = true;
2202
2206
  this.unSavingButtonSubscription?.unsubscribe();
2203
2207
  if (this.enableSavingTimer) {
2204
2208
  this.unSavingButtonSubscription = timer(5000).subscribe(() => {