@skyux/forms 10.29.0 → 10.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
325
325
  type: HostBinding,
326
326
  args: ['style.display']
327
327
  }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUV4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQU1yRSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUNyQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUVoQzs7Ozs7Ozs7O0dBU0c7QUFVSCxNQUFNLE9BQU8sb0JBQW9CO0lBVGpDO1FBVUU7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRTVEOztX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ZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWVuYWJsZWQtdG9rZW4nO1xuaW1wb3J0IHsgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0tZmllbGQtbGFiZWwtdGV4dC1yZXF1aXJlZC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbSB9IGZyb20gJy4vZmlsZS1pdGVtJztcbmltcG9ydCB7IFNreUZpbGVMaW5rIH0gZnJvbSAnLi9maWxlLWxpbmsnO1xuaW1wb3J0IHsgU2t5RmlsZVZhbGlkYXRlRm4gfSBmcm9tICcuL2ZpbGUtdmFsaWRhdGUtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2t5RmlsZURyb3BDaGFuZ2UgfSBmcm9tICcuL3R5cGVzL2ZpbGUtZHJvcC1jaGFuZ2UnO1xuXG5jb25zdCBNQVhfRklMRV9TSVpFX0RFRkFVTFQgPSA1MDAwMDA7XG5jb25zdCBNSU5fRklMRV9TSVpFX0RFRkFVTFQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGVsZW1lbnQgdG8gYXR0YWNoIG11bHRpcGxlIGZpbGVzIHdoZXJlIHVzZXJzIGNhbiBicm93c2Ugb3IgZHJhZyBhbmQgZHJvcCBsb2NhbCBmaWxlc1xuICogb3IgcHJvdmlkZSBoeXBlcmxpbmtzIHRvIGV4dGVybmFsIGZpbGVzLiBZb3UgY2FuIGxlYXZlIHRoZSBjb250ZW50cyBvZiB0aGUgY29tcG9uZW50XG4gKiBibGFuayB0byBkaXNwbGF5IHRoZSBkcm9wIHpvbmUncyBkZWZhdWx0IFVJLCBvciB5b3UgY2FuIHNwZWNpZnkgY3VzdG9tIGNvbnRlbnQgdG9cbiAqIGRpc3BsYXkgaW5zdGVhZC4gV2hlbiB0aGUgbW9kdWxlIGluaXRpYWxpemVzLCBpdCBkaXNhYmxlcyB0aGUgYWJpbGl0eSB0byBkcmFnIGFuZFxuICogZHJvcCBmaWxlcyBmb3IgdGhlIGVudGlyZSB3aW5kb3cgdG8gcHJldmVudCB0aGUgYnJvd3NlciBmcm9tIG9wZW5pbmcgZmlsZXMgdGhhdCBhcmVcbiAqIGFjY2lkZW50YWxseSBkcm9wcGVkIG91dHNpZGUgdGhlIHRhcmdldCB6b25lLiBJZiB5b3UgaW1wbGVtZW50IHlvdXIgb3duIGZpbGUgZHJvcCBmdW5jdGlvbmFsaXR5XG4gKiBvdXRzaWRlIG9mIHRoZSBmaWxlIGRyb3AgY29tcG9uZW50LCB5b3UgY2FuIHBsYWNlIHRoZSBgc2t5LWZpbGUtZHJvcC10YXJnZXRgIENTUyBjbGFzc1xuICogb24gdGhlIGVsZW1lbnQgdGhhdCByZWNlaXZlcyBkcm9wIGV2ZW50cyB0byBleGVtcHQgaXQgZnJvbSB0aGUgZHJvcCBleGNsdXNpb24gcnVsZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWZpbGUtZHJvcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWRyb3AuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUZpbGVEcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBhZGQgb3IgcmVtb3ZlIGZpbGVzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmaWxlc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUZpbGVEcm9wQ2hhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBsaW5rIGlucHV0IGJveCB0cmlnZ2VycyBhIGJsdXIgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGxpbmtJbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgYWRkIG9yIHJlbW92ZSBsaW5rcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbGlua0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUZpbGVMaW5rPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIGZpbGUgdXBsb2FkIGJ1dHRvbi4gVGhpcyBwcm92aWRlcyBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogc2NyZWVuIHJlYWRlcnMgW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZWZhdWx0IFwiRHJhZyBhIGZpbGUgaGVyZSBvciBjbGljayB0byBicm93c2VcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZpbGVVcGxvYWRBcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSBsaW5rIHVwbG9hZCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBidXR0b24ncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIHNjcmVlbiByZWFkZXJzIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVmYXVsdCBcIkxpbmsgdG8gYSBmaWxlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsaW5rVXBsb2FkQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbkZpbGVTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWluRmlsZVNpemUgPSB2YWx1ZSA/PyBNSU5fRklMRV9TSVpFX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1pbkZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19taW5GaWxlU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBzaXplIGluIGJ5dGVzIGZvciB2YWxpZCBmaWxlcy5cbiAgICogQGRlZmF1bHQgNTAwMDAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEZpbGVTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWF4RmlsZVNpemUgPSB2YWx1ZSA/PyBNQVhfRklMRV9TSVpFX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heEZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhGaWxlU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHVzZXJzIGNhbiBkcmFnIGFuZCBkcm9wIG11bHRpcGxlIGZpbGVzIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb24uIFRoaXMgdmFsaWRhdGlvbiBydW5zIGFsb25nc2lkZSB0aGUgaW50ZXJuYWxcbiAgICogZmlsZSB2YWxpZGF0aW9uLiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgYFNreUZpbGVJdGVtYCBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuXG4gICAqIFRoZSBzdHJpbmcgcmV0dXJuZWQgaXMgdXNlZCBhcyB0aGUgZXJyb3IgbWVzc2FnZSBpbiBtdWx0aS1maWxlIGF0dGFjaG1lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdmFsaWRhdGVGbjogU2t5RmlsZVZhbGlkYXRlRm4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYS1kZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWwgb2YgTUlNRSB0eXBlcyB0aGF0IHVzZXJzIGNhbiBhdHRhY2guXG4gICAqIEJ5IGRlZmF1bHQsIGFsbCBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHRlZFR5cGVzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgb3B0aW9uIHRvIGJyb3dzZSBmb3IgZmlsZXMgdG8gYXR0YWNoLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG5vQ2xpY2s6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IHRoZSBvcHRpb24gdG8gYXR0YWNoIGZpbGVzIGZyb20gVVJMcyByYXRoZXIgdGhhbiBmcm9tIGxvY2FsIGRldmljZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWxsb3dMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBmaWxlIGF0dGFjaG1lbnQncyBsYWJlbC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWRlIGBsYWJlbFRleHRgIGZyb20gdmlldy5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXBsb2FkaW5nIGEgZmlsZSBvciBsaW5rIGlzIHJlcXVpcmVkLlxuICAgKiBXaGVuIHlvdSBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgYWRkcyBgYXJpYS1yZXF1aXJlZGAgYW5kIGByZXF1aXJlZGBcbiAgICogYXR0cmlidXRlcyB0byB0aGUgaW5wdXQgZWxlbWVudHMgc28gdGhhdCBzY3JlZW4gcmVhZGVycyBhbm5vdW5jZSBhbiBpbnZhbGlkIHN0YXRlIHVudGlsIHRoZSBpbnB1dCBlbGVtZW50XG4gICAqIGlzIGNvbXBsZXRlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtcmVxdWlyZWRgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLXJlcXVpcmVkKS5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmlsZSBhdHRhY2htZW50IGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsIHRoZSBhcHByb3ByaWF0ZVxuICAgKiB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGZpbGUgYXR0YWNobWVudC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1tYXJnaW4tc3RhY2tlZC1sZycpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKSBidXR0b24gaXNcbiAgICogcGxhY2VkIGJlc2lkZSB0aGUgZmlsZSBhdHRhY2htZW50IGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgZ2xvYmFsIGhlbHAgYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpXG4gIHB1YmxpYyBpbnB1dEVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gIHB1YmxpYyBkaXNwbGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICBwdWJsaWMgYWNjZXB0ZWRPdmVyID0gZmFsc2U7XG4gIHB1YmxpYyBsaW5rVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI2VudGVyRXZlbnRUYXJnZXQ6IGFueTtcblxuICAjX21heEZpbGVTaXplID0gTUFYX0ZJTEVfU0laRV9ERUZBVUxUO1xuXG4gICNfbWluRmlsZVNpemUgPSBNSU5fRklMRV9TSVpFX0RFRkFVTFQ7XG5cbiAgcmVhZG9ubHkgI2ZpbGVBdHRhY2htZW50U2VydmljZSA9IGluamVjdChTa3lGaWxlQXR0YWNobWVudFNlcnZpY2UpO1xuICByZWFkb25seSAjbGl2ZUFubm91bmNlclN2YyA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG4gIHJlYWRvbmx5ICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5ICNsYWJlbFRleHRSZXF1aXJlZCA9IGluamVjdChTa3lGb3JtRmllbGRMYWJlbFRleHRSZXF1aXJlZFNlcnZpY2UsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGVycm9ySWQgPSB0aGlzLiNpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIHByb3RlY3RlZCByZWplY3RlZEZpbGVzOiBTa3lGaWxlSXRlbVtdID0gW107XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNsYWJlbFRleHRSZXF1aXJlZCAmJiAhdGhpcy5sYWJlbFRleHQpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gICAgdGhpcy4jbGFiZWxUZXh0UmVxdWlyZWQ/LnZhbGlkYXRlTGFiZWxUZXh0KHRoaXMubGFiZWxUZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubGlua0NoYW5nZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLmxpbmtJbnB1dEJsdXIuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkcm9wQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubm9DbGljayAmJiB0aGlzLmlucHV0RWwpIHtcbiAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbGVDaGFuZ2VFdmVudChmaWxlQ2hhbmdlRXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy4jaGFuZGxlRmlsZXMoXG4gICAgICAoZmlsZUNoYW5nZUV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkKT8uZmlsZXMsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJhZ0VudGVyKGRyYWdFbnRlckV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBTYXZlIHRoaXMgdGFyZ2V0IHRvIGtub3cgd2hlbiB0aGUgZHJhZyBldmVudCBsZWF2ZXNcbiAgICB0aGlzLiNlbnRlckV2ZW50VGFyZ2V0ID0gZHJhZ0VudGVyRXZlbnQudGFyZ2V0O1xuICAgIGRyYWdFbnRlckV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGRyYWdFbnRlckV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdPdmVyKGRyYWdPdmVyRXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyID0gZHJhZ092ZXJFdmVudC5kYXRhVHJhbnNmZXI7XG5cbiAgICBkcmFnT3ZlckV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGRyYWdPdmVyRXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmICh0cmFuc2Zlcikge1xuICAgICAgaWYgKHRyYW5zZmVyLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSh0cmFuc2Zlci5pdGVtcyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmlsZS50eXBlICYmXG4gICAgICAgICAgICB0aGlzLiNmaWxlQXR0YWNobWVudFNlcnZpY2UuZmlsZVR5cGVSZWplY3RlZChcbiAgICAgICAgICAgICAgZmlsZS50eXBlLFxuICAgICAgICAgICAgICB0aGlzLmFjY2VwdGVkVHlwZXMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwICYmICF0aGlzLmFjY2VwdGVkT3Zlcikge1xuICAgICAgICAgIHRoaXMucmVqZWN0ZWRPdmVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB1bnRlc3RhYmxlICovIGVsc2UgaWYgKHRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgIC8vIElmIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgRGF0YVRyYW5zZmVyLml0ZW1zLFxuICAgICAgICAvLyBkZWZlciBmaWxlLXR5cGUgY2hlY2tpbmcgdG8gZHJvcCBoYW5kbGVyLlxuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRGF0YVRyYW5zZmVyL2l0ZW1zI0Jyb3dzZXJfY29tcGF0aWJpbGl0eVxuICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbGVEcm9wKGRyb3BFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZHJvcEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGRyb3BFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy4jZW50ZXJFdmVudFRhcmdldCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gZmFsc2U7XG5cbiAgICBpZiAoZHJvcEV2ZW50LmRhdGFUcmFuc2ZlciAmJiBkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICBjb25zdCBoYXNEaXJlY3RvcnkgPSB0aGlzLiNmaWxlQXR0YWNobWVudFNlcnZpY2UuaGFzRGlyZWN0b3J5KFxuICAgICAgICBkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGludmFsaWROdW1iZXJPZkZpbGVzID1cbiAgICAgICAgIXRoaXMubXVsdGlwbGUgJiYgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAxO1xuXG4gICAgICBpZiAoaGFzRGlyZWN0b3J5IHx8IGludmFsaWROdW1iZXJPZkZpbGVzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jaGFuZGxlRmlsZXMoZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbGVEcmFnTGVhdmUoZHJhZ0xlYXZlRXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNlbnRlckV2ZW50VGFyZ2V0ID09PSBkcmFnTGVhdmVFdmVudC50YXJnZXQpIHtcbiAgICAgIHRoaXMucmVqZWN0ZWRPdmVyID0gZmFsc2U7XG4gICAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRMaW5rRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQud2hpY2ggPT09IDEzKSB7XG4gICAgICB0aGlzLmFkZExpbmsoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRMaW5rKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5saW5rQ2hhbmdlZC5lbWl0KHsgdXJsOiB0aGlzLmxpbmtVcmwgfSBhcyBTa3lGaWxlTGluayk7XG4gICAgdGhpcy4jYW5ub3VuY2VTdGF0ZShcbiAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19hZGRlZCcsXG4gICAgICB0aGlzLmxpbmtVcmwsXG4gICAgKTtcbiAgICB0aGlzLmxpbmtVcmwgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25MaW5rQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmxpbmtJbnB1dEJsdXIuZW1pdCgpO1xuICB9XG5cbiAgI2Fubm91bmNlU3RhdGUocmVzb3VyY2VTdHJpbmc6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNvdXJjZXNTdmNcbiAgICAgIC5nZXRTdHJpbmcocmVzb3VyY2VTdHJpbmcsIC4uLmFyZ3MpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoaW50ZXJuYXRpb25hbGl6ZWRTdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy4jbGl2ZUFubm91bmNlclN2Yy5hbm5vdW5jZShpbnRlcm5hdGlvbmFsaXplZFN0cmluZyk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNlbWl0RmlsZUNoYW5nZUV2ZW50KFxuICAgIHRvdGFsRmlsZXM6IG51bWJlcixcbiAgICByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRvdGFsRmlsZXMgPT09IHJlamVjdGVkRmlsZUFycmF5Lmxlbmd0aCArIHZhbGlkRmlsZUFycmF5Lmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh7XG4gICAgICAgIGZpbGVzOiB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgcmVqZWN0ZWRGaWxlczogcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICB9IGFzIFNreUZpbGVEcm9wQ2hhbmdlKTtcblxuICAgICAgaWYgKHRoaXMuaW5wdXRFbCkge1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNmaWxlc1JlamVjdGVkKFxuICAgIGZpbGU6IFNreUZpbGVJdGVtLFxuICAgIHZhbGlkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICAgIHJlamVjdGVkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICAgIHRvdGFsRmlsZXM6IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgcmVqZWN0ZWRGaWxlQXJyYXkucHVzaChmaWxlKTtcbiAgICB0aGlzLiNlbWl0RmlsZUNoYW5nZUV2ZW50KHRvdGFsRmlsZXMsIHJlamVjdGVkRmlsZUFycmF5LCB2YWxpZEZpbGVBcnJheSk7XG4gIH1cblxuICAjbG9hZEZpbGUoXG4gICAgZmlsZURyb3A6IFNreUZpbGVEcm9wQ29tcG9uZW50LFxuICAgIGZpbGU6IFNreUZpbGVJdGVtLFxuICAgIHZhbGlkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICAgIHJlamVjdGVkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICAgIHRvdGFsRmlsZXM6IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGZpbGUudXJsID0gZXZlbnQudGFyZ2V0LnJlc3VsdDtcbiAgICAgIHZhbGlkRmlsZUFycmF5LnB1c2goZmlsZSk7XG4gICAgICBmaWxlRHJvcC4jZW1pdEZpbGVDaGFuZ2VFdmVudChcbiAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgIHZhbGlkRmlsZUFycmF5LFxuICAgICAgKTtcbiAgICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZmlsZV9hZGRlZCcsXG4gICAgICAgIGZpbGUuZmlsZS5uYW1lLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcbiAgICAgIGZpbGVEcm9wLiNmaWxlc1JlamVjdGVkKFxuICAgICAgICBmaWxlLFxuICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4ge1xuICAgICAgZmlsZURyb3AuI2ZpbGVzUmVqZWN0ZWQoXG4gICAgICAgIGZpbGUsXG4gICAgICAgIHZhbGlkRmlsZUFycmF5LFxuICAgICAgICByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlLmZpbGUpO1xuICB9XG5cbiAgI2hhbmRsZUZpbGVzKGZpbGVzPzogRmlsZUxpc3QgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGZpbGVzKSB7XG4gICAgICBjb25zdCB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSA9IFtdO1xuICAgICAgY29uc3QgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHRvdGFsRmlsZXMgPSBmaWxlcy5sZW5ndGg7XG5cbiAgICAgIGNvbnN0IHByb2Nlc3NlZEZpbGVzID0gdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmNoZWNrRmlsZXMoXG4gICAgICAgIGZpbGVzLFxuICAgICAgICB0aGlzLm1pbkZpbGVTaXplLFxuICAgICAgICB0aGlzLm1heEZpbGVTaXplLFxuICAgICAgICB0aGlzLmFjY2VwdGVkVHlwZXMsXG4gICAgICAgIHRoaXMudmFsaWRhdGVGbixcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBwcm9jZXNzZWRGaWxlcykge1xuICAgICAgICBpZiAoZmlsZS5lcnJvclR5cGUpIHtcbiAgICAgICAgICB0aGlzLiNmaWxlc1JlamVjdGVkKFxuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIHZhbGlkRmlsZUFycmF5LFxuICAgICAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy4jbG9hZEZpbGUoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIHZhbGlkRmlsZUFycmF5LFxuICAgICAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWplY3RlZEZpbGVzID0gcmVqZWN0ZWRGaWxlQXJyYXk7XG4gICAgfVxuICB9XG59XG4iLCI8ZmllbGRzZXQ+XG4gIDxsZWdlbmRcbiAgICAqbmdJZj1cImxhYmVsVGV4dFwiXG4gICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbCBza3ktZm9udC1ib2R5LWRlZmF1bHQgc2t5LW1hcmdpbi1zdGFja2VkLXhzXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXNjcmVlbi1yZWFkZXItb25seSc6IGxhYmVsSGlkZGVuXG4gICAgfVwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJza3ktbWFyZ2luLWlubGluZS14c1wiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCc6IHJlcXVpcmVkXG4gICAgICB9XCJcbiAgICAgID57eyBsYWJlbFRleHQgfX08L3NwYW5cbiAgICA+PHNwYW4gY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCIgKm5nSWY9XCJyZXF1aXJlZFwiPnt7XG4gICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X3JlcXVpcmVkJyB8IHNreUxpYlJlc291cmNlc1xuICAgIH19PC9zcGFuXG4gICAgPjxza3ktaGVscC1pbmxpbmVcbiAgICAgICpuZ0lmPVwiaGVscFBvcG92ZXJDb250ZW50IHx8IGhlbHBLZXlcIlxuICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgLz5cbiAgPC9sZWdlbmQ+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1maWxlLWRyb3Atcm93XCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktZmlsZS1kcm9wLWFsbG93LWxpbmtzJzogYWxsb3dMaW5rcyB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb2xcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWZpbGUtZHJvcC1hY2NlcHQnOiBhY2NlcHRlZE92ZXIsXG4gICAgICAgICdza3ktZmlsZS1kcm9wLXJlamVjdCc6IHJlamVjdGVkT3ZlclxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1maWxlLWRyb3Agc2t5LWZpbGUtZHJvcC10YXJnZXRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImRyb3BDbGlja2VkKClcIlxuICAgICAgICAoZHJhZ292ZXIpPVwiZmlsZURyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2VudGVyKT1cImZpbGVEcmFnRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgIChkcmFnbGVhdmUpPVwiZmlsZURyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyb3ApPVwiZmlsZURyb3AoJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgZmlsZVVwbG9hZEFyaWFMYWJlbCB8fFxuICAgICAgICAgICgnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2RyYWdfb3JfY2xpY2snIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhpbnRUZXh0ID8gaGludFRleHRFbC5pZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCIhIXJlamVjdGVkRmlsZXMubGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiXG4gICAgICAgICAgbGFiZWxUZXh0ICYmIHJlamVjdGVkRmlsZXMubGVuZ3RoID8gZXJyb3JJZCA6IHVuZGVmaW5lZFxuICAgICAgICBcIlxuICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1pbnB1dC1oaWRkZW5cIlxuICAgICAgICBbYXR0ci5tdWx0aXBsZV09XCJtdWx0aXBsZSA/IG11bHRpcGxlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFjY2VwdF09XCJhY2NlcHRlZFR5cGVzID8gYWNjZXB0ZWRUeXBlcyA6IG51bGxcIlxuICAgICAgICAoY2hhbmdlKT1cImZpbGVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMgc2t5LXBhZGRpbmctZXZlbi1kZWZhdWx0XCJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21FbC5jaGlsZHJlbi5sZW5ndGggPT09IDBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cy1ub3Qtb3ZlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyIHNreS1mb250LWRpc3BsYXktM1wiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX2ZpbGVfaGVyZSdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX29yX2NsaWNrX3RvX2Jyb3dzZSdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2t5LWljb24gaWNvbj1cImNsb3VkLXVwbG9hZFwiIGNsYXNzPVwic2t5LWZpbGUtdXBsb2FkLWljb25cIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRoaXMgd2lsbCBhcHBlYXIgd2hlbiBmaWxlIGlzIGRyYWdnZWQgb3ZlciBhbmQgaXMgdmFsaWQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLWFjY2VwdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyIHNreS1mb250LWRpc3BsYXktM1wiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcm9wX2ZpbGVzX2hlcmUnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJidWxsc2V5ZVwiIGNsYXNzPVwic2t5LWZpbGUtdXBsb2FkLWljb25cIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRoaXMgd2lsbCBhcHBlYXIgd2hlbiBmaWxlIGlzIGRyYWdnZWQgb3ZlciBhbmQgaXMgaW52YWxpZCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtcmVqZWN0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dC1oZWFkZXIgc2t5LWZvbnQtZGlzcGxheS0zXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJ0aW1lcy1jaXJjbGVcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtY3VzdG9tXCIgI2N1c3RvbUVsPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29sXCIgKm5nSWY9XCJhbGxvd0xpbmtzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cyBza3ktcGFkZGluZy1ldmVuLWRlZmF1bHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtbGlua1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWxpbmstaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTNcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LW1hcmdpbi1zdGFja2VkLXhzXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGxpbmtVcGxvYWRBcmlhTGFiZWwgfHxcbiAgICAgICAgICAgICAgICAoJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwidXBsb2FkSGludFRleHQuaWRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiISFyZWplY3RlZEZpbGVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIlxuICAgICAgICAgICAgICAgIGxhYmVsVGV4dCAmJiByZWplY3RlZEZpbGVzLmxlbmd0aCA/IGVycm9ySWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsaW5rVXJsXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25MaW5rQmx1cigpXCJcbiAgICAgICAgICAgICAgKGtleXVwKT1cImFkZExpbmtFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgc2t5SWRcbiAgICAgICAgICAgICN1cGxvYWRIaW50VGV4dD1cInNreUlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1maWxlLWRyb3AtaGludC10ZXh0IHNreS1tYXJnaW4tc3RhY2tlZC1zbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tcHJpbWFyeVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWxpbmtVcmxcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZExpbmsoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2RvbmUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBza3lJZCAjaGludFRleHRFbD1cInNreUlkXCI+XG4gICAgPGRpdiAqbmdJZj1cImhpbnRUZXh0XCIgY2xhc3M9XCJza3ktZm9udC1kZWVtcGhhc2l6ZWQgc2t5LWZpbGUtZHJvcC1oaW50LXRleHRcIj5cbiAgICAgIHt7IGhpbnRUZXh0IH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9maWVsZHNldD5cbjxza3ktZm9ybS1lcnJvcnNcbiAgKm5nSWY9XCJsYWJlbFRleHQgJiYgcmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuICBjbGFzcz1cInNreS1maWxlLWRyb3AtZXJyb3JzXCJcbiAgW2lkXT1cImVycm9ySWRcIlxuICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gIFtzaG93RXJyb3JzXT1cInJlamVjdGVkRmlsZXMubGVuZ3RoXCJcbj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgcmVqZWN0ZWRGaWxlIG9mIHJlamVjdGVkRmlsZXNcIj5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwicmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ2ZpbGVUeXBlJ1wiXG4gICAgICBlcnJvck5hbWU9XCJmaWxlVHlwZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdHlwZV9lcnJvcl9sYWJlbF90ZXh0X3dpdGhfbmFtZSdcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogcmVqZWN0ZWRGaWxlLmZpbGUubmFtZSA6IHJlamVjdGVkRmlsZS5lcnJvclBhcmFtXG4gICAgICBcIlxuICAgIC8+XG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cInJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICdtYXhGaWxlU2l6ZSdcIlxuICAgICAgZXJyb3JOYW1lPVwibWF4RmlsZVNpemVcIlxuICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9tYXhfZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiByZWplY3RlZEZpbGUuZmlsZS5uYW1lIDogcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cbiAgICAgIFwiXG4gICAgLz5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwicmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ21pbkZpbGVTaXplJ1wiXG4gICAgICBlcnJvck5hbWU9XCJtaW5GaWxlU2l6ZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X21pbl9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IHJlamVjdGVkRmlsZS5maWxlLm5hbWUgOiByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVxuICAgICAgXCJcbiAgICAvPlxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJyZWplY3RlZEZpbGUuZXJyb3JUeXBlID09PSAndmFsaWRhdGUnICYmIHJlamVjdGVkRmlsZS5lcnJvclBhcmFtXCJcbiAgICAgIGVycm9yTmFtZT1cInZhbGlkYXRlXCJcbiAgICAgIFtlcnJvclRleHRdPVwicmVqZWN0ZWRGaWxlLmZpbGUubmFtZSArICc6ICcgKyByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3NreS1mb3JtLWVycm9ycz5cbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUV4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQU1yRSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUNyQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUVoQzs7Ozs7Ozs7O0dBU0c7QUFVSCxNQUFNLE9BQU8sb0JBQW9CO0lBVGpDO1FBVUU7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRTVEOztX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ZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWVuYWJsZWQtdG9rZW4nO1xuaW1wb3J0IHsgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0tZmllbGQtbGFiZWwtdGV4dC1yZXF1aXJlZC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbSB9IGZyb20gJy4vZmlsZS1pdGVtJztcbmltcG9ydCB7IFNreUZpbGVMaW5rIH0gZnJvbSAnLi9maWxlLWxpbmsnO1xuaW1wb3J0IHsgU2t5RmlsZVZhbGlkYXRlRm4gfSBmcm9tICcuL2ZpbGUtdmFsaWRhdGUtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2t5RmlsZURyb3BDaGFuZ2UgfSBmcm9tICcuL3R5cGVzL2ZpbGUtZHJvcC1jaGFuZ2UnO1xuXG5jb25zdCBNQVhfRklMRV9TSVpFX0RFRkFVTFQgPSA1MDAwMDA7XG5jb25zdCBNSU5fRklMRV9TSVpFX0RFRkFVTFQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGVsZW1lbnQgdG8gYXR0YWNoIG11bHRpcGxlIGZpbGVzIHdoZXJlIHVzZXJzIGNhbiBicm93c2Ugb3IgZHJhZyBhbmQgZHJvcCBsb2NhbCBmaWxlc1xuICogb3IgcHJvdmlkZSBoeXBlcmxpbmtzIHRvIGV4dGVybmFsIGZpbGVzLiBZb3UgY2FuIGxlYXZlIHRoZSBjb250ZW50cyBvZiB0aGUgY29tcG9uZW50XG4gKiBibGFuayB0byBkaXNwbGF5IHRoZSBkcm9wIHpvbmUncyBkZWZhdWx0IFVJLCBvciB5b3UgY2FuIHNwZWNpZnkgY3VzdG9tIGNvbnRlbnQgdG9cbiAqIGRpc3BsYXkgaW5zdGVhZC4gV2hlbiB0aGUgbW9kdWxlIGluaXRpYWxpemVzLCBpdCBkaXNhYmxlcyB0aGUgYWJpbGl0eSB0byBkcmFnIGFuZFxuICogZHJvcCBmaWxlcyBmb3IgdGhlIGVudGlyZSB3aW5kb3cgdG8gcHJldmVudCB0aGUgYnJvd3NlciBmcm9tIG9wZW5pbmcgZmlsZXMgdGhhdCBhcmVcbiAqIGFjY2lkZW50YWxseSBkcm9wcGVkIG91dHNpZGUgdGhlIHRhcmdldCB6b25lLiBJZiB5b3UgaW1wbGVtZW50IHlvdXIgb3duIGZpbGUgZHJvcCBmdW5jdGlvbmFsaXR5XG4gKiBvdXRzaWRlIG9mIHRoZSBmaWxlIGRyb3AgY29tcG9uZW50LCB5b3UgY2FuIHBsYWNlIHRoZSBgc2t5LWZpbGUtZHJvcC10YXJnZXRgIENTUyBjbGFzc1xuICogb24gdGhlIGVsZW1lbnQgdGhhdCByZWNlaXZlcyBkcm9wIGV2ZW50cyB0byBleGVtcHQgaXQgZnJvbSB0aGUgZHJvcCBleGNsdXNpb24gcnVsZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWZpbGUtZHJvcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWRyb3AuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUZpbGVEcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBhZGQgb3IgcmVtb3ZlIGZpbGVzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmaWxlc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUZpbGVEcm9wQ2hhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBsaW5rIGlucHV0IGJveCB0cmlnZ2VycyBhIGJsdXIgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGxpbmtJbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgYWRkIG9yIHJlbW92ZSBsaW5rcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbGlua0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUZpbGVMaW5rPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIGZpbGUgdXBsb2FkIGJ1dHRvbi4gVGhpcyBwcm92aWRlcyBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogc2NyZWVuIHJlYWRlcnMgW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZWZhdWx0IFwiRHJhZyBhIGZpbGUgaGVyZSBvciBjbGljayB0byBicm93c2VcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZpbGVVcGxvYWRBcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSBsaW5rIHVwbG9hZCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBidXR0b24ncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIHNjcmVlbiByZWFkZXJzIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVmYXVsdCBcIkxpbmsgdG8gYSBmaWxlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsaW5rVXBsb2FkQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbkZpbGVTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWluRmlsZVNpemUgPSB2YWx1ZSA/PyBNSU5fRklMRV9TSVpFX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1pbkZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19taW5GaWxlU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBzaXplIGluIGJ5dGVzIGZvciB2YWxpZCBmaWxlcy5cbiAgICogQGRlZmF1bHQgNTAwMDAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEZpbGVTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWF4RmlsZVNpemUgPSB2YWx1ZSA/PyBNQVhfRklMRV9TSVpFX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heEZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhGaWxlU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHVzZXJzIGNhbiBkcmFnIGFuZCBkcm9wIG11bHRpcGxlIGZpbGVzIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb24uIFRoaXMgdmFsaWRhdGlvbiBydW5zIGFsb25nc2lkZSB0aGUgaW50ZXJuYWxcbiAgICogZmlsZSB2YWxpZGF0aW9uLiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgYFNreUZpbGVJdGVtYCBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuXG4gICAqIFRoZSBzdHJpbmcgcmV0dXJuZWQgaXMgdXNlZCBhcyB0aGUgZXJyb3IgbWVzc2FnZSBpbiBtdWx0aS1maWxlIGF0dGFjaG1lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdmFsaWRhdGVGbjogU2t5RmlsZVZhbGlkYXRlRm4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYS1kZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWwgb2YgTUlNRSB0eXBlcyB0aGF0IHVzZXJzIGNhbiBhdHRhY2guXG4gICAqIEJ5IGRlZmF1bHQsIGFsbCBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHRlZFR5cGVzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgb3B0aW9uIHRvIGJyb3dzZSBmb3IgZmlsZXMgdG8gYXR0YWNoLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG5vQ2xpY2s6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IHRoZSBvcHRpb24gdG8gYXR0YWNoIGZpbGVzIGZyb20gVVJMcyByYXRoZXIgdGhhbiBmcm9tIGxvY2FsIGRldmljZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWxsb3dMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBmaWxlIGF0dGFjaG1lbnQncyBsYWJlbC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWRlIGBsYWJlbFRleHRgIGZyb20gdmlldy5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXBsb2FkaW5nIGEgZmlsZSBvciBsaW5rIGlzIHJlcXVpcmVkLlxuICAgKiBXaGVuIHlvdSBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgYWRkcyBgYXJpYS1yZXF1aXJlZGAgYW5kIGByZXF1aXJlZGBcbiAgICogYXR0cmlidXRlcyB0byB0aGUgaW5wdXQgZWxlbWVudHMgc28gdGhhdCBzY3JlZW4gcmVhZGVycyBhbm5vdW5jZSBhbiBpbnZhbGlkIHN0YXRlIHVudGlsIHRoZSBpbnB1dCBlbGVtZW50XG4gICAqIGlzIGNvbXBsZXRlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtcmVxdWlyZWRgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLXJlcXVpcmVkKS5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmlsZSBhdHRhY2htZW50IGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsIHRoZSBhcHByb3ByaWF0ZVxuICAgKiB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGZpbGUgYXR0YWNobWVudC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1tYXJnaW4tc3RhY2tlZC1sZycpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgZmlsZSBhdHRhY2htZW50IGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKVxuICBwdWJsaWMgaW5wdXRFbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKVxuICBwdWJsaWMgZGlzcGxheTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgcHVibGljIGFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICBwdWJsaWMgbGlua1VybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNlbnRlckV2ZW50VGFyZ2V0OiBhbnk7XG5cbiAgI19tYXhGaWxlU2l6ZSA9IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcblxuICAjX21pbkZpbGVTaXplID0gTUlOX0ZJTEVfU0laRV9ERUZBVUxUO1xuXG4gIHJlYWRvbmx5ICNmaWxlQXR0YWNobWVudFNlcnZpY2UgPSBpbmplY3QoU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2xpdmVBbm5vdW5jZXJTdmMgPSBpbmplY3QoU2t5TGl2ZUFubm91bmNlclNlcnZpY2UpO1xuICByZWFkb25seSAjcmVzb3VyY2VzU3ZjID0gaW5qZWN0KFNreUxpYlJlc291cmNlc1NlcnZpY2UpO1xuICByZWFkb25seSAjaWRTdmMgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcblxuICByZWFkb25seSAjbGFiZWxUZXh0UmVxdWlyZWQgPSBpbmplY3QoU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICBwcm90ZWN0ZWQgcmVqZWN0ZWRGaWxlczogU2t5RmlsZUl0ZW1bXSA9IFtdO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbGFiZWxUZXh0UmVxdWlyZWQgJiYgIXRoaXMubGFiZWxUZXh0KSB7XG4gICAgICB0aGlzLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuICAgIHRoaXMuI2xhYmVsVGV4dFJlcXVpcmVkPy52YWxpZGF0ZUxhYmVsVGV4dCh0aGlzLmxhYmVsVGV4dCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5maWxlc0NoYW5nZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLmxpbmtDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5saW5rSW5wdXRCbHVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZHJvcENsaWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm5vQ2xpY2sgJiYgdGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlQ2hhbmdlRXZlbnQoZmlsZUNoYW5nZUV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuI2hhbmRsZUZpbGVzKFxuICAgICAgKGZpbGVDaGFuZ2VFdmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCk/LmZpbGVzLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdFbnRlcihkcmFnRW50ZXJFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgLy8gU2F2ZSB0aGlzIHRhcmdldCB0byBrbm93IHdoZW4gdGhlIGRyYWcgZXZlbnQgbGVhdmVzXG4gICAgdGhpcy4jZW50ZXJFdmVudFRhcmdldCA9IGRyYWdFbnRlckV2ZW50LnRhcmdldDtcbiAgICBkcmFnRW50ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnRW50ZXJFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGZpbGVEcmFnT3ZlcihkcmFnT3ZlckV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlciA9IGRyYWdPdmVyRXZlbnQuZGF0YVRyYW5zZmVyO1xuXG4gICAgZHJhZ092ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnT3ZlckV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAodHJhbnNmZXIpIHtcbiAgICAgIGlmICh0cmFuc2Zlci5pdGVtcykge1xuICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odHJhbnNmZXIuaXRlbXMpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpbGUudHlwZSAmJlxuICAgICAgICAgICAgdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmZpbGVUeXBlUmVqZWN0ZWQoXG4gICAgICAgICAgICAgIGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5hY2NlcHRlZE92ZXIpIHtcbiAgICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdW50ZXN0YWJsZSAqLyBlbHNlIGlmICh0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAvLyBJZiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IERhdGFUcmFuc2Zlci5pdGVtcyxcbiAgICAgICAgLy8gZGVmZXIgZmlsZS10eXBlIGNoZWNraW5nIHRvIGRyb3AgaGFuZGxlci5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RhdGFUcmFuc2Zlci9pdGVtcyNCcm93c2VyX2NvbXBhdGliaWxpdHlcbiAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJvcChkcm9wRXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGRyb3BFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcm9wRXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuI2VudGVyRXZlbnRUYXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuXG4gICAgaWYgKGRyb3BFdmVudC5kYXRhVHJhbnNmZXIgJiYgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcykge1xuICAgICAgY29uc3QgaGFzRGlyZWN0b3J5ID0gdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmhhc0RpcmVjdG9yeShcbiAgICAgICAgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyxcbiAgICAgICk7XG4gICAgICBjb25zdCBpbnZhbGlkTnVtYmVyT2ZGaWxlcyA9XG4gICAgICAgICF0aGlzLm11bHRpcGxlICYmIGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID4gMTtcblxuICAgICAgaWYgKGhhc0RpcmVjdG9yeSB8fCBpbnZhbGlkTnVtYmVyT2ZGaWxlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2hhbmRsZUZpbGVzKGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJhZ0xlYXZlKGRyYWdMZWF2ZUV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZW50ZXJFdmVudFRhcmdldCA9PT0gZHJhZ0xlYXZlRXZlbnQudGFyZ2V0KSB7XG4gICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkTGlua0VudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LndoaWNoID09PSAxMykge1xuICAgICAgdGhpcy5hZGRMaW5rKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkTGluayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMubGlua0NoYW5nZWQuZW1pdCh7IHVybDogdGhpcy5saW5rVXJsIH0gYXMgU2t5RmlsZUxpbmspO1xuICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfYWRkZWQnLFxuICAgICAgdGhpcy5saW5rVXJsLFxuICAgICk7XG4gICAgdGhpcy5saW5rVXJsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIG9uTGlua0JsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5saW5rSW5wdXRCbHVyLmVtaXQoKTtcbiAgfVxuXG4gICNhbm5vdW5jZVN0YXRlKHJlc291cmNlU3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjXG4gICAgICAuZ2V0U3RyaW5nKHJlc291cmNlU3RyaW5nLCAuLi5hcmdzKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGludGVybmF0aW9uYWxpemVkU3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuI2xpdmVBbm5vdW5jZXJTdmMuYW5ub3VuY2UoaW50ZXJuYXRpb25hbGl6ZWRTdHJpbmcpO1xuICAgICAgfSk7XG4gIH1cblxuICAjZW1pdEZpbGVDaGFuZ2VFdmVudChcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICAgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICk6IHZvaWQge1xuICAgIGlmICh0b3RhbEZpbGVzID09PSByZWplY3RlZEZpbGVBcnJheS5sZW5ndGggKyB2YWxpZEZpbGVBcnJheS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBmaWxlczogdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZXM6IHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgfSBhcyBTa3lGaWxlRHJvcENoYW5nZSk7XG5cbiAgICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjZmlsZXNSZWplY3RlZChcbiAgICBmaWxlOiBTa3lGaWxlSXRlbSxcbiAgICB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIHJlamVjdGVkRmlsZUFycmF5LnB1c2goZmlsZSk7XG4gICAgdGhpcy4jZW1pdEZpbGVDaGFuZ2VFdmVudCh0b3RhbEZpbGVzLCByZWplY3RlZEZpbGVBcnJheSwgdmFsaWRGaWxlQXJyYXkpO1xuICB9XG5cbiAgI2xvYWRGaWxlKFxuICAgIGZpbGVEcm9wOiBTa3lGaWxlRHJvcENvbXBvbmVudCxcbiAgICBmaWxlOiBTa3lGaWxlSXRlbSxcbiAgICB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIChldmVudDogYW55KSA9PiB7XG4gICAgICBmaWxlLnVybCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7XG4gICAgICB2YWxpZEZpbGVBcnJheS5wdXNoKGZpbGUpO1xuICAgICAgZmlsZURyb3AuI2VtaXRGaWxlQ2hhbmdlRXZlbnQoXG4gICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICk7XG4gICAgICB0aGlzLiNhbm5vdW5jZVN0YXRlKFxuICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ZpbGVfYWRkZWQnLFxuICAgICAgICBmaWxlLmZpbGUubmFtZSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICBmaWxlRHJvcC4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHtcbiAgICAgIGZpbGVEcm9wLiNmaWxlc1JlamVjdGVkKFxuICAgICAgICBmaWxlLFxuICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZS5maWxlKTtcbiAgfVxuXG4gICNoYW5kbGVGaWxlcyhmaWxlcz86IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChmaWxlcykge1xuICAgICAgY29uc3QgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHJlamVjdGVkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdID0gW107XG4gICAgICBjb25zdCB0b3RhbEZpbGVzID0gZmlsZXMubGVuZ3RoO1xuXG4gICAgICBjb25zdCBwcm9jZXNzZWRGaWxlcyA9IHRoaXMuI2ZpbGVBdHRhY2htZW50U2VydmljZS5jaGVja0ZpbGVzKFxuICAgICAgICBmaWxlcyxcbiAgICAgICAgdGhpcy5taW5GaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5tYXhGaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICB0aGlzLnZhbGlkYXRlRm4sXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgcHJvY2Vzc2VkRmlsZXMpIHtcbiAgICAgICAgaWYgKGZpbGUuZXJyb3JUeXBlKSB7XG4gICAgICAgICAgdGhpcy4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI2xvYWRGaWxlKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVqZWN0ZWRGaWxlcyA9IHJlamVjdGVkRmlsZUFycmF5O1xuICAgIH1cbiAgfVxufVxuIiwiPGZpZWxkc2V0PlxuICA8bGVnZW5kXG4gICAgKm5nSWY9XCJsYWJlbFRleHRcIlxuICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWwgc2t5LWZvbnQtYm9keS1kZWZhdWx0IHNreS1tYXJnaW4tc3RhY2tlZC14c1wiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBsYWJlbEhpZGRlblxuICAgIH1cIlxuICA+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwic2t5LW1hcmdpbi1pbmxpbmUteHNcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiByZXF1aXJlZFxuICAgICAgfVwiXG4gICAgICA+e3sgbGFiZWxUZXh0IH19PC9zcGFuXG4gICAgPjxzcGFuIGNsYXNzPVwic2t5LXNjcmVlbi1yZWFkZXItb25seVwiICpuZ0lmPVwicmVxdWlyZWRcIj57e1xuICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9yZXF1aXJlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICB9fTwvc3BhblxuICAgID48c2t5LWhlbHAtaW5saW5lXG4gICAgICAqbmdJZj1cImhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5XCJcbiAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgIC8+XG4gIDwvbGVnZW5kPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXJvd1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWZpbGUtZHJvcC1hbGxvdy1saW5rcyc6IGFsbG93TGlua3MgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1maWxlLWRyb3AtY29sXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1maWxlLWRyb3AtYWNjZXB0JzogYWNjZXB0ZWRPdmVyLFxuICAgICAgICAnc2t5LWZpbGUtZHJvcC1yZWplY3QnOiByZWplY3RlZE92ZXJcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wIHNreS1maWxlLWRyb3AtdGFyZ2V0XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJkcm9wQ2xpY2tlZCgpXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cImZpbGVEcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdlbnRlcik9XCJmaWxlRHJhZ0VudGVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cImZpbGVEcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgIChkcm9wKT1cImZpbGVEcm9wKCRldmVudClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIGZpbGVVcGxvYWRBcmlhTGFiZWwgfHxcbiAgICAgICAgICAoJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX29yX2NsaWNrJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiISFyZWplY3RlZEZpbGVzLmxlbmd0aFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIlxuICAgICAgICAgIGxhYmVsVGV4dCAmJiByZWplY3RlZEZpbGVzLmxlbmd0aCA/IGVycm9ySWQgOiB1bmRlZmluZWRcbiAgICAgICAgXCJcbiAgICAgID48L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGNsYXNzPVwic2t5LWZpbGUtaW5wdXQtaGlkZGVuXCJcbiAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGUgPyBtdWx0aXBsZSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0ZWRUeXBlcyA/IGFjY2VwdGVkVHlwZXMgOiBudWxsXCJcbiAgICAgICAgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzIHNreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdFwiXG4gICAgICAgICpuZ0lmPVwiY3VzdG9tRWwuY2hpbGRyZW4ubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtbm90LW92ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTNcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJhZ19maWxlX2hlcmUnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9vcl9jbGlja190b19icm93c2UnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJjbG91ZC11cGxvYWRcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaGlzIHdpbGwgYXBwZWFyIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIG92ZXIgYW5kIGlzIHZhbGlkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cy1hY2NlcHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTNcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJvcF9maWxlc19oZXJlJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwiYnVsbHNleWVcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaGlzIHdpbGwgYXBwZWFyIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIG92ZXIgYW5kIGlzIGludmFsaWQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLXJlamVjdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyIHNreS1mb250LWRpc3BsYXktM1wiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwidGltZXMtY2lyY2xlXCIgY2xhc3M9XCJza3ktZmlsZS11cGxvYWQtaWNvblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLWN1c3RvbVwiICNjdXN0b21FbD5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbFwiICpuZ0lmPVwiYWxsb3dMaW5rc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMgc2t5LXBhZGRpbmctZXZlbi1kZWZhdWx0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWxpbmtcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1saW5rLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dC1oZWFkZXIgc2t5LWZvbnQtZGlzcGxheS0zXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2xhYmVsJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1tYXJnaW4tc3RhY2tlZC14c1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICBsaW5rVXBsb2FkQXJpYUxhYmVsIHx8XG4gICAgICAgICAgICAgICAgKCdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19sYWJlbCdcbiAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInVwbG9hZEhpbnRUZXh0LmlkXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiEhcmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJcbiAgICAgICAgICAgICAgICBsYWJlbFRleHQgJiYgcmVqZWN0ZWRGaWxlcy5sZW5ndGggPyBlcnJvcklkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibGlua1VybFwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uTGlua0JsdXIoKVwiXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJhZGRMaW5rRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHNreUlkXG4gICAgICAgICAgICAjdXBsb2FkSGludFRleHQ9XCJza3lJZFwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktZmlsZS1kcm9wLWhpbnQtdGV4dCBza3ktbWFyZ2luLXN0YWNrZWQtc21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFsaW5rVXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRMaW5rKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19kb25lJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgc2t5SWQgI2hpbnRUZXh0RWw9XCJza3lJZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJoaW50VGV4dFwiIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1maWxlLWRyb3AtaGludC10ZXh0XCI+XG4gICAgICB7eyBoaW50VGV4dCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZmllbGRzZXQ+XG48c2t5LWZvcm0tZXJyb3JzXG4gICpuZ0lmPVwibGFiZWxUZXh0ICYmIHJlamVjdGVkRmlsZXMubGVuZ3RoXCJcbiAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWVycm9yc1wiXG4gIFtpZF09XCJlcnJvcklkXCJcbiAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICBbc2hvd0Vycm9yc109XCJyZWplY3RlZEZpbGVzLmxlbmd0aFwiXG4+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHJlamVjdGVkRmlsZSBvZiByZWplY3RlZEZpbGVzXCI+XG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cInJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICdmaWxlVHlwZSdcIlxuICAgICAgZXJyb3JOYW1lPVwiZmlsZVR5cGVcIlxuICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3R5cGVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IHJlamVjdGVkRmlsZS5maWxlLm5hbWUgOiByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVxuICAgICAgXCJcbiAgICAvPlxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJyZWplY3RlZEZpbGUuZXJyb3JUeXBlID09PSAnbWF4RmlsZVNpemUnXCJcbiAgICAgIGVycm9yTmFtZT1cIm1heEZpbGVTaXplXCJcbiAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfbWF4X2ZpbGVfc2l6ZV9lcnJvcl9sYWJlbF90ZXh0X3dpdGhfbmFtZSdcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogcmVqZWN0ZWRGaWxlLmZpbGUubmFtZSA6IHJlamVjdGVkRmlsZS5lcnJvclBhcmFtXG4gICAgICBcIlxuICAgIC8+XG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cInJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICdtaW5GaWxlU2l6ZSdcIlxuICAgICAgZXJyb3JOYW1lPVwibWluRmlsZVNpemVcIlxuICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9taW5fZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiByZWplY3RlZEZpbGUuZmlsZS5uYW1lIDogcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cbiAgICAgIFwiXG4gICAgLz5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwicmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ3ZhbGlkYXRlJyAmJiByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVwiXG4gICAgICBlcnJvck5hbWU9XCJ2YWxpZGF0ZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cInJlamVjdGVkRmlsZS5maWxlLm5hbWUgKyAnOiAnICsgcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9za3ktZm9ybS1lcnJvcnM+XG4iXX0=
@@ -277,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
277
277
  read: ElementRef,
278
278
  }]
279
279
  }] } });
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvaW5wdXQtYm94L2lucHV0LWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2lucHV0LWJveC9pbnB1dC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxFQUVULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixPQUFPLEVBRVAsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXhHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7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QUFlLGFBR2Q7d0JBQ1Qsc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLHNCQUFzQjt3QkFDdEI7NEJBQ0UsT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7cUJBQ0YsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs4QkFzQjlCLFNBQVM7c0JBRGYsS0FBSztnQkFjQyxRQUFRO3NCQURkLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixLQUFLO2dCQVFLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBaUJLLE9BQU87c0JBRGpCLEtBQUs7Z0JBV0MsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVNDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFTQyxPQUFPO3NCQURiLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkE0Q0MsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBSWIsT0FBTztzQkFEYixXQUFXO3VCQUFDLGVBQWU7Z0JBSXJCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUkzQixpQkFBaUI7c0JBRHZCLFlBQVk7dUJBQUMsZUFBZTtnQkFJdEIsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBTWQsUUFBUTtzQkFIZCxZQUFZO3VCQUFDLDJCQUEyQixFQUFFO3dCQUN6QyxJQUFJLEVBQUUsVUFBVTtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCb29sZWFuSW5wdXQsXG4gIE51bWJlcklucHV0LFxuICBjb2VyY2VCb29sZWFuUHJvcGVydHksXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxufSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUsXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICBGb3JtQ29udHJvbE5hbWUsXG4gIE5nTW9kZWwsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDb250ZW50SW5mb1Byb3ZpZGVyLCBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWVuYWJsZWQtdG9rZW4nO1xuaW1wb3J0IHsgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0tZmllbGQtbGFiZWwtdGV4dC1yZXF1aXJlZC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5SW5wdXRCb3hBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vaW5wdXQtYm94LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2lucHV0LWJveC1jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnLi9pbnB1dC1ib3gtaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUlucHV0Qm94UG9wdWxhdGVBcmdzIH0gZnJvbSAnLi9pbnB1dC1ib3gtcG9wdWxhdGUtYXJncyc7XG5cbi8qKlxuICogQSB3cmFwcGVyIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIHN0eWxpbmcgYW5kIGFjY2Vzc2liaWxpdHkgdG8gZm9ybSBlbGVtZW50cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWlucHV0LWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5Q29udGVudEluZm9Qcm92aWRlcixcbiAgICBTa3lJbnB1dEJveEFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gICAgICB1c2VWYWx1ZTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICAvLyBOb3RlIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBpcyBub3Qgc2V0IHRvIE9uUHVzaDsgZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0aW9uIGFsbG93cyB0aGVcbiAgLy8gaW52YWxpZCBDU1MgY2xhc3MgdG8gYmUgYWRkZWQgd2hlbiB0aGUgY29udGVudCBjb250cm9sJ3MgaW52YWxpZC9kaXJ0eSBzdGF0ZSBjaGFuZ2VzLlxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lJbnB1dEJveENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25EZXN0cm95XG57XG4gICNjaGFuZ2VSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAjaW5wdXRCb3hIb3N0U3ZjID0gaW5qZWN0KFNreUlucHV0Qm94SG9zdFNlcnZpY2UpO1xuICAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5SW5wdXRCb3hBZGFwdGVyU2VydmljZSk7XG4gICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgcmVhZG9ubHkgI2xhYmVsVGV4dFJlcXVpcmVkID0gaW5qZWN0KFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2aXN1YWxseSBoaWdobGlnaHQgdGhlIGlucHV0IGJveCBpbiBhbiBlcnJvciBzdGF0ZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGlucHV0IGJveFxuICAgKiBkaXNwbGF5cyBpbiBhbiBlcnJvciBzdGF0ZSB3aGVuIGVpdGhlciB0aGUgYG5nTW9kZWxgIG9yIHRoZSBBbmd1bGFyIGBGb3JtQ29udHJvbGAgY29udGFpbnMgYW4gZXJyb3IuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhhc0Vycm9yczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2aXN1YWxseSBoaWdobGlnaHQgdGhlIGlucHV0IGJveCBhcyBkaXNhYmxlZC4gVG8gZGlzYWJsZSB0aGUgaW5wdXQgYm94J3NcbiAgICogaW5wdXQgZWxlbWVudCwgdXNlIHRoZSBIVE1MIGBkaXNhYmxlZGAgYXR0cmlidXRlIG9yIHRoZSBBbmd1bGFyIGBGb3JtQ29udHJvbC5kaXNhYmxlZGBcbiAgICogcHJvcGVydHkuIElmIHRoZSBpbnB1dCBlbGVtZW50IGlzIG1hcHBlZCB0byBhbiBBbmd1bGFyIGZvcm0gY29udHJvbFxuICAgKiAoZS5nLiBgZm9ybUNvbnRyb2xOYW1lYCwgYG5nTW9kZWxgLCBldGMuKSwgXCJkaXNhYmxlZFwiIHN0eWxlcyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5O1xuICAgKiBpZiB0aGUgaW5wdXQgZWxlbWVudCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIEFuZ3VsYXIgZm9ybSBjb250cm9sLCB0aGUgYGRpc2FibGVkYFxuICAgKiBwcm9wZXJ0eSBvbiB0aGUgaW5wdXQgYm94IG11c3QgYmUgc2V0IHRvIGB0cnVlYCB0byB2aXN1YWxseSBpbmRpY2F0ZVxuICAgKiB0aGUgZGlzYWJsZWQgc3RhdGUgb24gdGhlIGlucHV0IGJveC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBhcyB0aGUgaW5wdXQncyBsYWJlbCBhbmQgaW4ga25vd24gdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcy4gVGhlIGxhYmVsXG4gICAqIHdpbGwgYXV0b21hdGljYWxseSBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBpbnB1dGAsIGBzZWxlY3RgLCBgdGV4dGFyZWFgLCBvciBjb21wYXRpYmxlIFNLWSBVWFxuICAgKiBjb21wb25lbnQgaW5jbHVkZWQgaW4gdGhlIGlucHV0IGJveC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiB0aGUgaW5wdXQuIEEgW1NLWSBVWCBjaGFyYWN0ZXIgY291bnRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQpXG4gICAqIHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBpbnB1dCBlbGVtZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbGlkYXRvci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2hhcmFjdGVyTGltaXQodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy4jX2NoYXJhY3RlckxpbWl0ID1cbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdW5kZWZpbmVkKTtcblxuICAgIHRoaXMuI3VwZGF0ZU1heExlbmd0aFZhbGlkYXRvcigpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFyYWN0ZXJMaW1pdCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfY2hhcmFjdGVyTGltaXQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgYm94IGlzIHN0YWNrZWQgb24gYW5vdGhlciBpbnB1dCBib3guIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBpbnB1dCBib3guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YWNrZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuI19zdGFja2VkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLmNzc0NsYXNzID0gdGhpcy4jX3N0YWNrZWQgPyAnc2t5LW1hcmdpbi1zdGFja2VkLWxnJyA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgaW5wdXQgYm94IGxhYmVsLiBUaGUgaGVscCBpbmxpbmUgYnV0dG9uIGRpc3BsYXlzIGEgW3BvcG92ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wb3BvdmVyKVxuICAgKiB3aGVuIGNsaWNrZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25hbCB0aXRsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSkgYnV0dG9uIGlzXG4gICAqIHBsYWNlZCBiZXNpZGUgdGhlIGlucHV0IGJveCBsYWJlbC4gQ2xpY2tpbmcgdGhlIGJ1dHRvbiBpbnZva2VzIGdsb2JhbCBoZWxwIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoaW50VGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2hpbnRUZXh0ID0gdmFsdWU7XG5cbiAgICB0aGlzLmFyaWFEZXNjcmliZWRCeS5uZXh0KHZhbHVlID8gdGhpcy5oaW50VGV4dElkIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGludFRleHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2hpbnRUZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGVycm9yc1NjcmVlblJlYWRlck9ubHkgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIGhvc3RJbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaG9zdEJ1dHRvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhvc3RCdXR0b25zSW5zZXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhvc3RCdXR0b25zTGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZm9ybUNvbnRyb2xIYXNGb2N1cyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBob3N0SWNvbnNJbnNldFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaG9zdEljb25zSW5zZXRMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBoaW50VGV4dEhpZGRlbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBoaW50VGV4dFNjcmVlblJlYWRlck9ubHkgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgaG9zdEhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHVibGljIHJlYWRvbmx5IGVycm9ySWQgPSB0aGlzLiNpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIHB1YmxpYyByZWFkb25seSBoaW50VGV4dElkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgYXJpYURlc2NyaWJlZEJ5ID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPigxKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gJyc7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgcHVibGljIGRpc3BsYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkKEZvcm1Db250cm9sRGlyZWN0aXZlKVxuICBwdWJsaWMgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG4gIEBDb250ZW50Q2hpbGQoRm9ybUNvbnRyb2xOYW1lKVxuICBwdWJsaWMgZm9ybUNvbnRyb2xCeU5hbWU6IEZvcm1Db250cm9sTmFtZSB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkKE5nTW9kZWwpXG4gIHB1YmxpYyBuZ01vZGVsOiBOZ01vZGVsIHwgdW5kZWZpbmVkO1xuXG4gIEBDb250ZW50Q2hpbGQoU2t5SW5wdXRCb3hDb250cm9sRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIGlucHV0UmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjb250cm9sRGlyOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBoZWxwUG9wb3Zlck9wZW46IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgIHRoaXMuY29udHJvbERpcj8uY29udHJvbD8uZGlzYWJsZWQgfHxcbiAgICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmRpc2FibGVkXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaGFzRXJyb3JzQ29tcHV0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaGFzRXJyb3JzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLiNjb250cm9sSGFzRXJyb3JzKHRoaXMuY29udHJvbERpcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaGFzRXJyb3JzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy4jaGFzUmVxdWlyZWRWYWxpZGF0b3IoKSB8fCB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50LnJlcXVpcmVkXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGFyYWN0ZXJDb3VudFNjcmVlblJlYWRlciA9IDA7XG5cbiAgI19zdGFja2VkID0gZmFsc2U7XG4gICNfY2hhcmFjdGVyTGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI19oaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNwcmV2aW91c0lucHV0UmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICAjcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3I6IFZhbGlkYXRvckZuIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNpbnB1dEJveEhvc3RTdmMuaW5pdCh0aGlzKTtcblxuICAgIGlmICh0aGlzLiNsYWJlbFRleHRSZXF1aXJlZCAmJiAhdGhpcy5sYWJlbFRleHQpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gICAgdGhpcy4jbGFiZWxUZXh0UmVxdWlyZWQ/LnZhbGlkYXRlTGFiZWxUZXh0KHRoaXMubGFiZWxUZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sRGlyID1cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgfHwgdGhpcy5mb3JtQ29udHJvbEJ5TmFtZSB8fCB0aGlzLm5nTW9kZWw7XG5cbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2xIYXNGb2N1cykge1xuICAgICAgdGhpcy5jaGFyYWN0ZXJDb3VudFNjcmVlblJlYWRlciA9IHRoaXMuY29udHJvbERpcj8udmFsdWU/Lmxlbmd0aCB8fCAwO1xuICAgIH1cblxuICAgIHRoaXMuI3VwZGF0ZUlucHV0UmVmKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hcmlhRGVzY3JpYmVkQnkuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtQ29udHJvbEZvY3VzSW4oKTogdm9pZCB7XG4gICAgY29uc3QgaW5saW5lSGVscEVsID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0SW5saW5lSGVscEVsZW1lbnQoXG4gICAgICB0aGlzLiNlbGVtZW50UmVmLFxuICAgICk7XG4gICAgaWYgKCF0aGlzLiNhZGFwdGVyU2VydmljZS5pc0ZvY3VzSW5FbGVtZW50KGlubGluZUhlbHBFbCkpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUhhc0ZvY3VzKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtQ29udHJvbEZvY3VzT3V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcmFjdGVyQ291bnRTY3JlZW5SZWFkZXIgPSB0aGlzLmNvbnRyb2xEaXI/LnZhbHVlPy5sZW5ndGggfHwgMDtcbiAgICB0aGlzLiN1cGRhdGVIYXNGb2N1cyhmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25JbnNldEljb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNDb250cm9sKHRoaXMuI2VsZW1lbnRSZWYpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwb3B1bGF0ZShhcmdzOiBTa3lJbnB1dEJveFBvcHVsYXRlQXJncyk6IHZvaWQge1xuICAgIHRoaXMuaG9zdElucHV0VGVtcGxhdGUgPSBhcmdzLmlucHV0VGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0QnV0dG9uc1RlbXBsYXRlID0gYXJncy5idXR0b25zVGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0QnV0dG9uc0xlZnRUZW1wbGF0ZSA9IGFyZ3MuYnV0dG9uc0xlZnRUZW1wbGF0ZTtcbiAgICB0aGlzLmhvc3RCdXR0b25zSW5zZXRUZW1wbGF0ZSA9IGFyZ3MuYnV0dG9uc0luc2V0VGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0SWNvbnNJbnNldFRlbXBsYXRlID0gYXJncy5pY29uc0luc2V0VGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0SWNvbnNJbnNldExlZnRUZW1wbGF0ZSA9IGFyZ3MuaWNvbnNJbnNldExlZnRUZW1wbGF0ZTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SGludFRleHRIaWRkZW4oaGlkZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaGludFRleHRIaWRkZW4gPSBoaWRlO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIb3N0SGludFRleHQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdEhpbnRUZXh0ID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldEhpbnRUZXh0U2NyZWVuUmVhZGVyT25seShoaWRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5oaW50VGV4dFNjcmVlblJlYWRlck9ubHkgPSBoaWRlO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICNoYXNSZXF1aXJlZFZhbGlkYXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbnRyb2xEaXI/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgfVxuXG4gICN1cGRhdGVIYXNGb2N1cyhoYXNGb2N1czogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIFNvbWUgY29tcG9uZW50cyBtYW5pcHVsYXRlIHRoZSBmb2N1cyBvZiBlbGVtZW50cyBpbnNpZGUgYW4gaW5wdXQgYm94IHByb2dyYW1tYXRpY2FsbHksXG4gICAgLy8gd2hpY2ggY2FuIGNhdXNlIGFuIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCBpZiBmb2N1cyB3YXMgc2V0IGFmdGVyXG4gICAgLy8gaW5pdGlhbCBjaGFuZ2UgZGV0ZWN0aW9uLiBVc2luZyBgc2V0VGltZW91dCgpYCBoZXJlIGZpeGVzIGl0LlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbEhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAjY29udHJvbEhhc0Vycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSk7XG4gIH1cblxuICAjdXBkYXRlSW5wdXRSZWYoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlucHV0UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIC8vIENoZWNrIGZvciB0aGUgQW5ndWxhciByZXF1aXJlZCB2YWxpZGF0b3IgYW5kIGFkZCBhbiBhcmlhLXJlcXVpcmVkIGF0dHJpYnV0ZVxuICAgIC8vIHRvIG1hdGNoLiBGb3IgdGVtcGxhdGUtZHJpdmVuIGZvcm1zLCB0aGUgaW5wdXQgd2lsbCBoYXZlIGEgYHJlcXVpcmVkYCBhdHRyaWJ1dGVcbiAgICAvLyBzbyB0aGUgYXJpYS1yZXF1aXJlZCBhdHRyaWJ1dGUgaXMgdW5uZWNlc3NhcnkuXG4gICAgY29uc3QgaGFzUmVxdWlyZWRWYWxpZGF0b3IgPSB0aGlzLiNoYXNSZXF1aXJlZFZhbGlkYXRvcigpO1xuICAgIGNvbnN0IGFyaWFSZXF1aXJlZCA9IGlucHV0RWwuYXJpYVJlcXVpcmVkO1xuXG4gICAgaWYgKGhhc1JlcXVpcmVkVmFsaWRhdG9yICYmIGFyaWFSZXF1aXJlZCAhPT0gJ3RydWUnKSB7XG4gICAgICBpbnB1dEVsLmFyaWFSZXF1aXJlZCA9ICd0cnVlJztcbiAgICB9IGVsc2UgaWYgKCFoYXNSZXF1aXJlZFZhbGlkYXRvciAmJiBhcmlhUmVxdWlyZWQgPT09ICd0cnVlJykge1xuICAgICAgaW5wdXRFbC5hcmlhUmVxdWlyZWQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0Vycm9yc0NvbXB1dGVkKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5wdXRFbCwgJ2FyaWEtaW52YWxpZCcsICd0cnVlJyk7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5wdXRFbCwgJ2FyaWEtZXJyb3JtZXNzYWdlJywgdGhpcy5lcnJvcklkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGlucHV0RWwsICdhcmlhLWludmFsaWQnKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShpbnB1dEVsLCAnYXJpYS1lcnJvcm1lc3NhZ2UnKTtcbiAgICB9XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS51cGRhdGVEZXNjcmliZWRCeShcbiAgICAgIHRoaXMuaW5wdXRSZWYsXG4gICAgICB0aGlzLmhpbnRUZXh0SWQsXG4gICAgICB0aGlzLmhpbnRUZXh0ID8/IHRoaXMuaG9zdEhpbnRUZXh0LFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5pbnB1dFJlZiAhPT0gdGhpcy4jcHJldmlvdXNJbnB1dFJlZikge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MoaW5wdXRFbCwgJ3NreS1mb3JtLWNvbnRyb2wnKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShpbnB1dEVsLCAnaWQnLCB0aGlzLmNvbnRyb2xJZCk7XG5cbiAgICAgIHRoaXMuI3VwZGF0ZU1heExlbmd0aFZhbGlkYXRvcigpO1xuXG4gICAgICB0aGlzLiNwcmV2aW91c0lucHV0UmVmID0gdGhpcy5pbnB1dFJlZjtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlTWF4TGVuZ3RoVmFsaWRhdG9yKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2xEaXI/LmNvbnRyb2w7XG5cbiAgICBpZiAodGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3IpIHtcbiAgICAgIGNvbnRyb2w/LnJlbW92ZVZhbGlkYXRvcnModGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3IpO1xuICAgICAgdGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRyb2wgJiYgdGhpcy5jaGFyYWN0ZXJMaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNwcmV2aW91c01heExlbmd0aFZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxuICAgICAgICB0aGlzLmNoYXJhY3RlckxpbWl0LFxuICAgICAgKTtcblxuICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKFt0aGlzLiNwcmV2aW91c01heExlbmd0aFZhbGlkYXRvcl0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiXG4gIGNsYXNzPVwic2t5LWlucHV0LWJveFwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnc2t5LWlucHV0LWJveC1kaXNhYmxlZCc6IGlzRGlzYWJsZWRcbiAgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJza3ktZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtYm94LWxhYmVsLXdyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlXCIgLz48bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lSGVscFRlbXBsYXRlXCJcbiAgICAgIC8+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hhcmFjdGVyQ291bnRUZW1wbGF0ZVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNMZWZ0VGVtcGxhdGVcIiAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1pbnB1dC1ib3gtaW5wdXQtZ3JvdXAtaW5uZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1maWVsZC1zdGF0dXMtYWN0aXZlJzogZm9ybUNvbnRyb2xIYXNGb2N1cyxcbiAgICAgICAgICAnc2t5LWZpZWxkLXN0YXR1cy1pbnZhbGlkJzogaGFzRXJyb3JzQ29tcHV0ZWRcbiAgICAgICAgfVwiXG4gICAgICAgIChmb2N1c2luKT1cImZvcm1Db250cm9sRm9jdXNJbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cImZvcm1Db250cm9sRm9jdXNPdXQoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uc0luc2V0TGVmdFRlbXBsYXRlXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc0luc2V0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbnNJbnNldFRlbXBsYXRlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNUZW1wbGF0ZVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhpbnRUZXh0VGVtcGxhdGVcIiAvPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvckxhYmVsVGVtcGxhdGVcIiAvPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2XG4gICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICBjbGFzcz1cInNreS1pbnB1dC1ib3hcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1pbnB1dC1ib3gtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH1cIlxuPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWJveC1ncm91cFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zTGVmdFRlbXBsYXRlXCIgLz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1pbnB1dC1ib3gtZ3JvdXAtZm9ybS1jb250cm9sXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1pbnB1dC1ib3gtZ3JvdXAtZm9ybS1jb250cm9sLWZvY3VzJzogZm9ybUNvbnRyb2xIYXNGb2N1cyxcbiAgICAgICAgJ3NreS1pbnB1dC1ib3gtZ3JvdXAtZm9ybS1jb250cm9sLWludmFsaWQnOiBoYXNFcnJvcnNDb21wdXRlZFxuICAgICAgfVwiXG4gICAgICAoZm9jdXNpbik9XCJmb3JtQ29udHJvbEZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwiZm9ybUNvbnRyb2xGb2N1c091dCgpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25zSW5zZXRMZWZ0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWJveC1mb3JtLWdyb3VwLWlubmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ib3gtbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGVcIiAvPjxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmxpbmVIZWxwVGVtcGxhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGFyYWN0ZXJDb3VudFRlbXBsYXRlXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc0luc2V0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbnNJbnNldFRlbXBsYXRlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zVGVtcGxhdGVcIiAvPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhpbnRUZXh0VGVtcGxhdGVcIiAvPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXJyb3JMYWJlbFRlbXBsYXRlXCIgLz5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xhYmVsVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktY29udHJvbC1sYWJlbFwiIC8+XG4gIDxsYWJlbFxuICAgICpuZ0lmPVwibGFiZWxUZXh0XCJcbiAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgY2hhcmFjdGVyTGltaXQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGxhYmVsVGV4dCArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICAoJ3NreXV4X2NoYXJhY3Rlcl9jb3VudF9tZXNzYWdlJ1xuICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNoYXJhY3RlckNvdW50U2NyZWVuUmVhZGVyIDogY2hhcmFjdGVyTGltaXQpXG4gICAgICAgIDogbnVsbFxuICAgIFwiXG4gICAgW2Zvcl09XCJjb250cm9sSWRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCc6IHJlcXVpcmVkXG4gICAgfVwiXG4gICAgPnt7IGxhYmVsVGV4dCB9fTwvbGFiZWxcbiAgPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbmxpbmVIZWxwVGVtcGxhdGU+XG4gIDxza3ktaGVscC1pbmxpbmVcbiAgICAqbmdJZj1cImhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5XCJcbiAgICBjbGFzcz1cInNreS1jb250cm9sLWhlbHBcIlxuICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcbiAgICBbcG9wb3ZlckNvbnRlbnRdPVwiaGVscFBvcG92ZXJDb250ZW50XCJcbiAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAvPlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktY29udHJvbC1oZWxwXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2hhcmFjdGVyQ291bnRUZW1wbGF0ZT5cbiAgPHNreS1jaGFyYWN0ZXItY291bnRlci1pbmRpY2F0b3JcbiAgICAqbmdJZj1cImNoYXJhY3RlckxpbWl0ICE9PSB1bmRlZmluZWRcIlxuICAgIFtjaGFyYWN0ZXJDb3VudF09XCJjb250cm9sRGlyPy52YWx1ZT8ubGVuZ3RoIHx8IDBcIlxuICAgIFtjaGFyYWN0ZXJDb3VudExpbWl0XT1cImNoYXJhY3RlckxpbWl0XCJcbiAgLz5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWNoYXJhY3Rlci1jb3VudGVyLWluZGljYXRvclwiIC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50XG4gICAgc2VsZWN0PVwiaW5wdXQsc2VsZWN0LC5za3ktZm9ybS1jb250cm9sOm5vdCh0ZXh0YXJlYSksc2t5LXRleHQtZWRpdG9yXCJcbiAgLz5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiaG9zdElucHV0VGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RJbnB1dFRlbXBsYXRlXCJcbiAgLz5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidGV4dGFyZWFcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zTGVmdFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWlucHV0LWdyb3VwLWJ0bi5za3ktaW5wdXQtYm94LWJ0bi1sZWZ0XCIgLz5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiaG9zdEJ1dHRvbnNMZWZ0VGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RCdXR0b25zTGVmdFRlbXBsYXRlXCJcbiAgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uc1RlbXBsYXRlPlxuICA8bmctY29udGVudFxuICAgIHNlbGVjdD1cIi5za3ktaW5wdXQtZ3JvdXAtYnRuOm5vdCguc2t5LWlucHV0LWJveC1idG4tbGVmdCk6bm90KC5za3ktaW5wdXQtYm94LWJ0bi1pbnNldClcIlxuICAvPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJob3N0QnV0dG9uc1RlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJob3N0QnV0dG9uc1RlbXBsYXRlXCJcbiAgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uc0luc2V0VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktaW5wdXQtZ3JvdXAtYnRuLnNreS1pbnB1dC1ib3gtYnRuLWluc2V0XCIgLz5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiaG9zdEJ1dHRvbnNJbnNldFRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJob3N0QnV0dG9uc0luc2V0VGVtcGxhdGVcIlxuICAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uc0luc2V0VGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtYm94LWljb24taW5zZXQtd3JhcHBlclwiIChjbGljayk9XCJvbkluc2V0SWNvbkNsaWNrKClcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWlucHV0LWdyb3VwLWljb24uc2t5LWlucHV0LWJveC1pY29uLWluc2V0XCIgLz5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cImhvc3RJY29uc0luc2V0VGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG9zdEljb25zSW5zZXRUZW1wbGF0ZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ljb25zSW5zZXRMZWZ0VGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1pbnB1dC1ib3gtaWNvbi1pbnNldC1sZWZ0LXdyYXBwZXJcIlxuICAgIChjbGljayk9XCJvbkluc2V0SWNvbkNsaWNrKClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNreS1pbnB1dC1ncm91cC1pY29uLnNreS1pbnB1dC1ib3gtaWNvbi1pbnNldC1sZWZ0XCIgLz5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cImhvc3RJY29uc0luc2V0TGVmdFRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RJY29uc0luc2V0TGVmdFRlbXBsYXRlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZXJyb3JMYWJlbFRlbXBsYXRlPlxuICA8c2t5LWZvcm0tZXJyb3JzXG4gICAgW2lkXT1cImVycm9ySWRcIlxuICAgIFtlcnJvcnNdPVwiY29udHJvbERpcj8uZXJyb3JzXCJcbiAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LXNjcmVlbi1yZWFkZXItb25seSc6IGVycm9yc1NjcmVlblJlYWRlck9ubHkoKSB9XCJcbiAgICBbc2hvd0Vycm9yc109XCJjb250cm9sRGlyPy50b3VjaGVkIHx8IGNvbnRyb2xEaXI/LmRpcnR5XCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbiAgPC9za3ktZm9ybS1lcnJvcnM+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktZXJyb3ItbGFiZWwsLnNreS1lcnJvci1pbmRpY2F0b3JcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNoaW50VGV4dFRlbXBsYXRlPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJoaW50VGV4dCB8fCBob3N0SGludFRleHRcIlxuICAgIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1pbnB1dC1ib3gtaGludC10ZXh0XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWlucHV0LWJveC1oaW50LXRleHQtaGlkZGVuJzogaGludFRleHRIaWRkZW4sXG4gICAgICAnc2t5LXNjcmVlbi1yZWFkZXItb25seSc6IGhpbnRUZXh0U2NyZWVuUmVhZGVyT25seVxuICAgIH1cIlxuICAgIFtpZF09XCJoaW50VGV4dElkXCJcbiAgPlxuICAgIHt7IGhpbnRUZXh0IHwgc2t5SW5wdXRCb3hIaW50VGV4dDogaG9zdEhpbnRUZXh0IH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvaW5wdXQtYm94L2lucHV0LWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2lucHV0LWJveC9pbnB1dC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxFQUVULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixPQUFPLEVBRVAsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXhHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7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QUFlLGFBR2Q7d0JBQ1Qsc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLHNCQUFzQjt3QkFDdEI7NEJBQ0UsT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7cUJBQ0YsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs4QkFzQjlCLFNBQVM7c0JBRGYsS0FBSztnQkFjQyxRQUFRO3NCQURkLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixLQUFLO2dCQVFLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBaUJLLE9BQU87c0JBRGpCLEtBQUs7Z0JBV0MsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVNDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFVQyxPQUFPO3NCQURiLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkE0Q0MsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBSWIsT0FBTztzQkFEYixXQUFXO3VCQUFDLGVBQWU7Z0JBSXJCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUkzQixpQkFBaUI7c0JBRHZCLFlBQVk7dUJBQUMsZUFBZTtnQkFJdEIsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBTWQsUUFBUTtzQkFIZCxZQUFZO3VCQUFDLDJCQUEyQixFQUFFO3dCQUN6QyxJQUFJLEVBQUUsVUFBVTtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCb29sZWFuSW5wdXQsXG4gIE51bWJlcklucHV0LFxuICBjb2VyY2VCb29sZWFuUHJvcGVydHksXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxufSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUsXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICBGb3JtQ29udHJvbE5hbWUsXG4gIE5nTW9kZWwsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDb250ZW50SW5mb1Byb3ZpZGVyLCBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWVuYWJsZWQtdG9rZW4nO1xuaW1wb3J0IHsgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0tZmllbGQtbGFiZWwtdGV4dC1yZXF1aXJlZC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5SW5wdXRCb3hBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vaW5wdXQtYm94LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2lucHV0LWJveC1jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnLi9pbnB1dC1ib3gtaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUlucHV0Qm94UG9wdWxhdGVBcmdzIH0gZnJvbSAnLi9pbnB1dC1ib3gtcG9wdWxhdGUtYXJncyc7XG5cbi8qKlxuICogQSB3cmFwcGVyIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIHN0eWxpbmcgYW5kIGFjY2Vzc2liaWxpdHkgdG8gZm9ybSBlbGVtZW50cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWlucHV0LWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5Q29udGVudEluZm9Qcm92aWRlcixcbiAgICBTa3lJbnB1dEJveEFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gICAgICB1c2VWYWx1ZTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICAvLyBOb3RlIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBpcyBub3Qgc2V0IHRvIE9uUHVzaDsgZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0aW9uIGFsbG93cyB0aGVcbiAgLy8gaW52YWxpZCBDU1MgY2xhc3MgdG8gYmUgYWRkZWQgd2hlbiB0aGUgY29udGVudCBjb250cm9sJ3MgaW52YWxpZC9kaXJ0eSBzdGF0ZSBjaGFuZ2VzLlxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lJbnB1dEJveENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25EZXN0cm95XG57XG4gICNjaGFuZ2VSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAjaW5wdXRCb3hIb3N0U3ZjID0gaW5qZWN0KFNreUlucHV0Qm94SG9zdFNlcnZpY2UpO1xuICAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5SW5wdXRCb3hBZGFwdGVyU2VydmljZSk7XG4gICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgcmVhZG9ubHkgI2xhYmVsVGV4dFJlcXVpcmVkID0gaW5qZWN0KFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2aXN1YWxseSBoaWdobGlnaHQgdGhlIGlucHV0IGJveCBpbiBhbiBlcnJvciBzdGF0ZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGlucHV0IGJveFxuICAgKiBkaXNwbGF5cyBpbiBhbiBlcnJvciBzdGF0ZSB3aGVuIGVpdGhlciB0aGUgYG5nTW9kZWxgIG9yIHRoZSBBbmd1bGFyIGBGb3JtQ29udHJvbGAgY29udGFpbnMgYW4gZXJyb3IuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhhc0Vycm9yczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2aXN1YWxseSBoaWdobGlnaHQgdGhlIGlucHV0IGJveCBhcyBkaXNhYmxlZC4gVG8gZGlzYWJsZSB0aGUgaW5wdXQgYm94J3NcbiAgICogaW5wdXQgZWxlbWVudCwgdXNlIHRoZSBIVE1MIGBkaXNhYmxlZGAgYXR0cmlidXRlIG9yIHRoZSBBbmd1bGFyIGBGb3JtQ29udHJvbC5kaXNhYmxlZGBcbiAgICogcHJvcGVydHkuIElmIHRoZSBpbnB1dCBlbGVtZW50IGlzIG1hcHBlZCB0byBhbiBBbmd1bGFyIGZvcm0gY29udHJvbFxuICAgKiAoZS5nLiBgZm9ybUNvbnRyb2xOYW1lYCwgYG5nTW9kZWxgLCBldGMuKSwgXCJkaXNhYmxlZFwiIHN0eWxlcyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5O1xuICAgKiBpZiB0aGUgaW5wdXQgZWxlbWVudCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIEFuZ3VsYXIgZm9ybSBjb250cm9sLCB0aGUgYGRpc2FibGVkYFxuICAgKiBwcm9wZXJ0eSBvbiB0aGUgaW5wdXQgYm94IG11c3QgYmUgc2V0IHRvIGB0cnVlYCB0byB2aXN1YWxseSBpbmRpY2F0ZVxuICAgKiB0aGUgZGlzYWJsZWQgc3RhdGUgb24gdGhlIGlucHV0IGJveC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBhcyB0aGUgaW5wdXQncyBsYWJlbCBhbmQgaW4ga25vd24gdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcy4gVGhlIGxhYmVsXG4gICAqIHdpbGwgYXV0b21hdGljYWxseSBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBpbnB1dGAsIGBzZWxlY3RgLCBgdGV4dGFyZWFgLCBvciBjb21wYXRpYmxlIFNLWSBVWFxuICAgKiBjb21wb25lbnQgaW5jbHVkZWQgaW4gdGhlIGlucHV0IGJveC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiB0aGUgaW5wdXQuIEEgW1NLWSBVWCBjaGFyYWN0ZXIgY291bnRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQpXG4gICAqIHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBpbnB1dCBlbGVtZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbGlkYXRvci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2hhcmFjdGVyTGltaXQodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy4jX2NoYXJhY3RlckxpbWl0ID1cbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdW5kZWZpbmVkKTtcblxuICAgIHRoaXMuI3VwZGF0ZU1heExlbmd0aFZhbGlkYXRvcigpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFyYWN0ZXJMaW1pdCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfY2hhcmFjdGVyTGltaXQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgYm94IGlzIHN0YWNrZWQgb24gYW5vdGhlciBpbnB1dCBib3guIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBpbnB1dCBib3guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YWNrZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuI19zdGFja2VkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLmNzc0NsYXNzID0gdGhpcy4jX3N0YWNrZWQgPyAnc2t5LW1hcmdpbi1zdGFja2VkLWxnJyA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgaW5wdXQgYm94IGxhYmVsLiBUaGUgaGVscCBpbmxpbmUgYnV0dG9uIGRpc3BsYXlzIGEgW3BvcG92ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wb3BvdmVyKVxuICAgKiB3aGVuIGNsaWNrZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25hbCB0aXRsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIGlucHV0IGJveCBsYWJlbC4gQ2xpY2tpbmcgdGhlIGJ1dHRvbiBpbnZva2VzIFtnbG9iYWwgaGVscF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9kZXZlbG9wL2dsb2JhbC1oZWxwKVxuICAgKiBhcyBjb25maWd1cmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFtQZXJzaXN0ZW50IGlubGluZSBoZWxwIHRleHRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL2d1aWRlbGluZXMvdXNlci1hc3Npc3RhbmNlI2lubGluZS1oZWxwKSB0aGF0IHByb3ZpZGVzXG4gICAqIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaGludFRleHQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19oaW50VGV4dCA9IHZhbHVlO1xuXG4gICAgdGhpcy5hcmlhRGVzY3JpYmVkQnkubmV4dCh2YWx1ZSA/IHRoaXMuaGludFRleHRJZCA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpbnRUZXh0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19oaW50VGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBlcnJvcnNTY3JlZW5SZWFkZXJPbmx5ID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIHB1YmxpYyBob3N0SW5wdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhvc3RCdXR0b25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBob3N0QnV0dG9uc0luc2V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBob3N0QnV0dG9uc0xlZnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGZvcm1Db250cm9sSGFzRm9jdXMgPSBmYWxzZTtcblxuICBwdWJsaWMgaG9zdEljb25zSW5zZXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhvc3RJY29uc0luc2V0TGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgaGludFRleHRIaWRkZW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgaGludFRleHRTY3JlZW5SZWFkZXJPbmx5ID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGhvc3RIaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQgPSB0aGlzLiNpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIHB1YmxpYyByZWFkb25seSBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgaGludFRleHRJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHVibGljIHJlYWRvbmx5IGFyaWFEZXNjcmliZWRCeSA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oMSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyBjc3NDbGFzcyA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gIHB1YmxpYyBkaXNwbGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZChGb3JtQ29udHJvbERpcmVjdGl2ZSlcbiAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkKEZvcm1Db250cm9sTmFtZSlcbiAgcHVibGljIGZvcm1Db250cm9sQnlOYW1lOiBGb3JtQ29udHJvbE5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZChOZ01vZGVsKVxuICBwdWJsaWMgbmdNb2RlbDogTmdNb2RlbCB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkKFNreUlucHV0Qm94Q29udHJvbERpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHB1YmxpYyBpbnB1dFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY29udHJvbERpcjogQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaGVscFBvcG92ZXJPcGVuOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLmRpc2FibGVkIHx8XG4gICAgICB0aGlzLmNvbnRyb2xEaXI/LmNvbnRyb2w/LmRpc2FibGVkIHx8XG4gICAgICB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5kaXNhYmxlZFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGhhc0Vycm9yc0NvbXB1dGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmhhc0Vycm9ycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy4jY29udHJvbEhhc0Vycm9ycyh0aGlzLmNvbnRyb2xEaXIpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhhc0Vycm9ycztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuI2hhc1JlcXVpcmVkVmFsaWRhdG9yKCkgfHwgdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudC5yZXF1aXJlZFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhcmFjdGVyQ291bnRTY3JlZW5SZWFkZXIgPSAwO1xuXG4gICNfc3RhY2tlZCA9IGZhbHNlO1xuICAjX2NoYXJhY3RlckxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICNfaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjcHJldmlvdXNJbnB1dFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgI3ByZXZpb3VzTWF4TGVuZ3RoVmFsaWRhdG9yOiBWYWxpZGF0b3JGbiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jaW5wdXRCb3hIb3N0U3ZjLmluaXQodGhpcyk7XG5cbiAgICBpZiAodGhpcy4jbGFiZWxUZXh0UmVxdWlyZWQgJiYgIXRoaXMubGFiZWxUZXh0KSB7XG4gICAgICB0aGlzLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuICAgIHRoaXMuI2xhYmVsVGV4dFJlcXVpcmVkPy52YWxpZGF0ZUxhYmVsVGV4dCh0aGlzLmxhYmVsVGV4dCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbERpciA9XG4gICAgICB0aGlzLmZvcm1Db250cm9sIHx8IHRoaXMuZm9ybUNvbnRyb2xCeU5hbWUgfHwgdGhpcy5uZ01vZGVsO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sSGFzRm9jdXMpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyQ291bnRTY3JlZW5SZWFkZXIgPSB0aGlzLmNvbnRyb2xEaXI/LnZhbHVlPy5sZW5ndGggfHwgMDtcbiAgICB9XG5cbiAgICB0aGlzLiN1cGRhdGVJbnB1dFJlZigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYXJpYURlc2NyaWJlZEJ5LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUNvbnRyb2xGb2N1c0luKCk6IHZvaWQge1xuICAgIGNvbnN0IGlubGluZUhlbHBFbCA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldElubGluZUhlbHBFbGVtZW50KFxuICAgICAgdGhpcy4jZWxlbWVudFJlZixcbiAgICApO1xuICAgIGlmICghdGhpcy4jYWRhcHRlclNlcnZpY2UuaXNGb2N1c0luRWxlbWVudChpbmxpbmVIZWxwRWwpKSB7XG4gICAgICB0aGlzLiN1cGRhdGVIYXNGb2N1cyh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybUNvbnRyb2xGb2N1c091dCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYXJhY3RlckNvdW50U2NyZWVuUmVhZGVyID0gdGhpcy5jb250cm9sRGlyPy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG4gICAgdGhpcy4jdXBkYXRlSGFzRm9jdXMoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uSW5zZXRJY29uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmZvY3VzQ29udHJvbCh0aGlzLiNlbGVtZW50UmVmKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcG9wdWxhdGUoYXJnczogU2t5SW5wdXRCb3hQb3B1bGF0ZUFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLmhvc3RJbnB1dFRlbXBsYXRlID0gYXJncy5pbnB1dFRlbXBsYXRlO1xuICAgIHRoaXMuaG9zdEJ1dHRvbnNUZW1wbGF0ZSA9IGFyZ3MuYnV0dG9uc1RlbXBsYXRlO1xuICAgIHRoaXMuaG9zdEJ1dHRvbnNMZWZ0VGVtcGxhdGUgPSBhcmdzLmJ1dHRvbnNMZWZ0VGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0QnV0dG9uc0luc2V0VGVtcGxhdGUgPSBhcmdzLmJ1dHRvbnNJbnNldFRlbXBsYXRlO1xuICAgIHRoaXMuaG9zdEljb25zSW5zZXRUZW1wbGF0ZSA9IGFyZ3MuaWNvbnNJbnNldFRlbXBsYXRlO1xuICAgIHRoaXMuaG9zdEljb25zSW5zZXRMZWZ0VGVtcGxhdGUgPSBhcmdzLmljb25zSW5zZXRMZWZ0VGVtcGxhdGU7XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldEhpbnRUZXh0SGlkZGVuKGhpZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmhpbnRUZXh0SGlkZGVuID0gaGlkZTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SG9zdEhpbnRUZXh0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLmhvc3RIaW50VGV4dCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIaW50VGV4dFNjcmVlblJlYWRlck9ubHkoaGlkZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaGludFRleHRTY3JlZW5SZWFkZXJPbmx5ID0gaGlkZTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjaGFzUmVxdWlyZWRWYWxpZGF0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5jb250cm9sRGlyPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gIH1cblxuICAjdXBkYXRlSGFzRm9jdXMoaGFzRm9jdXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBTb21lIGNvbXBvbmVudHMgbWFuaXB1bGF0ZSB0aGUgZm9jdXMgb2YgZWxlbWVudHMgaW5zaWRlIGFuIGlucHV0IGJveCBwcm9ncmFtbWF0aWNhbGx5LFxuICAgIC8vIHdoaWNoIGNhbiBjYXVzZSBhbiBgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcmAgaWYgZm9jdXMgd2FzIHNldCBhZnRlclxuICAgIC8vIGluaXRpYWwgY2hhbmdlIGRldGVjdGlvbi4gVXNpbmcgYHNldFRpbWVvdXQoKWAgaGVyZSBmaXhlcyBpdC5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2xIYXNGb2N1cyA9IGhhc0ZvY3VzO1xuICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgI2NvbnRyb2xIYXNFcnJvcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCkpO1xuICB9XG5cbiAgI3VwZGF0ZUlucHV0UmVmKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbnB1dFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAvLyBDaGVjayBmb3IgdGhlIEFuZ3VsYXIgcmVxdWlyZWQgdmFsaWRhdG9yIGFuZCBhZGQgYW4gYXJpYS1yZXF1aXJlZCBhdHRyaWJ1dGVcbiAgICAvLyB0byBtYXRjaC4gRm9yIHRlbXBsYXRlLWRyaXZlbiBmb3JtcywgdGhlIGlucHV0IHdpbGwgaGF2ZSBhIGByZXF1aXJlZGAgYXR0cmlidXRlXG4gICAgLy8gc28gdGhlIGFyaWEtcmVxdWlyZWQgYXR0cmlidXRlIGlzIHVubmVjZXNzYXJ5LlxuICAgIGNvbnN0IGhhc1JlcXVpcmVkVmFsaWRhdG9yID0gdGhpcy4jaGFzUmVxdWlyZWRWYWxpZGF0b3IoKTtcbiAgICBjb25zdCBhcmlhUmVxdWlyZWQgPSBpbnB1dEVsLmFyaWFSZXF1aXJlZDtcblxuICAgIGlmIChoYXNSZXF1aXJlZFZhbGlkYXRvciAmJiBhcmlhUmVxdWlyZWQgIT09ICd0cnVlJykge1xuICAgICAgaW5wdXRFbC5hcmlhUmVxdWlyZWQgPSAndHJ1ZSc7XG4gICAgfSBlbHNlIGlmICghaGFzUmVxdWlyZWRWYWxpZGF0b3IgJiYgYXJpYVJlcXVpcmVkID09PSAndHJ1ZScpIHtcbiAgICAgIGlucHV0RWwuYXJpYVJlcXVpcmVkID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNFcnJvcnNDb21wdXRlZCkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKGlucHV0RWwsICdhcmlhLWludmFsaWQnLCAndHJ1ZScpO1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKGlucHV0RWwsICdhcmlhLWVycm9ybWVzc2FnZScsIHRoaXMuZXJyb3JJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShpbnB1dEVsLCAnYXJpYS1pbnZhbGlkJyk7XG4gICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoaW5wdXRFbCwgJ2FyaWEtZXJyb3JtZXNzYWdlJyk7XG4gICAgfVxuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UudXBkYXRlRGVzY3JpYmVkQnkoXG4gICAgICB0aGlzLmlucHV0UmVmLFxuICAgICAgdGhpcy5oaW50VGV4dElkLFxuICAgICAgdGhpcy5oaW50VGV4dCA/PyB0aGlzLmhvc3RIaW50VGV4dCxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuaW5wdXRSZWYgIT09IHRoaXMuI3ByZXZpb3VzSW5wdXRSZWYpIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGlucHV0RWwsICdza3ktZm9ybS1jb250cm9sJyk7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5wdXRFbCwgJ2lkJywgdGhpcy5jb250cm9sSWQpO1xuXG4gICAgICB0aGlzLiN1cGRhdGVNYXhMZW5ndGhWYWxpZGF0b3IoKTtcblxuICAgICAgdGhpcy4jcHJldmlvdXNJbnB1dFJlZiA9IHRoaXMuaW5wdXRSZWY7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZU1heExlbmd0aFZhbGlkYXRvcigpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sRGlyPy5jb250cm9sO1xuXG4gICAgaWYgKHRoaXMuI3ByZXZpb3VzTWF4TGVuZ3RoVmFsaWRhdG9yKSB7XG4gICAgICBjb250cm9sPy5yZW1vdmVWYWxpZGF0b3JzKHRoaXMuI3ByZXZpb3VzTWF4TGVuZ3RoVmFsaWRhdG9yKTtcbiAgICAgIHRoaXMuI3ByZXZpb3VzTWF4TGVuZ3RoVmFsaWRhdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChjb250cm9sICYmIHRoaXMuY2hhcmFjdGVyTGltaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aChcbiAgICAgICAgdGhpcy5jaGFyYWN0ZXJMaW1pdCxcbiAgICAgICk7XG5cbiAgICAgIGNvbnRyb2wuYWRkVmFsaWRhdG9ycyhbdGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3JdKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIlxuICBjbGFzcz1cInNreS1pbnB1dC1ib3hcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1pbnB1dC1ib3gtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH1cIlxuPlxuICA8ZGl2IGNsYXNzPVwic2t5LWZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWJveC1sYWJlbC13cmFwcGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxUZW1wbGF0ZVwiIC8+PG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImlubGluZUhlbHBUZW1wbGF0ZVwiXG4gICAgICAvPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoYXJhY3RlckNvdW50VGVtcGxhdGVcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zTGVmdFRlbXBsYXRlXCIgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJza3ktaW5wdXQtYm94LWlucHV0LWdyb3VwLWlubmVyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktZmllbGQtc3RhdHVzLWFjdGl2ZSc6IGZvcm1Db250cm9sSGFzRm9jdXMsXG4gICAgICAgICAgJ3NreS1maWVsZC1zdGF0dXMtaW52YWxpZCc6IGhhc0Vycm9yc0NvbXB1dGVkXG4gICAgICAgIH1cIlxuICAgICAgICAoZm9jdXNpbik9XCJmb3JtQ29udHJvbEZvY3VzSW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJmb3JtQ29udHJvbEZvY3VzT3V0KClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbnNJbnNldExlZnRUZW1wbGF0ZVwiIC8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNJbnNldFRlbXBsYXRlXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25zSW5zZXRUZW1wbGF0ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zVGVtcGxhdGVcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoaW50VGV4dFRlbXBsYXRlXCIgLz5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXJyb3JMYWJlbFRlbXBsYXRlXCIgLz5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgY2xhc3M9XCJza3ktaW5wdXQtYm94XCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktaW5wdXQtYm94LWRpc2FibGVkJzogaXNEaXNhYmxlZFxuICB9XCJcbj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ib3gtZ3JvdXBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc0xlZnRUZW1wbGF0ZVwiIC8+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktaW5wdXQtYm94LWdyb3VwLWZvcm0tY29udHJvbFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktaW5wdXQtYm94LWdyb3VwLWZvcm0tY29udHJvbC1mb2N1cyc6IGZvcm1Db250cm9sSGFzRm9jdXMsXG4gICAgICAgICdza3ktaW5wdXQtYm94LWdyb3VwLWZvcm0tY29udHJvbC1pbnZhbGlkJzogaGFzRXJyb3JzQ29tcHV0ZWRcbiAgICAgIH1cIlxuICAgICAgKGZvY3VzaW4pPVwiZm9ybUNvbnRyb2xGb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cImZvcm1Db250cm9sRm9jdXNPdXQoKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uc0luc2V0TGVmdFRlbXBsYXRlXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ib3gtZm9ybS1ncm91cC1pbm5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtYm94LWxhYmVsLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlXCIgLz48bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lSGVscFRlbXBsYXRlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hhcmFjdGVyQ291bnRUZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNJbnNldFRlbXBsYXRlXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25zSW5zZXRUZW1wbGF0ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc1RlbXBsYXRlXCIgLz5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoaW50VGV4dFRlbXBsYXRlXCIgLz5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVycm9yTGFiZWxUZW1wbGF0ZVwiIC8+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsYWJlbFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtbGFiZWxcIiAvPlxuICA8bGFiZWxcbiAgICAqbmdJZj1cImxhYmVsVGV4dFwiXG4gICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgIGNoYXJhY3RlckxpbWl0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBsYWJlbFRleHQgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgKCdza3l1eF9jaGFyYWN0ZXJfY291bnRfbWVzc2FnZSdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjaGFyYWN0ZXJDb3VudFNjcmVlblJlYWRlciA6IGNoYXJhY3RlckxpbWl0KVxuICAgICAgICA6IG51bGxcbiAgICBcIlxuICAgIFtmb3JdPVwiY29udHJvbElkXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiByZXF1aXJlZFxuICAgIH1cIlxuICAgID57eyBsYWJlbFRleHQgfX08L2xhYmVsXG4gID5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5saW5lSGVscFRlbXBsYXRlPlxuICA8c2t5LWhlbHAtaW5saW5lXG4gICAgKm5nSWY9XCJoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleVwiXG4gICAgY2xhc3M9XCJza3ktY29udHJvbC1oZWxwXCJcbiAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgLz5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtaGVscFwiIC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NoYXJhY3RlckNvdW50VGVtcGxhdGU+XG4gIDxza3ktY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yXG4gICAgKm5nSWY9XCJjaGFyYWN0ZXJMaW1pdCAhPT0gdW5kZWZpbmVkXCJcbiAgICBbY2hhcmFjdGVyQ291bnRdPVwiY29udHJvbERpcj8udmFsdWU/Lmxlbmd0aCB8fCAwXCJcbiAgICBbY2hhcmFjdGVyQ291bnRMaW1pdF09XCJjaGFyYWN0ZXJMaW1pdFwiXG4gIC8+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1jaGFyYWN0ZXItY291bnRlci1pbmRpY2F0b3JcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFRlbXBsYXRlPlxuICA8bmctY29udGVudFxuICAgIHNlbGVjdD1cImlucHV0LHNlbGVjdCwuc2t5LWZvcm0tY29udHJvbDpub3QodGV4dGFyZWEpLHNreS10ZXh0LWVkaXRvclwiXG4gIC8+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cImhvc3RJbnB1dFRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJob3N0SW5wdXRUZW1wbGF0ZVwiXG4gIC8+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInRleHRhcmVhXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uc0xlZnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNreS1pbnB1dC1ncm91cC1idG4uc2t5LWlucHV0LWJveC1idG4tbGVmdFwiIC8+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cImhvc3RCdXR0b25zTGVmdFRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJob3N0QnV0dG9uc0xlZnRUZW1wbGF0ZVwiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbnNUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnRcbiAgICBzZWxlY3Q9XCIuc2t5LWlucHV0LWdyb3VwLWJ0bjpub3QoLnNreS1pbnB1dC1ib3gtYnRuLWxlZnQpOm5vdCguc2t5LWlucHV0LWJveC1idG4taW5zZXQpXCJcbiAgLz5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiaG9zdEJ1dHRvbnNUZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG9zdEJ1dHRvbnNUZW1wbGF0ZVwiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbnNJbnNldFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWlucHV0LWdyb3VwLWJ0bi5za3ktaW5wdXQtYm94LWJ0bi1pbnNldFwiIC8+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cImhvc3RCdXR0b25zSW5zZXRUZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG9zdEJ1dHRvbnNJbnNldFRlbXBsYXRlXCJcbiAgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbnNJbnNldFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWJveC1pY29uLWluc2V0LXdyYXBwZXJcIiAoY2xpY2spPVwib25JbnNldEljb25DbGljaygpXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNreS1pbnB1dC1ncm91cC1pY29uLnNreS1pbnB1dC1ib3gtaWNvbi1pbnNldFwiIC8+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJob3N0SWNvbnNJbnNldFRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RJY29uc0luc2V0VGVtcGxhdGVcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uc0luc2V0TGVmdFRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktaW5wdXQtYm94LWljb24taW5zZXQtbGVmdC13cmFwcGVyXCJcbiAgICAoY2xpY2spPVwib25JbnNldEljb25DbGljaygpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktaW5wdXQtZ3JvdXAtaWNvbi5za3ktaW5wdXQtYm94LWljb24taW5zZXQtbGVmdFwiIC8+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJob3N0SWNvbnNJbnNldExlZnRUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJob3N0SWNvbnNJbnNldExlZnRUZW1wbGF0ZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Vycm9yTGFiZWxUZW1wbGF0ZT5cbiAgPHNreS1mb3JtLWVycm9yc1xuICAgIFtpZF09XCJlcnJvcklkXCJcbiAgICBbZXJyb3JzXT1cImNvbnRyb2xEaXI/LmVycm9yc1wiXG4gICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBlcnJvcnNTY3JlZW5SZWFkZXJPbmx5KCkgfVwiXG4gICAgW3Nob3dFcnJvcnNdPVwiY29udHJvbERpcj8udG91Y2hlZCB8fCBjb250cm9sRGlyPy5kaXJ0eVwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG4gIDwvc2t5LWZvcm0tZXJyb3JzPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWVycm9yLWxhYmVsLC5za3ktZXJyb3ItaW5kaWNhdG9yXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaGludFRleHRUZW1wbGF0ZT5cbiAgPGRpdlxuICAgICpuZ0lmPVwiaGludFRleHQgfHwgaG9zdEhpbnRUZXh0XCJcbiAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktaW5wdXQtYm94LWhpbnQtdGV4dFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1pbnB1dC1ib3gtaGludC10ZXh0LWhpZGRlbic6IGhpbnRUZXh0SGlkZGVuLFxuICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBoaW50VGV4dFNjcmVlblJlYWRlck9ubHlcbiAgICB9XCJcbiAgICBbaWRdPVwiaGludFRleHRJZFwiXG4gID5cbiAgICB7eyBoaW50VGV4dCB8IHNreUlucHV0Qm94SGludFRleHQ6IGhvc3RIaW50VGV4dCB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -402,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
402
402
  type: HostBinding,
403
403
  args: ['class.sky-margin-stacked-xl']
404
404
  }] } });
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUVSLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXhHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7QUFLdEQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRXJCOzs7OztHQUtHO0FBVUgsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQzs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxjQUFjLENBQUMsS0FBeUI7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5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LElBQUk7c0JBRGQsS0FBSztnQkFzQkMsUUFBUTtzQkFEZCxLQUFLO2dCQVNLLE9BQU87c0JBRGpCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBaUIzQixLQUFLO3NCQURmLEtBQUs7Z0JBb0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZ0JDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBUUMsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFTL0IsUUFBUTtzQkFEZCxLQUFLO2dCQVVDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFTQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBU0MsT0FBTztzQkFEYixLQUFLO2dCQWlCQyxNQUFNO3NCQURaLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUlsRCxPQUFPO3NCQURiLFdBQVc7dUJBQUMsZUFBZTtnQkFJckIsU0FBUztzQkFEZixXQUFXO3VCQUFDLDZCQUE2QjtnQkFJbkMsU0FBUztzQkFEZixXQUFXO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSwgU2t5SWRTZXJ2aWNlLCBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVEIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1lbmFibGVkLXRva2VuJztcbmltcG9ydCB7IFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9mb3JtLWZpZWxkLWxhYmVsLXRleHQtcmVxdWlyZWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBJZFNlcnZpY2UgfSBmcm9tICcuL3JhZGlvLWdyb3VwLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSYWRpb0NoYW5nZSB9IGZyb20gJy4vdHlwZXMvcmFkaW8tY2hhbmdlJztcbmltcG9ydCB7IFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfSBmcm9tICcuL3R5cGVzL3JhZGlvLWdyb3VwLWhlYWRpbmctbGV2ZWwnO1xuaW1wb3J0IHsgU2t5UmFkaW9Hcm91cEhlYWRpbmdTdHlsZSB9IGZyb20gJy4vdHlwZXMvcmFkaW8tZ3JvdXAtaGVhZGluZy1zdHlsZSc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIE9yZ2FuaXplcyByYWRpbyBidXR0b25zIGludG8gYSBncm91cC4gSXQgaXMgcmVxdWlyZWQgZm9yIHJhZGlvXG4gKiBidXR0b25zIG9uIEFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMsIGFuZCB3ZSByZWNvbW1lbmQgdXNpbmcgaXQgd2l0aCBhbGwgcmFkaW8gYnV0dG9ucy5cbiAqIE9uIEFuZ3VsYXIgZm9ybXMsIHRoZSBjb21wb25lbnQgbWFuYWdlcyB0aGUgc2VsZWN0ZWQgdmFsdWVzIGFuZCBrZWVwcyB0aGUgZm9ybXMgdXAtdG8tZGF0ZS5cbiAqIFdoZW4gdXNlcnMgc2VsZWN0IGEgcmFkaW8gYnV0dG9uLCBpdHMgdmFsdWUgaXMgZHJpdmVuIHRocm91Z2ggYW4gYG5nTW9kZWxgIGF0dHJpYnV0ZSB0aGF0IHlvdSBzcGVjaWZ5IG9uIHRoZSBgc2t5LXJhZGlvLWdyb3VwYCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcmFkaW8tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lSYWRpb0dyb3VwSWRTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVJhZGlvR3JvdXBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwIGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGhlYWRpbmdUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWxsZWRCeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2FyaWFMYWJlbGxlZEJ5ID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0dyb3VwQ29tcG9uZW50LmFyaWFMYWJlbGxlZEJ5Jywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FyaWFMYWJlbGxlZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlXG4gICAqIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGhlYWRpbmdUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhTGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreVJhZGlvR3JvdXBDb21wb25lbnQuYXJpYUxhYmVsJywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBpbnB1dCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbmV3RGlzYWJsZWRTdGF0ZSA9IFNreUZvcm1zVXRpbGl0eS5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmICh0aGlzLiNfZGlzYWJsZWQgIT09IG5ld0Rpc2FibGVkU3RhdGUpIHtcbiAgICAgIHRoaXMuI19kaXNhYmxlZCA9IG5ld0Rpc2FibGVkU3RhdGU7XG4gICAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvbkRpc2FibGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyBoZWFkaW5nIGxldmVsIGluIHRoZSBkb2N1bWVudCBzdHJ1Y3R1cmUuIEJ5IGRlZmF1bHQsIHRoZSBoZWFkaW5nIHRleHQgaXMgbm90IHdyYXBwZWQgaW4gYSBoZWFkaW5nIGVsZW1lbnQuXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGhlYWRpbmdMZXZlbCh2YWx1ZTogU2t5UmFkaW9Hcm91cEhlYWRpbmdMZXZlbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19oZWFkaW5nTGV2ZWwgPSB2YWx1ZSAmJiAhaXNOYU4odmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy4jdXBkYXRlU3RhY2tlZENsYXNzZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGVhZGluZ0xldmVsKCk6IFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaGVhZGluZ0xldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkaW5nIFtmb250IHN0eWxlXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9zdHlsZXMvdHlwb2dyYXBoeSNoZWFkaW5ncykuXG4gICAqIEBwcmV2aWV3XG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBoZWFkaW5nU3R5bGU6IFNreVJhZGlvR3JvdXBIZWFkaW5nU3R5bGUgPSA0O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgcmFkaW8gYnV0dG9ucyB0aGF0IHRoZSBjb21wb25lbnQgZ3JvdXBzIHRvZ2V0aGVyLlxuICAgKiBUaGlzIHByb3BlcnR5IG92ZXJ3cml0ZXMgdGhlIGRlcHJlY2F0ZWQgYG5hbWVgIHByb3BlcnR5IG9uIGluZGl2aWR1YWwgYHNreS1yYWRpb2AgZWxlbWVudHMsXG4gICAqIGFuZCBpdCBpcyByZXF1aXJlZCB1bmxlc3MgdGhlIGBuYW1lYCBwcm9wZXJ0eSBpcyBzZXQgb24gaW5kaXZpZHVhbCBgc2t5LXJhZGlvYCBlbGVtZW50cy5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX25hbWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX25hbWUgPSB0aGlzLiNkZWZhdWx0TmFtZTtcbiAgICB9XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25OYW1lcygpO1xuICB9XG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZCBmb3IgZm9ybSB2YWxpZGF0aW9uLlxuICAgKiBXaGVuIHlvdSBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgYWRkcyBgYXJpYS1yZXF1aXJlZGAgYW5kIGByZXF1aXJlZGBcbiAgICogYXR0cmlidXRlcyB0byB0aGUgaW5wdXQgZWxlbWVudCBzbyB0aGF0IGZvcm1zIGRpc3BsYXkgYW4gaW52YWxpZCBzdGF0ZSB1bnRpbCB0aGUgaW5wdXQgZWxlbWVudFxuICAgKiBpcyBjb21wbGV0ZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLXJlcXVpcmVkYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1yZXF1aXJlZCkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwIGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsXG4gICAqIHRoZSBhcHByb3ByaWF0ZSB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHJhZGlvIGJ1dHRvbiBncm91cC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IHN0YWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiNfc3RhY2tlZCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVN0YWNrZWRDbGFzc2VzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gYnV0dG9uIHRvIHNlbGVjdCBieSBkZWZhdWx0IHdoZW4gdGhlIGdyb3VwIGxvYWRzLlxuICAgKiBUaGUgdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhlIGB2YWx1ZWAgcHJvcGVydHkgb2YgYW4gaW5kaXZpZHVhbCBgc2t5LXJhZGlvYCBlbGVtZW50IHdpdGhpbiB0aGVcbiAgICogZ3JvdXAuXG4gICAqL1xuICAvLyBUT0RPOiBMb29rIGludG8gbW9yZSBzdHJvbmdseSB0eXBpbmcgaW4gYSBicmVha2luZyBjaGFuZ2VcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgaXNOZXdWYWx1ZSA9IHZhbHVlICE9PSB0aGlzLiNjb250cm9sVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICB0aGlzLiNjb250cm9sVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggZm9yIGFsbCB0aGUgcmFkaW8gYnV0dG9ucyBpbiB0aGUgZ3JvdXAuIElmIHRoZSBpbmRleCBpcyBub3QgZGVmaW5lZCxcbiAgICogdGhlIGluZGljZXMgZm9yIGluZGl2aWR1YWwgcmFkaW8gYnV0dG9ucyBhcmUgc2V0IHRvIHRoZWlyIHBvc2l0aW9ucyBvbiBsb2FkLlxuICAgKiBUaGlzIHByb3BlcnR5IHN1cHBvcnRzIGFjY2Vzc2liaWxpdHkgYnkgcGxhY2luZyBmb2N1cyBvbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHJhZGlvXG4gICAqIGJ1dHRvbi4gSWYgbm8gcmFkaW8gYnV0dG9uIGlzIHNlbGVjdGVkLCBpdCBwbGFjZXMgZm9jdXMgb24gdGhlIGZpcnN0IG9yIGxhc3QgYnV0dG9uXG4gICAqIGRlcGVuZGluZyBvbiBob3cgdXNlcnMgbmF2aWdhdGUgdG8gdGhlIHJhZGlvIGJ1dHRvbiBncm91cC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLiNfdGFiSW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGFiSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uVGFiSW5kZXhlcygpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSByYWRpbyBncm91cCdzIGhlYWRpbmcuXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGluZ1RleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gaGlkZSB0aGUgYGhlYWRpbmdUZXh0YC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgaGVhZGluZ0hpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBbUGVyc2lzdGVudCBpbmxpbmUgaGVscCB0ZXh0XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9ndWlkZWxpbmVzL3VzZXItYXNzaXN0YW5jZSNpbmxpbmUtaGVscCkgdGhhdCBwcm92aWRlc1xuICAgKiBhZGRpdGlvbmFsIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgaGVhZGluZ1RleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gcmFkaW8gZ3JvdXAuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpIGJ1dHRvbiBpc1xuICAgKiBwbGFjZWQgYmVzaWRlIHRoZSByYWRpbyBncm91cCBoZWFkaW5nLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgZ2xvYmFsIGhlbHAgYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBnZXQgaGVhZGluZ0NsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBza3ktZm9udC1oZWFkaW5nLSR7dGhpcy5oZWFkaW5nU3R5bGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdXIgcmFkaW8gY29tcG9uZW50cyBhcmUgdXN1YWxseSBpbXBsZW1lbnRlZCB1c2luZyBhbiB1bm9yZGVyZWQgbGlzdC4gVGhpcyBpcyBhblxuICAgKiBhY2Nlc3NpYmlsaXR5IHZpb2xhdGlvbiBiZWNhdXNlIHRoZSB1bm9yZGVyZWQgbGlzdCBoYXMgYW4gaW1wbGljaXQgcm9sZSB3aGljaFxuICAgKiBpbnRlcnJ1cHRzIHRoZSAncmFkaW9ncm91cCcgYW5kICdyYWRpbycgcmVsYXRpb25zaGlwLiBUbyBjb3JyZWN0IHRoaXMsIHdlIGNhbiBzZXQgdGhlXG4gICAqIHJhZGlvIGdyb3VwJ3MgJ2FyaWEtb3ducycgYXR0cmlidXRlIHRvIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgcmFkaW8gSURzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtb3duc2AgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtb3ducyksIGFuZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYHJhZGlvYCByb2xlLCBzZWUgW2l0cyBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI3JhZGlvKS5cbiAgICovXG4gIHB1YmxpYyBhcmlhT3duczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5UmFkaW9Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIHJhZGlvczogUXVlcnlMaXN0PFNreVJhZGlvQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKVxuICBwdWJsaWMgZGlzcGxheTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LW1hcmdpbi1zdGFja2VkLWxnJylcbiAgcHVibGljIHN0YWNrZWRMZyA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LW1hcmdpbi1zdGFja2VkLXhsJylcbiAgcHVibGljIHN0YWNrZWRYTCA9IGZhbHNlO1xuXG4gICNjb250cm9sVmFsdWU6IGFueTtcblxuICAjZGVmYXVsdE5hbWUgPSBgc2t5LXJhZGlvLWdyb3VwLSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICNfbmFtZSA9ICcnO1xuXG4gICNfdGFiSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjX2FyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNfYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2hlYWRpbmdMZXZlbDogU2t5UmFkaW9Hcm91cEhlYWRpbmdMZXZlbCB8IHVuZGVmaW5lZDtcblxuICAjX3N0YWNrZWQgPSBmYWxzZTtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjcmFkaW9Hcm91cElkU3ZjOiBTa3lSYWRpb0dyb3VwSWRTZXJ2aWNlO1xuXG4gIHJlYWRvbmx5ICNsb2dnZXIgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG4gIHJlYWRvbmx5ICNpZFNlcnZpY2UgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcblxuICByZWFkb25seSAjaGVhZGluZ1RleHRSZXF1aXJlZCA9IGluamVjdChTa3lGb3JtRmllbGRMYWJlbFRleHRSZXF1aXJlZFNlcnZpY2UsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGVycm9ySWQgPSB0aGlzLiNpZFNlcnZpY2UuZ2VuZXJhdGVJZCgpO1xuICBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHJhZGlvR3JvdXBJZFN2YzogU2t5UmFkaW9Hcm91cElkU2VydmljZSxcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjID0gcmFkaW9Hcm91cElkU3ZjO1xuICAgIHRoaXMubmdDb250cm9sID0gbmdDb250cm9sO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuI2RlZmF1bHROYW1lO1xuXG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjLnJhZGlvSWRzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpZHMpID0+IHtcbiAgICAgICAgdGhpcy5hcmlhT3ducyA9IGlkcy5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBMZXQgY2hpbGQgcmFkaW8gY29tcG9uZW50cyByZW5kZXIgYmVmb3JlIHVwZGF0aW5nLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jcmVzZXRSYWRpb0J1dHRvbnMoKTtcbiAgICB9KTtcblxuICAgIC8vIFdhdGNoIGZvciByYWRpbyBzZWxlY3Rpb25zLlxuICAgIHRoaXMud2F0Y2hGb3JTZWxlY3Rpb25zKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gV2FpdCBmb3IgY2hpbGQgcmFkaW8gY29tcG9uZW50cyB0byBmaW5pc2ggYW55IHJlbmRlcmluZyB1cGRhdGVzLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNyZXNldFJhZGlvQnV0dG9ucygpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIG5ldyByYWRpbyBidXR0b25zXG4gICAgICAgIHRoaXMud2F0Y2hGb3JTZWxlY3Rpb25zKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9XG4gICAgICAgIHRoaXMucmVxdWlyZWQgfHwgU2t5Rm9ybXNVdGlsaXR5Lmhhc1JlcXVpcmVkVmFsaWRhdGlvbih0aGlzLm5nQ29udHJvbCk7XG5cbiAgICAgIC8vIEF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHdhdGNoRm9yU2VsZWN0aW9ucygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcbiAgICAgICAgcmFkaW8uY2hhbmdlXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5UmFkaW9DaGFuZ2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI29uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGNoYW5nZS52YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmFkaW8uYmx1ci5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNvblRvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2hlYWRpbmdUZXh0UmVxdWlyZWQgJiYgIXRoaXMuaGVhZGluZ1RleHQpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gICAgdGhpcy4jaGVhZGluZ1RleHRSZXF1aXJlZD8udmFsaWRhdGVMYWJlbFRleHQodGhpcy5oZWFkaW5nVGV4dCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBpc05ld1ZhbHVlID0gdmFsdWUgIT09IHRoaXMuI2NvbnRyb2xWYWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGlzTmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2xWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy4jdXBkYXRlQ2hlY2tlZFJhZGlvRnJvbVZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcblxuICAjdXBkYXRlUmFkaW9CdXR0b25EaXNhYmxlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PlxuICAgICAgICByYWRpby5zZXRHcm91cERpc2FibGVkU3RhdGUodGhpcy5kaXNhYmxlZCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVSYWRpb0J1dHRvbk5hbWVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcbiAgICAgICAgcmFkaW8ubmFtZSA9IHRoaXMubmFtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVSYWRpb0J1dHRvblRhYkluZGV4ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgICByYWRpby5ncm91cFRhYkluZGV4ID0gdGhpcy50YWJJbmRleDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVDaGVja2VkUmFkaW9Gcm9tVmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJhZGlvcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XG4gICAgICByYWRpby5jaGVja2VkID0gdGhpcy4jY29udHJvbFZhbHVlID09PSByYWRpby52YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gICNyZXNldFJhZGlvQnV0dG9ucygpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVDaGVja2VkUmFkaW9Gcm9tVmFsdWUoKTtcbiAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvbk5hbWVzKCk7XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25UYWJJbmRleGVzKCk7XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25EaXNhYmxlZCgpO1xuICB9XG5cbiAgI3VwZGF0ZVN0YWNrZWRDbGFzc2VzKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tlZExnID0gIXRoaXMuaGVhZGluZ0xldmVsICYmIHRoaXMuc3RhY2tlZDtcbiAgICB0aGlzLnN0YWNrZWRYTCA9ICEhdGhpcy5oZWFkaW5nTGV2ZWwgJiYgdGhpcy5zdGFja2VkO1xuICB9XG59XG4iLCI8ZmllbGRzZXRcbiAgY2xhc3M9XCJza3ktcmFkaW8tZ3JvdXBcIlxuICByb2xlPVwicmFkaW9ncm91cFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiaGVhZGluZ1RleHQgPyB1bmRlZmluZWQgOiBhcmlhTGFiZWxcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGVhZGluZ1RleHQgPyB1bmRlZmluZWQgOiBhcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaGludFRleHQgPyBoaW50VGV4dEVsLmlkIDogdW5kZWZpbmVkXCJcbiAgW2F0dHIuYXJpYS1vd25zXT1cImFyaWFPd25zXCJcbiAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCA/IHRydWUgOiBudWxsXCJcbiAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWQgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5hcmlhLWludmFsaWRdPVwiISFuZ0NvbnRyb2w/LmVycm9yc1wiXG4gIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIlxuICAgIGhlYWRpbmdUZXh0ICYmIG5nQ29udHJvbD8uZXJyb3JzID8gZXJyb3JJZCA6IHVuZGVmaW5lZFxuICBcIlxuPlxuICA8c3BhbiBjbGFzcz1cInNreS1yYWRpby1ncm91cC1sYWJlbC13cmFwcGVyXCI+XG4gICAgPGxlZ2VuZFxuICAgICAgKm5nSWY9XCJoZWFkaW5nVGV4dFwiXG4gICAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBoZWFkaW5nSGlkZGVuLFxuICAgICAgICAnc2t5LW1hcmdpbi1zdGFja2VkLXNtJzogIWhpbnRUZXh0LFxuICAgICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgJ3NreS1tYXJnaW4taW5saW5lLXhzJzogaGVscFBvcG92ZXJDb250ZW50XG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFoZWFkaW5nTGV2ZWxcIiBbY2xhc3NdPVwiaGVhZGluZ0NsYXNzXCI+XG4gICAgICAgIHt7IGhlYWRpbmdUZXh0IH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8aDMgKm5nSWY9XCJoZWFkaW5nTGV2ZWwgPT09IDNcIiBbY2xhc3NdPVwiaGVhZGluZ0NsYXNzXCI+XG4gICAgICAgIHt7IGhlYWRpbmdUZXh0IH19XG4gICAgICA8L2gzPlxuICAgICAgPGg0ICpuZ0lmPVwiaGVhZGluZ0xldmVsID09PSA0XCIgW2NsYXNzXT1cImhlYWRpbmdDbGFzc1wiPlxuICAgICAgICB7eyBoZWFkaW5nVGV4dCB9fVxuICAgICAgPC9oND5cbiAgICAgIDxoNSAqbmdJZj1cImhlYWRpbmdMZXZlbCA9PT0gNVwiIFtjbGFzc109XCJoZWFkaW5nQ2xhc3NcIj5cbiAgICAgICAge3sgaGVhZGluZ1RleHQgfX1cbiAgICAgIDwvaDU+XG4gICAgPC9sZWdlbmQ+XG4gICAgPHNreS1oZWxwLWlubGluZVxuICAgICAgKm5nSWY9XCIoaGVscFBvcG92ZXJDb250ZW50IHx8IGhlbHBLZXkpICYmIGhlYWRpbmdUZXh0XCJcbiAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgW2xhYmVsVGV4dF09XCJoZWFkaW5nVGV4dFwiXG4gICAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgLz5cbiAgPC9zcGFuPlxuXG4gIDxkaXYgc2t5SWQgI2hpbnRUZXh0RWw9XCJza3lJZFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiaGludFRleHRcIlxuICAgICAgY2xhc3M9XCJza3ktZm9udC1kZWVtcGhhc2l6ZWQgc2t5LXJhZGlvLWdyb3VwLWhpbnQtdGV4dFwiXG4gICAgPlxuICAgICAge3sgaGludFRleHQgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50IC8+XG48L2ZpZWxkc2V0PlxuPHNreS1mb3JtLWVycm9yc1xuICAqbmdJZj1cImhlYWRpbmdUZXh0ICYmIG5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2lkXT1cImVycm9ySWRcIlxuICBbZXJyb3JzXT1cIm5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2xhYmVsVGV4dF09XCInc2t5dXhfcmFkaW9fZ3JvdXBfcmVxdWlyZWRfbGFiZWxfdGV4dCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICBbc2hvd0Vycm9yc109XCJuZ0NvbnRyb2w/LnRvdWNoZWQgfHwgbmdDb250cm9sPy5kaXJ0eVwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbjwvc2t5LWZvcm0tZXJyb3JzPlxuIl19
405
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUVSLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXhHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7QUFLdEQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRXJCOzs7OztHQUtHO0FBVUgsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQzs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxjQUFjLENBQUMsS0FBeUI7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5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LElBQUk7c0JBRGQsS0FBSztnQkFzQkMsUUFBUTtzQkFEZCxLQUFLO2dCQVNLLE9BQU87c0JBRGpCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBaUIzQixLQUFLO3NCQURmLEtBQUs7Z0JBb0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZ0JDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBUUMsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFTL0IsUUFBUTtzQkFEZCxLQUFLO2dCQVVDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFTQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBVUMsT0FBTztzQkFEYixLQUFLO2dCQWlCQyxNQUFNO3NCQURaLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUlsRCxPQUFPO3NCQURiLFdBQVc7dUJBQUMsZUFBZTtnQkFJckIsU0FBUztzQkFEZixXQUFXO3VCQUFDLDZCQUE2QjtnQkFJbkMsU0FBUztzQkFEZixXQUFXO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSwgU2t5SWRTZXJ2aWNlLCBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVEIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1lbmFibGVkLXRva2VuJztcbmltcG9ydCB7IFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9mb3JtLWZpZWxkLWxhYmVsLXRleHQtcmVxdWlyZWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBJZFNlcnZpY2UgfSBmcm9tICcuL3JhZGlvLWdyb3VwLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSYWRpb0NoYW5nZSB9IGZyb20gJy4vdHlwZXMvcmFkaW8tY2hhbmdlJztcbmltcG9ydCB7IFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfSBmcm9tICcuL3R5cGVzL3JhZGlvLWdyb3VwLWhlYWRpbmctbGV2ZWwnO1xuaW1wb3J0IHsgU2t5UmFkaW9Hcm91cEhlYWRpbmdTdHlsZSB9IGZyb20gJy4vdHlwZXMvcmFkaW8tZ3JvdXAtaGVhZGluZy1zdHlsZSc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIE9yZ2FuaXplcyByYWRpbyBidXR0b25zIGludG8gYSBncm91cC4gSXQgaXMgcmVxdWlyZWQgZm9yIHJhZGlvXG4gKiBidXR0b25zIG9uIEFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMsIGFuZCB3ZSByZWNvbW1lbmQgdXNpbmcgaXQgd2l0aCBhbGwgcmFkaW8gYnV0dG9ucy5cbiAqIE9uIEFuZ3VsYXIgZm9ybXMsIHRoZSBjb21wb25lbnQgbWFuYWdlcyB0aGUgc2VsZWN0ZWQgdmFsdWVzIGFuZCBrZWVwcyB0aGUgZm9ybXMgdXAtdG8tZGF0ZS5cbiAqIFdoZW4gdXNlcnMgc2VsZWN0IGEgcmFkaW8gYnV0dG9uLCBpdHMgdmFsdWUgaXMgZHJpdmVuIHRocm91Z2ggYW4gYG5nTW9kZWxgIGF0dHJpYnV0ZSB0aGF0IHlvdSBzcGVjaWZ5IG9uIHRoZSBgc2t5LXJhZGlvLWdyb3VwYCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcmFkaW8tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lSYWRpb0dyb3VwSWRTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVJhZGlvR3JvdXBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwIGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGhlYWRpbmdUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWxsZWRCeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2FyaWFMYWJlbGxlZEJ5ID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0dyb3VwQ29tcG9uZW50LmFyaWFMYWJlbGxlZEJ5Jywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FyaWFMYWJlbGxlZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlXG4gICAqIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGhlYWRpbmdUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhTGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreVJhZGlvR3JvdXBDb21wb25lbnQuYXJpYUxhYmVsJywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBpbnB1dCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbmV3RGlzYWJsZWRTdGF0ZSA9IFNreUZvcm1zVXRpbGl0eS5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmICh0aGlzLiNfZGlzYWJsZWQgIT09IG5ld0Rpc2FibGVkU3RhdGUpIHtcbiAgICAgIHRoaXMuI19kaXNhYmxlZCA9IG5ld0Rpc2FibGVkU3RhdGU7XG4gICAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvbkRpc2FibGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyBoZWFkaW5nIGxldmVsIGluIHRoZSBkb2N1bWVudCBzdHJ1Y3R1cmUuIEJ5IGRlZmF1bHQsIHRoZSBoZWFkaW5nIHRleHQgaXMgbm90IHdyYXBwZWQgaW4gYSBoZWFkaW5nIGVsZW1lbnQuXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGhlYWRpbmdMZXZlbCh2YWx1ZTogU2t5UmFkaW9Hcm91cEhlYWRpbmdMZXZlbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19oZWFkaW5nTGV2ZWwgPSB2YWx1ZSAmJiAhaXNOYU4odmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy4jdXBkYXRlU3RhY2tlZENsYXNzZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGVhZGluZ0xldmVsKCk6IFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaGVhZGluZ0xldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkaW5nIFtmb250IHN0eWxlXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9zdHlsZXMvdHlwb2dyYXBoeSNoZWFkaW5ncykuXG4gICAqIEBwcmV2aWV3XG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBoZWFkaW5nU3R5bGU6IFNreVJhZGlvR3JvdXBIZWFkaW5nU3R5bGUgPSA0O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgcmFkaW8gYnV0dG9ucyB0aGF0IHRoZSBjb21wb25lbnQgZ3JvdXBzIHRvZ2V0aGVyLlxuICAgKiBUaGlzIHByb3BlcnR5IG92ZXJ3cml0ZXMgdGhlIGRlcHJlY2F0ZWQgYG5hbWVgIHByb3BlcnR5IG9uIGluZGl2aWR1YWwgYHNreS1yYWRpb2AgZWxlbWVudHMsXG4gICAqIGFuZCBpdCBpcyByZXF1aXJlZCB1bmxlc3MgdGhlIGBuYW1lYCBwcm9wZXJ0eSBpcyBzZXQgb24gaW5kaXZpZHVhbCBgc2t5LXJhZGlvYCBlbGVtZW50cy5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX25hbWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX25hbWUgPSB0aGlzLiNkZWZhdWx0TmFtZTtcbiAgICB9XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25OYW1lcygpO1xuICB9XG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZCBmb3IgZm9ybSB2YWxpZGF0aW9uLlxuICAgKiBXaGVuIHlvdSBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgYWRkcyBgYXJpYS1yZXF1aXJlZGAgYW5kIGByZXF1aXJlZGBcbiAgICogYXR0cmlidXRlcyB0byB0aGUgaW5wdXQgZWxlbWVudCBzbyB0aGF0IGZvcm1zIGRpc3BsYXkgYW4gaW52YWxpZCBzdGF0ZSB1bnRpbCB0aGUgaW5wdXQgZWxlbWVudFxuICAgKiBpcyBjb21wbGV0ZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLXJlcXVpcmVkYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1yZXF1aXJlZCkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwIGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsXG4gICAqIHRoZSBhcHByb3ByaWF0ZSB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHJhZGlvIGJ1dHRvbiBncm91cC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IHN0YWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiNfc3RhY2tlZCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVN0YWNrZWRDbGFzc2VzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gYnV0dG9uIHRvIHNlbGVjdCBieSBkZWZhdWx0IHdoZW4gdGhlIGdyb3VwIGxvYWRzLlxuICAgKiBUaGUgdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhlIGB2YWx1ZWAgcHJvcGVydHkgb2YgYW4gaW5kaXZpZHVhbCBgc2t5LXJhZGlvYCBlbGVtZW50IHdpdGhpbiB0aGVcbiAgICogZ3JvdXAuXG4gICAqL1xuICAvLyBUT0RPOiBMb29rIGludG8gbW9yZSBzdHJvbmdseSB0eXBpbmcgaW4gYSBicmVha2luZyBjaGFuZ2VcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgaXNOZXdWYWx1ZSA9IHZhbHVlICE9PSB0aGlzLiNjb250cm9sVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICB0aGlzLiNjb250cm9sVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggZm9yIGFsbCB0aGUgcmFkaW8gYnV0dG9ucyBpbiB0aGUgZ3JvdXAuIElmIHRoZSBpbmRleCBpcyBub3QgZGVmaW5lZCxcbiAgICogdGhlIGluZGljZXMgZm9yIGluZGl2aWR1YWwgcmFkaW8gYnV0dG9ucyBhcmUgc2V0IHRvIHRoZWlyIHBvc2l0aW9ucyBvbiBsb2FkLlxuICAgKiBUaGlzIHByb3BlcnR5IHN1cHBvcnRzIGFjY2Vzc2liaWxpdHkgYnkgcGxhY2luZyBmb2N1cyBvbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHJhZGlvXG4gICAqIGJ1dHRvbi4gSWYgbm8gcmFkaW8gYnV0dG9uIGlzIHNlbGVjdGVkLCBpdCBwbGFjZXMgZm9jdXMgb24gdGhlIGZpcnN0IG9yIGxhc3QgYnV0dG9uXG4gICAqIGRlcGVuZGluZyBvbiBob3cgdXNlcnMgbmF2aWdhdGUgdG8gdGhlIHJhZGlvIGJ1dHRvbiBncm91cC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLiNfdGFiSW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGFiSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uVGFiSW5kZXhlcygpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSByYWRpbyBncm91cCdzIGhlYWRpbmcuXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGluZ1RleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gaGlkZSB0aGUgYGhlYWRpbmdUZXh0YC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgaGVhZGluZ0hpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBbUGVyc2lzdGVudCBpbmxpbmUgaGVscCB0ZXh0XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9ndWlkZWxpbmVzL3VzZXItYXNzaXN0YW5jZSNpbmxpbmUtaGVscCkgdGhhdCBwcm92aWRlc1xuICAgKiBhZGRpdGlvbmFsIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgaGVhZGluZ1RleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gcmFkaW8gZ3JvdXAuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBwbGFjZWQgYmVzaWRlIHRoZSByYWRpbyBncm91cCBoZWFkaW5nLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZ2V0IGhlYWRpbmdDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgc2t5LWZvbnQtaGVhZGluZy0ke3RoaXMuaGVhZGluZ1N0eWxlfWA7XG4gIH1cblxuICAvKipcbiAgICogT3VyIHJhZGlvIGNvbXBvbmVudHMgYXJlIHVzdWFsbHkgaW1wbGVtZW50ZWQgdXNpbmcgYW4gdW5vcmRlcmVkIGxpc3QuIFRoaXMgaXMgYW5cbiAgICogYWNjZXNzaWJpbGl0eSB2aW9sYXRpb24gYmVjYXVzZSB0aGUgdW5vcmRlcmVkIGxpc3QgaGFzIGFuIGltcGxpY2l0IHJvbGUgd2hpY2hcbiAgICogaW50ZXJydXB0cyB0aGUgJ3JhZGlvZ3JvdXAnIGFuZCAncmFkaW8nIHJlbGF0aW9uc2hpcC4gVG8gY29ycmVjdCB0aGlzLCB3ZSBjYW4gc2V0IHRoZVxuICAgKiByYWRpbyBncm91cCdzICdhcmlhLW93bnMnIGF0dHJpYnV0ZSB0byBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHJhZGlvIElEcy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLW93bnNgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLW93bnMpLCBhbmQgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGByYWRpb2Agcm9sZSwgc2VlIFtpdHMgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNyYWRpbykuXG4gICAqL1xuICBwdWJsaWMgYXJpYU93bnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkcmVuKFNreVJhZGlvQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyByYWRpb3M6IFF1ZXJ5TGlzdDxTa3lSYWRpb0NvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgcHVibGljIGRpc3BsYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1tYXJnaW4tc3RhY2tlZC1sZycpXG4gIHB1YmxpYyBzdGFja2VkTGcgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1tYXJnaW4tc3RhY2tlZC14bCcpXG4gIHB1YmxpYyBzdGFja2VkWEwgPSBmYWxzZTtcblxuICAjY29udHJvbFZhbHVlOiBhbnk7XG5cbiAgI2RlZmF1bHROYW1lID0gYHNreS1yYWRpby1ncm91cC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAjX25hbWUgPSAnJztcblxuICAjX3RhYkluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI19hcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2FyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI19oZWFkaW5nTGV2ZWw6IFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfCB1bmRlZmluZWQ7XG5cbiAgI19zdGFja2VkID0gZmFsc2U7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3JhZGlvR3JvdXBJZFN2YzogU2t5UmFkaW9Hcm91cElkU2VydmljZTtcblxuICByZWFkb25seSAjbG9nZ2VyID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuICByZWFkb25seSAjaWRTZXJ2aWNlID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgI2hlYWRpbmdUZXh0UmVxdWlyZWQgPSBpbmplY3QoU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBlcnJvcklkID0gdGhpcy4jaWRTZXJ2aWNlLmdlbmVyYXRlSWQoKTtcbiAgcHJvdGVjdGVkIG5nQ29udHJvbDogTmdDb250cm9sIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICByYWRpb0dyb3VwSWRTdmM6IFNreVJhZGlvR3JvdXBJZFNlcnZpY2UsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3JhZGlvR3JvdXBJZFN2YyA9IHJhZGlvR3JvdXBJZFN2YztcbiAgICB0aGlzLm5nQ29udHJvbCA9IG5nQ29udHJvbDtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLiNkZWZhdWx0TmFtZTtcblxuICAgIHRoaXMuI3JhZGlvR3JvdXBJZFN2Yy5yYWRpb0lkc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaWRzKSA9PiB7XG4gICAgICAgIHRoaXMuYXJpYU93bnMgPSBpZHMuam9pbignICcpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLy8gTGV0IGNoaWxkIHJhZGlvIGNvbXBvbmVudHMgcmVuZGVyIGJlZm9yZSB1cGRhdGluZy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI3Jlc2V0UmFkaW9CdXR0b25zKCk7XG4gICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgcmFkaW8gc2VsZWN0aW9ucy5cbiAgICB0aGlzLndhdGNoRm9yU2VsZWN0aW9ucygpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIFdhaXQgZm9yIGNoaWxkIHJhZGlvIGNvbXBvbmVudHMgdG8gZmluaXNoIGFueSByZW5kZXJpbmcgdXBkYXRlcy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jcmVzZXRSYWRpb0J1dHRvbnMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBuZXcgcmFkaW8gYnV0dG9uc1xuICAgICAgICB0aGlzLndhdGNoRm9yU2VsZWN0aW9ucygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPVxuICAgICAgICB0aGlzLnJlcXVpcmVkIHx8IFNreUZvcm1zVXRpbGl0eS5oYXNSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5uZ0NvbnRyb2wpO1xuXG4gICAgICAvLyBBdm9pZCBhbiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLlxuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3YXRjaEZvclNlbGVjdGlvbnMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XG4gICAgICAgIHJhZGlvLmNoYW5nZVxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2U6IFNreVJhZGlvQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNvblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBjaGFuZ2UudmFsdWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJhZGlvLmJsdXIucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jb25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNoZWFkaW5nVGV4dFJlcXVpcmVkICYmICF0aGlzLmhlYWRpbmdUZXh0KSB7XG4gICAgICB0aGlzLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuICAgIHRoaXMuI2hlYWRpbmdUZXh0UmVxdWlyZWQ/LnZhbGlkYXRlTGFiZWxUZXh0KHRoaXMuaGVhZGluZ1RleHQpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgaXNOZXdWYWx1ZSA9IHZhbHVlICE9PSB0aGlzLiNjb250cm9sVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICB0aGlzLiNjb250cm9sVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBjb250cm9sLiBJbXBsZW1lbnRlZCBhcyBhIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNvblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI29uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4ge307XG5cbiAgI3VwZGF0ZVJhZGlvQnV0dG9uRGlzYWJsZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT5cbiAgICAgICAgcmFkaW8uc2V0R3JvdXBEaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlUmFkaW9CdXR0b25OYW1lcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XG4gICAgICAgIHJhZGlvLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlUmFkaW9CdXR0b25UYWJJbmRleGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcbiAgICAgICAgcmFkaW8uZ3JvdXBUYWJJbmRleCA9IHRoaXMudGFiSW5kZXg7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQ2hlY2tlZFJhZGlvRnJvbVZhbHVlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yYWRpb3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgcmFkaW8uY2hlY2tlZCA9IHRoaXMuI2NvbnRyb2xWYWx1ZSA9PT0gcmFkaW8udmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICAjcmVzZXRSYWRpb0J1dHRvbnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlQ2hlY2tlZFJhZGlvRnJvbVZhbHVlKCk7XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25OYW1lcygpO1xuICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uVGFiSW5kZXhlcygpO1xuICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uRGlzYWJsZWQoKTtcbiAgfVxuXG4gICN1cGRhdGVTdGFja2VkQ2xhc3NlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrZWRMZyA9ICF0aGlzLmhlYWRpbmdMZXZlbCAmJiB0aGlzLnN0YWNrZWQ7XG4gICAgdGhpcy5zdGFja2VkWEwgPSAhIXRoaXMuaGVhZGluZ0xldmVsICYmIHRoaXMuc3RhY2tlZDtcbiAgfVxufVxuIiwiPGZpZWxkc2V0XG4gIGNsYXNzPVwic2t5LXJhZGlvLWdyb3VwXCJcbiAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImhlYWRpbmdUZXh0ID8gdW5kZWZpbmVkIDogYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImhlYWRpbmdUZXh0ID8gdW5kZWZpbmVkIDogYXJpYUxhYmVsbGVkQnlcIlxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhpbnRUZXh0ID8gaGludFRleHRFbC5pZCA6IHVuZGVmaW5lZFwiXG4gIFthdHRyLmFyaWEtb3duc109XCJhcmlhT3duc1wiXG4gIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgPyB0cnVlIDogbnVsbFwiXG4gIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkID8gJycgOiBudWxsXCJcbiAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiEhbmdDb250cm9sPy5lcnJvcnNcIlxuICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJcbiAgICBoZWFkaW5nVGV4dCAmJiBuZ0NvbnRyb2w/LmVycm9ycyA/IGVycm9ySWQgOiB1bmRlZmluZWRcbiAgXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJza3ktcmFkaW8tZ3JvdXAtbGFiZWwtd3JhcHBlclwiPlxuICAgIDxsZWdlbmRcbiAgICAgICpuZ0lmPVwiaGVhZGluZ1RleHRcIlxuICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktc2NyZWVuLXJlYWRlci1vbmx5JzogaGVhZGluZ0hpZGRlbixcbiAgICAgICAgJ3NreS1tYXJnaW4tc3RhY2tlZC1zbSc6ICFoaW50VGV4dCxcbiAgICAgICAgJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJzogcmVxdWlyZWQsXG4gICAgICAgICdza3ktbWFyZ2luLWlubGluZS14cyc6IGhlbHBQb3BvdmVyQ29udGVudFxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGluZ0xldmVsXCIgW2NsYXNzXT1cImhlYWRpbmdDbGFzc1wiPlxuICAgICAgICB7eyBoZWFkaW5nVGV4dCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGgzICpuZ0lmPVwiaGVhZGluZ0xldmVsID09PSAzXCIgW2NsYXNzXT1cImhlYWRpbmdDbGFzc1wiPlxuICAgICAgICB7eyBoZWFkaW5nVGV4dCB9fVxuICAgICAgPC9oMz5cbiAgICAgIDxoNCAqbmdJZj1cImhlYWRpbmdMZXZlbCA9PT0gNFwiIFtjbGFzc109XCJoZWFkaW5nQ2xhc3NcIj5cbiAgICAgICAge3sgaGVhZGluZ1RleHQgfX1cbiAgICAgIDwvaDQ+XG4gICAgICA8aDUgKm5nSWY9XCJoZWFkaW5nTGV2ZWwgPT09IDVcIiBbY2xhc3NdPVwiaGVhZGluZ0NsYXNzXCI+XG4gICAgICAgIHt7IGhlYWRpbmdUZXh0IH19XG4gICAgICA8L2g1PlxuICAgIDwvbGVnZW5kPlxuICAgIDxza3ktaGVscC1pbmxpbmVcbiAgICAgICpuZ0lmPVwiKGhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5KSAmJiBoZWFkaW5nVGV4dFwiXG4gICAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICAgIFtsYWJlbFRleHRdPVwiaGVhZGluZ1RleHRcIlxuICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgIC8+XG4gIDwvc3Bhbj5cblxuICA8ZGl2IHNreUlkICNoaW50VGV4dEVsPVwic2t5SWRcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImhpbnRUZXh0XCJcbiAgICAgIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1yYWRpby1ncm91cC1oaW50LXRleHRcIlxuICAgID5cbiAgICAgIHt7IGhpbnRUZXh0IH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCAvPlxuPC9maWVsZHNldD5cbjxza3ktZm9ybS1lcnJvcnNcbiAgKm5nSWY9XCJoZWFkaW5nVGV4dCAmJiBuZ0NvbnRyb2w/LmVycm9yc1wiXG4gIFtpZF09XCJlcnJvcklkXCJcbiAgW2Vycm9yc109XCJuZ0NvbnRyb2w/LmVycm9yc1wiXG4gIFtsYWJlbFRleHRdPVwiJ3NreXV4X3JhZGlvX2dyb3VwX3JlcXVpcmVkX2xhYmVsX3RleHQnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgW3Nob3dFcnJvcnNdPVwibmdDb250cm9sPy50b3VjaGVkIHx8IG5nQ29udHJvbD8uZGlydHlcIlxuPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG48L3NreS1mb3JtLWVycm9ycz5cbiJdfQ==