@skyux/phone-field 11.0.0 → 11.2.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.
@@ -143,14 +143,11 @@ export class SkyPhoneFieldInputDirective {
143
143
  onBlur() {
144
144
  this.#notifyTouched?.();
145
145
  }
146
- onChange() {
147
- const value = this.#adapterSvc?.getInputValue(this.#elRef);
148
- this.#setValue(value);
149
- this.#notifyChange?.(this.#getValue());
150
- }
151
146
  onInput() {
152
147
  const value = this.#adapterSvc?.getInputValue(this.#elRef);
153
148
  this.#phoneFieldComponent?.setCountryByDialCode(value);
149
+ this.#setValue(value);
150
+ this.#notifyChange?.(this.#getValue());
154
151
  }
155
152
  #formatPhoneNumber(value) {
156
153
  if (!value) {
@@ -212,7 +209,7 @@ export class SkyPhoneFieldInputDirective {
212
209
  }
213
210
  }
214
211
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: SkyPhoneFieldInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
215
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.3", type: SkyPhoneFieldInputDirective, selector: "[skyPhoneFieldInput]", inputs: { disabled: ["disabled", "disabled", booleanAttribute], skyPhoneFieldNoValidate: ["skyPhoneFieldNoValidate", "skyPhoneFieldNoValidate", booleanAttribute] }, host: { listeners: { "blur": "onBlur()", "change": "onChange()", "input": "onInput()" } }, providers: [
212
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.3", type: SkyPhoneFieldInputDirective, selector: "[skyPhoneFieldInput]", inputs: { disabled: ["disabled", "disabled", booleanAttribute], skyPhoneFieldNoValidate: ["skyPhoneFieldNoValidate", "skyPhoneFieldNoValidate", booleanAttribute] }, host: { listeners: { "blur": "onBlur()", "input": "onInput()" } }, providers: [
216
213
  {
217
214
  provide: NG_VALIDATORS,
218
215
  useExisting: SkyPhoneFieldInputDirective,
@@ -251,11 +248,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
251
248
  }], onBlur: [{
252
249
  type: HostListener,
253
250
  args: ['blur']
254
- }], onChange: [{
255
- type: HostListener,
256
- args: ['change']
257
251
  }], onInput: [{
258
252
  type: HostListener,
259
253
  args: ['input']
260
254
  }] } });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZmllbGQtaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bob25lLWZpZWxkL3NyYy9saWIvbW9kdWxlcy9waG9uZS1maWVsZC9waG9uZS1maWVsZC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxnQkFBZ0IsRUFDaEIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFakU7Ozs7Ozs7Ozs7OztHQVlHO0FBZ0JILE1BQU0sT0FBTywyQkFBMkI7SUFmeEM7UUFxQ0U7Ozs7OztXQU1HO1FBRUksNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBRXZDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUdyQyxnQkFBVyxHQUFHLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRTtZQUN6RCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FD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LEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OEJBVVksUUFBUTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFzQi9CLHVCQUF1QjtzQkFEN0IsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFrSDVCLE1BQU07c0JBRGYsWUFBWTt1QkFBQyxNQUFNO2dCQU1WLFFBQVE7c0JBRGpCLFlBQVk7dUJBQUMsUUFBUTtnQkFRWixPQUFPO3NCQURoQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBQaG9uZU51bWJlckZvcm1hdCwgUGhvbmVOdW1iZXJVdGlsIH0gZnJvbSAnZ29vZ2xlLWxpYnBob25lbnVtYmVyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lQaG9uZUZpZWxkQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3Bob25lLWZpZWxkLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9waG9uZS1maWVsZC5jb21wb25lbnQnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBidXR0b24sIHNlYXJjaCBpbnB1dCwgYW5kIHRleHQgaW5wdXQgZm9yIGVudGVyaW5nIGFuZCB2YWxpZGF0aW5nXG4gKiBpbnRlcm5hdGlvbmFsIHBob25lIG51bWJlcnMuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIGFuIGBpbnB1dGAgZWxlbWVudCwgYW5kIHdyYXBcbiAqIHRoYXQgZWxlbWVudCBpbiBhIGBza3ktcGhvbmUtZmllbGRgIGNvbXBvbmVudC4gQnkgZGVmYXVsdCwgdGhlIGNvdW50cnkgc2VsZWN0b3JcbiAqIGJ1dHRvbiBkaXNwbGF5cyBhIGZsYWcgaWNvbiBmb3IgdGhlIGRlZmF1bHQgY291bnRyeSwgYW5kIHRoZSBwaG9uZSBudW1iZXIgaW5wdXRcbiAqIGRpc3BsYXlzIGEgc2FtcGxlIG9mIHRoZSBjb3JyZWN0IHBob25lIG51bWJlciBmb3JtYXQuIFdoZW4gdXNlcnMgc2VsZWN0IHRoZSBjb3VudHJ5XG4gKiBzZWxlY3RvciBidXR0b24sIHRoZXkgZXhwb3NlIHRoZSBjb3VudHJ5IHNlYXJjaCBpbnB1dCwgd2hpY2ggaXNcbiAqIFthbiBhdXRvY29tcGxldGUgaW5wdXRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9hdXRvY29tcGxldGUpXG4gKiB0aGF0IGFsbG93cyB0aGVtIHRvIHNlbGVjdCBkaWZmZXJlbnQgY291bnRyaWVzLiBXaGVuIHVzZXJzIGVudGVyIGArYCBmb2xsb3dlZCBieSBhblxuICogaW50ZXJuYXRpb25hbCBkaWFsIGNvZGUgaW4gdGhlIHBob25lIG51bWJlciBpbnB1dCwgdGhlIGNvdW50cnkgYXV0b21hdGljYWxseSBzd2l0Y2hlc1xuICogdG8gdGhlIGNvdW50cnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaWFsIGNvZGUuXG4gKiBAcmVxdWlyZWRcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVBob25lRmllbGRJbnB1dF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreVBob25lRmllbGRJbnB1dERpcmVjdGl2ZSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogU2t5UGhvbmVGaWVsZElucHV0RGlyZWN0aXZlLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UGhvbmVGaWVsZElucHV0RGlyZWN0aXZlXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgcGhvbmUgZmllbGQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudCkge1xuICAgICAgdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudC5jb3VudHJ5U2VsZWN0RGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTdmM/LnNldEVsZW1lbnREaXNhYmxlZFN0YXRlKHRoaXMuI2VsUmVmLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmV2ZW50IHZhbGlkYXRpb24gb24gdGhlIHBob25lIG51bWJlciBpbnB1dC4gRm9yIHZhbGlkYXRpb24sXG4gICAqIHBob25lIG51bWJlcnMgYXJlIGRyaXZlbiB0aHJvdWdoIHRoZSBgbmdNb2RlbGAgYXR0cmlidXRlIHRoYXQgeW91IHNwZWNpZnkgb24gYW5cbiAgICogYGlucHV0YCBlbGVtZW50IG9yIG9uIGEgYEZvcm1Db250cm9sYCBpbiBhIHJlYWN0aXZlIGZvcm0uIFRvIHByZXZlbnQgdmFsaWRhdGlvbixcbiAgICogc2V0IHRoaXMgcHJvcGVydHkgdG8gYHRydWVgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBza3lQaG9uZUZpZWxkTm9WYWxpZGF0ZSA9IGZhbHNlO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI192YWx1ZSA9ICcnO1xuICAjY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNub3RpZnlDaGFuZ2U6ICgodmFsdWU6IHN0cmluZykgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICNwaG9uZVV0aWxzID0gUGhvbmVOdW1iZXJVdGlsLmdldEluc3RhbmNlKCk7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXJTdmMgPSBpbmplY3QoU2t5UGhvbmVGaWVsZEFkYXB0ZXJTZXJ2aWNlLCB7XG4gICAgaG9zdDogdHJ1ZSxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBza2lwU2VsZjogdHJ1ZSxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgI2VsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICByZWFkb25seSAjcGhvbmVGaWVsZENvbXBvbmVudCA9IGluamVjdChTa3lQaG9uZUZpZWxkQ29tcG9uZW50LCB7XG4gICAgaG9zdDogdHJ1ZSxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnWW91IG11c3Qgd3JhcCB0aGUgYHNreVBob25lRmllbGRJbnB1dGAgZGlyZWN0aXZlIHdpdGhpbiBhICcgK1xuICAgICAgICAgICdgPHNreS1waG9uZS1maWVsZD5gIGNvbXBvbmVudCEnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNhZGFwdGVyU3ZjPy5zZXRFbGVtZW50VHlwZSh0aGlzLiNlbFJlZik7XG4gICAgdGhpcy4jYWRhcHRlclN2Yz8uYWRkRWxlbWVudENsYXNzKHRoaXMuI2VsUmVmLCAnc2t5LWZvcm0tY29udHJvbCcpO1xuXG4gICAgdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudD8uc2VsZWN0ZWRDb3VudHJ5Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiNhZGFwdGVyU3ZjPy5nZXRJbnB1dFZhbHVlKHRoaXMuI2VsUmVmKTtcbiAgICAgICAgdGhpcy4jc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLiNjb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQuY291bnRyeVNlYXJjaEZvcm1cbiAgICAgIC5nZXQoJ2NvdW50cnlTZWFyY2gnKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSksIHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jY29udHJvbD8ubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy4jY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5Q2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlUb3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHRoaXMuI2NvbnRyb2wgPz89IGNvbnRyb2w7XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlIHx8IHRoaXMuc2t5UGhvbmVGaWVsZE5vVmFsaWRhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy4jaXNWYWxpZFBob25lTnVtYmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2t5UGhvbmVGaWVsZDoge1xuICAgICAgICAgIGludmFsaWQ6IHZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiAnJztcblxuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNldENvdW50cnlCeURpYWxDb2RlKHJhd1ZhbHVlKTtcbiAgICB0aGlzLiNhZGFwdGVyU3ZjPy5zZXRFbGVtZW50VmFsdWUodGhpcy4jZWxSZWYsIHJhd1ZhbHVlKTtcblxuICAgIHRoaXMuI3NldFZhbHVlKHJhd1ZhbHVlKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG5cbiAgICBpZiAocmF3VmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgc2V0IGJlZm9yZSB0aGUgY29udHJvbCBpcyBpbml0aWFsaXplZCwgd2FpdCBmb3IgdGhlXG4gICAgICAvLyBmaXJzdCBjeWNsZSB0byBjb21wbGV0ZSBiZWZvcmUgdHJpZ2dlcmluZyBhIHZhbHVlIGNoYW5nZSBldmVudC5cbiAgICAgIC8vIChUaGlzIG9jY3VycyB3aGVuIHRoZSBjb250cm9sIGlzIGluaXRpYWxpemVkIHdpdGggYW4gdW5mb3JtYXR0ZWQgdmFsdWVcbiAgICAgIC8vIGJ1dCBpcyBmb3JtYXR0ZWQgaW50byBhIG5ldyB2YWx1ZSBpbW1lZGlhdGVseSBpbiB0aGUgYHdyaXRlVmFsdWVgXG4gICAgICAvLyBtZXRob2QuKVxuICAgICAgaWYgKCF0aGlzLiNjb250cm9sKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKG5ld1ZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNub3RpZnlDaGFuZ2U/LihuZXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIHByb3RlY3RlZCBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnKVxuICBwcm90ZWN0ZWQgb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLiNhZGFwdGVyU3ZjPy5nZXRJbnB1dFZhbHVlKHRoaXMuI2VsUmVmKTtcbiAgICB0aGlzLiNzZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4odGhpcy4jZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gIHByb3RlY3RlZCBvbklucHV0KCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jYWRhcHRlclN2Yz8uZ2V0SW5wdXRWYWx1ZSh0aGlzLiNlbFJlZik7XG4gICAgdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudD8uc2V0Q291bnRyeUJ5RGlhbENvZGUodmFsdWUpO1xuICB9XG5cbiAgI2Zvcm1hdFBob25lTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0Q291bnRyeSA9IHRoaXMuI2dldERlZmF1bHRDb3VudHJ5KCk7XG4gICAgY29uc3QgcmVnaW9uQ29kZSA9IHRoaXMuI2dldFJlZ2lvbkNvZGUoKTtcbiAgICBjb25zdCByZXR1cm5Gb3JtYXQgPSB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50Py5yZXR1cm5Gb3JtYXQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGhvbmVOdW1iZXIgPSB0aGlzLiNwaG9uZVV0aWxzLnBhcnNlQW5kS2VlcFJhd0lucHV0KFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVnaW9uQ29kZSA/PyBkZWZhdWx0Q291bnRyeSxcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLiNwaG9uZVV0aWxzLmlzUG9zc2libGVOdW1iZXIocGhvbmVOdW1iZXIpKSB7XG4gICAgICAgIHN3aXRjaCAocmV0dXJuRm9ybWF0KSB7XG4gICAgICAgICAgY2FzZSAnaW50ZXJuYXRpb25hbCc6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jcGhvbmVVdGlscy5mb3JtYXQoXG4gICAgICAgICAgICAgIHBob25lTnVtYmVyLFxuICAgICAgICAgICAgICBQaG9uZU51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGNhc2UgJ25hdGlvbmFsJzpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNwaG9uZVV0aWxzLmZvcm1hdChcbiAgICAgICAgICAgICAgcGhvbmVOdW1iZXIsXG4gICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0Lk5BVElPTkFMLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gcmVnaW9uQ29kZSAmJiByZWdpb25Db2RlICE9PSBkZWZhdWx0Q291bnRyeVxuICAgICAgICAgICAgICA/IHRoaXMuI3Bob25lVXRpbHMuZm9ybWF0KFxuICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICBQaG9uZU51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiB0aGlzLiNwaG9uZVV0aWxzLmZvcm1hdChcbiAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgUGhvbmVOdW1iZXJGb3JtYXQuTkFUSU9OQUwsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLyogKi9cbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAjZ2V0RGVmYXVsdENvdW50cnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudD8uZGVmYXVsdENvdW50cnk7XG4gIH1cblxuICAjZ2V0UmVnaW9uQ29kZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50Py5zZWxlY3RlZENvdW50cnk/LmlzbzI7XG4gIH1cblxuICAjZ2V0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgI2lzVmFsaWRQaG9uZU51bWJlcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGVmYXVsdENvdW50cnkgPSB0aGlzLiNnZXREZWZhdWx0Q291bnRyeSgpO1xuICAgIGNvbnN0IHJlZ2lvbkNvZGUgPSB0aGlzLiNnZXRSZWdpb25Db2RlKCkgPz8gZGVmYXVsdENvdW50cnk7XG4gICAgY29uc3QgYWxsb3dFeHRlbnNpb25zID0gISF0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50Py5hbGxvd0V4dGVuc2lvbnM7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGhvbmVOdW1iZXIgPSB0aGlzLiNwaG9uZVV0aWxzLnBhcnNlQW5kS2VlcFJhd0lucHV0KFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVnaW9uQ29kZSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghYWxsb3dFeHRlbnNpb25zICYmIHBob25lTnVtYmVyLmdldEV4dGVuc2lvbigpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuaXNWYWxpZE51bWJlckZvclJlZ2lvbihwaG9uZU51bWJlciwgcmVnaW9uQ29kZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICNzZXRWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy4jZm9ybWF0UGhvbmVOdW1iZXIodmFsdWUpO1xuICAgICAgdGhpcy4jX3ZhbHVlID0gZm9ybWF0dGVkID8/IHZhbHVlO1xuICAgIH1cbiAgfVxufVxuIl19
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZmllbGQtaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bob25lLWZpZWxkL3NyYy9saWIvbW9kdWxlcy9waG9uZS1maWVsZC9waG9uZS1maWVsZC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxnQkFBZ0IsRUFDaEIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFakU7Ozs7Ozs7Ozs7OztHQVlHO0FBZ0JILE1BQU0sT0FBTywyQkFBMkI7SUFmeEM7UUFxQ0U7Ozs7OztXQU1HO1FBRUksNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBRXZDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUdyQyxnQkFBVyxHQUFHLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRTtZQUN6RCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FD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QUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQXNCL0IsdUJBQXVCO3NCQUQ3QixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWtINUIsTUFBTTtzQkFEZixZQUFZO3VCQUFDLE1BQU07Z0JBTVYsT0FBTztzQkFEaEIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgUGhvbmVOdW1iZXJGb3JtYXQsIFBob25lTnVtYmVyVXRpbCB9IGZyb20gJ2dvb2dsZS1saWJwaG9uZW51bWJlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5UGhvbmVGaWVsZEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9waG9uZS1maWVsZC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UGhvbmVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vcGhvbmUtZmllbGQuY29tcG9uZW50JztcblxuLyoqXG4gKiBDcmVhdGVzIGEgYnV0dG9uLCBzZWFyY2ggaW5wdXQsIGFuZCB0ZXh0IGlucHV0IGZvciBlbnRlcmluZyBhbmQgdmFsaWRhdGluZ1xuICogaW50ZXJuYXRpb25hbCBwaG9uZSBudW1iZXJzLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsIGFuZCB3cmFwXG4gKiB0aGF0IGVsZW1lbnQgaW4gYSBgc2t5LXBob25lLWZpZWxkYCBjb21wb25lbnQuIEJ5IGRlZmF1bHQsIHRoZSBjb3VudHJ5IHNlbGVjdG9yXG4gKiBidXR0b24gZGlzcGxheXMgYSBmbGFnIGljb24gZm9yIHRoZSBkZWZhdWx0IGNvdW50cnksIGFuZCB0aGUgcGhvbmUgbnVtYmVyIGlucHV0XG4gKiBkaXNwbGF5cyBhIHNhbXBsZSBvZiB0aGUgY29ycmVjdCBwaG9uZSBudW1iZXIgZm9ybWF0LiBXaGVuIHVzZXJzIHNlbGVjdCB0aGUgY291bnRyeVxuICogc2VsZWN0b3IgYnV0dG9uLCB0aGV5IGV4cG9zZSB0aGUgY291bnRyeSBzZWFyY2ggaW5wdXQsIHdoaWNoIGlzXG4gKiBbYW4gYXV0b2NvbXBsZXRlIGlucHV0XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlKVxuICogdGhhdCBhbGxvd3MgdGhlbSB0byBzZWxlY3QgZGlmZmVyZW50IGNvdW50cmllcy4gV2hlbiB1c2VycyBlbnRlciBgK2AgZm9sbG93ZWQgYnkgYW5cbiAqIGludGVybmF0aW9uYWwgZGlhbCBjb2RlIGluIHRoZSBwaG9uZSBudW1iZXIgaW5wdXQsIHRoZSBjb3VudHJ5IGF1dG9tYXRpY2FsbHkgc3dpdGNoZXNcbiAqIHRvIHRoZSBjb3VudHJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGlhbCBjb2RlLlxuICogQHJlcXVpcmVkXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lQaG9uZUZpZWxkSW5wdXRdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lQaG9uZUZpZWxkSW5wdXREaXJlY3RpdmUsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreVBob25lRmllbGRJbnB1dERpcmVjdGl2ZSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVBob25lRmllbGRJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHBob25lIGZpZWxkIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQuY291bnRyeVNlbGVjdERpc2FibGVkID0gdmFsdWU7XG4gICAgICB0aGlzLiNhZGFwdGVyU3ZjPy5zZXRFbGVtZW50RGlzYWJsZWRTdGF0ZSh0aGlzLiNlbFJlZiwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJldmVudCB2YWxpZGF0aW9uIG9uIHRoZSBwaG9uZSBudW1iZXIgaW5wdXQuIEZvciB2YWxpZGF0aW9uLFxuICAgKiBwaG9uZSBudW1iZXJzIGFyZSBkcml2ZW4gdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZSB0aGF0IHlvdSBzcGVjaWZ5IG9uIGFuXG4gICAqIGBpbnB1dGAgZWxlbWVudCBvciBvbiBhIGBGb3JtQ29udHJvbGAgaW4gYSByZWFjdGl2ZSBmb3JtLiBUbyBwcmV2ZW50IHZhbGlkYXRpb24sXG4gICAqIHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2t5UGhvbmVGaWVsZE5vVmFsaWRhdGUgPSBmYWxzZTtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfdmFsdWUgPSAnJztcbiAgI2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbm90aWZ5Q2hhbmdlOiAoKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAjbm90aWZ5VG91Y2hlZDogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAjcGhvbmVVdGlscyA9IFBob25lTnVtYmVyVXRpbC5nZXRJbnN0YW5jZSgpO1xuXG4gIHJlYWRvbmx5ICNhZGFwdGVyU3ZjID0gaW5qZWN0KFNreVBob25lRmllbGRBZGFwdGVyU2VydmljZSwge1xuICAgIGhvc3Q6IHRydWUsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgc2tpcFNlbGY6IHRydWUsXG4gIH0pO1xuXG4gIHJlYWRvbmx5ICNlbFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI3Bob25lRmllbGRDb21wb25lbnQgPSBpbmplY3QoU2t5UGhvbmVGaWVsZENvbXBvbmVudCwge1xuICAgIGhvc3Q6IHRydWUsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3Bob25lRmllbGRDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHdyYXAgdGhlIGBza3lQaG9uZUZpZWxkSW5wdXRgIGRpcmVjdGl2ZSB3aXRoaW4gYSAnICtcbiAgICAgICAgICAnYDxza3ktcGhvbmUtZmllbGQ+YCBjb21wb25lbnQhJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy4jYWRhcHRlclN2Yz8uc2V0RWxlbWVudFR5cGUodGhpcy4jZWxSZWYpO1xuICAgIHRoaXMuI2FkYXB0ZXJTdmM/LmFkZEVsZW1lbnRDbGFzcyh0aGlzLiNlbFJlZiwgJ3NreS1mb3JtLWNvbnRyb2wnKTtcblxuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeUNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jYWRhcHRlclN2Yz8uZ2V0SW5wdXRWYWx1ZSh0aGlzLiNlbFJlZik7XG4gICAgICAgIHRoaXMuI3NldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy4jY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50LmNvdW50cnlTZWFyY2hGb3JtXG4gICAgICAuZ2V0KCdjb3VudHJ5U2VhcmNoJylcbiAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICB0aGlzLiNjb250cm9sID8/PSBjb250cm9sO1xuXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCF2YWx1ZSB8fCB0aGlzLnNreVBob25lRmllbGROb1ZhbGlkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuI2lzVmFsaWRQaG9uZU51bWJlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNreVBob25lRmllbGQ6IHtcbiAgICAgICAgICBpbnZhbGlkOiB2YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogJyc7XG5cbiAgICB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50Py5zZXRDb3VudHJ5QnlEaWFsQ29kZShyYXdWYWx1ZSk7XG4gICAgdGhpcy4jYWRhcHRlclN2Yz8uc2V0RWxlbWVudFZhbHVlKHRoaXMuI2VsUmVmLCByYXdWYWx1ZSk7XG5cbiAgICB0aGlzLiNzZXRWYWx1ZShyYXdWYWx1ZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgaWYgKHJhd1ZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIHNldCBiZWZvcmUgdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGl6ZWQsIHdhaXQgZm9yIHRoZVxuICAgICAgLy8gZmlyc3QgY3ljbGUgdG8gY29tcGxldGUgYmVmb3JlIHRyaWdnZXJpbmcgYSB2YWx1ZSBjaGFuZ2UgZXZlbnQuXG4gICAgICAvLyAoVGhpcyBvY2N1cnMgd2hlbiB0aGUgY29udHJvbCBpcyBpbml0aWFsaXplZCB3aXRoIGFuIHVuZm9ybWF0dGVkIHZhbHVlXG4gICAgICAvLyBidXQgaXMgZm9ybWF0dGVkIGludG8gYSBuZXcgdmFsdWUgaW1tZWRpYXRlbHkgaW4gdGhlIGB3cml0ZVZhbHVlYFxuICAgICAgLy8gbWV0aG9kLilcbiAgICAgIGlmICghdGhpcy4jY29udHJvbCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNub3RpZnlDaGFuZ2U/LihuZXdWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4obmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwcm90ZWN0ZWQgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBwcm90ZWN0ZWQgb25JbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2FkYXB0ZXJTdmM/LmdldElucHV0VmFsdWUodGhpcy4jZWxSZWYpO1xuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNldENvdW50cnlCeURpYWxDb2RlKHZhbHVlKTtcbiAgICB0aGlzLiNzZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4odGhpcy4jZ2V0VmFsdWUoKSk7XG4gIH1cblxuICAjZm9ybWF0UGhvbmVOdW1iZXIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRDb3VudHJ5ID0gdGhpcy4jZ2V0RGVmYXVsdENvdW50cnkoKTtcbiAgICBjb25zdCByZWdpb25Db2RlID0gdGhpcy4jZ2V0UmVnaW9uQ29kZSgpO1xuICAgIGNvbnN0IHJldHVybkZvcm1hdCA9IHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnJldHVybkZvcm1hdDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwaG9uZU51bWJlciA9IHRoaXMuI3Bob25lVXRpbHMucGFyc2VBbmRLZWVwUmF3SW5wdXQoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICByZWdpb25Db2RlID8/IGRlZmF1bHRDb3VudHJ5LFxuICAgICAgKTtcblxuICAgICAgaWYgKHRoaXMuI3Bob25lVXRpbHMuaXNQb3NzaWJsZU51bWJlcihwaG9uZU51bWJlcikpIHtcbiAgICAgICAgc3dpdGNoIChyZXR1cm5Gb3JtYXQpIHtcbiAgICAgICAgICBjYXNlICdpbnRlcm5hdGlvbmFsJzpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNwaG9uZVV0aWxzLmZvcm1hdChcbiAgICAgICAgICAgICAgcGhvbmVOdW1iZXIsXG4gICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUwsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgY2FzZSAnbmF0aW9uYWwnOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuZm9ybWF0KFxuICAgICAgICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgICAgICAgUGhvbmVOdW1iZXJGb3JtYXQuTkFUSU9OQUwsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgY2FzZSAnZGVmYXVsdCc6XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiByZWdpb25Db2RlICYmIHJlZ2lvbkNvZGUgIT09IGRlZmF1bHRDb3VudHJ5XG4gICAgICAgICAgICAgID8gdGhpcy4jcGhvbmVVdGlscy5mb3JtYXQoXG4gICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUwsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IHRoaXMuI3Bob25lVXRpbHMuZm9ybWF0KFxuICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICBQaG9uZU51bWJlckZvcm1hdC5OQVRJT05BTCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvKiAqL1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gICNnZXREZWZhdWx0Q291bnRyeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50Py5kZWZhdWx0Q291bnRyeTtcbiAgfVxuXG4gICNnZXRSZWdpb25Db2RlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeT8uaXNvMjtcbiAgfVxuXG4gICNnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfdmFsdWU7XG4gIH1cblxuICAjaXNWYWxpZFBob25lTnVtYmVyKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBkZWZhdWx0Q291bnRyeSA9IHRoaXMuI2dldERlZmF1bHRDb3VudHJ5KCk7XG4gICAgY29uc3QgcmVnaW9uQ29kZSA9IHRoaXMuI2dldFJlZ2lvbkNvZGUoKSA/PyBkZWZhdWx0Q291bnRyeTtcbiAgICBjb25zdCBhbGxvd0V4dGVuc2lvbnMgPSAhIXRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LmFsbG93RXh0ZW5zaW9ucztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwaG9uZU51bWJlciA9IHRoaXMuI3Bob25lVXRpbHMucGFyc2VBbmRLZWVwUmF3SW5wdXQoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICByZWdpb25Db2RlLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFhbGxvd0V4dGVuc2lvbnMgJiYgcGhvbmVOdW1iZXIuZ2V0RXh0ZW5zaW9uKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy4jcGhvbmVVdGlscy5pc1ZhbGlkTnVtYmVyRm9yUmVnaW9uKHBob25lTnVtYmVyLCByZWdpb25Db2RlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgI3NldFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLiNmb3JtYXRQaG9uZU51bWJlcih2YWx1ZSk7XG4gICAgICB0aGlzLiNfdmFsdWUgPSBmb3JtYXR0ZWQgPz8gdmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=