@skyux/lookup 8.3.0 → 8.4.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.
@@ -478,6 +478,10 @@ _SkyLookupComponent_adapter = new WeakMap(), _SkyLookupComponent_elementRef = ne
478
478
  provide: SkyLookupShowMoreNativePickerContext,
479
479
  useValue: contextProviderValue,
480
480
  },
481
+ {
482
+ provide: SkyLookupAdapterService,
483
+ useValue: __classPrivateFieldGet(this, _SkyLookupComponent_adapter, "f"),
484
+ },
481
485
  ],
482
486
  size: 'large',
483
487
  wrapperClass: this.wrapperClass,
@@ -683,4 +687,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
683
687
  static: true,
684
688
  }]
685
689
  }] } });
686
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBTzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS3JGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVV0RyxNQUFNLE9BQU8sa0JBQ1gsU0FBUSw0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LEVBQUU7d0JBQ3RDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTSxnQkFBZ0I7c0JBSnRCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFNTSxnQkFBZ0I7c0JBSHRCLFNBQVM7dUJBQUMsZUFBZSxFQUFFO3dCQUMxQixJQUFJLEVBQUUsVUFBVTtxQkFDakI7Z0JBT00scUJBQXFCO3NCQUozQixTQUFTO3VCQUFDLHVCQUF1QixFQUFFO3dCQUNsQyxJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYsIFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQge1xuICBTa3lUb2tlbixcbiAgU2t5VG9rZW5zTWVzc2FnZSxcbiAgU2t5VG9rZW5zTWVzc2FnZVR5cGUsXG59IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UsIFNreU1vZGFsU2VydmljZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVNZXNzYWdlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtYXJncyc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2UgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlbGVjdGlvbi1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zaG93LW1vcmUtYXJncyc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9zZWxlY3Rpb24tbW9kYWwvc2VsZWN0aW9uLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxJbnN0YW5jZSB9IGZyb20gJy4uL3NlbGVjdGlvbi1tb2RhbC90eXBlcy9zZWxlY3Rpb24tbW9kYWwtaW5zdGFuY2UnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vbG9va3VwLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lMb29rdXBBdXRvY29tcGxldGVBZGFwdGVyIH0gZnJvbSAnLi9sb29rdXAtYXV0b2NvbXBsZXRlLWFkYXB0ZXInO1xuaW1wb3J0IHsgU2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TG9va3VwQWRkQ2FsbGJhY2tBcmdzIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtYWRkLWNsaWNrLWNhbGxiYWNrLWFyZ3MnO1xuaW1wb3J0IHsgU2t5TG9va3VwQWRkQ2xpY2tFdmVudEFyZ3MgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1hZGQtY2xpY2stZXZlbnQtYXJncyc7XG5pbXBvcnQgeyBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZSB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNlbGVjdC1tb2RlLXR5cGUnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2hvd01vcmVDb25maWcgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1zaG93LW1vcmUtY29uZmlnJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbG9va3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvb2t1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvb2t1cC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lMb29rdXBBZGFwdGVyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBDb21wb25lbnRcbiAgZXh0ZW5kcyBTa3lMb29rdXBBdXRvY29tcGxldGVBZGFwdGVyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHR5cGVhaGVhZCBzZWFyY2ggaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSBpbnB1dCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSB0eXBlYWhlYWQgc2VhcmNoIGlucHV0LiBUaGlzIHNldHMgdGhlIGlucHV0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSBpbnB1dCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgb24gdGhlIGZvcm0gaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGxvb2t1cCBjb21wb25lbnQgdG8gc2VhcmNoIHdoZW4gdXNlcnNcbiAgICogZW50ZXIgdGV4dC4gWW91IGNhbiBzcGVjaWZ5IHN0YXRpYyBkYXRhIHN1Y2ggYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgb3JcbiAgICogeW91IGNhbiBwdWxsIGRhdGEgZnJvbSBhIGRhdGFiYXNlLlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kYXRhID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy4jb3Blbk5hdGl2ZVBpY2tlciAmJiAhdGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS51cGRhdGVJdGVtRGF0YSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2RhdGEgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBsb29rdXAgZmllbGQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHVzZXJzIHRvIG9wZW4gYSBwaWNrZXIgd2hlcmUgdGhleSBjYW4gdmlldyBhbGwgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW5hYmxlU2hvd01vcmUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZW5hYmxlU2hvd01vcmUgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlU2hvd01vcmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19lbmFibGVTaG93TW9yZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGxvb2t1cCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlclRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG9iamVjdCBwcm9wZXJ0eSB0aGF0IHJlcHJlc2VudHMgdGhlIG9iamVjdCdzIHVuaXF1ZSBpZGVudGlmaWVyLlxuICAgKiBTcGVjaWZ5aW5nIHRoaXMgcHJvcGVydHkgZW5hYmxlcyB0b2tlbiBhbmltYXRpb25zIGFuZCBtb3JlIGVmZmljaWVudCByZW5kZXJpbmcuXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBgZW5hYmxlU2hvd01vcmVgIGFuZCBgc2VhcmNoQXN5bmNgIHRvZ2V0aGVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkUHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIHRoYXQgbGV0cyB1c2VycyBhZGQgb3B0aW9ucyB0byB0aGUgbGlzdC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2hvd0FkZEJ1dHRvbih2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zaG93QWRkQnV0dG9uID0gdmFsdWUgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dBZGRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zaG93QWRkQnV0dG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBpY2tlciB0aGF0IGRpc3BsYXlzIGFsbCBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dNb3JlQ29uZmlnOiBTa3lMb29rdXBTaG93TW9yZUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGFiaWxpdHkgZm9yIHVzZXJzIHRvIHNlbGVjdCBvbmUgb3B0aW9uIG9yIG11bHRpcGxlIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IFwibXVsdGlwbGVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RNb2RlKHZhbHVlOiBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG11bHRpcGxlVG9TaW5nbGU6IGJvb2xlYW4gPVxuICAgICAgdmFsdWUgPT09ICdzaW5nbGUnICYmIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ211bHRpcGxlJztcblxuICAgIHRoaXMuI19zZWxlY3RNb2RlID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlRm9yU2VsZWN0TW9kZSgpO1xuXG4gICAgaWYgKG11bHRpcGxlVG9TaW5nbGUpIHtcbiAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBUaGUgYHNldFRpbWVvdXRgIGlzIG5lZWRlZCB0byBhdm9pZCBhIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCBlcnJvciBpbiB0ZW1wbGF0ZSBmb3Jtcy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKFt0aGlzLnZhbHVlWzBdXSk7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdE1vZGUoKTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0TW9kZSB8fCAnbXVsdGlwbGUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHdyYXBwZXJDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZGRDbGljazogRXZlbnRFbWl0dGVyPFNreUxvb2t1cEFkZENsaWNrRXZlbnRBcmdzPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBnZXQgdG9rZW5zKCk6IFNreVRva2VuW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdG9rZW5zO1xuICB9XG5cbiAgcHVibGljIHNldCB0b2tlbnModmFsdWU6IFNreVRva2VuW10gfCB1bmRlZmluZWQpIHtcbiAgICAvLyBDb2xsYXBzZSB0aGUgdG9rZW5zIGludG8gYSBzaW5nbGUgdG9rZW4gaWYgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIG1hbnkgb3B0aW9ucy5cbiAgICBpZiAodGhpcy5lbmFibGVTaG93TW9yZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDUpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2VcbiAgICAgICAgLmdldFN0cmluZygnc2t5dXhfbG9va3VwX3Rva2Vuc19zdW1tYXJ5JywgdGhpcy52YWx1ZS5sZW5ndGgudG9TdHJpbmcoKSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgobGFiZWwpID0+IHtcbiAgICAgICAgICB0aGlzLiNfdG9rZW5zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldOiBsYWJlbCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3Rva2VucyA9IHZhbHVlO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZSA/IHRoaXMuI192YWx1ZSA6IFtdO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55W10pIHtcbiAgICB0aGlzLiNfdmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGlmICghdGhpcy4jcGlja2VyTW9kYWxPcGVuKCkpIHtcbiAgICAgIHRoaXMudG9rZW5zID0gdGhpcy4jcGFyc2VUb2tlbnMobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPigpO1xuICBwdWJsaWMgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIHNob3dNb3JlUGlja2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHRva2Vuc0NvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPigpO1xuXG4gIEBWaWV3Q2hpbGQoU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUsIHtcbiAgICByZWFkOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSxcbiAgICBzdGF0aWM6IGZhbHNlLFxuICB9KVxuICBwdWJsaWMgc2V0IGF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKFxuICAgIHZhbHVlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLiNfYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVGb3JTZWxlY3RNb2RlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKCk6XG4gICAgfCBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2F1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnc2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2xvb2t1cFdyYXBwZXInLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIGxvb2t1cFdyYXBwZXJSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSWNvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHNlYXJjaEljb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2FkYXB0ZXI6IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlO1xuICAjZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2lkbGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbWFya0ZvclRva2VuRm9jdXNPbktleVVwID0gZmFsc2U7XG4gICNtb2RhbFNlcnZpY2U6IFNreU1vZGFsU2VydmljZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjb3Blbk5hdGl2ZVBpY2tlcjogU2t5TW9kYWxJbnN0YW5jZSB8IHVuZGVmaW5lZDtcbiAgI29wZW5TZWxlY3Rpb25Nb2RhbDogU2t5U2VsZWN0aW9uTW9kYWxJbnN0YW5jZSB8IHVuZGVmaW5lZDtcbiAgI3Jlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG4gICNzZWxlY3Rpb25Nb2RhbFN2YzogU2t5U2VsZWN0aW9uTW9kYWxTZXJ2aWNlO1xuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG4gICNsb2dTdmM6IFNreUxvZ1NlcnZpY2U7XG5cbiAgI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG4gICNfZGF0YTogYW55W10gfCB1bmRlZmluZWQ7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19lbmFibGVTaG93TW9yZSA9IGZhbHNlO1xuICAjX3NlbGVjdE1vZGU6IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIHwgdW5kZWZpbmVkO1xuICAjX3Nob3dBZGRCdXR0b24gPSBmYWxzZTtcbiAgI190b2tlbnM6IFNreVRva2VuW10gfCB1bmRlZmluZWQ7XG4gICNfdmFsdWU6IGFueVtdIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIGFkYXB0ZXI6IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlLFxuICAgIG1vZGFsU2VydmljZTogU2t5TW9kYWxTZXJ2aWNlLFxuICAgIHJlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgc2VsZWN0aW9uTW9kYWxTdmM6IFNreVNlbGVjdGlvbk1vZGFsU2VydmljZSxcbiAgICBsb2dTdmM6IFNreUxvZ1NlcnZpY2UsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFN2Yz86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI3dpbmRvd1JlZiA9IHdpbmRvd1JlZjtcbiAgICB0aGlzLiNhZGFwdGVyID0gYWRhcHRlcjtcbiAgICB0aGlzLiNtb2RhbFNlcnZpY2UgPSBtb2RhbFNlcnZpY2U7XG4gICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZSA9IHJlc291cmNlc1NlcnZpY2U7XG4gICAgdGhpcy4jc2VsZWN0aW9uTW9kYWxTdmMgPSBzZWxlY3Rpb25Nb2RhbFN2YztcbiAgICB0aGlzLiNsb2dTdmMgPSBsb2dTdmM7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFN2YyAmJiB0aGlzLmlucHV0VGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U3ZjLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMuZW5hYmxlU2hvd01vcmVcbiAgICAgICAgICA/IHRoaXMuc2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZlxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBpY29uc0luc2V0VGVtcGxhdGU6IHRoaXMuZW5hYmxlU2hvd01vcmVcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogdGhpcy5zZWFyY2hJY29uVGVtcGxhdGVSZWYsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnRoZW1lU3ZjKSB7XG4gICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgYXV0b2NvbXBsZXRlIGRpcmVjdGl2ZSB0byBiZSBzZXQgYWZ0ZXIgZWxlbWVudHNcbiAgICAgIC8vIGFyZSByZWFycmFuZ2VkIHdoZW4gc3dpdGNoaW5nIHRoZW1lcy5cbiAgICAgIHRoaXMudGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMudG9rZW5zQ29udHJvbGxlci5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5lbWl0KHtcbiAgICAgIGl0ZW1BZGRlZDogKGFyZ3M6IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncykgPT5cbiAgICAgICAgdGhpcy4jb25BZGRCdXR0b25Db21wbGV0ZShhcmdzKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZShcbiAgICBjaGFuZ2U6IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZVxuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjaGFuZ2Uuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICB0aGlzLiNhZGRUb1NlbGVjdGVkKGNoYW5nZS5zZWxlY3RlZEl0ZW0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKFtdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNDaGFuZ2UoY2hhbmdlOiBTa3lUb2tlbltdKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbnMgIT09IGNoYW5nZSkge1xuICAgICAgaWYgKGNoYW5nZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBOT1RFOiBXZSBkbyB0aGlzIGhlcmUgaW5zdGVhZCBvZiBqdXN0IHVzaW5nIHRoZSBgdmFsdWVgIHNldHRlciBiZWNhdXNlIHdlIG5lZWQgdG8gdXNlIHRoZVxuICAgICAgLy8gc2V0IG9mIHRva2VucyByZXR1cm5lZCBoZXJlIGZvciB0aGUgcHVycG9zZXMgb2Ygc2V0dGluZyBmb2N1cyAoc2VlIGBvblRva2Vuc0tleVVwYCkuXG4gICAgICB0aGlzLiNfdmFsdWUgPSBjaGFuZ2UubWFwKCh0b2tlbikgPT4ge1xuICAgICAgICByZXR1cm4gdG9rZW4udmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudG9rZW5zID0gY2hhbmdlO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLiNfdmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNGb2N1c0luZGV4T3ZlclJhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuUmVtb3ZlQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzUHJldmlvdXNUb2tlbik7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdEZWwnOlxuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLlJlbW92ZUFjdGl2ZVRva2VuKTtcbiAgICAgICAgICB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNBY3RpdmVUb2tlbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNSZW5kZXJlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNzZW5kQXV0b2NvbXBsZXRlTWVzc2FnZShcbiAgICAgIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLlJlcG9zaXRpb25Ecm9wZG93blxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICAvLyBTaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIGFycmF5cyAtIGNsb25lIHRoZSBhcnJheSBiZWluZyBzZW50IGluIHRvIGVuc3VyZSB3ZSBhcmVuJ3QgbW9kaWZ5aW5nIGEgY29uc3VtZXJzIG91dGVyIGFycmF5XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8gdmFsdWUuc2xpY2UoKSA6IFtdO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIC8vIEFuZ3VsYXIgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RzIHRoZXNlIG1ldGhvZHMuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHVibGljIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnlbXSkgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHVibGljIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byBkaXNhYmxlIHRoZSBpbnB1dC5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVFdmVudExpc3RlbmVycygpO1xuXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWFyY2hUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS5pbnB1dFRleHRWYWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZXMgd2hlbiB0byBmb2N1cyBvbiB0aGUgdG9rZW5zLlxuICAvLyBDaGVjayBmb3IgZW1wdHkgc2VhcmNoIHRleHQgb24ga2V5ZG93biwgYmVmb3JlIHRoZSBlc2NhcGUga2V5IGlzIGZ1bGx5IHByZXNzZWQuXG4gIC8vIChPdGhlcndpc2UsIGEgc2luZ2xlIGNoYXJhY3RlciBiZWluZyBlc2NhcGVkIHdvdWxkIHJlZ2lzdGVyIGFzIGVtcHR5IG9uIGtleXVwLilcbiAgLy8gSWYgZW1wdHkgb24ga2V5ZG93biwgc2V0IGEgZmxhZyBzbyB0aGF0IHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24gY2FuIGJlIHRha2VuIG9uIGtleXVwLlxuICBwdWJsaWMgaW5wdXRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpLnZhbHVlO1xuXG4gICAgLyogU2FuaXR5IGNoZWNrIGFzIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gaW4gbXVsdGlwbGUgc2VsZWN0IG1vZGUgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLiNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jbWFya0ZvclRva2VuRm9jdXNPbktleVVwID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlucHV0S2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgYXMgdGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBpbiBtdWx0aXBsZSBzZWxlY3QgbW9kZSAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0VzYyc6XG4gICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICBjYXNlICdMZWZ0JzpcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLiNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXApIHtcbiAgICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzTGFzdFRva2VuKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLiNzZW5kQXV0b2NvbXBsZXRlTWVzc2FnZShTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZS5DbG9zZURyb3Bkb3duKTtcbiAgICBsZXQgaXNWYWx1ZUluVGV4dEJveCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICBpc1ZhbHVlSW5UZXh0Qm94ID1cbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZT8udmFsdWUgJiZcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS5pbnB1dFRleHRWYWx1ZSA9PT1cbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLnZhbHVlW3RoaXMuZGVzY3JpcHRvclByb3BlcnR5XTtcbiAgICB9XG5cbiAgICBsZXQgc2VhcmNoVmFsdWUgPSAnJztcblxuICAgIGlmICghaXNWYWx1ZUluVGV4dEJveCAmJiB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKSB7XG4gICAgICBzZWFyY2hWYWx1ZSA9IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuUGlja2VyKHNlYXJjaFZhbHVlKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlPy5yZXN0b3JlSW5wdXRUZXh0VmFsdWVUb1ByZXZpb3VzU3RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNob3dNb3JlQ2xpY2soZXZlbnQ6IFNreUF1dG9jb21wbGV0ZVNob3dNb3JlQXJncyk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMub3BlblBpY2tlcihldmVudC5pbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlblBpY2tlcihpbml0aWFsU2VhcmNoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG93TW9yZUNvbmZpZz8uY3VzdG9tUGlja2VyKSB7XG4gICAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMuc2hvd01vcmVDb25maWcuY3VzdG9tUGlja2VyLm9wZW4oe1xuICAgICAgICBpdGVtczogdGhpcy5kYXRhLFxuICAgICAgICBpbml0aWFsU2VhcmNoLFxuICAgICAgICBpbml0aWFsVmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgaWYgKHRoaXMuI2hhc1NlYXJjaEFzeW5jKCkpIHtcbiAgICAgICAgdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsID1cbiAgICAgICAgICB0aGlzLiNjcmVhdGVTZWxlY3Rpb25Nb2RhbEluc3RhbmNlKGluaXRpYWxTZWFyY2gpO1xuXG4gICAgICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5pZDtcblxuICAgICAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwuY2xvc2VkLnN1YnNjcmliZSgoY2xvc2VBcmdzKSA9PiB7XG4gICAgICAgICAgdGhpcy4jcHJvY2Vzc1BpY2tlclJlc3VsdChcbiAgICAgICAgICAgIGNsb3NlQXJncy5yZWFzb24gPT09ICdzYXZlJyA/IGNsb3NlQXJncy5zZWxlY3RlZEl0ZW1zIDogaW5pdGlhbFZhbHVlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyID1cbiAgICAgICAgICB0aGlzLiNjcmVhdGVOYXRpdmVQaWNrZXJJbnN0YW5jZShpbml0aWFsU2VhcmNoKTtcblxuICAgICAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB0aGlzLiNvcGVuTmF0aXZlUGlja2VyLmNvbXBvbmVudEluc3RhbmNlLmlkO1xuXG4gICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UuYWRkQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEJ1dHRvbkNsaWNrZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jbG9zZWQuc3Vic2NyaWJlKChjbG9zZUFyZ3MpID0+IHtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtczogYW55W107XG5cbiAgICAgICAgICBpZiAoY2xvc2VBcmdzLnJlYXNvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChpdGVtOiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbG9zZUFyZ3MuZGF0YS5zb21lKChzYXZlZEl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNhdmVkSXRlbS5pbmRleCA9PT0gZGF0YUluZGV4O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBpbml0aWFsVmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy4jcHJvY2Vzc1BpY2tlclJlc3VsdChzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoXG4gICAgaW5pdGlhbFNlYXJjaDogc3RyaW5nXG4gICk6IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2Uge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgY29uc3QgbW9kYWxDb25maWcgPSB0aGlzLnNob3dNb3JlQ29uZmlnPy5uYXRpdmVQaWNrZXJDb25maWcgfHwge307XG5cbiAgICBpZiAoIW1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSkge1xuICAgICAgbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pZFByb3BlcnR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2xvZ1N2Yy5lcnJvcihcbiAgICAgICAgXCJUaGUgbG9va3VwIGNvbXBvbmVudCdzICdpZFByb3BlcnR5JyBpbnB1dCBpcyByZXF1aXJlZCB3aGVuIGBlbmFibGVTaG93TW9yZWAgYW5kICdzZWFyY2hBc3luYycgYXJlIHVzZWQgdG9nZXRoZXIuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI3NlbGVjdGlvbk1vZGFsU3ZjLm9wZW4oe1xuICAgICAgZGVzY3JpcHRvclByb3BlcnR5OiB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGlkUHJvcGVydHk6IHRoaXMuaWRQcm9wZXJ0eSEsXG4gICAgICBzZWFyY2hBc3luYzogKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoQXN5bmNBcmdzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgPSB7XG4gICAgICAgICAgZGlzcGxheVR5cGU6ICdtb2RhbCcsXG4gICAgICAgICAgb2Zmc2V0OiBhcmdzLm9mZnNldCxcbiAgICAgICAgICBzZWFyY2hUZXh0OiBhcmdzLnNlYXJjaFRleHQsXG4gICAgICAgICAgY29udGludWF0aW9uRGF0YTogYXJncy5jb250aW51YXRpb25EYXRhLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2VhcmNoQXN5bmMuZW1pdChzZWFyY2hBc3luY0FyZ3MpO1xuXG4gICAgICAgIHJldHVybiBzZWFyY2hBc3luY0FyZ3MucmVzdWx0O1xuICAgICAgfSxcbiAgICAgIHNlbGVjdE1vZGU6IHRoaXMuc2VsZWN0TW9kZSxcbiAgICAgIGFkZENsaWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uQ2xpY2tlZCgpO1xuICAgICAgfSxcbiAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICBpdGVtVGVtcGxhdGU6IG1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSxcbiAgICAgIHNob3dBZGRCdXR0b246IHRoaXMuc2hvd0FkZEJ1dHRvbixcbiAgICAgIHRpdGxlOiBtb2RhbENvbmZpZy50aXRsZSxcbiAgICAgIHZhbHVlOiBpbml0aWFsVmFsdWUsXG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgIH0pO1xuICB9XG5cbiAgI2NyZWF0ZU5hdGl2ZVBpY2tlckluc3RhbmNlKGluaXRpYWxTZWFyY2g6IHN0cmluZyk6IFNreU1vZGFsSW5zdGFuY2Uge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgY29uc3QgbW9kYWxDb25maWcgPSB0aGlzLnNob3dNb3JlQ29uZmlnPy5uYXRpdmVQaWNrZXJDb25maWcgfHwge307XG5cbiAgICBpZiAoIW1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSkge1xuICAgICAgbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0UHJvdmlkZXJWYWx1ZSA9IG5ldyBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQoXG4gICAgICB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICBpbml0aWFsVmFsdWUsXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCxcbiAgICAgIHRoaXMuc2VsZWN0TW9kZSxcbiAgICAgIHRoaXMuc2hvd0FkZEJ1dHRvbixcbiAgICAgIG1vZGFsQ29uZmlnXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLiNtb2RhbFNlcnZpY2Uub3BlbihTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCxcbiAgICAgICAgICB1c2VWYWx1ZTogY29udGV4dFByb3ZpZGVyVmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgIHdyYXBwZXJDbGFzczogdGhpcy53cmFwcGVyQ2xhc3MsXG4gICAgfSk7XG4gIH1cblxuICAjcHJvY2Vzc1BpY2tlclJlc3VsdChzZWxlY3RlZEl0ZW1zOiBhbnlbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXMgfHwgW107XG5cbiAgICB0aGlzLndyaXRlVmFsdWUoc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQXN5bmMoYXJnczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hBc3luYy5lbWl0KGFyZ3MpO1xuICB9XG5cbiAgI2FkZFRvU2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueVtdO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSBbaXRlbV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnZhbHVlO1xuXG4gICAgICBjb25zdCBpZFByb3BlcnR5ID0gdGhpcy5pZFByb3BlcnR5IHx8ICcnO1xuXG4gICAgICAvLyBJZiBpdGVtcyBoYXZlIGEgdW5pcXVlIGlkZW50aWZpZXIsIGRvbid0IGFsbG93IHRoZSBzYW1lIGl0ZW0gdG8gYmUgYWRkZWQgdHdpY2UuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmlkUHJvcGVydHkgfHxcbiAgICAgICAgIXRoaXMudmFsdWUuc29tZShcbiAgICAgICAgICAoZXhpc3RpbmdJdGVtKSA9PiBleGlzdGluZ0l0ZW1baWRQcm9wZXJ0eV0gPT09IGl0ZW1baWRQcm9wZXJ0eV1cbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICB9XG5cbiAgICB0aGlzLndyaXRlVmFsdWUoc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICAjYWRkRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jaWRsZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdGhpcy4jZm9jdXNJbnB1dE9uSG9zdENsaWNrKCk7XG4gIH1cblxuICAjcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jaWRsZS5uZXh0KCk7XG4gICAgdGhpcy4jaWRsZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2ZvY3VzSW5wdXRPbkhvc3RDbGljaygpOiB2b2lkIHtcbiAgICBsZXQgaG9zdEVsZW1lbnQgPSAhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgID8gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICA6IHRoaXMubG9va3VwV3JhcHBlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBkb2N1bWVudE9iaiA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQ7XG5cbiAgICAvLyBIYW5kbGVzIGZvY3VzaW5nIHRoZSBpbnB1dCB3aGVuIHRoZSBob3N0IGlzIGNsaWNrZWQuXG4gICAgLy8gVGhlIGlucHV0IHNob3VsZCBOT1QgYmUgZm9jdXNlZCBpZiBvdGhlciBlbGVtZW50cyAodG9rZW5zLCBldGMuKVxuICAgIC8vIGFyZSBjdXJyZW50bHkgZm9jdXNlZCBvciBiZWluZyB0YWJiZWQgdGhyb3VnaC5cblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnRPYmosICdtb3VzZWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaG9zdEVsZW1lbnQgPSAhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgICAgICA/IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgIDogdGhpcy5sb29rdXBXcmFwcGVyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gaG9zdEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudE9iaiwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaG9zdEVsZW1lbnQgPSAhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgICAgICA/IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgIDogdGhpcy5sb29rdXBXcmFwcGVyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gaG9zdEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKGhvc3RFbGVtZW50KSB7XG4gICAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGhvc3RFbGVtZW50LCAnbW91c2V1cCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpZGxlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2xhc3NMaXN0ID0gZG9jdW1lbnRPYmouYWN0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgICAgICAgaWYgKCFjbGFzc0xpc3QgfHwgIWNsYXNzTGlzdC5jb250YWlucygnc2t5LXRva2VuJykpIHtcbiAgICAgICAgICAgIHRoaXMuI2ZvY3VzSW5wdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNmb2N1c0lucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvb2t1cFdyYXBwZXJSZWYpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXIuZm9jdXNJbnB1dCh0aGlzLmxvb2t1cFdyYXBwZXJSZWYpO1xuICAgIH1cbiAgfVxuXG4gICNvbkFkZEJ1dHRvbkNvbXBsZXRlKGFyZ3M6IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncyk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwpIHtcbiAgICAgIC8vIE5vdGlmeSB0aGUgc2VsZWN0aW9uIG1vZGFsIG9mIHRoZSBuZXcgaXRlbS4gVGhlIHNlbGVjdGlvblxuICAgICAgLy8gbW9kYWwgd2lsbCBkZWNpZGUgd2hldGhlciB0aGUgbmV3IGl0ZW0gc2hvdWxkIGJlIGFkZGVkXG4gICAgICAvLyB0byB0aGUgdmFsdWUgd2hlbiB0aGUgdXNlciBjb25maXJtcyBvciBjYW5jZWxzIHRoZVxuICAgICAgLy8gc2VsZWN0aW9uIG1vZGFsLlxuICAgICAgdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsLmFkZEl0ZW0oYXJncy5pdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGFkZEl0ZW1Ub1ZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAodGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgICBhZGRJdGVtVG9WYWx1ZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXJncy5kYXRhKSB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gYXJncy5kYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5pbmRleE9mKGFyZ3MuaXRlbSkgPj0gMCkge1xuICAgICAgICAgIGlmICh0aGlzLiNvcGVuTmF0aXZlUGlja2VyKSB7XG4gICAgICAgICAgICAvLyBOb3RpZnkgdGhlIHBpY2tlciBvZiB0aGUgbmV3IGl0ZW0uIFRoZSBwaWNrZXIgd2lsbFxuICAgICAgICAgICAgLy8gZGVjaWRlIHdoZXRoZXIgdGhlIG5ldyBpdGVtIHNob3VsZCBiZSBhZGRlZCB0byB0aGVcbiAgICAgICAgICAgIC8vIHZhbHVlIHdoZW4gdGhlIHVzZXIgY29uZmlybXMgb3IgY2FuY2VscyB0aGUgcGlja2VyLlxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudEluc3RhbmNlIGFzIFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnRcbiAgICAgICAgICAgICkub25JdGVtU2VsZWN0KHRydWUsIHsgdmFsdWU6IGFyZ3MuaXRlbSwgc2VsZWN0ZWQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZGRJdGVtVG9WYWx1ZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRJdGVtVG9WYWx1ZSkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgICAgICAgdGhpcy5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXG4gICAgICAgICAgICA/IHRoaXMudmFsdWUuY29uY2F0KGFyZ3MuaXRlbSlcbiAgICAgICAgICAgIDogW2FyZ3MuaXRlbV07XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3BhcnNlVG9rZW5zKGRhdGE6IGFueVtdKTogU2t5VG9rZW5bXSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBpdGVtLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gICNzZW5kQXV0b2NvbXBsZXRlTWVzc2FnZSh0eXBlOiBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbGxlci5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gICNzZW5kVG9rZW5zTWVzc2FnZSh0eXBlOiBTa3lUb2tlbnNNZXNzYWdlVHlwZSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW5zQ29udHJvbGxlci5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gICN1cGRhdGVGb3JTZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLnZhbHVlID0gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjaGFzU2VhcmNoQXN5bmMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoQXN5bmMub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAjcGlja2VyTW9kYWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLiNvcGVuTmF0aXZlUGlja2VyIHx8IHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRCb3hIb3N0U3ZjXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktbG9va3VwXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWxvb2t1cC1mb2N1c2VkJzogaXNJbnB1dEZvY3VzZWQsXG4gICAgICAnc2t5LWxvb2t1cC1kaXNhYmxlZCc6IGRpc2FibGVkLFxuICAgICAgJ3NreS1sb29rdXAtc2luZ2xlJzogc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZSdcbiAgICB9XCJcbiAgICAjbG9va3VwV3JhcHBlclxuICA+XG4gICAgPHNreS1hdXRvY29tcGxldGVcbiAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICBbYXR0ci5kYXRhLXNreS1sb29rdXAtc2hvdy1tb3JlLXBpY2tlci1pZF09XCJzaG93TW9yZVBpY2tlcklkXCJcbiAgICAgIFtkYXRhXT1cImRhdGFcIlxuICAgICAgW2RlYm91bmNlVGltZV09XCJkZWJvdW5jZVRpbWVcIlxuICAgICAgW2Rlc2NyaXB0b3JQcm9wZXJ0eV09XCJkZXNjcmlwdG9yUHJvcGVydHlcIlxuICAgICAgW2VuYWJsZVNob3dNb3JlXT1cImVuYWJsZVNob3dNb3JlXCJcbiAgICAgIFttZXNzYWdlU3RyZWFtXT1cImF1dG9jb21wbGV0ZUNvbnRyb2xsZXJcIlxuICAgICAgW3Byb3BlcnRpZXNUb1NlYXJjaF09XCJwcm9wZXJ0aWVzVG9TZWFyY2hcIlxuICAgICAgW3NlYXJjaF09XCJzZWFyY2hPckRlZmF1bHRcIlxuICAgICAgW3NlYXJjaEFzeW5jRGlzYWJsZWRdPVwic2VhcmNoQXN5bmMub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMFwiXG4gICAgICBbc2VhcmNoRmlsdGVyc109XCJzZWFyY2hGaWx0ZXJzXCJcbiAgICAgIFtzZWFyY2hSZXN1bHRzTGltaXRdPVwic2VhcmNoUmVzdWx0c0xpbWl0XCJcbiAgICAgIFtzZWFyY2hSZXN1bHRUZW1wbGF0ZV09XCJzZWFyY2hSZXN1bHRUZW1wbGF0ZVwiXG4gICAgICBbc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXT1cInNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc1wiXG4gICAgICBbc2hvd0FkZEJ1dHRvbl09XCJzaG93QWRkQnV0dG9uXCJcbiAgICAgIFt3cmFwcGVyQ2xhc3NdPVwid3JhcHBlckNsYXNzXCJcbiAgICAgIChhZGRDbGljayk9XCJhZGRCdXR0b25DbGlja2VkKClcIlxuICAgICAgKHNlYXJjaEFzeW5jKT1cIm9uU2VhcmNoQXN5bmMoJGV2ZW50KVwiXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgKHNob3dNb3JlQ2xpY2spPVwib25TaG93TW9yZUNsaWNrKCRldmVudClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktbG9va3VwLXNlYXJjaC1mbGV4LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zZWFyY2hcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdza3ktZmllbGQtc3RhdHVzLWFjdGl2ZSc6IGlzSW5wdXRGb2N1c2VkICYmICFkaXNhYmxlZFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS10b2tlbnNcbiAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0TW9kZSA9PT0gJ211bHRpcGxlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtdG9rZW5zXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGVzY3JpcHRvclByb3BlcnR5XCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwidG9rZW5zQ29udHJvbGxlclwiXG4gICAgICAgICAgICBbdHJhY2tXaXRoXT1cImlkUHJvcGVydHlcIlxuICAgICAgICAgICAgW3Rva2Vuc109XCJ0b2tlbnNcIlxuICAgICAgICAgICAgKGtleXVwKT1cIm9uVG9rZW5zS2V5VXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAodG9rZW5zQ2hhbmdlKT1cIm9uVG9rZW5zQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKHRva2Vuc1JlbmRlcmVkKT1cIm9uVG9rZW5zUmVuZGVyZWQoKVwiXG4gICAgICAgICAgICAodG9rZW5TZWxlY3RlZCk9XCJlbmFibGVTaG93TW9yZSA/IG9wZW5QaWNrZXIoJycpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIChmb2N1c0luZGV4T3ZlclJhbmdlKT1cIm9uVG9rZW5zRm9jdXNJbmRleE92ZXJSYW5nZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sIHNreS1sb29rdXAtaW5wdXRcIlxuICAgICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICAgIHNreUF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICB3cmFwPVwib2ZmXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlQXR0cmlidXRlXT1cImF1dG9jb21wbGV0ZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uQXV0b2NvbXBsZXRlQmx1cigpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwiaW5wdXRLZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAoa2V5dXApPVwiaW5wdXRLZXl1cCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dEJveEhvc3RTdmMgJiYgIWVuYWJsZVNob3dNb3JlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEljb25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc2t5LXRva2Vucz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdE1vZGUgPT09ICdzaW5nbGUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zaW5nbGUtY29udHJvbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbCBza3ktbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgICAgICBza3lBdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgd3JhcD1cIm9mZlwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJUZXh0XCJcbiAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZUF0dHJpYnV0ZV09XCJhdXRvY29tcGxldGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkF1dG9jb21wbGV0ZUJsdXIoKVwiXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRCb3hIb3N0U3ZjICYmICFlbmFibGVTaG93TW9yZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hJY29uVGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRCb3hIb3N0U3ZjICYmIGVuYWJsZVNob3dNb3JlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9za3ktYXV0b2NvbXBsZXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICdza3l1eF9sb29rdXBfc2VhcmNoX2J1dHRvbl9zaG93X21vcmUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICBcIlxuICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoQnV0dG9uQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cInNlYXJjaFwiPjwvc2t5LWljb24+XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICBpY29uPVwic2VhcmNoXCJcbiAgICAgID48L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VhcmNoSWNvblRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtaWNvbiBza3ktaW5wdXQtYm94LWljb24taW5zZXRcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1sb29rdXAtZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgPlxuICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJzZWFyY2hcIj48L3NreS1pY29uPlxuICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCIgaWNvblR5cGU9XCJza3l1eFwiIGljb249XCJzZWFyY2hcIj48L3NreS1pY29uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
690
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBTzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS3JGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVV0RyxNQUFNLE9BQU8sa0JBQ1gsU0FBUSw0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Qjt3QkFDbkMsTUFBTSxFQUFFLEtBQUs7cUJBQ2Q7Z0JBa0JNLHlCQUF5QjtzQkFKL0IsU0FBUzt1QkFBQywyQkFBMkIsRUFBRTt3QkFDdEMsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLGdCQUFnQjtzQkFKdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU1NLGdCQUFnQjtzQkFIdEIsU0FBUzt1QkFBQyxlQUFlLEVBQUU7d0JBQzFCLElBQUksRUFBRSxVQUFVO3FCQUNqQjtnQkFPTSxxQkFBcUI7c0JBSjNCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUU7d0JBQ2xDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiwgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7XG4gIFNreVRva2VuLFxuICBTa3lUb2tlbnNNZXNzYWdlLFxuICBTa3lUb2tlbnNNZXNzYWdlVHlwZSxcbn0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSwgU2t5TW9kYWxTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2UgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1hcmdzJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNob3ctbW9yZS1hcmdzJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsU2VydmljZSB9IGZyb20gJy4uL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uLW1vZGFsL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1pbnN0YW5jZSc7XG5cbmltcG9ydCB7IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9sb29rdXAtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXIgfSBmcm9tICcuL2xvb2t1cC1hdXRvY29tcGxldGUtYWRhcHRlcic7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1hZGQtY2xpY2stY2FsbGJhY2stYXJncyc7XG5pbXBvcnQgeyBTa3lMb29rdXBBZGRDbGlja0V2ZW50QXJncyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLWFkZC1jbGljay1ldmVudC1hcmdzJztcbmltcG9ydCB7IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2VsZWN0LW1vZGUtdHlwZSc7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1jb25maWcnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2hvdy1tb3JlLW5hdGl2ZS1waWNrZXItY29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1sb29rdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9va3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9va3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUxvb2t1cENvbXBvbmVudFxuICBleHRlbmRzIFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgdHlwZWFoZWFkIHNlYXJjaCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBpbnB1dCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGlucHV0IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHR5cGVhaGVhZCBzZWFyY2ggaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGlucHV0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiB0aGUgZm9ybSBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvY29tcGxldGVBdHRyaWJ1dGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGRhdGEgc291cmNlIGZvciB0aGUgbG9va3VwIGNvbXBvbmVudCB0byBzZWFyY2ggd2hlbiB1c2Vyc1xuICAgKiBlbnRlciB0ZXh0LiBZb3UgY2FuIHNwZWNpZnkgc3RhdGljIGRhdGEgc3VjaCBhcyBhbiBhcnJheSBvZiBvYmplY3RzLCBvclxuICAgKiB5b3UgY2FuIHB1bGwgZGF0YSBmcm9tIGEgZGF0YWJhc2UuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEodmFsdWU6IGFueVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2RhdGEgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLiNvcGVuTmF0aXZlUGlja2VyICYmICF0aGlzLiNoYXNTZWFyY2hBc3luYygpKSB7XG4gICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyLmNvbXBvbmVudEluc3RhbmNlLnVwZGF0ZUl0ZW1EYXRhKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLiNfZGF0YSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGxvb2t1cCBmaWVsZCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWUgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdXNlcnMgdG8gb3BlbiBhIHBpY2tlciB3aGVyZSB0aGV5IGNhbiB2aWV3IGFsbCBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlbmFibGVTaG93TW9yZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19lbmFibGVTaG93TW9yZSA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmFibGVTaG93TW9yZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2VuYWJsZVNob3dNb3JlO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgbG9va3VwIGZpZWxkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBsYWNlaG9sZGVyVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHByb3BlcnR5IHRoYXQgcmVwcmVzZW50cyB0aGUgb2JqZWN0J3MgdW5pcXVlIGlkZW50aWZpZXIuXG4gICAqIFNwZWNpZnlpbmcgdGhpcyBwcm9wZXJ0eSBlbmFibGVzIHRva2VuIGFuaW1hdGlvbnMgYW5kIG1vcmUgZWZmaWNpZW50IHJlbmRlcmluZy5cbiAgICogVGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGBlbmFibGVTaG93TW9yZWAgYW5kIGBzZWFyY2hBc3luY2AgdG9nZXRoZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRQcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgYSBidXR0b24gdGhhdCBsZXRzIHVzZXJzIGFkZCBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzaG93QWRkQnV0dG9uKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Nob3dBZGRCdXR0b24gPSB2YWx1ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd0FkZEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX3Nob3dBZGRCdXR0b247XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGlja2VyIHRoYXQgZGlzcGxheXMgYWxsIG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd01vcmVDb25maWc6IFNreUxvb2t1cFNob3dNb3JlQ29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgYWJpbGl0eSBmb3IgdXNlcnMgdG8gc2VsZWN0IG9uZSBvcHRpb24gb3IgbXVsdGlwbGUgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgXCJtdWx0aXBsZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdE1vZGUodmFsdWU6IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbXVsdGlwbGVUb1NpbmdsZTogYm9vbGVhbiA9XG4gICAgICB2YWx1ZSA9PT0gJ3NpbmdsZScgJiYgdGhpcy5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnO1xuXG4gICAgdGhpcy4jX3NlbGVjdE1vZGUgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVGb3JTZWxlY3RNb2RlKCk7XG5cbiAgICBpZiAobXVsdGlwbGVUb1NpbmdsZSkge1xuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgIC8vIFRoZSBgc2V0VGltZW91dGAgaXMgbmVlZGVkIHRvIGF2b2lkIGEgYEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JgIGVycm9yIGluIHRlbXBsYXRlIGZvcm1zLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoW3RoaXMudmFsdWVbMF1dKTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0TW9kZSgpOiBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWxlY3RNb2RlIHx8ICdtdWx0aXBsZSc7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgd3JhcHBlckNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gYWRkIG9wdGlvbnMgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFkZENsaWNrOiBFdmVudEVtaXR0ZXI8U2t5TG9va3VwQWRkQ2xpY2tFdmVudEFyZ3M+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGdldCB0b2tlbnMoKTogU2t5VG9rZW5bXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190b2tlbnM7XG4gIH1cblxuICBwdWJsaWMgc2V0IHRva2Vucyh2YWx1ZTogU2t5VG9rZW5bXSB8IHVuZGVmaW5lZCkge1xuICAgIC8vIENvbGxhcHNlIHRoZSB0b2tlbnMgaW50byBhIHNpbmdsZSB0b2tlbiBpZiB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgbWFueSBvcHRpb25zLlxuICAgIGlmICh0aGlzLmVuYWJsZVNob3dNb3JlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZVxuICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF9sb29rdXBfdG9rZW5zX3N1bW1hcnknLCB0aGlzLnZhbHVlLmxlbmd0aC50b1N0cmluZygpKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChsYWJlbCkgPT4ge1xuICAgICAgICAgIHRoaXMuI190b2tlbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7IFt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV06IGxhYmVsIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfdG9rZW5zID0gdmFsdWU7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlID8gdGhpcy4jX3ZhbHVlIDogW107XG4gIH1cblxuICBwdWJsaWMgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMuI192YWx1ZSA9IG5ld1ZhbHVlO1xuXG4gICAgaWYgKCF0aGlzLiNwaWNrZXJNb2RhbE9wZW4oKSkge1xuICAgICAgdGhpcy50b2tlbnMgPSB0aGlzLiNwYXJzZVRva2VucyhuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLiNfdmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQ29udHJvbGxlciA9IG5ldyBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+KCk7XG4gIHB1YmxpYyBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd01vcmVQaWNrZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgdG9rZW5zQ29udHJvbGxlciA9IG5ldyBTdWJqZWN0PFNreVRva2Vuc01lc3NhZ2U+KCk7XG5cbiAgQFZpZXdDaGlsZChTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHB1YmxpYyBzZXQgYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUoXG4gICAgdmFsdWU6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMuI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUoKTpcbiAgICB8IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnbG9va3VwV3JhcHBlcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgbG9va3VwV3JhcHBlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2VhcmNoSWNvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAjYWRhcHRlcjogU2t5TG9va3VwQWRhcHRlclNlcnZpY2U7XG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjaWRsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSBmYWxzZTtcbiAgI21vZGFsU2VydmljZTogU2t5TW9kYWxTZXJ2aWNlO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNvcGVuTmF0aXZlUGlja2VyOiBTa3lNb2RhbEluc3RhbmNlIHwgdW5kZWZpbmVkO1xuICAjb3BlblNlbGVjdGlvbk1vZGFsOiBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIHwgdW5kZWZpbmVkO1xuICAjcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZTtcbiAgI3NlbGVjdGlvbk1vZGFsU3ZjOiBTa3lTZWxlY3Rpb25Nb2RhbFNlcnZpY2U7XG4gICN3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZjtcbiAgI2xvZ1N2YzogU2t5TG9nU2VydmljZTtcblxuICAjX2F1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcbiAgI19kYXRhOiBhbnlbXSB8IHVuZGVmaW5lZDtcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX2VuYWJsZVNob3dNb3JlID0gZmFsc2U7XG4gICNfc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfCB1bmRlZmluZWQ7XG4gICNfc2hvd0FkZEJ1dHRvbiA9IGZhbHNlO1xuICAjX3Rva2VuczogU2t5VG9rZW5bXSB8IHVuZGVmaW5lZDtcbiAgI192YWx1ZTogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgYWRhcHRlcjogU2t5TG9va3VwQWRhcHRlclNlcnZpY2UsXG4gICAgbW9kYWxTZXJ2aWNlOiBTa3lNb2RhbFNlcnZpY2UsXG4gICAgcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbiAgICBzZWxlY3Rpb25Nb2RhbFN2YzogU2t5U2VsZWN0aW9uTW9kYWxTZXJ2aWNlLFxuICAgIGxvZ1N2YzogU2t5TG9nU2VydmljZSxcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbD86IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U3ZjPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy4jd2luZG93UmVmID0gd2luZG93UmVmO1xuICAgIHRoaXMuI2FkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHRoaXMuI21vZGFsU2VydmljZSA9IG1vZGFsU2VydmljZTtcbiAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlID0gcmVzb3VyY2VzU2VydmljZTtcbiAgICB0aGlzLiNzZWxlY3Rpb25Nb2RhbFN2YyA9IHNlbGVjdGlvbk1vZGFsU3ZjO1xuICAgIHRoaXMuI2xvZ1N2YyA9IGxvZ1N2YztcblxuICAgIGlmIChuZ0NvbnRyb2wpIHtcbiAgICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTdmMucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy5lbmFibGVTaG93TW9yZVxuICAgICAgICAgID8gdGhpcy5zaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGljb25zSW5zZXRUZW1wbGF0ZTogdGhpcy5lbmFibGVTaG93TW9yZVxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiB0aGlzLnNlYXJjaEljb25UZW1wbGF0ZVJlZixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMudGhlbWVTdmMpIHtcbiAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZGlyZWN0aXZlIHRvIGJlIHNldCBhZnRlciBlbGVtZW50c1xuICAgICAgLy8gYXJlIHJlYXJyYW5nZWQgd2hlbiBzd2l0Y2hpbmcgdGhlbWVzLlxuICAgICAgdGhpcy50aGVtZVN2Yy5zZXR0aW5nc0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b2tlbnNDb250cm9sbGVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENsaWNrLmVtaXQoe1xuICAgICAgaXRlbUFkZGVkOiAoYXJnczogU2t5TG9va3VwQWRkQ2FsbGJhY2tBcmdzKSA9PlxuICAgICAgICB0aGlzLiNvbkFkZEJ1dHRvbkNvbXBsZXRlKGFyZ3MpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKFxuICAgIGNoYW5nZTogU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlXG4gICk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGNoYW5nZS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMuI2FkZFRvU2VsZWN0ZWQoY2hhbmdlLnNlbGVjdGVkSXRlbSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUoW10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZUJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRva2Vuc0NoYW5nZShjaGFuZ2U6IFNreVRva2VuW10pOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRva2VucyAhPT0gY2hhbmdlKSB7XG4gICAgICBpZiAoY2hhbmdlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIE5PVEU6IFdlIGRvIHRoaXMgaGVyZSBpbnN0ZWFkIG9mIGp1c3QgdXNpbmcgdGhlIGB2YWx1ZWAgc2V0dGVyIGJlY2F1c2Ugd2UgbmVlZCB0byB1c2UgdGhlXG4gICAgICAvLyBzZXQgb2YgdG9rZW5zIHJldHVybmVkIGhlcmUgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXR0aW5nIGZvY3VzIChzZWUgYG9uVG9rZW5zS2V5VXBgKS5cbiAgICAgIHRoaXMuI192YWx1ZSA9IGNoYW5nZS5tYXAoKHRva2VuKSA9PiB7XG4gICAgICAgIHJldHVybiB0b2tlbi52YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50b2tlbnMgPSBjaGFuZ2U7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblRva2Vuc0ZvY3VzSW5kZXhPdmVyUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2ZvY3VzSW5wdXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblRva2Vuc0tleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5SZW1vdmVBY3RpdmVUb2tlbik7XG4gICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNQcmV2aW91c1Rva2VuKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ0RlbCc6XG4gICAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuUmVtb3ZlQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c0FjdGl2ZVRva2VuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblRva2Vuc1JlbmRlcmVkKCk6IHZvaWQge1xuICAgIHRoaXMuI3NlbmRBdXRvY29tcGxldGVNZXNzYWdlKFxuICAgICAgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUuUmVwb3NpdGlvbkRyb3Bkb3duXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xuICAgIC8vIFNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggYXJyYXlzIC0gY2xvbmUgdGhlIGFycmF5IGJlaW5nIHNlbnQgaW4gdG8gZW5zdXJlIHdlIGFyZW4ndCBtb2RpZnlpbmcgYSBjb25zdW1lcnMgb3V0ZXIgYXJyYXlcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyB2YWx1ZS5zbGljZSgpIDogW107XG4gICAgdGhpcy4jdXBkYXRlRm9yU2VsZWN0TW9kZSgpO1xuICB9XG5cbiAgLy8gQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdHMgdGhlc2UgbWV0aG9kcy5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwdWJsaWMgb25DaGFuZ2UgPSAodmFsdWU6IGFueVtdKSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEFsbG93cyBBbmd1bGFyIHRvIGRpc2FibGUgdGhlIGlucHV0LlxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNhZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlYXJjaFRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlcyB3aGVuIHRvIGZvY3VzIG9uIHRoZSB0b2tlbnMuXG4gIC8vIENoZWNrIGZvciBlbXB0eSBzZWFyY2ggdGV4dCBvbiBrZXlkb3duLCBiZWZvcmUgdGhlIGVzY2FwZSBrZXkgaXMgZnVsbHkgcHJlc3NlZC5cbiAgLy8gKE90aGVyd2lzZSwgYSBzaW5nbGUgY2hhcmFjdGVyIGJlaW5nIGVzY2FwZWQgd291bGQgcmVnaXN0ZXIgYXMgZW1wdHkgb24ga2V5dXAuKVxuICAvLyBJZiBlbXB0eSBvbiBrZXlkb3duLCBzZXQgYSBmbGFnIHNvIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbiBjYW4gYmUgdGFrZW4gb24ga2V5dXAuXG4gIHB1YmxpYyBpbnB1dEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudCkudmFsdWU7XG5cbiAgICAvKiBTYW5pdHkgY2hlY2sgYXMgdGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBpbiBtdWx0aXBsZSBzZWxlY3QgbW9kZSAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICBjYXNlICdMZWZ0JzpcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5wdXRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayBhcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGluIG11bHRpcGxlIHNlbGVjdCBtb2RlICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRXNjJzpcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCkge1xuICAgICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNMYXN0VG9rZW4pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuI3NlbmRBdXRvY29tcGxldGVNZXNzYWdlKFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLkNsb3NlRHJvcGRvd24pO1xuICAgIGxldCBpc1ZhbHVlSW5UZXh0Qm94ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGlzVmFsdWVJblRleHRCb3ggPVxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlPy52YWx1ZSAmJlxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlID09PVxuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWVbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgIH1cblxuICAgIGxldCBzZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKCFpc1ZhbHVlSW5UZXh0Qm94ICYmIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHNlYXJjaFZhbHVlID0gdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS5pbnB1dFRleHRWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5QaWNrZXIoc2VhcmNoVmFsdWUpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU/LnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2hvd01vcmVDbGljayhldmVudDogU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5vcGVuUGlja2VyKGV2ZW50LmlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuUGlja2VyKGluaXRpYWxTZWFyY2g6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dNb3JlQ29uZmlnPy5jdXN0b21QaWNrZXIpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zaG93TW9yZUNvbmZpZy5jdXN0b21QaWNrZXIub3Blbih7XG4gICAgICAgIGl0ZW1zOiB0aGlzLmRhdGEsXG4gICAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICBpZiAodGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwgPVxuICAgICAgICAgIHRoaXMuI2NyZWF0ZVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoaW5pdGlhbFNlYXJjaCk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZVBpY2tlcklkID0gdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsLmlkO1xuXG4gICAgICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5jbG9zZWQuc3Vic2NyaWJlKChjbG9zZUFyZ3MpID0+IHtcbiAgICAgICAgICB0aGlzLiNwcm9jZXNzUGlja2VyUmVzdWx0KFxuICAgICAgICAgICAgY2xvc2VBcmdzLnJlYXNvbiA9PT0gJ3NhdmUnID8gY2xvc2VBcmdzLnNlbGVjdGVkSXRlbXMgOiBpbml0aWFsVmFsdWVcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXIgPVxuICAgICAgICAgIHRoaXMuI2NyZWF0ZU5hdGl2ZVBpY2tlckluc3RhbmNlKGluaXRpYWxTZWFyY2gpO1xuXG4gICAgICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHRoaXMuI29wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UuaWQ7XG5cbiAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS5hZGRDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQnV0dG9uQ2xpY2tlZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyLmNsb3NlZC5zdWJzY3JpYmUoKGNsb3NlQXJncykgPT4ge1xuICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcblxuICAgICAgICAgIGlmIChjbG9zZUFyZ3MucmVhc29uID09PSAnc2F2ZScpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKGl0ZW06IGFueSwgZGF0YUluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNsb3NlQXJncy5kYXRhLnNvbWUoKHNhdmVkSXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2F2ZWRJdGVtLmluZGV4ID09PSBkYXRhSW5kZXg7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IGluaXRpYWxWYWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNwcm9jZXNzUGlja2VyUmVzdWx0KHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjY3JlYXRlU2VsZWN0aW9uTW9kYWxJbnN0YW5jZShcbiAgICBpbml0aWFsU2VhcmNoOiBzdHJpbmdcbiAgKTogU2t5U2VsZWN0aW9uTW9kYWxJbnN0YW5jZSB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBtb2RhbENvbmZpZyA9IHRoaXMuc2hvd01vcmVDb25maWc/Lm5hdGl2ZVBpY2tlckNvbmZpZyB8fCB7fTtcblxuICAgIGlmICghbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlKSB7XG4gICAgICBtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlkUHJvcGVydHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jbG9nU3ZjLmVycm9yKFxuICAgICAgICBcIlRoZSBsb29rdXAgY29tcG9uZW50J3MgJ2lkUHJvcGVydHknIGlucHV0IGlzIHJlcXVpcmVkIHdoZW4gYGVuYWJsZVNob3dNb3JlYCBhbmQgJ3NlYXJjaEFzeW5jJyBhcmUgdXNlZCB0b2dldGhlci5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jc2VsZWN0aW9uTW9kYWxTdmMub3Blbih7XG4gICAgICBkZXNjcmlwdG9yUHJvcGVydHk6IHRoaXMuZGVzY3JpcHRvclByb3BlcnR5LFxuICAgICAgaWRQcm9wZXJ0eTogdGhpcy5pZFByb3BlcnR5ISxcbiAgICAgIHNlYXJjaEFzeW5jOiAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2hBc3luY0FyZ3M6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyA9IHtcbiAgICAgICAgICBkaXNwbGF5VHlwZTogJ21vZGFsJyxcbiAgICAgICAgICBvZmZzZXQ6IGFyZ3Mub2Zmc2V0LFxuICAgICAgICAgIHNlYXJjaFRleHQ6IGFyZ3Muc2VhcmNoVGV4dCxcbiAgICAgICAgICBjb250aW51YXRpb25EYXRhOiBhcmdzLmNvbnRpbnVhdGlvbkRhdGEsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZWFyY2hBc3luYy5lbWl0KHNlYXJjaEFzeW5jQXJncyk7XG5cbiAgICAgICAgcmV0dXJuIHNlYXJjaEFzeW5jQXJncy5yZXN1bHQ7XG4gICAgICB9LFxuICAgICAgc2VsZWN0TW9kZTogdGhpcy5zZWxlY3RNb2RlLFxuICAgICAgYWRkQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25DbGlja2VkKCk7XG4gICAgICB9LFxuICAgICAgaW5pdGlhbFNlYXJjaCxcbiAgICAgIGl0ZW1UZW1wbGF0ZTogbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlLFxuICAgICAgc2hvd0FkZEJ1dHRvbjogdGhpcy5zaG93QWRkQnV0dG9uLFxuICAgICAgdGl0bGU6IG1vZGFsQ29uZmlnLnRpdGxlLFxuICAgICAgdmFsdWU6IGluaXRpYWxWYWx1ZSxcbiAgICAgIHdyYXBwZXJDbGFzczogdGhpcy53cmFwcGVyQ2xhc3MsXG4gICAgfSk7XG4gIH1cblxuICAjY3JlYXRlTmF0aXZlUGlja2VySW5zdGFuY2UoaW5pdGlhbFNlYXJjaDogc3RyaW5nKTogU2t5TW9kYWxJbnN0YW5jZSB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBtb2RhbENvbmZpZyA9IHRoaXMuc2hvd01vcmVDb25maWc/Lm5hdGl2ZVBpY2tlckNvbmZpZyB8fCB7fTtcblxuICAgIGlmICghbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlKSB7XG4gICAgICBtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHRQcm92aWRlclZhbHVlID0gbmV3IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dChcbiAgICAgIHRoaXMuZGVzY3JpcHRvclByb3BlcnR5LFxuICAgICAgaW5pdGlhbFNlYXJjaCxcbiAgICAgIGluaXRpYWxWYWx1ZSxcbiAgICAgIHRoaXMuZGF0YSxcbiAgICAgIHRoaXMuc2VhcmNoT3JEZWZhdWx0LFxuICAgICAgdGhpcy5zZWxlY3RNb2RlLFxuICAgICAgdGhpcy5zaG93QWRkQnV0dG9uLFxuICAgICAgbW9kYWxDb25maWdcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuI21vZGFsU2VydmljZS5vcGVuKFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0LFxuICAgICAgICAgIHVzZVZhbHVlOiBjb250ZXh0UHJvdmlkZXJWYWx1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlLFxuICAgICAgICAgIHVzZVZhbHVlOiB0aGlzLiNhZGFwdGVyLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgIH0pO1xuICB9XG5cbiAgI3Byb2Nlc3NQaWNrZXJSZXN1bHQoc2VsZWN0ZWRJdGVtczogYW55W10gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zIHx8IFtdO1xuXG4gICAgdGhpcy53cml0ZVZhbHVlKHNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMuI2ZvY3VzSW5wdXQoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaEFzeW5jKGFyZ3M6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoQXN5bmMuZW1pdChhcmdzKTtcbiAgfVxuXG4gICNhZGRUb1NlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcblxuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICBzZWxlY3RlZEl0ZW1zID0gW2l0ZW1dO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcblxuICAgICAgY29uc3QgaWRQcm9wZXJ0eSA9IHRoaXMuaWRQcm9wZXJ0eSB8fCAnJztcblxuICAgICAgLy8gSWYgaXRlbXMgaGF2ZSBhIHVuaXF1ZSBpZGVudGlmaWVyLCBkb24ndCBhbGxvdyB0aGUgc2FtZSBpdGVtIHRvIGJlIGFkZGVkIHR3aWNlLlxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5pZFByb3BlcnR5IHx8XG4gICAgICAgICF0aGlzLnZhbHVlLnNvbWUoXG4gICAgICAgICAgKGV4aXN0aW5nSXRlbSkgPT4gZXhpc3RpbmdJdGVtW2lkUHJvcGVydHldID09PSBpdGVtW2lkUHJvcGVydHldXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy53cml0ZVZhbHVlKHNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgI2FkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2lkbGUgPSBuZXcgU3ViamVjdCgpO1xuICAgIHRoaXMuI2ZvY3VzSW5wdXRPbkhvc3RDbGljaygpO1xuICB9XG5cbiAgI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2lkbGUubmV4dCgpO1xuICAgIHRoaXMuI2lkbGUuY29tcGxldGUoKTtcbiAgfVxuXG4gICNmb2N1c0lucHV0T25Ib3N0Q2xpY2soKTogdm9pZCB7XG4gICAgbGV0IGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICA/IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgOiB0aGlzLmxvb2t1cFdyYXBwZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgZG9jdW1lbnRPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50O1xuXG4gICAgLy8gSGFuZGxlcyBmb2N1c2luZyB0aGUgaW5wdXQgd2hlbiB0aGUgaG9zdCBpcyBjbGlja2VkLlxuICAgIC8vIFRoZSBpbnB1dCBzaG91bGQgTk9UIGJlIGZvY3VzZWQgaWYgb3RoZXIgZWxlbWVudHMgKHRva2VucywgZXRjLilcbiAgICAvLyBhcmUgY3VycmVudGx5IGZvY3VzZWQgb3IgYmVpbmcgdGFiYmVkIHRocm91Z2guXG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50T2JqLCAnbW91c2Vkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IHRoaXMubG9va3VwV3JhcHBlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGhvc3RFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnRPYmosICdmb2N1c2luJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IHRoaXMubG9va3VwV3JhcHBlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGhvc3RFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGlmIChob3N0RWxlbWVudCkge1xuICAgICAgb2JzZXJ2YWJsZUZyb21FdmVudChob3N0RWxlbWVudCwgJ21vdXNldXAnKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jaWRsZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IGRvY3VtZW50T2JqLmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuICAgICAgICAgIGlmICghY2xhc3NMaXN0IHx8ICFjbGFzc0xpc3QuY29udGFpbnMoJ3NreS10b2tlbicpKSB7XG4gICAgICAgICAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb29rdXBXcmFwcGVyUmVmKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyLmZvY3VzSW5wdXQodGhpcy5sb29rdXBXcmFwcGVyUmVmKTtcbiAgICB9XG4gIH1cblxuICAjb25BZGRCdXR0b25Db21wbGV0ZShhcmdzOiBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsKSB7XG4gICAgICAvLyBOb3RpZnkgdGhlIHNlbGVjdGlvbiBtb2RhbCBvZiB0aGUgbmV3IGl0ZW0uIFRoZSBzZWxlY3Rpb25cbiAgICAgIC8vIG1vZGFsIHdpbGwgZGVjaWRlIHdoZXRoZXIgdGhlIG5ldyBpdGVtIHNob3VsZCBiZSBhZGRlZFxuICAgICAgLy8gdG8gdGhlIHZhbHVlIHdoZW4gdGhlIHVzZXIgY29uZmlybXMgb3IgY2FuY2VscyB0aGVcbiAgICAgIC8vIHNlbGVjdGlvbiBtb2RhbC5cbiAgICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5hZGRJdGVtKGFyZ3MuaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBhZGRJdGVtVG9WYWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHRoaXMuI2hhc1NlYXJjaEFzeW5jKCkpIHtcbiAgICAgICAgYWRkSXRlbVRvVmFsdWUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGFyZ3MuZGF0YSkge1xuICAgICAgICAgIHRoaXMuZGF0YSA9IGFyZ3MuZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGEuaW5kZXhPZihhcmdzLml0ZW0pID49IDApIHtcbiAgICAgICAgICBpZiAodGhpcy4jb3Blbk5hdGl2ZVBpY2tlcikge1xuICAgICAgICAgICAgLy8gTm90aWZ5IHRoZSBwaWNrZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGUgcGlja2VyIHdpbGxcbiAgICAgICAgICAgIC8vIGRlY2lkZSB3aGV0aGVyIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlXG4gICAgICAgICAgICAvLyB2YWx1ZSB3aGVuIHRoZSB1c2VyIGNvbmZpcm1zIG9yIGNhbmNlbHMgdGhlIHBpY2tlci5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlclxuICAgICAgICAgICAgICAgIC5jb21wb25lbnRJbnN0YW5jZSBhcyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50XG4gICAgICAgICAgICApLm9uSXRlbVNlbGVjdCh0cnVlLCB7IHZhbHVlOiBhcmdzLml0ZW0sIHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWRkSXRlbVRvVmFsdWUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRkSXRlbVRvVmFsdWUpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ211bHRpcGxlJ1xuICAgICAgICAgICAgPyB0aGlzLnZhbHVlLmNvbmNhdChhcmdzLml0ZW0pXG4gICAgICAgICAgICA6IFthcmdzLml0ZW1dO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNwYXJzZVRva2VucyhkYXRhOiBhbnlbXSk6IFNreVRva2VuW10ge1xuICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAjc2VuZEF1dG9jb21wbGV0ZU1lc3NhZ2UodHlwZTogU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2xsZXIubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICAjc2VuZFRva2Vuc01lc3NhZ2UodHlwZTogU2t5VG9rZW5zTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnRva2Vuc0NvbnRyb2xsZXIubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICAjdXBkYXRlRm9yU2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2hhc1NlYXJjaEFzeW5jKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaEFzeW5jLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgI3BpY2tlck1vZGFsT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy4jb3Blbk5hdGl2ZVBpY2tlciB8fCB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFN2Y1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRUZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWxvb2t1cFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1sb29rdXAtZm9jdXNlZCc6IGlzSW5wdXRGb2N1c2VkLFxuICAgICAgJ3NreS1sb29rdXAtZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAgICdza3ktbG9va3VwLXNpbmdsZSc6IHNlbGVjdE1vZGUgPT09ICdzaW5nbGUnXG4gICAgfVwiXG4gICAgI2xvb2t1cFdyYXBwZXJcbiAgPlxuICAgIDxza3ktYXV0b2NvbXBsZXRlXG4gICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgW2F0dHIuZGF0YS1za3ktbG9va3VwLXNob3ctbW9yZS1waWNrZXItaWRdPVwic2hvd01vcmVQaWNrZXJJZFwiXG4gICAgICBbZGF0YV09XCJkYXRhXCJcbiAgICAgIFtkZWJvdW5jZVRpbWVdPVwiZGVib3VuY2VUaW1lXCJcbiAgICAgIFtkZXNjcmlwdG9yUHJvcGVydHldPVwiZGVzY3JpcHRvclByb3BlcnR5XCJcbiAgICAgIFtlbmFibGVTaG93TW9yZV09XCJlbmFibGVTaG93TW9yZVwiXG4gICAgICBbbWVzc2FnZVN0cmVhbV09XCJhdXRvY29tcGxldGVDb250cm9sbGVyXCJcbiAgICAgIFtwcm9wZXJ0aWVzVG9TZWFyY2hdPVwicHJvcGVydGllc1RvU2VhcmNoXCJcbiAgICAgIFtzZWFyY2hdPVwic2VhcmNoT3JEZWZhdWx0XCJcbiAgICAgIFtzZWFyY2hBc3luY0Rpc2FibGVkXT1cInNlYXJjaEFzeW5jLm9ic2VydmVycy5sZW5ndGggPT09IDBcIlxuICAgICAgW3NlYXJjaEZpbHRlcnNdPVwic2VhcmNoRmlsdGVyc1wiXG4gICAgICBbc2VhcmNoUmVzdWx0c0xpbWl0XT1cInNlYXJjaFJlc3VsdHNMaW1pdFwiXG4gICAgICBbc2VhcmNoUmVzdWx0VGVtcGxhdGVdPVwic2VhcmNoUmVzdWx0VGVtcGxhdGVcIlxuICAgICAgW3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc109XCJzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNcIlxuICAgICAgW3Nob3dBZGRCdXR0b25dPVwic2hvd0FkZEJ1dHRvblwiXG4gICAgICBbd3JhcHBlckNsYXNzXT1cIndyYXBwZXJDbGFzc1wiXG4gICAgICAoYWRkQ2xpY2spPVwiYWRkQnV0dG9uQ2xpY2tlZCgpXCJcbiAgICAgIChzZWFyY2hBc3luYyk9XCJvblNlYXJjaEFzeW5jKCRldmVudClcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChzaG93TW9yZUNsaWNrKT1cIm9uU2hvd01vcmVDbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWxvb2t1cC1zZWFyY2gtZmxleC13cmFwcGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtc2VhcmNoXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc2t5LWZpZWxkLXN0YXR1cy1hY3RpdmUnOiBpc0lucHV0Rm9jdXNlZCAmJiAhZGlzYWJsZWRcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktdG9rZW5zXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktbG9va3VwLXRva2Vuc1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImRlc2NyaXB0b3JQcm9wZXJ0eVwiXG4gICAgICAgICAgICBbZm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFttZXNzYWdlU3RyZWFtXT1cInRva2Vuc0NvbnRyb2xsZXJcIlxuICAgICAgICAgICAgW3RyYWNrV2l0aF09XCJpZFByb3BlcnR5XCJcbiAgICAgICAgICAgIFt0b2tlbnNdPVwidG9rZW5zXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJvblRva2Vuc0tleVVwKCRldmVudClcIlxuICAgICAgICAgICAgKHRva2Vuc0NoYW5nZSk9XCJvblRva2Vuc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICh0b2tlbnNSZW5kZXJlZCk9XCJvblRva2Vuc1JlbmRlcmVkKClcIlxuICAgICAgICAgICAgKHRva2VuU2VsZWN0ZWQpPVwiZW5hYmxlU2hvd01vcmUgPyBvcGVuUGlja2VyKCcnKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAoZm9jdXNJbmRleE92ZXJSYW5nZSk9XCJvblRva2Vuc0ZvY3VzSW5kZXhPdmVyUmFuZ2UoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbCBza3ktbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgICAgICBza3lBdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgd3JhcD1cIm9mZlwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJUZXh0XCJcbiAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZUF0dHJpYnV0ZV09XCJhdXRvY29tcGxldGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkF1dG9jb21wbGV0ZUJsdXIoKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duKT1cImlucHV0S2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGtleXVwKT1cImlucHV0S2V5dXAoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRCb3hIb3N0U3ZjICYmICFlbmFibGVTaG93TW9yZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hJY29uVGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3NreS10b2tlbnM+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RNb2RlID09PSAnc2luZ2xlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtc2luZ2xlLWNvbnRyb2xcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2wgc2t5LWxvb2t1cC1pbnB1dFwiXG4gICAgICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgc2t5QXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgIHdyYXA9XCJvZmZcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICAgICAgICAgIFthdXRvY29tcGxldGVBdHRyaWJ1dGVdPVwiYXV0b2NvbXBsZXRlQXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25BdXRvY29tcGxldGVCbHVyKClcIlxuICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFN2YyAmJiAhZW5hYmxlU2hvd01vcmVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoSWNvblRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFN2YyAmJiBlbmFibGVTaG93TW9yZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2t5LWF1dG9jb21wbGV0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1kaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAnc2t5dXhfbG9va3VwX3NlYXJjaF9idXR0b25fc2hvd19tb3JlJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJvblNlYXJjaEJ1dHRvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJzZWFyY2hcIj48L3NreS1pY29uPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgaWNvbj1cInNlYXJjaFwiXG4gICAgICA+PC9za3ktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaEljb25UZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWljb24gc2t5LWlucHV0LWJveC1pY29uLWluc2V0XCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktbG9va3VwLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gID5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwic2VhcmNoXCI+PC9za3ktaWNvbj5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb25UeXBlPVwic2t5dXhcIiBpY29uPVwic2VhcmNoXCI+PC9za3ktaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1340,6 +1340,7 @@ class SkyCountryFieldComponent {
1340
1340
  /**
1341
1341
  * Whether to include phone information in the selected country and country dropdown.
1342
1342
  * @default false
1343
+ * @internal
1343
1344
  */
1344
1345
  set includePhoneInfo(value) {
1345
1346
  __classPrivateFieldSet(this, _SkyCountryFieldComponent__includePhoneInfo, value !== null && value !== void 0 ? value : false, "f");
@@ -2368,6 +2369,7 @@ class SkyLookupShowMoreModalComponent {
2368
2369
  */
2369
2370
  this.addClick = new Subject();
2370
2371
  this.items = [];
2372
+ this.itemsLoading = false;
2371
2373
  this.dataManagerConfig = {
2372
2374
  sortOptions: [
2373
2375
  {
@@ -2409,6 +2411,7 @@ class SkyLookupShowMoreModalComponent {
2409
2411
  this.addClick.next();
2410
2412
  }
2411
2413
  addItems() {
2414
+ this.itemsLoading = true;
2412
2415
  if (!this.items || this.items.length === 0) {
2413
2416
  const selectedItems = this.selectedItems.slice();
2414
2417
  this.items = this.context.items.map((item) => {
@@ -2446,6 +2449,7 @@ class SkyLookupShowMoreModalComponent {
2446
2449
  else {
2447
2450
  this.itemsHaveMore = true;
2448
2451
  }
2452
+ this.itemsLoading = false;
2449
2453
  __classPrivateFieldGet(this, _SkyLookupShowMoreModalComponent_changeDetector, "f").markForCheck();
2450
2454
  });
2451
2455
  }
@@ -2509,9 +2513,16 @@ class SkyLookupShowMoreModalComponent {
2509
2513
  /* istanbul ignore else */
2510
2514
  if (this.searchText !== searchText) {
2511
2515
  __classPrivateFieldSet(this, _SkyLookupShowMoreModalComponent_itemIndex, 10, "f");
2516
+ this.modalInstance.scrollContentToTop();
2512
2517
  }
2513
2518
  this.searchText = searchText;
2514
- this.updateDataState();
2519
+ this.itemsLoading = true;
2520
+ __classPrivateFieldGet(this, _SkyLookupShowMoreModalComponent_changeDetector, "f").detectChanges();
2521
+ // We need to ensure that the scroll event makes it all the way through the infinite scroll workflow before updating the data state.
2522
+ // Without this, the infinite scroll can add items improperly because it can see the above scroll after the items finish searching.
2523
+ setTimeout(() => {
2524
+ this.updateDataState();
2525
+ }, 100);
2515
2526
  }
2516
2527
  searchItems(items) {
2517
2528
  const searchText = this.searchText;
@@ -2572,6 +2583,7 @@ class SkyLookupShowMoreModalComponent {
2572
2583
  else {
2573
2584
  this.itemsHaveMore = true;
2574
2585
  }
2586
+ this.itemsLoading = false;
2575
2587
  __classPrivateFieldGet(this, _SkyLookupShowMoreModalComponent_changeDetector, "f").markForCheck();
2576
2588
  });
2577
2589
  }
@@ -2592,10 +2604,10 @@ class SkyLookupShowMoreModalComponent {
2592
2604
  }
2593
2605
  _SkyLookupShowMoreModalComponent_changeDetector = new WeakMap(), _SkyLookupShowMoreModalComponent_itemIndex = new WeakMap(), _SkyLookupShowMoreModalComponent_ngUnsubscribe = new WeakMap();
2594
2606
  SkyLookupShowMoreModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLookupShowMoreModalComponent, deps: [{ token: i1$1.SkyModalInstance }, { token: SkyLookupShowMoreNativePickerContext }, { token: i0.ChangeDetectorRef }, { token: i1.SkyIdService }], target: i0.ɵɵFactoryTarget.Component });
2595
- SkyLookupShowMoreModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyLookupShowMoreModalComponent, selector: "skyux-lookup-show-more-modal", ngImport: i0, template: "<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n", styles: [".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i5.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i7.λ6, selector: "sky-infinite-scroll", inputs: ["enabled", "loading"], outputs: ["scrollEnd"] }, { kind: "component", type: i1$1.λ5, selector: "sky-modal", inputs: ["ariaRole", "tiledBody", "ariaDescribedBy", "ariaLabelledBy"] }, { kind: "component", type: i1$1.λ2, selector: "sky-modal-content" }, { kind: "component", type: i1$1.λ3, selector: "sky-modal-footer" }, { kind: "component", type: i1$1.λ4, selector: "sky-modal-header" }, { kind: "component", type: i7.λ11, selector: "sky-repeater", inputs: ["activeIndex", "ariaLabel", "reorderable", "expandMode"], outputs: ["activeIndexChange", "orderChange"] }, { kind: "component", type: i7.λ10, selector: "sky-repeater-item", inputs: ["disabled", "itemName", "inlineFormConfig", "inlineFormTemplate", "isExpanded", "isSelected", "reorderable", "selectable", "showInlineForm", "tag"], outputs: ["collapse", "expand", "inlineFormClose", "isSelectedChange"] }, { kind: "component", type: i7.λ8, selector: "sky-repeater-item-content" }, { kind: "component", type: SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { kind: "directive", type: i8.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "component", type: i10.λ37, selector: "sky-toolbar" }, { kind: "component", type: i10.λ39, selector: "sky-toolbar-item" }, { kind: "component", type: i10.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i10.λ40, selector: "sky-toolbar-view-actions" }, { kind: "directive", type: i1.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper"] }, { kind: "pipe", type: i4$1.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2607
+ SkyLookupShowMoreModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyLookupShowMoreModalComponent, selector: "skyux-lookup-show-more-modal", ngImport: i0, template: "<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"itemsHaveMore\"\n [loading]=\"itemsLoading\"\n (scrollEnd)=\"addItems()\"\n >\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n", styles: [".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i5.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i7.λ6, selector: "sky-infinite-scroll", inputs: ["enabled", "loading"], outputs: ["scrollEnd"] }, { kind: "component", type: i1$1.λ5, selector: "sky-modal", inputs: ["ariaRole", "tiledBody", "ariaDescribedBy", "ariaLabelledBy"] }, { kind: "component", type: i1$1.λ2, selector: "sky-modal-content" }, { kind: "component", type: i1$1.λ3, selector: "sky-modal-footer" }, { kind: "component", type: i1$1.λ4, selector: "sky-modal-header" }, { kind: "component", type: i7.λ11, selector: "sky-repeater", inputs: ["activeIndex", "ariaLabel", "reorderable", "expandMode"], outputs: ["activeIndexChange", "orderChange"] }, { kind: "component", type: i7.λ10, selector: "sky-repeater-item", inputs: ["disabled", "itemName", "inlineFormConfig", "inlineFormTemplate", "isExpanded", "isSelected", "reorderable", "selectable", "showInlineForm", "tag"], outputs: ["collapse", "expand", "inlineFormClose", "isSelectedChange"] }, { kind: "component", type: i7.λ8, selector: "sky-repeater-item-content" }, { kind: "component", type: SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { kind: "directive", type: i8.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "component", type: i10.λ37, selector: "sky-toolbar" }, { kind: "component", type: i10.λ39, selector: "sky-toolbar-item" }, { kind: "component", type: i10.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i10.λ40, selector: "sky-toolbar-view-actions" }, { kind: "directive", type: i1.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper"] }, { kind: "pipe", type: i4$1.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2596
2608
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLookupShowMoreModalComponent, decorators: [{
2597
2609
  type: Component,
2598
- args: [{ selector: 'skyux-lookup-show-more-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n", styles: [".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\n"] }]
2610
+ args: [{ selector: 'skyux-lookup-show-more-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"itemsHaveMore\"\n [loading]=\"itemsLoading\"\n (scrollEnd)=\"addItems()\"\n >\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n", styles: [".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\n"] }]
2599
2611
  }], ctorParameters: function () { return [{ type: i1$1.SkyModalInstance }, { type: SkyLookupShowMoreNativePickerContext }, { type: i0.ChangeDetectorRef }, { type: i1.SkyIdService }]; } });
2600
2612
 
2601
2613
  /**
@@ -3314,6 +3326,10 @@ _SkyLookupComponent_adapter = new WeakMap(), _SkyLookupComponent_elementRef = ne
3314
3326
  provide: SkyLookupShowMoreNativePickerContext,
3315
3327
  useValue: contextProviderValue,
3316
3328
  },
3329
+ {
3330
+ provide: SkyLookupAdapterService,
3331
+ useValue: __classPrivateFieldGet(this, _SkyLookupComponent_adapter, "f"),
3332
+ },
3317
3333
  ],
3318
3334
  size: 'large',
3319
3335
  wrapperClass: this.wrapperClass,