@ethlete/query 5.20.1 → 5.21.1

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.
@@ -12,7 +12,7 @@ export const createQueryStack = (computation, options) => {
12
12
  const lastQuery = signal(null);
13
13
  effect(() => {
14
14
  const newQueryOrQueries = runInInjectionContext(injector, () => computation());
15
- const newQueries = Array.isArray(newQueryOrQueries) ? newQueryOrQueries : [newQueryOrQueries];
15
+ const newQueries = Array.isArray(newQueryOrQueries) ? newQueryOrQueries : [newQueryOrQueries].filter((q) => !!q);
16
16
  untracked(() => {
17
17
  const oldQueries = queries();
18
18
  if (append) {
@@ -39,9 +39,9 @@ export const createQueryStack = (computation, options) => {
39
39
  const responses = queries().map((q) => q.response());
40
40
  return transform?.(responses) ?? responses;
41
41
  });
42
- const execute = () => {
42
+ const execute = (options) => {
43
43
  for (const query of queries()) {
44
- query.execute();
44
+ query.execute({ options: { skipCache: options?.skipCache } });
45
45
  }
46
46
  };
47
47
  const clear = () => {
@@ -62,4 +62,4 @@ export const createQueryStack = (computation, options) => {
62
62
  };
63
63
  return stack;
64
64
  };
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZXhwZXJpbWVudGFsL3F1ZXJ5LXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXdEckgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBK0IsU0FBWSxFQUFFLEVBQUUsQ0FDbkYsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUF3QixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQTRDLFNBQVksRUFBRSxFQUFFLENBQ3BHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQTRDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsV0FBMEIsRUFDMUIsT0FBdUMsRUFDdkMsRUFBRTtJQUNGLE1BQU0sRUFDSixNQUFNLEdBQUcsS0FBSyxFQUNkLFFBQVEsR0FBRyxDQUFDLFVBQWUsRUFBRSxVQUFlLEVBQUUsRUFBRTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUks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LEVBQUUsRUFBRSxDQUFDO1lBQzlCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUM5QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDLENBQUM7SUFFRixNQUFNLEtBQUssR0FBcUI7UUFDOUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDN0IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUU7UUFDakMsT0FBTztRQUNQLEtBQUs7UUFDTCxRQUFRO1FBQ1IsT0FBTztRQUNQLEtBQUs7S0FDTixDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgU2lnbmFsLCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW55UXVlcnkgfSBmcm9tICcuL3F1ZXJ5JztcblxuZXhwb3J0IHR5cGUgUXVlcnlTdGFjazxUIGV4dGVuZHMgQW55UXVlcnksIEogPSBSZXR1cm5UeXBlPFRbJ3Jlc3BvbnNlJ10+W10+ID0ge1xuICAvKiogQ29udGFpbnMgYWxsIHF1ZXJpZXMgaW4gdGhlIHN0YWNrLiAqL1xuICBxdWVyaWVzOiBTaWduYWw8VFtdPjtcblxuICAvKiogQ29udGFpbnMgdGhlIGxhc3QgcXVlcnkgaW4gdGhlIHN0YWNrLiBVc2VmdWwgZm9yIGdldHRpbmcgY3VycmVudCBwYWdpbmF0aW9uIHZhbHVlcy4gKi9cbiAgbGFzdFF1ZXJ5OiBTaWduYWw8VCB8IG51bGw+O1xuXG4gIC8qKiBUcnVlIGlmIGFueSBxdWVyeSBpbiB0aGUgc3RhY2sgaXMgbG9hZGluZy4gKi9cbiAgbG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuXG4gIC8qKiBDb250YWlucyB0aGUgZmlyc3QgZXJyb3IgdGhhdCBvY2N1cnJlZCBpbiB0aGUgc3RhY2suICovXG4gIGVycm9yOiBTaWduYWw8SHR0cEVycm9yUmVzcG9uc2UgfCBudWxsPjtcblxuICAvKiogQ29udGFpbnMgdGhlIHJlc3BvbnNlcyBvZiBhbGwgcXVlcmllcyBpbiB0aGUgc3RhY2suIFdpbGwgYmUgYG51bGxgIGZvciBxdWVyaWVzIHRoYXQgYXJlIGxvYWRpbmcgb3IgZXJyb3JlZC4gKi9cbiAgcmVzcG9uc2U6IFNpZ25hbDxKPjtcblxuICAvKiogRXhlY3V0ZXMgYWxsIHF1ZXJpZXMgaW4gdGhlIHN0YWNrLiAqL1xuICBleGVjdXRlOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBEZXN0cm95cyBhbGwgcXVlcmllcyBpbiB0aGUgc3RhY2sgYW5kIGVtcHRpZXMgaXQuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiBgYXBwZW5kYCBpcyB0cnVlLiAqL1xuICBjbGVhcjogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEFueVF1ZXJ5U3RhY2sgPSBRdWVyeVN0YWNrPEFueVF1ZXJ5PjtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlUXVlcnlTdGFja09wdGlvbnM8VCBleHRlbmRzIEFueVF1ZXJ5LCBKID0gUmV0dXJuVHlwZTxUWydyZXNwb25zZSddPltdPiA9IHtcbiAgLyoqXG4gICAqIElmIHRydWUsIG5ldyBxdWVyaWVzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nIG9uZXMuIE90aGVyd2lzZSwgZXhpc3RpbmcgcXVlcmllcyB3aWxsIGJlIGRlc3Ryb3llZC5cbiAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgdGhpbmdzIGxpa2UgaW5maW5pdGUgc2Nyb2xsaW5nIHdoZXJlIGFscmVhZHkgZmV0Y2hlZCBxdWVyaWVzIHNob3VsZCBub3QgYmUgZGVzdHJveWVkLlxuICAgKi9cbiAgYXBwZW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYXBwZW5kIGlzIHRydWUsIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gbWVyZ2UgdGhlIG9sZCBhbmQgbmV3IHF1ZXJpZXMuXG4gICAqIFVzZWZ1bCBpZiB5b3Ugd2FudCB0byBhcHBlbmQgdGhlIG5ldyBxdWVyaWVzIGluIGEgc3BlY2lmaWMgb3JkZXIgKGUuZy4gYXQgdGhlIGJlZ2lubmluZykuXG4gICAqL1xuICBhcHBlbmRGbj86IChcbiAgICBvbGRRdWVyaWVzOiBUW10sXG4gICAgbmV3UXVlcmllczogVFtdLFxuICApID0+IHtcbiAgICAvKiogVGhlIG5ldyBxdWVyaWVzIG1lcmdlZCB3aXRoIHRoZSBvbGQgb25lcy4gKi9cbiAgICBxdWVyaWVzOiBUW107XG5cbiAgICAvKiogVGhlIGxhc3QgcXVlcnkgaW4gdGhlIG5ldyBxdWVyaWVzLiAqL1xuICAgIGxhc3RRdWVyeTogVCB8IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIHJlc3BvbnNlcyBvZiBhbGwgcXVlcmllcyBpbiB0aGUgc3RhY2suIFVzZWZ1bCBmb3IgbWVyZ2luZyBvciBmaWx0ZXJpbmcgcmVzcG9uc2VzLlxuICAgKi9cbiAgdHJhbnNmb3JtPzogKHJlc3BvbnNlczogUmV0dXJuVHlwZTxUWydyZXNwb25zZSddPltdKSA9PiBKO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFycmF5UmVzcG9uc2UgPSA8VCBleHRlbmRzICh1bmtub3duIHwgbnVsbClbXT4ocmVzcG9uc2VzOiBUKSA9PlxuICByZXNwb25zZXMuZmlsdGVyKChyKSA9PiAhIXIpLmZsYXRNYXAoKHIpID0+IHIpIGFzIE5vbk51bGxhYmxlPFRbMF0+W107XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1QYWdpbmF0ZWRSZXNwb25zZSA9IDxUIGV4dGVuZHMgKHsgaXRlbXM6IHVua25vd25bXSB9IHwgbnVsbClbXT4ocmVzcG9uc2VzOiBUKSA9PlxuICByZXNwb25zZXMuZmlsdGVyKChyKSA9PiAhIXIpLmZsYXRNYXAoKHIpID0+IHIuaXRlbXMpIGFzIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbMF0+WydpdGVtcyddPjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1ZXJ5U3RhY2sgPSA8VCBleHRlbmRzIEFueVF1ZXJ5LCBKID0gUmV0dXJuVHlwZTxUWydyZXNwb25zZSddPltdPihcbiAgY29tcHV0YXRpb246ICgpID0+IFQgfCBUW10sXG4gIG9wdGlvbnM/OiBDcmVhdGVRdWVyeVN0YWNrT3B0aW9uczxULCBKPixcbikgPT4ge1xuICBjb25zdCB7XG4gICAgYXBwZW5kID0gZmFsc2UsXG4gICAgYXBwZW5kRm4gPSAob2xkUXVlcmllczogVFtdLCBuZXdRdWVyaWVzOiBUW10pID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbLi4ub2xkUXVlcmllcywgLi4ubmV3UXVlcmllc107XG4gICAgICBjb25zdCBsYXN0UXVlcnkgPSBuZXdRdWVyaWVzW25ld1F1ZXJpZXMubGVuZ3RoIC0gMV0gPz8gb2xkUXVlcmllc1tvbGRRdWVyaWVzLmxlbmd0aCAtIDFdID8/IG51bGw7XG5cbiAgICAgIHJldHVybiB7IHF1ZXJpZXMsIGxhc3RRdWVyeSB9O1xuICAgIH0sXG4gICAgdHJhbnNmb3JtLFxuICB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGNvbnN0IHF1ZXJpZXMgPSBzaWduYWw8VFtdPihbXSk7XG4gIGNvbnN0IGxhc3RRdWVyeSA9IHNpZ25hbDxUIHwgbnVsbD4obnVsbCk7XG5cbiAgZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdRdWVyeU9yUXVlcmllcyA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gY29tcHV0YXRpb24oKSk7XG4gICAgY29uc3QgbmV3UXVlcmllcyA9IEFycmF5LmlzQXJyYXkobmV3UXVlcnlPclF1ZXJpZXMpID8gbmV3UXVlcnlPclF1ZXJpZXMgOiBbbmV3UXVlcnlPclF1ZXJpZXNdO1xuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIGNvbnN0IG9sZFF1ZXJpZXMgPSBxdWVyaWVzKCk7XG5cbiAgICAgIGlmIChhcHBlbmQpIHtcbiAgICAgICAgY29uc3QgeyBxdWVyaWVzOiBhcHBlbmRlZFF1ZXJpZXMsIGxhc3RRdWVyeTogbGFzdEFwcGVuZGVkUXVlcnkgfSA9IGFwcGVuZEZuKG9sZFF1ZXJpZXMsIG5ld1F1ZXJpZXMpO1xuICAgICAgICBxdWVyaWVzLnNldChhcHBlbmRlZFF1ZXJpZXMpO1xuICAgICAgICBsYXN0UXVlcnkuc2V0KGxhc3RBcHBlbmRlZFF1ZXJ5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3Qgb2xkUXVlcnkgb2Ygb2xkUXVlcmllcykge1xuICAgICAgICAgIGlmICghbmV3UXVlcmllcy5zb21lKChxKSA9PiBxLmlkKCkgPT09IG9sZFF1ZXJ5LmlkKCkpKSB7XG4gICAgICAgICAgICBvbGRRdWVyeS5kZXN0cm95KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXJpZXMuc2V0KG5ld1F1ZXJpZXMpO1xuICAgICAgICBsYXN0UXVlcnkuc2V0KG5ld1F1ZXJpZXNbbmV3UXVlcmllcy5sZW5ndGggLSAxXSA/PyBudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgbG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHF1ZXJpZXMoKS5zb21lKChxKSA9PiBxLmxvYWRpbmcoKSkpO1xuXG4gIGNvbnN0IGVycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHF1ZXJpZXMoKVxuICAgICAgICAubWFwKChxKSA9PiBxLmVycm9yKCkpXG4gICAgICAgIC5maW5kKChlKSA9PiBlICE9PSBudWxsKSA/PyBudWxsLFxuICApO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlcyA9IHF1ZXJpZXMoKS5tYXAoKHEpID0+IHEucmVzcG9uc2UoKSk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybT8uKHJlc3BvbnNlcykgPz8gcmVzcG9uc2VzO1xuICB9KSBhcyBTaWduYWw8Sj47XG5cbiAgY29uc3QgZXhlY3V0ZSA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIHF1ZXJpZXMoKSkge1xuICAgICAgcXVlcnkuZXhlY3V0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIHF1ZXJpZXMoKSkge1xuICAgICAgcXVlcnkuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHF1ZXJpZXMuc2V0KFtdKTtcbiAgICBsYXN0UXVlcnkuc2V0KG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IHN0YWNrOiBRdWVyeVN0YWNrPFQsIEo+ID0ge1xuICAgIHF1ZXJpZXM6IHF1ZXJpZXMuYXNSZWFkb25seSgpLFxuICAgIGxhc3RRdWVyeTogbGFzdFF1ZXJ5LmFzUmVhZG9ubHkoKSxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHJlc3BvbnNlLFxuICAgIGV4ZWN1dGUsXG4gICAgY2xlYXIsXG4gIH07XG5cbiAgcmV0dXJuIHN0YWNrO1xufTtcbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZXhwZXJpbWVudGFsL3F1ZXJ5LXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXdEckgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBK0IsU0FBWSxFQUFFLEVBQUUsQ0FDbkYsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUF3QixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQTRDLFNBQVksRUFBRSxFQUFFLENBQ3BHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQTRDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsV0FBaUMsRUFDakMsT0FBdUMsRUFDdkMsRUFBRTtJQUNGLE1BQU0sRUFDSixNQUFNLEdBQUcsS0FBSyxFQUNkLFFBQVEsR0FBRyxDQUFDLFVBQWUsRUFBRSxVQUFlLEVBQUUsRUFBRTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUks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QUVoQixNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQWlDLEVBQUUsRUFBRTtRQUNwRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUU7UUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzlCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFxQjtRQUM5QixPQUFPLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUM3QixTQUFTLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRTtRQUNqQyxPQUFPO1FBQ1AsS0FBSztRQUNMLFFBQVE7UUFDUixPQUFPO1FBQ1AsS0FBSztLQUNOLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBTaWduYWwsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbnlRdWVyeSB9IGZyb20gJy4vcXVlcnknO1xuXG5leHBvcnQgdHlwZSBRdWVyeVN0YWNrPFQgZXh0ZW5kcyBBbnlRdWVyeSwgSiA9IFJldHVyblR5cGU8VFsncmVzcG9uc2UnXT5bXT4gPSB7XG4gIC8qKiBDb250YWlucyBhbGwgcXVlcmllcyBpbiB0aGUgc3RhY2suICovXG4gIHF1ZXJpZXM6IFNpZ25hbDxUW10+O1xuXG4gIC8qKiBDb250YWlucyB0aGUgbGFzdCBxdWVyeSBpbiB0aGUgc3RhY2suIFVzZWZ1bCBmb3IgZ2V0dGluZyBjdXJyZW50IHBhZ2luYXRpb24gdmFsdWVzLiAqL1xuICBsYXN0UXVlcnk6IFNpZ25hbDxUIHwgbnVsbD47XG5cbiAgLyoqIFRydWUgaWYgYW55IHF1ZXJ5IGluIHRoZSBzdGFjayBpcyBsb2FkaW5nLiAqL1xuICBsb2FkaW5nOiBTaWduYWw8Ym9vbGVhbj47XG5cbiAgLyoqIENvbnRhaW5zIHRoZSBmaXJzdCBlcnJvciB0aGF0IG9jY3VycmVkIGluIHRoZSBzdGFjay4gKi9cbiAgZXJyb3I6IFNpZ25hbDxIdHRwRXJyb3JSZXNwb25zZSB8IG51bGw+O1xuXG4gIC8qKiBDb250YWlucyB0aGUgcmVzcG9uc2VzIG9mIGFsbCBxdWVyaWVzIGluIHRoZSBzdGFjay4gV2lsbCBiZSBgbnVsbGAgZm9yIHF1ZXJpZXMgdGhhdCBhcmUgbG9hZGluZyBvciBlcnJvcmVkLiAqL1xuICByZXNwb25zZTogU2lnbmFsPEo+O1xuXG4gIC8qKiBFeGVjdXRlcyBhbGwgcXVlcmllcyBpbiB0aGUgc3RhY2suICovXG4gIGV4ZWN1dGU6IChvcHRpb25zPzogeyBza2lwQ2FjaGU/OiBib29sZWFuIH0pID0+IHZvaWQ7XG5cbiAgLyoqIERlc3Ryb3lzIGFsbCBxdWVyaWVzIGluIHRoZSBzdGFjayBhbmQgZW1wdGllcyBpdC4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGlmIGBhcHBlbmRgIGlzIHRydWUuICovXG4gIGNsZWFyOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgQW55UXVlcnlTdGFjayA9IFF1ZXJ5U3RhY2s8QW55UXVlcnk+O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVRdWVyeVN0YWNrT3B0aW9uczxUIGV4dGVuZHMgQW55UXVlcnksIEogPSBSZXR1cm5UeXBlPFRbJ3Jlc3BvbnNlJ10+W10+ID0ge1xuICAvKipcbiAgICogSWYgdHJ1ZSwgbmV3IHF1ZXJpZXMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgZXhpc3Rpbmcgb25lcy4gT3RoZXJ3aXNlLCBleGlzdGluZyBxdWVyaWVzIHdpbGwgYmUgZGVzdHJveWVkLlxuICAgKiBUaGlzIHNob3VsZCBiZSB1c2VkIGZvciB0aGluZ3MgbGlrZSBpbmZpbml0ZSBzY3JvbGxpbmcgd2hlcmUgYWxyZWFkeSBmZXRjaGVkIHF1ZXJpZXMgc2hvdWxkIG5vdCBiZSBkZXN0cm95ZWQuXG4gICAqL1xuICBhcHBlbmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBhcHBlbmQgaXMgdHJ1ZSwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBtZXJnZSB0aGUgb2xkIGFuZCBuZXcgcXVlcmllcy5cbiAgICogVXNlZnVsIGlmIHlvdSB3YW50IHRvIGFwcGVuZCB0aGUgbmV3IHF1ZXJpZXMgaW4gYSBzcGVjaWZpYyBvcmRlciAoZS5nLiBhdCB0aGUgYmVnaW5uaW5nKS5cbiAgICovXG4gIGFwcGVuZEZuPzogKFxuICAgIG9sZFF1ZXJpZXM6IFRbXSxcbiAgICBuZXdRdWVyaWVzOiBUW10sXG4gICkgPT4ge1xuICAgIC8qKiBUaGUgbmV3IHF1ZXJpZXMgbWVyZ2VkIHdpdGggdGhlIG9sZCBvbmVzLiAqL1xuICAgIHF1ZXJpZXM6IFRbXTtcblxuICAgIC8qKiBUaGUgbGFzdCBxdWVyeSBpbiB0aGUgbmV3IHF1ZXJpZXMuICovXG4gICAgbGFzdFF1ZXJ5OiBUIHwgbnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB0aGUgcmVzcG9uc2VzIG9mIGFsbCBxdWVyaWVzIGluIHRoZSBzdGFjay4gVXNlZnVsIGZvciBtZXJnaW5nIG9yIGZpbHRlcmluZyByZXNwb25zZXMuXG4gICAqL1xuICB0cmFuc2Zvcm0/OiAocmVzcG9uc2VzOiBSZXR1cm5UeXBlPFRbJ3Jlc3BvbnNlJ10+W10pID0+IEo7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQXJyYXlSZXNwb25zZSA9IDxUIGV4dGVuZHMgKHVua25vd24gfCBudWxsKVtdPihyZXNwb25zZXM6IFQpID0+XG4gIHJlc3BvbnNlcy5maWx0ZXIoKHIpID0+ICEhcikuZmxhdE1hcCgocikgPT4gcikgYXMgTm9uTnVsbGFibGU8VFswXT5bXTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVBhZ2luYXRlZFJlc3BvbnNlID0gPFQgZXh0ZW5kcyAoeyBpdGVtczogdW5rbm93bltdIH0gfCBudWxsKVtdPihyZXNwb25zZXM6IFQpID0+XG4gIHJlc3BvbnNlcy5maWx0ZXIoKHIpID0+ICEhcikuZmxhdE1hcCgocikgPT4gci5pdGVtcykgYXMgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFswXT5bJ2l0ZW1zJ10+O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUXVlcnlTdGFjayA9IDxUIGV4dGVuZHMgQW55UXVlcnksIEogPSBSZXR1cm5UeXBlPFRbJ3Jlc3BvbnNlJ10+W10+KFxuICBjb21wdXRhdGlvbjogKCkgPT4gVCB8IFRbXSB8IG51bGwsXG4gIG9wdGlvbnM/OiBDcmVhdGVRdWVyeVN0YWNrT3B0aW9uczxULCBKPixcbikgPT4ge1xuICBjb25zdCB7XG4gICAgYXBwZW5kID0gZmFsc2UsXG4gICAgYXBwZW5kRm4gPSAob2xkUXVlcmllczogVFtdLCBuZXdRdWVyaWVzOiBUW10pID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbLi4ub2xkUXVlcmllcywgLi4ubmV3UXVlcmllc107XG4gICAgICBjb25zdCBsYXN0UXVlcnkgPSBuZXdRdWVyaWVzW25ld1F1ZXJpZXMubGVuZ3RoIC0gMV0gPz8gb2xkUXVlcmllc1tvbGRRdWVyaWVzLmxlbmd0aCAtIDFdID8/IG51bGw7XG5cbiAgICAgIHJldHVybiB7IHF1ZXJpZXMsIGxhc3RRdWVyeSB9O1xuICAgIH0sXG4gICAgdHJhbnNmb3JtLFxuICB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGNvbnN0IHF1ZXJpZXMgPSBzaWduYWw8VFtdPihbXSk7XG4gIGNvbnN0IGxhc3RRdWVyeSA9IHNpZ25hbDxUIHwgbnVsbD4obnVsbCk7XG5cbiAgZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdRdWVyeU9yUXVlcmllcyA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gY29tcHV0YXRpb24oKSk7XG5cbiAgICBjb25zdCBuZXdRdWVyaWVzID0gQXJyYXkuaXNBcnJheShuZXdRdWVyeU9yUXVlcmllcykgPyBuZXdRdWVyeU9yUXVlcmllcyA6IFtuZXdRdWVyeU9yUXVlcmllc10uZmlsdGVyKChxKSA9PiAhIXEpO1xuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIGNvbnN0IG9sZFF1ZXJpZXMgPSBxdWVyaWVzKCk7XG5cbiAgICAgIGlmIChhcHBlbmQpIHtcbiAgICAgICAgY29uc3QgeyBxdWVyaWVzOiBhcHBlbmRlZFF1ZXJpZXMsIGxhc3RRdWVyeTogbGFzdEFwcGVuZGVkUXVlcnkgfSA9IGFwcGVuZEZuKG9sZFF1ZXJpZXMsIG5ld1F1ZXJpZXMpO1xuICAgICAgICBxdWVyaWVzLnNldChhcHBlbmRlZFF1ZXJpZXMpO1xuICAgICAgICBsYXN0UXVlcnkuc2V0KGxhc3RBcHBlbmRlZFF1ZXJ5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3Qgb2xkUXVlcnkgb2Ygb2xkUXVlcmllcykge1xuICAgICAgICAgIGlmICghbmV3UXVlcmllcy5zb21lKChxKSA9PiBxLmlkKCkgPT09IG9sZFF1ZXJ5LmlkKCkpKSB7XG4gICAgICAgICAgICBvbGRRdWVyeS5kZXN0cm95KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXJpZXMuc2V0KG5ld1F1ZXJpZXMpO1xuICAgICAgICBsYXN0UXVlcnkuc2V0KG5ld1F1ZXJpZXNbbmV3UXVlcmllcy5sZW5ndGggLSAxXSA/PyBudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgbG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHF1ZXJpZXMoKS5zb21lKChxKSA9PiBxLmxvYWRpbmcoKSkpO1xuXG4gIGNvbnN0IGVycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHF1ZXJpZXMoKVxuICAgICAgICAubWFwKChxKSA9PiBxLmVycm9yKCkpXG4gICAgICAgIC5maW5kKChlKSA9PiBlICE9PSBudWxsKSA/PyBudWxsLFxuICApO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlcyA9IHF1ZXJpZXMoKS5tYXAoKHEpID0+IHEucmVzcG9uc2UoKSk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybT8uKHJlc3BvbnNlcykgPz8gcmVzcG9uc2VzO1xuICB9KSBhcyBTaWduYWw8Sj47XG5cbiAgY29uc3QgZXhlY3V0ZSA9IChvcHRpb25zPzogeyBza2lwQ2FjaGU/OiBib29sZWFuIH0pID0+IHtcbiAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIHF1ZXJpZXMoKSkge1xuICAgICAgcXVlcnkuZXhlY3V0ZSh7IG9wdGlvbnM6IHsgc2tpcENhY2hlOiBvcHRpb25zPy5za2lwQ2FjaGUgfSB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBxdWVyeSBvZiBxdWVyaWVzKCkpIHtcbiAgICAgIHF1ZXJ5LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBxdWVyaWVzLnNldChbXSk7XG4gICAgbGFzdFF1ZXJ5LnNldChudWxsKTtcbiAgfTtcblxuICBjb25zdCBzdGFjazogUXVlcnlTdGFjazxULCBKPiA9IHtcbiAgICBxdWVyaWVzOiBxdWVyaWVzLmFzUmVhZG9ubHkoKSxcbiAgICBsYXN0UXVlcnk6IGxhc3RRdWVyeS5hc1JlYWRvbmx5KCksXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICByZXNwb25zZSxcbiAgICBleGVjdXRlLFxuICAgIGNsZWFyLFxuICB9O1xuXG4gIHJldHVybiBzdGFjaztcbn07XG4iXX0=
@@ -307,6 +307,9 @@ export class QueryForm {
307
307
  if (typeof val === 'string' && val.startsWith(ET_ARR_PREFIX)) {
308
308
  return JSON.parse(val.slice(ET_ARR_PREFIX.length));
309
309
  }
310
+ else if (typeof val === 'function') {
311
+ return val();
312
+ }
310
313
  return val ?? null;
311
314
  }
312
315
  _transformKeyToQueryParam(key) {
@@ -406,4 +409,4 @@ export class QueryForm {
406
409
  });
407
410
  }
408
411
  }
409
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsS0FBSyxFQUNMLGFBQWEsRUFDYixLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBVWhILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTNFLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyxNQUFNLE9BQU8sVUFBVTtJQUNyQixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFtQixJQUEwQjtRQUExQixTQUFJLEdBQUosSUFBSSxDQUFzQjtJQUFHLENBQUM7Q0FDbEQ7QUFFRCxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFN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Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtvQkFDeEIsV0FBVztvQkFDWCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsbUJBQW1CLEVBQUUsT0FBTztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIE5nWm9uZSwgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgRVRfUFJPUEVSVFlfUkVNT1ZFRCxcbiAgY2xvbmUsXG4gIGNyZWF0ZURlc3Ryb3ksXG4gIGVxdWFsLFxuICBpbmplY3RRdWVyeVBhcmFtQ2hhbmdlcyxcbiAgaW5qZWN0UXVlcnlQYXJhbXMsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIG1hcCwgbWVyZ2UsIG9mLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUXVlcnlGaWVsZE9wdGlvbnMsXG4gIFF1ZXJ5Rm9ybUdyb3VwLFxuICBRdWVyeUZvcm1Hcm91cENvbnRyb2xzLFxuICBRdWVyeUZvcm1PYnNlcnZlT3B0aW9ucyxcbiAgUXVlcnlGb3JtVmFsdWUsXG4gIFF1ZXJ5Rm9ybVZhbHVlRXZlbnQsXG4gIFF1ZXJ5Rm9ybVdyaXRlT3B0aW9ucyxcbn0gZnJvbSAnLi9xdWVyeS1mb3JtLnR5cGVzJztcbmltcG9ydCB7IHRyYW5zZm9ybVRvQm9vbGVhbiwgdHJhbnNmb3JtVG9OdW1iZXIgfSBmcm9tICcuL3F1ZXJ5LWZvcm0udXRpbHMnO1xuXG5jb25zdCBFVF9BUlJfUFJFRklYID0gJ0VUX0FSUl9fJztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5RmllbGQ8VD4ge1xuICBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNvbnRyb2w7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0YTogUXVlcnlGaWVsZE9wdGlvbnM8VD4pIHt9XG59XG5cbmNvbnN0IElHTk9SRURfRklMVEVSX0NPVU5UX0ZJRUxEUyA9IFsncGFnZScsICdza2lwJywgJ3Rha2UnLCAnbGltaXQnLCAnc29ydCcsICdzb3J0QnknLCAnc29ydE9yZGVyJywgJ3F1ZXJ5JywgJ3NlYXJjaCddO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybU9wdGlvbnMge1xuICAvKipcbiAgICogQSBwcmVmaXggdG8gdXNlIGZvciB0aGUgcXVlcnkgcGFyYW1ldGVycy4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgaGF2ZSBtdWx0aXBsZSBxdWVyeSBmb3JtcyBvbiB0aGUgc2FtZSBwYWdlLlxuICAgKi9cbiAgcXVlcnlQYXJhbVByZWZpeD86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgQW55UXVlcnlGb3JtID0gUXVlcnlGb3JtPGFueT47XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91bm9ic2VydmVUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRWYWx1ZXMgPSB0aGlzLl9leHRyYWN0RGVmYXVsdFZhbHVlcygpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpZFZhbHVlQ2hhbmdlcyQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgX2lzT2JzZXJ2aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgX3NraXBOZXh0UmVzZXRzID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcXVlcnlQYXJhbUNoYW5nZXMkID0gdG9PYnNlcnZhYmxlKGluamVjdFF1ZXJ5UGFyYW1DaGFuZ2VzKCkpO1xuICBwcml2YXRlIF9xdWVyeVBhcmFtcyA9IGluamVjdFF1ZXJ5UGFyYW1zKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBhbmd1bGFyIGZvcm0gZ3JvdXAgdGhhdCBjb250YWlucyBhbGwgdGhlIGZpZWxkcy5cbiAgICpcbiAgICogKipEbyBub3QqKiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbiB0aGlzIGZvcm0gZ3JvdXA6XG4gICAqIC0gYHNldFZhbHVlYDogVXNlIGBRdWVyeUZvcm0uc2V0VmFsdWVgIGluc3RlYWQuXG4gICAqIC0gYHBhdGNoVmFsdWVgOiBVc2UgYFF1ZXJ5Rm9ybS5wYXRjaFZhbHVlYCBpbnN0ZWFkLlxuICAgKiAtIGB2YWx1ZUNoYW5nZXNgOiBVc2UgYFF1ZXJ5Rm9ybS5jaGFuZ2VzJGAgaW5zdGVhZC5cbiAgICogLSBgdmFsdWVgOiBVc2UgYFF1ZXJ5Rm9ybS52YWx1ZWAgaW5zdGVhZC5cbiAgICogLSBgY29udHJvbHNgOiBVc2UgYFF1ZXJ5Rm9ybS5jb250cm9sc2AgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9zZXR1cEZvcm1Hcm91cCgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhc3RGb3JtVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUZvcm1WYWx1ZTxUPiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Rm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlGb3JtVmFsdWU8VD4+KHRoaXMuX2Zvcm1WYWx1ZSk7XG5cbiAgcHJpdmF0ZSBnZXQgX2Zvcm1WYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkgYXMgUXVlcnlGb3JtVmFsdWU8VD47XG4gIH1cblxuICBwcml2YXRlIGdldCBfZm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtIGFzIHVua25vd24gYXMgUXVlcnlGb3JtR3JvdXA7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlGb3JtVmFsdWVFdmVudDxUPj4oe1xuICAgIHByZXZpb3VzVmFsdWU6IG51bGwsXG4gICAgY3VycmVudFZhbHVlOiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBRdWVyeUZvcm1WYWx1ZTxUPixcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY2hhbmdlcyQgPSB0aGlzLl9jaGFuZ2VzJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VycmVudFZhbHVlJCA9IHRoaXMuX2NoYW5nZXMkLnBpcGUobWFwKCh7IGN1cnJlbnRWYWx1ZSB9KSA9PiBjdXJyZW50VmFsdWUpKTtcbiAgcmVhZG9ubHkgcHJldmlvdXNWYWx1ZSQgPSB0aGlzLl9jaGFuZ2VzJC5waXBlKG1hcCgoeyBwcmV2aW91c1ZhbHVlIH0pID0+IHByZXZpb3VzVmFsdWUpKTtcblxuICByZWFkb25seSBjaGFuZ2VzID0gdG9TaWduYWwodGhpcy5jaGFuZ2VzJCk7XG4gIHJlYWRvbmx5IGN1cnJlbnRWYWx1ZSA9IHRvU2lnbmFsKHRoaXMuY3VycmVudFZhbHVlJCk7XG4gIHJlYWRvbmx5IHByZXZpb3VzVmFsdWUgPSB0b1NpZ25hbCh0aGlzLnByZXZpb3VzVmFsdWUkKTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBhY3RpdmUgZmlsdGVycy5cbiAgICpcbiAgICogRXhjbHVkZXMgdGhlIGZvbGxvd2luZyBmaWVsZHMgYnkgZGVmYXVsdDpcbiAgICogLSBgcGFnZWBcbiAgICogLSBgc2tpcGBcbiAgICogLSBgdGFrZWBcbiAgICogLSBgbGltaXRgXG4gICAqIC0gYHNvcnRgXG4gICAqIC0gYHNvcnRCeWBcbiAgICogLSBgc29ydE9yZGVyYFxuICAgKiAtIGBxdWVyeWBcbiAgICogLSBgc2VhcmNoYFxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlRmlsdGVyQ291bnQkID0gdGhpcy5jaGFuZ2VzJC5waXBlKFxuICAgIG1hcChcbiAgICAgICh7IGN1cnJlbnRWYWx1ZSB9KSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhjdXJyZW50VmFsdWUpXG4gICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBpZiAoSUdOT1JFRF9GSUxURVJfQ09VTlRfRklFTERTLmluY2x1ZGVzKGtleSkgfHwgdGhpcy5fZmllbGRzW2tleV0/LmRhdGEuc2tpcEluRmlsdGVyQ291bnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RlZmF1bHRWYWx1ZShrZXksIHZhbHVlKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKHYpID0+IHYgPT09IGZhbHNlKS5sZW5ndGgsXG4gICAgKSxcbiAgKTtcblxuICBnZXQgY29udHJvbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcyQudmFsdWUuY3VycmVudFZhbHVlO1xuICB9XG5cbiAgZ2V0IGRlZmF1bHRGb3JtVmFsdWUoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuX2RlZmF1bHRWYWx1ZXMpLnJlZHVjZSgoYWNjLCBba2V5XSkgPT4ge1xuICAgICAgYWNjW2tleSBhcyBrZXlvZiBRdWVyeUZvcm1WYWx1ZTxUPl0gPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoa2V5KTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBRdWVyeUZvcm1WYWx1ZTxUPik7XG4gIH1cblxuICAvLyB3aXRoIHByZWZpeCBlZy4gcGFnZSBzaG91bGQgYmVjb21lICR7cHJlZml4fS1wYWdlXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2ZpZWxkczogVCxcbiAgICBwcml2YXRlIF9vcHRpb25zPzogUXVlcnlGb3JtT3B0aW9ucyxcbiAgKSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KFF1ZXJ5Rm9ybSk7XG5cbiAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHRoaXMuX2NsZWFudXAoKSk7XG4gIH1cblxuICBvYnNlcnZlKG9wdGlvbnM/OiBRdWVyeUZvcm1PYnNlcnZlT3B0aW9ucykge1xuICAgIGlmICh0aGlzLl9pc09ic2VydmluZykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUXVlcnlGb3JtLm9ic2VydmUoKSB3YXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLl9pc09ic2VydmluZyA9IHRydWU7XG5cbiAgICBpZiAob3B0aW9ucz8uc3luY09uTmF2aWdhdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGRpZENoYW5nZXMgPSB0aGlzLnNldEZvcm1WYWx1ZUZyb21VcmxRdWVyeVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLl9xdWVyeVBhcmFtcygpLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChkaWRDaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUZvcm1DaGFuZ2UodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVyZ2UoLi4uT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZHMpLm1hcCgoZmllbGQpID0+IGZpZWxkLmNvbnRyb2wudmFsdWVDaGFuZ2VzKSwgdGhpcy5fZGlkVmFsdWVDaGFuZ2VzJClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlRm9ybUNoYW5nZSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGxldCBjaGFuZ2VkRmllbGRzSW5MYXN0UmVzZXRMb29wOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50VW5pcXVlQ2hhbmdlZEZpZWxkczogc3RyaW5nW10gPSBbXTtcblxuICAgIHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogY2xvbmUodGhpcy5fbGFzdEZvcm1WYWx1ZSQudmFsdWUpLFxuICAgICAgICAgICAgY3VycmVudFZhbHVlOiBjbG9uZShjdXJyZW50VmFsdWUpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud3JpdGVUb1F1ZXJ5UGFyYW1zICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5fc3luY1ZpYVVybFF1ZXJ5UGFyYW1zKGN1cnJlbnRWYWx1ZSwgb3B0aW9ucz8ucmVwbGFjZVVybCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGlkUmVzZXRWYWx1ZXMgPSB0aGlzLl9za2lwTmV4dFJlc2V0c1xuICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgOiB0aGlzLl9oYW5kbGVRdWVyeUZvcm1SZXNldHMocHJldmlvdXNWYWx1ZSA/PyBudWxsLCBjdXJyZW50VmFsdWUpO1xuXG4gICAgICAgICAgdGhpcy5fc2tpcE5leHRSZXNldHMgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHMgPSBPYmplY3Qua2V5cyhjdXJyZW50VmFsdWUpLmZpbHRlcihcbiAgICAgICAgICAgIChrZXkpID0+ICFlcXVhbChwcmV2aW91c1ZhbHVlPy5ba2V5XSwgY3VycmVudFZhbHVlW2tleV0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoY2hhbmdlZEZpZWxkc0luTGFzdFJlc2V0TG9vcC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNoYW5nZWRGaWVsZHMucHVzaCguLi5jaGFuZ2VkRmllbGRzSW5MYXN0UmVzZXRMb29wKTtcbiAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNJbkxhc3RSZXNldExvb3AgPSBbXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZGlkUmVzZXRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpZFZhbHVlQ2hhbmdlcyQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNJbkxhc3RSZXNldExvb3AgPSBjaGFuZ2VkRmllbGRzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRVbmlxdWVDaGFuZ2VkRmllbGRzID0gWy4uLm5ldyBTZXQoY2hhbmdlZEZpZWxkcyldO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKGNoYW5nZWRGaWVsZHNJbkxhc3RSZXNldExvb3AubGVuZ3RoKSByZXR1cm4gb2YobnVsbCkucGlwZShtYXAoKCkgPT4gKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH0pKSk7XG5cbiAgICAgICAgICBjb25zdCBkZWJvdW5jZVZhbHVlcyA9IGN1cnJlbnRVbmlxdWVDaGFuZ2VkRmllbGRzLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2ZpZWxkc1trZXldO1xuXG4gICAgICAgICAgICBpZiAoIWZpZWxkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgaWYgKGZpZWxkLmRhdGEuZGlzYWJsZURlYm91bmNlSWZGYWxzeSA9PT0gdHJ1ZSAmJiAhY3VycmVudFZhbHVlW2tleV0pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmaWVsZC5kYXRhLmRlYm91bmNlID8/IG51bGw7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjdXJyZW50VW5pcXVlQ2hhbmdlZEZpZWxkcyA9IFtdO1xuXG4gICAgICAgICAgaWYgKGRlYm91bmNlVmFsdWVzLnNvbWUoKHYpID0+IHYgPT09IG51bGwpIHx8ICFkZWJvdW5jZVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKS5waXBlKG1hcCgoKSA9PiAoeyBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUgfSkpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzaG9ydGVzdERlYm91bmNlVGltZSA9IE1hdGgubWluKC4uLmRlYm91bmNlVmFsdWVzLmZpbHRlcigodik6IHYgaXMgbnVtYmVyID0+IHYgIT09IG51bGwpKTtcblxuICAgICAgICAgIHJldHVybiB0aW1lcihzaG9ydGVzdERlYm91bmNlVGltZSkucGlwZShtYXAoKCkgPT4gKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH0pKSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICBpZiAoY2hhbmdlZEZpZWxkc0luTGFzdFJlc2V0TG9vcC5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICAgIHRoaXMuX2NoYW5nZXMkLm5leHQoe1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogcHJldmlvdXNWYWx1ZSA/PyBudWxsLFxuICAgICAgICAgICAgY3VycmVudFZhbHVlOiBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnN5bmNPbk5hdmlnYXRpb24gIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9xdWVyeVBhcmFtQ2hhbmdlcyRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQpLFxuICAgICAgICAgIHRhcCgoY2hhbmdlcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlkVmFsdWVDaGFuZ2VzID0gdGhpcy5zZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMoeyBxdWVyeVBhcmFtczogY2hhbmdlcyB9KTtcblxuICAgICAgICAgICAgaWYgKGRpZFZhbHVlQ2hhbmdlcykge1xuICAgICAgICAgICAgICB0aGlzLl9kaWRWYWx1ZUNoYW5nZXMkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlUXVlcnlGb3JtUmVzZXRzKHByZXZpb3VzVmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+IHwgbnVsbCwgY3VycmVudFZhbHVlOiBRdWVyeUZvcm1WYWx1ZTxUPikge1xuICAgIGxldCBkaWRSZXNldFZhbHVlcyA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBmb3JtRmllbGRLZXkgaW4gdGhpcy5fZmllbGRzKSB7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2ZpZWxkc1tmb3JtRmllbGRLZXldO1xuXG4gICAgICBpZiAoIWZpZWxkKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgcmVzZXRzID0gZmllbGQuZGF0YS5pc1Jlc2V0Qnk7XG5cbiAgICAgIGlmICghcmVzZXRzKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgcmVzZXRDb25kaXRpb25LZXlzID0gQXJyYXkuaXNBcnJheShyZXNldHMpID8gcmVzZXRzIDogW3Jlc2V0c107XG5cbiAgICAgIGZvciAoY29uc3QgcmVzZXRDb25kaXRpb25LZXkgb2YgcmVzZXRDb25kaXRpb25LZXlzKSB7XG4gICAgICAgIGlmICghKHJlc2V0Q29uZGl0aW9uS2V5IGluIHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVGhlIGZpZWxkIFwiJHtyZXNldENvbmRpdGlvbktleX1cIiBpcyBub3QgZGVmaW5lZCBpbiB0aGUgUXVlcnlGb3JtLiBJcyBpdCBhIHR5cG8/YCwgdGhpcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJldmlvdXNWYWx1ZSAmJlxuICAgICAgICAgIGN1cnJlbnRWYWx1ZSAmJlxuICAgICAgICAgICFlcXVhbChwcmV2aW91c1ZhbHVlW3Jlc2V0Q29uZGl0aW9uS2V5XSwgY3VycmVudFZhbHVlW3Jlc2V0Q29uZGl0aW9uS2V5XSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlRm9yS2V5VG9SZXNldCA9IHRoaXMuX2dldERlZmF1bHRWYWx1ZShmb3JtRmllbGRLZXkpO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZUZvcktleVRvUmVzZXQgPSBjdXJyZW50VmFsdWVbZm9ybUZpZWxkS2V5XTtcblxuICAgICAgICAgIGlmIChlcXVhbChkZWZhdWx0VmFsdWVGb3JLZXlUb1Jlc2V0LCBjdXJyZW50VmFsdWVGb3JLZXlUb1Jlc2V0KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2Zvcm1GaWVsZEtleV0uc2V0VmFsdWUoZGVmYXVsdFZhbHVlRm9yS2V5VG9SZXNldCk7XG5cbiAgICAgICAgICBkaWRSZXNldFZhbHVlcyA9IHRydWU7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaWRSZXNldFZhbHVlcztcbiAgfVxuXG4gIHVub2JzZXJ2ZSgpIHtcbiAgICB0aGlzLl91bm9ic2VydmVUcmlnZ2VyJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2NsZWFudXAoKTtcbiAgfVxuXG4gIHNldEZvcm1WYWx1ZUZyb21VcmxRdWVyeVBhcmFtcyhvcHRpb25zOiB7IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KSB7XG4gICAgbGV0IGRpZFZhbHVlQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLnF1ZXJ5UGFyYW1zW3RoaXMuX3RyYW5zZm9ybUtleVRvUXVlcnlQYXJhbShrZXkpXTtcblxuICAgICAgY29uc3QgdmFsdWVEb2VzTm90RXhpc3QgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAodmFsdWVEb2VzTm90RXhpc3QpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCB2YWx1ZUdvdFJlbW92ZWQgPSB2YWx1ZSA9PT0gRVRfUFJPUEVSVFlfUkVNT1ZFRDtcblxuICAgICAgaWYgKHZhbHVlR290UmVtb3ZlZCkge1xuICAgICAgICBmaWVsZC5jb250cm9sLnNldFZhbHVlKHRoaXMuX2dldERlZmF1bHRWYWx1ZShrZXkpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIGRpZFZhbHVlQ2hhbmdlcyA9IHRydWU7XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBsZXQgZGVzZXJpYWxpemVkVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaWYgKGZpZWxkLmRhdGEucXVlcnlQYXJhbVRvVmFsdWVUcmFuc2Zvcm1Gbikge1xuICAgICAgICBkZXNlcmlhbGl6ZWRWYWx1ZSA9IGZpZWxkLmRhdGEucXVlcnlQYXJhbVRvVmFsdWVUcmFuc2Zvcm1Gbih2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKCFmaWVsZC5kYXRhLnNraXBBdXRvVHJhbnNmb3JtKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJc051bSA9IHRoaXMuX2dldERlZmF1bHRWYWx1ZShrZXkpID09PSAnbnVtYmVyJztcbiAgICAgICAgY29uc3QgdmFsdWVJc051bSA9ICFpc05hTihOdW1iZXIodmFsdWUpKTtcbiAgICAgICAgY29uc3QgdmFsdWVDb250YWluc1doaXRlc3BhY2UgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSAhPT0gdmFsdWU7XG4gICAgICAgIGNvbnN0IHZhbHVlSGFzTGVhZGluZ1plcm8gPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnN0YXJ0c1dpdGgoJzAnKTtcbiAgICAgICAgY29uc3QgdmFsdWVFbmRzV2l0aERvdCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuZW5kc1dpdGgoJy4nKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0SXNCb29sID0gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSkgPT09ICdib29sZWFuJztcbiAgICAgICAgY29uc3QgdmFsdWVJc0Jvb2wgPSB2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnZmFsc2UnO1xuXG4gICAgICAgIGlmIChkZWZhdWx0SXNOdW0gfHwgKHZhbHVlSXNOdW0gJiYgIXZhbHVlQ29udGFpbnNXaGl0ZXNwYWNlICYmICF2YWx1ZUhhc0xlYWRpbmdaZXJvICYmICF2YWx1ZUVuZHNXaXRoRG90KSkge1xuICAgICAgICAgIGRlc2VyaWFsaXplZFZhbHVlID0gdHJhbnNmb3JtVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGRlZmF1bHRJc0Jvb2wgfHwgdmFsdWVJc0Jvb2wpIHtcbiAgICAgICAgICBkZXNlcmlhbGl6ZWRWYWx1ZSA9IHRyYW5zZm9ybVRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWVJc0VxdWFsVG9DdXJyZW50ID0gZXF1YWwoZGVzZXJpYWxpemVkVmFsdWUsIGZpZWxkLmNvbnRyb2wudmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWVJc0VxdWFsVG9DdXJyZW50KSBjb250aW51ZTtcblxuICAgICAgZmllbGQuY29udHJvbC5zZXRWYWx1ZShkZXNlcmlhbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgZGlkVmFsdWVDaGFuZ2VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlkVmFsdWVDaGFuZ2VzO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+LCBvcHRpb25zPzogUXVlcnlGb3JtV3JpdGVPcHRpb25zKSB7XG4gICAgdGhpcy5fZm9ybS5fc2V0VmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnNraXBSZXNldHMpIHtcbiAgICAgIHRoaXMuX3NraXBOZXh0UmVzZXRzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwYXRjaFZhbHVlKHZhbHVlOiBQYXJ0aWFsPFF1ZXJ5Rm9ybVZhbHVlPFQ+Piwgb3B0aW9ucz86IFF1ZXJ5Rm9ybVdyaXRlT3B0aW9ucykge1xuICAgIHRoaXMuX2Zvcm0uX3BhdGNoVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnNraXBSZXNldHMpIHtcbiAgICAgIHRoaXMuX3NraXBOZXh0UmVzZXRzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXNldEZpZWxkVG9EZWZhdWx0KGtleToga2V5b2YgUXVlcnlGb3JtVmFsdWU8VD4sIG9wdGlvbnM/OiBRdWVyeUZvcm1Xcml0ZU9wdGlvbnMpIHtcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoa2V5IGFzIHN0cmluZyk7XG5cbiAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XS5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnNraXBSZXNldHMpIHtcbiAgICAgIHRoaXMuX3NraXBOZXh0UmVzZXRzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXNldEZpZWxkc1RvRGVmYXVsdChrZXlzOiAoa2V5b2YgUXVlcnlGb3JtVmFsdWU8VD4pW10sIG9wdGlvbnM/OiBRdWVyeUZvcm1Xcml0ZU9wdGlvbnMpIHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGtleXMucmVkdWNlKFxuICAgICAgKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUGFydGlhbDxRdWVyeUZvcm1WYWx1ZTxUPj4sXG4gICAgKTtcblxuICAgIHRoaXMucGF0Y2hWYWx1ZShkZWZhdWx0cyk7XG5cbiAgICBpZiAob3B0aW9ucz8uc2tpcFJlc2V0cykge1xuICAgICAgdGhpcy5fc2tpcE5leHRSZXNldHMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0QWxsRmllbGRzVG9EZWZhdWx0KG9wdGlvbnM/OiBRdWVyeUZvcm1Xcml0ZU9wdGlvbnMgJiB7IHNraXBGaWVsZHM/OiAoa2V5b2YgUXVlcnlGb3JtVmFsdWU8VD4pW10gfSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLl9maWVsZHMpIGFzIChrZXlvZiBRdWVyeUZvcm1WYWx1ZTxUPilbXTtcblxuICAgIGlmIChvcHRpb25zPy5za2lwRmllbGRzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBvcHRpb25zLnNraXBGaWVsZHMpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBrZXlzLmluZGV4T2Yoa2V5KTtcblxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAga2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNldEZpZWxkc1RvRGVmYXVsdChrZXlzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX2RlZmF1bHRWYWx1ZXNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiB2YWwuc3RhcnRzV2l0aChFVF9BUlJfUFJFRklYKSkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsLnNsaWNlKEVUX0FSUl9QUkVGSVgubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbCA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtS2V5VG9RdWVyeVBhcmFtKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLl9vcHRpb25zPy5xdWVyeVBhcmFtUHJlZml4KSByZXR1cm4ga2V5O1xuXG4gICAgY29uc3QgcHJlZml4ID1cbiAgICAgIHR5cGVvZiB0aGlzLl9vcHRpb25zPy5xdWVyeVBhcmFtUHJlZml4ID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHRoaXMuX29wdGlvbnMucXVlcnlQYXJhbVByZWZpeFxuICAgICAgICA6IHRoaXMuX29wdGlvbnMucXVlcnlQYXJhbVByZWZpeCgpO1xuXG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtrZXl9YDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzRGVmYXVsdFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gYCR7RVRfQVJSX1BSRUZJWH0ke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gIDogdmFsdWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSkgPT09IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwRm9ybUdyb3VwKCkge1xuICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSBhcyBRdWVyeUZvcm1Hcm91cENvbnRyb2xzPFQ+KSBhcyB1bmtub3duIGFzIFF1ZXJ5Rm9ybUdyb3VwO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgZ3JvdXAuYWRkQ29udHJvbChrZXksIGZpZWxkLmNvbnRyb2wpO1xuICAgIH1cblxuICAgIGdyb3VwLl9wYXRjaFZhbHVlID0gZ3JvdXAucGF0Y2hWYWx1ZTtcbiAgICBncm91cC5fc2V0VmFsdWUgPSBncm91cC5zZXRWYWx1ZTtcblxuICAgIGdyb3VwLnBhdGNoVmFsdWUgPSB0aGlzLnBhdGNoVmFsdWUuYmluZCh0aGlzKTtcbiAgICBncm91cC5zZXRWYWx1ZSA9IHRoaXMuc2V0VmFsdWUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBncm91cCBhcyB1bmtub3duIGFzIEZvcm1Hcm91cDxRdWVyeUZvcm1Hcm91cENvbnRyb2xzPFQ+PjtcbiAgfVxuXG4gIHByaXZhdGUgX2V4dHJhY3REZWZhdWx0VmFsdWVzKCkge1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9maWVsZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkLmRhdGEuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgPyBmaWVsZC5kYXRhLmRlZmF1bHRWYWx1ZSA6IGZpZWxkLmNvbnRyb2wudmFsdWU7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSBgJHtFVF9BUlJfUFJFRklYfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNWaWFVcmxRdWVyeVBhcmFtcyh2YWx1ZXM6IFF1ZXJ5Rm9ybVZhbHVlPFQ+LCByZXBsYWNlVXJsPzogYm9vbGVhbikge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0geyAuLi5jbG9uZSh0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykgfTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlcykpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1LZXkgPSB0aGlzLl90cmFuc2Zvcm1LZXlUb1F1ZXJ5UGFyYW0oa2V5KTtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZmllbGRzW2tleV07XG5cbiAgICAgIGlmICghZmllbGQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzRGVmYXVsdCA9IHRoaXMuX2lzRGVmYXVsdFZhbHVlKGtleSwgdmFsdWUpO1xuICAgICAgY29uc3Qgd3JpdGVEZWZhdWx0VG9VcmwgPSBmaWVsZC5kYXRhLmFwcGVuZERlZmF1bHRWYWx1ZVRvVXJsID09PSB0cnVlO1xuICAgICAgY29uc3Qgd3JpdGVUb1VybCA9IGZpZWxkLmRhdGEuYXBwZW5kVG9VcmwgIT09IGZhbHNlO1xuXG4gICAgICBpZiAoIXdyaXRlVG9VcmwgfHwgKGlzRGVmYXVsdCAmJiAhd3JpdGVEZWZhdWx0VG9VcmwpKSB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW3F1ZXJ5UGFyYW1LZXldID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXJhbXNbcXVlcnlQYXJhbUtleV0gPSBmaWVsZC5kYXRhLnZhbHVlVG9RdWVyeVBhcmFtVHJhbnNmb3JtRm5cbiAgICAgICAgICA/IGZpZWxkLmRhdGEudmFsdWVUb1F1ZXJ5UGFyYW1UcmFuc2Zvcm1Gbj8uKHZhbHVlKVxuICAgICAgICAgIDogdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICBxdWVyeVBhcmFtcyxcbiAgICAgICAgICByZXBsYWNlVXJsLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVGb3JtQ2hhbmdlKGZvcmNlT3ZlcndyaXRlID0gZmFsc2UpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsID0gY2xvbmUodGhpcy5fY3VycmVudEZvcm1WYWx1ZSQudmFsdWUpO1xuICAgIGNvbnN0IG5ld1ZhbCA9IGNsb25lKHRoaXMuX2Zvcm1WYWx1ZSk7XG5cbiAgICBpZiAoZXF1YWwoY3VycmVudFZhbCwgbmV3VmFsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmb3JjZU92ZXJ3cml0ZSkge1xuICAgICAgdGhpcy5fbGFzdEZvcm1WYWx1ZSQubmV4dChuZXdWYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sYXN0Rm9ybVZhbHVlJC5uZXh0KGN1cnJlbnRWYWwpO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLm5leHQobmV3VmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFudXAoKSB7XG4gICAgY29uc3QgcXVlcnlQYXJhbUtleXMgPSBPYmplY3Qua2V5cyh0aGlzLl9maWVsZHMpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbUtleXMucmVkdWNlKFxuICAgICAgKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGFjY1t0aGlzLl90cmFuc2Zvcm1LZXlUb1F1ZXJ5UGFyYW0oa2V5KV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKTtcbiAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsS0FBSyxFQUNMLGFBQWEsRUFDYixLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBVWhILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTNFLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyxNQUFNLE9BQU8sVUFBVTtJQUNyQixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFtQixJQUEwQjtRQUExQixTQUFJLEdBQUosSUFBSSxDQUFzQjtJQUFHLENBQUM7Q0FDbEQ7QUFFRCxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFN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Q0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNsQixjQUFjLENBQUMsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7b0JBQ3hCLFdBQVc7b0JBQ1gsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLG1CQUFtQixFQUFFLE9BQU87aUJBQzdCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBOZ1pvbmUsIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEVUX1BST1BFUlRZX1JFTU9WRUQsXG4gIGNsb25lLFxuICBjcmVhdGVEZXN0cm95LFxuICBlcXVhbCxcbiAgaW5qZWN0UXVlcnlQYXJhbUNoYW5nZXMsXG4gIGluamVjdFF1ZXJ5UGFyYW1zLFxufSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBtYXAsIG1lcmdlLCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFF1ZXJ5RmllbGRPcHRpb25zLFxuICBRdWVyeUZvcm1Hcm91cCxcbiAgUXVlcnlGb3JtR3JvdXBDb250cm9scyxcbiAgUXVlcnlGb3JtT2JzZXJ2ZU9wdGlvbnMsXG4gIFF1ZXJ5Rm9ybVZhbHVlLFxuICBRdWVyeUZvcm1WYWx1ZUV2ZW50LFxuICBRdWVyeUZvcm1Xcml0ZU9wdGlvbnMsXG59IGZyb20gJy4vcXVlcnktZm9ybS50eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1Ub0Jvb2xlYW4sIHRyYW5zZm9ybVRvTnVtYmVyIH0gZnJvbSAnLi9xdWVyeS1mb3JtLnV0aWxzJztcblxuY29uc3QgRVRfQVJSX1BSRUZJWCA9ICdFVF9BUlJfXyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUZpZWxkPFQ+IHtcbiAgZ2V0IGNvbnRyb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jb250cm9sO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRhdGE6IFF1ZXJ5RmllbGRPcHRpb25zPFQ+KSB7fVxufVxuXG5jb25zdCBJR05PUkVEX0ZJTFRFUl9DT1VOVF9GSUVMRFMgPSBbJ3BhZ2UnLCAnc2tpcCcsICd0YWtlJywgJ2xpbWl0JywgJ3NvcnQnLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdxdWVyeScsICdzZWFyY2gnXTtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1PcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgcHJlZml4IHRvIHVzZSBmb3IgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IGhhdmUgbXVsdGlwbGUgcXVlcnkgZm9ybXMgb24gdGhlIHNhbWUgcGFnZS5cbiAgICovXG4gIHF1ZXJ5UGFyYW1QcmVmaXg/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEFueVF1ZXJ5Rm9ybSA9IFF1ZXJ5Rm9ybTxhbnk+O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNsYXNzIFF1ZXJ5Rm9ybTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgUXVlcnlGaWVsZDxhbnk+Pj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdW5vYnNlcnZlVHJpZ2dlciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0VmFsdWVzID0gdGhpcy5fZXh0cmFjdERlZmF1bHRWYWx1ZXMoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaWRWYWx1ZUNoYW5nZXMkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIF9pc09ic2VydmluZyA9IGZhbHNlO1xuICBwcml2YXRlIF9za2lwTmV4dFJlc2V0cyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3F1ZXJ5UGFyYW1DaGFuZ2VzJCA9IHRvT2JzZXJ2YWJsZShpbmplY3RRdWVyeVBhcmFtQ2hhbmdlcygpKTtcbiAgcHJpdmF0ZSBfcXVlcnlQYXJhbXMgPSBpbmplY3RRdWVyeVBhcmFtcygpO1xuXG4gIC8qKlxuICAgKiBUaGUgYW5ndWxhciBmb3JtIGdyb3VwIHRoYXQgY29udGFpbnMgYWxsIHRoZSBmaWVsZHMuXG4gICAqXG4gICAqICoqRG8gbm90KiogdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgb24gdGhpcyBmb3JtIGdyb3VwOlxuICAgKiAtIGBzZXRWYWx1ZWA6IFVzZSBgUXVlcnlGb3JtLnNldFZhbHVlYCBpbnN0ZWFkLlxuICAgKiAtIGBwYXRjaFZhbHVlYDogVXNlIGBRdWVyeUZvcm0ucGF0Y2hWYWx1ZWAgaW5zdGVhZC5cbiAgICogLSBgdmFsdWVDaGFuZ2VzYDogVXNlIGBRdWVyeUZvcm0uY2hhbmdlcyRgIGluc3RlYWQuXG4gICAqIC0gYHZhbHVlYDogVXNlIGBRdWVyeUZvcm0udmFsdWVgIGluc3RlYWQuXG4gICAqIC0gYGNvbnRyb2xzYDogVXNlIGBRdWVyeUZvcm0uY29udHJvbHNgIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBmb3JtID0gdGhpcy5fc2V0dXBGb3JtR3JvdXAoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sYXN0Rm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlGb3JtVmFsdWU8VD4gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudEZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5Rm9ybVZhbHVlPFQ+Pih0aGlzLl9mb3JtVmFsdWUpO1xuXG4gIHByaXZhdGUgZ2V0IF9mb3JtVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIFF1ZXJ5Rm9ybVZhbHVlPFQ+O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2Zvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybSBhcyB1bmtub3duIGFzIFF1ZXJ5Rm9ybUdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5Rm9ybVZhbHVlRXZlbnQ8VD4+KHtcbiAgICBwcmV2aW91c1ZhbHVlOiBudWxsLFxuICAgIGN1cnJlbnRWYWx1ZTogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkgYXMgUXVlcnlGb3JtVmFsdWU8VD4sXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNoYW5nZXMkID0gdGhpcy5fY2hhbmdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1cnJlbnRWYWx1ZSQgPSB0aGlzLl9jaGFuZ2VzJC5waXBlKG1hcCgoeyBjdXJyZW50VmFsdWUgfSkgPT4gY3VycmVudFZhbHVlKSk7XG4gIHJlYWRvbmx5IHByZXZpb3VzVmFsdWUkID0gdGhpcy5fY2hhbmdlcyQucGlwZShtYXAoKHsgcHJldmlvdXNWYWx1ZSB9KSA9PiBwcmV2aW91c1ZhbHVlKSk7XG5cbiAgcmVhZG9ubHkgY2hhbmdlcyA9IHRvU2lnbmFsKHRoaXMuY2hhbmdlcyQpO1xuICByZWFkb25seSBjdXJyZW50VmFsdWUgPSB0b1NpZ25hbCh0aGlzLmN1cnJlbnRWYWx1ZSQpO1xuICByZWFkb25seSBwcmV2aW91c1ZhbHVlID0gdG9TaWduYWwodGhpcy5wcmV2aW91c1ZhbHVlJCk7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgYWN0aXZlIGZpbHRlcnMuXG4gICAqXG4gICAqIEV4Y2x1ZGVzIHRoZSBmb2xsb3dpbmcgZmllbGRzIGJ5IGRlZmF1bHQ6XG4gICAqIC0gYHBhZ2VgXG4gICAqIC0gYHNraXBgXG4gICAqIC0gYHRha2VgXG4gICAqIC0gYGxpbWl0YFxuICAgKiAtIGBzb3J0YFxuICAgKiAtIGBzb3J0QnlgXG4gICAqIC0gYHNvcnRPcmRlcmBcbiAgICogLSBgcXVlcnlgXG4gICAqIC0gYHNlYXJjaGBcbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZUZpbHRlckNvdW50JCA9IHRoaXMuY2hhbmdlcyQucGlwZShcbiAgICBtYXAoXG4gICAgICAoeyBjdXJyZW50VmFsdWUgfSkgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY3VycmVudFZhbHVlKVxuICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKElHTk9SRURfRklMVEVSX0NPVU5UX0ZJRUxEUy5pbmNsdWRlcyhrZXkpIHx8IHRoaXMuX2ZpZWxkc1trZXldPy5kYXRhLnNraXBJbkZpbHRlckNvdW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEZWZhdWx0VmFsdWUoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ID09PSBmYWxzZSkubGVuZ3RoLFxuICAgICksXG4gICk7XG5cbiAgZ2V0IGNvbnRyb2xzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZXMkLnZhbHVlLmN1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIGdldCBkZWZhdWx0Rm9ybVZhbHVlKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLl9kZWZhdWx0VmFsdWVzKS5yZWR1Y2UoKGFjYywgW2tleV0pID0+IHtcbiAgICAgIGFjY1trZXkgYXMga2V5b2YgUXVlcnlGb3JtVmFsdWU8VD5dID0gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSk7XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUXVlcnlGb3JtVmFsdWU8VD4pO1xuICB9XG5cbiAgLy8gd2l0aCBwcmVmaXggZWcuIHBhZ2Ugc2hvdWxkIGJlY29tZSAke3ByZWZpeH0tcGFnZVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9maWVsZHM6IFQsXG4gICAgcHJpdmF0ZSBfb3B0aW9ucz86IFF1ZXJ5Rm9ybU9wdGlvbnMsXG4gICkge1xuICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChRdWVyeUZvcm0pO1xuXG4gICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB0aGlzLl9jbGVhbnVwKCkpO1xuICB9XG5cbiAgb2JzZXJ2ZShvcHRpb25zPzogUXVlcnlGb3JtT2JzZXJ2ZU9wdGlvbnMpIHtcbiAgICBpZiAodGhpcy5faXNPYnNlcnZpbmcpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1F1ZXJ5Rm9ybS5vYnNlcnZlKCkgd2FzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5faXNPYnNlcnZpbmcgPSB0cnVlO1xuXG4gICAgaWYgKG9wdGlvbnM/LnN5bmNPbk5hdmlnYXRpb24gIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBkaWRDaGFuZ2VzID0gdGhpcy5zZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMoe1xuICAgICAgICBxdWVyeVBhcmFtczogdGhpcy5fcXVlcnlQYXJhbXMoKSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZGlkQ2hhbmdlcykge1xuICAgICAgICB0aGlzLl9oYW5kbGVGb3JtQ2hhbmdlKHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lcmdlKC4uLk9iamVjdC52YWx1ZXModGhpcy5fZmllbGRzKS5tYXAoKGZpZWxkKSA9PiBmaWVsZC5jb250cm9sLnZhbHVlQ2hhbmdlcyksIHRoaXMuX2RpZFZhbHVlQ2hhbmdlcyQpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUZvcm1DaGFuZ2UoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91bm9ic2VydmVUcmlnZ2VyJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBsZXQgY2hhbmdlZEZpZWxkc0luTGFzdFJlc2V0TG9vcDogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgY3VycmVudFVuaXF1ZUNoYW5nZWRGaWVsZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICB0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWU6IGNsb25lKHRoaXMuX2xhc3RGb3JtVmFsdWUkLnZhbHVlKSxcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogY2xvbmUoY3VycmVudFZhbHVlKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnM/LndyaXRlVG9RdWVyeVBhcmFtcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N5bmNWaWFVcmxRdWVyeVBhcmFtcyhjdXJyZW50VmFsdWUsIG9wdGlvbnM/LnJlcGxhY2VVcmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRpZFJlc2V0VmFsdWVzID0gdGhpcy5fc2tpcE5leHRSZXNldHNcbiAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgIDogdGhpcy5faGFuZGxlUXVlcnlGb3JtUmVzZXRzKHByZXZpb3VzVmFsdWUgPz8gbnVsbCwgY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgIHRoaXMuX3NraXBOZXh0UmVzZXRzID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBjaGFuZ2VkRmllbGRzID0gT2JqZWN0LmtleXMoY3VycmVudFZhbHVlKS5maWx0ZXIoXG4gICAgICAgICAgICAoa2V5KSA9PiAhZXF1YWwocHJldmlvdXNWYWx1ZT8uW2tleV0sIGN1cnJlbnRWYWx1ZVtrZXldKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGNoYW5nZWRGaWVsZHNJbkxhc3RSZXNldExvb3AubGVuZ3RoKSB7XG4gICAgICAgICAgICBjaGFuZ2VkRmllbGRzLnB1c2goLi4uY2hhbmdlZEZpZWxkc0luTGFzdFJlc2V0TG9vcCk7XG4gICAgICAgICAgICBjaGFuZ2VkRmllbGRzSW5MYXN0UmVzZXRMb29wID0gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRpZFJlc2V0VmFsdWVzKSB7XG4gICAgICAgICAgICB0aGlzLl9kaWRWYWx1ZUNoYW5nZXMkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICBjaGFuZ2VkRmllbGRzSW5MYXN0UmVzZXRMb29wID0gY2hhbmdlZEZpZWxkcztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50VW5pcXVlQ2hhbmdlZEZpZWxkcyA9IFsuLi5uZXcgU2V0KGNoYW5nZWRGaWVsZHMpXTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoeyBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUgfSkgPT4ge1xuICAgICAgICAgIGlmIChjaGFuZ2VkRmllbGRzSW5MYXN0UmVzZXRMb29wLmxlbmd0aCkgcmV0dXJuIG9mKG51bGwpLnBpcGUobWFwKCgpID0+ICh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSkpO1xuXG4gICAgICAgICAgY29uc3QgZGVib3VuY2VWYWx1ZXMgPSBjdXJyZW50VW5pcXVlQ2hhbmdlZEZpZWxkcy5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9maWVsZHNba2V5XTtcblxuICAgICAgICAgICAgaWYgKCFmaWVsZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5kYXRhLmRpc2FibGVEZWJvdW5jZUlmRmFsc3kgPT09IHRydWUgJiYgIWN1cnJlbnRWYWx1ZVtrZXldKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmllbGQuZGF0YS5kZWJvdW5jZSA/PyBudWxsO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY3VycmVudFVuaXF1ZUNoYW5nZWRGaWVsZHMgPSBbXTtcblxuICAgICAgICAgIGlmIChkZWJvdW5jZVZhbHVlcy5zb21lKCh2KSA9PiB2ID09PSBudWxsKSB8fCAhZGVib3VuY2VWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCkucGlwZShtYXAoKCkgPT4gKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH0pKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2hvcnRlc3REZWJvdW5jZVRpbWUgPSBNYXRoLm1pbiguLi5kZWJvdW5jZVZhbHVlcy5maWx0ZXIoKHYpOiB2IGlzIG51bWJlciA9PiB2ICE9PSBudWxsKSk7XG5cbiAgICAgICAgICByZXR1cm4gdGltZXIoc2hvcnRlc3REZWJvdW5jZVRpbWUpLnBpcGUobWFwKCgpID0+ICh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKGNoYW5nZWRGaWVsZHNJbkxhc3RSZXNldExvb3AubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgICB0aGlzLl9jaGFuZ2VzJC5uZXh0KHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWU6IHByZXZpb3VzVmFsdWUgPz8gbnVsbCxcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogY3VycmVudFZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChvcHRpb25zPy5zeW5jT25OYXZpZ2F0aW9uICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fcXVlcnlQYXJhbUNoYW5nZXMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgICAgICB0YXAoKGNoYW5nZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRpZFZhbHVlQ2hhbmdlcyA9IHRoaXMuc2V0Rm9ybVZhbHVlRnJvbVVybFF1ZXJ5UGFyYW1zKHsgcXVlcnlQYXJhbXM6IGNoYW5nZXMgfSk7XG5cbiAgICAgICAgICAgIGlmIChkaWRWYWx1ZUNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5fZGlkVmFsdWVDaGFuZ2VzJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVF1ZXJ5Rm9ybVJlc2V0cyhwcmV2aW91c1ZhbHVlOiBRdWVyeUZvcm1WYWx1ZTxUPiB8IG51bGwsIGN1cnJlbnRWYWx1ZTogUXVlcnlGb3JtVmFsdWU8VD4pIHtcbiAgICBsZXQgZGlkUmVzZXRWYWx1ZXMgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgZm9ybUZpZWxkS2V5IGluIHRoaXMuX2ZpZWxkcykge1xuICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9maWVsZHNbZm9ybUZpZWxkS2V5XTtcblxuICAgICAgaWYgKCFmaWVsZCkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHJlc2V0cyA9IGZpZWxkLmRhdGEuaXNSZXNldEJ5O1xuXG4gICAgICBpZiAoIXJlc2V0cykgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHJlc2V0Q29uZGl0aW9uS2V5cyA9IEFycmF5LmlzQXJyYXkocmVzZXRzKSA/IHJlc2V0cyA6IFtyZXNldHNdO1xuXG4gICAgICBmb3IgKGNvbnN0IHJlc2V0Q29uZGl0aW9uS2V5IG9mIHJlc2V0Q29uZGl0aW9uS2V5cykge1xuICAgICAgICBpZiAoIShyZXNldENvbmRpdGlvbktleSBpbiB0aGlzLl9maWVsZHMpKSB7XG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFRoZSBmaWVsZCBcIiR7cmVzZXRDb25kaXRpb25LZXl9XCIgaXMgbm90IGRlZmluZWQgaW4gdGhlIFF1ZXJ5Rm9ybS4gSXMgaXQgYSB0eXBvP2AsIHRoaXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXZpb3VzVmFsdWUgJiZcbiAgICAgICAgICBjdXJyZW50VmFsdWUgJiZcbiAgICAgICAgICAhZXF1YWwocHJldmlvdXNWYWx1ZVtyZXNldENvbmRpdGlvbktleV0sIGN1cnJlbnRWYWx1ZVtyZXNldENvbmRpdGlvbktleV0pXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoZm9ybUZpZWxkS2V5KTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVGb3JLZXlUb1Jlc2V0ID0gY3VycmVudFZhbHVlW2Zvcm1GaWVsZEtleV07XG5cbiAgICAgICAgICBpZiAoZXF1YWwoZGVmYXVsdFZhbHVlRm9yS2V5VG9SZXNldCwgY3VycmVudFZhbHVlRm9yS2V5VG9SZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tmb3JtRmllbGRLZXldLnNldFZhbHVlKGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQpO1xuXG4gICAgICAgICAgZGlkUmVzZXRWYWx1ZXMgPSB0cnVlO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlkUmVzZXRWYWx1ZXM7XG4gIH1cblxuICB1bm9ic2VydmUoKSB7XG4gICAgdGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgICB0aGlzLl9jbGVhbnVwKCk7XG4gIH1cblxuICBzZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMob3B0aW9uczogeyBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkge1xuICAgIGxldCBkaWRWYWx1ZUNoYW5nZXMgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9ucy5xdWVyeVBhcmFtc1t0aGlzLl90cmFuc2Zvcm1LZXlUb1F1ZXJ5UGFyYW0oa2V5KV07XG5cbiAgICAgIGNvbnN0IHZhbHVlRG9lc05vdEV4aXN0ID0gdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHZhbHVlRG9lc05vdEV4aXN0KSBjb250aW51ZTtcblxuICAgICAgY29uc3QgdmFsdWVHb3RSZW1vdmVkID0gdmFsdWUgPT09IEVUX1BST1BFUlRZX1JFTU9WRUQ7XG5cbiAgICAgIGlmICh2YWx1ZUdvdFJlbW92ZWQpIHtcbiAgICAgICAgZmllbGQuY29udHJvbC5zZXRWYWx1ZSh0aGlzLl9nZXREZWZhdWx0VmFsdWUoa2V5KSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICBkaWRWYWx1ZUNoYW5nZXMgPSB0cnVlO1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbGV0IGRlc2VyaWFsaXplZFZhbHVlID0gdmFsdWU7XG5cbiAgICAgIGlmIChmaWVsZC5kYXRhLnF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4pIHtcbiAgICAgICAgZGVzZXJpYWxpemVkVmFsdWUgPSBmaWVsZC5kYXRhLnF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4odmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghZmllbGQuZGF0YS5za2lwQXV0b1RyYW5zZm9ybSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0SXNOdW0gPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoa2V5KSA9PT0gJ251bWJlcic7XG4gICAgICAgIGNvbnN0IHZhbHVlSXNOdW0gPSAhaXNOYU4oTnVtYmVyKHZhbHVlKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlQ29udGFpbnNXaGl0ZXNwYWNlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgIT09IHZhbHVlO1xuICAgICAgICBjb25zdCB2YWx1ZUhhc0xlYWRpbmdaZXJvID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCcwJyk7XG4gICAgICAgIGNvbnN0IHZhbHVlRW5kc1dpdGhEb3QgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmVuZHNXaXRoKCcuJyk7XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdElzQm9vbCA9IHRoaXMuX2dldERlZmF1bHRWYWx1ZShrZXkpID09PSAnYm9vbGVhbic7XG4gICAgICAgIGNvbnN0IHZhbHVlSXNCb29sID0gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJztcblxuICAgICAgICBpZiAoZGVmYXVsdElzTnVtIHx8ICh2YWx1ZUlzTnVtICYmICF2YWx1ZUNvbnRhaW5zV2hpdGVzcGFjZSAmJiAhdmFsdWVIYXNMZWFkaW5nWmVybyAmJiAhdmFsdWVFbmRzV2l0aERvdCkpIHtcbiAgICAgICAgICBkZXNlcmlhbGl6ZWRWYWx1ZSA9IHRyYW5zZm9ybVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChkZWZhdWx0SXNCb29sIHx8IHZhbHVlSXNCb29sKSB7XG4gICAgICAgICAgZGVzZXJpYWxpemVkVmFsdWUgPSB0cmFuc2Zvcm1Ub0Jvb2xlYW4odmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlSXNFcXVhbFRvQ3VycmVudCA9IGVxdWFsKGRlc2VyaWFsaXplZFZhbHVlLCBmaWVsZC5jb250cm9sLnZhbHVlKTtcblxuICAgICAgaWYgKHZhbHVlSXNFcXVhbFRvQ3VycmVudCkgY29udGludWU7XG5cbiAgICAgIGZpZWxkLmNvbnRyb2wuc2V0VmFsdWUoZGVzZXJpYWxpemVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIGRpZFZhbHVlQ2hhbmdlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZFZhbHVlQ2hhbmdlcztcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBRdWVyeUZvcm1WYWx1ZTxUPiwgb3B0aW9ucz86IFF1ZXJ5Rm9ybVdyaXRlT3B0aW9ucykge1xuICAgIHRoaXMuX2Zvcm0uX3NldFZhbHVlKHZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmIChvcHRpb25zPy5za2lwUmVzZXRzKSB7XG4gICAgICB0aGlzLl9za2lwTmV4dFJlc2V0cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcGF0Y2hWYWx1ZSh2YWx1ZTogUGFydGlhbDxRdWVyeUZvcm1WYWx1ZTxUPj4sIG9wdGlvbnM/OiBRdWVyeUZvcm1Xcml0ZU9wdGlvbnMpIHtcbiAgICB0aGlzLl9mb3JtLl9wYXRjaFZhbHVlKHZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmIChvcHRpb25zPy5za2lwUmVzZXRzKSB7XG4gICAgICB0aGlzLl9za2lwTmV4dFJlc2V0cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRGaWVsZFRvRGVmYXVsdChrZXk6IGtleW9mIFF1ZXJ5Rm9ybVZhbHVlPFQ+LCBvcHRpb25zPzogUXVlcnlGb3JtV3JpdGVPcHRpb25zKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSBhcyBzdHJpbmcpO1xuXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcblxuICAgIGlmIChvcHRpb25zPy5za2lwUmVzZXRzKSB7XG4gICAgICB0aGlzLl9za2lwTmV4dFJlc2V0cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRGaWVsZHNUb0RlZmF1bHQoa2V5czogKGtleW9mIFF1ZXJ5Rm9ybVZhbHVlPFQ+KVtdLCBvcHRpb25zPzogUXVlcnlGb3JtV3JpdGVPcHRpb25zKSB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBrZXlzLnJlZHVjZShcbiAgICAgIChhY2MsIGtleSkgPT4ge1xuICAgICAgICBhY2Nba2V5XSA9IHRoaXMuX2dldERlZmF1bHRWYWx1ZShrZXkgYXMgc3RyaW5nKTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFBhcnRpYWw8UXVlcnlGb3JtVmFsdWU8VD4+LFxuICAgICk7XG5cbiAgICB0aGlzLnBhdGNoVmFsdWUoZGVmYXVsdHMpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnNraXBSZXNldHMpIHtcbiAgICAgIHRoaXMuX3NraXBOZXh0UmVzZXRzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXNldEFsbEZpZWxkc1RvRGVmYXVsdChvcHRpb25zPzogUXVlcnlGb3JtV3JpdGVPcHRpb25zICYgeyBza2lwRmllbGRzPzogKGtleW9mIFF1ZXJ5Rm9ybVZhbHVlPFQ+KVtdIH0pIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5fZmllbGRzKSBhcyAoa2V5b2YgUXVlcnlGb3JtVmFsdWU8VD4pW107XG5cbiAgICBpZiAob3B0aW9ucz8uc2tpcEZpZWxkcykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Ygb3B0aW9ucy5za2lwRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0ga2V5cy5pbmRleE9mKGtleSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGtleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVzZXRGaWVsZHNUb0RlZmF1bHQoa2V5cywgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXREZWZhdWx0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLl9kZWZhdWx0VmFsdWVzW2tleV07XG5cbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdmFsLnN0YXJ0c1dpdGgoRVRfQVJSX1BSRUZJWCkpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbC5zbGljZShFVF9BUlJfUFJFRklYLmxlbmd0aCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHZhbCgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWwgPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYW5zZm9ybUtleVRvUXVlcnlQYXJhbShrZXk6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5fb3B0aW9ucz8ucXVlcnlQYXJhbVByZWZpeCkgcmV0dXJuIGtleTtcblxuICAgIGNvbnN0IHByZWZpeCA9XG4gICAgICB0eXBlb2YgdGhpcy5fb3B0aW9ucz8ucXVlcnlQYXJhbVByZWZpeCA9PT0gJ3N0cmluZydcbiAgICAgICAgPyB0aGlzLl9vcHRpb25zLnF1ZXJ5UGFyYW1QcmVmaXhcbiAgICAgICAgOiB0aGlzLl9vcHRpb25zLnF1ZXJ5UGFyYW1QcmVmaXgoKTtcblxuICAgIHJldHVybiBgJHtwcmVmaXh9LSR7a2V5fWA7XG4gIH1cblxuICBwcml2YXRlIF9pc0RlZmF1bHRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IGAke0VUX0FSUl9QUkVGSVh9JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCA6IHZhbHVlO1xuXG4gICAgcmV0dXJuIHRoaXMuX2dldERlZmF1bHRWYWx1ZShrZXkpID09PSBub3JtYWxpemVkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cEZvcm1Hcm91cCgpIHtcbiAgICBjb25zdCBncm91cCA9IG5ldyBGb3JtR3JvdXAoe30gYXMgUXVlcnlGb3JtR3JvdXBDb250cm9sczxUPikgYXMgdW5rbm93biBhcyBRdWVyeUZvcm1Hcm91cDtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGdyb3VwLmFkZENvbnRyb2woa2V5LCBmaWVsZC5jb250cm9sKTtcbiAgICB9XG5cbiAgICBncm91cC5fcGF0Y2hWYWx1ZSA9IGdyb3VwLnBhdGNoVmFsdWU7XG4gICAgZ3JvdXAuX3NldFZhbHVlID0gZ3JvdXAuc2V0VmFsdWU7XG5cbiAgICBncm91cC5wYXRjaFZhbHVlID0gdGhpcy5wYXRjaFZhbHVlLmJpbmQodGhpcyk7XG4gICAgZ3JvdXAuc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZ3JvdXAgYXMgdW5rbm93biBhcyBGb3JtR3JvdXA8UXVlcnlGb3JtR3JvdXBDb250cm9sczxUPj47XG4gIH1cblxuICBwcml2YXRlIF9leHRyYWN0RGVmYXVsdFZhbHVlcygpIHtcbiAgICBjb25zdCBkZWZhdWx0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZC5kYXRhLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gZmllbGQuZGF0YS5kZWZhdWx0VmFsdWUgOiBmaWVsZC5jb250cm9sLnZhbHVlO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1trZXldID0gYCR7RVRfQVJSX1BSRUZJWH0ke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jVmlhVXJsUXVlcnlQYXJhbXModmFsdWVzOiBRdWVyeUZvcm1WYWx1ZTxUPiwgcmVwbGFjZVVybD86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgLi4uY2xvbmUodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpIH07XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXMpKSB7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtS2V5ID0gdGhpcy5fdHJhbnNmb3JtS2V5VG9RdWVyeVBhcmFtKGtleSk7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2ZpZWxkc1trZXldO1xuXG4gICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0RlZmF1bHQgPSB0aGlzLl9pc0RlZmF1bHRWYWx1ZShrZXksIHZhbHVlKTtcbiAgICAgIGNvbnN0IHdyaXRlRGVmYXVsdFRvVXJsID0gZmllbGQuZGF0YS5hcHBlbmREZWZhdWx0VmFsdWVUb1VybCA9PT0gdHJ1ZTtcbiAgICAgIGNvbnN0IHdyaXRlVG9VcmwgPSBmaWVsZC5kYXRhLmFwcGVuZFRvVXJsICE9PSBmYWxzZTtcblxuICAgICAgaWYgKCF3cml0ZVRvVXJsIHx8IChpc0RlZmF1bHQgJiYgIXdyaXRlRGVmYXVsdFRvVXJsKSkge1xuICAgICAgICBxdWVyeVBhcmFtc1txdWVyeVBhcmFtS2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW3F1ZXJ5UGFyYW1LZXldID0gZmllbGQuZGF0YS52YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuXG4gICAgICAgICAgPyBmaWVsZC5kYXRhLnZhbHVlVG9RdWVyeVBhcmFtVHJhbnNmb3JtRm4/Lih2YWx1ZSlcbiAgICAgICAgICA6IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgcmVwbGFjZVVybCxcbiAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlRm9ybUNoYW5nZShmb3JjZU92ZXJ3cml0ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3VycmVudFZhbCA9IGNsb25lKHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnZhbHVlKTtcbiAgICBjb25zdCBuZXdWYWwgPSBjbG9uZSh0aGlzLl9mb3JtVmFsdWUpO1xuXG4gICAgaWYgKGVxdWFsKGN1cnJlbnRWYWwsIG5ld1ZhbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZm9yY2VPdmVyd3JpdGUpIHtcbiAgICAgIHRoaXMuX2xhc3RGb3JtVmFsdWUkLm5leHQobmV3VmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGFzdEZvcm1WYWx1ZSQubmV4dChjdXJyZW50VmFsKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJC5uZXh0KG5ld1ZhbCk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhbnVwKCkge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1LZXlzID0gT2JqZWN0LmtleXModGhpcy5fZmllbGRzKTtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1LZXlzLnJlZHVjZShcbiAgICAgIChhY2MsIGtleSkgPT4ge1xuICAgICAgICBhY2NbdGhpcy5fdHJhbnNmb3JtS2V5VG9RdWVyeVBhcmFtKGtleSldID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICk7XG4gICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICBxdWVyeVBhcmFtcyxcbiAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBRdWVyeUZpZWxkIH0gZnJvbSAnLi9xdWVyeS1mb3JtJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZpZWxkT3B0aW9uczxUID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZpZWxkLlxuICAgKiBXaWxsIGJlIHNldCB0byB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgZm9ybSBjb250cm9sIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogRGVib3VuY2UgdGltZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICBkZWJvdW5jZT86IG51bWJlcjtcblxuICAvKipcbiAgICogIFdoZXRoZXIgdGhlIGRlYm91bmNlIHNob3VsZCBub3QgYmUgYXBwbGllZCBpZiB0aGUgdmFsdWUgaXMgZmFsc3kuXG4gICAqICBUaGlzIGlzIHVzZWZ1bCBmb3IgZmllbGRzIHRoYXQgY2FuIGJlIGNsZWFyZWQgbGlrZSBhIHNlYXJjaCBmaWVsZC5cbiAgICpcbiAgICogIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRGVib3VuY2VJZkZhbHN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCBmb3IgdGhlIGZpZWxkLlxuICAgKi9cbiAgY29udHJvbDogRm9ybUNvbnRyb2w8VCB8IG51bGw+O1xuXG4gIC8qKlxuICAgKiBBcHBlbmQgdGhlIGZpZWxkJ3MgdmFsdWUgdG8gdGhlIHVybC5cbiAgICpcbiAgICogVGhlIGZpZWxkIHdvbnQgYmUgYXBwZW5kZWQgdG8gdGhlIHVybCBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOlxuICAgKiAtIEl0IGlzIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCBgYXBwZW5kRGVmYXVsdFZhbHVlVG9VcmxgIGlzIGBmYWxzZWBcbiAgICogLSBJdCBpcyBhbiBlbXB0eSBzdHJpbmdcbiAgICogLSBJdCBpcyBgbnVsbGBcbiAgICogLSBJdCBpcyBgdW5kZWZpbmVkYFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhcHBlbmRUb1VybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFwcGVuZCB0aGUgZmllbGQncyB2YWx1ZSB0byB0aGUgdXJsIGV2ZW4gaWYgaXQgaXMgdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAqIFdpbGwgYmUgaWdub3JlZCBpZiBgYXBwZW5kVG9VcmxgIGlzIGBmYWxzZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhcHBlbmREZWZhdWx0VmFsdWVUb1VybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBmaWVsZCdzIHZhbHVlIHRvIHRoZSBkZWZhdWx0IHZhbHVlIGlmIG9uZSBvciBtb3JlIG9mIHRoZSBzcGVjaWZpZWQgZmllbGRzIGFyZSBjaGFuZ2VkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBHaXZlbiB0aGlzIGZpZWxkIGlzIGEgYHBhZ2VgIGZpZWxkLCB0aGUgZmllbGQgd2lsbCBiZSByZXNldCBpZiB0aGUgYGxpbWl0YCwgYHF1ZXJ5YCBvciBgc2VhcmNoYCBmaWVsZHMgYXJlIGNoYW5nZWQuXG4gICAqIFsnbGltaXQnLCAncXVlcnknLCAnc2VhcmNoJ11cbiAgICovXG4gIGlzUmVzZXRCeT86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBzaG91bGQgY2hhbmdlIHRoZSBjb3VudCBvZiBjdXJyZW50IGFjdGl2ZSBmaWx0ZXJzLlxuICAgKlxuICAgKiBXaWxsIGJlIGB0cnVlYCBmb3IgdGhlc2UgY29tbW9uIGZpZWxkczpcbiAgICogLSBgcGFnZWBcbiAgICogLSBgc2tpcGBcbiAgICogLSBgdGFrZWBcbiAgICogLSBgbGltaXRgXG4gICAqIC0gYHNvcnRgXG4gICAqIC0gYHNvcnRCeWBcbiAgICogLSBgc29ydE9yZGVyYFxuICAgKiAtIGBxdWVyeWBcbiAgICogLSBgc2VhcmNoYFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcEluRmlsdGVyQ291bnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgZmllbGQncyBzdHJpbmcgdmFsdWUgaXMgdHJhbnNmb3JtZWQgdG8gaXQncyBtYXRjaGluZyBwcmltaXRpdmUgdHlwZS5cbiAgICogTWVhbmluZyB0aGF0IGEgc3RyaW5nIGAndHJ1ZSdgIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gYSBib29sZWFuIGB0cnVlYCBhbmQgYSBzdHJpbmcgYCc1J2Agd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byBhIG51bWJlciBgNWAuXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIGB0cnVlYCwgdGhlIGZpZWxkJ3MgdmFsdWUgd2lsbCBub3QgYmUgdHJhbnNmb3JtZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBza2lwQXV0b1RyYW5zZm9ybT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0cmFuc2Zvcm1zIHRoZSB0aGUgdmFsdWUgZ290dGVuIGZyb20gdGhlIHVybCBxdWVyeSBwYXJhbXMgdG8gYSB2YWx1ZSByZXF1aXJlZCBieSB0aGUgZmllbGQuXG4gICAqIEUuZy4gZm9yIGEgbnVtYmVyIGZpZWxkLCB0aGUgdmFsdWUgZnJvbSB0aGUgdXJsIHF1ZXJ5IHBhcmFtcyBpcyBhIHN0cmluZywgYnV0IHRoZSBmaWVsZCByZXF1aXJlcyBhIG51bWJlci5cbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBjb21tb24gdHJhbnNmb3JtYXRpb25zIGFyZSBhbHJlYWR5IGltcGxlbWVudGVkOlxuICAgKiAtIGB0cmFuc2Zvcm1Ub1N0cmluZ2BcbiAgICogLSBgdHJhbnNmb3JtVG9TdHJpbmdBcnJheWBcbiAgICogLSBgdHJhbnNmb3JtVG9OdW1iZXJgXG4gICAqIC0gYHRyYW5zZm9ybVRvTnVtYmVyQXJyYXlgXG4gICAqIC0gYHRyYW5zZm9ybVRvQm9vbGVhbmBcbiAgICogLSBgdHJhbnNmb3JtVG9Cb29sZWFuQXJyYXlgXG4gICAqIC0gYHRyYW5zZm9ybVRvRGF0ZWAgKGV4cGVjdHMgYSBzdHJpbmcgaW4gdGhlIGRlZmF1bHQganMgZm9ybWF0KVxuICAgKiAtIGB0cmFuc2Zvcm1Ub0RhdGVBcnJheWAgKGV4cGVjdHMgc3RyaW5ncyBpbiB0aGUgZGVmYXVsdCBqcyBmb3JtYXQpXG4gICAqIC0gYHRyYW5zZm9ybVRvU29ydGAgKGV4cGVjdHMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBgZmllbGQ6ZGlyZWN0aW9uYClcbiAgICovXG4gIHF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4/OiAodmFsOiB1bmtub3duKSA9PiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHRyYW5zZm9ybXMgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCB0byBhIHZhbHVlIHRoYXQgY2FuIGJlIGFwcGVuZGVkIHRvIHRoZSB1cmwgcXVlcnkgcGFyYW1zLlxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGNvbW1vbiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFscmVhZHkgaW1wbGVtZW50ZWQ6XG4gICAqIC0gYHRyYW5zZm9ybVRvU29ydFF1ZXJ5UGFyYW1gIChyZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIGBmaWVsZGAgYW5kIGBkaXJlY3Rpb25gIHByb3BlcnRpZXMpXG4gICAqL1xuICB2YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuPzogKHZhbDogVCB8IG51bGwpID0+IHVua25vd247XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBRdWVyeUZvcm1Hcm91cENvbnRyb2xzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiA9IHtcbiAgW1Byb3BlcnR5IGluIGtleW9mIFRdOiBUW1Byb3BlcnR5XVsnY29udHJvbCddO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIFF1ZXJ5Rm9ybVZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiA9IHtcbiAgW1Byb3BlcnR5IGluIGtleW9mIFRdOiBUW1Byb3BlcnR5XVsnY29udHJvbCddWyd2YWx1ZSddO1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlGb3JtT2Y8VCBleHRlbmRzIEZvcm1Hcm91cD4gPSB7XG4gIFtLIGluIGtleW9mIFRbJ2NvbnRyb2xzJ11dOiBRdWVyeUZpZWxkPFRbJ2NvbnRyb2xzJ11bS11bJ3ZhbHVlJ10+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1Hcm91cCBleHRlbmRzIEZvcm1Hcm91cCB7XG4gIF9zZXRWYWx1ZTogRm9ybUdyb3VwWydzZXRWYWx1ZSddO1xuICBfcGF0Y2hWYWx1ZTogRm9ybUdyb3VwWydwYXRjaFZhbHVlJ107XG4gIHNldFZhbHVlKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogUXVlcnlGb3JtV3JpdGVPcHRpb25zKTogdm9pZDtcbiAgcGF0Y2hWYWx1ZSh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IFF1ZXJ5Rm9ybVdyaXRlT3B0aW9ucyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlGb3JtT2JzZXJ2ZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZm9ybSB2YWx1ZSBzaG91bGQgYmUgc3luY2VkIHRvIHRoZSB1cmwgcXVlcnkgcGFyYW1zLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3cml0ZVRvUXVlcnlQYXJhbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb3JtIHZhbHVlIHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gdGhlIHVybCBxdWVyeSBwYXJhbXMgY2hhbmdlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzeW5jT25OYXZpZ2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG5hdmlnYXRpb24gd2lsbCBub3QgY3JlYXRlIGEgbmV3IGVudHJ5IGluIHRoZSBicm93c2VyJ3MgaGlzdG9yeS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcGxhY2VVcmw/OiBib29sZWFuO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1WYWx1ZUV2ZW50PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiB7XG4gIHByZXZpb3VzVmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+IHwgbnVsbDtcbiAgY3VycmVudFZhbHVlOiBRdWVyeUZvcm1WYWx1ZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1Xcml0ZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hlbiB0cnVlLCBlYWNoIGNoYW5nZSBvbmx5IGFmZmVjdHMgdGhpcyBjb250cm9sLCBhbmQgbm90IGl0cyBwYXJlbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBvbmx5U2VsZj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSBvciBub3Qgc3VwcGxpZWQgKHRoZSBkZWZhdWx0KSwgYm90aCB0aGUgYHN0YXR1c0NoYW5nZXNgIGFuZCBgdmFsdWVDaGFuZ2VzYFxuICAgKiBvYnNlcnZhYmxlcyBlbWl0IGV2ZW50cyB3aXRoIHRoZSBsYXRlc3Qgc3RhdHVzIGFuZCB2YWx1ZSB3aGVuIHRoZSBjb250cm9sIHZhbHVlIGlzIHVwZGF0ZWQuXG4gICAqIFdoZW4gZmFsc2UsIG5vIGV2ZW50cyBhcmUgZW1pdHRlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZW1pdEV2ZW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGUgYHJlc2V0QnlgIGNvbmRpdGlvbnMgd2lsbCBiZSBpZ25vcmVkIGZvciB0aGlzIHdyaXRlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcFJlc2V0cz86IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBRdWVyeUZpZWxkIH0gZnJvbSAnLi9xdWVyeS1mb3JtJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZpZWxkT3B0aW9uczxUID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZpZWxkLlxuICAgKiBXaWxsIGJlIHNldCB0byB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgZm9ybSBjb250cm9sIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqIElmIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgY2FsbGVkIHRvIGdldCB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICovXG4gIGRlZmF1bHRWYWx1ZT86IFQgfCAoKCkgPT4gVCkgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBEZWJvdW5jZSB0aW1lIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIGRlYm91bmNlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAgV2hldGhlciB0aGUgZGVib3VuY2Ugc2hvdWxkIG5vdCBiZSBhcHBsaWVkIGlmIHRoZSB2YWx1ZSBpcyBmYWxzeS5cbiAgICogIFRoaXMgaXMgdXNlZnVsIGZvciBmaWVsZHMgdGhhdCBjYW4gYmUgY2xlYXJlZCBsaWtlIGEgc2VhcmNoIGZpZWxkLlxuICAgKlxuICAgKiAgQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVEZWJvdW5jZUlmRmFsc3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIGZvciB0aGUgZmllbGQuXG4gICAqL1xuICBjb250cm9sOiBGb3JtQ29udHJvbDxUIHwgbnVsbD47XG5cbiAgLyoqXG4gICAqIEFwcGVuZCB0aGUgZmllbGQncyB2YWx1ZSB0byB0aGUgdXJsLlxuICAgKlxuICAgKiBUaGUgZmllbGQgd29udCBiZSBhcHBlbmRlZCB0byB0aGUgdXJsIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gICAqIC0gSXQgaXMgdGhlIGRlZmF1bHQgdmFsdWUgYW5kIGBhcHBlbmREZWZhdWx0VmFsdWVUb1VybGAgaXMgYGZhbHNlYFxuICAgKiAtIEl0IGlzIGFuIGVtcHR5IHN0cmluZ1xuICAgKiAtIEl0IGlzIGBudWxsYFxuICAgKiAtIEl0IGlzIGB1bmRlZmluZWRgXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGFwcGVuZFRvVXJsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXBwZW5kIHRoZSBmaWVsZCdzIHZhbHVlIHRvIHRoZSB1cmwgZXZlbiBpZiBpdCBpcyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICogV2lsbCBiZSBpZ25vcmVkIGlmIGBhcHBlbmRUb1VybGAgaXMgYGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFwcGVuZERlZmF1bHRWYWx1ZVRvVXJsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVzZXQgdGhlIGZpZWxkJ3MgdmFsdWUgdG8gdGhlIGRlZmF1bHQgdmFsdWUgaWYgb25lIG9yIG1vcmUgb2YgdGhlIHNwZWNpZmllZCBmaWVsZHMgYXJlIGNoYW5nZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIEdpdmVuIHRoaXMgZmllbGQgaXMgYSBgcGFnZWAgZmllbGQsIHRoZSBmaWVsZCB3aWxsIGJlIHJlc2V0IGlmIHRoZSBgbGltaXRgLCBgcXVlcnlgIG9yIGBzZWFyY2hgIGZpZWxkcyBhcmUgY2hhbmdlZC5cbiAgICogWydsaW1pdCcsICdxdWVyeScsICdzZWFyY2gnXVxuICAgKi9cbiAgaXNSZXNldEJ5Pzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIHNob3VsZCBjaGFuZ2UgdGhlIGNvdW50IG9mIGN1cnJlbnQgYWN0aXZlIGZpbHRlcnMuXG4gICAqXG4gICAqIFdpbGwgYmUgYHRydWVgIGZvciB0aGVzZSBjb21tb24gZmllbGRzOlxuICAgKiAtIGBwYWdlYFxuICAgKiAtIGBza2lwYFxuICAgKiAtIGB0YWtlYFxuICAgKiAtIGBsaW1pdGBcbiAgICogLSBgc29ydGBcbiAgICogLSBgc29ydEJ5YFxuICAgKiAtIGBzb3J0T3JkZXJgXG4gICAqIC0gYHF1ZXJ5YFxuICAgKiAtIGBzZWFyY2hgXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBza2lwSW5GaWx0ZXJDb3VudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBmaWVsZCdzIHN0cmluZyB2YWx1ZSBpcyB0cmFuc2Zvcm1lZCB0byBpdCdzIG1hdGNoaW5nIHByaW1pdGl2ZSB0eXBlLlxuICAgKiBNZWFuaW5nIHRoYXQgYSBzdHJpbmcgYCd0cnVlJ2Agd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byBhIGJvb2xlYW4gYHRydWVgIGFuZCBhIHN0cmluZyBgJzUnYCB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvIGEgbnVtYmVyIGA1YC5cbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gYHRydWVgLCB0aGUgZmllbGQncyB2YWx1ZSB3aWxsIG5vdCBiZSB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNraXBBdXRvVHJhbnNmb3JtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHRyYW5zZm9ybXMgdGhlIHRoZSB2YWx1ZSBnb3R0ZW4gZnJvbSB0aGUgdXJsIHF1ZXJ5IHBhcmFtcyB0byBhIHZhbHVlIHJlcXVpcmVkIGJ5IHRoZSBmaWVsZC5cbiAgICogRS5nLiBmb3IgYSBudW1iZXIgZmllbGQsIHRoZSB2YWx1ZSBmcm9tIHRoZSB1cmwgcXVlcnkgcGFyYW1zIGlzIGEgc3RyaW5nLCBidXQgdGhlIGZpZWxkIHJlcXVpcmVzIGEgbnVtYmVyLlxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGNvbW1vbiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFscmVhZHkgaW1wbGVtZW50ZWQ6XG4gICAqIC0gYHRyYW5zZm9ybVRvU3RyaW5nYFxuICAgKiAtIGB0cmFuc2Zvcm1Ub1N0cmluZ0FycmF5YFxuICAgKiAtIGB0cmFuc2Zvcm1Ub051bWJlcmBcbiAgICogLSBgdHJhbnNmb3JtVG9OdW1iZXJBcnJheWBcbiAgICogLSBgdHJhbnNmb3JtVG9Cb29sZWFuYFxuICAgKiAtIGB0cmFuc2Zvcm1Ub0Jvb2xlYW5BcnJheWBcbiAgICogLSBgdHJhbnNmb3JtVG9EYXRlYCAoZXhwZWN0cyBhIHN0cmluZyBpbiB0aGUgZGVmYXVsdCBqcyBmb3JtYXQpXG4gICAqIC0gYHRyYW5zZm9ybVRvRGF0ZUFycmF5YCAoZXhwZWN0cyBzdHJpbmdzIGluIHRoZSBkZWZhdWx0IGpzIGZvcm1hdClcbiAgICogLSBgdHJhbnNmb3JtVG9Tb3J0YCAoZXhwZWN0cyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0IGBmaWVsZDpkaXJlY3Rpb25gKVxuICAgKi9cbiAgcXVlcnlQYXJhbVRvVmFsdWVUcmFuc2Zvcm1Gbj86ICh2YWw6IHVua25vd24pID0+IFQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdHJhbnNmb3JtcyB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkIHRvIGEgdmFsdWUgdGhhdCBjYW4gYmUgYXBwZW5kZWQgdG8gdGhlIHVybCBxdWVyeSBwYXJhbXMuXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgY29tbW9uIHRyYW5zZm9ybWF0aW9ucyBhcmUgYWxyZWFkeSBpbXBsZW1lbnRlZDpcbiAgICogLSBgdHJhbnNmb3JtVG9Tb3J0UXVlcnlQYXJhbWAgKHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYGZpZWxkYCBhbmQgYGRpcmVjdGlvbmAgcHJvcGVydGllcylcbiAgICovXG4gIHZhbHVlVG9RdWVyeVBhcmFtVHJhbnNmb3JtRm4/OiAodmFsOiBUIHwgbnVsbCkgPT4gdW5rbm93bjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIFF1ZXJ5Rm9ybUdyb3VwQ29udHJvbHM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFF1ZXJ5RmllbGQ8YW55Pj4+ID0ge1xuICBbUHJvcGVydHkgaW4ga2V5b2YgVF06IFRbUHJvcGVydHldWydjb250cm9sJ107XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgUXVlcnlGb3JtVmFsdWU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFF1ZXJ5RmllbGQ8YW55Pj4+ID0ge1xuICBbUHJvcGVydHkgaW4ga2V5b2YgVF06IFRbUHJvcGVydHldWydjb250cm9sJ11bJ3ZhbHVlJ107XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUZvcm1PZjxUIGV4dGVuZHMgRm9ybUdyb3VwPiA9IHtcbiAgW0sgaW4ga2V5b2YgVFsnY29udHJvbHMnXV06IFF1ZXJ5RmllbGQ8VFsnY29udHJvbHMnXVtLXVsndmFsdWUnXT47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybUdyb3VwIGV4dGVuZHMgRm9ybUdyb3VwIHtcbiAgX3NldFZhbHVlOiBGb3JtR3JvdXBbJ3NldFZhbHVlJ107XG4gIF9wYXRjaFZhbHVlOiBGb3JtR3JvdXBbJ3BhdGNoVmFsdWUnXTtcbiAgc2V0VmFsdWUodmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiBRdWVyeUZvcm1Xcml0ZU9wdGlvbnMpOiB2b2lkO1xuICBwYXRjaFZhbHVlKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogUXVlcnlGb3JtV3JpdGVPcHRpb25zKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1PYnNlcnZlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb3JtIHZhbHVlIHNob3VsZCBiZSBzeW5jZWQgdG8gdGhlIHVybCBxdWVyeSBwYXJhbXMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdyaXRlVG9RdWVyeVBhcmFtcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvcm0gdmFsdWUgc2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiB0aGUgdXJsIHF1ZXJ5IHBhcmFtcyBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHN5bmNPbk5hdmlnYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbmF2aWdhdGlvbiB3aWxsIG5vdCBjcmVhdGUgYSBuZXcgZW50cnkgaW4gdGhlIGJyb3dzZXIncyBoaXN0b3J5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVwbGFjZVVybD86IGJvb2xlYW47XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybVZhbHVlRXZlbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFF1ZXJ5RmllbGQ8YW55Pj4+IHtcbiAgcHJldmlvdXNWYWx1ZTogUXVlcnlGb3JtVmFsdWU8VD4gfCBudWxsO1xuICBjdXJyZW50VmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybVdyaXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGVhY2ggY2hhbmdlIG9ubHkgYWZmZWN0cyB0aGlzIGNvbnRyb2wsIGFuZCBub3QgaXRzIHBhcmVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG9ubHlTZWxmPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlIG9yIG5vdCBzdXBwbGllZCAodGhlIGRlZmF1bHQpLCBib3RoIHRoZSBgc3RhdHVzQ2hhbmdlc2AgYW5kIGB2YWx1ZUNoYW5nZXNgXG4gICAqIG9ic2VydmFibGVzIGVtaXQgZXZlbnRzIHdpdGggdGhlIGxhdGVzdCBzdGF0dXMgYW5kIHZhbHVlIHdoZW4gdGhlIGNvbnRyb2wgdmFsdWUgaXMgdXBkYXRlZC5cbiAgICogV2hlbiBmYWxzZSwgbm8gZXZlbnRzIGFyZSBlbWl0dGVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHRoZSBgcmVzZXRCeWAgY29uZGl0aW9ucyB3aWxsIGJlIGlnbm9yZWQgZm9yIHRoaXMgd3JpdGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBza2lwUmVzZXRzPzogYm9vbGVhbjtcbn1cbiJdfQ==