velocious 1.0.285 → 1.0.288

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.
@@ -673,7 +673,7 @@ function splitWhereHash({ hash, modelClass }) {
673
673
  else {
674
674
  const columnName = resolveColumnName(modelClass, key);
675
675
  if (columnName) {
676
- resolvedHash[key] = value;
676
+ resolvedHash[columnName] = value;
677
677
  }
678
678
  else {
679
679
  fallbackHash[key] = value;
@@ -789,4 +789,4 @@ function hasRelationshipWhereOperatorTuples(value) {
789
789
  return false;
790
790
  }
791
791
  }
792
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY2xhc3MtcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFBO0FBQ3RDLE9BQU8sYUFBYSxNQUFNLFlBQVksQ0FBQTtBQUN0QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLG1CQUFtQixNQUFNLHFDQUFxQyxDQUFBO0FBQ3JFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFBO0FBQzdELE9BQU8sbUJBQW1CLE1BQU0sNkJBQTZCLENBQUE7QUFDN0QsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUE7QUFFckM7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxLQUFLO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUU1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4SSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENB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QUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JELFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtnQkFDNUIsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFFRCx3QkFBd0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixFQUFFLEVBQUU7WUFDekUsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDcEMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUE7SUFFRCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFbkIsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsa0NBQWtDLENBQUMsS0FBSztJQUMvQyxJQUFJLENBQUM7UUFDSCx3Q0FBd0MsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUUvQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gXCJpcy1wbGFpbi1vYmplY3RcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBQcmVsb2FkZXIgZnJvbSBcIi4vcHJlbG9hZGVyLmpzXCJcbmltcG9ydCBEYXRhYmFzZVF1ZXJ5IGZyb20gXCIuL2luZGV4LmpzXCJcbmltcG9ydCBKb2luVHJhY2tlciBmcm9tIFwiLi9qb2luLXRyYWNrZXIuanNcIlxuaW1wb3J0IFJlY29yZE5vdEZvdW5kRXJyb3IgZnJvbSBcIi4uL3JlY29yZC9yZWNvcmQtbm90LWZvdW5kLWVycm9yLmpzXCJcbmltcG9ydCB7bm9ybWFsaXplUmFuc2Fja1BhcmFtc30gZnJvbSBcIi4uLy4uL3V0aWxzL3JhbnNhY2suanNcIlxuaW1wb3J0IFdoZXJlTW9kZWxDbGFzc0hhc2ggZnJvbSBcIi4vd2hlcmUtbW9kZWwtY2xhc3MtaGFzaC5qc1wiXG5pbXBvcnQgV2hlcmVOb3QgZnJvbSBcIi4vd2hlcmUtbm90LmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBQb3RlbnRpYWxseSBxdW90ZWQgU1FMIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFVucXVvdGVkIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIHVucXVvdGVTcWxJZGVudGlmaWVyKHZhbHVlKSB7XG4gIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcblxuICBpZiAodHJpbW1lZC5sZW5ndGggPj0gMiAmJiAoKHRyaW1tZWQuc3RhcnRzV2l0aChcImBcIikgJiYgdHJpbW1lZC5lbmRzV2l0aChcImBcIikpIHx8ICh0cmltbWVkLnN0YXJ0c1dpdGgoXCJcXFwiXCIpICYmIHRyaW1tZWQuZW5kc1dpdGgoXCJcXFwiXCIpKSkpIHtcbiAgICByZXR1cm4gdHJpbW1lZC5zbGljZSgxLCAtMSlcbiAgfVxuXG4gIGlmICh0cmltbWVkLmxlbmd0aCA+PSAyICYmIHRyaW1tZWQuc3RhcnRzV2l0aChcIltcIikgJiYgdHJpbW1lZC5lbmRzV2l0aChcIl1cIikpIHtcbiAgICByZXR1cm4gdHJpbW1lZC5zbGljZSgxLCAtMSlcbiAgfVxuXG4gIHJldHVybiB0cmltbWVkXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZyb21QbGFpbiAtIEZST00gY2xhdXNlIHNvdXJjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsfSAtIFBhcnNlZCB0YWJsZSByZWZlcmVuY2Ugb3IgbnVsbCB3aGVuIHVuc3VwcG9ydGVkLlxuICovXG5mdW5jdGlvbiBwYXJzZUZyb21QbGFpblRhYmxlUmVmZXJlbmNlKGZyb21QbGFpbikge1xuICBjb25zdCB0cmltbWVkID0gZnJvbVBsYWluLnRyaW0oKVxuXG4gIGlmICh0cmltbWVkLmxlbmd0aCA8IDEpIHJldHVybiBudWxsXG5cbiAgY29uc3QgYWxpYXNNYXRjaCA9IHRyaW1tZWQubWF0Y2goLyg/Ol58XFxzKSg/OkFTXFxzKyk/KFtgXCJdP1thLXpBLVpfXVthLXpBLVowLTlfXSpbYFwiXT98XFxbW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXSlcXHMqJC9pKVxuXG4gIGlmICghYWxpYXNNYXRjaCB8fCAhYWxpYXNNYXRjaFsxXSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gdW5xdW90ZVNxbElkZW50aWZpZXIoYWxpYXNNYXRjaFsxXSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuTmVzdGVkUHJlbG9hZFJlY29yZCB8IHN0cmluZyB8IHN0cmluZ1tdfSBwcmVsb2FkIC0gUHJlbG9hZCBkYXRhIGluIHNob3J0aGFuZCBvciBuZXN0ZWQgZm9ybS5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmR9IC0gTm9ybWFsaXplZCBwcmVsb2FkIHJlY29yZC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUHJlbG9hZFJlY29yZChwcmVsb2FkKSB7XG4gIGlmICghcHJlbG9hZCkgcmV0dXJuIHt9XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkID09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4ge1twcmVsb2FkXTogdHJ1ZX1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHByZWxvYWQpKSB7XG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmR9ICovXG4gICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgcHJlbG9hZCkge1xuICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlc3VsdFtlbnRyeV0gPSB0cnVlXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgICBpbmNvcnBvcmF0ZShyZXN1bHQsIG5vcm1hbGl6ZVByZWxvYWRSZWNvcmQoZW50cnkpKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJlbG9hZCBlbnRyeSB0eXBlOiAke3R5cGVvZiBlbnRyeX1gKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGlmICghaXNQbGFpbk9iamVjdChwcmVsb2FkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwcmVsb2FkIHR5cGU6ICR7dHlwZW9mIHByZWxvYWR9YClcbiAgfVxuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkfSAqL1xuICBjb25zdCByZXN1bHQgPSB7fVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByZWxvYWQpKSB7XG4gICAgaWYgKHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbm9ybWFsaXplUHJlbG9hZFJlY29yZCh2YWx1ZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByZWxvYWQgdmFsdWUgZm9yICR7a2V5fTogJHt0eXBlb2YgdmFsdWV9YClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gW01DPXR5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdF1cbiAqL1xuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gW01DPXR5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdF1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLlF1ZXJ5QXJnc1R5cGUgJiB7bW9kZWxDbGFzczogTUMsIGpvaW5CYXNlUGF0aD86IHN0cmluZ1tdLCBqb2luVHJhY2tlcj86IGltcG9ydChcIi4vam9pbi10cmFja2VyLmpzXCIpLmRlZmF1bHQsIGZvcmNlUXVhbGlmeUJhc2VUYWJsZT86IGJvb2xlYW59fSBNb2RlbENsYXNzUXVlcnlBcmdzVHlwZVxuICovXG5cbi8qKlxuICogQSBnZW5lcmljIHF1ZXJ5IG92ZXIgc29tZSBtb2RlbCB0eXBlLlxuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IFtNQz10eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnkgZXh0ZW5kcyBEYXRhYmFzZVF1ZXJ5IHtcbiAgLyoqIEBwYXJhbSB7TW9kZWxDbGFzc1F1ZXJ5QXJnc1R5cGU8TUM+fSBhcmdzIC0gUXVlcnkgY29uc3RydWN0b3IgYXJndW1lbnRzLiAqL1xuICBjb25zdHJ1Y3RvcihhcmdzKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gYXJnc1xuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vZGVsQ2xhc3MgZ2l2ZW4gaW4gJHtPYmplY3Qua2V5cyhhcmdzKS5qb2luKFwiLCBcIil9YClcblxuICAgIHN1cGVyKGFyZ3MpXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG5cbiAgICAvKiogQHR5cGUge01DfSAqL1xuICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5fam9pbkJhc2VQYXRoID0gYXJncy5qb2luQmFzZVBhdGggfHwgW11cbiAgICB0aGlzLl9qb2luVHJhY2tlciA9IGFyZ3Muam9pblRyYWNrZXIgfHwgbmV3IEpvaW5UcmFja2VyKHttb2RlbENsYXNzOiB0aGlzLm1vZGVsQ2xhc3N9KVxuICAgIHRoaXMuX2ZvcmNlUXVhbGlmeUJhc2VUYWJsZSA9IEJvb2xlYW4oYXJncy5mb3JjZVF1YWxpZnlCYXNlVGFibGUpXG4gIH1cblxuICAvKiogQHJldHVybnMge3RoaXN9IC0gVGhlIGNsb25lLiAgKi9cbiAgY2xvbmUoKSB7XG4gICAgY29uc3QgbmV3UXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAobmV3IFZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnkoe1xuICAgICAgZHJpdmVyOiB0aGlzLl9kcml2ZXJGbixcbiAgICAgIGZyb21zOiBbLi4udGhpcy5fZnJvbXNdLFxuICAgICAgaGFuZGxlcjogdGhpcy5oYW5kbGVyLmNsb25lKCksXG4gICAgICBncm91cHM6IFsuLi50aGlzLl9ncm91cHNdLFxuICAgICAgam9pbnM6IFsuLi50aGlzLl9qb2luc10sXG4gICAgICBsaW1pdDogdGhpcy5fbGltaXQsXG4gICAgICBtb2RlbENsYXNzOiB0aGlzLm1vZGVsQ2xhc3MsXG4gICAgICBvZmZzZXQ6IHRoaXMuX29mZnNldCxcbiAgICAgIG9yZGVyczogWy4uLnRoaXMuX29yZGVyc10sXG4gICAgICBwYWdlOiB0aGlzLl9wYWdlLFxuICAgICAgcGVyUGFnZTogdGhpcy5fcGVyUGFnZSxcbiAgICAgIHByZWxvYWQ6IHsuLi50aGlzLl9wcmVsb2FkfSxcbiAgICAgIGRpc3RpbmN0OiB0aGlzLl9kaXN0aW5jdCxcbiAgICAgIHNlbGVjdHM6IFsuLi50aGlzLl9zZWxlY3RzXSxcbiAgICAgIHdoZXJlczogWy4uLnRoaXMuX3doZXJlc10sXG4gICAgICBqb2luQmFzZVBhdGg6IFsuLi50aGlzLl9qb2luQmFzZVBhdGhdLFxuICAgICAgam9pblRyYWNrZXI6IHRoaXMuX2pvaW5UcmFja2VyLmNsb25lKCksXG4gICAgICBmb3JjZVF1YWxpZnlCYXNlVGFibGU6IHRoaXMuX2ZvcmNlUXVhbGlmeUJhc2VUYWJsZVxuICAgIH0pKVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBuZXdRdWVyeVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgY291bnQuICAqL1xuICBhc3luYyBjb3VudCgpIHtcbiAgICAvLyBHZW5lcmF0ZSBjb3VudCBTUUxcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gYCR7dGhpcy5kcml2ZXIucXVvdGVUYWJsZSh0aGlzLmdldE1vZGVsQ2xhc3MoKS50YWJsZU5hbWUoKSl9LiR7dGhpcy5kcml2ZXIucXVvdGVDb2x1bW4odGhpcy5nZXRNb2RlbENsYXNzKCkucHJpbWFyeUtleSgpKX1gXG4gICAgY29uc3QgZGlzdGluY3RQcmVmaXggPSB0aGlzLl9kaXN0aW5jdCA/IFwiRElTVElOQ1QgXCIgOiBcIlwiXG4gICAgbGV0IHNxbCA9IGBDT1VOVCgke2Rpc3RpbmN0UHJlZml4fSR7cHJpbWFyeUtleX0pYFxuXG4gICAgaWYgKHRoaXMuZHJpdmVyLmdldFR5cGUoKSA9PSBcInBnc3FsXCIpIHNxbCArPSBcIjo6aW50XCJcblxuICAgIHNxbCArPSBcIiBBUyBjb3VudFwiXG5cblxuICAgIC8vIENsb25lIHF1ZXJ5IGFuZCBleGVjdXRlIGNvdW50XG4gICAgY29uc3QgY291bnRRdWVyeSA9IHRoaXMuY2xvbmUoKVxuXG4gICAgY291bnRRdWVyeS5fZGlzdGluY3QgPSBmYWxzZVxuICAgIGNvdW50UXVlcnkuX3NlbGVjdHMgPSBbXVxuICAgIGNvdW50UXVlcnkuc2VsZWN0KHNxbClcblxuICAgIGNvbnN0IHJlc3VsdHMgPSAvKiogQHR5cGUge3tjb3VudDogbnVtYmVyfVtdfSAqLyAoYXdhaXQgY291bnRRdWVyeS5fZXhlY3V0ZVF1ZXJ5KCkpXG5cbiAgICAvLyBUaGUgcXVlcnkgaXNuJ3QgZ3JvdXBlZCBhbmQgYSBzaW5nbGUgcmVzdWx0IGhhcyBiZWVuIGdpdmVuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09IDEpIHtcbiAgICAgIHJldHVybiByZXN1bHRzWzBdLmNvdW50XG4gICAgfVxuXG4gICAgLy8gVGhlIHF1ZXJ5IG1heSBiZSBncm91cGVkIGFuZCBhIGxvdCBvZiBkaWZmZXJlbnQgY291bnRzIGEgZ2l2ZW5cbiAgICBsZXQgY291bnRSZXN1bHQgPSAwXG5cbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICBpZiAoIShcImNvdW50XCIgaW4gcmVzdWx0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvdW50IHJlc3VsdFwiKVxuICAgICAgfVxuXG4gICAgICBjb3VudFJlc3VsdCArPSByZXN1bHQuY291bnRcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRSZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuU2VsZWN0QXJndW1lbnRUeXBlfSBzZWxlY3QgLSBTZWxlY3QuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBzZWxlY3QuXG4gICAqL1xuICBzZWxlY3Qoc2VsZWN0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0KSkge1xuICAgICAgZm9yIChjb25zdCBzZWxlY3RFbnRyeSBvZiBzZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Qoc2VsZWN0RW50cnkpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3QgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWRTZWxlY3QgPSBzZWxlY3QudHJpbSgpXG5cbiAgICAgIGlmICgvXlthLXpBLVpfXVthLXpBLVowLTlfXSokLy50ZXN0KHRyaW1tZWRTZWxlY3QpKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSB0aGlzLmdldE1vZGVsQ2xhc3MoKVxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVNYXAgPSBtb2RlbENsYXNzLmdldEF0dHJpYnV0ZU5hbWVUb0NvbHVtbk5hbWVNYXAoKVxuICAgICAgICBjb25zdCBjb2x1bW5OYW1lID0gYXR0cmlidXRlTWFwW3RyaW1tZWRTZWxlY3RdIHx8IHRyaW1tZWRTZWxlY3RcbiAgICAgICAgY29uc3QgdGFibGVSZWZlcmVuY2UgPSB0aGlzLnJvb3RUYWJsZVJlZmVyZW5jZSgpXG4gICAgICAgIGNvbnN0IHF1YWxpZmllZENvbHVtbiA9IGAke3RoaXMuZHJpdmVyLnF1b3RlVGFibGUodGFibGVSZWZlcmVuY2UpfS4ke3RoaXMuZHJpdmVyLnF1b3RlQ29sdW1uKGNvbHVtbk5hbWUpfWBcblxuICAgICAgICByZXR1cm4gc3VwZXIuc2VsZWN0KHF1YWxpZmllZENvbHVtbilcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuc2VsZWN0KHNlbGVjdClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJvb3QgdGFibGUgcmVmZXJlbmNlIGZvciBxdWVyeSBzZWxlY3QgcXVhbGlmaWNhdGlvbi5cbiAgICovXG4gIHJvb3RUYWJsZVJlZmVyZW5jZSgpIHtcbiAgICBjb25zdCBmcm9tcyA9IHRoaXMuZ2V0RnJvbXMoKVxuICAgIGNvbnN0IGxhc3RGcm9tID0gZnJvbXNbZnJvbXMubGVuZ3RoIC0gMV1cblxuICAgIGlmIChsYXN0RnJvbSAmJiB0eXBlb2YgLyoqIEB0eXBlIHthbnl9ICovIChsYXN0RnJvbSkudGFibGVOYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gLyoqIEB0eXBlIHthbnl9ICovIChsYXN0RnJvbSkudGFibGVOYW1lXG4gICAgfVxuXG4gICAgaWYgKGxhc3RGcm9tICYmIHR5cGVvZiAvKiogQHR5cGUge2FueX0gKi8gKGxhc3RGcm9tKS5wbGFpbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgcGFyc2VkUmVmZXJlbmNlID0gcGFyc2VGcm9tUGxhaW5UYWJsZVJlZmVyZW5jZSgvKiogQHR5cGUge2FueX0gKi8gKGxhc3RGcm9tKS5wbGFpbilcblxuICAgICAgaWYgKHBhcnNlZFJlZmVyZW5jZSkgcmV0dXJuIHBhcnNlZFJlZmVyZW5jZVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFRhYmxlUmVmZXJlbmNlRm9ySm9pbigpXG4gIH1cblxuICAvKiogQHJldHVybnMge01DfSAtIFRoZSBtb2RlbCBjbGFzcy4gICovXG4gIGdldE1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIm1vZGVsQ2xhc3Mgbm90IHNldFwiKVxuXG4gICAgcmV0dXJuIHRoaXMubW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBUaGUgam9pbiBiYXNlIHBhdGguICovXG4gIGdldEpvaW5CYXNlUGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fam9pbkJhc2VQYXRoXG4gIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4vam9pbi10cmFja2VyLmpzXCIpLmRlZmF1bHR9IC0gVGhlIGpvaW4gdHJhY2tlci4gKi9cbiAgZ2V0Sm9pblRyYWNrZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2pvaW5UcmFja2VyXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0byBxdWFsaWZ5IGJhc2UgdGFibGUuICovXG4gIGdldEZvcmNlUXVhbGlmeUJhc2VUYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VRdWFsaWZ5QmFzZVRhYmxlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gam9pbkJhc2VQYXRoIC0gSm9pbiBiYXNlIHBhdGguXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBxdWVyeSB3aXRoIHVwZGF0ZWQgYmFzZSBwYXRoLlxuICAgKi9cbiAgc2V0Sm9pbkJhc2VQYXRoKGpvaW5CYXNlUGF0aCkge1xuICAgIHRoaXMuX2pvaW5CYXNlUGF0aCA9IGpvaW5CYXNlUGF0aFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gam9pbkJhc2VQYXRoIC0gSm9pbiBiYXNlIHBhdGguXG4gICAqIEByZXR1cm5zIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gLSBUaGUgc2NvcGVkIHF1ZXJ5LlxuICAgKi9cbiAgd2l0aEpvaW5QYXRoKGpvaW5CYXNlUGF0aCkge1xuICAgIGNvbnN0IHNjb3BlZFF1ZXJ5ID0gLyoqIEB0eXBlIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gKi8gKHRoaXMuY2xvbmUoKSlcblxuICAgIHNjb3BlZFF1ZXJ5Ll9qb2luQmFzZVBhdGggPSBqb2luQmFzZVBhdGhcbiAgICBzY29wZWRRdWVyeS5fam9pblRyYWNrZXIgPSB0aGlzLl9qb2luVHJhY2tlclxuXG4gICAgcmV0dXJuIHNjb3BlZFF1ZXJ5XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUYWJsZSBuYW1lIGZvciBwYXRoLlxuICAgKi9cbiAgX3Jlc29sdmVUYWJsZU5hbWVGb3JKb2luUGF0aChwYXRoKSB7XG4gICAgbGV0IG1vZGVsQ2xhc3MgPSB0aGlzLl9qb2luVHJhY2tlci5nZXRSb290TW9kZWxDbGFzcygpXG5cbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiBtb2RlbENsYXNzLnRhYmxlTmFtZSgpXG5cbiAgICBmb3IgKGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgb2YgcGF0aCkge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRhcmdldCBtb2RlbCBjbGFzcyBmb3IgJHttb2RlbENsYXNzLm5hbWV9IyR7cmVsYXRpb25zaGlwTmFtZX1gKVxuICAgICAgfVxuXG4gICAgICBtb2RlbENsYXNzID0gdGFyZ2V0TW9kZWxDbGFzc1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbENsYXNzLnRhYmxlTmFtZSgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3t0YWJsZU5hbWU6IHN0cmluZywgYWxpYXM6IHN0cmluZyB8IHVuZGVmaW5lZH19IC0gVGhlIGVudHJ5LlxuICAgKi9cbiAgX3JlZ2lzdGVySm9pblBhdGgocGF0aCkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMuX3Jlc29sdmVUYWJsZU5hbWVGb3JKb2luUGF0aChwYXRoKVxuXG4gICAgcmV0dXJuIHRoaXMuX2pvaW5UcmFja2VyLnJlZ2lzdGVyUGF0aChwYXRoLCB0YWJsZU5hbWUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBVbnF1b3RlZCB0YWJsZSByZWZlcmVuY2UgKGFsaWFzIG9yIHRhYmxlIG5hbWUpLlxuICAgKi9cbiAgZ2V0Sm9pblRhYmxlUmVmZXJlbmNlKHBhdGgpIHtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuX2pvaW5UcmFja2VyLmdldEVudHJ5KHBhdGgpIHx8IHRoaXMuX3JlZ2lzdGVySm9pblBhdGgocGF0aClcblxuICAgIHJldHVybiBlbnRyeS5hbGlhcyB8fCBlbnRyeS50YWJsZU5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ30gcGF0aCAtIEpvaW4gcGF0aCBzZWdtZW50cy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBVbnF1b3RlZCB0YWJsZSByZWZlcmVuY2UgKGFsaWFzIG9yIHRhYmxlIG5hbWUpLlxuICAgKi9cbiAgZ2V0VGFibGVSZWZlcmVuY2VGb3JKb2luKC4uLnBhdGgpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHRoaXMuX2pvaW5CYXNlUGF0aC5jb25jYXQocGF0aClcblxuICAgIHJldHVybiB0aGlzLmdldEpvaW5UYWJsZVJlZmVyZW5jZShmdWxsUGF0aClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ30gcGF0aCAtIEpvaW4gcGF0aCBzZWdtZW50cy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBRdW90ZWQgdGFibGUgbmFtZSBmb3Igam9pbiBwYXRoLlxuICAgKi9cbiAgZ2V0VGFibGVGb3JKb2luKC4uLnBhdGgpIHtcbiAgICByZXR1cm4gdGhpcy5kcml2ZXIucXVvdGVUYWJsZSh0aGlzLmdldFRhYmxlUmVmZXJlbmNlRm9ySm9pbiguLi5wYXRoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gdGFyZ2V0TW9kZWxDbGFzcyAtIFRhcmdldCBtb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gam9pblBhdGggLSBKb2luIHBhdGguXG4gICAqIEByZXR1cm5zIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gLSBUaGUgc2NvcGVkIGpvaW4gcXVlcnkuXG4gICAqL1xuICBidWlsZEpvaW5TY29wZVF1ZXJ5KHRhcmdldE1vZGVsQ2xhc3MsIGpvaW5QYXRoKSB7XG4gICAgY29uc3Qgc2NvcGVkUXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAodGFyZ2V0TW9kZWxDbGFzcy5fbmV3UXVlcnkoKSlcblxuICAgIHNjb3BlZFF1ZXJ5Ll9qb2luVHJhY2tlciA9IHRoaXMuX2pvaW5UcmFja2VyXG4gICAgc2NvcGVkUXVlcnkuX2pvaW5CYXNlUGF0aCA9IGpvaW5QYXRoXG4gICAgc2NvcGVkUXVlcnkuX2ZvcmNlUXVhbGlmeUJhc2VUYWJsZSA9IHRydWVcblxuICAgIHJldHVybiBzY29wZWRRdWVyeVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuICAqL1xuICBhc3luYyBkZXN0cm95QWxsKCkge1xuICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCB0aGlzLnRvQXJyYXkoKVxuXG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgYXdhaXQgcmVjb3JkLmRlc3Ryb3koKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IHJlY29yZElkIC0gUmVjb3JkIGlkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBmaW5kLlxuICAgKi9cbiAgYXN5bmMgZmluZChyZWNvcmRJZCkge1xuICAgIC8qKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZ319ICovXG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHt9XG5cbiAgICBjb25kaXRpb25zW3RoaXMuZ2V0TW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKV0gPSByZWNvcmRJZFxuXG4gICAgY29uc3QgbmV3UXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAodGhpcy5jbG9uZSgpKVxuXG4gICAgbmV3UXVlcnkud2hlcmUoY29uZGl0aW9ucylcblxuICAgIGNvbnN0IHJlY29yZCA9IChhd2FpdCBuZXdRdWVyeS5maXJzdCgpKVxuXG4gICAgaWYgKCFyZWNvcmQpIHtcbiAgICAgIHRocm93IG5ldyBSZWNvcmROb3RGb3VuZEVycm9yKGBDb3VsZG4ndCBmaW5kICR7dGhpcy5nZXRNb2RlbENsYXNzKCkubmFtZX0gd2l0aCAnJHt0aGlzLmdldE1vZGVsQ2xhc3MoKS5wcmltYXJ5S2V5KCl9Jz0ke3JlY29yZElkfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7e1trZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlcn19IGNvbmRpdGlvbnMgLSBDb25kaXRpb25zIGhhc2gga2V5ZWQgYnkgYXR0cmlidXRlIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEluc3RhbmNlVHlwZTxNQz4gfCBudWxsPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBieS5cbiAgICovXG4gIGFzeW5jIGZpbmRCeShjb25kaXRpb25zKSB7XG4gICAgY29uc3QgbmV3UXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAodGhpcy5jbG9uZSgpKVxuXG4gICAgbmV3UXVlcnkud2hlcmUoY29uZGl0aW9ucylcblxuICAgIHJldHVybiBhd2FpdCBuZXdRdWVyeS5maXJzdCgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyfX0gY29uZGl0aW9ucyAtIENvbmRpdGlvbnMgaGFzaCBrZXllZCBieSBhdHRyaWJ1dGUgbmFtZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihJbnN0YW5jZVR5cGU8TUM+KSA6IHZvaWR9IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8SW5zdGFuY2VUeXBlPE1DPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgb3IgY3JlYXRlIGJ5LlxuICAgKi9cbiAgYXN5bmMgZmluZE9yQ3JlYXRlQnkoY29uZGl0aW9ucywgY2FsbGJhY2spIHtcbiAgICBjb25zdCByZWNvcmQgPSBhd2FpdCB0aGlzLmZpbmRPckluaXRpYWxpemVCeShjb25kaXRpb25zLCBjYWxsYmFjaylcblxuICAgIGlmIChyZWNvcmQuaXNOZXdSZWNvcmQoKSkge1xuICAgICAgYXdhaXQgcmVjb3JkLnNhdmUoKVxuICAgIH1cblxuICAgIHJldHVybiByZWNvcmRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3tba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXJ9fSBjb25kaXRpb25zIC0gQ29uZGl0aW9ucyBoYXNoIGtleWVkIGJ5IGF0dHJpYnV0ZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBieSBvciBmYWlsLlxuICAgKi9cbiAgYXN5bmMgZmluZEJ5T3JGYWlsKGNvbmRpdGlvbnMpIHtcbiAgICBjb25zdCByZWNvcmQgPSBhd2FpdCB0aGlzLmZpbmRCeShjb25kaXRpb25zKVxuXG4gICAgaWYgKCFyZWNvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlY29yZCBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBjb25kaXRpb25zIC0gQ29uZGl0aW9ucy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihJbnN0YW5jZVR5cGU8TUM+KSA6IHZvaWR9IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8SW5zdGFuY2VUeXBlPE1DPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgb3IgaW5pdGlhbGl6ZSBieS5cbiAgICovXG4gIGFzeW5jIGZpbmRPckluaXRpYWxpemVCeShjb25kaXRpb25zLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMuZmluZEJ5KGNvbmRpdGlvbnMpXG5cbiAgICBpZiAocmVjb3JkKSByZXR1cm4gcmVjb3JkXG5cbiAgICBjb25zdCBNb2RlbENsYXNzID0gdGhpcy5nZXRNb2RlbENsYXNzKClcbiAgICBjb25zdCBuZXdSZWNvcmQgPSAvKiogQHR5cGUge0luc3RhbmNlVHlwZTxNQz59ICovIChuZXcgTW9kZWxDbGFzcyhjb25kaXRpb25zKSlcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobmV3UmVjb3JkKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdSZWNvcmRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+IHwgbnVsbD59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZmlyc3QuICAqL1xuICBhc3luYyBmaXJzdCgpIHtcbiAgICBjb25zdCBuZXdRdWVyeSA9IHRoaXMuY2xvbmUoKS5saW1pdCgxKS5yZW9yZGVyKGAke3RoaXMuZHJpdmVyLnF1b3RlVGFibGUodGhpcy5nZXRNb2RlbENsYXNzKCkudGFibGVOYW1lKCkpfS4ke3RoaXMuZHJpdmVyLnF1b3RlQ29sdW1uKHRoaXMuZ2V0TW9kZWxDbGFzcygpLm9yZGVyYWJsZUNvbHVtbigpKX1gKVxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBuZXdRdWVyeS50b0FycmF5KClcblxuICAgIHJldHVybiByZXN1bHRzWzBdIHx8IG51bGxcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+IHwgbnVsbD59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgbGFzdC4gICovXG4gIGFzeW5jIGxhc3QoKSB7XG4gICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMuZ2V0TW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKVxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMuZ2V0TW9kZWxDbGFzcygpLnRhYmxlTmFtZSgpXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuY2xvbmUoKS5yZW9yZGVyKGAke3RoaXMuZHJpdmVyLnF1b3RlVGFibGUodGFibGVOYW1lKX0uJHt0aGlzLmRyaXZlci5xdW90ZUNvbHVtbihwcmltYXJ5S2V5KX0gREVTQ2ApLmxpbWl0KDEpLnRvQXJyYXkoKVxuXG4gICAgcmV0dXJuIHJlc3VsdHNbMF0gfHwgbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkfSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgcHJlbG9hZC5cbiAgICovXG4gIHByZWxvYWQoZGF0YSkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmVsb2FkID0gbm9ybWFsaXplUHJlbG9hZFJlY29yZChkYXRhKVxuICAgIGluY29ycG9yYXRlKHRoaXMuX3ByZWxvYWQsIG5vcm1hbGl6ZWRQcmVsb2FkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcXVlcnkgcmVzdWx0cyBpbnRvIG1vZGVsIGluc3RhbmNlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8SW5zdGFuY2VUeXBlPE1DPj4+fSAtIFJlc29sdmVzIHdpdGggdGhlIGFycmF5LlxuICAgKi9cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBjb25zdCBtb2RlbHMgPSBbXVxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLnJlc3VsdHMoKVxuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgY29uc3QgTW9kZWxDbGFzcyA9IHRoaXMuZ2V0TW9kZWxDbGFzcygpXG4gICAgICBjb25zdCBtb2RlbCA9IC8qKiBAdHlwZSB7SW5zdGFuY2VUeXBlPE1DPn0gKi8gKG5ldyBNb2RlbENsYXNzKCkpXG5cbiAgICAgIG1vZGVsLmxvYWRFeGlzdGluZ1JlY29yZChyZXN1bHQpXG4gICAgICBtb2RlbHMucHVzaChtb2RlbClcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5fcHJlbG9hZCkubGVuZ3RoID4gMCAmJiBtb2RlbHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcHJlbG9hZGVyID0gbmV3IFByZWxvYWRlcih7XG4gICAgICAgIG1vZGVsQ2xhc3M6IHRoaXMubW9kZWxDbGFzcyxcbiAgICAgICAgbW9kZWxzLFxuICAgICAgICBwcmVsb2FkOiB0aGlzLl9wcmVsb2FkXG4gICAgICB9KVxuXG4gICAgICBhd2FpdCBwcmVsb2FkZXIucnVuKClcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxzXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgcXVlcnkgcmVzdWx0cyB0byBhcnJheSBvZiBtb2RlbCBpbnN0YW5jZXNcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8SW5zdGFuY2VUeXBlPE1DPj4+fSAtIFJlc29sdmVzIHdpdGggdGhlIGFycmF5LlxuICAgKi9cbiAgYXN5bmMgdG9BcnJheSgpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2FkKClcbiAgfVxuXG4gIC8qKlxuICAgKiBQbHVja3Mgb25lIG9yIG1vcmUgY29sdW1ucyBkaXJlY3RseSBmcm9tIHRoZSBkYXRhYmFzZSB3aXRob3V0IGluc3RhbnRpYXRpbmcgbW9kZWxzLlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ3xzdHJpbmdbXX0gY29sdW1ucyAtIENvbHVtbiBuYW1lcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55W10+fSAtIFJlc29sdmVzIHdpdGggdGhlIHBsdWNrLlxuICAgKi9cbiAgYXN5bmMgcGx1Y2soLi4uY29sdW1ucykge1xuICAgIGNvbnN0IGZsYXRDb2x1bW5zID0gY29sdW1ucy5mbGF0KClcblxuICAgIGlmIChmbGF0Q29sdW1ucy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbHVtbnMgZ2l2ZW4gdG8gcGx1Y2tcIilcblxuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSB0aGlzLmdldE1vZGVsQ2xhc3MoKVxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IG1vZGVsQ2xhc3MudGFibGVOYW1lKClcbiAgICBjb25zdCBhdHRyaWJ1dGVNYXAgPSBtb2RlbENsYXNzLmdldEF0dHJpYnV0ZU5hbWVUb0NvbHVtbk5hbWVNYXAoKVxuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gZmxhdENvbHVtbnMubWFwKChjb2x1bW4pID0+IGF0dHJpYnV0ZU1hcFtjb2x1bW5dIHx8IGNvbHVtbilcblxuICAgIGNvbnN0IHF1ZXJ5ID0gLyoqIEB0eXBlIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gKi8gKHRoaXMuY2xvbmUoKSlcblxuICAgIHF1ZXJ5Ll9wcmVsb2FkID0ge31cbiAgICBxdWVyeS5fc2VsZWN0cyA9IFtdXG5cbiAgICBjb2x1bW5OYW1lcy5mb3JFYWNoKChjb2x1bW5OYW1lKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RTcWwgPSBgJHt0aGlzLmRyaXZlci5xdW90ZVRhYmxlKHRhYmxlTmFtZSl9LiR7dGhpcy5kcml2ZXIucXVvdGVDb2x1bW4oY29sdW1uTmFtZSl9YFxuXG4gICAgICBxdWVyeS5zZWxlY3Qoc2VsZWN0U3FsKVxuICAgIH0pXG5cbiAgICBjb25zdCByb3dzID0gYXdhaXQgcXVlcnkuX2V4ZWN1dGVRdWVyeSgpXG5cbiAgICBpZiAoY29sdW1uTmFtZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBbY29sdW1uTmFtZV0gPSBjb2x1bW5OYW1lc1xuICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi8gKHJvdylbY29sdW1uTmFtZV0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgIGNvbnN0IHJvd0hhc2ggPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovIChyb3cpXG5cbiAgICAgIHJldHVybiBjb2x1bW5OYW1lcy5tYXAoKGNvbHVtbk5hbWUpID0+IHJvd0hhc2hbY29sdW1uTmFtZV0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuV2hlcmVBcmd1bWVudFR5cGV9IHdoZXJlIC0gV2hlcmUuXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGlzIHF1ZXJ5IGluc3RhbmNlXG4gICAqL1xuICB3aGVyZSh3aGVyZSkge1xuICAgIGlmICh0eXBlb2Ygd2hlcmUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHN1cGVyLndoZXJlKHdoZXJlKVxuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHdoZXJlKSkge1xuICAgICAgY29uc3Qge3Jlc29sdmVkSGFzaCwgZmFsbGJhY2tIYXNofSA9IHNwbGl0V2hlcmVIYXNoKHtoYXNoOiB3aGVyZSwgbW9kZWxDbGFzczogdGhpcy5nZXRNb2RlbENsYXNzKCl9KVxuICAgICAgY29uc3Qgam9pbk9iamVjdCA9IGJ1aWxkSm9pbk9iamVjdEZyb21XaGVyZUhhc2goe2hhc2g6IHdoZXJlLCBtb2RlbENsYXNzOiB0aGlzLmdldE1vZGVsQ2xhc3MoKX0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuam9pbnMoam9pbk9iamVjdClcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc29sdmVkSGFzaCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBxdWFsaWZ5QmFzZVRhYmxlID0gdGhpcy5nZXRGb3JjZVF1YWxpZnlCYXNlVGFibGUoKSB8fCBPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwXG4gICAgICAgIHRoaXMuX3doZXJlcy5wdXNoKG5ldyBXaGVyZU1vZGVsQ2xhc3NIYXNoKHtcbiAgICAgICAgICBoYXNoOiByZXNvbHZlZEhhc2gsXG4gICAgICAgICAgbW9kZWxDbGFzczogdGhpcy5nZXRNb2RlbENsYXNzKCksXG4gICAgICAgICAgcXVhbGlmeUJhc2VUYWJsZSxcbiAgICAgICAgICBxdWVyeTogdGhpc1xuICAgICAgICB9KSlcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGZhbGxiYWNrSGFzaCkubGVuZ3RoID4gMCkge1xuICAgICAgICBzdXBlci53aGVyZShmYWxsYmFja0hhc2gpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHR5cGUgb2Ygd2hlcmU6ICR7dHlwZW9mIHdoZXJlfSAoJHt3aGVyZS5jb25zdHJ1Y3Rvci5uYW1lfSlgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gcGFyYW1zIC0gUmFuc2Fjay1zdHlsZSBwYXJhbXMgaGFzaC5cbiAgICogQHJldHVybnMge3RoaXN9IC0gUXVlcnkgd2l0aCBSYW5zYWNrIGZpbHRlcnMgYXBwbGllZC5cbiAgICovXG4gIHJhbnNhY2socGFyYW1zKSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IG5vcm1hbGl6ZVJhbnNhY2tQYXJhbXModGhpcy5nZXRNb2RlbENsYXNzKCksIHBhcmFtcylcblxuICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgIGFwcGx5UmFuc2Fja0NvbmRpdGlvbih7Y29uZGl0aW9uLCBxdWVyeTogdGhpc30pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuV2hlcmVBcmd1bWVudFR5cGV9IHdoZXJlIC0gV2hlcmUuXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGlzIHF1ZXJ5IGluc3RhbmNlXG4gICAqL1xuICB3aGVyZU5vdCh3aGVyZSkge1xuICAgIGlmICh0eXBlb2Ygd2hlcmUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHN1cGVyLndoZXJlTm90KHdoZXJlKVxuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHdoZXJlKSkge1xuICAgICAgY29uc3Qge3Jlc29sdmVkSGFzaCwgZmFsbGJhY2tIYXNofSA9IHNwbGl0V2hlcmVIYXNoKHtoYXNoOiB3aGVyZSwgbW9kZWxDbGFzczogdGhpcy5nZXRNb2RlbENsYXNzKCl9KVxuICAgICAgY29uc3Qgam9pbk9iamVjdCA9IGJ1aWxkSm9pbk9iamVjdEZyb21XaGVyZUhhc2goe2hhc2g6IHdoZXJlLCBtb2RlbENsYXNzOiB0aGlzLmdldE1vZGVsQ2xhc3MoKX0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuam9pbnMoam9pbk9iamVjdClcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc29sdmVkSGFzaCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBxdWFsaWZ5QmFzZVRhYmxlID0gdGhpcy5nZXRGb3JjZVF1YWxpZnlCYXNlVGFibGUoKSB8fCBPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwXG4gICAgICAgIHRoaXMuX3doZXJlcy5wdXNoKG5ldyBXaGVyZU5vdChuZXcgV2hlcmVNb2RlbENsYXNzSGFzaCh7XG4gICAgICAgICAgaGFzaDogcmVzb2x2ZWRIYXNoLFxuICAgICAgICAgIG1vZGVsQ2xhc3M6IHRoaXMuZ2V0TW9kZWxDbGFzcygpLFxuICAgICAgICAgIHF1YWxpZnlCYXNlVGFibGUsXG4gICAgICAgICAgcXVlcnk6IHRoaXNcbiAgICAgICAgfSkpKVxuICAgICAgfVxuXG4gICAgICBpZiAoT2JqZWN0LmtleXMoZmFsbGJhY2tIYXNoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN1cGVyLndoZXJlTm90KGZhbGxiYWNrSGFzaClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBvZiB3aGVyZTogJHt0eXBlb2Ygd2hlcmV9ICgke3doZXJlLmNvbnN0cnVjdG9yLm5hbWV9KWApXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3V0aWxzL3JhbnNhY2suanNcIikuUmFuc2Fja0NvbmRpdGlvbn0gYXJncy5jb25kaXRpb24gLSBOb3JtYWxpemVkIFJhbnNhY2sgY29uZGl0aW9uLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55Pn0gYXJncy5xdWVyeSAtIFF1ZXJ5IGluc3RhbmNlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGFwcGx5UmFuc2Fja0NvbmRpdGlvbih7Y29uZGl0aW9uLCBxdWVyeX0pIHtcbiAgaWYgKGNvbmRpdGlvbi5wcmVkaWNhdGUgPT09IFwiZXFcIiB8fCBjb25kaXRpb24ucHJlZGljYXRlID09PSBcImluXCIpIHtcbiAgICBxdWVyeS53aGVyZShidWlsZE5lc3RlZFJhbnNhY2tIYXNoKHtjb25kaXRpb24sIHZhbHVlOiBjb25kaXRpb24udmFsdWV9KSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChjb25kaXRpb24ucHJlZGljYXRlID09PSBcIm5vdF9lcVwiIHx8IGNvbmRpdGlvbi5wcmVkaWNhdGUgPT09IFwibm90X2luXCIpIHtcbiAgICBxdWVyeS53aGVyZU5vdChidWlsZE5lc3RlZFJhbnNhY2tIYXNoKHtjb25kaXRpb24sIHZhbHVlOiBjb25kaXRpb24udmFsdWV9KSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChjb25kaXRpb24ucHJlZGljYXRlID09PSBcIm51bGxcIikge1xuICAgIGlmIChjb25kaXRpb24udmFsdWUpIHtcbiAgICAgIHF1ZXJ5LndoZXJlKGJ1aWxkTmVzdGVkUmFuc2Fja0hhc2goe2NvbmRpdGlvbiwgdmFsdWU6IG51bGx9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnkud2hlcmVOb3QoYnVpbGROZXN0ZWRSYW5zYWNrSGFzaCh7Y29uZGl0aW9uLCB2YWx1ZTogbnVsbH0pKVxuICAgIH1cblxuICAgIHJldHVyblxuICB9XG5cbiAgcXVlcnkud2hlcmUoYnVpbGROZXN0ZWRSYW5zYWNrVHVwbGVIYXNoKHtcbiAgICBjb25kaXRpb24sXG4gICAgb3BlcmF0b3I6IHJhbnNhY2tUdXBsZU9wZXJhdG9yKGNvbmRpdGlvbi5wcmVkaWNhdGUpLFxuICAgIHZhbHVlOiByYW5zYWNrVHVwbGVWYWx1ZShjb25kaXRpb24pXG4gIH0pKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vdXRpbHMvcmFuc2Fjay5qc1wiKS5SYW5zYWNrQ29uZGl0aW9ufSBhcmdzLmNvbmRpdGlvbiAtIE5vcm1hbGl6ZWQgUmFuc2FjayBjb25kaXRpb24uXG4gKiBAcGFyYW0ge2FueX0gYXJncy52YWx1ZSAtIEZpbmFsIHZhbHVlLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59IC0gTmVzdGVkIGhhc2ggc3VpdGFibGUgZm9yIHF1ZXJ5LndoZXJlL3F1ZXJ5LndoZXJlTm90LlxuICovXG5mdW5jdGlvbiBidWlsZE5lc3RlZFJhbnNhY2tIYXNoKHtjb25kaXRpb24sIHZhbHVlfSkge1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gIGxldCBoYXNoID0ge1tjb25kaXRpb24uYXR0cmlidXRlTmFtZV06IHZhbHVlfVxuXG4gIGZvciAobGV0IGluZGV4ID0gY29uZGl0aW9uLnBhdGgubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgIGhhc2ggPSB7W2NvbmRpdGlvbi5wYXRoW2luZGV4XV06IGhhc2h9XG4gIH1cblxuICByZXR1cm4gaGFzaFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vdXRpbHMvcmFuc2Fjay5qc1wiKS5SYW5zYWNrQ29uZGl0aW9ufSBhcmdzLmNvbmRpdGlvbiAtIE5vcm1hbGl6ZWQgUmFuc2FjayBjb25kaXRpb24uXG4gKiBAcGFyYW0ge1wiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIn0gYXJncy5vcGVyYXRvciAtIFR1cGxlIG9wZXJhdG9yLlxuICogQHBhcmFtIHthbnl9IGFyZ3MudmFsdWUgLSBGaW5hbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAtIE5lc3RlZCB0dXBsZSBoYXNoIHN1aXRhYmxlIGZvciBxdWVyeS53aGVyZS5cbiAqL1xuZnVuY3Rpb24gYnVpbGROZXN0ZWRSYW5zYWNrVHVwbGVIYXNoKHtjb25kaXRpb24sIG9wZXJhdG9yLCB2YWx1ZX0pIHtcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICBsZXQgaGFzaCA9IHtcbiAgICBbY29uZGl0aW9uLmF0dHJpYnV0ZU5hbWVdOiBbW2NvbmRpdGlvbi5hdHRyaWJ1dGVOYW1lLCBvcGVyYXRvciwgdmFsdWVdXVxuICB9XG5cbiAgZm9yIChsZXQgaW5kZXggPSBjb25kaXRpb24ucGF0aC5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgaGFzaCA9IHtbY29uZGl0aW9uLnBhdGhbaW5kZXhdXTogaGFzaH1cbiAgfVxuXG4gIHJldHVybiBoYXNoXG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi91dGlscy9yYW5zYWNrLmpzXCIpLlJhbnNhY2tQcmVkaWNhdGV9IHByZWRpY2F0ZSAtIFJhbnNhY2sgcHJlZGljYXRlLlxuICogQHJldHVybnMge1wiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIn0gLSBRdWVyeSB0dXBsZSBvcGVyYXRvci5cbiAqL1xuZnVuY3Rpb24gcmFuc2Fja1R1cGxlT3BlcmF0b3IocHJlZGljYXRlKSB7XG4gIGlmIChwcmVkaWNhdGUgPT09IFwiZ3RcIiB8fCBwcmVkaWNhdGUgPT09IFwiZ3RlcVwiIHx8IHByZWRpY2F0ZSA9PT0gXCJsdFwiIHx8IHByZWRpY2F0ZSA9PT0gXCJsdGVxXCIpIHtcbiAgICByZXR1cm4gcHJlZGljYXRlXG4gIH1cblxuICByZXR1cm4gXCJsaWtlXCJcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3V0aWxzL3JhbnNhY2suanNcIikuUmFuc2Fja0NvbmRpdGlvbn0gY29uZGl0aW9uIC0gUmFuc2FjayBjb25kaXRpb24uXG4gKiBAcmV0dXJucyB7YW55fSAtIFF1ZXJ5IHR1cGxlIHZhbHVlLlxuICovXG5mdW5jdGlvbiByYW5zYWNrVHVwbGVWYWx1ZShjb25kaXRpb24pIHtcbiAgaWYgKGNvbmRpdGlvbi5wcmVkaWNhdGUgPT09IFwiY29udFwiKSByZXR1cm4gYCUke2NvbmRpdGlvbi52YWx1ZX0lYFxuICBpZiAoY29uZGl0aW9uLnByZWRpY2F0ZSA9PT0gXCJzdGFydFwiKSByZXR1cm4gYCR7Y29uZGl0aW9uLnZhbHVlfSVgXG4gIGlmIChjb25kaXRpb24ucHJlZGljYXRlID09PSBcImVuZFwiKSByZXR1cm4gYCUke2NvbmRpdGlvbi52YWx1ZX1gXG5cbiAgcmV0dXJuIGNvbmRpdGlvbi52YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpb25zaGlwTmFtZSAtIFJlbGF0aW9uc2hpcCBuYW1lLlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL3JlY29yZC9yZWxhdGlvbnNoaXBzL2Jhc2UuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gLSBUaGUgcmVsYXRpb25zaGlwLlxuICovXG5mdW5jdGlvbiBnZXRSZWxhdGlvbnNoaXBCeU5hbWUobW9kZWxDbGFzcywgcmVsYXRpb25zaGlwTmFtZSkge1xuICByZXR1cm4gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzTWFwKClbcmVsYXRpb25zaGlwTmFtZV1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIEF0dHJpYnV0ZSBvciBjb2x1bW4gbmFtZS5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIHJlc29sdmVkIGNvbHVtbiBuYW1lLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29sdW1uTmFtZShtb2RlbENsYXNzLCBrZXkpIHtcbiAgY29uc3QgYXR0cmlidXRlTWFwID0gbW9kZWxDbGFzcy5nZXRBdHRyaWJ1dGVOYW1lVG9Db2x1bW5OYW1lTWFwKClcblxuICBpZiAoYXR0cmlidXRlTWFwW2tleV0pIHJldHVybiBhdHRyaWJ1dGVNYXBba2V5XVxuXG4gIGNvbnN0IGNvbHVtbk1hcCA9IG1vZGVsQ2xhc3MuZ2V0Q29sdW1uTmFtZVRvQXR0cmlidXRlTmFtZU1hcCgpXG4gIGNvbnN0IHVuZGVyc2NvcmVkID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGtleSlcblxuICByZXR1cm4gY29sdW1uTWFwW2tleV0gfHwgY29sdW1uTWFwW3VuZGVyc2NvcmVkXSB8fCB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MuaGFzaCAtIFdoZXJlIGhhc2guXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gKiBAcmV0dXJucyB7e3Jlc29sdmVkSGFzaDogUmVjb3JkPHN0cmluZywgYW55PiwgZmFsbGJhY2tIYXNoOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fX0gLSBTcGxpdCBoYXNoZXMuXG4gKi9cbmZ1bmN0aW9uIHNwbGl0V2hlcmVIYXNoKHtoYXNoLCBtb2RlbENsYXNzfSkge1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gIGNvbnN0IHJlc29sdmVkSGFzaCA9IHt9XG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgY29uc3QgZmFsbGJhY2tIYXNoID0ge31cblxuICBmb3IgKGNvbnN0IGtleSBpbiBoYXNoKSB7XG4gICAgY29uc3QgdmFsdWUgPSBoYXNoW2tleV1cbiAgICBjb25zdCBpc05lc3RlZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwID0gZ2V0UmVsYXRpb25zaGlwQnlOYW1lKG1vZGVsQ2xhc3MsIGtleSlcblxuICAgIGlmIChpc05lc3RlZCkge1xuICAgICAgaWYgKHJlbGF0aW9uc2hpcCkge1xuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuICAgICAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHtcbiAgICAgICAgICBmYWxsYmFja0hhc2hba2V5XSA9IHZhbHVlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXN0ZWRSZXN1bHQgPSBzcGxpdFdoZXJlSGFzaCh7aGFzaDogdmFsdWUsIG1vZGVsQ2xhc3M6IHRhcmdldE1vZGVsQ2xhc3N9KVxuICAgICAgICBjb25zdCBuZXN0ZWRSZXNvbHZlZEtleXMgPSBPYmplY3Qua2V5cyhuZXN0ZWRSZXN1bHQucmVzb2x2ZWRIYXNoKVxuICAgICAgICBjb25zdCBuZXN0ZWRGYWxsYmFja0tleXMgPSBPYmplY3Qua2V5cyhuZXN0ZWRSZXN1bHQuZmFsbGJhY2tIYXNoKVxuXG4gICAgICAgIGlmIChuZXN0ZWRSZXNvbHZlZEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJlc29sdmVkSGFzaFtrZXldID0gbmVzdGVkUmVzdWx0LnJlc29sdmVkSGFzaFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5lc3RlZEZhbGxiYWNrS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gdGFyZ2V0TW9kZWxDbGFzcy50YWJsZU5hbWUoKVxuXG4gICAgICAgICAgaWYgKCFmYWxsYmFja0hhc2hbdGFibGVOYW1lXSkgZmFsbGJhY2tIYXNoW3RhYmxlTmFtZV0gPSB7fVxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmFsbGJhY2tIYXNoW3RhYmxlTmFtZV0sIG5lc3RlZFJlc3VsdC5mYWxsYmFja0hhc2gpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhbGxiYWNrSGFzaFtrZXldID0gdmFsdWVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlbGF0aW9uc2hpcCAmJiBoYXNSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKSkge1xuICAgICAgcmVzb2x2ZWRIYXNoW2tleV0gPSBub3JtYWxpemVSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2x1bW5OYW1lID0gcmVzb2x2ZUNvbHVtbk5hbWUobW9kZWxDbGFzcywga2V5KVxuXG4gICAgICBpZiAoY29sdW1uTmFtZSkge1xuICAgICAgICByZXNvbHZlZEhhc2hba2V5XSA9IHZhbHVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWxsYmFja0hhc2hba2V5XSA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtyZXNvbHZlZEhhc2gsIGZhbGxiYWNrSGFzaH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MuaGFzaCAtIFdoZXJlIGhhc2guXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55Pn0gLSBKb2luIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRKb2luT2JqZWN0RnJvbVdoZXJlSGFzaCh7aGFzaCwgbW9kZWxDbGFzc30pIHtcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICBjb25zdCBqb2luT2JqZWN0ID0ge31cblxuICBmb3IgKGNvbnN0IGtleSBpbiBoYXNoKSB7XG4gICAgY29uc3QgdmFsdWUgPSBoYXNoW2tleV1cbiAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBnZXRSZWxhdGlvbnNoaXBCeU5hbWUobW9kZWxDbGFzcywga2V5KVxuXG4gICAgaWYgKCFyZWxhdGlvbnNoaXApIGNvbnRpbnVlXG5cbiAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG4gICAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIGNvbnRpbnVlXG4gICAgICBjb25zdCBuZXN0ZWRKb2luT2JqZWN0ID0gYnVpbGRKb2luT2JqZWN0RnJvbVdoZXJlSGFzaCh7aGFzaDogdmFsdWUsIG1vZGVsQ2xhc3M6IHRhcmdldE1vZGVsQ2xhc3N9KVxuXG4gICAgICBqb2luT2JqZWN0W2tleV0gPSBPYmplY3Qua2V5cyhuZXN0ZWRKb2luT2JqZWN0KS5sZW5ndGggPiAwID8gbmVzdGVkSm9pbk9iamVjdCA6IHRydWVcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGhhc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXModmFsdWUpKSB7XG4gICAgICBqb2luT2JqZWN0W2tleV0gPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGpvaW5PYmplY3Rcbn1cblxuY29uc3QgcmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvcnMgPSBuZXcgU2V0KFtcImVxXCIsIFwibm90RXFcIiwgXCJndFwiLCBcImd0ZXFcIiwgXCJsdFwiLCBcImx0ZXFcIiwgXCJsaWtlXCIsIFwiPlwiLCBcIj49XCIsIFwiPFwiLCBcIjw9XCJdKVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvciAtIFJhdyByZWxhdGlvbnNoaXAgd2hlcmUgb3BlcmF0b3IuXG4gKiBAcmV0dXJucyB7XCJlcVwiIHwgXCJub3RFcVwiIHwgXCJndFwiIHwgXCJndGVxXCIgfCBcImx0XCIgfCBcImx0ZXFcIiB8IFwibGlrZVwifSAtIE5vcm1hbGl6ZWQgb3BlcmF0b3IuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3Iob3BlcmF0b3IpIHtcbiAgY29uc3Qgb3BlcmF0b3JBbGlhc2VzID0ge1xuICAgIFwiPFwiOiBcImx0XCIsXG4gICAgXCI8PVwiOiBcImx0ZXFcIixcbiAgICBcIj5cIjogXCJndFwiLFxuICAgIFwiPj1cIjogXCJndGVxXCJcbiAgfVxuXG4gIHJldHVybiAvKiogQHR5cGUge1wiZXFcIiB8IFwibm90RXFcIiB8IFwiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIn0gKi8gKFxuICAgIG9wZXJhdG9yQWxpYXNlc1svKiogQHR5cGUge1wiPFwiIHwgXCI8PVwiIHwgXCI+XCIgfCBcIj49XCJ9ICovIChvcGVyYXRvcildIHx8IG9wZXJhdG9yXG4gIClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IHR1cGxlVmFsdWUgLSBDYW5kaWRhdGUgdHVwbGUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoaXMgaXMgYSByZWxhdGlvbnNoaXAgd2hlcmUgdHVwbGUuXG4gKi9cbmZ1bmN0aW9uIGlzUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlKHR1cGxlVmFsdWUpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHR1cGxlVmFsdWUpIHx8IHR1cGxlVmFsdWUubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiB0dXBsZVZhbHVlWzBdID09PSBcInN0cmluZ1wiICYmXG4gICAgdHlwZW9mIHR1cGxlVmFsdWVbMV0gPT09IFwic3RyaW5nXCIgJiZcbiAgICByZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9ycy5oYXModHVwbGVWYWx1ZVsxXSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gQ2FuZGlkYXRlIHZhbHVlLlxuICogQHJldHVybnMge0FycmF5PFtzdHJpbmcsIFwiZXFcIiB8IFwibm90RXFcIiB8IFwiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIiwgYW55XT59IC0gTm9ybWFsaXplZCB0dXBsZXMuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXModmFsdWUpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZWxhdGlvbnNoaXAgd2hlcmUgdHVwbGUgY29udGFpbmVyIHR5cGU6ICR7dHlwZW9mIHZhbHVlfWApXG4gIH1cblxuICAvKiogQHR5cGUge0FycmF5PFtzdHJpbmcsIFwiZXFcIiB8IFwibm90RXFcIiB8IFwiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIiwgYW55XT59ICovXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBbXVxuICAgIC8qKiBAcGFyYW0ge3Vua25vd259IGNvbmRpdGlvblZhbHVlIC0gQ2FuZGlkYXRlIG5lc3RlZCBjb25kaXRpb24uICovXG4gICAgY29uc3QgYWRkQ29uZGl0aW9uID0gKGNvbmRpdGlvblZhbHVlKSA9PiB7XG4gICAgICBpZiAoaXNSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGUoY29uZGl0aW9uVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHR1cGxlID0gLyoqIEB0eXBlIHtbc3RyaW5nLCBcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCIgfCBcIj5cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI8PVwiLCBhbnksIC4uLnVua25vd25bXV19ICovIChjb25kaXRpb25WYWx1ZSlcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZE9wZXJhdG9yID0gbm9ybWFsaXplUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvcih0dXBsZVsxXSlcblxuICAgICAgICBub3JtYWxpemVkLnB1c2goW1xuICAgICAgICAgIHR1cGxlWzBdLFxuICAgICAgICAgIG5vcm1hbGl6ZWRPcGVyYXRvcixcbiAgICAgICAgICB0dXBsZVsyXVxuICAgICAgICBdKVxuXG4gICAgICAgIGlmICh0dXBsZS5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAzOyBpbmRleCA8IHR1cGxlLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgYWRkQ29uZGl0aW9uKHR1cGxlW2luZGV4XSlcbiAgICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb25kaXRpb25WYWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlbGF0aW9uc2hpcCB3aGVyZSBjb25kaXRpb25zIG11c3QgYmUgdHVwbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHt1bmtub3duW119ICovIChjb25kaXRpb25WYWx1ZSkuZm9yRWFjaCgobmVzdGVkQ29uZGl0aW9uVmFsdWUpID0+IHtcbiAgICAgIGFkZENvbmRpdGlvbihuZXN0ZWRDb25kaXRpb25WYWx1ZSlcbiAgICB9KVxuICB9XG5cbiAgYWRkQ29uZGl0aW9uKHZhbHVlKVxuXG4gIGlmIChub3JtYWxpemVkLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWxhdGlvbnNoaXAgd2hlcmUgdHVwbGUgY29udGFpbmVyIGNhbm5vdCBiZSBlbXB0eVwiKVxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gQ2FuZGlkYXRlIHJlbGF0aW9uc2hpcCB3aGVyZSB2YWx1ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdmFsdWUgY2FuIGJlIG5vcm1hbGl6ZWQgdG8gcmVsYXRpb25zaGlwIHR1cGxlcy5cbiAqL1xuZnVuY3Rpb24gaGFzUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlcyh2YWx1ZSkge1xuICB0cnkge1xuICAgIG5vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXModmFsdWUpXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl19
792
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY2xhc3MtcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFBO0FBQ3RDLE9BQU8sYUFBYSxNQUFNLFlBQVksQ0FBQTtBQUN0QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLG1CQUFtQixNQUFNLHFDQUFxQyxDQUFBO0FBQ3JFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFBO0FBQzdELE9BQU8sbUJBQW1CLE1BQU0sNkJBQTZCLENBQUE7QUFDN0QsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUE7QUFFckM7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxLQUFLO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUU1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4SSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENB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QUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JELFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtnQkFDNUIsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFFRCx3QkFBd0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixFQUFFLEVBQUU7WUFDekUsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDcEMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUE7SUFFRCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFbkIsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsa0NBQWtDLENBQUMsS0FBSztJQUMvQyxJQUFJLENBQUM7UUFDSCx3Q0FBd0MsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUUvQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gXCJpcy1wbGFpbi1vYmplY3RcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBQcmVsb2FkZXIgZnJvbSBcIi4vcHJlbG9hZGVyLmpzXCJcbmltcG9ydCBEYXRhYmFzZVF1ZXJ5IGZyb20gXCIuL2luZGV4LmpzXCJcbmltcG9ydCBKb2luVHJhY2tlciBmcm9tIFwiLi9qb2luLXRyYWNrZXIuanNcIlxuaW1wb3J0IFJlY29yZE5vdEZvdW5kRXJyb3IgZnJvbSBcIi4uL3JlY29yZC9yZWNvcmQtbm90LWZvdW5kLWVycm9yLmpzXCJcbmltcG9ydCB7bm9ybWFsaXplUmFuc2Fja1BhcmFtc30gZnJvbSBcIi4uLy4uL3V0aWxzL3JhbnNhY2suanNcIlxuaW1wb3J0IFdoZXJlTW9kZWxDbGFzc0hhc2ggZnJvbSBcIi4vd2hlcmUtbW9kZWwtY2xhc3MtaGFzaC5qc1wiXG5pbXBvcnQgV2hlcmVOb3QgZnJvbSBcIi4vd2hlcmUtbm90LmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBQb3RlbnRpYWxseSBxdW90ZWQgU1FMIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFVucXVvdGVkIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIHVucXVvdGVTcWxJZGVudGlmaWVyKHZhbHVlKSB7XG4gIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcblxuICBpZiAodHJpbW1lZC5sZW5ndGggPj0gMiAmJiAoKHRyaW1tZWQuc3RhcnRzV2l0aChcImBcIikgJiYgdHJpbW1lZC5lbmRzV2l0aChcImBcIikpIHx8ICh0cmltbWVkLnN0YXJ0c1dpdGgoXCJcXFwiXCIpICYmIHRyaW1tZWQuZW5kc1dpdGgoXCJcXFwiXCIpKSkpIHtcbiAgICByZXR1cm4gdHJpbW1lZC5zbGljZSgxLCAtMSlcbiAgfVxuXG4gIGlmICh0cmltbWVkLmxlbmd0aCA+PSAyICYmIHRyaW1tZWQuc3RhcnRzV2l0aChcIltcIikgJiYgdHJpbW1lZC5lbmRzV2l0aChcIl1cIikpIHtcbiAgICByZXR1cm4gdHJpbW1lZC5zbGljZSgxLCAtMSlcbiAgfVxuXG4gIHJldHVybiB0cmltbWVkXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZyb21QbGFpbiAtIEZST00gY2xhdXNlIHNvdXJjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsfSAtIFBhcnNlZCB0YWJsZSByZWZlcmVuY2Ugb3IgbnVsbCB3aGVuIHVuc3VwcG9ydGVkLlxuICovXG5mdW5jdGlvbiBwYXJzZUZyb21QbGFpblRhYmxlUmVmZXJlbmNlKGZyb21QbGFpbikge1xuICBjb25zdCB0cmltbWVkID0gZnJvbVBsYWluLnRyaW0oKVxuXG4gIGlmICh0cmltbWVkLmxlbmd0aCA8IDEpIHJldHVybiBudWxsXG5cbiAgY29uc3QgYWxpYXNNYXRjaCA9IHRyaW1tZWQubWF0Y2goLyg/Ol58XFxzKSg/OkFTXFxzKyk/KFtgXCJdP1thLXpBLVpfXVthLXpBLVowLTlfXSpbYFwiXT98XFxbW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXSlcXHMqJC9pKVxuXG4gIGlmICghYWxpYXNNYXRjaCB8fCAhYWxpYXNNYXRjaFsxXSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gdW5xdW90ZVNxbElkZW50aWZpZXIoYWxpYXNNYXRjaFsxXSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuTmVzdGVkUHJlbG9hZFJlY29yZCB8IHN0cmluZyB8IHN0cmluZ1tdfSBwcmVsb2FkIC0gUHJlbG9hZCBkYXRhIGluIHNob3J0aGFuZCBvciBuZXN0ZWQgZm9ybS5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmR9IC0gTm9ybWFsaXplZCBwcmVsb2FkIHJlY29yZC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUHJlbG9hZFJlY29yZChwcmVsb2FkKSB7XG4gIGlmICghcHJlbG9hZCkgcmV0dXJuIHt9XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkID09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4ge1twcmVsb2FkXTogdHJ1ZX1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHByZWxvYWQpKSB7XG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk5lc3RlZFByZWxvYWRSZWNvcmR9ICovXG4gICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgcHJlbG9hZCkge1xuICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlc3VsdFtlbnRyeV0gPSB0cnVlXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgICBpbmNvcnBvcmF0ZShyZXN1bHQsIG5vcm1hbGl6ZVByZWxvYWRSZWNvcmQoZW50cnkpKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJlbG9hZCBlbnRyeSB0eXBlOiAke3R5cGVvZiBlbnRyeX1gKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGlmICghaXNQbGFpbk9iamVjdChwcmVsb2FkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwcmVsb2FkIHR5cGU6ICR7dHlwZW9mIHByZWxvYWR9YClcbiAgfVxuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkfSAqL1xuICBjb25zdCByZXN1bHQgPSB7fVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByZWxvYWQpKSB7XG4gICAgaWYgKHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbm9ybWFsaXplUHJlbG9hZFJlY29yZCh2YWx1ZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByZWxvYWQgdmFsdWUgZm9yICR7a2V5fTogJHt0eXBlb2YgdmFsdWV9YClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gW01DPXR5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdF1cbiAqL1xuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gW01DPXR5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdF1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLlF1ZXJ5QXJnc1R5cGUgJiB7bW9kZWxDbGFzczogTUMsIGpvaW5CYXNlUGF0aD86IHN0cmluZ1tdLCBqb2luVHJhY2tlcj86IGltcG9ydChcIi4vam9pbi10cmFja2VyLmpzXCIpLmRlZmF1bHQsIGZvcmNlUXVhbGlmeUJhc2VUYWJsZT86IGJvb2xlYW59fSBNb2RlbENsYXNzUXVlcnlBcmdzVHlwZVxuICovXG5cbi8qKlxuICogQSBnZW5lcmljIHF1ZXJ5IG92ZXIgc29tZSBtb2RlbCB0eXBlLlxuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IFtNQz10eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnkgZXh0ZW5kcyBEYXRhYmFzZVF1ZXJ5IHtcbiAgLyoqIEBwYXJhbSB7TW9kZWxDbGFzc1F1ZXJ5QXJnc1R5cGU8TUM+fSBhcmdzIC0gUXVlcnkgY29uc3RydWN0b3IgYXJndW1lbnRzLiAqL1xuICBjb25zdHJ1Y3RvcihhcmdzKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gYXJnc1xuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vZGVsQ2xhc3MgZ2l2ZW4gaW4gJHtPYmplY3Qua2V5cyhhcmdzKS5qb2luKFwiLCBcIil9YClcblxuICAgIHN1cGVyKGFyZ3MpXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG5cbiAgICAvKiogQHR5cGUge01DfSAqL1xuICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5fam9pbkJhc2VQYXRoID0gYXJncy5qb2luQmFzZVBhdGggfHwgW11cbiAgICB0aGlzLl9qb2luVHJhY2tlciA9IGFyZ3Muam9pblRyYWNrZXIgfHwgbmV3IEpvaW5UcmFja2VyKHttb2RlbENsYXNzOiB0aGlzLm1vZGVsQ2xhc3N9KVxuICAgIHRoaXMuX2ZvcmNlUXVhbGlmeUJhc2VUYWJsZSA9IEJvb2xlYW4oYXJncy5mb3JjZVF1YWxpZnlCYXNlVGFibGUpXG4gIH1cblxuICAvKiogQHJldHVybnMge3RoaXN9IC0gVGhlIGNsb25lLiAgKi9cbiAgY2xvbmUoKSB7XG4gICAgY29uc3QgbmV3UXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAobmV3IFZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnkoe1xuICAgICAgZHJpdmVyOiB0aGlzLl9kcml2ZXJGbixcbiAgICAgIGZyb21zOiBbLi4udGhpcy5fZnJvbXNdLFxuICAgICAgaGFuZGxlcjogdGhpcy5oYW5kbGVyLmNsb25lKCksXG4gICAgICBncm91cHM6IFsuLi50aGlzLl9ncm91cHNdLFxuICAgICAgam9pbnM6IFsuLi50aGlzLl9qb2luc10sXG4gICAgICBsaW1pdDogdGhpcy5fbGltaXQsXG4gICAgICBtb2RlbENsYXNzOiB0aGlzLm1vZGVsQ2xhc3MsXG4gICAgICBvZmZzZXQ6IHRoaXMuX29mZnNldCxcbiAgICAgIG9yZGVyczogWy4uLnRoaXMuX29yZGVyc10sXG4gICAgICBwYWdlOiB0aGlzLl9wYWdlLFxuICAgICAgcGVyUGFnZTogdGhpcy5fcGVyUGFnZSxcbiAgICAgIHByZWxvYWQ6IHsuLi50aGlzLl9wcmVsb2FkfSxcbiAgICAgIGRpc3RpbmN0OiB0aGlzLl9kaXN0aW5jdCxcbiAgICAgIHNlbGVjdHM6IFsuLi50aGlzLl9zZWxlY3RzXSxcbiAgICAgIHdoZXJlczogWy4uLnRoaXMuX3doZXJlc10sXG4gICAgICBqb2luQmFzZVBhdGg6IFsuLi50aGlzLl9qb2luQmFzZVBhdGhdLFxuICAgICAgam9pblRyYWNrZXI6IHRoaXMuX2pvaW5UcmFja2VyLmNsb25lKCksXG4gICAgICBmb3JjZVF1YWxpZnlCYXNlVGFibGU6IHRoaXMuX2ZvcmNlUXVhbGlmeUJhc2VUYWJsZVxuICAgIH0pKVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBuZXdRdWVyeVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgY291bnQuICAqL1xuICBhc3luYyBjb3VudCgpIHtcbiAgICAvLyBHZW5lcmF0ZSBjb3VudCBTUUxcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gYCR7dGhpcy5kcml2ZXIucXVvdGVUYWJsZSh0aGlzLmdldE1vZGVsQ2xhc3MoKS50YWJsZU5hbWUoKSl9LiR7dGhpcy5kcml2ZXIucXVvdGVDb2x1bW4odGhpcy5nZXRNb2RlbENsYXNzKCkucHJpbWFyeUtleSgpKX1gXG4gICAgY29uc3QgZGlzdGluY3RQcmVmaXggPSB0aGlzLl9kaXN0aW5jdCA/IFwiRElTVElOQ1QgXCIgOiBcIlwiXG4gICAgbGV0IHNxbCA9IGBDT1VOVCgke2Rpc3RpbmN0UHJlZml4fSR7cHJpbWFyeUtleX0pYFxuXG4gICAgaWYgKHRoaXMuZHJpdmVyLmdldFR5cGUoKSA9PSBcInBnc3FsXCIpIHNxbCArPSBcIjo6aW50XCJcblxuICAgIHNxbCArPSBcIiBBUyBjb3VudFwiXG5cblxuICAgIC8vIENsb25lIHF1ZXJ5IGFuZCBleGVjdXRlIGNvdW50XG4gICAgY29uc3QgY291bnRRdWVyeSA9IHRoaXMuY2xvbmUoKVxuXG4gICAgY291bnRRdWVyeS5fZGlzdGluY3QgPSBmYWxzZVxuICAgIGNvdW50UXVlcnkuX3NlbGVjdHMgPSBbXVxuICAgIGNvdW50UXVlcnkuc2VsZWN0KHNxbClcblxuICAgIGNvbnN0IHJlc3VsdHMgPSAvKiogQHR5cGUge3tjb3VudDogbnVtYmVyfVtdfSAqLyAoYXdhaXQgY291bnRRdWVyeS5fZXhlY3V0ZVF1ZXJ5KCkpXG5cbiAgICAvLyBUaGUgcXVlcnkgaXNuJ3QgZ3JvdXBlZCBhbmQgYSBzaW5nbGUgcmVzdWx0IGhhcyBiZWVuIGdpdmVuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09IDEpIHtcbiAgICAgIHJldHVybiByZXN1bHRzWzBdLmNvdW50XG4gICAgfVxuXG4gICAgLy8gVGhlIHF1ZXJ5IG1heSBiZSBncm91cGVkIGFuZCBhIGxvdCBvZiBkaWZmZXJlbnQgY291bnRzIGEgZ2l2ZW5cbiAgICBsZXQgY291bnRSZXN1bHQgPSAwXG5cbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICBpZiAoIShcImNvdW50XCIgaW4gcmVzdWx0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvdW50IHJlc3VsdFwiKVxuICAgICAgfVxuXG4gICAgICBjb3VudFJlc3VsdCArPSByZXN1bHQuY291bnRcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRSZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuU2VsZWN0QXJndW1lbnRUeXBlfSBzZWxlY3QgLSBTZWxlY3QuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBzZWxlY3QuXG4gICAqL1xuICBzZWxlY3Qoc2VsZWN0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0KSkge1xuICAgICAgZm9yIChjb25zdCBzZWxlY3RFbnRyeSBvZiBzZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Qoc2VsZWN0RW50cnkpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3QgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWRTZWxlY3QgPSBzZWxlY3QudHJpbSgpXG5cbiAgICAgIGlmICgvXlthLXpBLVpfXVthLXpBLVowLTlfXSokLy50ZXN0KHRyaW1tZWRTZWxlY3QpKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSB0aGlzLmdldE1vZGVsQ2xhc3MoKVxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVNYXAgPSBtb2RlbENsYXNzLmdldEF0dHJpYnV0ZU5hbWVUb0NvbHVtbk5hbWVNYXAoKVxuICAgICAgICBjb25zdCBjb2x1bW5OYW1lID0gYXR0cmlidXRlTWFwW3RyaW1tZWRTZWxlY3RdIHx8IHRyaW1tZWRTZWxlY3RcbiAgICAgICAgY29uc3QgdGFibGVSZWZlcmVuY2UgPSB0aGlzLnJvb3RUYWJsZVJlZmVyZW5jZSgpXG4gICAgICAgIGNvbnN0IHF1YWxpZmllZENvbHVtbiA9IGAke3RoaXMuZHJpdmVyLnF1b3RlVGFibGUodGFibGVSZWZlcmVuY2UpfS4ke3RoaXMuZHJpdmVyLnF1b3RlQ29sdW1uKGNvbHVtbk5hbWUpfWBcblxuICAgICAgICByZXR1cm4gc3VwZXIuc2VsZWN0KHF1YWxpZmllZENvbHVtbilcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuc2VsZWN0KHNlbGVjdClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJvb3QgdGFibGUgcmVmZXJlbmNlIGZvciBxdWVyeSBzZWxlY3QgcXVhbGlmaWNhdGlvbi5cbiAgICovXG4gIHJvb3RUYWJsZVJlZmVyZW5jZSgpIHtcbiAgICBjb25zdCBmcm9tcyA9IHRoaXMuZ2V0RnJvbXMoKVxuICAgIGNvbnN0IGxhc3RGcm9tID0gZnJvbXNbZnJvbXMubGVuZ3RoIC0gMV1cblxuICAgIGlmIChsYXN0RnJvbSAmJiB0eXBlb2YgLyoqIEB0eXBlIHthbnl9ICovIChsYXN0RnJvbSkudGFibGVOYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gLyoqIEB0eXBlIHthbnl9ICovIChsYXN0RnJvbSkudGFibGVOYW1lXG4gICAgfVxuXG4gICAgaWYgKGxhc3RGcm9tICYmIHR5cGVvZiAvKiogQHR5cGUge2FueX0gKi8gKGxhc3RGcm9tKS5wbGFpbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgcGFyc2VkUmVmZXJlbmNlID0gcGFyc2VGcm9tUGxhaW5UYWJsZVJlZmVyZW5jZSgvKiogQHR5cGUge2FueX0gKi8gKGxhc3RGcm9tKS5wbGFpbilcblxuICAgICAgaWYgKHBhcnNlZFJlZmVyZW5jZSkgcmV0dXJuIHBhcnNlZFJlZmVyZW5jZVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFRhYmxlUmVmZXJlbmNlRm9ySm9pbigpXG4gIH1cblxuICAvKiogQHJldHVybnMge01DfSAtIFRoZSBtb2RlbCBjbGFzcy4gICovXG4gIGdldE1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIm1vZGVsQ2xhc3Mgbm90IHNldFwiKVxuXG4gICAgcmV0dXJuIHRoaXMubW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBUaGUgam9pbiBiYXNlIHBhdGguICovXG4gIGdldEpvaW5CYXNlUGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fam9pbkJhc2VQYXRoXG4gIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4vam9pbi10cmFja2VyLmpzXCIpLmRlZmF1bHR9IC0gVGhlIGpvaW4gdHJhY2tlci4gKi9cbiAgZ2V0Sm9pblRyYWNrZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2pvaW5UcmFja2VyXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0byBxdWFsaWZ5IGJhc2UgdGFibGUuICovXG4gIGdldEZvcmNlUXVhbGlmeUJhc2VUYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VRdWFsaWZ5QmFzZVRhYmxlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gam9pbkJhc2VQYXRoIC0gSm9pbiBiYXNlIHBhdGguXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBxdWVyeSB3aXRoIHVwZGF0ZWQgYmFzZSBwYXRoLlxuICAgKi9cbiAgc2V0Sm9pbkJhc2VQYXRoKGpvaW5CYXNlUGF0aCkge1xuICAgIHRoaXMuX2pvaW5CYXNlUGF0aCA9IGpvaW5CYXNlUGF0aFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gam9pbkJhc2VQYXRoIC0gSm9pbiBiYXNlIHBhdGguXG4gICAqIEByZXR1cm5zIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gLSBUaGUgc2NvcGVkIHF1ZXJ5LlxuICAgKi9cbiAgd2l0aEpvaW5QYXRoKGpvaW5CYXNlUGF0aCkge1xuICAgIGNvbnN0IHNjb3BlZFF1ZXJ5ID0gLyoqIEB0eXBlIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gKi8gKHRoaXMuY2xvbmUoKSlcblxuICAgIHNjb3BlZFF1ZXJ5Ll9qb2luQmFzZVBhdGggPSBqb2luQmFzZVBhdGhcbiAgICBzY29wZWRRdWVyeS5fam9pblRyYWNrZXIgPSB0aGlzLl9qb2luVHJhY2tlclxuXG4gICAgcmV0dXJuIHNjb3BlZFF1ZXJ5XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUYWJsZSBuYW1lIGZvciBwYXRoLlxuICAgKi9cbiAgX3Jlc29sdmVUYWJsZU5hbWVGb3JKb2luUGF0aChwYXRoKSB7XG4gICAgbGV0IG1vZGVsQ2xhc3MgPSB0aGlzLl9qb2luVHJhY2tlci5nZXRSb290TW9kZWxDbGFzcygpXG5cbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiBtb2RlbENsYXNzLnRhYmxlTmFtZSgpXG5cbiAgICBmb3IgKGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgb2YgcGF0aCkge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRhcmdldCBtb2RlbCBjbGFzcyBmb3IgJHttb2RlbENsYXNzLm5hbWV9IyR7cmVsYXRpb25zaGlwTmFtZX1gKVxuICAgICAgfVxuXG4gICAgICBtb2RlbENsYXNzID0gdGFyZ2V0TW9kZWxDbGFzc1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbENsYXNzLnRhYmxlTmFtZSgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3t0YWJsZU5hbWU6IHN0cmluZywgYWxpYXM6IHN0cmluZyB8IHVuZGVmaW5lZH19IC0gVGhlIGVudHJ5LlxuICAgKi9cbiAgX3JlZ2lzdGVySm9pblBhdGgocGF0aCkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMuX3Jlc29sdmVUYWJsZU5hbWVGb3JKb2luUGF0aChwYXRoKVxuXG4gICAgcmV0dXJuIHRoaXMuX2pvaW5UcmFja2VyLnJlZ2lzdGVyUGF0aChwYXRoLCB0YWJsZU5hbWUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBVbnF1b3RlZCB0YWJsZSByZWZlcmVuY2UgKGFsaWFzIG9yIHRhYmxlIG5hbWUpLlxuICAgKi9cbiAgZ2V0Sm9pblRhYmxlUmVmZXJlbmNlKHBhdGgpIHtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuX2pvaW5UcmFja2VyLmdldEVudHJ5KHBhdGgpIHx8IHRoaXMuX3JlZ2lzdGVySm9pblBhdGgocGF0aClcblxuICAgIHJldHVybiBlbnRyeS5hbGlhcyB8fCBlbnRyeS50YWJsZU5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ30gcGF0aCAtIEpvaW4gcGF0aCBzZWdtZW50cy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBVbnF1b3RlZCB0YWJsZSByZWZlcmVuY2UgKGFsaWFzIG9yIHRhYmxlIG5hbWUpLlxuICAgKi9cbiAgZ2V0VGFibGVSZWZlcmVuY2VGb3JKb2luKC4uLnBhdGgpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHRoaXMuX2pvaW5CYXNlUGF0aC5jb25jYXQocGF0aClcblxuICAgIHJldHVybiB0aGlzLmdldEpvaW5UYWJsZVJlZmVyZW5jZShmdWxsUGF0aClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ30gcGF0aCAtIEpvaW4gcGF0aCBzZWdtZW50cy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBRdW90ZWQgdGFibGUgbmFtZSBmb3Igam9pbiBwYXRoLlxuICAgKi9cbiAgZ2V0VGFibGVGb3JKb2luKC4uLnBhdGgpIHtcbiAgICByZXR1cm4gdGhpcy5kcml2ZXIucXVvdGVUYWJsZSh0aGlzLmdldFRhYmxlUmVmZXJlbmNlRm9ySm9pbiguLi5wYXRoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gdGFyZ2V0TW9kZWxDbGFzcyAtIFRhcmdldCBtb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gam9pblBhdGggLSBKb2luIHBhdGguXG4gICAqIEByZXR1cm5zIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gLSBUaGUgc2NvcGVkIGpvaW4gcXVlcnkuXG4gICAqL1xuICBidWlsZEpvaW5TY29wZVF1ZXJ5KHRhcmdldE1vZGVsQ2xhc3MsIGpvaW5QYXRoKSB7XG4gICAgY29uc3Qgc2NvcGVkUXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAodGFyZ2V0TW9kZWxDbGFzcy5fbmV3UXVlcnkoKSlcblxuICAgIHNjb3BlZFF1ZXJ5Ll9qb2luVHJhY2tlciA9IHRoaXMuX2pvaW5UcmFja2VyXG4gICAgc2NvcGVkUXVlcnkuX2pvaW5CYXNlUGF0aCA9IGpvaW5QYXRoXG4gICAgc2NvcGVkUXVlcnkuX2ZvcmNlUXVhbGlmeUJhc2VUYWJsZSA9IHRydWVcblxuICAgIHJldHVybiBzY29wZWRRdWVyeVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuICAqL1xuICBhc3luYyBkZXN0cm95QWxsKCkge1xuICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCB0aGlzLnRvQXJyYXkoKVxuXG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgYXdhaXQgcmVjb3JkLmRlc3Ryb3koKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IHJlY29yZElkIC0gUmVjb3JkIGlkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBmaW5kLlxuICAgKi9cbiAgYXN5bmMgZmluZChyZWNvcmRJZCkge1xuICAgIC8qKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZ319ICovXG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHt9XG5cbiAgICBjb25kaXRpb25zW3RoaXMuZ2V0TW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKV0gPSByZWNvcmRJZFxuXG4gICAgY29uc3QgbmV3UXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAodGhpcy5jbG9uZSgpKVxuXG4gICAgbmV3UXVlcnkud2hlcmUoY29uZGl0aW9ucylcblxuICAgIGNvbnN0IHJlY29yZCA9IChhd2FpdCBuZXdRdWVyeS5maXJzdCgpKVxuXG4gICAgaWYgKCFyZWNvcmQpIHtcbiAgICAgIHRocm93IG5ldyBSZWNvcmROb3RGb3VuZEVycm9yKGBDb3VsZG4ndCBmaW5kICR7dGhpcy5nZXRNb2RlbENsYXNzKCkubmFtZX0gd2l0aCAnJHt0aGlzLmdldE1vZGVsQ2xhc3MoKS5wcmltYXJ5S2V5KCl9Jz0ke3JlY29yZElkfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7e1trZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlcn19IGNvbmRpdGlvbnMgLSBDb25kaXRpb25zIGhhc2gga2V5ZWQgYnkgYXR0cmlidXRlIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEluc3RhbmNlVHlwZTxNQz4gfCBudWxsPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBieS5cbiAgICovXG4gIGFzeW5jIGZpbmRCeShjb25kaXRpb25zKSB7XG4gICAgY29uc3QgbmV3UXVlcnkgPSAvKiogQHR5cGUge1ZlbG9jaW91c0RhdGFiYXNlUXVlcnlNb2RlbENsYXNzUXVlcnk8TUM+fSAqLyAodGhpcy5jbG9uZSgpKVxuXG4gICAgbmV3UXVlcnkud2hlcmUoY29uZGl0aW9ucylcblxuICAgIHJldHVybiBhd2FpdCBuZXdRdWVyeS5maXJzdCgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyfX0gY29uZGl0aW9ucyAtIENvbmRpdGlvbnMgaGFzaCBrZXllZCBieSBhdHRyaWJ1dGUgbmFtZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihJbnN0YW5jZVR5cGU8TUM+KSA6IHZvaWR9IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8SW5zdGFuY2VUeXBlPE1DPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgb3IgY3JlYXRlIGJ5LlxuICAgKi9cbiAgYXN5bmMgZmluZE9yQ3JlYXRlQnkoY29uZGl0aW9ucywgY2FsbGJhY2spIHtcbiAgICBjb25zdCByZWNvcmQgPSBhd2FpdCB0aGlzLmZpbmRPckluaXRpYWxpemVCeShjb25kaXRpb25zLCBjYWxsYmFjaylcblxuICAgIGlmIChyZWNvcmQuaXNOZXdSZWNvcmQoKSkge1xuICAgICAgYXdhaXQgcmVjb3JkLnNhdmUoKVxuICAgIH1cblxuICAgIHJldHVybiByZWNvcmRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3tba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXJ9fSBjb25kaXRpb25zIC0gQ29uZGl0aW9ucyBoYXNoIGtleWVkIGJ5IGF0dHJpYnV0ZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBieSBvciBmYWlsLlxuICAgKi9cbiAgYXN5bmMgZmluZEJ5T3JGYWlsKGNvbmRpdGlvbnMpIHtcbiAgICBjb25zdCByZWNvcmQgPSBhd2FpdCB0aGlzLmZpbmRCeShjb25kaXRpb25zKVxuXG4gICAgaWYgKCFyZWNvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlY29yZCBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBjb25kaXRpb25zIC0gQ29uZGl0aW9ucy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihJbnN0YW5jZVR5cGU8TUM+KSA6IHZvaWR9IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8SW5zdGFuY2VUeXBlPE1DPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgb3IgaW5pdGlhbGl6ZSBieS5cbiAgICovXG4gIGFzeW5jIGZpbmRPckluaXRpYWxpemVCeShjb25kaXRpb25zLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMuZmluZEJ5KGNvbmRpdGlvbnMpXG5cbiAgICBpZiAocmVjb3JkKSByZXR1cm4gcmVjb3JkXG5cbiAgICBjb25zdCBNb2RlbENsYXNzID0gdGhpcy5nZXRNb2RlbENsYXNzKClcbiAgICBjb25zdCBuZXdSZWNvcmQgPSAvKiogQHR5cGUge0luc3RhbmNlVHlwZTxNQz59ICovIChuZXcgTW9kZWxDbGFzcyhjb25kaXRpb25zKSlcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobmV3UmVjb3JkKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdSZWNvcmRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+IHwgbnVsbD59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZmlyc3QuICAqL1xuICBhc3luYyBmaXJzdCgpIHtcbiAgICBjb25zdCBuZXdRdWVyeSA9IHRoaXMuY2xvbmUoKS5saW1pdCgxKS5yZW9yZGVyKGAke3RoaXMuZHJpdmVyLnF1b3RlVGFibGUodGhpcy5nZXRNb2RlbENsYXNzKCkudGFibGVOYW1lKCkpfS4ke3RoaXMuZHJpdmVyLnF1b3RlQ29sdW1uKHRoaXMuZ2V0TW9kZWxDbGFzcygpLm9yZGVyYWJsZUNvbHVtbigpKX1gKVxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBuZXdRdWVyeS50b0FycmF5KClcblxuICAgIHJldHVybiByZXN1bHRzWzBdIHx8IG51bGxcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8TUM+IHwgbnVsbD59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgbGFzdC4gICovXG4gIGFzeW5jIGxhc3QoKSB7XG4gICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMuZ2V0TW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKVxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMuZ2V0TW9kZWxDbGFzcygpLnRhYmxlTmFtZSgpXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuY2xvbmUoKS5yZW9yZGVyKGAke3RoaXMuZHJpdmVyLnF1b3RlVGFibGUodGFibGVOYW1lKX0uJHt0aGlzLmRyaXZlci5xdW90ZUNvbHVtbihwcmltYXJ5S2V5KX0gREVTQ2ApLmxpbWl0KDEpLnRvQXJyYXkoKVxuXG4gICAgcmV0dXJuIHJlc3VsdHNbMF0gfHwgbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5OZXN0ZWRQcmVsb2FkUmVjb3JkfSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgcHJlbG9hZC5cbiAgICovXG4gIHByZWxvYWQoZGF0YSkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmVsb2FkID0gbm9ybWFsaXplUHJlbG9hZFJlY29yZChkYXRhKVxuICAgIGluY29ycG9yYXRlKHRoaXMuX3ByZWxvYWQsIG5vcm1hbGl6ZWRQcmVsb2FkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcXVlcnkgcmVzdWx0cyBpbnRvIG1vZGVsIGluc3RhbmNlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8SW5zdGFuY2VUeXBlPE1DPj4+fSAtIFJlc29sdmVzIHdpdGggdGhlIGFycmF5LlxuICAgKi9cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBjb25zdCBtb2RlbHMgPSBbXVxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLnJlc3VsdHMoKVxuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgY29uc3QgTW9kZWxDbGFzcyA9IHRoaXMuZ2V0TW9kZWxDbGFzcygpXG4gICAgICBjb25zdCBtb2RlbCA9IC8qKiBAdHlwZSB7SW5zdGFuY2VUeXBlPE1DPn0gKi8gKG5ldyBNb2RlbENsYXNzKCkpXG5cbiAgICAgIG1vZGVsLmxvYWRFeGlzdGluZ1JlY29yZChyZXN1bHQpXG4gICAgICBtb2RlbHMucHVzaChtb2RlbClcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5fcHJlbG9hZCkubGVuZ3RoID4gMCAmJiBtb2RlbHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcHJlbG9hZGVyID0gbmV3IFByZWxvYWRlcih7XG4gICAgICAgIG1vZGVsQ2xhc3M6IHRoaXMubW9kZWxDbGFzcyxcbiAgICAgICAgbW9kZWxzLFxuICAgICAgICBwcmVsb2FkOiB0aGlzLl9wcmVsb2FkXG4gICAgICB9KVxuXG4gICAgICBhd2FpdCBwcmVsb2FkZXIucnVuKClcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxzXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgcXVlcnkgcmVzdWx0cyB0byBhcnJheSBvZiBtb2RlbCBpbnN0YW5jZXNcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8SW5zdGFuY2VUeXBlPE1DPj4+fSAtIFJlc29sdmVzIHdpdGggdGhlIGFycmF5LlxuICAgKi9cbiAgYXN5bmMgdG9BcnJheSgpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2FkKClcbiAgfVxuXG4gIC8qKlxuICAgKiBQbHVja3Mgb25lIG9yIG1vcmUgY29sdW1ucyBkaXJlY3RseSBmcm9tIHRoZSBkYXRhYmFzZSB3aXRob3V0IGluc3RhbnRpYXRpbmcgbW9kZWxzLlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ3xzdHJpbmdbXX0gY29sdW1ucyAtIENvbHVtbiBuYW1lcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55W10+fSAtIFJlc29sdmVzIHdpdGggdGhlIHBsdWNrLlxuICAgKi9cbiAgYXN5bmMgcGx1Y2soLi4uY29sdW1ucykge1xuICAgIGNvbnN0IGZsYXRDb2x1bW5zID0gY29sdW1ucy5mbGF0KClcblxuICAgIGlmIChmbGF0Q29sdW1ucy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbHVtbnMgZ2l2ZW4gdG8gcGx1Y2tcIilcblxuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSB0aGlzLmdldE1vZGVsQ2xhc3MoKVxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IG1vZGVsQ2xhc3MudGFibGVOYW1lKClcbiAgICBjb25zdCBhdHRyaWJ1dGVNYXAgPSBtb2RlbENsYXNzLmdldEF0dHJpYnV0ZU5hbWVUb0NvbHVtbk5hbWVNYXAoKVxuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gZmxhdENvbHVtbnMubWFwKChjb2x1bW4pID0+IGF0dHJpYnV0ZU1hcFtjb2x1bW5dIHx8IGNvbHVtbilcblxuICAgIGNvbnN0IHF1ZXJ5ID0gLyoqIEB0eXBlIHtWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5PE1DPn0gKi8gKHRoaXMuY2xvbmUoKSlcblxuICAgIHF1ZXJ5Ll9wcmVsb2FkID0ge31cbiAgICBxdWVyeS5fc2VsZWN0cyA9IFtdXG5cbiAgICBjb2x1bW5OYW1lcy5mb3JFYWNoKChjb2x1bW5OYW1lKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RTcWwgPSBgJHt0aGlzLmRyaXZlci5xdW90ZVRhYmxlKHRhYmxlTmFtZSl9LiR7dGhpcy5kcml2ZXIucXVvdGVDb2x1bW4oY29sdW1uTmFtZSl9YFxuXG4gICAgICBxdWVyeS5zZWxlY3Qoc2VsZWN0U3FsKVxuICAgIH0pXG5cbiAgICBjb25zdCByb3dzID0gYXdhaXQgcXVlcnkuX2V4ZWN1dGVRdWVyeSgpXG5cbiAgICBpZiAoY29sdW1uTmFtZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBbY29sdW1uTmFtZV0gPSBjb2x1bW5OYW1lc1xuICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi8gKHJvdylbY29sdW1uTmFtZV0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgIGNvbnN0IHJvd0hhc2ggPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovIChyb3cpXG5cbiAgICAgIHJldHVybiBjb2x1bW5OYW1lcy5tYXAoKGNvbHVtbk5hbWUpID0+IHJvd0hhc2hbY29sdW1uTmFtZV0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuV2hlcmVBcmd1bWVudFR5cGV9IHdoZXJlIC0gV2hlcmUuXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGlzIHF1ZXJ5IGluc3RhbmNlXG4gICAqL1xuICB3aGVyZSh3aGVyZSkge1xuICAgIGlmICh0eXBlb2Ygd2hlcmUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHN1cGVyLndoZXJlKHdoZXJlKVxuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHdoZXJlKSkge1xuICAgICAgY29uc3Qge3Jlc29sdmVkSGFzaCwgZmFsbGJhY2tIYXNofSA9IHNwbGl0V2hlcmVIYXNoKHtoYXNoOiB3aGVyZSwgbW9kZWxDbGFzczogdGhpcy5nZXRNb2RlbENsYXNzKCl9KVxuICAgICAgY29uc3Qgam9pbk9iamVjdCA9IGJ1aWxkSm9pbk9iamVjdEZyb21XaGVyZUhhc2goe2hhc2g6IHdoZXJlLCBtb2RlbENsYXNzOiB0aGlzLmdldE1vZGVsQ2xhc3MoKX0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuam9pbnMoam9pbk9iamVjdClcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc29sdmVkSGFzaCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBxdWFsaWZ5QmFzZVRhYmxlID0gdGhpcy5nZXRGb3JjZVF1YWxpZnlCYXNlVGFibGUoKSB8fCBPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwXG4gICAgICAgIHRoaXMuX3doZXJlcy5wdXNoKG5ldyBXaGVyZU1vZGVsQ2xhc3NIYXNoKHtcbiAgICAgICAgICBoYXNoOiByZXNvbHZlZEhhc2gsXG4gICAgICAgICAgbW9kZWxDbGFzczogdGhpcy5nZXRNb2RlbENsYXNzKCksXG4gICAgICAgICAgcXVhbGlmeUJhc2VUYWJsZSxcbiAgICAgICAgICBxdWVyeTogdGhpc1xuICAgICAgICB9KSlcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGZhbGxiYWNrSGFzaCkubGVuZ3RoID4gMCkge1xuICAgICAgICBzdXBlci53aGVyZShmYWxsYmFja0hhc2gpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHR5cGUgb2Ygd2hlcmU6ICR7dHlwZW9mIHdoZXJlfSAoJHt3aGVyZS5jb25zdHJ1Y3Rvci5uYW1lfSlgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gcGFyYW1zIC0gUmFuc2Fjay1zdHlsZSBwYXJhbXMgaGFzaC5cbiAgICogQHJldHVybnMge3RoaXN9IC0gUXVlcnkgd2l0aCBSYW5zYWNrIGZpbHRlcnMgYXBwbGllZC5cbiAgICovXG4gIHJhbnNhY2socGFyYW1zKSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IG5vcm1hbGl6ZVJhbnNhY2tQYXJhbXModGhpcy5nZXRNb2RlbENsYXNzKCksIHBhcmFtcylcblxuICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgIGFwcGx5UmFuc2Fja0NvbmRpdGlvbih7Y29uZGl0aW9uLCBxdWVyeTogdGhpc30pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuV2hlcmVBcmd1bWVudFR5cGV9IHdoZXJlIC0gV2hlcmUuXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGlzIHF1ZXJ5IGluc3RhbmNlXG4gICAqL1xuICB3aGVyZU5vdCh3aGVyZSkge1xuICAgIGlmICh0eXBlb2Ygd2hlcmUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHN1cGVyLndoZXJlTm90KHdoZXJlKVxuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHdoZXJlKSkge1xuICAgICAgY29uc3Qge3Jlc29sdmVkSGFzaCwgZmFsbGJhY2tIYXNofSA9IHNwbGl0V2hlcmVIYXNoKHtoYXNoOiB3aGVyZSwgbW9kZWxDbGFzczogdGhpcy5nZXRNb2RlbENsYXNzKCl9KVxuICAgICAgY29uc3Qgam9pbk9iamVjdCA9IGJ1aWxkSm9pbk9iamVjdEZyb21XaGVyZUhhc2goe2hhc2g6IHdoZXJlLCBtb2RlbENsYXNzOiB0aGlzLmdldE1vZGVsQ2xhc3MoKX0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuam9pbnMoam9pbk9iamVjdClcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc29sdmVkSGFzaCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBxdWFsaWZ5QmFzZVRhYmxlID0gdGhpcy5nZXRGb3JjZVF1YWxpZnlCYXNlVGFibGUoKSB8fCBPYmplY3Qua2V5cyhqb2luT2JqZWN0KS5sZW5ndGggPiAwXG4gICAgICAgIHRoaXMuX3doZXJlcy5wdXNoKG5ldyBXaGVyZU5vdChuZXcgV2hlcmVNb2RlbENsYXNzSGFzaCh7XG4gICAgICAgICAgaGFzaDogcmVzb2x2ZWRIYXNoLFxuICAgICAgICAgIG1vZGVsQ2xhc3M6IHRoaXMuZ2V0TW9kZWxDbGFzcygpLFxuICAgICAgICAgIHF1YWxpZnlCYXNlVGFibGUsXG4gICAgICAgICAgcXVlcnk6IHRoaXNcbiAgICAgICAgfSkpKVxuICAgICAgfVxuXG4gICAgICBpZiAoT2JqZWN0LmtleXMoZmFsbGJhY2tIYXNoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN1cGVyLndoZXJlTm90KGZhbGxiYWNrSGFzaClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBvZiB3aGVyZTogJHt0eXBlb2Ygd2hlcmV9ICgke3doZXJlLmNvbnN0cnVjdG9yLm5hbWV9KWApXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3V0aWxzL3JhbnNhY2suanNcIikuUmFuc2Fja0NvbmRpdGlvbn0gYXJncy5jb25kaXRpb24gLSBOb3JtYWxpemVkIFJhbnNhY2sgY29uZGl0aW9uLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55Pn0gYXJncy5xdWVyeSAtIFF1ZXJ5IGluc3RhbmNlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGFwcGx5UmFuc2Fja0NvbmRpdGlvbih7Y29uZGl0aW9uLCBxdWVyeX0pIHtcbiAgaWYgKGNvbmRpdGlvbi5wcmVkaWNhdGUgPT09IFwiZXFcIiB8fCBjb25kaXRpb24ucHJlZGljYXRlID09PSBcImluXCIpIHtcbiAgICBxdWVyeS53aGVyZShidWlsZE5lc3RlZFJhbnNhY2tIYXNoKHtjb25kaXRpb24sIHZhbHVlOiBjb25kaXRpb24udmFsdWV9KSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChjb25kaXRpb24ucHJlZGljYXRlID09PSBcIm5vdF9lcVwiIHx8IGNvbmRpdGlvbi5wcmVkaWNhdGUgPT09IFwibm90X2luXCIpIHtcbiAgICBxdWVyeS53aGVyZU5vdChidWlsZE5lc3RlZFJhbnNhY2tIYXNoKHtjb25kaXRpb24sIHZhbHVlOiBjb25kaXRpb24udmFsdWV9KSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChjb25kaXRpb24ucHJlZGljYXRlID09PSBcIm51bGxcIikge1xuICAgIGlmIChjb25kaXRpb24udmFsdWUpIHtcbiAgICAgIHF1ZXJ5LndoZXJlKGJ1aWxkTmVzdGVkUmFuc2Fja0hhc2goe2NvbmRpdGlvbiwgdmFsdWU6IG51bGx9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnkud2hlcmVOb3QoYnVpbGROZXN0ZWRSYW5zYWNrSGFzaCh7Y29uZGl0aW9uLCB2YWx1ZTogbnVsbH0pKVxuICAgIH1cblxuICAgIHJldHVyblxuICB9XG5cbiAgcXVlcnkud2hlcmUoYnVpbGROZXN0ZWRSYW5zYWNrVHVwbGVIYXNoKHtcbiAgICBjb25kaXRpb24sXG4gICAgb3BlcmF0b3I6IHJhbnNhY2tUdXBsZU9wZXJhdG9yKGNvbmRpdGlvbi5wcmVkaWNhdGUpLFxuICAgIHZhbHVlOiByYW5zYWNrVHVwbGVWYWx1ZShjb25kaXRpb24pXG4gIH0pKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vdXRpbHMvcmFuc2Fjay5qc1wiKS5SYW5zYWNrQ29uZGl0aW9ufSBhcmdzLmNvbmRpdGlvbiAtIE5vcm1hbGl6ZWQgUmFuc2FjayBjb25kaXRpb24uXG4gKiBAcGFyYW0ge2FueX0gYXJncy52YWx1ZSAtIEZpbmFsIHZhbHVlLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59IC0gTmVzdGVkIGhhc2ggc3VpdGFibGUgZm9yIHF1ZXJ5LndoZXJlL3F1ZXJ5LndoZXJlTm90LlxuICovXG5mdW5jdGlvbiBidWlsZE5lc3RlZFJhbnNhY2tIYXNoKHtjb25kaXRpb24sIHZhbHVlfSkge1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gIGxldCBoYXNoID0ge1tjb25kaXRpb24uYXR0cmlidXRlTmFtZV06IHZhbHVlfVxuXG4gIGZvciAobGV0IGluZGV4ID0gY29uZGl0aW9uLnBhdGgubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgIGhhc2ggPSB7W2NvbmRpdGlvbi5wYXRoW2luZGV4XV06IGhhc2h9XG4gIH1cblxuICByZXR1cm4gaGFzaFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vdXRpbHMvcmFuc2Fjay5qc1wiKS5SYW5zYWNrQ29uZGl0aW9ufSBhcmdzLmNvbmRpdGlvbiAtIE5vcm1hbGl6ZWQgUmFuc2FjayBjb25kaXRpb24uXG4gKiBAcGFyYW0ge1wiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIn0gYXJncy5vcGVyYXRvciAtIFR1cGxlIG9wZXJhdG9yLlxuICogQHBhcmFtIHthbnl9IGFyZ3MudmFsdWUgLSBGaW5hbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAtIE5lc3RlZCB0dXBsZSBoYXNoIHN1aXRhYmxlIGZvciBxdWVyeS53aGVyZS5cbiAqL1xuZnVuY3Rpb24gYnVpbGROZXN0ZWRSYW5zYWNrVHVwbGVIYXNoKHtjb25kaXRpb24sIG9wZXJhdG9yLCB2YWx1ZX0pIHtcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICBsZXQgaGFzaCA9IHtcbiAgICBbY29uZGl0aW9uLmF0dHJpYnV0ZU5hbWVdOiBbW2NvbmRpdGlvbi5hdHRyaWJ1dGVOYW1lLCBvcGVyYXRvciwgdmFsdWVdXVxuICB9XG5cbiAgZm9yIChsZXQgaW5kZXggPSBjb25kaXRpb24ucGF0aC5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgaGFzaCA9IHtbY29uZGl0aW9uLnBhdGhbaW5kZXhdXTogaGFzaH1cbiAgfVxuXG4gIHJldHVybiBoYXNoXG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi91dGlscy9yYW5zYWNrLmpzXCIpLlJhbnNhY2tQcmVkaWNhdGV9IHByZWRpY2F0ZSAtIFJhbnNhY2sgcHJlZGljYXRlLlxuICogQHJldHVybnMge1wiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIn0gLSBRdWVyeSB0dXBsZSBvcGVyYXRvci5cbiAqL1xuZnVuY3Rpb24gcmFuc2Fja1R1cGxlT3BlcmF0b3IocHJlZGljYXRlKSB7XG4gIGlmIChwcmVkaWNhdGUgPT09IFwiZ3RcIiB8fCBwcmVkaWNhdGUgPT09IFwiZ3RlcVwiIHx8IHByZWRpY2F0ZSA9PT0gXCJsdFwiIHx8IHByZWRpY2F0ZSA9PT0gXCJsdGVxXCIpIHtcbiAgICByZXR1cm4gcHJlZGljYXRlXG4gIH1cblxuICByZXR1cm4gXCJsaWtlXCJcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3V0aWxzL3JhbnNhY2suanNcIikuUmFuc2Fja0NvbmRpdGlvbn0gY29uZGl0aW9uIC0gUmFuc2FjayBjb25kaXRpb24uXG4gKiBAcmV0dXJucyB7YW55fSAtIFF1ZXJ5IHR1cGxlIHZhbHVlLlxuICovXG5mdW5jdGlvbiByYW5zYWNrVHVwbGVWYWx1ZShjb25kaXRpb24pIHtcbiAgaWYgKGNvbmRpdGlvbi5wcmVkaWNhdGUgPT09IFwiY29udFwiKSByZXR1cm4gYCUke2NvbmRpdGlvbi52YWx1ZX0lYFxuICBpZiAoY29uZGl0aW9uLnByZWRpY2F0ZSA9PT0gXCJzdGFydFwiKSByZXR1cm4gYCR7Y29uZGl0aW9uLnZhbHVlfSVgXG4gIGlmIChjb25kaXRpb24ucHJlZGljYXRlID09PSBcImVuZFwiKSByZXR1cm4gYCUke2NvbmRpdGlvbi52YWx1ZX1gXG5cbiAgcmV0dXJuIGNvbmRpdGlvbi52YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpb25zaGlwTmFtZSAtIFJlbGF0aW9uc2hpcCBuYW1lLlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL3JlY29yZC9yZWxhdGlvbnNoaXBzL2Jhc2UuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gLSBUaGUgcmVsYXRpb25zaGlwLlxuICovXG5mdW5jdGlvbiBnZXRSZWxhdGlvbnNoaXBCeU5hbWUobW9kZWxDbGFzcywgcmVsYXRpb25zaGlwTmFtZSkge1xuICByZXR1cm4gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzTWFwKClbcmVsYXRpb25zaGlwTmFtZV1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIEF0dHJpYnV0ZSBvciBjb2x1bW4gbmFtZS5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIHJlc29sdmVkIGNvbHVtbiBuYW1lLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29sdW1uTmFtZShtb2RlbENsYXNzLCBrZXkpIHtcbiAgY29uc3QgYXR0cmlidXRlTWFwID0gbW9kZWxDbGFzcy5nZXRBdHRyaWJ1dGVOYW1lVG9Db2x1bW5OYW1lTWFwKClcblxuICBpZiAoYXR0cmlidXRlTWFwW2tleV0pIHJldHVybiBhdHRyaWJ1dGVNYXBba2V5XVxuXG4gIGNvbnN0IGNvbHVtbk1hcCA9IG1vZGVsQ2xhc3MuZ2V0Q29sdW1uTmFtZVRvQXR0cmlidXRlTmFtZU1hcCgpXG4gIGNvbnN0IHVuZGVyc2NvcmVkID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGtleSlcblxuICByZXR1cm4gY29sdW1uTWFwW2tleV0gfHwgY29sdW1uTWFwW3VuZGVyc2NvcmVkXSB8fCB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MuaGFzaCAtIFdoZXJlIGhhc2guXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gKiBAcmV0dXJucyB7e3Jlc29sdmVkSGFzaDogUmVjb3JkPHN0cmluZywgYW55PiwgZmFsbGJhY2tIYXNoOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fX0gLSBTcGxpdCBoYXNoZXMuXG4gKi9cbmZ1bmN0aW9uIHNwbGl0V2hlcmVIYXNoKHtoYXNoLCBtb2RlbENsYXNzfSkge1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gIGNvbnN0IHJlc29sdmVkSGFzaCA9IHt9XG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgY29uc3QgZmFsbGJhY2tIYXNoID0ge31cblxuICBmb3IgKGNvbnN0IGtleSBpbiBoYXNoKSB7XG4gICAgY29uc3QgdmFsdWUgPSBoYXNoW2tleV1cbiAgICBjb25zdCBpc05lc3RlZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwID0gZ2V0UmVsYXRpb25zaGlwQnlOYW1lKG1vZGVsQ2xhc3MsIGtleSlcblxuICAgIGlmIChpc05lc3RlZCkge1xuICAgICAgaWYgKHJlbGF0aW9uc2hpcCkge1xuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuICAgICAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHtcbiAgICAgICAgICBmYWxsYmFja0hhc2hba2V5XSA9IHZhbHVlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXN0ZWRSZXN1bHQgPSBzcGxpdFdoZXJlSGFzaCh7aGFzaDogdmFsdWUsIG1vZGVsQ2xhc3M6IHRhcmdldE1vZGVsQ2xhc3N9KVxuICAgICAgICBjb25zdCBuZXN0ZWRSZXNvbHZlZEtleXMgPSBPYmplY3Qua2V5cyhuZXN0ZWRSZXN1bHQucmVzb2x2ZWRIYXNoKVxuICAgICAgICBjb25zdCBuZXN0ZWRGYWxsYmFja0tleXMgPSBPYmplY3Qua2V5cyhuZXN0ZWRSZXN1bHQuZmFsbGJhY2tIYXNoKVxuXG4gICAgICAgIGlmIChuZXN0ZWRSZXNvbHZlZEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJlc29sdmVkSGFzaFtrZXldID0gbmVzdGVkUmVzdWx0LnJlc29sdmVkSGFzaFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5lc3RlZEZhbGxiYWNrS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gdGFyZ2V0TW9kZWxDbGFzcy50YWJsZU5hbWUoKVxuXG4gICAgICAgICAgaWYgKCFmYWxsYmFja0hhc2hbdGFibGVOYW1lXSkgZmFsbGJhY2tIYXNoW3RhYmxlTmFtZV0gPSB7fVxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmFsbGJhY2tIYXNoW3RhYmxlTmFtZV0sIG5lc3RlZFJlc3VsdC5mYWxsYmFja0hhc2gpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhbGxiYWNrSGFzaFtrZXldID0gdmFsdWVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlbGF0aW9uc2hpcCAmJiBoYXNSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKSkge1xuICAgICAgcmVzb2x2ZWRIYXNoW2tleV0gPSBub3JtYWxpemVSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2x1bW5OYW1lID0gcmVzb2x2ZUNvbHVtbk5hbWUobW9kZWxDbGFzcywga2V5KVxuXG4gICAgICBpZiAoY29sdW1uTmFtZSkge1xuICAgICAgICByZXNvbHZlZEhhc2hbY29sdW1uTmFtZV0gPSB2YWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFsbGJhY2tIYXNoW2tleV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7cmVzb2x2ZWRIYXNoLCBmYWxsYmFja0hhc2h9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLmhhc2ggLSBXaGVyZSBoYXNoLlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59IC0gSm9pbiBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSm9pbk9iamVjdEZyb21XaGVyZUhhc2goe2hhc2gsIG1vZGVsQ2xhc3N9KSB7XG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgY29uc3Qgam9pbk9iamVjdCA9IHt9XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gaGFzaCkge1xuICAgIGNvbnN0IHZhbHVlID0gaGFzaFtrZXldXG4gICAgY29uc3QgcmVsYXRpb25zaGlwID0gZ2V0UmVsYXRpb25zaGlwQnlOYW1lKG1vZGVsQ2xhc3MsIGtleSlcblxuICAgIGlmICghcmVsYXRpb25zaGlwKSBjb250aW51ZVxuXG4gICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuICAgICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSBjb250aW51ZVxuICAgICAgY29uc3QgbmVzdGVkSm9pbk9iamVjdCA9IGJ1aWxkSm9pbk9iamVjdEZyb21XaGVyZUhhc2goe2hhc2g6IHZhbHVlLCBtb2RlbENsYXNzOiB0YXJnZXRNb2RlbENsYXNzfSlcblxuICAgICAgam9pbk9iamVjdFtrZXldID0gT2JqZWN0LmtleXMobmVzdGVkSm9pbk9iamVjdCkubGVuZ3RoID4gMCA/IG5lc3RlZEpvaW5PYmplY3QgOiB0cnVlXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChoYXNSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKSkge1xuICAgICAgam9pbk9iamVjdFtrZXldID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqb2luT2JqZWN0XG59XG5cbmNvbnN0IHJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JzID0gbmV3IFNldChbXCJlcVwiLCBcIm5vdEVxXCIsIFwiZ3RcIiwgXCJndGVxXCIsIFwibHRcIiwgXCJsdGVxXCIsIFwibGlrZVwiLCBcIj5cIiwgXCI+PVwiLCBcIjxcIiwgXCI8PVwiXSlcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gb3BlcmF0b3IgLSBSYXcgcmVsYXRpb25zaGlwIHdoZXJlIG9wZXJhdG9yLlxuICogQHJldHVybnMge1wiZXFcIiB8IFwibm90RXFcIiB8IFwiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIn0gLSBOb3JtYWxpemVkIG9wZXJhdG9yLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yKG9wZXJhdG9yKSB7XG4gIGNvbnN0IG9wZXJhdG9yQWxpYXNlcyA9IHtcbiAgICBcIjxcIjogXCJsdFwiLFxuICAgIFwiPD1cIjogXCJsdGVxXCIsXG4gICAgXCI+XCI6IFwiZ3RcIixcbiAgICBcIj49XCI6IFwiZ3RlcVwiXG4gIH1cblxuICByZXR1cm4gLyoqIEB0eXBlIHtcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCJ9ICovIChcbiAgICBvcGVyYXRvckFsaWFzZXNbLyoqIEB0eXBlIHtcIjxcIiB8IFwiPD1cIiB8IFwiPlwiIHwgXCI+PVwifSAqLyAob3BlcmF0b3IpXSB8fCBvcGVyYXRvclxuICApXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSB0dXBsZVZhbHVlIC0gQ2FuZGlkYXRlIHR1cGxlLlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGlzIGlzIGEgcmVsYXRpb25zaGlwIHdoZXJlIHR1cGxlLlxuICovXG5mdW5jdGlvbiBpc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZSh0dXBsZVZhbHVlKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheSh0dXBsZVZhbHVlKSB8fCB0dXBsZVZhbHVlLmxlbmd0aCA8IDMpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0eXBlb2YgdHVwbGVWYWx1ZVswXSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgIHR5cGVvZiB0dXBsZVZhbHVlWzFdID09PSBcInN0cmluZ1wiICYmXG4gICAgcmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvcnMuaGFzKHR1cGxlVmFsdWVbMV0pXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIENhbmRpZGF0ZSB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheTxbc3RyaW5nLCBcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCIsIGFueV0+fSAtIE5vcm1hbGl6ZWQgdHVwbGVzLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcmVsYXRpb25zaGlwIHdoZXJlIHR1cGxlIGNvbnRhaW5lciB0eXBlOiAke3R5cGVvZiB2YWx1ZX1gKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtBcnJheTxbc3RyaW5nLCBcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCIsIGFueV0+fSAqL1xuICBjb25zdCBub3JtYWxpemVkID0gW11cbiAgICAvKiogQHBhcmFtIHt1bmtub3dufSBjb25kaXRpb25WYWx1ZSAtIENhbmRpZGF0ZSBuZXN0ZWQgY29uZGl0aW9uLiAqL1xuICAgIGNvbnN0IGFkZENvbmRpdGlvbiA9IChjb25kaXRpb25WYWx1ZSkgPT4ge1xuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlKGNvbmRpdGlvblZhbHVlKSkge1xuICAgICAgICBjb25zdCB0dXBsZSA9IC8qKiBAdHlwZSB7W3N0cmluZywgXCJlcVwiIHwgXCJub3RFcVwiIHwgXCJndFwiIHwgXCJndGVxXCIgfCBcImx0XCIgfCBcImx0ZXFcIiB8IFwibGlrZVwiIHwgXCI+XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPD1cIiwgYW55LCAuLi51bmtub3duW11dfSAqLyAoY29uZGl0aW9uVmFsdWUpXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPcGVyYXRvciA9IG5vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3IodHVwbGVbMV0pXG5cbiAgICAgICAgbm9ybWFsaXplZC5wdXNoKFtcbiAgICAgICAgICB0dXBsZVswXSxcbiAgICAgICAgICBub3JtYWxpemVkT3BlcmF0b3IsXG4gICAgICAgICAgdHVwbGVbMl1cbiAgICAgICAgXSlcblxuICAgICAgICBpZiAodHVwbGUubGVuZ3RoID4gMykge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMzsgaW5kZXggPCB0dXBsZS5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICAgIGFkZENvbmRpdGlvbih0dXBsZVtpbmRleF0pXG4gICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZGl0aW9uVmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWxhdGlvbnNoaXAgd2hlcmUgY29uZGl0aW9ucyBtdXN0IGJlIHR1cGxlc1wiKVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7dW5rbm93bltdfSAqLyAoY29uZGl0aW9uVmFsdWUpLmZvckVhY2goKG5lc3RlZENvbmRpdGlvblZhbHVlKSA9PiB7XG4gICAgICBhZGRDb25kaXRpb24obmVzdGVkQ29uZGl0aW9uVmFsdWUpXG4gICAgfSlcbiAgfVxuXG4gIGFkZENvbmRpdGlvbih2YWx1ZSlcblxuICBpZiAobm9ybWFsaXplZC5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUmVsYXRpb25zaGlwIHdoZXJlIHR1cGxlIGNvbnRhaW5lciBjYW5ub3QgYmUgZW1wdHlcIilcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIENhbmRpZGF0ZSByZWxhdGlvbnNoaXAgd2hlcmUgdmFsdWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHZhbHVlIGNhbiBiZSBub3JtYWxpemVkIHRvIHJlbGF0aW9uc2hpcCB0dXBsZXMuXG4gKi9cbmZ1bmN0aW9uIGhhc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXModmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBub3JtYWxpemVSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiJdfQ==
@@ -13,9 +13,9 @@ function downloadFromRow({ content, row, url }) {
13
13
  return new RecordAttachmentDownload({
14
14
  byteSize: Number.isFinite(byteSize) ? byteSize : content.length,
15
15
  content,
16
- contentType: row.content_type ? String(row.content_type) : null,
17
- filename: row.filename ? String(row.filename) : "attachment.bin",
18
- id: String(row.id),
16
+ contentType: row.content_type || null,
17
+ filename: row.filename || "attachment.bin",
18
+ id: row.id,
19
19
  url
20
20
  });
21
21
  }
@@ -149,4 +149,4 @@ export default class RecordAttachmentHandle {
149
149
  return await store.attachmentRowUrl({ model: this.model, name: this.name, row });
150
150
  }
151
151
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3JlY29yZC9hdHRhY2htZW50cy9oYW5kbGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sd0JBQXdCLE1BQU0sZUFBZSxDQUFBO0FBQ3BELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLFlBQVksQ0FBQTtBQUV6RDs7Ozs7O0dBTUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDO0lBQzFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFdEMsT0FBTyxJQUFJLHdCQUF3QixDQUFDO1FBQ2xDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNO1FBQy9ELE9BQU87UUFDUCxXQUFXLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUMvRCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO1FBQ2hFLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixHQUFHO0tBQ0osQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsT0FBTyxDQUFDLEtBQUs7SUFDcEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sc0JBQXNC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c0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBSZWNvcmRBdHRhY2htZW50RG93bmxvYWQgZnJvbSBcIi4vZG93bmxvYWQuanNcIlxuaW1wb3J0IHtyZWNvcmRBdHRhY2htZW50c1N0b3JlRm9yTW9kZWx9IGZyb20gXCIuL3N0b3JlLmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3Mucm93IC0gUmF3IHJvdy5cbiAqIEBwYXJhbSB7QnVmZmVyfSBhcmdzLmNvbnRlbnQgLSBBdHRhY2htZW50IGJ5dGVzLlxuICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBhcmdzLnVybCAtIEF0dGFjaG1lbnQgVVJMLlxuICogQHJldHVybnMge1JlY29yZEF0dGFjaG1lbnREb3dubG9hZH0gLSBEb3dubG9hZCBwYXlsb2FkLlxuICovXG5mdW5jdGlvbiBkb3dubG9hZEZyb21Sb3coe2NvbnRlbnQsIHJvdywgdXJsfSkge1xuICBjb25zdCBieXRlU2l6ZSA9IE51bWJlcihyb3cuYnl0ZV9zaXplKVxuXG4gIHJldHVybiBuZXcgUmVjb3JkQXR0YWNobWVudERvd25sb2FkKHtcbiAgICBieXRlU2l6ZTogTnVtYmVyLmlzRmluaXRlKGJ5dGVTaXplKSA/IGJ5dGVTaXplIDogY29udGVudC5sZW5ndGgsXG4gICAgY29udGVudCxcbiAgICBjb250ZW50VHlwZTogcm93LmNvbnRlbnRfdHlwZSA/IFN0cmluZyhyb3cuY29udGVudF90eXBlKSA6IG51bGwsXG4gICAgZmlsZW5hbWU6IHJvdy5maWxlbmFtZSA/IFN0cmluZyhyb3cuZmlsZW5hbWUpIDogXCJhdHRhY2htZW50LmJpblwiLFxuICAgIGlkOiBTdHJpbmcocm93LmlkKSxcbiAgICB1cmxcbiAgfSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gQ2FuZGlkYXRlIHZhbHVlLlxuICogQHJldHVybnMge3ZhbHVlIGlzIEFycmF5PHVua25vd24+fSAtIFdoZXRoZXIgdmFsdWUgaXMgYW4gYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG59XG5cbi8qKlxuICogQXR0YWNobWVudCBoZWxwZXIgYm91bmQgdG8gb25lIG1vZGVsICsgYXR0YWNobWVudCBuYW1lLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWNvcmRBdHRhY2htZW50SGFuZGxlIHtcbiAgLyoqIEB0eXBlIHt1bmtub3duW119ICovXG4gIHBlbmRpbmdJbnB1dHMgPSBbXVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbCAtIE1vZGVsIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lIC0gQXR0YWNobWVudCBuYW1lLlxuICAgKiBAcGFyYW0ge1wiaGFzT25lXCIgfCBcImhhc01hbnlcIn0gYXJncy50eXBlIC0gQXR0YWNobWVudCB0eXBlLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe21vZGVsLCBuYW1lLCB0eXBlfSkge1xuICAgIHRoaXMubW9kZWwgPSBtb2RlbFxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB0aGlzLnR5cGUgPSB0eXBlXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBhdHRhY2htZW50IHdyaXRlcy4gKi9cbiAgaGFzUGVuZGluZ0F0dGFjaG1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdJbnB1dHMubGVuZ3RoID4gMFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gaW5wdXQgLSBBdHRhY2htZW50IGlucHV0LlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBRdWV1ZXMgYXR0YWNobWVudCB3cml0ZSBmb3IgbmV4dCBzYXZlLlxuICAgKi9cbiAgcXVldWVBdHRhY2goaW5wdXQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBcImhhc09uZVwiKSB7XG4gICAgICBpZiAoaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgY29uc3QgbGFzdElucHV0ID0gaW5wdXRbaW5wdXQubGVuZ3RoIC0gMV1cblxuICAgICAgICB0aGlzLnBlbmRpbmdJbnB1dHMgPSB0eXBlb2YgbGFzdElucHV0ID09PSBcInVuZGVmaW5lZFwiID8gW10gOiBbbGFzdElucHV0XVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5wdXRzID0gW2lucHV0XVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheShpbnB1dCkpIHtcbiAgICAgIGZvciAoY29uc3QgaW5wdXRFbnRyeSBvZiBpbnB1dCkge1xuICAgICAgICB0aGlzLnBlbmRpbmdJbnB1dHMucHVzaChpbnB1dEVudHJ5KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbmRpbmdJbnB1dHMucHVzaChpbnB1dClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt1bmtub3dufSBpbnB1dCAtIEF0dGFjaG1lbnQgaW5wdXQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gYXR0YWNoZWQuXG4gICAqL1xuICBhc3luYyBhdHRhY2goaW5wdXQpIHtcbiAgICB0aGlzLnF1ZXVlQXR0YWNoKGlucHV0KVxuICAgIGF3YWl0IHRoaXMuZmx1c2hQZW5kaW5nQXR0YWNobWVudHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gcGVuZGluZyBhdHRhY2htZW50cyBhcmUgZmx1c2hlZC5cbiAgICovXG4gIGFzeW5jIGZsdXNoUGVuZGluZ0F0dGFjaG1lbnRzKCkge1xuICAgIGlmICghdGhpcy5tb2RlbC5pc1BlcnNpc3RlZCgpKSByZXR1cm5cbiAgICBpZiAodGhpcy5wZW5kaW5nSW5wdXRzLmxlbmd0aCA8IDEpIHJldHVyblxuXG4gICAgY29uc3Qgc3RvcmUgPSByZWNvcmRBdHRhY2htZW50c1N0b3JlRm9yTW9kZWwodGhpcy5tb2RlbClcbiAgICBjb25zdCBwZW5kaW5nSW5wdXRzID0gdGhpcy5wZW5kaW5nSW5wdXRzXG5cbiAgICB0aGlzLnBlbmRpbmdJbnB1dHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGlucHV0XSBvZiBwZW5kaW5nSW5wdXRzLmVudHJpZXMoKSkge1xuICAgICAgYXdhaXQgc3RvcmUuYXR0YWNoKHtcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgIHJlcGxhY2U6IHRoaXMudHlwZSA9PT0gXCJoYXNPbmVcIiAmJiBpbmRleCA9PT0gMFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtpZF0gLSBPcHRpb25hbCBhdHRhY2htZW50IGlkIGZvciBoYXMtbWFueSBhdHRhY2htZW50cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8UmVjb3JkQXR0YWNobWVudERvd25sb2FkIHwgbnVsbD59IC0gRG93bmxvYWRlZCBhdHRhY2htZW50LlxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWQoaWQpIHtcbiAgICBpZiAoIXRoaXMubW9kZWwuaXNQZXJzaXN0ZWQoKSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHN0b3JlID0gcmVjb3JkQXR0YWNobWVudHNTdG9yZUZvck1vZGVsKHRoaXMubW9kZWwpXG4gICAgY29uc3Qgcm93ID0gYXdhaXQgc3RvcmUuZmluZE9uZSh7aWQsIG1vZGVsOiB0aGlzLm1vZGVsLCBuYW1lOiB0aGlzLm5hbWV9KVxuXG4gICAgaWYgKCFyb3cpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCBbY29udGVudCwgdXJsXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHN0b3JlLnJlYWRBdHRhY2htZW50Um93KHttb2RlbDogdGhpcy5tb2RlbCwgbmFtZTogdGhpcy5uYW1lLCByb3d9KSxcbiAgICAgIHN0b3JlLmF0dGFjaG1lbnRSb3dVcmwoe21vZGVsOiB0aGlzLm1vZGVsLCBuYW1lOiB0aGlzLm5hbWUsIHJvd30pXG4gICAgXSlcblxuICAgIHJldHVybiBkb3dubG9hZEZyb21Sb3coe2NvbnRlbnQsIHJvdywgdXJsfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxSZWNvcmRBdHRhY2htZW50RG93bmxvYWQ+Pn0gLSBEb3dubG9hZGVkIGF0dGFjaG1lbnRzLlxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRBbGwoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsLmlzUGVyc2lzdGVkKCkpIHJldHVybiBbXVxuXG4gICAgY29uc3Qgc3RvcmUgPSByZWNvcmRBdHRhY2htZW50c1N0b3JlRm9yTW9kZWwodGhpcy5tb2RlbClcbiAgICBjb25zdCByb3dzID0gYXdhaXQgc3RvcmUuZmluZE1hbnkoe21vZGVsOiB0aGlzLm1vZGVsLCBuYW1lOiB0aGlzLm5hbWV9KVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkQXR0YWNobWVudERvd25sb2FkW119ICovXG4gICAgY29uc3QgZG93bmxvYWRzID0gW11cblxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgIGNvbnN0IFtjb250ZW50LCB1cmxdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBzdG9yZS5yZWFkQXR0YWNobWVudFJvdyh7bW9kZWw6IHRoaXMubW9kZWwsIG5hbWU6IHRoaXMubmFtZSwgcm93fSksXG4gICAgICAgIHN0b3JlLmF0dGFjaG1lbnRSb3dVcmwoe21vZGVsOiB0aGlzLm1vZGVsLCBuYW1lOiB0aGlzLm5hbWUsIHJvd30pXG4gICAgICBdKVxuXG4gICAgICBkb3dubG9hZHMucHVzaChkb3dubG9hZEZyb21Sb3coe2NvbnRlbnQsIHJvdywgdXJsfSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRvd25sb2Fkc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaWRdIC0gT3B0aW9uYWwgYXR0YWNobWVudCBpZCBmb3IgaGFzLW1hbnkgYXR0YWNobWVudHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fSAtIFJlc29sdmFibGUgYXR0YWNobWVudCBVUkwuXG4gICAqL1xuICBhc3luYyB1cmwoaWQpIHtcbiAgICBpZiAoIXRoaXMubW9kZWwuaXNQZXJzaXN0ZWQoKSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHN0b3JlID0gcmVjb3JkQXR0YWNobWVudHNTdG9yZUZvck1vZGVsKHRoaXMubW9kZWwpXG4gICAgY29uc3Qgcm93ID0gYXdhaXQgc3RvcmUuZmluZE9uZSh7aWQsIG1vZGVsOiB0aGlzLm1vZGVsLCBuYW1lOiB0aGlzLm5hbWV9KVxuXG4gICAgaWYgKCFyb3cpIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gYXdhaXQgc3RvcmUuYXR0YWNobWVudFJvd1VybCh7bW9kZWw6IHRoaXMubW9kZWwsIG5hbWU6IHRoaXMubmFtZSwgcm93fSlcbiAgfVxufVxuIl19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3JlY29yZC9hdHRhY2htZW50cy9oYW5kbGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sd0JBQXdCLE1BQU0sZUFBZSxDQUFBO0FBQ3BELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLFlBQVksQ0FBQTtBQUV6RDs7Ozs7O0dBTUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDO0lBQzFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFdEMsT0FBTyxJQUFJLHdCQUF3QixDQUFDO1FBQ2xDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNO1FBQy9ELE9BQU87UUFDUCxXQUFXLEVBQUUsR0FBRyxDQUFDLFlBQVksSUFBSSxJQUFJO1FBQ3JDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLGdCQUFnQjtRQUMxQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDVixHQUFHO0tBQ0osQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsT0FBTyxDQUFDLEtBQUs7SUFDcEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sc0JBQXNCO0lBQ3pDLHdCQUF3QjtJQUN4QixhQUFhLEdBQUcsRUFBRSxDQUFBO0lBRWxCOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcs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QUUsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQztnQkFDbEUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFDLENBQUM7YUFDbEUsQ0FBQyxDQUFBO1lBRUYsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRTFDLE1BQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBRXpFLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFFckIsT0FBTyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUE7SUFDaEYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBSZWNvcmRBdHRhY2htZW50RG93bmxvYWQgZnJvbSBcIi4vZG93bmxvYWQuanNcIlxuaW1wb3J0IHtyZWNvcmRBdHRhY2htZW50c1N0b3JlRm9yTW9kZWx9IGZyb20gXCIuL3N0b3JlLmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3Mucm93IC0gUmF3IHJvdy5cbiAqIEBwYXJhbSB7QnVmZmVyfSBhcmdzLmNvbnRlbnQgLSBBdHRhY2htZW50IGJ5dGVzLlxuICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBhcmdzLnVybCAtIEF0dGFjaG1lbnQgVVJMLlxuICogQHJldHVybnMge1JlY29yZEF0dGFjaG1lbnREb3dubG9hZH0gLSBEb3dubG9hZCBwYXlsb2FkLlxuICovXG5mdW5jdGlvbiBkb3dubG9hZEZyb21Sb3coe2NvbnRlbnQsIHJvdywgdXJsfSkge1xuICBjb25zdCBieXRlU2l6ZSA9IE51bWJlcihyb3cuYnl0ZV9zaXplKVxuXG4gIHJldHVybiBuZXcgUmVjb3JkQXR0YWNobWVudERvd25sb2FkKHtcbiAgICBieXRlU2l6ZTogTnVtYmVyLmlzRmluaXRlKGJ5dGVTaXplKSA/IGJ5dGVTaXplIDogY29udGVudC5sZW5ndGgsXG4gICAgY29udGVudCxcbiAgICBjb250ZW50VHlwZTogcm93LmNvbnRlbnRfdHlwZSB8fCBudWxsLFxuICAgIGZpbGVuYW1lOiByb3cuZmlsZW5hbWUgfHwgXCJhdHRhY2htZW50LmJpblwiLFxuICAgIGlkOiByb3cuaWQsXG4gICAgdXJsXG4gIH0pXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIENhbmRpZGF0ZSB2YWx1ZS5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBBcnJheTx1bmtub3duPn0gLSBXaGV0aGVyIHZhbHVlIGlzIGFuIGFycmF5LlxuICovXG5mdW5jdGlvbiBpc0FycmF5KHZhbHVlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxufVxuXG4vKipcbiAqIEF0dGFjaG1lbnQgaGVscGVyIGJvdW5kIHRvIG9uZSBtb2RlbCArIGF0dGFjaG1lbnQgbmFtZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjb3JkQXR0YWNobWVudEhhbmRsZSB7XG4gIC8qKiBAdHlwZSB7dW5rbm93bltdfSAqL1xuICBwZW5kaW5nSW5wdXRzID0gW11cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIEF0dGFjaG1lbnQgbmFtZS5cbiAgICogQHBhcmFtIHtcImhhc09uZVwiIHwgXCJoYXNNYW55XCJ9IGFyZ3MudHlwZSAtIEF0dGFjaG1lbnQgdHlwZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbCwgbmFtZSwgdHlwZX0pIHtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdGhpcy50eXBlID0gdHlwZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgYXR0YWNobWVudCB3cml0ZXMuICovXG4gIGhhc1BlbmRpbmdBdHRhY2htZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5wZW5kaW5nSW5wdXRzLmxlbmd0aCA+IDBcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3Vua25vd259IGlucHV0IC0gQXR0YWNobWVudCBpbnB1dC5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gUXVldWVzIGF0dGFjaG1lbnQgd3JpdGUgZm9yIG5leHQgc2F2ZS5cbiAgICovXG4gIHF1ZXVlQXR0YWNoKGlucHV0KSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gXCJoYXNPbmVcIikge1xuICAgICAgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IGxhc3RJbnB1dCA9IGlucHV0W2lucHV0Lmxlbmd0aCAtIDFdXG5cbiAgICAgICAgdGhpcy5wZW5kaW5nSW5wdXRzID0gdHlwZW9mIGxhc3RJbnB1dCA9PT0gXCJ1bmRlZmluZWRcIiA/IFtdIDogW2xhc3RJbnB1dF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVuZGluZ0lucHV0cyA9IFtpbnB1dF1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICBmb3IgKGNvbnN0IGlucHV0RW50cnkgb2YgaW5wdXQpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5wdXRzLnB1c2goaW5wdXRFbnRyeSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wZW5kaW5nSW5wdXRzLnB1c2goaW5wdXQpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gaW5wdXQgLSBBdHRhY2htZW50IGlucHV0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGF0dGFjaGVkLlxuICAgKi9cbiAgYXN5bmMgYXR0YWNoKGlucHV0KSB7XG4gICAgdGhpcy5xdWV1ZUF0dGFjaChpbnB1dClcbiAgICBhd2FpdCB0aGlzLmZsdXNoUGVuZGluZ0F0dGFjaG1lbnRzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHBlbmRpbmcgYXR0YWNobWVudHMgYXJlIGZsdXNoZWQuXG4gICAqL1xuICBhc3luYyBmbHVzaFBlbmRpbmdBdHRhY2htZW50cygpIHtcbiAgICBpZiAoIXRoaXMubW9kZWwuaXNQZXJzaXN0ZWQoKSkgcmV0dXJuXG4gICAgaWYgKHRoaXMucGVuZGluZ0lucHV0cy5sZW5ndGggPCAxKSByZXR1cm5cblxuICAgIGNvbnN0IHN0b3JlID0gcmVjb3JkQXR0YWNobWVudHNTdG9yZUZvck1vZGVsKHRoaXMubW9kZWwpXG4gICAgY29uc3QgcGVuZGluZ0lucHV0cyA9IHRoaXMucGVuZGluZ0lucHV0c1xuXG4gICAgdGhpcy5wZW5kaW5nSW5wdXRzID0gW11cblxuICAgIGZvciAoY29uc3QgW2luZGV4LCBpbnB1dF0gb2YgcGVuZGluZ0lucHV0cy5lbnRyaWVzKCkpIHtcbiAgICAgIGF3YWl0IHN0b3JlLmF0dGFjaCh7XG4gICAgICAgIGlucHV0LFxuICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICByZXBsYWNlOiB0aGlzLnR5cGUgPT09IFwiaGFzT25lXCIgJiYgaW5kZXggPT09IDBcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaWRdIC0gT3B0aW9uYWwgYXR0YWNobWVudCBpZCBmb3IgaGFzLW1hbnkgYXR0YWNobWVudHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJlY29yZEF0dGFjaG1lbnREb3dubG9hZCB8IG51bGw+fSAtIERvd25sb2FkZWQgYXR0YWNobWVudC5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkKGlkKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsLmlzUGVyc2lzdGVkKCkpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCBzdG9yZSA9IHJlY29yZEF0dGFjaG1lbnRzU3RvcmVGb3JNb2RlbCh0aGlzLm1vZGVsKVxuICAgIGNvbnN0IHJvdyA9IGF3YWl0IHN0b3JlLmZpbmRPbmUoe2lkLCBtb2RlbDogdGhpcy5tb2RlbCwgbmFtZTogdGhpcy5uYW1lfSlcblxuICAgIGlmICghcm93KSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgW2NvbnRlbnQsIHVybF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBzdG9yZS5yZWFkQXR0YWNobWVudFJvdyh7bW9kZWw6IHRoaXMubW9kZWwsIG5hbWU6IHRoaXMubmFtZSwgcm93fSksXG4gICAgICBzdG9yZS5hdHRhY2htZW50Um93VXJsKHttb2RlbDogdGhpcy5tb2RlbCwgbmFtZTogdGhpcy5uYW1lLCByb3d9KVxuICAgIF0pXG5cbiAgICByZXR1cm4gZG93bmxvYWRGcm9tUm93KHtjb250ZW50LCByb3csIHVybH0pXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8UmVjb3JkQXR0YWNobWVudERvd25sb2FkPj59IC0gRG93bmxvYWRlZCBhdHRhY2htZW50cy5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkQWxsKCkge1xuICAgIGlmICghdGhpcy5tb2RlbC5pc1BlcnNpc3RlZCgpKSByZXR1cm4gW11cblxuICAgIGNvbnN0IHN0b3JlID0gcmVjb3JkQXR0YWNobWVudHNTdG9yZUZvck1vZGVsKHRoaXMubW9kZWwpXG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IHN0b3JlLmZpbmRNYW55KHttb2RlbDogdGhpcy5tb2RlbCwgbmFtZTogdGhpcy5uYW1lfSlcbiAgICAvKiogQHR5cGUge1JlY29yZEF0dGFjaG1lbnREb3dubG9hZFtdfSAqL1xuICAgIGNvbnN0IGRvd25sb2FkcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICBjb25zdCBbY29udGVudCwgdXJsXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgc3RvcmUucmVhZEF0dGFjaG1lbnRSb3coe21vZGVsOiB0aGlzLm1vZGVsLCBuYW1lOiB0aGlzLm5hbWUsIHJvd30pLFxuICAgICAgICBzdG9yZS5hdHRhY2htZW50Um93VXJsKHttb2RlbDogdGhpcy5tb2RlbCwgbmFtZTogdGhpcy5uYW1lLCByb3d9KVxuICAgICAgXSlcblxuICAgICAgZG93bmxvYWRzLnB1c2goZG93bmxvYWRGcm9tUm93KHtjb250ZW50LCByb3csIHVybH0pKVxuICAgIH1cblxuICAgIHJldHVybiBkb3dubG9hZHNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2lkXSAtIE9wdGlvbmFsIGF0dGFjaG1lbnQgaWQgZm9yIGhhcy1tYW55IGF0dGFjaG1lbnRzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBudWxsPn0gLSBSZXNvbHZhYmxlIGF0dGFjaG1lbnQgVVJMLlxuICAgKi9cbiAgYXN5bmMgdXJsKGlkKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsLmlzUGVyc2lzdGVkKCkpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCBzdG9yZSA9IHJlY29yZEF0dGFjaG1lbnRzU3RvcmVGb3JNb2RlbCh0aGlzLm1vZGVsKVxuICAgIGNvbnN0IHJvdyA9IGF3YWl0IHN0b3JlLmZpbmRPbmUoe2lkLCBtb2RlbDogdGhpcy5tb2RlbCwgbmFtZTogdGhpcy5uYW1lfSlcblxuICAgIGlmICghcm93KSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIGF3YWl0IHN0b3JlLmF0dGFjaG1lbnRSb3dVcmwoe21vZGVsOiB0aGlzLm1vZGVsLCBuYW1lOiB0aGlzLm5hbWUsIHJvd30pXG4gIH1cbn1cbiJdfQ==
@@ -77,7 +77,7 @@ export default class NativeAttachmentStorageDriver {
77
77
  throwMissingMethod({ driverName: this.name, methodName: "read" });
78
78
  }
79
79
  const result = await this.options.read({
80
- attachmentId: row.id ? String(row.id) : "",
80
+ attachmentId: row.id || "",
81
81
  attachmentName: name,
82
82
  model,
83
83
  row,
@@ -97,7 +97,7 @@ export default class NativeAttachmentStorageDriver {
97
97
  if (typeof this.options.delete !== "function")
98
98
  return;
99
99
  await this.options.delete({
100
- attachmentId: row.id ? String(row.id) : "",
100
+ attachmentId: row.id || "",
101
101
  attachmentName: name,
102
102
  model,
103
103
  row,
@@ -116,7 +116,7 @@ export default class NativeAttachmentStorageDriver {
116
116
  if (typeof this.options.url !== "function")
117
117
  return null;
118
118
  const value = await this.options.url({
119
- attachmentId: row.id ? String(row.id) : "",
119
+ attachmentId: row.id || "",
120
120
  attachmentName: name,
121
121
  model,
122
122
  row,
@@ -127,4 +127,4 @@ export default class NativeAttachmentStorageDriver {
127
127
  return null;
128
128
  }
129
129
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3JlY29yZC9hdHRhY2htZW50cy9zdG9yYWdlLWRyaXZlcnMvbmF0aXZlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7Ozs7R0FLRztBQUNILFNBQVMsa0JBQWtCLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDO0lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLFVBQVUsaUJBQWlCLFVBQVUsWUFBWSxDQUFDLENBQUE7QUFDbEcsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsUUFBUSxDQUFDLEtBQUs7SUFDckIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3hDLElBQUksS0FBSyxZQUFZLFVBQVU7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUQsSUFBSSxLQUFLLFlBQVksV0FBVztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBRWxFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDaEYsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQTZCO0lBQ2hEOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtR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QUMsR0FBRyxDQUFDO1lBQ25DLFlBQVksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzFDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEtBQUs7WUFDTCxHQUFHO1lBQ0gsVUFBVTtTQUNYLENBQUMsQ0FBQTtRQUVGLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRS9ELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmdzLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuZHJpdmVyTmFtZSAtIERyaXZlciBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWV0aG9kTmFtZSAtIE1ldGhvZCBuYW1lLlxuICogQHJldHVybnMge25ldmVyfSAtIEFsd2F5cyB0aHJvd3MuXG4gKi9cbmZ1bmN0aW9uIHRocm93TWlzc2luZ01ldGhvZCh7ZHJpdmVyTmFtZSwgbWV0aG9kTmFtZX0pIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBBdHRhY2htZW50IHN0b3JhZ2UgZHJpdmVyIFwiJHtkcml2ZXJOYW1lfVwiIHJlcXVpcmVzIGEgXCIke21ldGhvZE5hbWV9XCIgY2FsbGJhY2tgKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBDYW5kaWRhdGUgdmFsdWUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSAtIEJ1ZmZlciB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gdG9CdWZmZXIodmFsdWUpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHJldHVybiB2YWx1ZVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgXCJiYXNlNjRcIilcblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG5hdGl2ZSBhdHRhY2htZW50IHJlYWQgcmVzdWx0OiAke1N0cmluZyh2YWx1ZSl9YClcbn1cblxuLyoqXG4gKiBOYXRpdmUgYXR0YWNobWVudCBzdG9yYWdlIGRyaXZlci5cbiAqIFRoaXMgZHJpdmVyIGRlbGVnYXRlcyBhbGwgSS9PIHRvIHVzZXItcHJvdmlkZWQgY2FsbGJhY2tzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOYXRpdmVBdHRhY2htZW50U3RvcmFnZURyaXZlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBbYXJncy5jb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm5hbWUgLSBEcml2ZXIgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbYXJncy5vcHRpb25zXSAtIERyaXZlciBvcHRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIG5hbWUsIG9wdGlvbnMgPSB7fX0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFdyaXRlIGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmF0dGFjaG1lbnRJZCAtIEF0dGFjaG1lbnQgaWQuXG4gICAqIEBwYXJhbSB7e2NvbnRlbnRCYXNlNjQ6IHN0cmluZywgY29udGVudFR5cGU6IHN0cmluZyB8IG51bGwsIGZpbGVuYW1lOiBzdHJpbmd9fSBhcmdzLmlucHV0IC0gTm9ybWFsaXplZCBhdHRhY2htZW50IGlucHV0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIEF0dGFjaG1lbnQgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8e3N0b3JhZ2VLZXk6IHN0cmluZ30+fSAtIFN0b3JhZ2Uga2V5IHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHdyaXRlKHthdHRhY2htZW50SWQsIGlucHV0LCBtb2RlbCwgbmFtZX0pIHtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy53cml0ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvd01pc3NpbmdNZXRob2Qoe2RyaXZlck5hbWU6IHRoaXMubmFtZSwgbWV0aG9kTmFtZTogXCJ3cml0ZVwifSlcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMud3JpdGUoe1xuICAgICAgYXR0YWNobWVudElkLFxuICAgICAgYXR0YWNobWVudE5hbWU6IG5hbWUsXG4gICAgICBjb250ZW50QmFzZTY0OiBpbnB1dC5jb250ZW50QmFzZTY0LFxuICAgICAgY29udGVudFR5cGU6IGlucHV0LmNvbnRlbnRUeXBlLFxuICAgICAgZmlsZW5hbWU6IGlucHV0LmZpbGVuYW1lLFxuICAgICAgbW9kZWxcbiAgICB9KVxuXG4gICAgaWYgKCFyZXN1bHQgfHwgdHlwZW9mIHJlc3VsdC5zdG9yYWdlS2V5ICE9PSBcInN0cmluZ1wiIHx8IHJlc3VsdC5zdG9yYWdlS2V5Lmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXR0YWNobWVudCBzdG9yYWdlIGRyaXZlciBcIiR7dGhpcy5uYW1lfVwiIHdyaXRlIGNhbGxiYWNrIG11c3QgcmV0dXJuIHtzdG9yYWdlS2V5fWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHtzdG9yYWdlS2V5OiByZXN1bHQuc3RvcmFnZUtleX1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJlYWQgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc3RvcmFnZUtleSAtIFN0b3JhZ2Uga2V5LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIEF0dGFjaG1lbnQgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLnJvdyAtIEF0dGFjaG1lbnQgcm93LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fSAtIEF0dGFjaG1lbnQgYnl0ZXMuXG4gICAqL1xuICBhc3luYyByZWFkKHttb2RlbCwgbmFtZSwgcm93LCBzdG9yYWdlS2V5fSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnJlYWQgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhyb3dNaXNzaW5nTWV0aG9kKHtkcml2ZXJOYW1lOiB0aGlzLm5hbWUsIG1ldGhvZE5hbWU6IFwicmVhZFwifSlcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMucmVhZCh7XG4gICAgICBhdHRhY2htZW50SWQ6IHJvdy5pZCA/IFN0cmluZyhyb3cuaWQpIDogXCJcIixcbiAgICAgIGF0dGFjaG1lbnROYW1lOiBuYW1lLFxuICAgICAgbW9kZWwsXG4gICAgICByb3csXG4gICAgICBzdG9yYWdlS2V5XG4gICAgfSlcblxuICAgIHJldHVybiB0b0J1ZmZlcihyZXN1bHQpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBEZWxldGUgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc3RvcmFnZUtleSAtIFN0b3JhZ2Uga2V5LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIEF0dGFjaG1lbnQgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLnJvdyAtIEF0dGFjaG1lbnQgcm93LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGRlbGV0ZWQuXG4gICAqL1xuICBhc3luYyBkZWxldGUoe21vZGVsLCBuYW1lLCByb3csIHN0b3JhZ2VLZXl9KSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuZGVsZXRlICE9PSBcImZ1bmN0aW9uXCIpIHJldHVyblxuXG4gICAgYXdhaXQgdGhpcy5vcHRpb25zLmRlbGV0ZSh7XG4gICAgICBhdHRhY2htZW50SWQ6IHJvdy5pZCA/IFN0cmluZyhyb3cuaWQpIDogXCJcIixcbiAgICAgIGF0dGFjaG1lbnROYW1lOiBuYW1lLFxuICAgICAgbW9kZWwsXG4gICAgICByb3csXG4gICAgICBzdG9yYWdlS2V5XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFVSTCBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5zdG9yYWdlS2V5IC0gU3RvcmFnZSBrZXkuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbCAtIE1vZGVsIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lIC0gQXR0YWNobWVudCBuYW1lLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3Mucm93IC0gQXR0YWNobWVudCByb3cuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fSAtIEF0dGFjaG1lbnQgVVJMLlxuICAgKi9cbiAgYXN5bmMgdXJsKHttb2RlbCwgbmFtZSwgcm93LCBzdG9yYWdlS2V5fSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnVybCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLm9wdGlvbnMudXJsKHtcbiAgICAgIGF0dGFjaG1lbnRJZDogcm93LmlkID8gU3RyaW5nKHJvdy5pZCkgOiBcIlwiLFxuICAgICAgYXR0YWNobWVudE5hbWU6IG5hbWUsXG4gICAgICBtb2RlbCxcbiAgICAgIHJvdyxcbiAgICAgIHN0b3JhZ2VLZXlcbiAgICB9KVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwKSByZXR1cm4gdmFsdWVcblxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3JlY29yZC9hdHRhY2htZW50cy9zdG9yYWdlLWRyaXZlcnMvbmF0aXZlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7Ozs7R0FLRztBQUNILFNBQVMsa0JBQWtCLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDO0lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLFVBQVUsaUJBQWlCLFVBQVUsWUFBWSxDQUFDLENBQUE7QUFDbEcsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsUUFBUSxDQUFDLEtBQUs7SUFDckIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3hDLElBQUksS0FBSyxZQUFZLFVBQVU7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUQsSUFBSSxLQUFLLFlBQVksV0FBVztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBRWxFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDaEYsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQTZCO0lBQ2hEOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtR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LENBQUMsQ0FBQTtRQUVGLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRS9ELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmdzLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuZHJpdmVyTmFtZSAtIERyaXZlciBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWV0aG9kTmFtZSAtIE1ldGhvZCBuYW1lLlxuICogQHJldHVybnMge25ldmVyfSAtIEFsd2F5cyB0aHJvd3MuXG4gKi9cbmZ1bmN0aW9uIHRocm93TWlzc2luZ01ldGhvZCh7ZHJpdmVyTmFtZSwgbWV0aG9kTmFtZX0pIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBBdHRhY2htZW50IHN0b3JhZ2UgZHJpdmVyIFwiJHtkcml2ZXJOYW1lfVwiIHJlcXVpcmVzIGEgXCIke21ldGhvZE5hbWV9XCIgY2FsbGJhY2tgKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBDYW5kaWRhdGUgdmFsdWUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSAtIEJ1ZmZlciB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gdG9CdWZmZXIodmFsdWUpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHJldHVybiB2YWx1ZVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgXCJiYXNlNjRcIilcblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG5hdGl2ZSBhdHRhY2htZW50IHJlYWQgcmVzdWx0OiAke1N0cmluZyh2YWx1ZSl9YClcbn1cblxuLyoqXG4gKiBOYXRpdmUgYXR0YWNobWVudCBzdG9yYWdlIGRyaXZlci5cbiAqIFRoaXMgZHJpdmVyIGRlbGVnYXRlcyBhbGwgSS9PIHRvIHVzZXItcHJvdmlkZWQgY2FsbGJhY2tzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOYXRpdmVBdHRhY2htZW50U3RvcmFnZURyaXZlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBbYXJncy5jb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm5hbWUgLSBEcml2ZXIgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbYXJncy5vcHRpb25zXSAtIERyaXZlciBvcHRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIG5hbWUsIG9wdGlvbnMgPSB7fX0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFdyaXRlIGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmF0dGFjaG1lbnRJZCAtIEF0dGFjaG1lbnQgaWQuXG4gICAqIEBwYXJhbSB7e2NvbnRlbnRCYXNlNjQ6IHN0cmluZywgY29udGVudFR5cGU6IHN0cmluZyB8IG51bGwsIGZpbGVuYW1lOiBzdHJpbmd9fSBhcmdzLmlucHV0IC0gTm9ybWFsaXplZCBhdHRhY2htZW50IGlucHV0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIEF0dGFjaG1lbnQgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8e3N0b3JhZ2VLZXk6IHN0cmluZ30+fSAtIFN0b3JhZ2Uga2V5IHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHdyaXRlKHthdHRhY2htZW50SWQsIGlucHV0LCBtb2RlbCwgbmFtZX0pIHtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy53cml0ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvd01pc3NpbmdNZXRob2Qoe2RyaXZlck5hbWU6IHRoaXMubmFtZSwgbWV0aG9kTmFtZTogXCJ3cml0ZVwifSlcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMud3JpdGUoe1xuICAgICAgYXR0YWNobWVudElkLFxuICAgICAgYXR0YWNobWVudE5hbWU6IG5hbWUsXG4gICAgICBjb250ZW50QmFzZTY0OiBpbnB1dC5jb250ZW50QmFzZTY0LFxuICAgICAgY29udGVudFR5cGU6IGlucHV0LmNvbnRlbnRUeXBlLFxuICAgICAgZmlsZW5hbWU6IGlucHV0LmZpbGVuYW1lLFxuICAgICAgbW9kZWxcbiAgICB9KVxuXG4gICAgaWYgKCFyZXN1bHQgfHwgdHlwZW9mIHJlc3VsdC5zdG9yYWdlS2V5ICE9PSBcInN0cmluZ1wiIHx8IHJlc3VsdC5zdG9yYWdlS2V5Lmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXR0YWNobWVudCBzdG9yYWdlIGRyaXZlciBcIiR7dGhpcy5uYW1lfVwiIHdyaXRlIGNhbGxiYWNrIG11c3QgcmV0dXJuIHtzdG9yYWdlS2V5fWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHtzdG9yYWdlS2V5OiByZXN1bHQuc3RvcmFnZUtleX1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJlYWQgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc3RvcmFnZUtleSAtIFN0b3JhZ2Uga2V5LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIEF0dGFjaG1lbnQgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLnJvdyAtIEF0dGFjaG1lbnQgcm93LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fSAtIEF0dGFjaG1lbnQgYnl0ZXMuXG4gICAqL1xuICBhc3luYyByZWFkKHttb2RlbCwgbmFtZSwgcm93LCBzdG9yYWdlS2V5fSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnJlYWQgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhyb3dNaXNzaW5nTWV0aG9kKHtkcml2ZXJOYW1lOiB0aGlzLm5hbWUsIG1ldGhvZE5hbWU6IFwicmVhZFwifSlcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMucmVhZCh7XG4gICAgICBhdHRhY2htZW50SWQ6IHJvdy5pZCB8fCBcIlwiLFxuICAgICAgYXR0YWNobWVudE5hbWU6IG5hbWUsXG4gICAgICBtb2RlbCxcbiAgICAgIHJvdyxcbiAgICAgIHN0b3JhZ2VLZXlcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRvQnVmZmVyKHJlc3VsdClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIERlbGV0ZSBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5zdG9yYWdlS2V5IC0gU3RvcmFnZSBrZXkuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbCAtIE1vZGVsIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lIC0gQXR0YWNobWVudCBuYW1lLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3Mucm93IC0gQXR0YWNobWVudCByb3cuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gZGVsZXRlZC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZSh7bW9kZWwsIG5hbWUsIHJvdywgc3RvcmFnZUtleX0pIHtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5kZWxldGUgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuXG5cbiAgICBhd2FpdCB0aGlzLm9wdGlvbnMuZGVsZXRlKHtcbiAgICAgIGF0dGFjaG1lbnRJZDogcm93LmlkIHx8IFwiXCIsXG4gICAgICBhdHRhY2htZW50TmFtZTogbmFtZSxcbiAgICAgIG1vZGVsLFxuICAgICAgcm93LFxuICAgICAgc3RvcmFnZUtleVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBVUkwgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc3RvcmFnZUtleSAtIFN0b3JhZ2Uga2V5LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubmFtZSAtIEF0dGFjaG1lbnQgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLnJvdyAtIEF0dGFjaG1lbnQgcm93LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBudWxsPn0gLSBBdHRhY2htZW50IFVSTC5cbiAgICovXG4gIGFzeW5jIHVybCh7bW9kZWwsIG5hbWUsIHJvdywgc3RvcmFnZUtleX0pIHtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy51cmwgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5vcHRpb25zLnVybCh7XG4gICAgICBhdHRhY2htZW50SWQ6IHJvdy5pZCB8fCBcIlwiLFxuICAgICAgYXR0YWNobWVudE5hbWU6IG5hbWUsXG4gICAgICBtb2RlbCxcbiAgICAgIHJvdyxcbiAgICAgIHN0b3JhZ2VLZXlcbiAgICB9KVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwKSByZXR1cm4gdmFsdWVcblxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-model-controller.d.ts","sourceRoot":"","sources":["../../src/frontend-model-controller.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend-model-controller.d.ts","sourceRoot":"","sources":["../../src/frontend-model-controller.js"],"names":[],"mappings":"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"}