@fgv/ts-json 1.4.1 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/file.js CHANGED
@@ -97,7 +97,7 @@ function convertJsonDirectorySync(srcPath, options) {
97
97
  }
98
98
  return undefined;
99
99
  }).filter((r) => r !== undefined);
100
- return (0, ts_utils_1.mapResults)(results).getValueOrThrow();
100
+ return (0, ts_utils_1.mapResults)(results).orThrow();
101
101
  });
102
102
  }
103
103
  exports.convertJsonDirectorySync = convertJsonDirectorySync;
@@ -137,4 +137,4 @@ function writeJsonFileSync(srcPath, value) {
137
137
  });
138
138
  }
139
139
  exports.writeJsonFileSync = writeJsonFileSync;
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw0Q0FBNEY7QUFJNUY7OztHQUdHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM1QyxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUU7UUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFjLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBTkQsNENBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUksT0FBZSxFQUFFLFNBQXVCO0lBQzNFLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDaEQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUpELGtEQUlDO0FBNEJEOzs7O0dBSUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBSSxPQUFlLEVBQUUsT0FBbUM7SUFDNUYsT0FBTyxJQUFBLHdCQUFhLEVBQXlCLEdBQUcsRUFBRTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFD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QUU7UUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFORCw4Q0FNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29udmVydGVyLCBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIGZhaWwsIG1hcFJlc3VsdHMsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgSnNvblZhbHVlIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJlYWQgdHlwZS1zYWZlIEpTT04gZnJvbSBhIGZpbGVcbiAqIEBwYXJhbSBzcmNQYXRoIFBhdGggb2YgdGhlIGZpbGUgdG8gcmVhZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEpzb25GaWxlU3luYyhzcmNQYXRoOiBzdHJpbmcpOiBSZXN1bHQ8SnNvblZhbHVlPiB7XG4gICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShzcmNQYXRoKTtcbiAgICAgICAgY29uc3QgYm9keSA9IGZzLnJlYWRGaWxlU3luYyhmdWxsUGF0aCwgJ3V0ZjgnKS50b1N0cmluZygpO1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShib2R5KSBhcyBKc29uVmFsdWU7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmVhZCBhIEpTT04gZmlsZSBhbmQgYXBwbHkgYSBzdXBwbGllZCBjb252ZXJ0ZXJcbiAqIEBwYXJhbSBzcmNQYXRoIFBhdGggb2YgdGhlIGZpbGUgdG8gcmVhZFxuICogQHBhcmFtIGNvbnZlcnRlciBDb252ZXJ0ZXIgdXNlZCB0byBjb252ZXJ0IHRoZSBmaWxlIGNvbnRlbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SnNvbkZpbGVTeW5jPFQ+KHNyY1BhdGg6IHN0cmluZywgY29udmVydGVyOiBDb252ZXJ0ZXI8VD4pOiBSZXN1bHQ8VD4ge1xuICAgIHJldHVybiByZWFkSnNvbkZpbGVTeW5jKHNyY1BhdGgpLm9uU3VjY2VzcygoanNvbikgPT4ge1xuICAgICAgICByZXR1cm4gY29udmVydGVyLmNvbnZlcnQoanNvbik7XG4gICAgfSk7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZGlyZWN0b3J5IGNvbnZlcnNpb25cbiAqIFRPRE86IGFkZCBmaWx0ZXJpbmcsIGFsbG93ZWQgYW5kIGV4Y2x1ZGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5Q29udmVydE9wdGlvbnM8VCwgVEM9dW5rbm93bj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBjb252ZXJ0ZXIgdXNlZCB0byBjb252ZXJ0IGluY29taW5nIEpTT04gb2JqZWN0c1xuICAgICAqL1xuICAgIGNvbnZlcnRlcjogQ29udmVydGVyPFQsIFRDPjtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgZm9yIG9uZSBpdGVtIGluIGEgZGlyZWN0b3J5IGNvbnZlcnNpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkRGlyZWN0b3J5SXRlbTxUPiB7XG4gICAgLyoqXG4gICAgICogUmVsYXRpdmUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IHdhcyBwcm9jZXNzZWRcbiAgICAgKi9cbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBheWxvYWQgb2YgdGhlIGZpbGVcbiAgICAgKi9cbiAgICBpdGVtOiBUO1xufVxuXG4vKipcbiAqIFJlYWRzIGFsbCBKU09OIGZpbGVzIGZyb20gYSBkaXJlY3RvcnkgYW5kIGFwcGx5IGEgc3VwcGxpZWQgY29udmVydGVyXG4gKiBAcGFyYW0gc3JjUGF0aCBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGJlIHJlYWRcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY29udHJvbCBjb252ZXJzaW9uIGFuZCBmaWx0ZXJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRKc29uRGlyZWN0b3J5U3luYzxUPihzcmNQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IERpcmVjdG9yeUNvbnZlcnRPcHRpb25zPFQ+KTogUmVzdWx0PFJlYWREaXJlY3RvcnlJdGVtPFQ+W10+IHtcbiAgICByZXR1cm4gY2FwdHVyZVJlc3VsdDxSZWFkRGlyZWN0b3J5SXRlbTxUPltdPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHNyY1BhdGgpO1xuICAgICAgICBpZiAoIWZzLnN0YXRTeW5jKGZ1bGxQYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZnVsbFBhdGh9OiBOb3QgYSBkaXJlY3RvcnlgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGZ1bGxQYXRoLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBmaWxlcy5tYXAoKGZpKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmkuaXNGaWxlKCkgJiYgKHBhdGguZXh0bmFtZShmaS5uYW1lKSA9PT0gJy5qc29uJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShmdWxsUGF0aCwgZmkubmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRKc29uRmlsZVN5bmMoZmlsZVBhdGgsIG9wdGlvbnMuY29udmVydGVyKS5vblN1Y2Nlc3MoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IGZpLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS5vbkZhaWx1cmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7ZmkubmFtZX06ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pLmZpbHRlcigocik6IHIgaXMgUmVzdWx0PFJlYWREaXJlY3RvcnlJdGVtPFQ+PiA9PiByICE9PSB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhyZXN1bHRzKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IHR5cGUgSXRlbU5hbWVUcmFuc2Zvcm1GdW5jdGlvbjxUPiA9IChuYW1lOiBzdHJpbmcsIGl0ZW06IFQpID0+IFJlc3VsdDxzdHJpbmc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeVRvTWFwQ29udmVydE9wdGlvbnM8VCwgVEM9dW5rbm93bj4gZXh0ZW5kcyBEaXJlY3RvcnlDb252ZXJ0T3B0aW9uczxULCBUQz4ge1xuICAgIHRyYW5zZm9ybU5hbWU/OiBJdGVtTmFtZVRyYW5zZm9ybUZ1bmN0aW9uPFQ+O1xufVxuXG5jb25zdCBkZWZhdWx0TmFtZVRyYW5zZm9ybWVyID0gKG46c3RyaW5nKTogUmVzdWx0PHN0cmluZz4gPT4gc3VjY2VlZChuKTtcblxuLyoqXG4gKiBSZWFkcyBhbmQgY29udmVydHMgYWxsIEpTT04gZmlsZXMgZnJvbSBhIGRpcmVjdG9yeSwgcmV0dXJuaW5nIGEgbWFwXG4gKiBpbmRleGVkIGJ5IGZpbGUgYmFzZSBuYW1lIChpLmUuIG1pbnVzIHRoZSBleHRlbnNpb24pIHdpdGggYW4gb3B0aW9uYWxcbiAqIG5hbWUgdHJhbnNmb3JtYXRpb24gYXBwbGllZCBpZiBwcmVzZW50LlxuICogQHBhcmFtIHNyY1BhdGggVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBiZSByZWFkXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNvbnRyb2wgY29udmVyc2lvbiBhbmQgZmlsdGVyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SnNvbkRpcmVjdG9yeVRvTWFwU3luYzxULCBUQz11bmtub3duPihzcmNQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IERpcmVjdG9yeVRvTWFwQ29udmVydE9wdGlvbnM8VCwgVEM+KTogUmVzdWx0PE1hcDxzdHJpbmcsIFQ+PiB7XG4gICAgcmV0dXJuIGNvbnZlcnRKc29uRGlyZWN0b3J5U3luYyhzcmNQYXRoLCBvcHRpb25zKS5vblN1Y2Nlc3MoKGl0ZW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybU5hbWUgPSBvcHRpb25zLnRyYW5zZm9ybU5hbWUgPz8gZGVmYXVsdE5hbWVUcmFuc2Zvcm1lcjtcbiAgICAgICAgcmV0dXJuIG1hcFJlc3VsdHMoaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBiYXNlbmFtZSA9IHBhdGguYmFzZW5hbWUoaXRlbS5maWxlbmFtZSwgJy5qc29uJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtTmFtZShiYXNlbmFtZSwgaXRlbS5pdGVtKS5vblN1Y2Nlc3MoKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZDxbc3RyaW5nLCBUXT4oW25hbWUsIGl0ZW0uaXRlbV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKS5vblN1Y2Nlc3MoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChuZXcgTWFwPHN0cmluZywgVD4oaXRlbXMpKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gd3JpdGUgdHlwZS1zYWZlIEpTT04gdG8gYSBmaWxlXG4gKiBAcGFyYW0gc3JjUGF0aCBQYXRoIG9mIHRoZSBmaWxlIHRvIHdyaXRlXG4gKiBAcGFyYW0gdmFsdWUgVGhlIEpTT04gb2JqZWN0IHRvIGJlIHdyaXR0ZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSnNvbkZpbGVTeW5jKHNyY1BhdGg6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSk6IFJlc3VsdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShzcmNQYXRoKTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmdWxsUGF0aCwgSlNPTi5zdHJpbmdpZnkodmFsdWUsIHVuZGVmaW5lZCwgMikpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbn1cbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw0Q0FBNEY7QUFJNUY7OztHQUdHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM1QyxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUU7UUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFjLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBTkQsNENBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUksT0FBZSxFQUFFLFNBQXVCO0lBQzNFLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDaEQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUpELGtEQUlDO0FBNEJEOzs7O0dBSUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBSSxPQUFlLEVBQUUsT0FBbUM7SUFDNUYsT0FBTyxJQUFBLHdCQUFhLEVBQXlCLEdBQUcsRUFBRTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFD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QUU7UUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFORCw4Q0FNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29udmVydGVyLCBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIGZhaWwsIG1hcFJlc3VsdHMsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgSnNvblZhbHVlIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJlYWQgdHlwZS1zYWZlIEpTT04gZnJvbSBhIGZpbGVcbiAqIEBwYXJhbSBzcmNQYXRoIFBhdGggb2YgdGhlIGZpbGUgdG8gcmVhZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEpzb25GaWxlU3luYyhzcmNQYXRoOiBzdHJpbmcpOiBSZXN1bHQ8SnNvblZhbHVlPiB7XG4gICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShzcmNQYXRoKTtcbiAgICAgICAgY29uc3QgYm9keSA9IGZzLnJlYWRGaWxlU3luYyhmdWxsUGF0aCwgJ3V0ZjgnKS50b1N0cmluZygpO1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShib2R5KSBhcyBKc29uVmFsdWU7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmVhZCBhIEpTT04gZmlsZSBhbmQgYXBwbHkgYSBzdXBwbGllZCBjb252ZXJ0ZXJcbiAqIEBwYXJhbSBzcmNQYXRoIFBhdGggb2YgdGhlIGZpbGUgdG8gcmVhZFxuICogQHBhcmFtIGNvbnZlcnRlciBDb252ZXJ0ZXIgdXNlZCB0byBjb252ZXJ0IHRoZSBmaWxlIGNvbnRlbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SnNvbkZpbGVTeW5jPFQ+KHNyY1BhdGg6IHN0cmluZywgY29udmVydGVyOiBDb252ZXJ0ZXI8VD4pOiBSZXN1bHQ8VD4ge1xuICAgIHJldHVybiByZWFkSnNvbkZpbGVTeW5jKHNyY1BhdGgpLm9uU3VjY2VzcygoanNvbikgPT4ge1xuICAgICAgICByZXR1cm4gY29udmVydGVyLmNvbnZlcnQoanNvbik7XG4gICAgfSk7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZGlyZWN0b3J5IGNvbnZlcnNpb25cbiAqIFRPRE86IGFkZCBmaWx0ZXJpbmcsIGFsbG93ZWQgYW5kIGV4Y2x1ZGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5Q29udmVydE9wdGlvbnM8VCwgVEM9dW5rbm93bj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBjb252ZXJ0ZXIgdXNlZCB0byBjb252ZXJ0IGluY29taW5nIEpTT04gb2JqZWN0c1xuICAgICAqL1xuICAgIGNvbnZlcnRlcjogQ29udmVydGVyPFQsIFRDPjtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgZm9yIG9uZSBpdGVtIGluIGEgZGlyZWN0b3J5IGNvbnZlcnNpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkRGlyZWN0b3J5SXRlbTxUPiB7XG4gICAgLyoqXG4gICAgICogUmVsYXRpdmUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IHdhcyBwcm9jZXNzZWRcbiAgICAgKi9cbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBheWxvYWQgb2YgdGhlIGZpbGVcbiAgICAgKi9cbiAgICBpdGVtOiBUO1xufVxuXG4vKipcbiAqIFJlYWRzIGFsbCBKU09OIGZpbGVzIGZyb20gYSBkaXJlY3RvcnkgYW5kIGFwcGx5IGEgc3VwcGxpZWQgY29udmVydGVyXG4gKiBAcGFyYW0gc3JjUGF0aCBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGJlIHJlYWRcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY29udHJvbCBjb252ZXJzaW9uIGFuZCBmaWx0ZXJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRKc29uRGlyZWN0b3J5U3luYzxUPihzcmNQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IERpcmVjdG9yeUNvbnZlcnRPcHRpb25zPFQ+KTogUmVzdWx0PFJlYWREaXJlY3RvcnlJdGVtPFQ+W10+IHtcbiAgICByZXR1cm4gY2FwdHVyZVJlc3VsdDxSZWFkRGlyZWN0b3J5SXRlbTxUPltdPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHNyY1BhdGgpO1xuICAgICAgICBpZiAoIWZzLnN0YXRTeW5jKGZ1bGxQYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZnVsbFBhdGh9OiBOb3QgYSBkaXJlY3RvcnlgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGZ1bGxQYXRoLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBmaWxlcy5tYXAoKGZpKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmkuaXNGaWxlKCkgJiYgKHBhdGguZXh0bmFtZShmaS5uYW1lKSA9PT0gJy5qc29uJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShmdWxsUGF0aCwgZmkubmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRKc29uRmlsZVN5bmMoZmlsZVBhdGgsIG9wdGlvbnMuY29udmVydGVyKS5vblN1Y2Nlc3MoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IGZpLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS5vbkZhaWx1cmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7ZmkubmFtZX06ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pLmZpbHRlcigocik6IHIgaXMgUmVzdWx0PFJlYWREaXJlY3RvcnlJdGVtPFQ+PiA9PiByICE9PSB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhyZXN1bHRzKS5vclRocm93KCk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCB0eXBlIEl0ZW1OYW1lVHJhbnNmb3JtRnVuY3Rpb248VD4gPSAobmFtZTogc3RyaW5nLCBpdGVtOiBUKSA9PiBSZXN1bHQ8c3RyaW5nPjtcblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlUb01hcENvbnZlcnRPcHRpb25zPFQsIFRDPXVua25vd24+IGV4dGVuZHMgRGlyZWN0b3J5Q29udmVydE9wdGlvbnM8VCwgVEM+IHtcbiAgICB0cmFuc2Zvcm1OYW1lPzogSXRlbU5hbWVUcmFuc2Zvcm1GdW5jdGlvbjxUPjtcbn1cblxuY29uc3QgZGVmYXVsdE5hbWVUcmFuc2Zvcm1lciA9IChuOnN0cmluZyk6IFJlc3VsdDxzdHJpbmc+ID0+IHN1Y2NlZWQobik7XG5cbi8qKlxuICogUmVhZHMgYW5kIGNvbnZlcnRzIGFsbCBKU09OIGZpbGVzIGZyb20gYSBkaXJlY3RvcnksIHJldHVybmluZyBhIG1hcFxuICogaW5kZXhlZCBieSBmaWxlIGJhc2UgbmFtZSAoaS5lLiBtaW51cyB0aGUgZXh0ZW5zaW9uKSB3aXRoIGFuIG9wdGlvbmFsXG4gKiBuYW1lIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQgaWYgcHJlc2VudC5cbiAqIEBwYXJhbSBzcmNQYXRoIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gYmUgcmVhZFxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjb250cm9sIGNvbnZlcnNpb24gYW5kIGZpbHRlcmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEpzb25EaXJlY3RvcnlUb01hcFN5bmM8VCwgVEM9dW5rbm93bj4oc3JjUGF0aDogc3RyaW5nLCBvcHRpb25zOiBEaXJlY3RvcnlUb01hcENvbnZlcnRPcHRpb25zPFQsIFRDPik6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgIHJldHVybiBjb252ZXJ0SnNvbkRpcmVjdG9yeVN5bmMoc3JjUGF0aCwgb3B0aW9ucykub25TdWNjZXNzKChpdGVtcykgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1OYW1lID0gb3B0aW9ucy50cmFuc2Zvcm1OYW1lID8/IGRlZmF1bHROYW1lVHJhbnNmb3JtZXI7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmFzZW5hbWUgPSBwYXRoLmJhc2VuYW1lKGl0ZW0uZmlsZW5hbWUsICcuanNvbicpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybU5hbWUoYmFzZW5hbWUsIGl0ZW0uaXRlbSkub25TdWNjZXNzKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQ8W3N0cmluZywgVF0+KFtuYW1lLCBpdGVtLml0ZW1dKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSkub25TdWNjZXNzKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQobmV3IE1hcDxzdHJpbmcsIFQ+KGl0ZW1zKSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHdyaXRlIHR5cGUtc2FmZSBKU09OIHRvIGEgZmlsZVxuICogQHBhcmFtIHNyY1BhdGggUGF0aCBvZiB0aGUgZmlsZSB0byB3cml0ZVxuICogQHBhcmFtIHZhbHVlIFRoZSBKU09OIG9iamVjdCB0byBiZSB3cml0dGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUpzb25GaWxlU3luYyhzcmNQYXRoOiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUpOiBSZXN1bHQ8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUoc3JjUGF0aCk7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZnVsbFBhdGgsIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB1bmRlZmluZWQsIDIpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG59XG4iXX0=
@@ -83,7 +83,7 @@ export interface JsonConverterOptions {
83
83
  */
84
84
  onInvalidPropertyName: 'error' | 'ignore';
85
85
  /**
86
- * If onInvalidPropertyVaule is 'error' (default) then any illegal
86
+ * If onInvalidPropertyValue is 'error' (default) then any illegal
87
87
  * property value causes an error and stops conversion. If
88
88
  * onInvalidPropertyValue is 'ignore' then any invalid property
89
89
  * values are silently ignored.
@@ -158,13 +158,13 @@ export declare class JsonConverter extends JsonEditorConverter {
158
158
  constructor(options?: Partial<JsonConverterOptions>);
159
159
  /**
160
160
  * Creates a new converter.
161
- * @param options Optional options to conifgure the converter
161
+ * @param options Optional options to configure the converter
162
162
  * @returns Success with a new JsonConverter on success, or Failure with an
163
163
  * informative message if an error occurs.
164
164
  */
165
165
  static create(options?: Partial<JsonConverterOptions>): Result<JsonConverter>;
166
166
  }
167
- export type TemplatedJsonConverterOptions = Omit<JsonConverterOptions, 'useNameTemplates' | 'useValueTemplates' | 'useMultivalueTemplateNmes'>;
167
+ export type TemplatedJsonConverterOptions = Omit<JsonConverterOptions, 'useNameTemplates' | 'useValueTemplates' | 'useMultiValueTemplateNames'>;
168
168
  /**
169
169
  * A ts-utils @see Converter from unknown to type-safe JSON with mustache
170
170
  * template rendering and multi-value property name rules enabled regardless
package/jsonConverter.js CHANGED
@@ -181,12 +181,12 @@ class JsonConverter extends JsonEditorConverter {
181
181
  * @param options Optional options to configure the converter
182
182
  */
183
183
  constructor(options) {
184
- const editor = converterOptionsToEditor(options).getValueOrThrow();
184
+ const editor = converterOptionsToEditor(options).orThrow();
185
185
  super(editor);
186
186
  }
187
187
  /**
188
188
  * Creates a new converter.
189
- * @param options Optional options to conifgure the converter
189
+ * @param options Optional options to configure the converter
190
190
  * @returns Success with a new JsonConverter on success, or Failure with an
191
191
  * informative message if an error occurs.
192
192
  */
@@ -208,7 +208,7 @@ class TemplatedJsonConverter extends JsonEditorConverter {
208
208
  */
209
209
  constructor(options) {
210
210
  options = { ...options, ...TemplatedJsonConverter.templateOptions };
211
- const editor = converterOptionsToEditor(options).getValueOrThrow();
211
+ const editor = converterOptionsToEditor(options).orThrow();
212
212
  super(editor);
213
213
  }
214
214
  /**
@@ -241,7 +241,7 @@ class ConditionalJsonConverter extends JsonEditorConverter {
241
241
  */
242
242
  constructor(options) {
243
243
  options = { ...options, ...ConditionalJsonConverter.conditionalOptions };
244
- const editor = converterOptionsToEditor(options).getValueOrThrow();
244
+ const editor = converterOptionsToEditor(options).orThrow();
245
245
  super(editor);
246
246
  }
247
247
  /**
@@ -272,7 +272,7 @@ class RichJsonConverter extends JsonEditorConverter {
272
272
  */
273
273
  constructor(options) {
274
274
  options = { ...options, ...RichJsonConverter.richOptions };
275
- const editor = converterOptionsToEditor(options).getValueOrThrow();
275
+ const editor = converterOptionsToEditor(options).orThrow();
276
276
  super(editor);
277
277
  }
278
278
  /**
@@ -289,4 +289,4 @@ RichJsonConverter.richOptions = {
289
289
  ...ConditionalJsonConverter.conditionalOptions,
290
290
  useReferences: true,
291
291
  };
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQU91QjtBQUN2Qiw4Q0FLNEI7QUFDNUIscUNBQTBFO0FBQzFFLCtDQU11QjtBQUV2Qix3REFBcUQ7QUErR3JEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLE9BQXVDOztJQUNwRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLCtCQUFpQixDQUFDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLG1DQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxtQkFBbUIsbUNBQUksWUFBWSxDQUFDLENBQUM7SUFFekUsTUFBTSxPQUFPLEdBQXlCO1FBQ2xDLGlCQUFpQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGlCQUFpQixtQ0FBSSxRQUFRO1FBQ3pE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cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbnZlcnRlcixcbiAgICBDb252ZXJ0ZXIsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBzdWNjZWVkLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSxcbiAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUsXG4gICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUsXG4gICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUsXG59IGZyb20gJy4vanNvbkVkaXRvci9ydWxlcyc7XG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBKc29uQ29udGV4dCxcbiAgICBKc29uUmVmZXJlbmNlTWFwLFxuICAgIFRlbXBsYXRlVmFycyxcbiAgICBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbixcbiAgICBkZWZhdWx0RXh0ZW5kVmFycyxcbn0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5cbmltcG9ydCB7IEpzb25FZGl0b3IgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvcic7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvci9qc29uRWRpdG9yU3RhdGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvclJ1bGUgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvclJ1bGUnO1xuXG4vKipcbiAqIENvbnZlcnNpb24gb3B0aW9ucyBmb3IgSnNvbkNvbnZlcnRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSB2YWx1ZXMgd2lsbCBiZSByZW5kZXJlZCB1c2luZ1xuICAgICAqIG11c3RhY2hlIGFuZCB0aG9zZSB2YXJpYWJsZXMuIE90aGVyd2lzZSBzdHJpbmcgcHJvcGVydGllc1xuICAgICAqIGFyZSBjb3BpZWQgd2l0aG91dCBtb2RpZmljYXRpb24uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byB0cnVlIGlmIHZhcnMgYXJlIHN1cHBsaWVkIHdpdGggb3B0aW9ucyxcbiAgICAgKiBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgdXNlVmFsdWVUZW1wbGF0ZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSBuYW1lcyB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nXG4gICAgICogbXVzdGFjaGUgYW5kIHRob3NlIHZhcmlhYmxlcy4gT3RoZXJ3aXNlIHN0cmluZyBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGNvcGllZCB3aXRob3V0IG1vZGlmaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIHRydWUgaWYgdmFycyBhcmUgc3VwcGxpZWQgd2l0aCBvcHRpb25zLFxuICAgICAqIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB1c2VOYW1lVGVtcGxhdGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBhbmQgaWYgdGVtcGxhdGUgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsXG4gICAgICogdGhlbiBzdHJpbmcgcHJvcGVydHkgbmFtZXMgd2lsbCBiZSBjb25zaWRlcmVkIGZvclxuICAgICAqIGNvbmRpdGlvbmFscy5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdG8gbWF0Y2ggdXNlTmFtZVRlbXBsYXRlc1xuICAgICAqL1xuICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHByb3BlcnRpZXMgd2l0aCB1bmNvbmRpdGlvbmFsIG5hbWVzXG4gICAgICogKHdoaWNoIHN0YXJ0IHdpdGggISkgYXJlIGZsYXR0ZW5lZC5cbiAgICAgKi9cbiAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGJvdGggdGVtcGxhdGUgdmFyaWFibGVzIGFuZCBhXG4gICAgICogY29udGV4dCBkZXJpdmF0aW9uIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhlbiBwcm9wZXJ0aWVzXG4gICAgICogd2hpY2ggbWF0Y2ggdGhlIG11bHRpLXZhbHVlIG5hbWUgcGF0dGVybiB3aWxsIGJlIGV4cGFuZGVkLlxuICAgICAqIERlZmF1bHQgbWF0Y2hlcyB1c2VOYW1lVGVtcGxhdGVzLlxuICAgICAqXG4gICAgICogRGVmYXVsdCBpcyB0cnVlIHVubGVzcyBleHRlbmRWYXJzIGlzIGV4cGxpY2l0bHkgc2V0IHRvXG4gICAgICogdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhcmlhYmxlcyAobXVzdGFjaGUgdmlldykgdXNlZCB0byByZW5kZXIgdGVtcGxhdGVkIHN0cmluZyBuYW1lc1xuICAgICAqIGFuZCBwcm9wZXJ0aWVzLiAgU2VlIHRoZSBtdXN0YWNoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIG11c3RhY2hlXG4gICAgICogc3ludGF4IGFuZCB0aGUgdGVtcGxhdGUgdmlldy5cbiAgICAgKi9cbiAgICB2YXJzPzogVGVtcGxhdGVWYXJzO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHVzZWQgdG8gZXh0ZW5kIHZhcmlhYmxlcyBmb3IgY2hpbGRyZW4gb2YgYW4gYXJyYXkgbm9kZSBkdXJpbmdcbiAgICAgKiBleHBhbnNpb24uIERlZmF1bHQgaXMgdG8gdXNlIGEgYnVpbHQtaW4gZXh0ZW5zaW9uIGZ1bmN0aW9uIHVubGVzc1xuICAgICAqIGV4dGVuZFZhcnMgaXMgZXhwbGljaXRseSBzZXQgdG8gdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGV4dGVuZFZhcnM/OiBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGEgcmVmZXJlbmNlcyBtYXAgaXMgc3VwcGxpZWQsIHRoZW5cbiAgICAgKiByZWZlcmVuY2VzIGluIHRoZSBzb3VyY2Ugb2JqZWN0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZSBpZiByZWZzIGFyZSBwcmVzZW50IGluIG9wdGlvbnMsIGZhbHNlXG4gICAgICogb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHVzZVJlZmVyZW5jZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBvYmplY3QgbWFwIHVzZWQgdG8gaW5zZXJ0IGFueSByZWZlcmVuY2VzIGluIHRoZVxuICAgICAqIGNvbnZlcnRlZCBKU09OLlxuICAgICAqL1xuICAgIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IHByb3BlcnR5IG5hbWVcbiAgICAgKiB0aGF0IGlzIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHNcbiAgICAgKiBjb252ZXJzaW9uLiAgSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdpZ25vcmUnLCB0aGVuIG5hbWVzIHdoaWNoXG4gICAgICogYXJlIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlWYXVsZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBpbGxlZ2FsXG4gICAgICogcHJvcGVydHkgdmFsdWUgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wcyBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIHRoZW4gYW55IGludmFsaWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uVW5rbm93blByb3BlcnR5VmFsdWUgaXMgZXJyb3IsIHRoZW4gYW55IHByb3BlcnR5IHdpdGhcbiAgICAgKiB2YWx1ZSB1bmRlZmluZWQgd2lsbCBjYXVzZSBhbiBlcnJvciBhbmQgc3RvcCBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgKGRlZmF1bHQpIHRoZW4gYW55XG4gICAgICogcHJvcGVydHkgd2l0aCB2YWx1ZSB1bmRlZmluZWQgaXMgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG59XG5cbi8qKlxuICogTWVyZ2VzIGFuIG9wdGlvbmFsbHkgc3VwcGxpZWQgcGFydGlhbCBzZXQgb2Ygb3B0aW9ucyB3aXRoIHRoZSBkZWZhdWx0XG4gKiBjb252ZXJ0ZXIgb3B0aW9ucywgcHJvZHVjaW5nIGEgZnVsbHktcmVzb2x2ZWQgc2V0IG9mIENvbnZlcnRlck9wdGlvbnNcbiAqIGFuZCB0YWtpbmcgYWxsIGR5bmFtaWMgcnVsZXMgaW50byBhY2NvdW50IChlLmcuIHRlbXBsYXRlIHVzYWdlIGVuYWJsZWRcbiAqIGlmIHZhcmlhYmxlcyBhcmUgc3VwcGxpZWQgYW5kIGRpc2FibGVkIGlmIG5vdClcbiAqIEBwYXJhbSBwYXJ0aWFsIEFuIG9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB0byBiZSBtZXJnZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGVmYXVsdEpzb25Db252ZXJ0ZXJPcHRpb25zKHBhcnRpYWw/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICBjb25zdCBoYXZlVmFycyA9IChwYXJ0aWFsPy52YXJzICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGhhdmVSZWZzID0gKHBhcnRpYWw/LnJlZnMgIT09IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZXh0ZW5kZXIgPSBwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpID8gcGFydGlhbC5leHRlbmRWYXJzIDogZGVmYXVsdEV4dGVuZFZhcnM7XG4gICAgY29uc3QgaGF2ZUV4dGVuZGVyID0gKGV4dGVuZGVyICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IG5hbWVzRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VOYW1lVGVtcGxhdGVzID8/IGhhdmVWYXJzKTtcbiAgICBjb25zdCBjb25kaXRpb25zRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VDb25kaXRpb25hbE5hbWVzID8/IG5hbWVzRGVmYXVsdCk7XG5cbiAgICBjb25zdCBvcHRpb25zOiBKc29uQ29udmVydGVyT3B0aW9ucyA9IHtcbiAgICAgICAgdXNlVmFsdWVUZW1wbGF0ZXM6IHBhcnRpYWw/LnVzZVZhbHVlVGVtcGxhdGVzID8/IGhhdmVWYXJzLFxuICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiBuYW1lc0RlZmF1bHQsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGNvbmRpdGlvbnNEZWZhdWx0LFxuICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogcGFydGlhbD8uZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXMgPz8gY29uZGl0aW9uc0RlZmF1bHQsXG4gICAgICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBwYXJ0aWFsPy51c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyA/PyAoaGF2ZUV4dGVuZGVyICYmIG5hbWVzRGVmYXVsdCksXG4gICAgICAgIHVzZVJlZmVyZW5jZXM6IHBhcnRpYWw/LnVzZVJlZmVyZW5jZXMgPz8gaGF2ZVJlZnMsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogcGFydGlhbD8ub25JbnZhbGlkUHJvcGVydHlOYW1lID8/ICdlcnJvcicsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6IHBhcnRpYWw/Lm9uSW52YWxpZFByb3BlcnR5VmFsdWUgPz8gJ2Vycm9yJyxcbiAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiBwYXJ0aWFsPy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgPz8gJ2lnbm9yZScsXG4gICAgICAgIGV4dGVuZFZhcnM6IGV4dGVuZGVyLFxuICAgIH07XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgb3B0aW9ucy52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBvcHRpb25zLnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uQ29udGV4dCB1c2luZyB2YWx1ZXMgc3VwcGxpZWQgaW4gYW4gb3B0aW9uYWwgcGFydGlhbFxuICogQHNlZSBKc29uQ29udmVydGVyT3B0aW9uc1xuICogQHBhcmFtIHBhcnRpYWwgT3B0aW9uYWwgcGFydGlhbCBAc2VlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udGV4dHx1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRleHQ6IEpzb25Db250ZXh0ID0ge307XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgY29udGV4dC52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBjb250ZXh0LnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIGlmIChwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgIGNvbnRleHQuZXh0ZW5kVmFycyA9IHBhcnRpYWwuZXh0ZW5kVmFycztcbiAgICB9XG4gICAgcmV0dXJuIChjb250ZXh0LnZhcnMgfHwgY29udGV4dC5yZWZzIHx8IGNvbnRleHQuZXh0ZW5kVmFycykgPyBjb250ZXh0IDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uRWRpdG9yIGZyb20gYW4gb3B0aW9uYWxseSBzdXBwbGllZCBwYXJ0aWFsIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnMuXG4gKiBFeHBhbmRzIHN1cHBsaWVkIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgY29uc3RydWN0cyBhbiBlZGl0b3Igd2l0aFxuICogbWF0Y2hpbmcgY29uZmlndXJhdGlvbiBhbmQgZGVmaW5lZCBydWxlcy5cbiAqIEBwYXJhbSBwYXJ0aWFsIE9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0aGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3IocGFydGlhbD86IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25FZGl0b3I+IHtcbiAgICBjb25zdCBjb252ZXJ0ZXJPcHRpb25zID0gbWVyZ2VEZWZhdWx0SnNvbkNvbnZlcnRlck9wdGlvbnMocGFydGlhbCk7XG4gICAgY29uc3QgY29udGV4dCA9IGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0ge1xuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6IGNvbnZlcnRlck9wdGlvbnMub25JbnZhbGlkUHJvcGVydHlOYW1lLFxuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiBjb252ZXJ0ZXJPcHRpb25zLm9uSW52YWxpZFByb3BlcnR5VmFsdWUsXG4gICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogY29udmVydGVyT3B0aW9ucy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUsXG4gICAgfTtcbiAgICBjb25zdCBlZGl0b3JPcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucyA9IHsgY29udGV4dCwgdmFsaWRhdGlvbiB9O1xuXG4gICAgY29uc3QgcnVsZXM6IEpzb25FZGl0b3JSdWxlW10gPSBbXTtcbiAgICBpZiAoY29udmVydGVyT3B0aW9ucy51c2VOYW1lVGVtcGxhdGVzIHx8IGNvbnZlcnRlck9wdGlvbnMudXNlVmFsdWVUZW1wbGF0ZXMpIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZWRpdG9yT3B0aW9ucyxcbiAgICAgICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IGNvbnZlcnRlck9wdGlvbnMudXNlTmFtZVRlbXBsYXRlcyxcbiAgICAgICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiBjb252ZXJ0ZXJPcHRpb25zLnVzZVZhbHVlVGVtcGxhdGVzLFxuICAgICAgICB9O1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZSh0ZW1wbGF0ZU9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlQ29uZGl0aW9uYWxOYW1lcyB8fCBjb252ZXJ0ZXJPcHRpb25zLmZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmVkaXRvck9wdGlvbnMsXG4gICAgICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogY29udmVydGVyT3B0aW9ucy5mbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZShjb25kaXRpb25hbE9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXMpIHtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlKGVkaXRvck9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlUmVmZXJlbmNlcykge1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZShlZGl0b3JPcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpzb25FZGl0b3IuY3JlYXRlKGVkaXRvck9wdGlvbnMsIHJ1bGVzKTtcbn1cblxuLyoqXG4gKiBBIHRoaW4gd3JhcHBlciB0byBhbGxvdyBhbiBhcmJpdHJhcnkgQHNlZSBKc29uRWRpdG9yIHRvIGJlIHVzZWQgdmlhIHRoZVxuICogdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPEpzb25WYWx1ZSwgSnNvbkNvbnRleHQ+IHtcbiAgICBwdWJsaWMgZWRpdG9yOiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JDb252ZXJ0ZXIgd2hpY2ggdXNlcyB0aGUgc3VwcGxpZWQgZWRpdG9yXG4gICAgICogQHBhcmFtIGVkaXRvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3I6IEpzb25FZGl0b3IpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICAoZnJvbSwgX3NlbGYsIGNvbnRleHQpID0+IHRoaXMuX2NvbnZlcnQoZnJvbSwgY29udGV4dCksXG4gICAgICAgICAgICBlZGl0b3Iub3B0aW9ucy5jb250ZXh0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvckNvbnZlcnRlciB3aGljaCB1c2VzIHRoZSBzdXBwbGllZCBlZGl0b3JcbiAgICAgKiBAcGFyYW0gZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVXaXRoRWRpdG9yKGVkaXRvcjogSnNvbkVkaXRvcik6IFJlc3VsdDxKc29uRWRpdG9yQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yQ29udmVydGVyKGVkaXRvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBkZXJpdmVkIGNvbnZlcnRlciB3aGljaCBmYWlscyBpZiB0aGUgcmVzdWx0aW5nIGNvbnZlcnRlZFxuICAgICAqIEBzZWUgSnNvblZhbHVlIGlzIG5vdCBhIEBzZWUgSnNvbk9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBvYmplY3QoKTogQ29udmVydGVyPEpzb25PYmplY3QsIEpzb25Db250ZXh0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcCgoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBDYW5ub3QgY29udmVydCBcIiR7SlNPTi5zdHJpbmdpZnkoanYpfVwiIHRvIEpTT04gb2JqZWN0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZGVyaXZlZCBjb252ZXJ0ZXIgd2hpY2ggZmFpbHMgaWYgdGhlIHJlc3VsdGluZyBjb252ZXJ0ZWRcbiAgICAgKiBAc2VlIEpzb25WYWx1ZSBpcyBub3QgYSBAc2VlIEpzb25BcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBhcnJheSgpOiBDb252ZXJ0ZXI8SnNvbkFycmF5LCBKc29uQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoKCFBcnJheS5pc0FycmF5KGp2KSkgfHwgKHR5cGVvZiBqdiAhPT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYENhbm5vdCBjb252ZXJ0IFwiJHtKU09OLnN0cmluZ2lmeShqdil9XCIgdG8gSlNPTiBhcnJheS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0KGZyb206IHVua25vd24sIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNsb25lKGZyb20gYXMgSnNvblZhbHVlLCBjb250ZXh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04sIG9wdGlvbmFsbHkgcmVuZGVyaW5nXG4gKiBhbnkgc3RyaW5nIHByb3BlcnR5IG5hbWVzIG9yIHZhbHVlcyB1c2luZyBtdXN0YWNoZSB3aXRoIGEgc3VwcGxpZWQgdmlldy5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvciBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3Iob3B0aW9ucykuZ2V0VmFsdWVPclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjb252ZXJ0ZXIuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyB0byBjb25pZmd1cmUgdGhlIGNvbnZlcnRlclxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBhIG5ldyBKc29uQ29udmVydGVyIG9uIHN1Y2Nlc3MsIG9yIEZhaWx1cmUgd2l0aCBhblxuICAgICAqIGluZm9ybWF0aXZlIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXJPcHRpb25zID0gT21pdDxKc29uQ29udmVydGVyT3B0aW9ucywgJ3VzZU5hbWVUZW1wbGF0ZXMnfCd1c2VWYWx1ZVRlbXBsYXRlcyd8J3VzZU11bHRpdmFsdWVUZW1wbGF0ZU5tZXMnPjtcblxuLyoqXG4gKiBBIHRzLXV0aWxzIEBzZWUgQ29udmVydGVyIGZyb20gdW5rbm93biB0byB0eXBlLXNhZmUgSlNPTiB3aXRoIG11c3RhY2hlXG4gKiB0ZW1wbGF0ZSByZW5kZXJpbmcgYW5kIG11bHRpLXZhbHVlIHByb3BlcnR5IG5hbWUgcnVsZXMgZW5hYmxlZCByZWdhcmRsZXNzXG4gKiBvZiBpbml0aWFsIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZWRKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZW1wbGF0ZU9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiB0cnVlLFxuICAgICAgICB1c2VWYWx1ZVRlbXBsYXRlczogdHJ1ZSxcbiAgICAgICAgdXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXM6IHRydWUsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGZhbHNlLFxuICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogZmFsc2UsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBUZW1wbGF0ZWRKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFBhcnRpYWw8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnM+KSB7XG4gICAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIC4uLlRlbXBsYXRlZEpzb25Db252ZXJ0ZXIudGVtcGxhdGVPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VDb25kaXRpb25hbE5hbWVzJz47XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04gd2l0aCBtdXN0YWNoZVxuICogdGVtcGxhdGUgcmVuZGVyaW5nLCBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBuYW1lIGFuZCBjb25kaXRpb25hbCBwcm9wZXJ0eVxuICogbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3Mgb2YgaW5pdGlhbCBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBjb25kaXRpb25hbE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5UZW1wbGF0ZWRKc29uQ29udmVydGVyLnRlbXBsYXRlT3B0aW9ucyxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogdHJ1ZSxcbiAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IHRydWUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUmljaEpzb25Db252ZXJ0ZXJPcHRpb25zID0gT21pdDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zLCAndXNlUmVmZXJlbmNlcyc+O1xuXG4vKipcbiAqIEEgdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgZnJvbSB1bmtub3duIHRvIHR5cGUtc2FmZSBKU09OIHdpdGggbXVzdGFjaGVcbiAqIHRlbXBsYXRlIHJlbmRlcmluZywgbXVsdGktdmFsdWUgcHJvcGVydHkgbmFtZSwgY29uZGl0aW9uYWwgcHJvcGVydHlcbiAqIG5hbWUsIGFuZCBleHRlcm5hbCByZWZlcmVuY2UgcnVsZXMgZW5hYmxlZCByZWdhcmRsZXNzIG9mIGluaXRpYWwgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJpY2hKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSByaWNoT3B0aW9uczogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4gPSB7XG4gICAgICAgIC4uLkNvbmRpdGlvbmFsSnNvbkNvbnZlcnRlci5jb25kaXRpb25hbE9wdGlvbnMsXG4gICAgICAgIHVzZVJlZmVyZW5jZXM6IHRydWUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBSaWNoSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPFJpY2hKc29uQ29udmVydGVyT3B0aW9ucz4pIHtcbiAgICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgLi4uUmljaEpzb25Db252ZXJ0ZXIucmljaE9wdGlvbnMgfTtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udmVydGVyT3B0aW9uc1RvRWRpdG9yKG9wdGlvbnMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgICAgICBzdXBlcihlZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBSaWNoSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8UmljaEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBSaWNoSnNvbkNvbnZlcnRlcihvcHRpb25zKSk7XG4gICAgfVxufVxuIl19
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQU91QjtBQUN2Qiw4Q0FLNEI7QUFDNUIscUNBQTBFO0FBQzFFLCtDQU11QjtBQUV2Qix3REFBcUQ7QUErR3JEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLE9BQXVDOztJQUNwRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLCtCQUFpQixDQUFDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLG1DQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxtQkFBbUIsbUNBQUksWUFBWSxDQUFDLENBQUM7SUFFekUsTUFBTSxPQUFPLEdBQXlCO1FBQ2xDLGlCQUFpQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGlCQUFpQixtQ0FBSSxRQUFRO1FBQ3pE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cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbnZlcnRlcixcbiAgICBDb252ZXJ0ZXIsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBzdWNjZWVkLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSxcbiAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUsXG4gICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUsXG4gICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUsXG59IGZyb20gJy4vanNvbkVkaXRvci9ydWxlcyc7XG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBKc29uQ29udGV4dCxcbiAgICBKc29uUmVmZXJlbmNlTWFwLFxuICAgIFRlbXBsYXRlVmFycyxcbiAgICBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbixcbiAgICBkZWZhdWx0RXh0ZW5kVmFycyxcbn0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5cbmltcG9ydCB7IEpzb25FZGl0b3IgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvcic7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvci9qc29uRWRpdG9yU3RhdGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvclJ1bGUgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvclJ1bGUnO1xuXG4vKipcbiAqIENvbnZlcnNpb24gb3B0aW9ucyBmb3IgSnNvbkNvbnZlcnRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSB2YWx1ZXMgd2lsbCBiZSByZW5kZXJlZCB1c2luZ1xuICAgICAqIG11c3RhY2hlIGFuZCB0aG9zZSB2YXJpYWJsZXMuIE90aGVyd2lzZSBzdHJpbmcgcHJvcGVydGllc1xuICAgICAqIGFyZSBjb3BpZWQgd2l0aG91dCBtb2RpZmljYXRpb24uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byB0cnVlIGlmIHZhcnMgYXJlIHN1cHBsaWVkIHdpdGggb3B0aW9ucyxcbiAgICAgKiBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgdXNlVmFsdWVUZW1wbGF0ZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSBuYW1lcyB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nXG4gICAgICogbXVzdGFjaGUgYW5kIHRob3NlIHZhcmlhYmxlcy4gT3RoZXJ3aXNlIHN0cmluZyBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGNvcGllZCB3aXRob3V0IG1vZGlmaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIHRydWUgaWYgdmFycyBhcmUgc3VwcGxpZWQgd2l0aCBvcHRpb25zLFxuICAgICAqIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB1c2VOYW1lVGVtcGxhdGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBhbmQgaWYgdGVtcGxhdGUgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsXG4gICAgICogdGhlbiBzdHJpbmcgcHJvcGVydHkgbmFtZXMgd2lsbCBiZSBjb25zaWRlcmVkIGZvclxuICAgICAqIGNvbmRpdGlvbmFscy5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdG8gbWF0Y2ggdXNlTmFtZVRlbXBsYXRlc1xuICAgICAqL1xuICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHByb3BlcnRpZXMgd2l0aCB1bmNvbmRpdGlvbmFsIG5hbWVzXG4gICAgICogKHdoaWNoIHN0YXJ0IHdpdGggISkgYXJlIGZsYXR0ZW5lZC5cbiAgICAgKi9cbiAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGJvdGggdGVtcGxhdGUgdmFyaWFibGVzIGFuZCBhXG4gICAgICogY29udGV4dCBkZXJpdmF0aW9uIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhlbiBwcm9wZXJ0aWVzXG4gICAgICogd2hpY2ggbWF0Y2ggdGhlIG11bHRpLXZhbHVlIG5hbWUgcGF0dGVybiB3aWxsIGJlIGV4cGFuZGVkLlxuICAgICAqIERlZmF1bHQgbWF0Y2hlcyB1c2VOYW1lVGVtcGxhdGVzLlxuICAgICAqXG4gICAgICogRGVmYXVsdCBpcyB0cnVlIHVubGVzcyBleHRlbmRWYXJzIGlzIGV4cGxpY2l0bHkgc2V0IHRvXG4gICAgICogdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhcmlhYmxlcyAobXVzdGFjaGUgdmlldykgdXNlZCB0byByZW5kZXIgdGVtcGxhdGVkIHN0cmluZyBuYW1lc1xuICAgICAqIGFuZCBwcm9wZXJ0aWVzLiAgU2VlIHRoZSBtdXN0YWNoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIG11c3RhY2hlXG4gICAgICogc3ludGF4IGFuZCB0aGUgdGVtcGxhdGUgdmlldy5cbiAgICAgKi9cbiAgICB2YXJzPzogVGVtcGxhdGVWYXJzO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHVzZWQgdG8gZXh0ZW5kIHZhcmlhYmxlcyBmb3IgY2hpbGRyZW4gb2YgYW4gYXJyYXkgbm9kZSBkdXJpbmdcbiAgICAgKiBleHBhbnNpb24uIERlZmF1bHQgaXMgdG8gdXNlIGEgYnVpbHQtaW4gZXh0ZW5zaW9uIGZ1bmN0aW9uIHVubGVzc1xuICAgICAqIGV4dGVuZFZhcnMgaXMgZXhwbGljaXRseSBzZXQgdG8gdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGV4dGVuZFZhcnM/OiBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGEgcmVmZXJlbmNlcyBtYXAgaXMgc3VwcGxpZWQsIHRoZW5cbiAgICAgKiByZWZlcmVuY2VzIGluIHRoZSBzb3VyY2Ugb2JqZWN0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZSBpZiByZWZzIGFyZSBwcmVzZW50IGluIG9wdGlvbnMsIGZhbHNlXG4gICAgICogb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHVzZVJlZmVyZW5jZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBvYmplY3QgbWFwIHVzZWQgdG8gaW5zZXJ0IGFueSByZWZlcmVuY2VzIGluIHRoZVxuICAgICAqIGNvbnZlcnRlZCBKU09OLlxuICAgICAqL1xuICAgIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IHByb3BlcnR5IG5hbWVcbiAgICAgKiB0aGF0IGlzIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHNcbiAgICAgKiBjb252ZXJzaW9uLiAgSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdpZ25vcmUnLCB0aGVuIG5hbWVzIHdoaWNoXG4gICAgICogYXJlIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlWYWx1ZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBpbGxlZ2FsXG4gICAgICogcHJvcGVydHkgdmFsdWUgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wcyBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIHRoZW4gYW55IGludmFsaWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uVW5rbm93blByb3BlcnR5VmFsdWUgaXMgZXJyb3IsIHRoZW4gYW55IHByb3BlcnR5IHdpdGhcbiAgICAgKiB2YWx1ZSB1bmRlZmluZWQgd2lsbCBjYXVzZSBhbiBlcnJvciBhbmQgc3RvcCBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgKGRlZmF1bHQpIHRoZW4gYW55XG4gICAgICogcHJvcGVydHkgd2l0aCB2YWx1ZSB1bmRlZmluZWQgaXMgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG59XG5cbi8qKlxuICogTWVyZ2VzIGFuIG9wdGlvbmFsbHkgc3VwcGxpZWQgcGFydGlhbCBzZXQgb2Ygb3B0aW9ucyB3aXRoIHRoZSBkZWZhdWx0XG4gKiBjb252ZXJ0ZXIgb3B0aW9ucywgcHJvZHVjaW5nIGEgZnVsbHktcmVzb2x2ZWQgc2V0IG9mIENvbnZlcnRlck9wdGlvbnNcbiAqIGFuZCB0YWtpbmcgYWxsIGR5bmFtaWMgcnVsZXMgaW50byBhY2NvdW50IChlLmcuIHRlbXBsYXRlIHVzYWdlIGVuYWJsZWRcbiAqIGlmIHZhcmlhYmxlcyBhcmUgc3VwcGxpZWQgYW5kIGRpc2FibGVkIGlmIG5vdClcbiAqIEBwYXJhbSBwYXJ0aWFsIEFuIG9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB0byBiZSBtZXJnZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGVmYXVsdEpzb25Db252ZXJ0ZXJPcHRpb25zKHBhcnRpYWw/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICBjb25zdCBoYXZlVmFycyA9IChwYXJ0aWFsPy52YXJzICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGhhdmVSZWZzID0gKHBhcnRpYWw/LnJlZnMgIT09IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZXh0ZW5kZXIgPSBwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpID8gcGFydGlhbC5leHRlbmRWYXJzIDogZGVmYXVsdEV4dGVuZFZhcnM7XG4gICAgY29uc3QgaGF2ZUV4dGVuZGVyID0gKGV4dGVuZGVyICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IG5hbWVzRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VOYW1lVGVtcGxhdGVzID8/IGhhdmVWYXJzKTtcbiAgICBjb25zdCBjb25kaXRpb25zRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VDb25kaXRpb25hbE5hbWVzID8/IG5hbWVzRGVmYXVsdCk7XG5cbiAgICBjb25zdCBvcHRpb25zOiBKc29uQ29udmVydGVyT3B0aW9ucyA9IHtcbiAgICAgICAgdXNlVmFsdWVUZW1wbGF0ZXM6IHBhcnRpYWw/LnVzZVZhbHVlVGVtcGxhdGVzID8/IGhhdmVWYXJzLFxuICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiBuYW1lc0RlZmF1bHQsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGNvbmRpdGlvbnNEZWZhdWx0LFxuICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogcGFydGlhbD8uZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXMgPz8gY29uZGl0aW9uc0RlZmF1bHQsXG4gICAgICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBwYXJ0aWFsPy51c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyA/PyAoaGF2ZUV4dGVuZGVyICYmIG5hbWVzRGVmYXVsdCksXG4gICAgICAgIHVzZVJlZmVyZW5jZXM6IHBhcnRpYWw/LnVzZVJlZmVyZW5jZXMgPz8gaGF2ZVJlZnMsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogcGFydGlhbD8ub25JbnZhbGlkUHJvcGVydHlOYW1lID8/ICdlcnJvcicsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6IHBhcnRpYWw/Lm9uSW52YWxpZFByb3BlcnR5VmFsdWUgPz8gJ2Vycm9yJyxcbiAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiBwYXJ0aWFsPy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgPz8gJ2lnbm9yZScsXG4gICAgICAgIGV4dGVuZFZhcnM6IGV4dGVuZGVyLFxuICAgIH07XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgb3B0aW9ucy52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBvcHRpb25zLnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uQ29udGV4dCB1c2luZyB2YWx1ZXMgc3VwcGxpZWQgaW4gYW4gb3B0aW9uYWwgcGFydGlhbFxuICogQHNlZSBKc29uQ29udmVydGVyT3B0aW9uc1xuICogQHBhcmFtIHBhcnRpYWwgT3B0aW9uYWwgcGFydGlhbCBAc2VlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udGV4dHx1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRleHQ6IEpzb25Db250ZXh0ID0ge307XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgY29udGV4dC52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBjb250ZXh0LnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIGlmIChwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgIGNvbnRleHQuZXh0ZW5kVmFycyA9IHBhcnRpYWwuZXh0ZW5kVmFycztcbiAgICB9XG4gICAgcmV0dXJuIChjb250ZXh0LnZhcnMgfHwgY29udGV4dC5yZWZzIHx8IGNvbnRleHQuZXh0ZW5kVmFycykgPyBjb250ZXh0IDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uRWRpdG9yIGZyb20gYW4gb3B0aW9uYWxseSBzdXBwbGllZCBwYXJ0aWFsIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnMuXG4gKiBFeHBhbmRzIHN1cHBsaWVkIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgY29uc3RydWN0cyBhbiBlZGl0b3Igd2l0aFxuICogbWF0Y2hpbmcgY29uZmlndXJhdGlvbiBhbmQgZGVmaW5lZCBydWxlcy5cbiAqIEBwYXJhbSBwYXJ0aWFsIE9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0aGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3IocGFydGlhbD86IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25FZGl0b3I+IHtcbiAgICBjb25zdCBjb252ZXJ0ZXJPcHRpb25zID0gbWVyZ2VEZWZhdWx0SnNvbkNvbnZlcnRlck9wdGlvbnMocGFydGlhbCk7XG4gICAgY29uc3QgY29udGV4dCA9IGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0ge1xuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6IGNvbnZlcnRlck9wdGlvbnMub25JbnZhbGlkUHJvcGVydHlOYW1lLFxuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiBjb252ZXJ0ZXJPcHRpb25zLm9uSW52YWxpZFByb3BlcnR5VmFsdWUsXG4gICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogY29udmVydGVyT3B0aW9ucy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUsXG4gICAgfTtcbiAgICBjb25zdCBlZGl0b3JPcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucyA9IHsgY29udGV4dCwgdmFsaWRhdGlvbiB9O1xuXG4gICAgY29uc3QgcnVsZXM6IEpzb25FZGl0b3JSdWxlW10gPSBbXTtcbiAgICBpZiAoY29udmVydGVyT3B0aW9ucy51c2VOYW1lVGVtcGxhdGVzIHx8IGNvbnZlcnRlck9wdGlvbnMudXNlVmFsdWVUZW1wbGF0ZXMpIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZWRpdG9yT3B0aW9ucyxcbiAgICAgICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IGNvbnZlcnRlck9wdGlvbnMudXNlTmFtZVRlbXBsYXRlcyxcbiAgICAgICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiBjb252ZXJ0ZXJPcHRpb25zLnVzZVZhbHVlVGVtcGxhdGVzLFxuICAgICAgICB9O1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZSh0ZW1wbGF0ZU9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlQ29uZGl0aW9uYWxOYW1lcyB8fCBjb252ZXJ0ZXJPcHRpb25zLmZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmVkaXRvck9wdGlvbnMsXG4gICAgICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogY29udmVydGVyT3B0aW9ucy5mbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZShjb25kaXRpb25hbE9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXMpIHtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlKGVkaXRvck9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlUmVmZXJlbmNlcykge1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZShlZGl0b3JPcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpzb25FZGl0b3IuY3JlYXRlKGVkaXRvck9wdGlvbnMsIHJ1bGVzKTtcbn1cblxuLyoqXG4gKiBBIHRoaW4gd3JhcHBlciB0byBhbGxvdyBhbiBhcmJpdHJhcnkgQHNlZSBKc29uRWRpdG9yIHRvIGJlIHVzZWQgdmlhIHRoZVxuICogdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPEpzb25WYWx1ZSwgSnNvbkNvbnRleHQ+IHtcbiAgICBwdWJsaWMgZWRpdG9yOiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JDb252ZXJ0ZXIgd2hpY2ggdXNlcyB0aGUgc3VwcGxpZWQgZWRpdG9yXG4gICAgICogQHBhcmFtIGVkaXRvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3I6IEpzb25FZGl0b3IpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICAoZnJvbSwgX3NlbGYsIGNvbnRleHQpID0+IHRoaXMuX2NvbnZlcnQoZnJvbSwgY29udGV4dCksXG4gICAgICAgICAgICBlZGl0b3Iub3B0aW9ucy5jb250ZXh0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvckNvbnZlcnRlciB3aGljaCB1c2VzIHRoZSBzdXBwbGllZCBlZGl0b3JcbiAgICAgKiBAcGFyYW0gZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVXaXRoRWRpdG9yKGVkaXRvcjogSnNvbkVkaXRvcik6IFJlc3VsdDxKc29uRWRpdG9yQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yQ29udmVydGVyKGVkaXRvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBkZXJpdmVkIGNvbnZlcnRlciB3aGljaCBmYWlscyBpZiB0aGUgcmVzdWx0aW5nIGNvbnZlcnRlZFxuICAgICAqIEBzZWUgSnNvblZhbHVlIGlzIG5vdCBhIEBzZWUgSnNvbk9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBvYmplY3QoKTogQ29udmVydGVyPEpzb25PYmplY3QsIEpzb25Db250ZXh0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcCgoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBDYW5ub3QgY29udmVydCBcIiR7SlNPTi5zdHJpbmdpZnkoanYpfVwiIHRvIEpTT04gb2JqZWN0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZGVyaXZlZCBjb252ZXJ0ZXIgd2hpY2ggZmFpbHMgaWYgdGhlIHJlc3VsdGluZyBjb252ZXJ0ZWRcbiAgICAgKiBAc2VlIEpzb25WYWx1ZSBpcyBub3QgYSBAc2VlIEpzb25BcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBhcnJheSgpOiBDb252ZXJ0ZXI8SnNvbkFycmF5LCBKc29uQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoKCFBcnJheS5pc0FycmF5KGp2KSkgfHwgKHR5cGVvZiBqdiAhPT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYENhbm5vdCBjb252ZXJ0IFwiJHtKU09OLnN0cmluZ2lmeShqdil9XCIgdG8gSlNPTiBhcnJheS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0KGZyb206IHVua25vd24sIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNsb25lKGZyb20gYXMgSnNvblZhbHVlLCBjb250ZXh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04sIG9wdGlvbmFsbHkgcmVuZGVyaW5nXG4gKiBhbnkgc3RyaW5nIHByb3BlcnR5IG5hbWVzIG9yIHZhbHVlcyB1c2luZyBtdXN0YWNoZSB3aXRoIGEgc3VwcGxpZWQgdmlldy5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvciBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3Iob3B0aW9ucykub3JUaHJvdygpO1xuICAgICAgICBzdXBlcihlZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udmVydGVyLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb252ZXJ0ZXJcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggYSBuZXcgSnNvbkNvbnZlcnRlciBvbiBzdWNjZXNzLCBvciBGYWlsdXJlIHdpdGggYW5cbiAgICAgKiBpbmZvcm1hdGl2ZSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkNvbnZlcnRlcihvcHRpb25zKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8SnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VOYW1lVGVtcGxhdGVzJ3wndXNlVmFsdWVUZW1wbGF0ZXMnfCd1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyc+O1xuXG4vKipcbiAqIEEgdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgZnJvbSB1bmtub3duIHRvIHR5cGUtc2FmZSBKU09OIHdpdGggbXVzdGFjaGVcbiAqIHRlbXBsYXRlIHJlbmRlcmluZyBhbmQgbXVsdGktdmFsdWUgcHJvcGVydHkgbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3NcbiAqIG9mIGluaXRpYWwgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRlbXBsYXRlT3B0aW9uczogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4gPSB7XG4gICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IHRydWUsXG4gICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiB0cnVlLFxuICAgICAgICB1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lczogdHJ1ZSxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogZmFsc2UsXG4gICAgICAgIGZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucz4pIHtcbiAgICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgLi4uVGVtcGxhdGVkSnNvbkNvbnZlcnRlci50ZW1wbGF0ZU9wdGlvbnMgfTtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udmVydGVyT3B0aW9uc1RvRWRpdG9yKG9wdGlvbnMpLm9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VDb25kaXRpb25hbE5hbWVzJz47XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04gd2l0aCBtdXN0YWNoZVxuICogdGVtcGxhdGUgcmVuZGVyaW5nLCBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBuYW1lIGFuZCBjb25kaXRpb25hbCBwcm9wZXJ0eVxuICogbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3Mgb2YgaW5pdGlhbCBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBjb25kaXRpb25hbE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5UZW1wbGF0ZWRKc29uQ29udmVydGVyLnRlbXBsYXRlT3B0aW9ucyxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogdHJ1ZSxcbiAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IHRydWUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5vclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFJpY2hKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucywgJ3VzZVJlZmVyZW5jZXMnPjtcblxuLyoqXG4gKiBBIHRzLXV0aWxzIEBzZWUgQ29udmVydGVyIGZyb20gdW5rbm93biB0byB0eXBlLXNhZmUgSlNPTiB3aXRoIG11c3RhY2hlXG4gKiB0ZW1wbGF0ZSByZW5kZXJpbmcsIG11bHRpLXZhbHVlIHByb3BlcnR5IG5hbWUsIGNvbmRpdGlvbmFsIHByb3BlcnR5XG4gKiBuYW1lLCBhbmQgZXh0ZXJuYWwgcmVmZXJlbmNlIHJ1bGVzIGVuYWJsZWQgcmVnYXJkbGVzcyBvZiBpbml0aWFsIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoSnNvbkNvbnZlcnRlciBleHRlbmRzIEpzb25FZGl0b3JDb252ZXJ0ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmljaE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zLFxuICAgICAgICB1c2VSZWZlcmVuY2VzOiB0cnVlLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgUmljaEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnM+KSB7XG4gICAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIC4uLlJpY2hKc29uQ29udmVydGVyLnJpY2hPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5vclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIFJpY2hKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFJpY2hKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG4iXX0=
@@ -33,8 +33,8 @@ const jsonEditorState_1 = require("./jsonEditorState");
33
33
  */
34
34
  class JsonEditor {
35
35
  constructor(options, rules) {
36
- this.options = JsonEditor._getDefaultOptions(options).getValueOrThrow();
37
- this._rules = rules || JsonEditor.getDefaultRules(this.options).getValueOrThrow();
36
+ this.options = JsonEditor._getDefaultOptions(options).orThrow();
37
+ this._rules = rules || JsonEditor.getDefaultRules(this.options).orThrow();
38
38
  }
39
39
  /**
40
40
  * Default singleton @see JsonEditor for simple use. Applies all rules
@@ -42,7 +42,7 @@ class JsonEditor {
42
42
  */
43
43
  static get default() {
44
44
  if (!JsonEditor._default) {
45
- const rules = this.getDefaultRules().getValueOrDefault();
45
+ const rules = this.getDefaultRules().orDefault();
46
46
  JsonEditor._default = new JsonEditor(undefined, rules);
47
47
  }
48
48
  return JsonEditor._default;
@@ -256,4 +256,4 @@ class JsonEditor {
256
256
  }
257
257
  }
258
258
  exports.JsonEditor = JsonEditor;
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uRWRpdG9yL2pzb25FZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsbUNBS2lCO0FBQ2pCLDRDQVV1QjtBQUV2QixzQ0FBeUc7QUFFekcsdURBQW9HO0FBSXBHOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVU7SUFVbkIsWUFBc0IsT0FBb0MsRUFBRSxLQUF3QjtRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxLQUFLLE9BQU87UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekQsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQW9DLEVBQUUsS0FBd0I7UUFDL0UsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUEyQjtRQUNyRCxP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QU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0o7QUE1UEQsZ0NBNFBDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSxcbiAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUsXG4gICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUsXG4gICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUsXG59IGZyb20gJy4vcnVsZXMnO1xuaW1wb3J0IHtcbiAgICBEZXRhaWxlZFJlc3VsdCxcbiAgICBSZXN1bHQsXG4gICAgY2FwdHVyZVJlc3VsdCxcbiAgICBmYWlsLFxuICAgIGZhaWxXaXRoRGV0YWlsLFxuICAgIG1hcERldGFpbGVkUmVzdWx0cyxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uQXJyYXksIGlzSnNvbk9iamVjdCwgaXNKc29uUHJpbWl0aXZlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IEpzb25FZGl0RmFpbHVyZVJlYXNvbiwgSnNvbkVkaXRvclJ1bGUsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclN0YXRlLCBKc29uRWRpdG9yVmFsaWRhdGlvbk9wdGlvbnMgfSBmcm9tICcuL2pzb25FZGl0b3JTdGF0ZSc7XG5cbmltcG9ydCB7IEpzb25Db250ZXh0IH0gZnJvbSAnLi4vanNvbkNvbnRleHQnO1xuXG4vKipcbiAqIFRoZSBKc29uRWRpdG9yIGNhbiBiZSB1c2VkIHRvIGVkaXQgSlNPTiBvYmplY3RzIGluIHBsYWNlIG9yIHRvIGNsb25lIGFueSBKU09OIHZhbHVlLFxuICogYXBwbHlpbmcgYSBkZWZhdWx0IGNvbnRleHQgYW5kIG9wdGlvbmFsIHNldCBvZiBlZGl0b3IgcnVsZXMgdGhhdCB3ZXJlIHN1cHBsaWVkIGF0XG4gKiBpbml0aWFsaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3Ige1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2RlZmF1bHQ/OiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogRnVsbCBzZXQgb2YgQHNlZSBKc29uRWRpdG9yT3B0aW9ucyBpbiBlZmZlY3QgZm9yIHRoaXMgcnVsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnM7XG4gICAgcHJvdGVjdGVkIF9ydWxlczogSnNvbkVkaXRvclJ1bGVbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4sIHJ1bGVzPzogSnNvbkVkaXRvclJ1bGVbXSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBKc29uRWRpdG9yLl9nZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcyB8fCBKc29uRWRpdG9yLmdldERlZmF1bHRSdWxlcyh0aGlzLm9wdGlvbnMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgc2luZ2xldG9uIEBzZWUgSnNvbkVkaXRvciBmb3Igc2ltcGxlIHVzZS4gQXBwbGllcyBhbGwgcnVsZXNcbiAgICAgKiBidXQgd2l0aCBubyBkZWZhdWx0IGNvbnRleHQuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQgZGVmYXVsdCgpOiBKc29uRWRpdG9yIHtcbiAgICAgICAgaWYgKCFKc29uRWRpdG9yLl9kZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0RGVmYXVsdFJ1bGVzKCkuZ2V0VmFsdWVPckRlZmF1bHQoKTtcbiAgICAgICAgICAgIEpzb25FZGl0b3IuX2RlZmF1bHQgPSBuZXcgSnNvbkVkaXRvcih1bmRlZmluZWQsIHJ1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSnNvbkVkaXRvci5fZGVmYXVsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvclxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gYW4gY29udGV4dCBmb3IgdGhpcyBlZGl0b3JcbiAgICAgKiBAcGFyYW0gcnVsZXMgT3B0aW9uYWwgc2V0IG9mIHJ1bGVzIHVzZWQgYnkgdGhpcyBlZGl0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4sIHJ1bGVzPzogSnNvbkVkaXRvclJ1bGVbXSk6IFJlc3VsdDxKc29uRWRpdG9yPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yKG9wdGlvbnMsIHJ1bGVzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGVmYXVsdCBzZXQgb2YgcnVsZXMgdG8gYmUgYXBwbGllZCBmb3IgYSBnaXZlbiBzZXQgb2Ygb3B0aW9ucy5cbiAgICAgKiBCeSBkZWZhdWx0LCBhbGwgYXZhaWxhYmxlIHJ1bGVzICh0ZW1wbGF0ZXMsIGNvbmRpdGlvbmFscywgbXVsdGktdmFsdWUgYW5kIHJlZmVyZW5jZXMpXG4gICAgICogYXJlIGFwcGxpZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdXNlZCB0byBpbml0aWFsaXplIGFsbCBydWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVmYXVsdFJ1bGVzKG9wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucyk6IFJlc3VsdDxKc29uRWRpdG9yUnVsZVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzPEpzb25FZGl0b3JSdWxlPihbXG4gICAgICAgICAgICBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlLmNyZWF0ZShvcHRpb25zKSxcbiAgICAgICAgICAgIE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2dldERlZmF1bHRPcHRpb25zKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25FZGl0b3JPcHRpb25zPik6IFJlc3VsdDxKc29uRWRpdG9yT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBjb250ZXh0OiBKc29uQ29udGV4dHx1bmRlZmluZWQgPSBvcHRpb25zPy5jb250ZXh0O1xuICAgICAgICBsZXQgdmFsaWRhdGlvbjogSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zfHVuZGVmaW5lZCA9IG9wdGlvbnM/LnZhbGlkYXRpb247XG4gICAgICAgIGlmICh2YWxpZGF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiAnaWdub3JlJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoeyBjb250ZXh0LCB2YWxpZGF0aW9uIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBhIHN1cHBsaWVkIHNvdXJjZSBvYmplY3QgaW50byBhIHN1cHBsaWVkIHRhcmdldCwgdXBkYXRpbmcgdGhlIHRhcmdldCBvYmplY3QuXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyYyBUaGUgc291cmNlIG9iamVjdCB0byBiZSBtZXJnZWRcbiAgICAgKiBAcGFyYW0gcnVudGltZUNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIG1lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQ6IEpzb25PYmplY3QsIHNyYzogSnNvbk9iamVjdCwgcnVudGltZUNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uT2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IEpzb25FZGl0b3JTdGF0ZSh0aGlzLCB0aGlzLm9wdGlvbnMsIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQsIHNyYywgc3RhdGUpLm9uU3VjY2VzcygobWVyZ2VkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmluYWxpemVBbmRNZXJnZShtZXJnZWQsIHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIG11bHRpcGxlIHN1cHBsaWVkIHNvdXJjZSBvYmplY3RzIGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXRcbiAgICAgKiBvYmplY3QgYW5kIHVzaW5nIHRoZSBkZWZhdWx0IGNvbnRleHQgc3VwcGxpZWQgYXQgY3JlYXRpb24gdGltZS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICAgKiBAcGFyYW0gc3JjT2JqZWN0cyBPYmplY3RzIHRvIGJlIG1lcmdlZCBpbnRvIHRoZSB0YXJnZXQgb2JqZWN0LCBpbiB0aGUgb3JkZXIgc3VwcGxpZWQuXG4gICAgICovXG4gICAgcHVibGljIG1lcmdlT2JqZWN0c0luUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmNPYmplY3RzOiBKc29uT2JqZWN0W10pOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQodGhpcy5vcHRpb25zLmNvbnRleHQsIHRhcmdldCwgc3JjT2JqZWN0cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIG11bHRpcGxlIHN1cHBsaWVkIHNvdXJjZSBvYmplY3RzIGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXRcbiAgICAgKiBvYmplY3QgYW5kIHVzaW5nIGFuIG9wdGlvbmFsIGNvbnRleHQgc3VwcGxpZWQgaW4gdGhlIGNhbGwuXG4gICAgICogQHBhcmFtIGNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyY09iamVjdHMgT2JqZWN0cyB0byBiZSBtZXJnZWQgaW50byB0aGUgdGFyZ2V0IG9iamVjdCwgaW4gdGhlIG9yZGVyIHN1cHBsaWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQoY29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBiYXNlOiBKc29uT2JqZWN0LCBzcmNPYmplY3RzOiBKc29uT2JqZWN0W10pOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IHNyYyBvZiBzcmNPYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVJlc3VsdCA9IHRoaXMubWVyZ2VPYmplY3RJblBsYWNlKGJhc2UsIHNyYywgY29udGV4dCk7XG4gICAgICAgICAgICBpZiAobWVyZ2VSZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VSZXN1bHQud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGJhc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZXAgY2xvbmVzIGEgc3VwcGxpZWQgSlNPTiB2YWx1ZSwgYXBwbHlpbmcgYWxsIGVkaXRvciBydWxlcyBhbmQgYSBkZWZhdWx0XG4gICAgICogb3Igb3B0aW9uYWxseSBzdXBwbGllZCBjb250ZXh0XG4gICAgICogQHBhcmFtIHNyYyBUaGUgQHNlZSBKc29uVmFsdWUgdG8gYmUgY2xvbmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIGNsb25lKHNyYzogSnNvblZhbHVlLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5ldyBKc29uRWRpdG9yU3RhdGUodGhpcywgdGhpcy5vcHRpb25zLCBjb250ZXh0KTtcbiAgICAgICAgbGV0IHZhbHVlID0gc3JjO1xuICAgICAgICBsZXQgdmFsdWVSZXN1bHQgPSB0aGlzLl9lZGl0VmFsdWUoc3JjLCBzdGF0ZSk7XG5cbiAgICAgICAgd2hpbGUgKHZhbHVlUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlUmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgdmFsdWVSZXN1bHQgPSB0aGlzLl9lZGl0VmFsdWUodmFsdWUsIHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodmFsdWVSZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSB8fCAodmFsdWVSZXN1bHQuZGV0YWlsID09PSAnaWdub3JlJykpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0pzb25QcmltaXRpdmUodmFsdWUpIHx8ICh2YWx1ZSA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh2YWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0SW5QbGFjZSh7fSwgdmFsdWUsIHN0YXRlLmNvbnRleHQpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbkFycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb25lQXJyYXkodmFsdWUsIHN0YXRlLmNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbigndW5kZWZpbmVkUHJvcGVydHlWYWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5VmFsdWUnLCBgQ2Fubm90IGNvbnZlcnQgaW52YWxpZCBKU09OOiBcIiR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfVwiYCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9tZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmM6IEpzb25PYmplY3QsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzcmMpIHtcbiAgICAgICAgICAgIGlmIChzcmMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BSZXN1bHQgPSB0aGlzLl9lZGl0UHJvcGVydHkoa2V5LCBzcmNba2V5XSwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wUmVzdWx0LmRldGFpbCA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZGVmZXIocHJvcFJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZVJlc3VsdCA9IHRoaXMuX21lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQsIHByb3BSZXN1bHQudmFsdWUsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZVJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wUmVzdWx0LmRldGFpbCA9PT0gJ2luYXBwbGljYWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVSZXN1bHQgPSB0aGlzLmNsb25lKHNyY1trZXldLCBzdGF0ZS5jb250ZXh0KS5vblN1Y2Nlc3MoKGNsb25lZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlQ2xvbmVkUHJvcGVydHkodGFyZ2V0LCBrZXksIGNsb25lZCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVSZXN1bHQuaXNGYWlsdXJlKCkgJiYgKHZhbHVlUmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06ICR7dmFsdWVSZXN1bHQubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wUmVzdWx0LmRldGFpbCAhPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogJHtwcm9wUmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogQ2Fubm90IG1lcmdlIGluaGVyaXRlZCBwcm9wZXJ0aWVzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGFyZ2V0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2Nsb25lQXJyYXkoc3JjOiBKc29uQXJyYXksIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25BcnJheSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBzcmMubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSh2LCBjb250ZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcERldGFpbGVkUmVzdWx0czxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ocmVzdWx0cywgWydpZ25vcmUnXSkub25TdWNjZXNzKChjb252ZXJ0ZWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGNvbnZlcnRlZCk7XG4gICAgICAgIH0pLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWVyZ2VDbG9uZWRQcm9wZXJ0eSh0YXJnZXQ6IEpzb25PYmplY3QsIGtleTogc3RyaW5nLCBuZXdWYWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0YXJnZXRba2V5XTtcblxuICAgICAgICAvLyBtZXJnZSBpcyBjYWxsZWQgcmlnaHQgYWZ0ZXIgY2xvbmUgc28gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgICAgIC8vIHNpbmNlIGNsb25lIGl0c2VsZiB3aWxsIGhhdmUgZmFpbGVkXG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgICAgIGlmIChpc0pzb25QcmltaXRpdmUobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uT2JqZWN0KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGlzSnNvbk9iamVjdChleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdEluUGxhY2UoZXhpc3RpbmcsIG5ld1ZhbHVlLCBzdGF0ZS5jb250ZXh0KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gbmV3VmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwobmV3VmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25BcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0pzb25BcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IGV4aXN0aW5nLmNvbmNhdCguLi5uZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHRhcmdldFtrZXldLCAnZWRpdGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYEludmFsaWQgSlNPTjogJHtKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSl9YCwgJ2Vycm9yJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgcnVsZVJlc3VsdCA9IHJ1bGUuZWRpdFByb3BlcnR5KGtleSwgdmFsdWUsIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChydWxlUmVzdWx0LmlzU3VjY2VzcygpIHx8IChydWxlUmVzdWx0LmRldGFpbCAhPT0gJ2luYXBwbGljYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lZGl0VmFsdWUodmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgcnVsZVJlc3VsdCA9IHJ1bGUuZWRpdFZhbHVlKHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocnVsZVJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocnVsZVJlc3VsdC5kZXRhaWwgIT09ICdpbmFwcGxpY2FibGUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZmluYWxpemVBbmRNZXJnZSh0YXJnZXQ6IEpzb25PYmplY3QsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgZGVmZXJyZWQgPSBzdGF0ZS5kZWZlcnJlZDtcbiAgICAgICAgaWYgKGRlZmVycmVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBydWxlLmZpbmFsaXplUHJvcGVydGllcyhkZWZlcnJlZCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChydWxlUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0c0luUGxhY2VXaXRoQ29udGV4dChzdGF0ZS5jb250ZXh0LCB0YXJnZXQsIHJ1bGVSZXN1bHQudmFsdWUpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlUmVzdWx0LmRldGFpbCA9PT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VlZFdpdGhEZXRhaWwodGFyZ2V0LCAnZWRpdGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGVSZXN1bHQuZGV0YWlsICE9PSAnaW5hcHBsaWNhYmxlJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwocnVsZVJlc3VsdC5tZXNzYWdlLCBydWxlUmVzdWx0LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh0YXJnZXQsICdlZGl0ZWQnKTtcbiAgICB9XG59XG5cbiJdfQ==
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uRWRpdG9yL2pzb25FZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsbUNBS2lCO0FBQ2pCLDRDQVV1QjtBQUV2QixzQ0FBeUc7QUFFekcsdURBQW9HO0FBSXBHOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVU7SUFVbkIsWUFBc0IsT0FBb0MsRUFBRSxLQUF3QjtRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxLQUFLLE9BQU87UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFvQyxFQUFFLEtBQXdCO1FBQy9FLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBMkI7UUFDckQsT0FB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LEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKO0FBNVBELGdDQTRQQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQge1xuICAgIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGUsXG4gICAgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlLFxuICAgIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLFxuICAgIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlLFxufSBmcm9tICcuL3J1bGVzJztcbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBEZXRhaWxlZFJlc3VsdHMsXG4gICAgbWFwUmVzdWx0cyxcbiAgICBzdWNjZWVkLFxuICAgIHN1Y2NlZWRXaXRoRGV0YWlsLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgSnNvbkFycmF5LCBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbkFycmF5LCBpc0pzb25PYmplY3QsIGlzSnNvblByaW1pdGl2ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JSdWxlLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4vanNvbkVkaXRvclJ1bGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25FZGl0b3JTdGF0ZSwgSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zIH0gZnJvbSAnLi9qc29uRWRpdG9yU3RhdGUnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCB9IGZyb20gJy4uL2pzb25Db250ZXh0JztcblxuLyoqXG4gKiBUaGUgSnNvbkVkaXRvciBjYW4gYmUgdXNlZCB0byBlZGl0IEpTT04gb2JqZWN0cyBpbiBwbGFjZSBvciB0byBjbG9uZSBhbnkgSlNPTiB2YWx1ZSxcbiAqIGFwcGx5aW5nIGEgZGVmYXVsdCBjb250ZXh0IGFuZCBvcHRpb25hbCBzZXQgb2YgZWRpdG9yIHJ1bGVzIHRoYXQgd2VyZSBzdXBwbGllZCBhdFxuICogaW5pdGlhbGl6YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uRWRpdG9yIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9kZWZhdWx0PzogSnNvbkVkaXRvcjtcblxuICAgIC8qKlxuICAgICAqIEZ1bGwgc2V0IG9mIEBzZWUgSnNvbkVkaXRvck9wdGlvbnMgaW4gZWZmZWN0IGZvciB0aGlzIHJ1bGUuXG4gICAgICovXG4gICAgcHVibGljIG9wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zO1xuICAgIHByb3RlY3RlZCBfcnVsZXM6IEpzb25FZGl0b3JSdWxlW107XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3Iob3B0aW9ucz86IFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+LCBydWxlcz86IEpzb25FZGl0b3JSdWxlW10pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gSnNvbkVkaXRvci5fZ2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucykub3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzIHx8IEpzb25FZGl0b3IuZ2V0RGVmYXVsdFJ1bGVzKHRoaXMub3B0aW9ucykub3JUaHJvdygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgc2luZ2xldG9uIEBzZWUgSnNvbkVkaXRvciBmb3Igc2ltcGxlIHVzZS4gQXBwbGllcyBhbGwgcnVsZXNcbiAgICAgKiBidXQgd2l0aCBubyBkZWZhdWx0IGNvbnRleHQuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQgZGVmYXVsdCgpOiBKc29uRWRpdG9yIHtcbiAgICAgICAgaWYgKCFKc29uRWRpdG9yLl9kZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0RGVmYXVsdFJ1bGVzKCkub3JEZWZhdWx0KCk7XG4gICAgICAgICAgICBKc29uRWRpdG9yLl9kZWZhdWx0ID0gbmV3IEpzb25FZGl0b3IodW5kZWZpbmVkLCBydWxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpzb25FZGl0b3IuX2RlZmF1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIGFuIGNvbnRleHQgZm9yIHRoaXMgZWRpdG9yXG4gICAgICogQHBhcmFtIHJ1bGVzIE9wdGlvbmFsIHNldCBvZiBydWxlcyB1c2VkIGJ5IHRoaXMgZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+LCBydWxlcz86IEpzb25FZGl0b3JSdWxlW10pOiBSZXN1bHQ8SnNvbkVkaXRvcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkVkaXRvcihvcHRpb25zLCBydWxlcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRlZmF1bHQgc2V0IG9mIHJ1bGVzIHRvIGJlIGFwcGxpZWQgZm9yIGEgZ2l2ZW4gc2V0IG9mIG9wdGlvbnMuXG4gICAgICogQnkgZGVmYXVsdCwgYWxsIGF2YWlsYWJsZSBydWxlcyAodGVtcGxhdGVzLCBjb25kaXRpb25hbHMsIG11bHRpLXZhbHVlIGFuZCByZWZlcmVuY2VzKVxuICAgICAqIGFyZSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbGwgcnVsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldERlZmF1bHRSdWxlcyhvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpOiBSZXN1bHQ8SnNvbkVkaXRvclJ1bGVbXT4ge1xuICAgICAgICByZXR1cm4gbWFwUmVzdWx0czxKc29uRWRpdG9yUnVsZT4oW1xuICAgICAgICAgICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICAgICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICAgICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkVkaXRvck9wdGlvbnM+IHtcbiAgICAgICAgY29uc3QgY29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkID0gb3B0aW9ucz8uY29udGV4dDtcbiAgICAgICAgbGV0IHZhbGlkYXRpb246IEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9uc3x1bmRlZmluZWQgPSBvcHRpb25zPy52YWxpZGF0aW9uO1xuICAgICAgICBpZiAodmFsaWRhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uID0ge1xuICAgICAgICAgICAgICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogJ2lnbm9yZScsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHsgY29udGV4dCwgdmFsaWRhdGlvbiB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgYSBzdXBwbGllZCBzb3VyY2Ugb2JqZWN0IGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgICAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBvYmplY3QgdG8gYmUgbWVyZ2VkXG4gICAgICogQHBhcmFtIHJ1bnRpbWVDb250ZXh0IEFuIG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgc3VwcGx5aW5nIHZhcmlhYmxlcyBhbmQgcmVmZXJlbmNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmM6IEpzb25PYmplY3QsIHJ1bnRpbWVDb250ZXh0PzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5ldyBKc29uRWRpdG9yU3RhdGUodGhpcywgdGhpcy5vcHRpb25zLCBydW50aW1lQ29udGV4dCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0LCBzcmMsIHN0YXRlKS5vblN1Y2Nlc3MoKG1lcmdlZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmFsaXplQW5kTWVyZ2UobWVyZ2VkLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBtdWx0aXBsZSBzdXBwbGllZCBzb3VyY2Ugb2JqZWN0cyBpbnRvIGEgc3VwcGxpZWQgdGFyZ2V0LCB1cGRhdGluZyB0aGUgdGFyZ2V0XG4gICAgICogb2JqZWN0IGFuZCB1c2luZyB0aGUgZGVmYXVsdCBjb250ZXh0IHN1cHBsaWVkIGF0IGNyZWF0aW9uIHRpbWUuXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyY09iamVjdHMgT2JqZWN0cyB0byBiZSBtZXJnZWQgaW50byB0aGUgdGFyZ2V0IG9iamVjdCwgaW4gdGhlIG9yZGVyIHN1cHBsaWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZU9iamVjdHNJblBsYWNlKHRhcmdldDogSnNvbk9iamVjdCwgc3JjT2JqZWN0czogSnNvbk9iamVjdFtdKTogUmVzdWx0PEpzb25PYmplY3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RzSW5QbGFjZVdpdGhDb250ZXh0KHRoaXMub3B0aW9ucy5jb250ZXh0LCB0YXJnZXQsIHNyY09iamVjdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBtdWx0aXBsZSBzdXBwbGllZCBzb3VyY2Ugb2JqZWN0cyBpbnRvIGEgc3VwcGxpZWQgdGFyZ2V0LCB1cGRhdGluZyB0aGUgdGFyZ2V0XG4gICAgICogb2JqZWN0IGFuZCB1c2luZyBhbiBvcHRpb25hbCBjb250ZXh0IHN1cHBsaWVkIGluIHRoZSBjYWxsLlxuICAgICAqIEBwYXJhbSBjb250ZXh0IEFuIG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgc3VwcGx5aW5nIHZhcmlhYmxlcyBhbmQgcmVmZXJlbmNlc1xuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgICAqIEBwYXJhbSBzcmNPYmplY3RzIE9iamVjdHMgdG8gYmUgbWVyZ2VkIGludG8gdGhlIHRhcmdldCBvYmplY3QsIGluIHRoZSBvcmRlciBzdXBwbGllZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWVyZ2VPYmplY3RzSW5QbGFjZVdpdGhDb250ZXh0KGNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgYmFzZTogSnNvbk9iamVjdCwgc3JjT2JqZWN0czogSnNvbk9iamVjdFtdKTogUmVzdWx0PEpzb25PYmplY3Q+IHtcbiAgICAgICAgZm9yIChjb25zdCBzcmMgb2Ygc3JjT2JqZWN0cykge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VSZXN1bHQgPSB0aGlzLm1lcmdlT2JqZWN0SW5QbGFjZShiYXNlLCBzcmMsIGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKG1lcmdlUmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlUmVzdWx0LndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChiYXNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWVwIGNsb25lcyBhIHN1cHBsaWVkIEpTT04gdmFsdWUsIGFwcGx5aW5nIGFsbCBlZGl0b3IgcnVsZXMgYW5kIGEgZGVmYXVsdFxuICAgICAqIG9yIG9wdGlvbmFsbHkgc3VwcGxpZWQgY29udGV4dFxuICAgICAqIEBwYXJhbSBzcmMgVGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIGNsb25lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IEFuIG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgc3VwcGx5aW5nIHZhcmlhYmxlcyBhbmQgcmVmZXJlbmNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBjbG9uZShzcmM6IEpzb25WYWx1ZSwgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBuZXcgSnNvbkVkaXRvclN0YXRlKHRoaXMsIHRoaXMub3B0aW9ucywgY29udGV4dCk7XG4gICAgICAgIGxldCB2YWx1ZSA9IHNyYztcbiAgICAgICAgbGV0IHZhbHVlUmVzdWx0ID0gdGhpcy5fZWRpdFZhbHVlKHNyYywgc3RhdGUpO1xuXG4gICAgICAgIHdoaWxlICh2YWx1ZVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIHZhbHVlUmVzdWx0ID0gdGhpcy5fZWRpdFZhbHVlKHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHZhbHVlUmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykgfHwgKHZhbHVlUmVzdWx0LmRldGFpbCA9PT0gJ2lnbm9yZScpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVSZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNKc29uUHJpbWl0aXZlKHZhbHVlKSB8fCAodmFsdWUgPT09IG51bGwpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwodmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdEluUGxhY2Uoe30sIHZhbHVlLCBzdGF0ZS5jb250ZXh0KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25BcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jbG9uZUFycmF5KHZhbHVlLCBzdGF0ZS5jb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ3VuZGVmaW5lZFByb3BlcnR5VmFsdWUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eVZhbHVlJywgYENhbm5vdCBjb252ZXJ0IGludmFsaWQgSlNPTjogXCIke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1cImApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWVyZ2VPYmplY3RJblBsYWNlKHRhcmdldDogSnNvbk9iamVjdCwgc3JjOiBKc29uT2JqZWN0LCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogUmVzdWx0PEpzb25PYmplY3Q+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3JjKSB7XG4gICAgICAgICAgICBpZiAoc3JjLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wUmVzdWx0ID0gdGhpcy5fZWRpdFByb3BlcnR5KGtleSwgc3JjW2tleV0sIHN0YXRlKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcFJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcFJlc3VsdC5kZXRhaWwgPT09ICdkZWZlcnJlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmRlZmVyKHByb3BSZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VSZXN1bHQgPSB0aGlzLl9tZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0LCBwcm9wUmVzdWx0LnZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VSZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VSZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcFJlc3VsdC5kZXRhaWwgPT09ICdpbmFwcGxpY2FibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlUmVzdWx0ID0gdGhpcy5jbG9uZShzcmNba2V5XSwgc3RhdGUuY29udGV4dCkub25TdWNjZXNzKChjbG9uZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tZXJnZUNsb25lZFByb3BlcnR5KHRhcmdldCwga2V5LCBjbG9uZWQsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlUmVzdWx0LmlzRmFpbHVyZSgpICYmICh2YWx1ZVJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiAke3ZhbHVlUmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcFJlc3VsdC5kZXRhaWwgIT09ICdpZ25vcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06ICR7cHJvcFJlc3VsdC5tZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06IENhbm5vdCBtZXJnZSBpbmhlcml0ZWQgcHJvcGVydGllc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHRhcmdldCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbG9uZUFycmF5KHNyYzogSnNvbkFycmF5LCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uQXJyYXksIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gc3JjLm1hcCgodikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUodiwgY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtYXBEZXRhaWxlZFJlc3VsdHM8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+KHJlc3VsdHMsIFsnaWdub3JlJ10pLm9uU3VjY2VzcygoY29udmVydGVkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChjb252ZXJ0ZWQpO1xuICAgICAgICB9KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX21lcmdlQ2xvbmVkUHJvcGVydHkodGFyZ2V0OiBKc29uT2JqZWN0LCBrZXk6IHN0cmluZywgbmV3VmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGFyZ2V0W2tleV07XG5cbiAgICAgICAgLy8gbWVyZ2UgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIGNsb25lIHNvIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgICAvLyBzaW5jZSBjbG9uZSBpdHNlbGYgd2lsbCBoYXZlIGZhaWxlZFxuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgICAgICBpZiAoaXNKc29uUHJpbWl0aXZlKG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChuZXdWYWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbk9iamVjdChuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0pzb25PYmplY3QoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RJblBsYWNlKGV4aXN0aW5nLCBuZXdWYWx1ZSwgc3RhdGUuY29udGV4dCkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uQXJyYXkobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNKc29uQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBleGlzdGluZy5jb25jYXQoLi4ubmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh0YXJnZXRba2V5XSwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChuZXdWYWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGBJbnZhbGlkIEpTT046ICR7SlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpfWAsICdlcnJvcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lZGl0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgdGhpcy5fcnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBydWxlLmVkaXRQcm9wZXJ0eShrZXksIHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocnVsZVJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocnVsZVJlc3VsdC5kZXRhaWwgIT09ICdpbmFwcGxpY2FibGUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZWRpdFZhbHVlKHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgdGhpcy5fcnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBydWxlLmVkaXRWYWx1ZSh2YWx1ZSwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQuaXNTdWNjZXNzKCkgfHwgKHJ1bGVSZXN1bHQuZGV0YWlsICE9PSAnaW5hcHBsaWNhYmxlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2ZpbmFsaXplQW5kTWVyZ2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IGRlZmVycmVkID0gc3RhdGUuZGVmZXJyZWQ7XG4gICAgICAgIGlmIChkZWZlcnJlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgdGhpcy5fcnVsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBydWxlUmVzdWx0ID0gcnVsZS5maW5hbGl6ZVByb3BlcnRpZXMoZGVmZXJyZWQsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICBpZiAocnVsZVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQoc3RhdGUuY29udGV4dCwgdGFyZ2V0LCBydWxlUmVzdWx0LnZhbHVlKS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocnVsZVJlc3VsdC5kZXRhaWwgPT09ICdpZ25vcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2NlZWRXaXRoRGV0YWlsKHRhcmdldCwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlUmVzdWx0LmRldGFpbCAhPT0gJ2luYXBwbGljYWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKHJ1bGVSZXN1bHQubWVzc2FnZSwgcnVsZVJlc3VsdC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwodGFyZ2V0LCAnZWRpdGVkJyk7XG4gICAgfVxufVxuXG4iXX0=
@@ -28,7 +28,7 @@ class JsonEditorState {
28
28
  constructor(editor, baseOptions, runtimeContext) {
29
29
  this._deferred = [];
30
30
  this.editor = editor;
31
- this.options = JsonEditorState._getEffectiveOptions(baseOptions, runtimeContext).getValueOrThrow();
31
+ this.options = JsonEditorState._getEffectiveOptions(baseOptions, runtimeContext).orThrow();
32
32
  this._id = JsonEditorState._nextId++;
33
33
  }
34
34
  get context() { return this.options.context; }
@@ -55,7 +55,7 @@ class JsonEditorState {
55
55
  return (_b = (_a = this.options.context) === null || _a === void 0 ? void 0 : _a.refs) !== null && _b !== void 0 ? _b : defaultContext === null || defaultContext === void 0 ? void 0 : defaultContext.refs;
56
56
  }
57
57
  getContext(defaultContext) {
58
- return contextHelpers_1.JsonContextHelper.mergeContext(defaultContext, this.options.context).getValueOrDefault();
58
+ return contextHelpers_1.JsonContextHelper.mergeContext(defaultContext, this.options.context).orDefault();
59
59
  }
60
60
  extendContext(baseContext, add) {
61
61
  const context = this.getContext(baseContext);
@@ -83,4 +83,4 @@ class JsonEditorState {
83
83
  }
84
84
  exports.JsonEditorState = JsonEditorState;
85
85
  JsonEditorState._nextId = 0;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvclN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25FZGl0b3IvanNvbkVkaXRvclN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUFpRjtBQUlqRixzREFBc0Q7QUFxQ3RELE1BQWEsZUFBZTtJQVN4QixZQUFtQixNQUFrQixFQUFFLFdBQThCLEVBQUUsY0FBNEI7UUFIaEYsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFJNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ25HLElBQUksQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLE9BQU8sS0FBNEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFNUUsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFUyxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBMEIsRUFBRSxPQUFxQjtRQUNuRixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLGtDQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLE9BQU8sSUFBQSxrQkFBTyxFQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQWU7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU8sQ0FBQyxjQUE0Qjs7UUFDdkMsT0FBTyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLDBDQUFFLElBQUksbUNBQUksY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksQ0FBQztJQUM5RCxDQUFDO0lBRU0sT0FBTyxDQUFDLGNBQTRCOztRQUN2QyxPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sMENBQUUsSUFBSSxtQ0FBSSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFTSxVQUFVLENBQUMsY0FBNEI7UUFDMUMsT0FBTyxrQ0FBaUIsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNwRyxDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQWtDLEVBQUUsR0FBMEQ7UUFDL0csTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxPQUFPLGtDQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLGNBQWMsQ0FDakIsSUFBK0IsRUFDL0IsT0FBZ0IsRUFDaEIsVUFBd0M7UUFFeEMsSUFBSSxNQUFNLEdBQWtDLE9BQU8sQ0FBQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN4RCxRQUFRLElBQUksRUFBRTtZQUNWLEtBQUsscUJBQXFCO2dCQUN0QixNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMscUJBQXFCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2dCQUNuRixNQUFNO1lBQ1YsS0FBSyxzQkFBc0I7Z0JBQ3ZCLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQzlFLE1BQU07WUFDVixLQUFLLHdCQUF3QjtnQkFDekIsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLHdCQUF3QixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDL0UsdUJBQXVCO2dCQUN2QixPQUFPLEdBQUcsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksa0NBQWtDLENBQUM7Z0JBQ3hELE1BQU07U0FDYjtRQUNELHVCQUF1QjtRQUN2QixPQUFPLElBQUEseUJBQWMsRUFBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUF6RUwsMENBMEVDO0FBekVvQix1QkFBTyxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBEZXRhaWxlZEZhaWx1cmUsIFJlc3VsdCwgZmFpbFdpdGhEZXRhaWwsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IEpzb25Db250ZXh0LCBKc29uUmVmZXJlbmNlTWFwLCBUZW1wbGF0ZVZhcnMsIFZhcmlhYmxlVmFsdWUgfSBmcm9tICcuLi9qc29uQ29udGV4dCc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi9qc29uRWRpdG9yUnVsZSc7XG5cbmltcG9ydCB7IEpzb25Db250ZXh0SGVscGVyIH0gZnJvbSAnLi4vY29udGV4dEhlbHBlcnMnO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvcic7XG5pbXBvcnQgeyBKc29uT2JqZWN0IH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IHR5cGUgSnNvbkVkaXRvclZhbGlkYXRpb25SdWxlcyA9ICdpbnZhbGlkUHJvcGVydHlOYW1lJ3wnaW52YWxpZFByb3BlcnR5VmFsdWUnfCd1bmRlZmluZWRQcm9wZXJ0eVZhbHVlJztcblxuZXhwb3J0IGludGVyZmFjZSBKc29uRWRpdG9yVmFsaWRhdGlvbk9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIElmIG9uSW52YWxpZFByb3BlcnR5TmFtZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBwcm9wZXJ0eSBuYW1lXG4gICAgICogdGhhdCBpcyBpbnZhbGlkIGFmdGVyIHRlbXBsYXRlIHJlbmRlcmluZyBjYXVzZXMgYW4gZXJyb3IgYW5kIHN0b3BzXG4gICAgICogY29udmVyc2lvbi4gIElmIG9uSW52YWxpZFByb3BlcnR5TmFtZSBpcyAnaWdub3JlJywgdGhlbiBuYW1lcyB3aGljaFxuICAgICAqIGFyZSBpbnZhbGlkIGFmdGVyIHRlbXBsYXRlIHJlbmRlcmluZyBhcmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLlxuICAgICAqL1xuICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uSW52YWxpZFByb3BlcnR5VmFsdWUgaXMgJ2Vycm9yJyAoZGVmYXVsdCkgdGhlbiBhbnkgaWxsZWdhbFxuICAgICAqIHByb3BlcnR5IHZhbHVlIG90aGVyIHRoYW4gdW5kZWZpbmVkIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHNcbiAgICAgKiBjb252ZXJzaW9uLiAgSWYgb25JbnZhbGlkUHJvcGVydHlWYWx1ZSBpcyAnaWdub3JlJyB0aGVuIGFueVxuICAgICAqIGludmFsaWQgcHJvcGVydHkgdmFsdWVzIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICAgICAqL1xuICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG5cbiAgICAvKipcbiAgICAgKiBJZiBvblVua25vd25Qcm9wZXJ0eVZhbHVlIGlzIGVycm9yLCB0aGVuIGFueSBwcm9wZXJ0eSB3aXRoXG4gICAgICogdmFsdWUgdW5kZWZpbmVkIHdpbGwgY2F1c2UgYW4gZXJyb3IgYW5kIHN0b3AgY29udmVyc2lvbi4gIElmXG4gICAgICogb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIChkZWZhdWx0KSB0aGVuIGFueVxuICAgICAqIHByb3BlcnR5IHdpdGggdmFsdWUgdW5kZWZpbmVkIGlzIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiAnZXJyb3InfCdpZ25vcmUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25FZGl0b3JPcHRpb25zIHtcbiAgICBjb250ZXh0PzogSnNvbkNvbnRleHQ7XG4gICAgdmFsaWRhdGlvbjogSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgSnNvbkVkaXRvclN0YXRlIHtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9uZXh0SWQgPSAwO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGVkaXRvcjogSnNvbkVkaXRvcjtcblxuICAgIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RlZmVycmVkOiBKc29uT2JqZWN0W10gPSBbXTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lkOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yOiBKc29uRWRpdG9yLCBiYXNlT3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnMsIHJ1bnRpbWVDb250ZXh0PzogSnNvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IEpzb25FZGl0b3JTdGF0ZS5fZ2V0RWZmZWN0aXZlT3B0aW9ucyhiYXNlT3B0aW9ucywgcnVudGltZUNvbnRleHQpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9pZCA9IEpzb25FZGl0b3JTdGF0ZS5fbmV4dElkKys7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb250ZXh0KCk6IEpzb25Db250ZXh0fHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dDsgfVxuXG4gICAgcHVibGljIGdldCBkZWZlcnJlZCgpOiBKc29uT2JqZWN0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmZXJyZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZ2V0RWZmZWN0aXZlT3B0aW9ucyhvcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucywgY29udGV4dD86IEpzb25Db250ZXh0KTogUmVzdWx0PEpzb25FZGl0b3JPcHRpb25zPiB7XG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLm1lcmdlQ29udGV4dChvcHRpb25zLmNvbnRleHQsIGNvbnRleHQpLm9uU3VjY2VzcygobWVyZ2VkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh7IGNvbnRleHQ6IG1lcmdlZCwgdmFsaWRhdGlvbjogb3B0aW9ucy52YWxpZGF0aW9uIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVmZXIob2JqOiBKc29uT2JqZWN0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RlZmVycmVkLnB1c2gob2JqKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFycyhkZWZhdWx0Q29udGV4dD86IEpzb25Db250ZXh0KTogVGVtcGxhdGVWYXJzfHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dD8udmFycyA/PyBkZWZhdWx0Q29udGV4dD8udmFycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVmcyhkZWZhdWx0Q29udGV4dD86IEpzb25Db250ZXh0KTogSnNvblJlZmVyZW5jZU1hcHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbnRleHQ/LnJlZnMgPz8gZGVmYXVsdENvbnRleHQ/LnJlZnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHQoZGVmYXVsdENvbnRleHQ/OiBKc29uQ29udGV4dCk6IEpzb25Db250ZXh0fHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5tZXJnZUNvbnRleHQoZGVmYXVsdENvbnRleHQsIHRoaXMub3B0aW9ucy5jb250ZXh0KS5nZXRWYWx1ZU9yRGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHRlbmRDb250ZXh0KGJhc2VDb250ZXh0OiBKc29uQ29udGV4dHx1bmRlZmluZWQsIGFkZDogeyB2YXJzPzogVmFyaWFibGVWYWx1ZVtdLCByZWZzPzogSnNvblJlZmVyZW5jZU1hcFtdIH0pOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoYmFzZUNvbnRleHQpO1xuICAgICAgICByZXR1cm4gSnNvbkNvbnRleHRIZWxwZXIuZXh0ZW5kQ29udGV4dChjb250ZXh0LCBhZGQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsVmFsaWRhdGlvbjxUPUpzb25PYmplY3Q+KFxuICAgICAgICBydWxlOiBKc29uRWRpdG9yVmFsaWRhdGlvblJ1bGVzLFxuICAgICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0aW9uPzogSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zLFxuICAgICk6IERldGFpbGVkRmFpbHVyZTxULCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgbGV0IGRldGFpbDogSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gPSAnZXJyb3InO1xuICAgICAgICBjb25zdCBlZmZlY3RpdmUgPSB2YWxpZGF0aW9uID8/IHRoaXMub3B0aW9ucy52YWxpZGF0aW9uO1xuICAgICAgICBzd2l0Y2ggKHJ1bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ludmFsaWRQcm9wZXJ0eU5hbWUnOlxuICAgICAgICAgICAgICAgIGRldGFpbCA9IChlZmZlY3RpdmUub25JbnZhbGlkUHJvcGVydHlOYW1lICE9PSAnaWdub3JlJykgPyAnZXJyb3InIDogJ2luYXBwbGljYWJsZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpbnZhbGlkUHJvcGVydHlWYWx1ZSc6XG4gICAgICAgICAgICAgICAgZGV0YWlsID0gKGVmZmVjdGl2ZS5vbkludmFsaWRQcm9wZXJ0eVZhbHVlICE9PSAnaWdub3JlJykgPyAnZXJyb3InIDogJ2lnbm9yZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWRQcm9wZXJ0eVZhbHVlJzpcbiAgICAgICAgICAgICAgICBkZXRhaWwgPSAoZWZmZWN0aXZlLm9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZSAhPT0gJ2Vycm9yJykgPyAnaWdub3JlJyA6ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSA/PyAnQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIHRvIEpTT04nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChtZXNzYWdlID8/IHJ1bGUsIGRldGFpbCk7XG4gICAgfVxufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvclN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25FZGl0b3IvanNvbkVkaXRvclN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUFpRjtBQUlqRixzREFBc0Q7QUFxQ3RELE1BQWEsZUFBZTtJQVN4QixZQUFtQixNQUFrQixFQUFFLFdBQThCLEVBQUUsY0FBNEI7UUFIaEYsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFJNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNGLElBQUksQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLE9BQU8sS0FBNEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFNUUsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFUyxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBMEIsRUFBRSxPQUFxQjtRQUNuRixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLGtDQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLE9BQU8sSUFBQSxrQkFBTyxFQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQWU7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU8sQ0FBQyxjQUE0Qjs7UUFDdkMsT0FBTyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLDBDQUFFLElBQUksbUNBQUksY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksQ0FBQztJQUM5RCxDQUFDO0lBRU0sT0FBTyxDQUFDLGNBQTRCOztRQUN2QyxPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sMENBQUUsSUFBSSxtQ0FBSSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFTSxVQUFVLENBQUMsY0FBNEI7UUFDMUMsT0FBTyxrQ0FBaUIsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxXQUFrQyxFQUFFLEdBQTBEO1FBQy9HLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTyxrQ0FBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxjQUFjLENBQ2pCLElBQStCLEVBQy9CLE9BQWdCLEVBQ2hCLFVBQXdDO1FBRXhDLElBQUksTUFBTSxHQUFrQyxPQUFPLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxhQUFWLFVBQVUsY0FBVixVQUFVLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDeEQsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLHFCQUFxQjtnQkFDdEIsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLHFCQUFxQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztnQkFDbkYsTUFBTTtZQUNWLEtBQUssc0JBQXNCO2dCQUN2QixNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUM5RSxNQUFNO1lBQ1YsS0FBSyx3QkFBd0I7Z0JBQ3pCLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQy9FLHVCQUF1QjtnQkFDdkIsT0FBTyxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLGtDQUFrQyxDQUFDO2dCQUN4RCxNQUFNO1NBQ2I7UUFDRCx1QkFBdUI7UUFDdkIsT0FBTyxJQUFBLHlCQUFjLEVBQUMsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBekVMLDBDQTBFQztBQXpFb0IsdUJBQU8sR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRGV0YWlsZWRGYWlsdXJlLCBSZXN1bHQsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgVGVtcGxhdGVWYXJzLCBWYXJpYWJsZVZhbHVlIH0gZnJvbSAnLi4vanNvbkNvbnRleHQnO1xuaW1wb3J0IHsgSnNvbkVkaXRGYWlsdXJlUmVhc29uLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4vanNvbkVkaXRvclJ1bGUnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dEhlbHBlciB9IGZyb20gJy4uL2NvbnRleHRIZWxwZXJzJztcbmltcG9ydCB7IEpzb25FZGl0b3IgfSBmcm9tICcuL2pzb25FZGl0b3InO1xuaW1wb3J0IHsgSnNvbk9iamVjdCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIEpzb25FZGl0b3JWYWxpZGF0aW9uUnVsZXMgPSAnaW52YWxpZFByb3BlcnR5TmFtZSd8J2ludmFsaWRQcm9wZXJ0eVZhbHVlJ3wndW5kZWZpbmVkUHJvcGVydHlWYWx1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJZiBvbkludmFsaWRQcm9wZXJ0eU5hbWUgaXMgJ2Vycm9yJyAoZGVmYXVsdCkgdGhlbiBhbnkgcHJvcGVydHkgbmFtZVxuICAgICAqIHRoYXQgaXMgaW52YWxpZCBhZnRlciB0ZW1wbGF0ZSByZW5kZXJpbmcgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wc1xuICAgICAqIGNvbnZlcnNpb24uICBJZiBvbkludmFsaWRQcm9wZXJ0eU5hbWUgaXMgJ2lnbm9yZScsIHRoZW4gbmFtZXMgd2hpY2hcbiAgICAgKiBhcmUgaW52YWxpZCBhZnRlciB0ZW1wbGF0ZSByZW5kZXJpbmcgYXJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZC5cbiAgICAgKi9cbiAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6ICdlcnJvcid8J2lnbm9yZSc7XG5cbiAgICAvKipcbiAgICAgKiBJZiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IGlsbGVnYWxcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBvdGhlciB0aGFuIHVuZGVmaW5lZCBjYXVzZXMgYW4gZXJyb3IgYW5kIHN0b3BzXG4gICAgICogY29udmVyc2lvbi4gIElmIG9uSW52YWxpZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgdGhlbiBhbnlcbiAgICAgKiBpbnZhbGlkIHByb3BlcnR5IHZhbHVlcyBhcmUgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25Vbmtub3duUHJvcGVydHlWYWx1ZSBpcyBlcnJvciwgdGhlbiBhbnkgcHJvcGVydHkgd2l0aFxuICAgICAqIHZhbHVlIHVuZGVmaW5lZCB3aWxsIGNhdXNlIGFuIGVycm9yIGFuZCBzdG9wIGNvbnZlcnNpb24uICBJZlxuICAgICAqIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZSBpcyAnaWdub3JlJyAoZGVmYXVsdCkgdGhlbiBhbnlcbiAgICAgKiBwcm9wZXJ0eSB3aXRoIHZhbHVlIHVuZGVmaW5lZCBpcyBzaWxlbnRseSBpZ25vcmVkLlxuICAgICAqL1xuICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uRWRpdG9yT3B0aW9ucyB7XG4gICAgY29udGV4dD86IEpzb25Db250ZXh0O1xuICAgIHZhbGlkYXRpb246IEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JTdGF0ZSB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfbmV4dElkID0gMDtcblxuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3I6IEpzb25FZGl0b3I7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnM7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZlcnJlZDogSnNvbk9iamVjdFtdID0gW107XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pZDogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVkaXRvcjogSnNvbkVkaXRvciwgYmFzZU9wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zLCBydW50aW1lQ29udGV4dD86IEpzb25Db250ZXh0KSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBKc29uRWRpdG9yU3RhdGUuX2dldEVmZmVjdGl2ZU9wdGlvbnMoYmFzZU9wdGlvbnMsIHJ1bnRpbWVDb250ZXh0KS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2lkID0gSnNvbkVkaXRvclN0YXRlLl9uZXh0SWQrKztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbnRleHQoKTogSnNvbkNvbnRleHR8dW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMub3B0aW9ucy5jb250ZXh0OyB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmVycmVkKCk6IEpzb25PYmplY3RbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXRFZmZlY3RpdmVPcHRpb25zKG9wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbkVkaXRvck9wdGlvbnM+IHtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSnNvbkNvbnRleHRIZWxwZXIubWVyZ2VDb250ZXh0KG9wdGlvbnMuY29udGV4dCwgY29udGV4dCkub25TdWNjZXNzKChtZXJnZWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHsgY29udGV4dDogbWVyZ2VkLCB2YWxpZGF0aW9uOiBvcHRpb25zLnZhbGlkYXRpb24gfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWZlcihvYmo6IEpzb25PYmplY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVmZXJyZWQucHVzaChvYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYXJzKGRlZmF1bHRDb250ZXh0PzogSnNvbkNvbnRleHQpOiBUZW1wbGF0ZVZhcnN8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb250ZXh0Py52YXJzID8/IGRlZmF1bHRDb250ZXh0Py52YXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSZWZzKGRlZmF1bHRDb250ZXh0PzogSnNvbkNvbnRleHQpOiBKc29uUmVmZXJlbmNlTWFwfHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dD8ucmVmcyA/PyBkZWZhdWx0Q29udGV4dD8ucmVmcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29udGV4dChkZWZhdWx0Q29udGV4dD86IEpzb25Db250ZXh0KTogSnNvbkNvbnRleHR8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLm1lcmdlQ29udGV4dChkZWZhdWx0Q29udGV4dCwgdGhpcy5vcHRpb25zLmNvbnRleHQpLm9yRGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHRlbmRDb250ZXh0KGJhc2VDb250ZXh0OiBKc29uQ29udGV4dHx1bmRlZmluZWQsIGFkZDogeyB2YXJzPzogVmFyaWFibGVWYWx1ZVtdLCByZWZzPzogSnNvblJlZmVyZW5jZU1hcFtdIH0pOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoYmFzZUNvbnRleHQpO1xuICAgICAgICByZXR1cm4gSnNvbkNvbnRleHRIZWxwZXIuZXh0ZW5kQ29udGV4dChjb250ZXh0LCBhZGQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsVmFsaWRhdGlvbjxUPUpzb25PYmplY3Q+KFxuICAgICAgICBydWxlOiBKc29uRWRpdG9yVmFsaWRhdGlvblJ1bGVzLFxuICAgICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0aW9uPzogSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zLFxuICAgICk6IERldGFpbGVkRmFpbHVyZTxULCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgbGV0IGRldGFpbDogSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gPSAnZXJyb3InO1xuICAgICAgICBjb25zdCBlZmZlY3RpdmUgPSB2YWxpZGF0aW9uID8/IHRoaXMub3B0aW9ucy52YWxpZGF0aW9uO1xuICAgICAgICBzd2l0Y2ggKHJ1bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ludmFsaWRQcm9wZXJ0eU5hbWUnOlxuICAgICAgICAgICAgICAgIGRldGFpbCA9IChlZmZlY3RpdmUub25JbnZhbGlkUHJvcGVydHlOYW1lICE9PSAnaWdub3JlJykgPyAnZXJyb3InIDogJ2luYXBwbGljYWJsZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpbnZhbGlkUHJvcGVydHlWYWx1ZSc6XG4gICAgICAgICAgICAgICAgZGV0YWlsID0gKGVmZmVjdGl2ZS5vbkludmFsaWRQcm9wZXJ0eVZhbHVlICE9PSAnaWdub3JlJykgPyAnZXJyb3InIDogJ2lnbm9yZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWRQcm9wZXJ0eVZhbHVlJzpcbiAgICAgICAgICAgICAgICBkZXRhaWwgPSAoZWZmZWN0aXZlLm9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZSAhPT0gJ2Vycm9yJykgPyAnaWdub3JlJyA6ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSA/PyAnQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIHRvIEpTT04nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChtZXNzYWdlID8/IHJ1bGUsIGRldGFpbCk7XG4gICAgfVxufVxuIl19
@@ -84,9 +84,9 @@ exports.PrefixKeyPolicy = PrefixKeyPolicy;
84
84
  */
85
85
  class SimpleJsonMapBase {
86
86
  constructor(values, context, keyPolicy) {
87
- values = SimpleJsonMapBase._toMap(values).getValueOrThrow();
87
+ values = SimpleJsonMapBase._toMap(values).orThrow();
88
88
  this._keyPolicy = keyPolicy !== null && keyPolicy !== void 0 ? keyPolicy : new ReferenceMapKeyPolicy();
89
- this._values = this._keyPolicy.validateMap(values).getValueOrThrow();
89
+ this._values = this._keyPolicy.validateMap(values).orThrow();
90
90
  this._context = context;
91
91
  }
92
92
  static _toMap(values) {
@@ -269,4 +269,4 @@ class CompositeJsonMap {
269
269
  }
270
270
  }
271
271
  exports.CompositeJsonMap = CompositeJsonMap;
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0QsNkNBQTBDO0FBTTFDOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQixFQUFFLE9BQThD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S0FBSyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxNQUFNLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zIHtcbiAgICBtYWtlVmFsaWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBvbGljeSBvYmplY3QgcmVzcG9uc2libGUgZm9yIHZhbGlkYXRpbmcgb3IgY29ycmVjdGluZ1xuICoga2V5cyBpbiBhIHJlZmVyZW5jZSBtYXBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzVmFsaWQ6IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucywgaXNWYWxpZD86IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZCA/PyBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChrZXkubGVuZ3RoID4gMCkgJiYgKCFrZXkuaW5jbHVkZXMoJ3t7JykpICYmICgha2V5LnN0YXJ0c1dpdGgoJz8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIGl0ZW0/OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkKGtleSwgaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKGtleTogc3RyaW5nLCBpdGVtPzogVCwgX29wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoa2V5LCBpdGVtKSA/IHN1Y2NlZWQoa2V5KSA6IGZhaWwoYCR7a2V5fTogaW52YWxpZCBrZXlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVJdGVtcyhpdGVtczogW3N0cmluZywgVF1bXSwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxbc3RyaW5nLCBUXVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoLi4uaXRlbSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKFt2YWxpZCwgaXRlbVsxXV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVNYXAobWFwOiBNYXA8c3RyaW5nLCBUPiwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zKEFycmF5LmZyb20obWFwLmVudHJpZXMoKSksIG9wdGlvbnMpLm9uU3VjY2VzcygodmFsaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXAodmFsaWQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlZml4S2V5UG9saWN5PFQ+IGV4dGVuZHMgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKGtleTogc3RyaW5nLCBfaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKHRoaXMucHJlZml4KSAmJiAoa2V5ICE9PSB0aGlzLnByZWZpeCkgJiYgUmVmZXJlbmNlTWFwS2V5UG9saWN5LmRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBtYWtlVmFsaWQgPSAob3B0aW9ucyA/PyB0aGlzLl9kZWZhdWx0T3B0aW9ucyk/Lm1ha2VWYWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ha2VWYWxpZCAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTWFwT3JSZWNvcmQ8VD4gPSBNYXA8c3RyaW5nLCBUPnxSZWNvcmQ8c3RyaW5nLCBUPjtcblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2ltcGxlSnNvbk1hcEJhc2U8VD4gaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2tleVBvbGljeTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfdmFsdWVzOiBNYXA8c3RyaW5nLCBUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4pIHtcbiAgICAgICAgdmFsdWVzID0gU2ltcGxlSnNvbk1hcEJhc2UuX3RvTWFwKHZhbHVlcykuZ2V0VmFsdWVPclRocm93KCk7XG4gICAgICAgIHRoaXMuX2tleVBvbGljeSA9IGtleVBvbGljeSA/PyBuZXcgUmVmZXJlbmNlTWFwS2V5UG9saWN5KCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuX2tleVBvbGljeS52YWxpZGF0ZU1hcCh2YWx1ZXMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF90b01hcDxUPih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPik6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICBpZiAodmFsdWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXA8c3RyaW5nLCBUPigpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghKHZhbHVlcyBpbnN0YW5jZW9mIE1hcCkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWNvcmRUb01hcCh2YWx1ZXMsIChfaywgdikgPT4gc3VjY2VlZCh2KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgYSBrZXkgbWlnaHQgYmUgdmFsaWQgZm9yIHRoaXMgbWFwIGJ1dCBkb2VzIG5vdCBkZXRlcm1pbmUgaWYga2V5IGFjdHVhbGx5XG4gICAgICogZXhpc3RzLiBBbGxvd3Mga2V5IHJhbmdlIHRvIGJlIGNvbnN0cmFpbmVkLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGtleSBpcyBpbiB0aGUgdmFsaWQgcmFuZ2UsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMga2V5SXNJblJhbmdlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXlQb2xpY3kuaXNWYWxpZChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgYWN0dWFsbHkgZXhpc3RzIGluIHRoZSBtYXAuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBleGlzdHMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZXMuaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gb2JqZWN0IHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSBvYmplY3RcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRKc29uT2JqZWN0KGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KS5vblN1Y2Nlc3MoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSnNvbk9iamVjdChqdikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogbm90IGFuIG9iamVjdGAsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPjtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXphdGlvbiBvcHRpb25zIGZvciBhIEBzZWUgU2ltcGxlSnNvbk1hcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZUpzb25NYXBPcHRpb25zIHtcbiAgICBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8SnNvblZhbHVlPixcbiAgICBlZGl0b3I/OiBKc29uRWRpdG9yLFxufVxuXG4vKipcbiAqIEEgU2ltcGxlSnNvbk1hcCBwcmVzZW50cyBhIHZpZXcgb2YgYSBzaW1wbGUgbWFwIG9mIEBzZWUgSnNvblZhbHVlXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW1wbGVKc29uTWFwIGV4dGVuZHMgU2ltcGxlSnNvbk1hcEJhc2U8SnNvblZhbHVlPiB7XG4gICAgcHJvdGVjdGVkIF9lZGl0b3I/OiBKc29uRWRpdG9yO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucz8ua2V5UG9saWN5KTtcbiAgICAgICAgdGhpcy5fZWRpdG9yID0gb3B0aW9ucz8uZWRpdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBTaW1wbGVKc29uTWFwIGZyb20gdGhlIHN1cHBsaWVkIG9iamVjdHNcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciBSZWNvcmQgb2YgdGhlIEBzZWUgSnNvbk9iamVjdCB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgQHNlZSBTaW1wbGVKc29uTWFwT3B0aW9ucyBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVNpbXBsZSh2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIG9wdGlvbnM/OiBTaW1wbGVKc29uTWFwT3B0aW9ucyk6IFJlc3VsdDxTaW1wbGVKc29uTWFwPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBTaW1wbGVKc29uTWFwKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIHZhbHVlIHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZVxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgcHVibGljIGdldEpzb25WYWx1ZShrZXk6IHN0cmluZywgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb250ZXh0ID0gY29udGV4dCA/PyB0aGlzLl9jb250ZXh0O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX3ZhbHVlcy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IEpTT04gdmFsdWUgbm90IGZvdW5kYCwgJ3Vua25vd24nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fY2xvbmUodmFsdWUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2xvbmUodmFsdWU6IEpzb25WYWx1ZSwgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBpZiAoIXRoaXMuX2VkaXRvcikge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gSnNvbkVkaXRvci5jcmVhdGUoKTtcbiAgICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBuZWFybHkgaW1wb3NzaWJsZSB0byByZXByb2R1Y2VcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwocmVzdWx0Lm1lc3NhZ2UsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZWRpdG9yID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3IuY2xvbmUodmFsdWUsIGNvbnRleHQpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBJbml0aWFsaXphdGlvbiBvcHRpb25zIGZvciBhIFByZWZpeGVkSnNvbk1hcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVByZWZpeE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwcmVmaXggc2hvdWxkIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgYXMgbmVlZGVkIChkZWZhdWx0IHRydWUpXG4gICAgICovXG4gICAgYWRkUHJlZml4PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwcmVmaXggdG8gYmUgZW5mb3JjZWRcbiAgICAgKi9cbiAgICBwcmVmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFByZWZpeGVkSnNvbk1hcCBlbmZvcmNlcyBhIHN1cHBsaWVkIHByZWZpeCBmb3IgYWxsIGNvbnRhaW5lZCB2YWx1ZXMsIG9wdGlvbmFsbHlcbiAqIGFkZGluZyB0aGUgcHJlZml4IGFzIG5lY2Vzc2FyeSAoZGVmYXVsdCB0cnVlKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByZWZpeGVkSnNvbk1hcCBleHRlbmRzIFNpbXBsZUpzb25NYXAge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIG9wdGlvbnM/OiBTaW1wbGVKc29uTWFwT3B0aW9ucykge1xuICAgICAgICBzdXBlcih2YWx1ZXMsIGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBQcmVmaXhlZEpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIHByZWZpeCBBIHN0cmluZyBwcmVmaXggdG8gYmUgZW5mb3JjZWQgZm9yIGFuZCBhZGRlZCB0byBrZXkgbmFtZXMgYXMgbmVjZXNzYXJ5XG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgUmVjb3JkIG9mIHRoZSBAc2VlIEpzb25WYWx1ZSB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIGVkaXRvciBPcHRpb25hbCBAc2VlIEpzb25FZGl0b3IgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXg6IHN0cmluZywgdmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBlZGl0b3I/OiBKc29uRWRpdG9yKTogUmVzdWx0PFByZWZpeGVkSnNvbk1hcD47XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgUHJlZml4ZWRKc29uTWFwIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBwcmVmaXhPcHRpb25zIEEgS2V5UHJlZml4T3B0aW9ucyBpbmRpY2F0aW5nIHRoZSBwcmVmaXggdG8gZW5mb3JjZSBhbmQgd2hldGhlciB0aGF0IHByZWZpeCBzaG91bGRcbiAgICAgKiBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5IGlmIG5lY2Vzc2FyeSAoZGVmYXVsdCB0cnVlKVxuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIHJlY29yZCBvZiB0aGUgQHNlZSBKc29uVmFsdWUgdG8gYmUgcmV0dXJuZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBlZGl0b3IgT3B0aW9uYWwgQHNlZSBKc29uRWRpdG9yIHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUHJlZml4ZWQocHJlZml4T3B0aW9uczogS2V5UHJlZml4T3B0aW9ucywgdmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBlZGl0b3I/OiBKc29uRWRpdG9yKTogUmVzdWx0PFByZWZpeGVkSnNvbk1hcD47XG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXhPcHRpb25zOiBzdHJpbmd8S2V5UHJlZml4T3B0aW9ucywgdmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBlZGl0b3I/OiBKc29uRWRpdG9yKTogUmVzdWx0PFByZWZpeGVkSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgUHJlZml4ZWRKc29uTWFwKHZhbHVlcywgY29udGV4dCwgeyBrZXlQb2xpY3k6IHRoaXMuX3RvUG9saWN5KHByZWZpeE9wdGlvbnMpLCBlZGl0b3IgfSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3RvUG9saWN5KHByZWZpeE9wdGlvbnM6IHN0cmluZ3xLZXlQcmVmaXhPcHRpb25zKTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PEpzb25WYWx1ZT4ge1xuICAgICAgICBpZiAodHlwZW9mIHByZWZpeE9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByZWZpeEtleVBvbGljeShwcmVmaXhPcHRpb25zLCB7IG1ha2VWYWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFByZWZpeEtleVBvbGljeShwcmVmaXhPcHRpb25zLnByZWZpeCwgeyBtYWtlVmFsaWQ6IChwcmVmaXhPcHRpb25zLmFkZFByZWZpeCAhPT0gZmFsc2UpIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIENvbXBvc2l0ZUpzb25NYXAgcHJlc2VudHMgYSBjb21wb3NlZCB2aWV3IG9mIG9uZSBvciBtb3JlIG90aGVyXG4gKiBKc29uUmVmZXJlbmNlTWFwcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZUpzb25NYXAgaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgX21hcHM6IEpzb25SZWZlcmVuY2VNYXBbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pIHtcbiAgICAgICAgdGhpcy5fbWFwcyA9IG1hcHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIENvbXBvc2l0ZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgbWFwc1xuICAgICAqIEBwYXJhbSBtYXBzIG9uZSBvciBtb3JlIG9iamVjdCBtYXBzIHRvIGJlIGNvbXBvc2VkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUobWFwczogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PENvbXBvc2l0ZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IENvbXBvc2l0ZUpzb25NYXAobWFwcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZVxuICAgICAqIGlmIGtleSBhY3R1YWxseSBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAua2V5SXNJblJhbmdlKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAuaGFzKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gb2JqZWN0IHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSBvYmplY3RcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRKc29uT2JqZWN0KGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KS5vblN1Y2Nlc3MoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSnNvbk9iamVjdChqdikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogbm90IGFuIG9iamVjdGAsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgbWFwIG9mIHRoaXMuX21hcHMpIHtcbiAgICAgICAgICAgIGlmIChtYXAua2V5SXNJblJhbmdlKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBtYXAuZ2V0SnNvblZhbHVlKGtleSwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IHZhbHVlIG5vdCBmb3VuZGAsICd1bmtub3duJyk7XG4gICAgfVxufVxuIl19
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0QsNkNBQTBDO0FBTTFDOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQixFQUFFLE9BQThD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S0FBSyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxNQUFNLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zIHtcbiAgICBtYWtlVmFsaWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBvbGljeSBvYmplY3QgcmVzcG9uc2libGUgZm9yIHZhbGlkYXRpbmcgb3IgY29ycmVjdGluZ1xuICoga2V5cyBpbiBhIHJlZmVyZW5jZSBtYXBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzVmFsaWQ6IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucywgaXNWYWxpZD86IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZCA/PyBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChrZXkubGVuZ3RoID4gMCkgJiYgKCFrZXkuaW5jbHVkZXMoJ3t7JykpICYmICgha2V5LnN0YXJ0c1dpdGgoJz8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIGl0ZW0/OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkKGtleSwgaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKGtleTogc3RyaW5nLCBpdGVtPzogVCwgX29wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoa2V5LCBpdGVtKSA/IHN1Y2NlZWQoa2V5KSA6IGZhaWwoYCR7a2V5fTogaW52YWxpZCBrZXlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVJdGVtcyhpdGVtczogW3N0cmluZywgVF1bXSwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxbc3RyaW5nLCBUXVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoLi4uaXRlbSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKFt2YWxpZCwgaXRlbVsxXV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVNYXAobWFwOiBNYXA8c3RyaW5nLCBUPiwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zKEFycmF5LmZyb20obWFwLmVudHJpZXMoKSksIG9wdGlvbnMpLm9uU3VjY2VzcygodmFsaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXAodmFsaWQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlZml4S2V5UG9saWN5PFQ+IGV4dGVuZHMgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKGtleTogc3RyaW5nLCBfaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKHRoaXMucHJlZml4KSAmJiAoa2V5ICE9PSB0aGlzLnByZWZpeCkgJiYgUmVmZXJlbmNlTWFwS2V5UG9saWN5LmRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBtYWtlVmFsaWQgPSAob3B0aW9ucyA/PyB0aGlzLl9kZWZhdWx0T3B0aW9ucyk/Lm1ha2VWYWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ha2VWYWxpZCAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTWFwT3JSZWNvcmQ8VD4gPSBNYXA8c3RyaW5nLCBUPnxSZWNvcmQ8c3RyaW5nLCBUPjtcblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2ltcGxlSnNvbk1hcEJhc2U8VD4gaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2tleVBvbGljeTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfdmFsdWVzOiBNYXA8c3RyaW5nLCBUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4pIHtcbiAgICAgICAgdmFsdWVzID0gU2ltcGxlSnNvbk1hcEJhc2UuX3RvTWFwKHZhbHVlcykub3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9rZXlQb2xpY3kgPSBrZXlQb2xpY3kgPz8gbmV3IFJlZmVyZW5jZU1hcEtleVBvbGljeSgpO1xuICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLl9rZXlQb2xpY3kudmFsaWRhdGVNYXAodmFsdWVzKS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3RvTWFwPFQ+KHZhbHVlcz86IE1hcE9yUmVjb3JkPFQ+KTogUmVzdWx0PE1hcDxzdHJpbmcsIFQ+PiB7XG4gICAgICAgIGlmICh2YWx1ZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IE1hcDxzdHJpbmcsIFQ+KCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCEodmFsdWVzIGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZFRvTWFwKHZhbHVlcywgKF9rLCB2KSA9PiBzdWNjZWVkKHYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh2YWx1ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZSBpZiBrZXkgYWN0dWFsbHlcbiAgICAgKiBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleVBvbGljeS5pc1ZhbGlkKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+O1xufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgQHNlZSBTaW1wbGVKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSnNvbk1hcE9wdGlvbnMge1xuICAgIGtleVBvbGljeT86IFJlZmVyZW5jZU1hcEtleVBvbGljeTxKc29uVmFsdWU+LFxuICAgIGVkaXRvcj86IEpzb25FZGl0b3IsXG59XG5cbi8qKlxuICogQSBTaW1wbGVKc29uTWFwIHByZXNlbnRzIGEgdmlldyBvZiBhIHNpbXBsZSBtYXAgb2YgQHNlZSBKc29uVmFsdWVcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZUpzb25NYXAgZXh0ZW5kcyBTaW1wbGVKc29uTWFwQmFzZTxKc29uVmFsdWU+IHtcbiAgICBwcm90ZWN0ZWQgX2VkaXRvcj86IEpzb25FZGl0b3I7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zPy5rZXlQb2xpY3kpO1xuICAgICAgICB0aGlzLl9lZGl0b3IgPSBvcHRpb25zPy5lZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFNpbXBsZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgb2JqZWN0c1xuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIFJlY29yZCBvZiB0aGUgQHNlZSBKc29uT2JqZWN0IHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBAc2VlIFNpbXBsZUpzb25NYXBPcHRpb25zIGZvciBpbml0aWFsaXphdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlU2ltcGxlKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKTogUmVzdWx0PFNpbXBsZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFNpbXBsZUpzb25NYXAodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnRleHQgPSBjb250ZXh0ID8/IHRoaXMuX2NvbnRleHQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fdmFsdWVzLmdldChrZXkpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogSlNPTiB2YWx1ZSBub3QgZm91bmRgLCAndW5rbm93bicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9uZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbG9uZSh2YWx1ZTogSnNvblZhbHVlLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGlmICghdGhpcy5fZWRpdG9yKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKc29uRWRpdG9yLmNyZWF0ZSgpO1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQ6IG5lYXJseSBpbXBvc3NpYmxlIHRvIHJlcHJvZHVjZVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChyZXN1bHQubWVzc2FnZSwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9lZGl0b3IgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvci5jbG9uZSh2YWx1ZSwgY29udGV4dCkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgUHJlZml4ZWRKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UHJlZml4T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByZWZpeCBzaG91bGQgYmUgYWRkZWQgYXV0b21hdGljYWxseSBhcyBuZWVkZWQgKGRlZmF1bHQgdHJ1ZSlcbiAgICAgKi9cbiAgICBhZGRQcmVmaXg/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHByZWZpeCB0byBiZSBlbmZvcmNlZFxuICAgICAqL1xuICAgIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgUHJlZml4ZWRKc29uTWFwIGVuZm9yY2VzIGEgc3VwcGxpZWQgcHJlZml4IGZvciBhbGwgY29udGFpbmVkIHZhbHVlcywgb3B0aW9uYWxseVxuICogYWRkaW5nIHRoZSBwcmVmaXggYXMgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpLlxuICovXG5leHBvcnQgY2xhc3MgUHJlZml4ZWRKc29uTWFwIGV4dGVuZHMgU2ltcGxlSnNvbk1hcCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFByZWZpeGVkSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gcHJlZml4IEEgc3RyaW5nIHByZWZpeCB0byBiZSBlbmZvcmNlZCBmb3IgYW5kIGFkZGVkIHRvIGtleSBuYW1lcyBhcyBuZWNlc3NhcnlcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciBSZWNvcmQgb2YgdGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gZWRpdG9yIE9wdGlvbmFsIEBzZWUgSnNvbkVkaXRvciB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeDogc3RyaW5nLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBQcmVmaXhlZEpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIHByZWZpeE9wdGlvbnMgQSBLZXlQcmVmaXhPcHRpb25zIGluZGljYXRpbmcgdGhlIHByZWZpeCB0byBlbmZvcmNlIGFuZCB3aGV0aGVyIHRoYXQgcHJlZml4IHNob3VsZFxuICAgICAqIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgaWYgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpXG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgcmVjb3JkIG9mIHRoZSBAc2VlIEpzb25WYWx1ZSB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIGVkaXRvciBPcHRpb25hbCBAc2VlIEpzb25FZGl0b3IgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXhPcHRpb25zOiBLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeE9wdGlvbnM6IHN0cmluZ3xLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBQcmVmaXhlZEpzb25NYXAodmFsdWVzLCBjb250ZXh0LCB7IGtleVBvbGljeTogdGhpcy5fdG9Qb2xpY3kocHJlZml4T3B0aW9ucyksIGVkaXRvciB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfdG9Qb2xpY3kocHJlZml4T3B0aW9uczogc3RyaW5nfEtleVByZWZpeE9wdGlvbnMpOiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8SnNvblZhbHVlPiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJlZml4T3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMsIHsgbWFrZVZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMucHJlZml4LCB7IG1ha2VWYWxpZDogKHByZWZpeE9wdGlvbnMuYWRkUHJlZml4ICE9PSBmYWxzZSkgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEEgQ29tcG9zaXRlSnNvbk1hcCBwcmVzZW50cyBhIGNvbXBvc2VkIHZpZXcgb2Ygb25lIG9yIG1vcmUgb3RoZXJcbiAqIEpzb25SZWZlcmVuY2VNYXBzLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9zaXRlSnNvbk1hcCBpbXBsZW1lbnRzIEpzb25SZWZlcmVuY2VNYXAge1xuICAgIHByb3RlY3RlZCBfbWFwczogSnNvblJlZmVyZW5jZU1hcFtdO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKG1hcHM6IEpzb25SZWZlcmVuY2VNYXBbXSkge1xuICAgICAgICB0aGlzLl9tYXBzID0gbWFwcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgQ29tcG9zaXRlSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCBtYXBzXG4gICAgICogQHBhcmFtIG1hcHMgb25lIG9yIG1vcmUgb2JqZWN0IG1hcHMgdG8gYmUgY29tcG9zZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pOiBSZXN1bHQ8Q29tcG9zaXRlSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29tcG9zaXRlSnNvbk1hcChtYXBzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIGEga2V5IG1pZ2h0IGJlIHZhbGlkIGZvciB0aGlzIG1hcCBidXQgZG9lcyBub3QgZGV0ZXJtaW5lXG4gICAgICogaWYga2V5IGFjdHVhbGx5IGV4aXN0cy4gQWxsb3dzIGtleSByYW5nZSB0byBiZSBjb25zdHJhaW5lZC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgaXMgaW4gdGhlIHZhbGlkIHJhbmdlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGtleUlzSW5SYW5nZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFjdHVhbGx5IGV4aXN0cyBpbiB0aGUgbWFwLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5oYXMoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgZm9yIChjb25zdCBtYXAgb2YgdGhpcy5fbWFwcykge1xuICAgICAgICAgICAgaWYgKG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG1hcC5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpIHx8IChyZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogdmFsdWUgbm90IGZvdW5kYCwgJ3Vua25vd24nKTtcbiAgICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fgv/ts-json",
3
- "version": "1.4.1",
3
+ "version": "1.8.1",
4
4
  "description": "Typescript utilities for working with JSON",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -24,25 +24,25 @@
24
24
  "author": "Erik Fortune",
25
25
  "license": "MIT",
26
26
  "devDependencies": {
27
- "@fgv/ts-utils-jest": "^1.4.1",
28
- "@types/jest": "^29.2.4",
27
+ "@fgv/ts-utils-jest": "^1.8.1",
28
+ "@types/jest": "^29.2.5",
29
29
  "@types/mustache": "^4.1.0",
30
- "@types/node": "^18.11.13",
31
- "@typescript-eslint/eslint-plugin": "^5.46.0",
32
- "@typescript-eslint/parser": "^5.46.0",
33
- "eslint": "^8.29.0",
30
+ "@types/node": "^18.11.18",
31
+ "@typescript-eslint/eslint-plugin": "^5.48.0",
32
+ "@typescript-eslint/parser": "^5.48.0",
33
+ "eslint": "^8.31.0",
34
34
  "eslint-config-standard": "^17.0.0",
35
35
  "eslint-plugin-import": "^2.22.1",
36
36
  "eslint-plugin-node": "^11.1.0",
37
37
  "eslint-plugin-promise": "^6.1.1",
38
38
  "jest": "^29.3.1",
39
- "jest-extended": "^3.2.0",
39
+ "jest-extended": "^3.2.1",
40
40
  "rimraf": "^3.0.2",
41
41
  "ts-jest": "^29.0.3",
42
42
  "ts-node": "^10.9.1",
43
43
  "typescript": "^4.1.3"
44
44
  },
45
45
  "dependencies": {
46
- "@fgv/ts-utils": "^1.4.1"
46
+ "@fgv/ts-utils": "^1.8.1"
47
47
  }
48
48
  }