tuain-ng-forms-lib 17.1.27 → 17.1.29

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.
@@ -355,11 +355,13 @@ export class FieldDescriptor extends FormElement {
355
355
  */
356
356
  setVisibleLabel(visibleLabel) { this.visibleLabel = visibleLabel; }
357
357
  notifyEditionPartial() {
358
+ console.log(`notifyEditionPartial: resetError ${this._fieldCode}`);
358
359
  this.resetError();
359
360
  this._editionPartial.next({ code: this._fieldCode, intrinsicValidation: true });
360
361
  }
361
362
  notifyEditionFinish() {
362
363
  const fieldValue = this.value;
364
+ console.log(`notifyEditionFinish: resetError ${this._fieldCode}`);
363
365
  this.resetError();
364
366
  const validationConfig = this._formConfig.fieldValidations?.[this._fieldType] ?? {};
365
367
  const { type, validation } = validationConfig;
@@ -465,4 +467,4 @@ export class FieldDescriptor extends FormElement {
465
467
  return true;
466
468
  }
467
469
  }
468
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFFakMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLGFBQWEsR0FBRztJQUNwQixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVc7SUFDcEcsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTTtJQUNsRyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGNBQWM7SUFDcEcsU0FBUyxFQUFFLGFBQWE7Q0FDekIsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHO0lBQ1osV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFO0lBQy9ELFNBQVMsRUFBRSxFQUFF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SSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHluIGZyb20gJ3luJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcywgTk9fRVJST1IgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IERFRkFVTFRfRVJST1JfVFlQRSA9ICdlcnJvcic7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVFlQRSA9ICdJTlBVVCc7XG5jb25zdCBERUZBVUxUX0FMSUdOTUVOVCA9ICdsZWZ0JztcblxuY29uc3QgU1REX01BWF9MRU5HVEggPSA1MDtcbmNvbnN0IEJJR19NQVhfTEVOR1RIID0gNTAwO1xuXG5jb25zdCBkaXJlY3RDaGFuZ2VzID0gW1xuICAnZGVmYXVsdEVkaXRhYmxlJywgJ2RlZmF1bHRWYWx1ZScsICdhbGlnbm1lbnQnLCAncmVxdWlyZWQnLCAnZXJyb3JDb2RlJywgJ2Vycm9yTWVzc2FnZScsICdlcnJvclR5cGUnLFxuICAndG9vbHRpcCcsICdpbmZvJywgJ2Zvcm1hdCcsICdpbnRyaW5zaWNFcnJvck1lc3NhZ2UnLCAnb3V0cHV0T25seScsICdjYXB0dXJlVHlwZScsICd0aXRsZScsICd0eXBlJyxcbiAgJ21heExlbmd0aCcsICdtYXhWYWx1ZScsICdtaW5MZW5ndGgnLCAnbWluVmFsdWUnLCAndmFsaWRhdGVPblNlcnZlcicsICdzZXJ2ZXJBY3Rpb24nLCAndmlzaWJsZUxhYmVsJyxcbiAgJ29wdGlvbnMnLCAncGxhY2Vob2xkZXInLFxuXTtcblxuY29uc3QgYXR0cnMgPSB7XG4gIGNhcHR1cmVUeXBlOiB7IG5hbWU6ICdfY2FwdHVyZVR5cGUnLCBwcm9wYWdhdGU6ICdjYXB0dXJlVHlwZScgfSxcbiAgZXJyb3JDb2RlOiB7IG5hbWU6ICdfZXJyb3JDb2RlJywgcHJvcGFnYXRlOiAnZXJyb3JDb2RlJyB9LFxuICBlcnJvck1lc3NhZ2U6IHsgbmFtZTogJ19lcnJvck1lc3NhZ2UnLCBwcm9wYWdhdGU6ICdlcnJvck1lc3NhZ2UnIH0sXG4gIGVycm9yVHlwZTogeyBuYW1lOiAnX2Vycm9yVHlwZScsIHByb3BhZ2F0ZTogJ2Vycm9yVHlwZScgfSxcbiAgZGVmYXVsdFZhbHVlOiB7IG5hbWU6ICdfZGVmYXVsdFZhbHVlJywgcHJvcGFnYXRlOiAnZGVmYXVsdFZhbHVlJyB9LFxuICBkZWZhdWx0RWRpdGFibGU6IHsgbmFtZTogJ19kZWZhdWx0RWRpdGFibGUnLCBwcm9wYWdhdGU6ICdkZWZhdWx0RWRpdGFibGUnIH0sXG4gIGZpZWxkQWxpZ25tZW50OiB7IG5hbWU6ICdfZmllbGRBbGlnbm1lbnQnLCBwcm9wYWdhdGU6ICdhbGlnbm1lbnQnIH0sXG4gIGZpZWxkQ29kZTogeyBuYW1lOiAnX2ZpZWxkQ29kZScsIHByb3BhZ2F0ZTogJ2NvZGUnIH0sXG4gIGZpZWxkSW5mbzogeyBuYW1lOiAnX2ZpZWxkSW5mbycsIHByb3BhZ2F0ZTogJ2luZm8nIH0sXG4gIGZpZWxkUmVxdWlyZWQ6IHsgbmFtZTogJ19maWVsZFJlcXVpcmVkJywgcHJvcGFnYXRlOiAncmVxdWlyZWQnIH0sXG4gIGZpZWxkVGl0bGU6IHsgbmFtZTogJ19maWVsZFRpdGxlJywgcHJvcGFnYXRlOiAndGl0bGUnIH0sXG4gIGZpZWxkVHlwZTogeyBuYW1lOiAnX2ZpZWxkVHlwZScsIHByb3BhZ2F0ZTogJ3R5cGUnIH0sXG4gIGZpZWxkRm9ybWF0OiB7IG5hbWU6ICdfZmllbGRGb3JtYXQnLCBwcm9wYWdhdGU6ICdmb3JtYXQnIH0sXG4gIGZpZWxkT3B0aW9uczogeyBuYW1lOiAnX2ZpZWxkT3B0aW9ucycsIHByb3BhZ2F0ZTogJ29wdGlvbnMnIH0sXG4gIGZvY3VzOiB7IG5hbWU6ICdfZm9jdXMnLCBwcm9wYWdhdGU6ICdmb2N1cycgfSxcbiAgaGFzQ2hhbmdlZDogeyBuYW1lOiAnX2hhc0NoYW5nZWQnLCBwcm9wYWdhdGU6ICdoYXNDaGFuZ2VkJyB9LFxuICBpbnRyaW5zaWNFcnJvck1lc3NhZ2U6IHsgbmFtZTogJ19pbnRyaW5zaWNFcnJvck1lc3NhZ2UnLCBwcm9wYWdhdGU6IG51bGwgfSxcbiAgbWF4TGVuZ3RoOiB7IG5hbWU6ICdfbWF4TGVuZ3RoJywgcHJvcGFnYXRlOiAnbWF4TGVuZ3RoJyB9LFxuICBtYXhWYWx1ZTogeyBuYW1lOiAnX21heFZhbHVlJywgcHJvcGFnYXRlOiAnbWF4VmFsdWUnIH0sXG4gIG1pbkxlbmd0aDogeyBuYW1lOiAnX21pbkxlbmd0aCcsIHByb3BhZ2F0ZTogJ21pbkxlbmd0aCcgfSxcbiAgbWluVmFsdWU6IHsgbmFtZTogJ19taW5WYWx1ZScsIHByb3BhZ2F0ZTogJ21pblZhbHVlJyB9LFxuICBvblZhbGlkYXRpb246IHsgbmFtZTogJ19vblZhbGlkYXRpb24nLCBwcm9wYWdhdGU6ICdvblZhbGlkYXRpb24nIH0sXG4gIG91dHB1dE9ubHk6IHsgbmFtZTogJ19vdXRwdXRPbmx5JywgcHJvcGFnYXRlOiAnb3V0cHV0T25seScgfSxcbiAgcGxhY2Vob2xkZXI6IHsgbmFtZTogJ19wbGFjZWhvbGRlcicsIHByb3BhZ2F0ZTogJ3BsYWNlaG9sZGVyJyB9LFxuICB0b29sdGlwVGV4dDogeyBuYW1lOiAnX3Rvb2x0aXBUZXh0JywgcHJvcGFnYXRlOiAndG9vbHRpcCcgfSxcbiAgdmFsaWRhdGVPblNlcnZlcjogeyBuYW1lOiAnX3ZhbGlkYXRlT25TZXJ2ZXInLCBwcm9wYWdhdGU6ICd2YWxpZGF0ZU9uU2VydmVyJyB9LFxuICB2YWx1ZTogeyBuYW1lOiAnX3ZhbHVlJywgcHJvcGFnYXRlOiAndmFsdWUnIH0sXG4gIHZpc2libGVMYWJlbDogeyBuYW1lOiAnX3Zpc2libGVMYWJlbCcsIHByb3BhZ2F0ZTogJ3Zpc2libGVMYWJlbCcgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsRXZlbnQge1xuICBjb2RlOiBzdHJpbmc7XG4gIGRldGFpbDogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkT3B0aW9uIHtcbiAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICBmaWVsZE9wdGlvbklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8RGV0YWlsRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfZXJyb3JUeXBlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZXJyb3JDb2RlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfbWluVmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfbWF4VmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfbWF4TGVuZ3RoOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9taW5MZW5ndGg6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX29uVmFsaWRhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92YWxpZGF0ZU9uU2VydmVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX3Zpc2libGVMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jYXB0dXJlVHlwZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZTogYW55ID0gJyc7XG4gIHByaXZhdGUgX2RlZmF1bHRFZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9leHRlcm5hbFZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX2ZpZWxkQWxpZ25tZW50OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRJbmZvOiBhbnkgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZFRpdGxlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRUeXBlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRGb3JtYXQ6IFJlZ0V4cCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9oYXNDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX291dHB1dE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdG9vbHRpcFRleHQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkT3B0aW9uczogRmllbGRPcHRpb25bXSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnPy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXM/LmZpZWxkcyA/PyBbXTtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gZWxlbWVudFR5cGVzLmZpZWxkO1xuICAgIGNvbnN0IGZsZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkQ29kZSwgZmxkLmZpZWxkQ29kZSk7XG4gICAgdGhpcy50aXRsZSA9IGZsZC5maWVsZFRpdGxlID8/IHRoaXMuX2ZpZWxkQ29kZTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmxkLnBsYWNlaG9sZGVyID8/IHRoaXMudGl0bGU7XG4gICAgdGhpcy50eXBlID0gZmxkLmZpZWxkVHlwZUNvZGU7XG4gICAgdGhpcy5jYXB0dXJlVHlwZSA9IGZsZC5jYXB0dXJlVHlwZSA/PyBERUZBVUxUX0NBUFRVUkVfVFlQRTtcblxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IGZsZC5kZWZhdWx0VmFsdWUgPz8gbnVsbDtcbiAgICBpZiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhbikge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWUgPz8gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5fZmllbGRUeXBlXSAhPSBudWxsKVxuICAgICAgPyB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5fZmllbGRUeXBlXVsndGV4dC1hbGlnbiddIDogREVGQVVMVF9BTElHTk1FTlQ7XG4gICAgY29uc3QgZmllbGRBbGlnbm1lbnQgPSAoZmxkLmFsaWdubWVudCAhPSBudWxsKSA/IGZsZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuYWxpZ25tZW50ID0gZmllbGRBbGlnbm1lbnQ7XG4gICAgdGhpcy5pbmZvID0gZmxkLmluZm8gfHwgJyc7XG4gICAgbGV0IGZpZWxkRm9ybWF0O1xuICAgIHRyeSB7XG4gICAgICBpZiAoZmxkLmZvcm1hdCAmJiB0eXBlb2YgZmxkLmZvcm1hdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZmllbGRGb3JtYXQgPSBuZXcgUmVnRXhwKGZsZC5mb3JtYXQpO1xuICAgICAgfSBlbHNlIGlmIChmbGQuZm9ybWF0Py5yZWdFeHApIHtcbiAgICAgICAgZmllbGRGb3JtYXQgPSBuZXcgUmVnRXhwKGZsZC5mb3JtYXQ/LnJlZ0V4cCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmllbGRGb3JtYXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmZvcm1hdCA9IGZpZWxkRm9ybWF0O1xuICAgIHRoaXMudmFsaWRhdGVPblNlcnZlciA9IGZsZC5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2U7XG4gICAgdGhpcy50b29sdGlwID0gZmxkLnRvb2x0aXAgfHwgJyc7XG4gICAgdGhpcy5kZWZhdWx0RWRpdGFibGUgPSB0aGlzLmVuYWJsZWQ7XG4gICAgdGhpcy5yZXF1aXJlZCA9IGZsZC5yZXF1aXJlZCA/PyBmYWxzZTtcbiAgICB0aGlzLm91dHB1dE9ubHkgPSBmbGQub3V0cHV0T25seSA/PyBmYWxzZTtcbiAgICB0aGlzLm1pbkxlbmd0aCA9IGZsZC5taW5MZW5ndGggPz8gMDtcbiAgICB0aGlzLm1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggfHwgKHRoaXMuX2NhcHR1cmVUeXBlID09PSAnVEVYVEFSRUEnID8gQklHX01BWF9MRU5HVEggOiBTVERfTUFYX0xFTkdUSCk7XG4gICAgdGhpcy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSB0aGlzLl9mb3JtQ29uZmlnPy5maWVsZFZhbGlkYXRpb25zPy5bdGhpcy5fZmllbGRUeXBlXT8ubWVzc2FnZVxuICAgICAgPz8gdGhpcy5fZm9ybUNvbmZpZz8uZmllbGRWYWxpZGF0aW9ucz8uREVGQVVMVD8ubWVzc2FnZSA/PyAnJztcblxuICAgIHRoaXMuc2V0RXJyb3IoZmxkLmVycm9yQ29kZSwgZmxkLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yVHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpO1xuICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlID8/IHRydWUpO1xuICAgIHRoaXMudmlzaWJsZUxhYmVsID0gZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlO1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgdGhpcy5vcHRpb25zID0gZmxkLmZpZWxkT3B0aW9ucztcbiAgICB0aGlzLl9zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSA/PyB0aGlzLl9kZWZhdWx0VmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZ2V0IGFsaWdubWVudCgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQWxpZ25tZW50OyB9XG4gIHNldCBhbGlnbm1lbnQoYWxpZ25tZW50KSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZEFsaWdubWVudCwgYWxpZ25tZW50KTsgfVxuICBnZXQgYmFja2VuZCgpIHsgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlT25TZXJ2ZXI7IH1cblxuICBnZXQgY2FwdHVyZVR5cGUoKSB7IHJldHVybiB0aGlzLl9jYXB0dXJlVHlwZTsgfVxuICBzZXQgY2FwdHVyZVR5cGUoY2FwdHVyZVR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmNhcHR1cmVUeXBlLCBjYXB0dXJlVHlwZSk7IH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjsgfVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXIpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlcik7IH1cblxuICBnZXQgY29kZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQ29kZTsgfVxuICBnZXQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlOyB9XG4gIHNldCBkZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5kZWZhdWx0VmFsdWUsIGRlZmF1bHRWYWx1ZSk7IH1cbiAgZ2V0IGRlZmF1bHRFZGl0YWJsZSgpIHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRFZGl0YWJsZTsgfVxuICBzZXQgZGVmYXVsdEVkaXRhYmxlKGVkaXRhYmxlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5kZWZhdWx0RWRpdGFibGUsIGVkaXRhYmxlKTsgfVxuICBnZXQgZGV0YWlsUmVxdWVzdCgpIHsgcmV0dXJuIHRoaXMuX2RldGFpbFJlcXVlc3Q7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKSB7IHJldHVybiB0aGlzLl9lZGl0aW9uRmluaXNoOyB9XG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG5cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBpZiAoZmllbGRDdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheVxuICAgICAgJiYgQXJyYXkuaXNBcnJheShmaWVsZEN1cnJlbnRWYWx1ZSkgJiYgZmllbGRDdXJyZW50VmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5waG9uZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggIT09IDIgfHwgIWZpZWxkQ3VycmVudFZhbHVlWzBdIHx8ICFmaWVsZEN1cnJlbnRWYWx1ZVsxXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIGNvbnN0IGFycmF5RmllbGRUeXBlcyA9IHRoaXMuX2Zvcm1Db25maWcuYXJyYXlGaWVsZFR5cGVzID8/IG51bGw7XG4gICAgaWYgKGFycmF5RmllbGRUeXBlcyAmJiBPYmplY3Qua2V5cyhhcnJheUZpZWxkVHlwZXMpLmluY2x1ZGVzKHRoaXMuX2ZpZWxkVHlwZSkpIHtcbiAgICAgIGxldCBhcnJheVNpemUgPSBhcnJheUZpZWxkVHlwZXNbdGhpcy5fZmllbGRUeXBlXTtcbiAgICAgIGFycmF5U2l6ZSA9ICFOdW1iZXIuaXNOYU4oK2FycmF5U2l6ZSkgPyArYXJyYXlTaXplIDogMDtcbiAgICAgIGlmIChhcnJheVNpemUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPCBhcnJheVNpemUpO1xuICAgIH07XG4gICAgcmV0dXJuIGZpZWxkQ3VycmVudFZhbHVlID09PSAnJztcbiAgfVxuXG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5fZXJyb3JUeXBlLCBjb2RlOiB0aGlzLl9lcnJvckNvZGUsIG1lc3NhZ2U6IHRoaXMuX2Vycm9yTWVzc2FnZSB9OyB9XG4gIHNldCBlcnJvcihlcnJvck9iaikgeyB0aGlzLnNldEVycm9yKGVycm9yT2JqLmNvZGUsIGVycm9yT2JqLm1lc3NhZ2UsIGVycm9yT2JqLnR5cGUgPz8gREVGQVVMVF9FUlJPUl9UWVBFKSB9XG4gIGdldCBlcnJvckNvZGUoKSB7IHJldHVybiB0aGlzLl9lcnJvckNvZGU7IH1cbiAgc2V0IGVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXQgZXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gdGhpcy5fZXJyb3JNZXNzYWdlOyB9XG4gIHNldCBlcnJvck1lc3NhZ2UobXNnKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5fZXJyb3JDb2RlLCBtc2cpOyB9XG4gIGdldCBlcnJvclR5cGUoKSB7IHJldHVybiB0aGlzLl9lcnJvclR5cGU7IH1cbiAgZ2V0IGV4dGVybmFsVmFsdWUoKSB7IHJldHVybiB0aGlzLl9leHRlcm5hbFZhbHVlOyB9XG4gIGdldCBmb3JtYXQoKSB7IHJldHVybiB0aGlzLl9maWVsZEZvcm1hdDsgfVxuICBzZXQgZm9ybWF0KGZvcm1hdCkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRGb3JtYXQsIGZvcm1hdCk7IH1cbiAgZ2V0IGhhc0NoYW5nZWQoKSB7IHJldHVybiB0aGlzLl9oYXNDaGFuZ2VkOyB9XG4gIHNldCBoYXNDaGFuZ2VkKGhhc0NoYW5nZWQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG5cbiAgZ2V0IGluZm8oKSB7IHJldHVybiB0aGlzLl9maWVsZEluZm87IH1cbiAgc2V0IGluZm8obmV3SW5mbzogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZEluZm8sIG5ld0luZm8pOyB9XG4gIHNldCBpbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihhdHRycy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UsIG1lc3NhZ2UpOyB9XG4gIGdldCBtYXhMZW5ndGgoKSB7IHJldHVybiAodGhpcy5fbWF4TGVuZ3RoID4gMCkgPyB0aGlzLl9tYXhMZW5ndGgudG9TdHJpbmcoKSA6ICcnOyB9XG4gIHNldCBtYXhMZW5ndGgocmVxdWlyZWRNYXhMZW5ndGg6IGFueSkgeyB0aGlzLnNldEF0dHIoYXR0cnMubWF4TGVuZ3RoLCByZXF1aXJlZE1heExlbmd0aCA/ICtyZXF1aXJlZE1heExlbmd0aCA6IG51bGwpOyB9XG4gIGdldCBtYXhWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX21heFZhbHVlOyB9XG5cbiAgc2V0IG1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHtcbiAgICBsZXQgbWF4VmFsdWUgPSBpbnB1dE1heFZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtYXhWYWx1ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gIH1cblxuICBnZXQgbWluTGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5fbWluTGVuZ3RoOyB9XG4gIHNldCBtaW5MZW5ndGgocmVxdWlyZWRNaW5MZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5taW5MZW5ndGgsIHJlcXVpcmVkTWluTGVuZ3RoID8gK3JlcXVpcmVkTWluTGVuZ3RoIDogbnVsbCk7XG4gIH1cbiAgZ2V0IG1pblZhbHVlKCkgeyByZXR1cm4gdGhpcy5fbWluVmFsdWU7IH1cblxuICBzZXQgbWluVmFsdWUoaW5wdXRNaW5WYWx1ZSkge1xuICAgIGxldCBtaW5WYWx1ZSA9IGlucHV0TWluVmFsdWU7XG4gICAgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmRhdGUpIHtcbiAgICAgIG1pblZhbHVlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMubWluVmFsdWUsIG1pblZhbHVlKTtcbiAgfVxuXG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fZmllbGRDb2RlOyB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogRmllbGRPcHRpb25bXSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE9wdGlvbnM/Lm1hcChvcHRpb24gPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uQ29weTogRmllbGRPcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgcmV0dXJuIG9wdGlvbkNvcHk7XG4gICAgfSkgPz8gW107XG4gIH1cblxuICBzZXQgb3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCghdGhpcy5fZm9ybUNvbmZpZy5jYXB0dXJlVHlwZXNXaXRoT3B0aW9ucy5pbmNsdWRlcyh0aGlzLl9jYXB0dXJlVHlwZSkpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkT3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiBBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5fdmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5fZmllbGRPcHRpb25zPy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuX3NldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRSZXF1aXJlZCAmJiB0aGlzLl9maWVsZE9wdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJiB0aGlzLl92YWx1ZSAhPT0gdGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCk7XG4gICAgICB0aGlzLm5vdGlmeUVkaXRpb25GaW5pc2goKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9uVGV4dCgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpPy5maWVsZE9wdGlvblZhbHVlID8/IG51bGw7IH1cbiAgZ2V0IG91dHB1dE9ubHkoKSB7IHJldHVybiB0aGlzLl9vdXRwdXRPbmx5OyB9XG4gIHNldCBvdXRwdXRPbmx5KG91dHB1dE9ubHkpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLm91dHB1dE9ubHksIG91dHB1dE9ubHkpOyB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2ZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZFJlcXVpcmVkLCByZXF1aXJlZCA/PyBmYWxzZSk7IH1cbiAgZ2V0IHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fZmllbGRUaXRsZTsgfVxuICBzZXQgdGl0bGUodGl0bGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVGl0bGUsIHRpdGxlPy50b1N0cmluZygpID8/ICcnKTsgfVxuICBnZXQgdG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX3Rvb2x0aXBUZXh0OyB9XG4gIHNldCB0b29sdGlwKHRvb2x0aXApIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnRvb2x0aXBUZXh0LCB0b29sdGlwKTsgfVxuICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTsgfVxuICBzZXQgdHlwZShmaWVsZFR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVHlwZSwgZmllbGRUeXBlKTsgfVxuICBnZXQgb25WYWxpZGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIGdldCB2YWxpZGF0aW5nKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMub25WYWxpZGF0aW9uLCBpc1ZhbGlkYXRpbmcpOyB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW5cbiAgICAgIHx8IHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrKSA/IHluKHRoaXMuX3ZhbHVlKSA6IHRoaXMuX3ZhbHVlO1xuICB9XG4gIGdldCB2YWxpZGF0ZU9uU2VydmVyKCkgeyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuICBzZXQgdmFsaWRhdGVPblNlcnZlcih2YWxpZGF0ZU9uU2VydmVyKSB7IHRoaXMuc2V0QXR0cihhdHRycy52YWxpZGF0ZU9uU2VydmVyLCB2YWxpZGF0ZU9uU2VydmVyKTsgfVxuICBnZXQgc2VydmVyQWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuICBzZXQgc2VydmVyQWN0aW9uKHZhbGlkYXRlT25TZXJ2ZXI6IGJvb2xlYW4pIHsgdGhpcy52YWxpZGF0ZU9uU2VydmVyID0gdmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkgeyB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7IH1cbiAgZ2V0IHZpc2libGVMYWJlbCgpIHsgcmV0dXJuIHRoaXMuX3Zpc2libGVMYWJlbDsgfVxuICBzZXQgdmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMudmlzaWJsZUxhYmVsLCB2aXNpYmxlTGFiZWwpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB2YWx1ZVxuICAgKi9cbiAgZ2V0IGZpZWxkVmFsdWUoKSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBoYXNDaGFuZ2VkXG4gICAqL1xuICBjaGFuZ2VkKGhhc0NoYW5nZWQgPSB0cnVlKSB7IHRoaXMuaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQ7IH1cblxuICBjbGVhbigpIHsgdGhpcy5fc2V0VmFsdWUodGhpcy5fZGVmYXVsdFZhbHVlIHx8ICcnKTsgdGhpcy5yZXNldEVycm9yKCk7IH1cbiAgZm9jdXMoKSB7IHRoaXMuc2V0QXR0cihhdHRycy5mb2N1cywgdHJ1ZSk7IH1cbiAgZ2V0RXJyb3JDb2RlKCkgeyByZXR1cm4gdGhpcy5lcnJvci5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmVycm9yLm1lc3NhZ2U7IH1cbiAgc2V0RXJyb3JNZXNzYWdlKG1zZykgeyB0aGlzLnNldEVycm9yKHRoaXMuX2Vycm9yQ29kZSwgbXNnKTsgfVxuICBnZXRSZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMucmVxdWlyZWQ7IH1cbiAgaGFzRXJyb3IoKSB7IHJldHVybiB0aGlzLl9lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIGhpZGVMYWJlbCgpIHsgdGhpcy52aXNpYmxlTGFiZWwgPSBmYWxzZTsgfVxuICByZXNldEVycm9yKCkgeyAodGhpcy5fZXJyb3JDb2RlICE9PSBOT19FUlJPUikgJiYgdGhpcy5zZXRFcnJvcihOT19FUlJPUiwgbnVsbCk7IH1cbiAgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlKSB7IChlZGl0YWJsZSkgPyB0aGlzLmVuYWJsZSgpIDogdGhpcy5kaXNhYmxlKCk7IH1cbiAgc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSA9IHRydWUpIHsgdGhpcy5fc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSk7IH1cbiAgc2hvd0xhYmVsKCkgeyB0aGlzLnZpc2libGVMYWJlbCA9IHRydWU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGNvZGVcbiAgICovXG4gIGdldCBmaWVsZENvZGUoKSB7IHJldHVybiB0aGlzLl9maWVsZENvZGU7IH1cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGl0bGVcbiAgICovXG4gIHNldExhYmVsKGxhYmVsKSB7IHRoaXMudGl0bGUgPSBsYWJlbDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgcmVxdWlyZWRcbiAgICovXG4gIHNldFJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgY2hhbmdlZFxuICAgKi9cbiAgc2V0Q2hhbmdlZChoYXNDaGFuZ2VkOiBib29sZWFuKSB7IHRoaXMuY2hhbmdlZChoYXNDaGFuZ2VkKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdmFsdWVcbiAgICovXG4gIGdldFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbXB0eVxuICAgKi9cbiAgaXNFbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZW1wdHkgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXJyb3JcbiAgICovXG4gIGdldEVycm9yKCkgeyByZXR1cm4gdGhpcy5lcnJvcjsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugb3B0aW9uVGV4dFxuICAgKi9cbiAgZ2V0T3B0aW9uVGV4dCgpIHsgcmV0dXJuIHRoaXMub3B0aW9uVGV4dDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugb3B0aW9uc1xuICAgKi9cbiAgZ2V0RmllbGRPcHRpb25zKCkgeyByZXR1cm4gdGhpcy5vcHRpb25zOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBvcHRpb25zXG4gICAqL1xuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykgeyByZXR1cm4gdGhpcy5vcHRpb25zID0gbmV3T3B0aW9uczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgaW50cmluc2ljRXJyb3JNZXNzYWdlXG4gICAqL1xuICBzZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuaW50cmluc2ljRXJyb3JNZXNzYWdlID0gbWVzc2FnZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgbWF4VmFsdWVcbiAgICovXG4gIHNldE1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHsgdGhpcy5tYXhWYWx1ZSA9IGlucHV0TWF4VmFsdWU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIG1pblZhbHVlXG4gICAqL1xuICBzZXRNaW5WYWx1ZShpbnB1dE1pblZhbHVlKSB7IHRoaXMubWluVmFsdWUgPSBpbnB1dE1pblZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzaG93TGFiZWxcbiAgICovXG4gIHNldFZpc2libGVMYWJlbCh2aXNpYmxlTGFiZWw6IGJvb2xlYW4pIHsgdGhpcy52aXNpYmxlTGFiZWwgPSB2aXNpYmxlTGFiZWw7IH1cblxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCkge1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIHRoaXMuX2VkaXRpb25QYXJ0aWFsLm5leHQoeyBjb2RlOiB0aGlzLl9maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb246IHRydWUgfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRmluaXNoKCkge1xuICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIGNvbnN0IHZhbGlkYXRpb25Db25maWcgPSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVmFsaWRhdGlvbnM/Llt0aGlzLl9maWVsZFR5cGVdID8/IHt9O1xuICAgIGNvbnN0IHsgdHlwZSwgdmFsaWRhdGlvbiB9ID0gdmFsaWRhdGlvbkNvbmZpZztcbiAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRpb25Db25maWc/Lm1lc3NhZ2U7XG4gICAgbGV0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGlmIChmaWVsZFZhbHVlICYmICh2YWxpZGF0aW9uIHx8IHRoaXMuX2ZpZWxkRm9ybWF0KSkge1xuICAgICAgaWYgKHR5cGUgPT09ICdyZWdleHAnKSB7XG4gICAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSAodmFsaWRhdGlvbj8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKVxuICAgICAgICAgICYmICh0aGlzLl9maWVsZEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsaWRhdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCB7IHZhbGlkLCBtZXNzYWdlOiBjdXN0b21NZXNzYWdlIH0gPSB2YWxpZGF0aW9uKGZpZWxkVmFsdWUsIHRoaXMpO1xuICAgICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdmFsaWQ7XG4gICAgICAgIG1lc3NhZ2UgPSBjdXN0b21NZXNzYWdlO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgbWVzc2FnZSA/PyB0aGlzLl9pbnRyaW5zaWNFcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW50cmluc2ljVmFsaWRhdGlvbiAmJiBmaWVsZFZhbHVlICYmIHRoaXMuX21pblZhbHVlICYmIGZpZWxkVmFsdWUgPCB0aGlzLl9taW5WYWx1ZSkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRFcnJvcignOTknLCAnQ2FtcG8gY29uIHZhbG9yIGluZmVyaW9yIGFsIG3DrW5pbW8nKTtcbiAgICB9XG4gICAgaWYgKGludHJpbnNpY1ZhbGlkYXRpb24gJiYgZmllbGRWYWx1ZSAmJiB0aGlzLl9tYXhWYWx1ZSAmJiBmaWVsZFZhbHVlID4gdGhpcy5fbWF4VmFsdWUpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgJ0NhbXBvIGNvbiB2YWxvciBzdXBlcmlvciBhbCBtw6F4aW1vJyk7XG4gICAgfVxuICAgIGlmIChpbnRyaW5zaWNWYWxpZGF0aW9uICYmIGZpZWxkVmFsdWUgJiYgdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiB0aGlzLl9taW5MZW5ndGggJiYgZmllbGRWYWx1ZT8ubGVuZ3RoIDwgdGhpcy5fbWluTGVuZ3RoKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEVycm9yKCc5OScsIGBMb25naXR1ZCBkZSAke3RoaXMuX2ZpZWxkVGl0bGV9IGRlYmUgc2VyIGRlIGFsIG1lbm9zICR7dGhpcy5fbWluTGVuZ3RofWApO1xuICAgIH1cbiAgICB0aGlzLl9lZGl0aW9uRmluaXNoLm5leHQoeyBjb2RlOiB0aGlzLl9maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRGV0YWlsUmVxdWVzdChkZXRhaWw6IGFueSkge1xuICAgIGNvbnN0IGRldGFpbEV2ZW50OiBEZXRhaWxFdmVudCA9IHsgY29kZTogdGhpcy5fZmllbGRDb2RlLCBkZXRhaWwgfTtcbiAgICB0aGlzLl9kZXRhaWxSZXF1ZXN0Lm5leHQoZGV0YWlsRXZlbnQpO1xuICB9XG5cbiAgc2V0RXJyb3IoY29kZSwgbWVzc2FnZSwgdHlwZSA9IERFRkFVTFRfRVJST1JfVFlQRSkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5lcnJvckNvZGUsIGNvZGUgPz8gTk9fRVJST1IpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5lcnJvclR5cGUsICh0aGlzLl9lcnJvckNvZGUgPT09IE5PX0VSUk9SKSA/ICcnIDogdHlwZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmVycm9yTWVzc2FnZSwgbWVzc2FnZSA/PyAnJyk7XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKGZsZCkge1xuICAgIGNvbnN0IGZpZWxkS2V5cyA9IE9iamVjdC5rZXlzKGZsZCk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpZWxkS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGF0dHJOYW1lID0gZmllbGRLZXlzW2luZGV4XTtcbiAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IGZsZFthdHRyTmFtZV07XG4gICAgICBpZiAoZGlyZWN0Q2hhbmdlcy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgdGhpc1thdHRyTmFtZV0gPSBhdHRyVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdsYWJlbCcpICYmICh0aGlzLnRpdGxlID0gYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnbGFiZWxWaXNpYmxlJykgJiYgKHRoaXMudmlzaWJsZUxhYmVsID0gYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZWRpdGFibGUnKSAmJiB0aGlzLnNldEVkaXRhYmxlKGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ3Zpc2libGUnKSAmJiB0aGlzLnNldFZpc2liaWxpdHkoYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAndmFsdWUnKSAmJiAodGhpcy5fc2V0VmFsdWUoYXR0clZhbHVlKSAmJiAodGhpcy5oYXNDaGFuZ2VkID0gZmFsc2UpKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZmllbGRWYWx1ZScpICYmICh0aGlzLl9zZXRWYWx1ZShhdHRyVmFsdWUpICYmICh0aGlzLmhhc0NoYW5nZWQgPSBmYWxzZSkpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZE9wdGlvbnMnKSAmJiAodGhpcy5vcHRpb25zID0gYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZmllbGRUaXRsZScpICYmICh0aGlzLnRpdGxlID0gYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZmllbGRUeXBlQ29kZScpICYmICh0aGlzLnR5cGUgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZFR5cGUnKSAmJiAodGhpcy50eXBlID0gYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAndG9vbHRpcFRleHQnKSAmJiAodGhpcy50b29sdGlwID0gYXR0clZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRWYWx1ZShuZXdWYWx1ZSwgd2lkZ2V0VXBkYXRlID0gdHJ1ZSkge1xuICAgIGlmICh0eXBlb2YgbmV3VmFsdWUgPT09IFVOREVGSU5FRCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCAmJiB0aGlzLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IG5ld0ZpbmFsVmFsdWU7XG4gICAgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW5cbiAgICAgIHx8IHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrKSB7XG4gICAgICBuZXdGaW5hbFZhbHVlID0geW4obmV3VmFsdWUpID8/IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXlcbiAgICAgIHx8IHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLm1hcCkge1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSAnJykge1xuICAgICAgICBuZXdGaW5hbFZhbHVlID0gW107XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpKSB7XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZS50b1N0cmluZygpLnNwbGl0KCcsJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdGaW5hbFZhbHVlKSB7XG4gICAgICB0aGlzLl9oYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIGlmICh3aWRnZXRVcGRhdGUpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbHVlLCBuZXdGaW5hbFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbmV3RmluYWxWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
470
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFFakMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLGFBQWEsR0FBRztJQUNwQixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVc7SUFDcEcsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTTtJQUNsRyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGNBQWM7SUFDcEcsU0FBUyxFQUFFLGFBQWE7Q0FDekIsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHO0lBQ1osV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFO0lBQy9ELFNBQVMsRUFBRSxFQUFF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QUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHluIGZyb20gJ3luJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcywgTk9fRVJST1IgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IERFRkFVTFRfRVJST1JfVFlQRSA9ICdlcnJvcic7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVFlQRSA9ICdJTlBVVCc7XG5jb25zdCBERUZBVUxUX0FMSUdOTUVOVCA9ICdsZWZ0JztcblxuY29uc3QgU1REX01BWF9MRU5HVEggPSA1MDtcbmNvbnN0IEJJR19NQVhfTEVOR1RIID0gNTAwO1xuXG5jb25zdCBkaXJlY3RDaGFuZ2VzID0gW1xuICAnZGVmYXVsdEVkaXRhYmxlJywgJ2RlZmF1bHRWYWx1ZScsICdhbGlnbm1lbnQnLCAncmVxdWlyZWQnLCAnZXJyb3JDb2RlJywgJ2Vycm9yTWVzc2FnZScsICdlcnJvclR5cGUnLFxuICAndG9vbHRpcCcsICdpbmZvJywgJ2Zvcm1hdCcsICdpbnRyaW5zaWNFcnJvck1lc3NhZ2UnLCAnb3V0cHV0T25seScsICdjYXB0dXJlVHlwZScsICd0aXRsZScsICd0eXBlJyxcbiAgJ21heExlbmd0aCcsICdtYXhWYWx1ZScsICdtaW5MZW5ndGgnLCAnbWluVmFsdWUnLCAndmFsaWRhdGVPblNlcnZlcicsICdzZXJ2ZXJBY3Rpb24nLCAndmlzaWJsZUxhYmVsJyxcbiAgJ29wdGlvbnMnLCAncGxhY2Vob2xkZXInLFxuXTtcblxuY29uc3QgYXR0cnMgPSB7XG4gIGNhcHR1cmVUeXBlOiB7IG5hbWU6ICdfY2FwdHVyZVR5cGUnLCBwcm9wYWdhdGU6ICdjYXB0dXJlVHlwZScgfSxcbiAgZXJyb3JDb2RlOiB7IG5hbWU6ICdfZXJyb3JDb2RlJywgcHJvcGFnYXRlOiAnZXJyb3JDb2RlJyB9LFxuICBlcnJvck1lc3NhZ2U6IHsgbmFtZTogJ19lcnJvck1lc3NhZ2UnLCBwcm9wYWdhdGU6ICdlcnJvck1lc3NhZ2UnIH0sXG4gIGVycm9yVHlwZTogeyBuYW1lOiAnX2Vycm9yVHlwZScsIHByb3BhZ2F0ZTogJ2Vycm9yVHlwZScgfSxcbiAgZGVmYXVsdFZhbHVlOiB7IG5hbWU6ICdfZGVmYXVsdFZhbHVlJywgcHJvcGFnYXRlOiAnZGVmYXVsdFZhbHVlJyB9LFxuICBkZWZhdWx0RWRpdGFibGU6IHsgbmFtZTogJ19kZWZhdWx0RWRpdGFibGUnLCBwcm9wYWdhdGU6ICdkZWZhdWx0RWRpdGFibGUnIH0sXG4gIGZpZWxkQWxpZ25tZW50OiB7IG5hbWU6ICdfZmllbGRBbGlnbm1lbnQnLCBwcm9wYWdhdGU6ICdhbGlnbm1lbnQnIH0sXG4gIGZpZWxkQ29kZTogeyBuYW1lOiAnX2ZpZWxkQ29kZScsIHByb3BhZ2F0ZTogJ2NvZGUnIH0sXG4gIGZpZWxkSW5mbzogeyBuYW1lOiAnX2ZpZWxkSW5mbycsIHByb3BhZ2F0ZTogJ2luZm8nIH0sXG4gIGZpZWxkUmVxdWlyZWQ6IHsgbmFtZTogJ19maWVsZFJlcXVpcmVkJywgcHJvcGFnYXRlOiAncmVxdWlyZWQnIH0sXG4gIGZpZWxkVGl0bGU6IHsgbmFtZTogJ19maWVsZFRpdGxlJywgcHJvcGFnYXRlOiAndGl0bGUnIH0sXG4gIGZpZWxkVHlwZTogeyBuYW1lOiAnX2ZpZWxkVHlwZScsIHByb3BhZ2F0ZTogJ3R5cGUnIH0sXG4gIGZpZWxkRm9ybWF0OiB7IG5hbWU6ICdfZmllbGRGb3JtYXQnLCBwcm9wYWdhdGU6ICdmb3JtYXQnIH0sXG4gIGZpZWxkT3B0aW9uczogeyBuYW1lOiAnX2ZpZWxkT3B0aW9ucycsIHByb3BhZ2F0ZTogJ29wdGlvbnMnIH0sXG4gIGZvY3VzOiB7IG5hbWU6ICdfZm9jdXMnLCBwcm9wYWdhdGU6ICdmb2N1cycgfSxcbiAgaGFzQ2hhbmdlZDogeyBuYW1lOiAnX2hhc0NoYW5nZWQnLCBwcm9wYWdhdGU6ICdoYXNDaGFuZ2VkJyB9LFxuICBpbnRyaW5zaWNFcnJvck1lc3NhZ2U6IHsgbmFtZTogJ19pbnRyaW5zaWNFcnJvck1lc3NhZ2UnLCBwcm9wYWdhdGU6IG51bGwgfSxcbiAgbWF4TGVuZ3RoOiB7IG5hbWU6ICdfbWF4TGVuZ3RoJywgcHJvcGFnYXRlOiAnbWF4TGVuZ3RoJyB9LFxuICBtYXhWYWx1ZTogeyBuYW1lOiAnX21heFZhbHVlJywgcHJvcGFnYXRlOiAnbWF4VmFsdWUnIH0sXG4gIG1pbkxlbmd0aDogeyBuYW1lOiAnX21pbkxlbmd0aCcsIHByb3BhZ2F0ZTogJ21pbkxlbmd0aCcgfSxcbiAgbWluVmFsdWU6IHsgbmFtZTogJ19taW5WYWx1ZScsIHByb3BhZ2F0ZTogJ21pblZhbHVlJyB9LFxuICBvblZhbGlkYXRpb246IHsgbmFtZTogJ19vblZhbGlkYXRpb24nLCBwcm9wYWdhdGU6ICdvblZhbGlkYXRpb24nIH0sXG4gIG91dHB1dE9ubHk6IHsgbmFtZTogJ19vdXRwdXRPbmx5JywgcHJvcGFnYXRlOiAnb3V0cHV0T25seScgfSxcbiAgcGxhY2Vob2xkZXI6IHsgbmFtZTogJ19wbGFjZWhvbGRlcicsIHByb3BhZ2F0ZTogJ3BsYWNlaG9sZGVyJyB9LFxuICB0b29sdGlwVGV4dDogeyBuYW1lOiAnX3Rvb2x0aXBUZXh0JywgcHJvcGFnYXRlOiAndG9vbHRpcCcgfSxcbiAgdmFsaWRhdGVPblNlcnZlcjogeyBuYW1lOiAnX3ZhbGlkYXRlT25TZXJ2ZXInLCBwcm9wYWdhdGU6ICd2YWxpZGF0ZU9uU2VydmVyJyB9LFxuICB2YWx1ZTogeyBuYW1lOiAnX3ZhbHVlJywgcHJvcGFnYXRlOiAndmFsdWUnIH0sXG4gIHZpc2libGVMYWJlbDogeyBuYW1lOiAnX3Zpc2libGVMYWJlbCcsIHByb3BhZ2F0ZTogJ3Zpc2libGVMYWJlbCcgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsRXZlbnQge1xuICBjb2RlOiBzdHJpbmc7XG4gIGRldGFpbDogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkT3B0aW9uIHtcbiAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICBmaWVsZE9wdGlvbklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8RGV0YWlsRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfZXJyb3JUeXBlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZXJyb3JDb2RlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfbWluVmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfbWF4VmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfbWF4TGVuZ3RoOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9taW5MZW5ndGg6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX29uVmFsaWRhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92YWxpZGF0ZU9uU2VydmVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX3Zpc2libGVMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jYXB0dXJlVHlwZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZTogYW55ID0gJyc7XG4gIHByaXZhdGUgX2RlZmF1bHRFZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9leHRlcm5hbFZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX2ZpZWxkQWxpZ25tZW50OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRJbmZvOiBhbnkgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZFRpdGxlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRUeXBlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRGb3JtYXQ6IFJlZ0V4cCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9oYXNDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX291dHB1dE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdG9vbHRpcFRleHQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkT3B0aW9uczogRmllbGRPcHRpb25bXSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnPy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXM/LmZpZWxkcyA/PyBbXTtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gZWxlbWVudFR5cGVzLmZpZWxkO1xuICAgIGNvbnN0IGZsZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkQ29kZSwgZmxkLmZpZWxkQ29kZSk7XG4gICAgdGhpcy50aXRsZSA9IGZsZC5maWVsZFRpdGxlID8/IHRoaXMuX2ZpZWxkQ29kZTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmxkLnBsYWNlaG9sZGVyID8/IHRoaXMudGl0bGU7XG4gICAgdGhpcy50eXBlID0gZmxkLmZpZWxkVHlwZUNvZGU7XG4gICAgdGhpcy5jYXB0dXJlVHlwZSA9IGZsZC5jYXB0dXJlVHlwZSA/PyBERUZBVUxUX0NBUFRVUkVfVFlQRTtcblxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IGZsZC5kZWZhdWx0VmFsdWUgPz8gbnVsbDtcbiAgICBpZiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhbikge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWUgPz8gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5fZmllbGRUeXBlXSAhPSBudWxsKVxuICAgICAgPyB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5fZmllbGRUeXBlXVsndGV4dC1hbGlnbiddIDogREVGQVVMVF9BTElHTk1FTlQ7XG4gICAgY29uc3QgZmllbGRBbGlnbm1lbnQgPSAoZmxkLmFsaWdubWVudCAhPSBudWxsKSA/IGZsZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuYWxpZ25tZW50ID0gZmllbGRBbGlnbm1lbnQ7XG4gICAgdGhpcy5pbmZvID0gZmxkLmluZm8gfHwgJyc7XG4gICAgbGV0IGZpZWxkRm9ybWF0O1xuICAgIHRyeSB7XG4gICAgICBpZiAoZmxkLmZvcm1hdCAmJiB0eXBlb2YgZmxkLmZvcm1hdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZmllbGRGb3JtYXQgPSBuZXcgUmVnRXhwKGZsZC5mb3JtYXQpO1xuICAgICAgfSBlbHNlIGlmIChmbGQuZm9ybWF0Py5yZWdFeHApIHtcbiAgICAgICAgZmllbGRGb3JtYXQgPSBuZXcgUmVnRXhwKGZsZC5mb3JtYXQ/LnJlZ0V4cCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmllbGRGb3JtYXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmZvcm1hdCA9IGZpZWxkRm9ybWF0O1xuICAgIHRoaXMudmFsaWRhdGVPblNlcnZlciA9IGZsZC5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2U7XG4gICAgdGhpcy50b29sdGlwID0gZmxkLnRvb2x0aXAgfHwgJyc7XG4gICAgdGhpcy5kZWZhdWx0RWRpdGFibGUgPSB0aGlzLmVuYWJsZWQ7XG4gICAgdGhpcy5yZXF1aXJlZCA9IGZsZC5yZXF1aXJlZCA/PyBmYWxzZTtcbiAgICB0aGlzLm91dHB1dE9ubHkgPSBmbGQub3V0cHV0T25seSA/PyBmYWxzZTtcbiAgICB0aGlzLm1pbkxlbmd0aCA9IGZsZC5taW5MZW5ndGggPz8gMDtcbiAgICB0aGlzLm1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggfHwgKHRoaXMuX2NhcHR1cmVUeXBlID09PSAnVEVYVEFSRUEnID8gQklHX01BWF9MRU5HVEggOiBTVERfTUFYX0xFTkdUSCk7XG4gICAgdGhpcy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSB0aGlzLl9mb3JtQ29uZmlnPy5maWVsZFZhbGlkYXRpb25zPy5bdGhpcy5fZmllbGRUeXBlXT8ubWVzc2FnZVxuICAgICAgPz8gdGhpcy5fZm9ybUNvbmZpZz8uZmllbGRWYWxpZGF0aW9ucz8uREVGQVVMVD8ubWVzc2FnZSA/PyAnJztcblxuICAgIHRoaXMuc2V0RXJyb3IoZmxkLmVycm9yQ29kZSwgZmxkLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yVHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpO1xuICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlID8/IHRydWUpO1xuICAgIHRoaXMudmlzaWJsZUxhYmVsID0gZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlO1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgdGhpcy5vcHRpb25zID0gZmxkLmZpZWxkT3B0aW9ucztcbiAgICB0aGlzLl9zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSA/PyB0aGlzLl9kZWZhdWx0VmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZ2V0IGFsaWdubWVudCgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQWxpZ25tZW50OyB9XG4gIHNldCBhbGlnbm1lbnQoYWxpZ25tZW50KSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZEFsaWdubWVudCwgYWxpZ25tZW50KTsgfVxuICBnZXQgYmFja2VuZCgpIHsgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlT25TZXJ2ZXI7IH1cblxuICBnZXQgY2FwdHVyZVR5cGUoKSB7IHJldHVybiB0aGlzLl9jYXB0dXJlVHlwZTsgfVxuICBzZXQgY2FwdHVyZVR5cGUoY2FwdHVyZVR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmNhcHR1cmVUeXBlLCBjYXB0dXJlVHlwZSk7IH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjsgfVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXIpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlcik7IH1cblxuICBnZXQgY29kZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQ29kZTsgfVxuICBnZXQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlOyB9XG4gIHNldCBkZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5kZWZhdWx0VmFsdWUsIGRlZmF1bHRWYWx1ZSk7IH1cbiAgZ2V0IGRlZmF1bHRFZGl0YWJsZSgpIHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRFZGl0YWJsZTsgfVxuICBzZXQgZGVmYXVsdEVkaXRhYmxlKGVkaXRhYmxlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5kZWZhdWx0RWRpdGFibGUsIGVkaXRhYmxlKTsgfVxuICBnZXQgZGV0YWlsUmVxdWVzdCgpIHsgcmV0dXJuIHRoaXMuX2RldGFpbFJlcXVlc3Q7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKSB7IHJldHVybiB0aGlzLl9lZGl0aW9uRmluaXNoOyB9XG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG5cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBpZiAoZmllbGRDdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheVxuICAgICAgJiYgQXJyYXkuaXNBcnJheShmaWVsZEN1cnJlbnRWYWx1ZSkgJiYgZmllbGRDdXJyZW50VmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5waG9uZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggIT09IDIgfHwgIWZpZWxkQ3VycmVudFZhbHVlWzBdIHx8ICFmaWVsZEN1cnJlbnRWYWx1ZVsxXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIGNvbnN0IGFycmF5RmllbGRUeXBlcyA9IHRoaXMuX2Zvcm1Db25maWcuYXJyYXlGaWVsZFR5cGVzID8/IG51bGw7XG4gICAgaWYgKGFycmF5RmllbGRUeXBlcyAmJiBPYmplY3Qua2V5cyhhcnJheUZpZWxkVHlwZXMpLmluY2x1ZGVzKHRoaXMuX2ZpZWxkVHlwZSkpIHtcbiAgICAgIGxldCBhcnJheVNpemUgPSBhcnJheUZpZWxkVHlwZXNbdGhpcy5fZmllbGRUeXBlXTtcbiAgICAgIGFycmF5U2l6ZSA9ICFOdW1iZXIuaXNOYU4oK2FycmF5U2l6ZSkgPyArYXJyYXlTaXplIDogMDtcbiAgICAgIGlmIChhcnJheVNpemUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPCBhcnJheVNpemUpO1xuICAgIH07XG4gICAgcmV0dXJuIGZpZWxkQ3VycmVudFZhbHVlID09PSAnJztcbiAgfVxuXG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5fZXJyb3JUeXBlLCBjb2RlOiB0aGlzLl9lcnJvckNvZGUsIG1lc3NhZ2U6IHRoaXMuX2Vycm9yTWVzc2FnZSB9OyB9XG4gIHNldCBlcnJvcihlcnJvck9iaikgeyB0aGlzLnNldEVycm9yKGVycm9yT2JqLmNvZGUsIGVycm9yT2JqLm1lc3NhZ2UsIGVycm9yT2JqLnR5cGUgPz8gREVGQVVMVF9FUlJPUl9UWVBFKSB9XG4gIGdldCBlcnJvckNvZGUoKSB7IHJldHVybiB0aGlzLl9lcnJvckNvZGU7IH1cbiAgc2V0IGVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXQgZXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gdGhpcy5fZXJyb3JNZXNzYWdlOyB9XG4gIHNldCBlcnJvck1lc3NhZ2UobXNnKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5fZXJyb3JDb2RlLCBtc2cpOyB9XG4gIGdldCBlcnJvclR5cGUoKSB7IHJldHVybiB0aGlzLl9lcnJvclR5cGU7IH1cbiAgZ2V0IGV4dGVybmFsVmFsdWUoKSB7IHJldHVybiB0aGlzLl9leHRlcm5hbFZhbHVlOyB9XG4gIGdldCBmb3JtYXQoKSB7IHJldHVybiB0aGlzLl9maWVsZEZvcm1hdDsgfVxuICBzZXQgZm9ybWF0KGZvcm1hdCkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRGb3JtYXQsIGZvcm1hdCk7IH1cbiAgZ2V0IGhhc0NoYW5nZWQoKSB7IHJldHVybiB0aGlzLl9oYXNDaGFuZ2VkOyB9XG4gIHNldCBoYXNDaGFuZ2VkKGhhc0NoYW5nZWQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG5cbiAgZ2V0IGluZm8oKSB7IHJldHVybiB0aGlzLl9maWVsZEluZm87IH1cbiAgc2V0IGluZm8obmV3SW5mbzogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZEluZm8sIG5ld0luZm8pOyB9XG4gIHNldCBpbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihhdHRycy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UsIG1lc3NhZ2UpOyB9XG4gIGdldCBtYXhMZW5ndGgoKSB7IHJldHVybiAodGhpcy5fbWF4TGVuZ3RoID4gMCkgPyB0aGlzLl9tYXhMZW5ndGgudG9TdHJpbmcoKSA6ICcnOyB9XG4gIHNldCBtYXhMZW5ndGgocmVxdWlyZWRNYXhMZW5ndGg6IGFueSkgeyB0aGlzLnNldEF0dHIoYXR0cnMubWF4TGVuZ3RoLCByZXF1aXJlZE1heExlbmd0aCA/ICtyZXF1aXJlZE1heExlbmd0aCA6IG51bGwpOyB9XG4gIGdldCBtYXhWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX21heFZhbHVlOyB9XG5cbiAgc2V0IG1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHtcbiAgICBsZXQgbWF4VmFsdWUgPSBpbnB1dE1heFZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtYXhWYWx1ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gIH1cblxuICBnZXQgbWluTGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5fbWluTGVuZ3RoOyB9XG4gIHNldCBtaW5MZW5ndGgocmVxdWlyZWRNaW5MZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5taW5MZW5ndGgsIHJlcXVpcmVkTWluTGVuZ3RoID8gK3JlcXVpcmVkTWluTGVuZ3RoIDogbnVsbCk7XG4gIH1cbiAgZ2V0IG1pblZhbHVlKCkgeyByZXR1cm4gdGhpcy5fbWluVmFsdWU7IH1cblxuICBzZXQgbWluVmFsdWUoaW5wdXRNaW5WYWx1ZSkge1xuICAgIGxldCBtaW5WYWx1ZSA9IGlucHV0TWluVmFsdWU7XG4gICAgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmRhdGUpIHtcbiAgICAgIG1pblZhbHVlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMubWluVmFsdWUsIG1pblZhbHVlKTtcbiAgfVxuXG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fZmllbGRDb2RlOyB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogRmllbGRPcHRpb25bXSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE9wdGlvbnM/Lm1hcChvcHRpb24gPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uQ29weTogRmllbGRPcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgcmV0dXJuIG9wdGlvbkNvcHk7XG4gICAgfSkgPz8gW107XG4gIH1cblxuICBzZXQgb3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCghdGhpcy5fZm9ybUNvbmZpZy5jYXB0dXJlVHlwZXNXaXRoT3B0aW9ucy5pbmNsdWRlcyh0aGlzLl9jYXB0dXJlVHlwZSkpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkT3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiBBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5fdmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5fZmllbGRPcHRpb25zPy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuX3NldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRSZXF1aXJlZCAmJiB0aGlzLl9maWVsZE9wdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJiB0aGlzLl92YWx1ZSAhPT0gdGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCk7XG4gICAgICB0aGlzLm5vdGlmeUVkaXRpb25GaW5pc2goKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9uVGV4dCgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpPy5maWVsZE9wdGlvblZhbHVlID8/IG51bGw7IH1cbiAgZ2V0IG91dHB1dE9ubHkoKSB7IHJldHVybiB0aGlzLl9vdXRwdXRPbmx5OyB9XG4gIHNldCBvdXRwdXRPbmx5KG91dHB1dE9ubHkpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLm91dHB1dE9ubHksIG91dHB1dE9ubHkpOyB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2ZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZFJlcXVpcmVkLCByZXF1aXJlZCA/PyBmYWxzZSk7IH1cbiAgZ2V0IHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fZmllbGRUaXRsZTsgfVxuICBzZXQgdGl0bGUodGl0bGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVGl0bGUsIHRpdGxlPy50b1N0cmluZygpID8/ICcnKTsgfVxuICBnZXQgdG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX3Rvb2x0aXBUZXh0OyB9XG4gIHNldCB0b29sdGlwKHRvb2x0aXApIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnRvb2x0aXBUZXh0LCB0b29sdGlwKTsgfVxuICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTsgfVxuICBzZXQgdHlwZShmaWVsZFR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVHlwZSwgZmllbGRUeXBlKTsgfVxuICBnZXQgb25WYWxpZGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIGdldCB2YWxpZGF0aW5nKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMub25WYWxpZGF0aW9uLCBpc1ZhbGlkYXRpbmcpOyB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW5cbiAgICAgIHx8IHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrKSA/IHluKHRoaXMuX3ZhbHVlKSA6IHRoaXMuX3ZhbHVlO1xuICB9XG4gIGdldCB2YWxpZGF0ZU9uU2VydmVyKCkgeyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuICBzZXQgdmFsaWRhdGVPblNlcnZlcih2YWxpZGF0ZU9uU2VydmVyKSB7IHRoaXMuc2V0QXR0cihhdHRycy52YWxpZGF0ZU9uU2VydmVyLCB2YWxpZGF0ZU9uU2VydmVyKTsgfVxuICBnZXQgc2VydmVyQWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuICBzZXQgc2VydmVyQWN0aW9uKHZhbGlkYXRlT25TZXJ2ZXI6IGJvb2xlYW4pIHsgdGhpcy52YWxpZGF0ZU9uU2VydmVyID0gdmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkgeyB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7IH1cbiAgZ2V0IHZpc2libGVMYWJlbCgpIHsgcmV0dXJuIHRoaXMuX3Zpc2libGVMYWJlbDsgfVxuICBzZXQgdmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMudmlzaWJsZUxhYmVsLCB2aXNpYmxlTGFiZWwpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB2YWx1ZVxuICAgKi9cbiAgZ2V0IGZpZWxkVmFsdWUoKSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBoYXNDaGFuZ2VkXG4gICAqL1xuICBjaGFuZ2VkKGhhc0NoYW5nZWQgPSB0cnVlKSB7IHRoaXMuaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQ7IH1cblxuICBjbGVhbigpIHsgdGhpcy5fc2V0VmFsdWUodGhpcy5fZGVmYXVsdFZhbHVlIHx8ICcnKTsgdGhpcy5yZXNldEVycm9yKCk7IH1cbiAgZm9jdXMoKSB7IHRoaXMuc2V0QXR0cihhdHRycy5mb2N1cywgdHJ1ZSk7IH1cbiAgZ2V0RXJyb3JDb2RlKCkgeyByZXR1cm4gdGhpcy5lcnJvci5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmVycm9yLm1lc3NhZ2U7IH1cbiAgc2V0RXJyb3JNZXNzYWdlKG1zZykgeyB0aGlzLnNldEVycm9yKHRoaXMuX2Vycm9yQ29kZSwgbXNnKTsgfVxuICBnZXRSZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMucmVxdWlyZWQ7IH1cbiAgaGFzRXJyb3IoKSB7IHJldHVybiB0aGlzLl9lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIGhpZGVMYWJlbCgpIHsgdGhpcy52aXNpYmxlTGFiZWwgPSBmYWxzZTsgfVxuICByZXNldEVycm9yKCkgeyAodGhpcy5fZXJyb3JDb2RlICE9PSBOT19FUlJPUikgJiYgdGhpcy5zZXRFcnJvcihOT19FUlJPUiwgbnVsbCk7IH1cbiAgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlKSB7IChlZGl0YWJsZSkgPyB0aGlzLmVuYWJsZSgpIDogdGhpcy5kaXNhYmxlKCk7IH1cbiAgc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSA9IHRydWUpIHsgdGhpcy5fc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSk7IH1cbiAgc2hvd0xhYmVsKCkgeyB0aGlzLnZpc2libGVMYWJlbCA9IHRydWU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGNvZGVcbiAgICovXG4gIGdldCBmaWVsZENvZGUoKSB7IHJldHVybiB0aGlzLl9maWVsZENvZGU7IH1cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGl0bGVcbiAgICovXG4gIHNldExhYmVsKGxhYmVsKSB7IHRoaXMudGl0bGUgPSBsYWJlbDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgcmVxdWlyZWRcbiAgICovXG4gIHNldFJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgY2hhbmdlZFxuICAgKi9cbiAgc2V0Q2hhbmdlZChoYXNDaGFuZ2VkOiBib29sZWFuKSB7IHRoaXMuY2hhbmdlZChoYXNDaGFuZ2VkKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdmFsdWVcbiAgICovXG4gIGdldFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbXB0eVxuICAgKi9cbiAgaXNFbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZW1wdHkgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXJyb3JcbiAgICovXG4gIGdldEVycm9yKCkgeyByZXR1cm4gdGhpcy5lcnJvcjsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugb3B0aW9uVGV4dFxuICAgKi9cbiAgZ2V0T3B0aW9uVGV4dCgpIHsgcmV0dXJuIHRoaXMub3B0aW9uVGV4dDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugb3B0aW9uc1xuICAgKi9cbiAgZ2V0RmllbGRPcHRpb25zKCkgeyByZXR1cm4gdGhpcy5vcHRpb25zOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBvcHRpb25zXG4gICAqL1xuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykgeyByZXR1cm4gdGhpcy5vcHRpb25zID0gbmV3T3B0aW9uczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgaW50cmluc2ljRXJyb3JNZXNzYWdlXG4gICAqL1xuICBzZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuaW50cmluc2ljRXJyb3JNZXNzYWdlID0gbWVzc2FnZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgbWF4VmFsdWVcbiAgICovXG4gIHNldE1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHsgdGhpcy5tYXhWYWx1ZSA9IGlucHV0TWF4VmFsdWU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIG1pblZhbHVlXG4gICAqL1xuICBzZXRNaW5WYWx1ZShpbnB1dE1pblZhbHVlKSB7IHRoaXMubWluVmFsdWUgPSBpbnB1dE1pblZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzaG93TGFiZWxcbiAgICovXG4gIHNldFZpc2libGVMYWJlbCh2aXNpYmxlTGFiZWw6IGJvb2xlYW4pIHsgdGhpcy52aXNpYmxlTGFiZWwgPSB2aXNpYmxlTGFiZWw7IH1cblxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCkge1xuICAgIGNvbnNvbGUubG9nKGBub3RpZnlFZGl0aW9uUGFydGlhbDogcmVzZXRFcnJvciAke3RoaXMuX2ZpZWxkQ29kZX1gKTtcbiAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgICB0aGlzLl9lZGl0aW9uUGFydGlhbC5uZXh0KHsgY29kZTogdGhpcy5fZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkZpbmlzaCgpIHtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBjb25zb2xlLmxvZyhgbm90aWZ5RWRpdGlvbkZpbmlzaDogcmVzZXRFcnJvciAke3RoaXMuX2ZpZWxkQ29kZX1gKTtcbiAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uQ29uZmlnID0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFZhbGlkYXRpb25zPy5bdGhpcy5fZmllbGRUeXBlXSA/PyB7fTtcbiAgICBjb25zdCB7IHR5cGUsIHZhbGlkYXRpb24gfSA9IHZhbGlkYXRpb25Db25maWc7XG4gICAgbGV0IG1lc3NhZ2UgPSB2YWxpZGF0aW9uQ29uZmlnPy5tZXNzYWdlO1xuICAgIGxldCBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICBpZiAoZmllbGRWYWx1ZSAmJiAodmFsaWRhdGlvbiB8fCB0aGlzLl9maWVsZEZvcm1hdCkpIHtcbiAgICAgIGlmICh0eXBlID09PSAncmVnZXhwJykge1xuICAgICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gKHZhbGlkYXRpb24/LnRlc3QoZmllbGRWYWx1ZSkgPz8gdHJ1ZSlcbiAgICAgICAgICAmJiAodGhpcy5fZmllbGRGb3JtYXQ/LnRlc3QoZmllbGRWYWx1ZSkgPz8gdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbGlkYXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgeyB2YWxpZCwgbWVzc2FnZTogY3VzdG9tTWVzc2FnZSB9ID0gdmFsaWRhdGlvbihmaWVsZFZhbHVlLCB0aGlzKTtcbiAgICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IHZhbGlkO1xuICAgICAgICBtZXNzYWdlID0gY3VzdG9tTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIGlmICghaW50cmluc2ljVmFsaWRhdGlvbikge1xuICAgICAgICB0aGlzLnNldEVycm9yKCc5OScsIG1lc3NhZ2UgPz8gdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGludHJpbnNpY1ZhbGlkYXRpb24gJiYgZmllbGRWYWx1ZSAmJiB0aGlzLl9taW5WYWx1ZSAmJiBmaWVsZFZhbHVlIDwgdGhpcy5fbWluVmFsdWUpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgJ0NhbXBvIGNvbiB2YWxvciBpbmZlcmlvciBhbCBtw61uaW1vJyk7XG4gICAgfVxuICAgIGlmIChpbnRyaW5zaWNWYWxpZGF0aW9uICYmIGZpZWxkVmFsdWUgJiYgdGhpcy5fbWF4VmFsdWUgJiYgZmllbGRWYWx1ZSA+IHRoaXMuX21heFZhbHVlKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEVycm9yKCc5OScsICdDYW1wbyBjb24gdmFsb3Igc3VwZXJpb3IgYWwgbcOheGltbycpO1xuICAgIH1cbiAgICBpZiAoaW50cmluc2ljVmFsaWRhdGlvbiAmJiBmaWVsZFZhbHVlICYmIHR5cGVvZiBmaWVsZFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgdGhpcy5fbWluTGVuZ3RoICYmIGZpZWxkVmFsdWU/Lmxlbmd0aCA8IHRoaXMuX21pbkxlbmd0aCkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRFcnJvcignOTknLCBgTG9uZ2l0dWQgZGUgJHt0aGlzLl9maWVsZFRpdGxlfSBkZWJlIHNlciBkZSBhbCBtZW5vcyAke3RoaXMuX21pbkxlbmd0aH1gKTtcbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5fZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkRldGFpbFJlcXVlc3QoZGV0YWlsOiBhbnkpIHtcbiAgICBjb25zdCBkZXRhaWxFdmVudDogRGV0YWlsRXZlbnQgPSB7IGNvZGU6IHRoaXMuX2ZpZWxkQ29kZSwgZGV0YWlsIH07XG4gICAgdGhpcy5fZGV0YWlsUmVxdWVzdC5uZXh0KGRldGFpbEV2ZW50KTtcbiAgfVxuXG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSBERUZBVUxUX0VSUk9SX1RZUEUpIHtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZXJyb3JDb2RlLCBjb2RlID8/IE5PX0VSUk9SKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZXJyb3JUeXBlLCAodGhpcy5fZXJyb3JDb2RlID09PSBOT19FUlJPUikgPyAnJyA6IHR5cGUpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5lcnJvck1lc3NhZ2UsIG1lc3NhZ2UgPz8gJycpO1xuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihmbGQpIHtcbiAgICBjb25zdCBmaWVsZEtleXMgPSBPYmplY3Qua2V5cyhmbGQpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBhdHRyTmFtZSA9IGZpZWxkS2V5c1tpbmRleF07XG4gICAgICBjb25zdCBhdHRyVmFsdWUgPSBmbGRbYXR0ck5hbWVdO1xuICAgICAgaWYgKGRpcmVjdENoYW5nZXMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgIHRoaXNbYXR0ck5hbWVdID0gYXR0clZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnbGFiZWwnKSAmJiAodGhpcy50aXRsZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2xhYmVsVmlzaWJsZScpICYmICh0aGlzLnZpc2libGVMYWJlbCA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2VkaXRhYmxlJykgJiYgdGhpcy5zZXRFZGl0YWJsZShhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICd2aXNpYmxlJykgJiYgdGhpcy5zZXRWaXNpYmlsaXR5KGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ3ZhbHVlJykgJiYgKHRoaXMuX3NldFZhbHVlKGF0dHJWYWx1ZSkgJiYgKHRoaXMuaGFzQ2hhbmdlZCA9IGZhbHNlKSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVmFsdWUnKSAmJiAodGhpcy5fc2V0VmFsdWUoYXR0clZhbHVlKSAmJiAodGhpcy5oYXNDaGFuZ2VkID0gZmFsc2UpKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZmllbGRPcHRpb25zJykgJiYgKHRoaXMub3B0aW9ucyA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVGl0bGUnKSAmJiAodGhpcy50aXRsZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVHlwZUNvZGUnKSAmJiAodGhpcy50eXBlID0gYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZmllbGRUeXBlJykgJiYgKHRoaXMudHlwZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ3Rvb2x0aXBUZXh0JykgJiYgKHRoaXMudG9vbHRpcCA9IGF0dHJWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSA9IHRydWUpIHtcbiAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSBVTkRFRklORUQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09IG51bGwgJiYgdGhpcy5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBuZXdGaW5hbFZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5ib29sZWFuXG4gICAgICB8fCB0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jaGVjaykge1xuICAgICAgbmV3RmluYWxWYWx1ZSA9IHluKG5ld1ZhbHVlKSA/PyBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5XG4gICAgICB8fCB0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5tYXApIHtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbmV3RmluYWxWYWx1ZSkge1xuICAgICAgdGhpcy5faGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICBpZiAod2lkZ2V0VXBkYXRlKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cihhdHRycy52YWx1ZSwgbmV3RmluYWxWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG5ld0ZpbmFsVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
@@ -113,4 +113,4 @@ export class TableRecordData {
113
113
  return true;
114
114
  }
115
115
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3Jvdy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxNQUFNLE9BQU8sZUFBZTtJQUMxQixRQUFRLEdBQWtCLElBQUksQ0FBQztJQUMvQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFFckIsWUFBWSxjQUFjLEVBQUUsZ0JBQXFDLEVBQUUsa0JBQWtCLEdBQUcsSUFBSTtRQUMxRixNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pHLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdEgsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFD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RSxDQUFDO29CQUM5RixPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUNELElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6RixPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY29yZFRhYmxlQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW4nO1xuaW1wb3J0IHsgb3BlcmF0b3JzIH0gZnJvbSAnLi4vZm9ybS5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVSZWNvcmREYXRhIHtcbiAgcmVjb3JkSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICByZWNvcmREYXRhOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihyZWNvcmRSZWNlaXZlZCwgcmVjb3JkRGVmaW5pdGlvbjogUmVjb3JkVGFibGVDb2x1bW5bXSwgc2VsZWN0aW9uRmllbGROYW1lID0gbnVsbCkge1xuICAgIGNvbnN0IHsgdGFibGVSZWNvcmRJZCwgcmVjb3JkRGF0YSB9ID0gcmVjb3JkUmVjZWl2ZWQ7XG4gICAgdGhpcy5yZWNvcmRJZCA9IHRhYmxlUmVjb3JkSWQ7XG4gICAgaWYgKCFyZWNvcmREZWZpbml0aW9uIHx8IHJlY29yZERlZmluaXRpb24ubGVuZ3RoID09PSAwIHx8ICFyZWNvcmREYXRhIHx8IHJlY29yZERhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkTmFtZXMgPSByZWNvcmREZWZpbml0aW9uLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkQ29kZSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkRGF0YSkpIHtcbiAgICAgIGNvbnN0IHJhd1JlY29yZERhdGEgPSByZWNvcmREYXRhLmZpbHRlcihmaWVsZERhdGEgPT4gZmllbGREYXRhLmZpZWxkQ29kZSAmJiBmaWVsZE5hbWVzLmluY2x1ZGVzKGZpZWxkRGF0YS5maWVsZENvZGUpKTtcbiAgICAgIHJhd1JlY29yZERhdGEuZm9yRWFjaChmaWVsZERhdGEgPT4ge1xuICAgICAgICBjb25zdCB7IGZpZWxkQ29kZSwgZmllbGRWYWx1ZSB9ID0gZmllbGREYXRhO1xuICAgICAgICBjb25zdCBmaWVsZERlZiA9IHJlY29yZERlZmluaXRpb24uZmluZChjb2x1bW4gPT4gY29sdW1uLmZpZWxkQ29kZSA9PT0gZmllbGRDb2RlKTtcbiAgICAgICAgdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0gPSBmaWVsZFZhbHVlID8/ICcnO1xuICAgICAgICBpZiAoZmllbGRDb2RlID09PSBzZWxlY3Rpb25GaWVsZE5hbWUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHJlY29yZERhdGEpO1xuICAgICAgZmllbGRzLmZvckVhY2goZmllbGRDb2RlID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHJlY29yZERhdGFbZmllbGRDb2RlXTtcbiAgICAgICAgY29uc3QgZmllbGREZWYgPSByZWNvcmREZWZpbml0aW9uLmZpbmQoY29sdW1uID0+IGNvbHVtbi5maWVsZENvZGUgPT09IGZpZWxkQ29kZSk7XG4gICAgICAgIHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdID0gZmllbGRWYWx1ZSA/PyAnJztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdCgpIHsgdGhpcy5zZWxlY3RlZCA9ICF0aGlzLnNlbGVjdGVkOyB9XG4gIHNlbGVjdCgpIHsgdGhpcy5zZWxlY3RlZCA9IHRydWU7IH1cbiAgdW5zZWxlY3QoKSB7IHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsgfVxuXG4gIGdldCByZWNvcmRJZEtleSgpIHtcbiAgICByZXR1cm4gKHR5cGVvZiB0aGlzLnJlY29yZElkID09PSAnb2JqZWN0JylcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkodGhpcy5yZWNvcmRJZCkgOiB0aGlzLnJlY29yZElkO1xuICB9XG5cbiAgZ2V0RmllbGRWYWx1ZShmaWVsZENvZGUpOiBhbnkge1xuICAgIHJldHVybiAoZmllbGRDb2RlICYmIHRoaXMucmVjb3JkRGF0YSkgPyB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXSA6IG51bGw7XG4gIH1cblxuICBoYXNQYXR0ZXJuKHdvcmRzLCBjb2x1bW5PYmopIHtcbiAgICBpZiAoIXdvcmRzIHx8IHdvcmRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgd29yZCBvZiB3b3Jkcykge1xuICAgICAgbGV0IHdvcmRJc1ByZXNlbnQgPSBmYWxzZTtcbiAgICAgIGZvciAoY29uc3QgZmllbGRDb2RlIGluIHRoaXMucmVjb3JkRGF0YSkge1xuICAgICAgICBjb25zdCBjb2x1bW5EZWYgPSBjb2x1bW5PYmo/LltmaWVsZENvZGVdO1xuICAgICAgICBpZiAoY29sdW1uRGVmPy5zZWFyY2hhYmxlICYmIHRoaXMucmVjb3JkRGF0YS5oYXNPd25Qcm9wZXJ0eShmaWVsZENvZGUpKSB7XG4gICAgICAgICAgY29uc3QgdGVybSA9IHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICBsZXQgZmllbGRWYWx1ZTtcbiAgICAgICAgICBpZiAoY29sdW1uRGVmLmZpZWxkVHlwZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCdEQVRFJykpIHtcbiAgICAgICAgICAgIGZpZWxkVmFsdWUgPSB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXS5zdWJzdHJpbmcoMCwgMTYpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZFZhbHVlID0gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWVsZFZhbHVlLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSkge1xuICAgICAgICAgICAgd29yZElzUHJlc2VudCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghd29yZElzUHJlc2VudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGFzQ29uZGl0aW9uKGNvbHVtbkZpbHRlcnMpIHtcbiAgICBpZiAoIWNvbHVtbkZpbHRlcnMgfHwgY29sdW1uRmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBjb2x1bW5GaWx0ZXJzKSB7XG4gICAgICBjb25zdCB7IGZpZWxkQ29kZSwgb3BlcmF0b3IsIHZhbHVlcyB9ID0gY29uZGl0aW9uO1xuICAgICAgaWYgKHRoaXMucmVjb3JkRGF0YS5oYXNPd25Qcm9wZXJ0eShmaWVsZENvZGUpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXTtcbiAgICAgICAgY29uc3Qgc3RyaW5nVmFsdWUgPSBmaWVsZFZhbHVlLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuRyAmJiBmaWVsZFZhbHVlIDw9IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5MICYmIGZpZWxkVmFsdWUgPj0gdmFsdWVzWzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkdFICYmIGZpZWxkVmFsdWUgPCB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTEUgJiYgZmllbGRWYWx1ZSA+IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5JTiAmJiAhdmFsdWVzLmluY2x1ZGVzKGZpZWxkVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkVRKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWUgPT09IHZhbHVlc1swXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5ORVEgJiYgZmllbGRWYWx1ZSA9PT0gdmFsdWVzWzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkhBUyAmJiAhc3RyaW5nVmFsdWUuaW5jbHVkZXModmFsdWVzWzBdLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTk9USEFTICYmIHN0cmluZ1ZhbHVlLmluY2x1ZGVzKHZhbHVlc1swXS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkJFVFdFRU4gJiYgKGZpZWxkVmFsdWUgPCB2YWx1ZXNbMF0gfHwgZmllbGRWYWx1ZSA+IHZhbHVlc1sxXSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3Jvdy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxNQUFNLE9BQU8sZUFBZTtJQUMxQixRQUFRLEdBQWtCLElBQUksQ0FBQztJQUMvQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFFckIsWUFBWSxjQUFjLEVBQUUsZ0JBQXFDLEVBQUUscUJBQW9DLElBQUk7UUFDekcsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxjQUFjLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3RILGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2hDLE1B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QztvQkFDOUYsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxJQUFJLFFBQVEsS0FBSyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekYsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWNvcmRUYWJsZUNvbHVtbiB9IGZyb20gJy4vY29sdW1uJztcbmltcG9ydCB7IG9wZXJhdG9ycyB9IGZyb20gJy4uL2Zvcm0uY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlUmVjb3JkRGF0YSB7XG4gIHJlY29yZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVjb3JkRGF0YTogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IocmVjb3JkUmVjZWl2ZWQsIHJlY29yZERlZmluaXRpb246IFJlY29yZFRhYmxlQ29sdW1uW10sIHNlbGVjdGlvbkZpZWxkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBjb25zdCB7IHRhYmxlUmVjb3JkSWQsIHJlY29yZERhdGEgfSA9IHJlY29yZFJlY2VpdmVkO1xuICAgIHRoaXMucmVjb3JkSWQgPSB0YWJsZVJlY29yZElkO1xuICAgIGlmICghcmVjb3JkRGVmaW5pdGlvbiB8fCByZWNvcmREZWZpbml0aW9uLmxlbmd0aCA9PT0gMCB8fCAhcmVjb3JkRGF0YSB8fCByZWNvcmREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZE5hbWVzID0gcmVjb3JkRGVmaW5pdGlvbi5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZENvZGUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZERhdGEpKSB7XG4gICAgICBjb25zdCByYXdSZWNvcmREYXRhID0gcmVjb3JkRGF0YS5maWx0ZXIoZmllbGREYXRhID0+IGZpZWxkRGF0YS5maWVsZENvZGUgJiYgZmllbGROYW1lcy5pbmNsdWRlcyhmaWVsZERhdGEuZmllbGRDb2RlKSk7XG4gICAgICByYXdSZWNvcmREYXRhLmZvckVhY2goZmllbGREYXRhID0+IHtcbiAgICAgICAgY29uc3QgeyBmaWVsZENvZGUsIGZpZWxkVmFsdWUgfSA9IGZpZWxkRGF0YTtcbiAgICAgICAgY29uc3QgZmllbGREZWYgPSByZWNvcmREZWZpbml0aW9uLmZpbmQoY29sdW1uID0+IGNvbHVtbi5maWVsZENvZGUgPT09IGZpZWxkQ29kZSk7XG4gICAgICAgIHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdID0gZmllbGRWYWx1ZSA/PyAnJztcbiAgICAgICAgaWYgKGZpZWxkQ29kZSA9PT0gc2VsZWN0aW9uRmllbGROYW1lKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWVsZHMgPSBPYmplY3Qua2V5cyhyZWNvcmREYXRhKTtcbiAgICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkQ29kZSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSByZWNvcmREYXRhW2ZpZWxkQ29kZV07XG4gICAgICAgIGNvbnN0IGZpZWxkRGVmID0gcmVjb3JkRGVmaW5pdGlvbi5maW5kKGNvbHVtbiA9PiBjb2x1bW4uZmllbGRDb2RlID09PSBmaWVsZENvZGUpO1xuICAgICAgICB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXSA9IGZpZWxkVmFsdWUgPz8gJyc7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTZWxlY3QoKSB7IHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDsgfVxuICBzZWxlY3QoKSB7IHRoaXMuc2VsZWN0ZWQgPSB0cnVlOyB9XG4gIHVuc2VsZWN0KCkgeyB0aGlzLnNlbGVjdGVkID0gZmFsc2U7IH1cblxuICBnZXQgcmVjb3JkSWRLZXkoKSB7XG4gICAgcmV0dXJuICh0eXBlb2YgdGhpcy5yZWNvcmRJZCA9PT0gJ29iamVjdCcpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMucmVjb3JkSWQpIDogdGhpcy5yZWNvcmRJZDtcbiAgfVxuXG4gIGdldEZpZWxkVmFsdWUoZmllbGRDb2RlKTogYW55IHtcbiAgICByZXR1cm4gKGZpZWxkQ29kZSAmJiB0aGlzLnJlY29yZERhdGEpID8gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0gOiBudWxsO1xuICB9XG5cbiAgaGFzUGF0dGVybih3b3JkcywgY29sdW1uT2JqKSB7XG4gICAgaWYgKCF3b3JkcyB8fCB3b3Jkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGxldCB3b3JkSXNQcmVzZW50ID0gZmFsc2U7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkQ29kZSBpbiB0aGlzLnJlY29yZERhdGEpIHtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmID0gY29sdW1uT2JqPy5bZmllbGRDb2RlXTtcbiAgICAgICAgaWYgKGNvbHVtbkRlZj8uc2VhcmNoYWJsZSAmJiB0aGlzLnJlY29yZERhdGEuaGFzT3duUHJvcGVydHkoZmllbGRDb2RlKSkge1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSB3b3JkLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgbGV0IGZpZWxkVmFsdWU7XG4gICAgICAgICAgaWYgKGNvbHVtbkRlZi5maWVsZFR5cGUudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnREFURScpKSB7XG4gICAgICAgICAgICBmaWVsZFZhbHVlID0gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0uc3Vic3RyaW5nKDAsIDE2KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGRWYWx1ZSA9IHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGRWYWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXModGVybSkpIHtcbiAgICAgICAgICAgIHdvcmRJc1ByZXNlbnQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXdvcmRJc1ByZXNlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGhhc0NvbmRpdGlvbihjb2x1bW5GaWx0ZXJzKSB7XG4gICAgaWYgKCFjb2x1bW5GaWx0ZXJzIHx8IGNvbHVtbkZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY29sdW1uRmlsdGVycykge1xuICAgICAgY29uc3QgeyBmaWVsZENvZGUsIG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGNvbmRpdGlvbjtcbiAgICAgIGlmICh0aGlzLnJlY29yZERhdGEuaGFzT3duUHJvcGVydHkoZmllbGRDb2RlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV07XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gZmllbGRWYWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkcgJiYgZmllbGRWYWx1ZSA8PSB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTCAmJiBmaWVsZFZhbHVlID49IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5HRSAmJiBmaWVsZFZhbHVlIDwgdmFsdWVzWzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkxFICYmIGZpZWxkVmFsdWUgPiB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuSU4gJiYgIXZhbHVlcy5pbmNsdWRlcyhmaWVsZFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5FUSkge1xuICAgICAgICAgIHJldHVybiBmaWVsZFZhbHVlID09PSB2YWx1ZXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTkVRICYmIGZpZWxkVmFsdWUgPT09IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5IQVMgJiYgIXN0cmluZ1ZhbHVlLmluY2x1ZGVzKHZhbHVlc1swXS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLk5PVEhBUyAmJiBzdHJpbmdWYWx1ZS5pbmNsdWRlcyh2YWx1ZXNbMF0udG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5CRVRXRUVOICYmIChmaWVsZFZhbHVlIDwgdmFsdWVzWzBdIHx8IGZpZWxkVmFsdWUgPiB2YWx1ZXNbMV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=