tedious 14.6.1 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -279,4 +279,4 @@ var _default = metadataParse;
279
279
  exports.default = _default;
280
280
  module.exports = metadataParse;
281
281
  module.exports.readCollation = readCollation;
282
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFkQ29sbGF0aW9uIiwicGFyc2VyIiwiY2FsbGJhY2siLCJyZWFkQnVmZmVyIiwiY29sbGF0aW9uRGF0YSIsIkNvbGxhdGlvbiIsImZyb21CdWZmZXIiLCJyZWFkU2NoZW1hIiwicmVhZFVJbnQ4Iiwic2NoZW1hUHJlc2VudCIsInJlYWRCVmFyQ2hhciIsImRibmFtZSIsIm93bmluZ1NjaGVtYSIsInJlYWRVc1ZhckNoYXIiLCJ4bWxTY2hlbWFDb2xsZWN0aW9uIiwidW5kZWZpbmVkIiwicmVhZFVEVEluZm8iLCJyZWFkVUludDE2TEUiLCJtYXhCeXRlU2l6ZSIsInR5cGVOYW1lIiwiYXNzZW1ibHlOYW1lIiwibWV0YWRhdGFQYXJzZSIsIm9wdGlvbnMiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiY2FsbCIsInVzZXJUeXBlIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsIm5hbWUiLCJjb2xsYXRpb24iLCJwcmVjaXNpb24iLCJzY2FsZSIsImRhdGFMZW5ndGgiLCJzY2hlbWEiLCJ1ZHRJbmZvIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhZGF0YS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFBhcnNlciBmcm9tICcuL3Rva2VuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyBUWVBFLCBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IENyeXB0b01ldGFkYXRhIH0gZnJvbSAnLi9hbHdheXMtZW5jcnlwdGVkL3R5cGVzJztcblxuaW1wb3J0IHsgc3ByaW50ZiB9IGZyb20gJ3NwcmludGYtanMnO1xuXG5pbnRlcmZhY2UgWG1sU2NoZW1hIHtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB4bWxTY2hlbWFDb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVZHRJbmZvIHtcbiAgbWF4Qnl0ZVNpemU6IG51bWJlcjtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBhc3NlbWJseU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQmFzZU1ldGFkYXRhID0ge1xuICB1c2VyVHlwZTogbnVtYmVyO1xuXG4gIGZsYWdzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29sdW1uJ3MgdHlwZSwgc3VjaCBhcyBWYXJDaGFyLCBJbnQgb3IgQmluYXJ5LlxuICAgKi9cbiAgdHlwZTogRGF0YVR5cGU7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgcHJlY2lzaW9uLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtZXJpYyBhbmQgZGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NhbGUuIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljLCBkZWNpbWFsLCB0aW1lLCBkYXRldGltZTIgYW5kIGRhdGV0aW1lb2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCwgZm9yIGNoYXIsIHZhcmNoYXIsIG52YXJjaGFyIGFuZCB2YXJiaW5hcnkuXG4gICAqL1xuICBkYXRhTGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQ7XG5cbiAgdWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGE7XG59ICYgQmFzZU1ldGFkYXRhO1xuXG5cbmZ1bmN0aW9uIHJlYWRDb2xsYXRpb24ocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAoY29sbGF0aW9uOiBDb2xsYXRpb24pID0+IHZvaWQpIHtcbiAgLy8gczIuMi41LjEuMlxuICBwYXJzZXIucmVhZEJ1ZmZlcig1LCAoY29sbGF0aW9uRGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKENvbGxhdGlvbi5mcm9tQnVmZmVyKGNvbGxhdGlvbkRhdGEpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRTY2hlbWEocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAoc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQpID0+IHZvaWQpIHtcbiAgLy8gczIuMi41LjUuM1xuICBwYXJzZXIucmVhZFVJbnQ4KChzY2hlbWFQcmVzZW50KSA9PiB7XG4gICAgaWYgKHNjaGVtYVByZXNlbnQgPT09IDB4MDEpIHtcbiAgICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKGRibmFtZSkgPT4ge1xuICAgICAgICBwYXJzZXIucmVhZEJWYXJDaGFyKChvd25pbmdTY2hlbWEpID0+IHtcbiAgICAgICAgICBwYXJzZXIucmVhZFVzVmFyQ2hhcigoeG1sU2NoZW1hQ29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICBkYm5hbWU6IGRibmFtZSxcbiAgICAgICAgICAgICAgb3duaW5nU2NoZW1hOiBvd25pbmdTY2hlbWEsXG4gICAgICAgICAgICAgIHhtbFNjaGVtYUNvbGxlY3Rpb246IHhtbFNjaGVtYUNvbGxlY3Rpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRVRFRJbmZvKHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHVkdEluZm86IFVkdEluZm8gfCB1bmRlZmluZWQpID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50MTZMRSgobWF4Qnl0ZVNpemUpID0+IHtcbiAgICBwYXJzZXIucmVhZEJWYXJDaGFyKChkYm5hbWUpID0+IHtcbiAgICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKG93bmluZ1NjaGVtYSkgPT4ge1xuICAgICAgICBwYXJzZXIucmVhZEJWYXJDaGFyKCh0eXBlTmFtZSkgPT4ge1xuICAgICAgICAgIHBhcnNlci5yZWFkVXNWYXJDaGFyKChhc3NlbWJseU5hbWUpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgbWF4Qnl0ZVNpemU6IG1heEJ5dGVTaXplLFxuICAgICAgICAgICAgICBkYm5hbWU6IGRibmFtZSxcbiAgICAgICAgICAgICAgb3duaW5nU2NoZW1hOiBvd25pbmdTY2hlbWEsXG4gICAgICAgICAgICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICAgICAgICAgICAgYXNzZW1ibHlOYW1lOiBhc3NlbWJseU5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWV0YWRhdGFQYXJzZShwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucywgY2FsbGJhY2s6IChtZXRhZGF0YTogTWV0YWRhdGEpID0+IHZvaWQpIHtcbiAgKG9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInID8gcGFyc2VyLnJlYWRVSW50MTZMRSA6IHBhcnNlci5yZWFkVUludDMyTEUpLmNhbGwocGFyc2VyLCAodXNlclR5cGUpID0+IHtcbiAgICBwYXJzZXIucmVhZFVJbnQxNkxFKChmbGFncykgPT4ge1xuICAgICAgcGFyc2VyLnJlYWRVSW50OCgodHlwZU51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB0eXBlOiBEYXRhVHlwZSA9IFRZUEVbdHlwZU51bWJlcl07XG5cbiAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHNwcmludGYoJ1VucmVjb2duaXNlZCBkYXRhIHR5cGUgMHglMDJYJywgdHlwZU51bWJlcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgICBjYXNlICdOdWxsJzpcbiAgICAgICAgICBjYXNlICdUaW55SW50JzpcbiAgICAgICAgICBjYXNlICdTbWFsbEludCc6XG4gICAgICAgICAgY2FzZSAnSW50JzpcbiAgICAgICAgICBjYXNlICdCaWdJbnQnOlxuICAgICAgICAgIGNhc2UgJ1JlYWwnOlxuICAgICAgICAgIGNhc2UgJ0Zsb2F0JzpcbiAgICAgICAgICBjYXNlICdTbWFsbE1vbmV5JzpcbiAgICAgICAgICBjYXNlICdNb25leSc6XG4gICAgICAgICAgY2FzZSAnQml0JzpcbiAgICAgICAgICBjYXNlICdTbWFsbERhdGVUaW1lJzpcbiAgICAgICAgICBjYXNlICdEYXRlVGltZSc6XG4gICAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soe1xuICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnSW50Tic6XG4gICAgICAgICAgY2FzZSAnRmxvYXROJzpcbiAgICAgICAgICBjYXNlICdNb25leU4nOlxuICAgICAgICAgIGNhc2UgJ0JpdE4nOlxuICAgICAgICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgICAgICAgIGNhc2UgJ0RhdGVUaW1lTic6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ1ZhcmlhbnQnOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDMyTEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdWYXJDaGFyJzpcbiAgICAgICAgICBjYXNlICdDaGFyJzpcbiAgICAgICAgICBjYXNlICdOVmFyQ2hhcic6XG4gICAgICAgICAgY2FzZSAnTkNoYXInOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDE2TEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgcmVhZENvbGxhdGlvbihwYXJzZXIsIChjb2xsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgIGNhc2UgJ05UZXh0JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQzMkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIHJlYWRDb2xsYXRpb24ocGFyc2VyLCAoY29sbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogY29sbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgICAgICAgIGNhc2UgJ0JpbmFyeSc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ0ltYWdlJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQzMkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnWG1sJzpcbiAgICAgICAgICAgIHJldHVybiByZWFkU2NoZW1hKHBhcnNlciwgKHNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogc2NoZW1hLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnVGltZSc6XG4gICAgICAgICAgY2FzZSAnRGF0ZVRpbWUyJzpcbiAgICAgICAgICBjYXNlICdEYXRlVGltZU9mZnNldCc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoc2NhbGUpID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2FsZTogc2NhbGUsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnTnVtZXJpY04nOlxuICAgICAgICAgIGNhc2UgJ0RlY2ltYWxOJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIHBhcnNlci5yZWFkVUludDgoKHByZWNpc2lvbikgPT4ge1xuICAgICAgICAgICAgICAgIHBhcnNlci5yZWFkVUludDgoKHNjYWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiBwcmVjaXNpb24sXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdVRFQnOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRVRFRJbmZvKHBhcnNlciwgKHVkdEluZm8pID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1ZHRJbmZvXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHNwcmludGYoJ1VucmVjb2duaXNlZCB0eXBlICVzJywgdHlwZS5uYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWV0YWRhdGFQYXJzZTtcbmV4cG9ydCB7IHJlYWRDb2xsYXRpb24gfTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXRhZGF0YVBhcnNlO1xubW9kdWxlLmV4cG9ydHMucmVhZENvbGxhdGlvbiA9IHJlYWRDb2xsYXRpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBR0E7O0FBR0E7O0FBbURBLFNBQVNBLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQXVDQyxRQUF2QyxFQUFpRjtFQUMvRTtFQUNBRCxNQUFNLENBQUNFLFVBQVAsQ0FBa0IsQ0FBbEIsRUFBc0JDLGFBQUQsSUFBbUI7SUFDdENGLFFBQVEsQ0FBQ0cscUJBQVVDLFVBQVYsQ0FBcUJGLGFBQXJCLENBQUQsQ0FBUjtFQUNELENBRkQ7QUFHRDs7QUFFRCxTQUFTRyxVQUFULENBQW9CTixNQUFwQixFQUFvQ0MsUUFBcEMsRUFBdUY7RUFDckY7RUFDQUQsTUFBTSxDQUFDTyxTQUFQLENBQWtCQyxhQUFELElBQW1CO0lBQ2xDLElBQUlBLGFBQWEsS0FBSyxJQUF0QixFQUE0QjtNQUMxQlIsTUFBTSxDQUFDUyxZQUFQLENBQXFCQyxNQUFELElBQVk7UUFDOUJWLE1BQU0sQ0FBQ1MsWUFBUCxDQUFxQkUsWUFBRCxJQUFrQjtVQUNwQ1gsTUFBTSxDQUFDWSxhQUFQLENBQXNCQyxtQkFBRCxJQUF5QjtZQUM1Q1osUUFBUSxDQUFDO2NBQ1BTLE1BQU0sRUFBRUEsTUFERDtjQUVQQyxZQUFZLEVBQUVBLFlBRlA7Y0FHUEUsbUJBQW1CLEVBQUVBO1lBSGQsQ0FBRCxDQUFSO1VBS0QsQ0FORDtRQU9ELENBUkQ7TUFTRCxDQVZEO0lBV0QsQ0FaRCxNQVlPO01BQ0xaLFFBQVEsQ0FBQ2EsU0FBRCxDQUFSO0lBQ0Q7RUFDRixDQWhCRDtBQWlCRDs7QUFFRCxTQUFTQyxXQUFULENB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
282
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFkQ29sbGF0aW9uIiwicGFyc2VyIiwiY2FsbGJhY2siLCJyZWFkQnVmZmVyIiwiY29sbGF0aW9uRGF0YSIsIkNvbGxhdGlvbiIsImZyb21CdWZmZXIiLCJyZWFkU2NoZW1hIiwicmVhZFVJbnQ4Iiwic2NoZW1hUHJlc2VudCIsInJlYWRCVmFyQ2hhciIsImRibmFtZSIsIm93bmluZ1NjaGVtYSIsInJlYWRVc1ZhckNoYXIiLCJ4bWxTY2hlbWFDb2xsZWN0aW9uIiwidW5kZWZpbmVkIiwicmVhZFVEVEluZm8iLCJyZWFkVUludDE2TEUiLCJtYXhCeXRlU2l6ZSIsInR5cGVOYW1lIiwiYXNzZW1ibHlOYW1lIiwibWV0YWRhdGFQYXJzZSIsIm9wdGlvbnMiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiY2FsbCIsInVzZXJUeXBlIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsIm5hbWUiLCJjb2xsYXRpb24iLCJwcmVjaXNpb24iLCJzY2FsZSIsImRhdGFMZW5ndGgiLCJzY2hlbWEiLCJ1ZHRJbmZvIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhZGF0YS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFBhcnNlciwgeyBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi90b2tlbi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IFRZUEUsIERhdGFUeXBlIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgQ3J5cHRvTWV0YWRhdGEgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuXG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5cbmludGVyZmFjZSBYbWxTY2hlbWEge1xuICBkYm5hbWU6IHN0cmluZztcbiAgb3duaW5nU2NoZW1hOiBzdHJpbmc7XG4gIHhtbFNjaGVtYUNvbGxlY3Rpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFVkdEluZm8ge1xuICBtYXhCeXRlU2l6ZTogbnVtYmVyO1xuICBkYm5hbWU6IHN0cmluZztcbiAgb3duaW5nU2NoZW1hOiBzdHJpbmc7XG4gIHR5cGVOYW1lOiBzdHJpbmc7XG4gIGFzc2VtYmx5TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBCYXNlTWV0YWRhdGEgPSB7XG4gIHVzZXJUeXBlOiBudW1iZXI7XG5cbiAgZmxhZ3M6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBjb2x1bW4ncyB0eXBlLCBzdWNoIGFzIFZhckNoYXIsIEludCBvciBCaW5hcnkuXG4gICAqL1xuICB0eXBlOiBEYXRhVHlwZTtcblxuICBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBwcmVjaXNpb24uIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljIGFuZCBkZWNpbWFsLlxuICAgKi9cbiAgcHJlY2lzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzY2FsZS4gT25seSBhcHBsaWNhYmxlIHRvIG51bWVyaWMsIGRlY2ltYWwsIHRpbWUsIGRhdGV0aW1lMiBhbmQgZGF0ZXRpbWVvZmZzZXQuXG4gICAqL1xuICBzY2FsZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoLCBmb3IgY2hhciwgdmFyY2hhciwgbnZhcmNoYXIgYW5kIHZhcmJpbmFyeS5cbiAgICovXG4gIGRhdGFMZW5ndGg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBzY2hlbWE6IFhtbFNjaGVtYSB8IHVuZGVmaW5lZDtcblxuICB1ZHRJbmZvOiBVZHRJbmZvIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBNZXRhZGF0YSA9IHtcbiAgY3J5cHRvTWV0YWRhdGE/OiBDcnlwdG9NZXRhZGF0YTtcbn0gJiBCYXNlTWV0YWRhdGE7XG5cblxuZnVuY3Rpb24gcmVhZENvbGxhdGlvbihwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6IChjb2xsYXRpb246IENvbGxhdGlvbikgPT4gdm9pZCkge1xuICAvLyBzMi4yLjUuMS4yXG4gIHBhcnNlci5yZWFkQnVmZmVyKDUsIChjb2xsYXRpb25EYXRhKSA9PiB7XG4gICAgY2FsbGJhY2soQ29sbGF0aW9uLmZyb21CdWZmZXIoY29sbGF0aW9uRGF0YSkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZFNjaGVtYShwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6IChzY2hlbWE6IFhtbFNjaGVtYSB8IHVuZGVmaW5lZCkgPT4gdm9pZCkge1xuICAvLyBzMi4yLjUuNS4zXG4gIHBhcnNlci5yZWFkVUludDgoKHNjaGVtYVByZXNlbnQpID0+IHtcbiAgICBpZiAoc2NoZW1hUHJlc2VudCA9PT0gMHgwMSkge1xuICAgICAgcGFyc2VyLnJlYWRCVmFyQ2hhcigoZGJuYW1lKSA9PiB7XG4gICAgICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKG93bmluZ1NjaGVtYSkgPT4ge1xuICAgICAgICAgIHBhcnNlci5yZWFkVXNWYXJDaGFyKCh4bWxTY2hlbWFDb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgIGRibmFtZTogZGJuYW1lLFxuICAgICAgICAgICAgICBvd25pbmdTY2hlbWE6IG93bmluZ1NjaGVtYSxcbiAgICAgICAgICAgICAgeG1sU2NoZW1hQ29sbGVjdGlvbjogeG1sU2NoZW1hQ29sbGVjdGlvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZFVEVEluZm8ocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZCkgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQxNkxFKChtYXhCeXRlU2l6ZSkgPT4ge1xuICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKGRibmFtZSkgPT4ge1xuICAgICAgcGFyc2VyLnJlYWRCVmFyQ2hhcigob3duaW5nU2NoZW1hKSA9PiB7XG4gICAgICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKHR5cGVOYW1lKSA9PiB7XG4gICAgICAgICAgcGFyc2VyLnJlYWRVc1ZhckNoYXIoKGFzc2VtYmx5TmFtZSkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICBtYXhCeXRlU2l6ZTogbWF4Qnl0ZVNpemUsXG4gICAgICAgICAgICAgIGRibmFtZTogZGJuYW1lLFxuICAgICAgICAgICAgICBvd25pbmdTY2hlbWE6IG93bmluZ1NjaGVtYSxcbiAgICAgICAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICAgICAgICBhc3NlbWJseU5hbWU6IGFzc2VtYmx5TmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtZXRhZGF0YVBhcnNlKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gdm9pZCkge1xuICAob3B0aW9ucy50ZHNWZXJzaW9uIDwgJzdfMicgPyBwYXJzZXIucmVhZFVJbnQxNkxFIDogcGFyc2VyLnJlYWRVSW50MzJMRSkuY2FsbChwYXJzZXIsICh1c2VyVHlwZSkgPT4ge1xuICAgIHBhcnNlci5yZWFkVUludDE2TEUoKGZsYWdzKSA9PiB7XG4gICAgICBwYXJzZXIucmVhZFVJbnQ4KCh0eXBlTnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGU6IERhdGFUeXBlID0gVFlQRVt0eXBlTnVtYmVyXTtcblxuICAgICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIGRhdGEgdHlwZSAweCUwMlgnLCB0eXBlTnVtYmVyKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgICAgICAgIGNhc2UgJ051bGwnOlxuICAgICAgICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgICAgICAgIGNhc2UgJ1NtYWxsSW50JzpcbiAgICAgICAgICBjYXNlICdJbnQnOlxuICAgICAgICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgICAgICAgY2FzZSAnUmVhbCc6XG4gICAgICAgICAgY2FzZSAnRmxvYXQnOlxuICAgICAgICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgICAgICAgIGNhc2UgJ01vbmV5JzpcbiAgICAgICAgICBjYXNlICdCaXQnOlxuICAgICAgICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOlxuICAgICAgICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayh7XG4gICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdJbnROJzpcbiAgICAgICAgICBjYXNlICdGbG9hdE4nOlxuICAgICAgICAgIGNhc2UgJ01vbmV5Tic6XG4gICAgICAgICAgY2FzZSAnQml0Tic6XG4gICAgICAgICAgY2FzZSAnVW5pcXVlSWRlbnRpZmllcic6XG4gICAgICAgICAgY2FzZSAnRGF0ZVRpbWVOJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnVmFyaWFudCc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MzJMRSgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgICAgICAgIGNhc2UgJ0NoYXInOlxuICAgICAgICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICAgICAgICBjYXNlICdOQ2hhcic6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICByZWFkQ29sbGF0aW9uKHBhcnNlciwgKGNvbGxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgICBjb2xsYXRpb246IGNvbGxhdGlvbixcbiAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnVGV4dCc6XG4gICAgICAgICAgY2FzZSAnTlRleHQnOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDMyTEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgcmVhZENvbGxhdGlvbihwYXJzZXIsIChjb2xsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ1ZhckJpbmFyeSc6XG4gICAgICAgICAgY2FzZSAnQmluYXJ5JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQxNkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnSW1hZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDMyTEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdYbWwnOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRTY2hlbWEocGFyc2VyLCAoc2NoZW1hKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdUaW1lJzpcbiAgICAgICAgICBjYXNlICdEYXRlVGltZTInOlxuICAgICAgICAgIGNhc2UgJ0RhdGVUaW1lT2Zmc2V0JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChzY2FsZSkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdOdW1lcmljTic6XG4gICAgICAgICAgY2FzZSAnRGVjaW1hbE4nOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgcGFyc2VyLnJlYWRVSW50OCgocHJlY2lzaW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyc2VyLnJlYWRVSW50OCgoc2NhbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ1VEVCc6XG4gICAgICAgICAgICByZXR1cm4gcmVhZFVEVEluZm8ocGFyc2VyLCAodWR0SW5mbykgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVkdEluZm9cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIHR5cGUgJXMnLCB0eXBlLm5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXRhZGF0YVBhcnNlO1xuZXhwb3J0IHsgcmVhZENvbGxhdGlvbiB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1ldGFkYXRhUGFyc2U7XG5tb2R1bGUuZXhwb3J0cy5yZWFkQ29sbGF0aW9uID0gcmVhZENvbGxhdGlvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFHQTs7QUFtREEsU0FBU0EsYUFBVCxDQUF1QkMsTUFBdkIsRUFBdUNDLFFBQXZDLEVBQWlGO0VBQy9FO0VBQ0FELE1BQU0sQ0FBQ0UsVUFBUCxDQUFrQixDQUFsQixFQUFzQkMsYUFBRCxJQUFtQjtJQUN0Q0YsUUFBUSxDQUFDRyxxQkFBVUMsVUFBVixDQUFxQkYsYUFBckIsQ0FBRCxDQUFSO0VBQ0QsQ0FGRDtBQUdEOztBQUVELFNBQVNHLFVBQVQsQ0FBb0JOLE1BQXBCLEVBQW9DQyxRQUFwQyxFQUF1RjtFQUNyRjtFQUNBRCxNQUFNLENBQUNPLFNBQVAsQ0FBa0JDLGFBQUQsSUFBbUI7SUFDbEMsSUFBSUEsYUFBYSxLQUFLLElBQXRCLEVBQTRCO01BQzFCUixNQUFNLENBQUNTLFlBQVAsQ0FBcUJDLE1BQUQsSUFBWTtRQUM5QlYsTUFBTSxDQUFDUyxZQUFQLENBQXFCRSxZQUFELElBQWtCO1VBQ3BDWCxNQUFNLENBQUNZLGFBQVAsQ0FBc0JDLG1CQUFELElBQXlCO1lBQzVDWixRQUFRLENBQUM7Y0FDUFMsTUFBTSxFQUFFQSxNQUREO2NBRVBDLFlBQVksRUFBRUEsWUFGUDtjQUdQRSxtQkFBbUIsRUFBRUE7WUFIZCxDQUFELENBQVI7VUFLRCxDQU5EO1FBT0QsQ0FSRDtNQVNELENBVkQ7SUFXRCxDQVpELE1BWU87TUFDTFosUUFBUSxDQUFDYSxTQUFELENBQVI7SUFDRDtFQUNGLENBaEJEO0FBaUJEOztBQUVELFNBQVNDLFdBQVQsQ0FBcUJmLE1BQXJCLEVBQXFDQyxRQUFyQyxFQUF1RjtFQUNyRkQsTUFBTSxDQUFDZ0IsWUFB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
@@ -11,6 +11,8 @@ var crypto = _interopRequireWildcard(require("crypto"));
11
11
 
12
12
  var _jsbi = _interopRequireDefault(require("jsbi"));
13
13
 
14
+ var _jsMd = _interopRequireDefault(require("js-md4"));
15
+
14
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
17
 
16
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -146,7 +148,7 @@ class NTLMResponsePayload {
146
148
 
147
149
  ntHash(text) {
148
150
  const unicodeString = Buffer.from(text, 'ucs2');
149
- return crypto.createHash('md4').update(unicodeString).digest();
151
+ return Buffer.from(_jsMd.default.arrayBuffer(unicodeString));
150
152
  }
151
153
 
152
154
  hmacMD5(data, key) {
@@ -158,4 +160,4 @@ class NTLMResponsePayload {
158
160
  var _default = NTLMResponsePayload;
159
161
  exports.default = _default;
160
162
  module.exports = NTLMResponsePayload;
161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVExNUmVzcG9uc2VQYXlsb2FkIiwiY29uc3RydWN0b3IiLCJsb2dpbkRhdGEiLCJkYXRhIiwiY3JlYXRlUmVzcG9uc2UiLCJ0b1N0cmluZyIsImluZGVudCIsImNoYWxsZW5nZSIsImNsaWVudF9ub25jZSIsImNyZWF0ZUNsaWVudE5vbmNlIiwibG12MmxlbiIsIm50bG12MmxlbiIsImRvbWFpbiIsInVzZXJuYW1lIiwidXNlck5hbWUiLCJwYXNzd29yZCIsIm50bG1EYXRhIiwibnRsbXBhY2tldCIsInNlcnZlcl9kYXRhIiwidGFyZ2V0Iiwic2VydmVyX25vbmNlIiwibm9uY2UiLCJidWZmZXJMZW5ndGgiLCJsZW5ndGgiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwicG9zaXRpb24iLCJ3cml0ZVN0cmluZyIsIndyaXRlVUludDMyTEUiLCJiYXNlSWR4IiwiZG5JZHgiLCJ1bklkeCIsImwySWR4IiwibnRJZHgiLCJ3cml0ZVVJbnQxNkxFIiwibG12MkRhdGEiLCJsbXYyUmVzcG9uc2UiLCJjb3B5RnJvbSIsImdlblRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsIm50bG1EYXRhQnVmZmVyIiwibnRsbXYyUmVzcG9uc2UiLCJ0aW1lc3RhbXAiLCJjcmVhdGVUaW1lc3RhbXAiLCJCdWZmZXIiLCJhbGxvYyIsIm5pZHgiLCJ3cml0ZVVJbnQ4IiwiTWF0aCIsImNlaWwiLCJyYW5kb20iLCJ1c2VyIiwic2VydmVyTm9uY2UiLCJ0YXJnZXRJbmZvIiwiY2xpZW50Tm9uY2UiLCJteXRpbWUiLCJoYXNoIiwibnR2Mkhhc2giLCJkYXRhTGVuZ3RoIiwiY29weSIsImhtYWNNRDUiLCJ0aW1lIiwidGVudGhzT2ZBTWljcm9zZWNvbmQiLCJKU0JJIiwibXVsdGlwbHkiLCJhZGQiLCJCaWdJbnQiLCJsbyIsInRvTnVtYmVyIiwiYml0d2lzZUFuZCIsImhpIiwic2lnbmVkUmlnaHRTaGlmdCIsInJlc3VsdCIsIm5ld2hhc2giLCJyZXNwb25zZSIsIm50SGFzaCIsImlkZW50aXR5IiwiZnJvbSIsInRvVXBwZXJDYXNlIiwidGV4dCIsInVuaWNvZGVTdHJpbmciLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0Iiwia2V5IiwiY3JlYXRlSG1hYyIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvbnRsbS1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCBKU0JJIGZyb20gJ2pzYmknO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBudGxtcGFja2V0OiB7XG4gICAgdGFyZ2V0OiBCdWZmZXI7XG4gICAgbm9uY2U6IEJ1ZmZlcjtcbiAgfTtcbn1cblxuY2xhc3MgTlRMTVJlc3BvbnNlUGF5bG9hZCB7XG4gIGRhdGE6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3Rvcihsb2dpbkRhdGE6IE9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmNyZWF0ZVJlc3BvbnNlKGxvZ2luRGF0YSk7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiBpbmRlbnQgKyAnTlRMTSBBdXRoJztcbiAgfVxuXG4gIGNyZWF0ZVJlc3BvbnNlKGNoYWxsZW5nZTogT3B0aW9ucykge1xuICAgIGNvbnN0IGNsaWVudF9ub25jZSA9IHRoaXMuY3JlYXRlQ2xpZW50Tm9uY2UoKTtcbiAgICBjb25zdCBsbXYybGVuID0gMjQ7XG4gICAgY29uc3QgbnRsbXYybGVuID0gMTY7XG4gICAgY29uc3QgZG9tYWluID0gY2hhbGxlbmdlLmRvbWFpbjtcbiAgICBjb25zdCB1c2VybmFtZSA9IGNoYWxsZW5nZS51c2VyTmFtZTtcbiAgICBjb25zdCBwYXNzd29yZCA9IGNoYWxsZW5nZS5wYXNzd29yZDtcbiAgICBjb25zdCBudGxtRGF0YSA9IGNoYWxsZW5nZS5udGxtcGFja2V0O1xuICAgIGNvbnN0IHNlcnZlcl9kYXRhID0gbnRsbURhdGEudGFyZ2V0O1xuICAgIGNvbnN0IHNlcnZlcl9ub25jZSA9IG50bG1EYXRhLm5vbmNlO1xuICAgIGNvbnN0IGJ1ZmZlckxlbmd0aCA9IDY0ICsgKGRvbWFpbi5sZW5ndGggKiAyKSArICh1c2VybmFtZS5sZW5ndGggKiAyKSArIGxtdjJsZW4gKyBudGxtdjJsZW4gKyA4ICsgOCArIDggKyA0ICsgc2VydmVyX2RhdGEubGVuZ3RoICsgNDtcbiAgICBjb25zdCBkYXRhID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoYnVmZmVyTGVuZ3RoKTtcbiAgICBkYXRhLnBvc2l0aW9uID0gMDtcbiAgICBkYXRhLndyaXRlU3RyaW5nKCdOVExNU1NQXFx1MDAwMCcsICd1dGY4Jyk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDMpO1xuICAgIGNvbnN0IGJhc2VJZHggPSA2NDtcbiAgICBjb25zdCBkbklkeCA9IGJhc2VJZHg7XG4gICAgY29uc3QgdW5JZHggPSBkbklkeCArIGRvbWFpbi5sZW5ndGggKiAyO1xuICAgIGNvbnN0IGwySWR4ID0gdW5JZHggKyB1c2VybmFtZS5sZW5ndGggKiAyO1xuICAgIGNvbnN0IG50SWR4ID0gbDJJZHggKyBsbXYybGVuO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGwySWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobnRsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobnRsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUobnRJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoZG5JZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSh1c2VybmFtZS5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUodXNlcm5hbWUubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKHVuSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShiYXNlSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShiYXNlSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMHg4MjAxKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMHgwOCk7XG4gICAgZGF0YS53cml0ZVN0cmluZyhkb21haW4sICd1Y3MyJyk7XG4gICAgZGF0YS53cml0ZVN0cmluZyh1c2VybmFtZSwgJ3VjczInKTtcbiAgICBjb25zdCBsbXYyRGF0YSA9IHRoaXMubG12MlJlc3BvbnNlKGRvbWFpbiwgdXNlcm5hbWUsIHBhc3N3b3JkLCBzZXJ2ZXJfbm9uY2UsIGNsaWVudF9ub25jZSk7XG4gICAgZGF0YS5jb3B5RnJvbShsbXYyRGF0YSk7XG4gICAgY29uc3QgZ2VuVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG50bG1EYXRhQnVmZmVyID0gdGhpcy5udGxtdjJSZXNwb25zZShkb21haW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX25vbmNlLCBzZXJ2ZXJfZGF0YSwgY2xpZW50X25vbmNlLCBnZW5UaW1lKTtcbiAgICBkYXRhLmNvcHlGcm9tKG50bG1EYXRhQnVmZmVyKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMTAxKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSB0aGlzLmNyZWF0ZVRpbWVzdGFtcChnZW5UaW1lKTtcbiAgICBkYXRhLmNvcHlGcm9tKHRpbWVzdGFtcCk7XG4gICAgZGF0YS5jb3B5RnJvbShjbGllbnRfbm9uY2UpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAwMDApO1xuICAgIGRhdGEuY29weUZyb20oc2VydmVyX2RhdGEpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAwMDApO1xuICAgIHJldHVybiBkYXRhLmRhdGE7XG4gIH1cblxuICBjcmVhdGVDbGllbnROb25jZSgpIHtcbiAgICBjb25zdCBjbGllbnRfbm9uY2UgPSBCdWZmZXIuYWxsb2MoOCwgMCk7XG4gICAgbGV0IG5pZHggPSAwO1xuICAgIHdoaWxlIChuaWR4IDwgOCkge1xuICAgICAgY2xpZW50X25vbmNlLndyaXRlVUludDgoTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyNTUpLCBuaWR4KTtcbiAgICAgIG5pZHgrKztcbiAgICB9XG4gICAgcmV0dXJuIGNsaWVudF9ub25jZTtcbiAgfVxuXG4gIG50bG12MlJlc3BvbnNlKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNlcnZlck5vbmNlOiBCdWZmZXIsIHRhcmdldEluZm86IEJ1ZmZlciwgY2xpZW50Tm9uY2U6IEJ1ZmZlciwgbXl0aW1lOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSB0aGlzLmNyZWF0ZVRpbWVzdGFtcChteXRpbWUpO1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50djJIYXNoKGRvbWFpbiwgdXNlciwgcGFzc3dvcmQpO1xuICAgIGNvbnN0IGRhdGFMZW5ndGggPSA0MCArIHRhcmdldEluZm8ubGVuZ3RoO1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoZGF0YUxlbmd0aCwgMCk7XG4gICAgc2VydmVyTm9uY2UuY29weShkYXRhLCAwLCAwLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgxMDEsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDEyKTtcbiAgICB0aW1lc3RhbXAuY29weShkYXRhLCAxNiwgMCwgOCk7XG4gICAgY2xpZW50Tm9uY2UuY29weShkYXRhLCAyNCwgMCwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMzIpO1xuICAgIHRhcmdldEluZm8uY29weShkYXRhLCAzNiwgMCwgdGFyZ2V0SW5mby5sZW5ndGgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDM2ICsgdGFyZ2V0SW5mby5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLmhtYWNNRDUoZGF0YSwgaGFzaCk7XG4gIH1cblxuICBjcmVhdGVUaW1lc3RhbXAodGltZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdGVudGhzT2ZBTWljcm9zZWNvbmQgPSBKU0JJLm11bHRpcGx5KEpTQkkuYWRkKEpTQkkuQmlnSW50KHRpbWUpLCBKU0JJLkJpZ0ludCgxMTY0NDQ3MzYwMCkpLCBKU0JJLkJpZ0ludCgxMDAwMDAwMCkpO1xuXG4gICAgY29uc3QgbG8gPSBKU0JJLnRvTnVtYmVyKEpTQkkuYml0d2lzZUFuZCh0ZW50aHNPZkFNaWNyb3NlY29uZCwgSlNCSS5CaWdJbnQoMHhmZmZmZmZmZikpKTtcbiAgICBjb25zdCBoaSA9IEpTQkkudG9OdW1iZXIoSlNCSS5iaXR3aXNlQW5kKEpTQkkuc2lnbmVkUmlnaHRTaGlmdCh0ZW50aHNPZkFNaWNyb3NlY29uZCwgSlNCSS5CaWdJbnQoMzIpKSwgSlNCSS5CaWdJbnQoMHhmZmZmZmZmZikpKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShsbywgMCk7XG4gICAgcmVzdWx0LndyaXRlVUludDMyTEUoaGksIDQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBsbXYyUmVzcG9uc2UoZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc2VydmVyTm9uY2U6IEJ1ZmZlciwgY2xpZW50Tm9uY2U6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50djJIYXNoKGRvbWFpbiwgdXNlciwgcGFzc3dvcmQpO1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2Moc2VydmVyTm9uY2UubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShkYXRhLCBzZXJ2ZXJOb25jZS5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICBjb25zdCBuZXdoYXNoID0gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gQnVmZmVyLmFsbG9jKG5ld2hhc2gubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIG5ld2hhc2guY29weShyZXNwb25zZSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShyZXNwb25zZSwgbmV3aGFzaC5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBudHYySGFzaChkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnRIYXNoKHBhc3N3b3JkKTtcbiAgICBjb25zdCBpZGVudGl0eSA9IEJ1ZmZlci5mcm9tKHVzZXIudG9VcHBlckNhc2UoKSArIGRvbWFpbi50b1VwcGVyQ2FzZSgpLCAndWNzMicpO1xuICAgIHJldHVybiB0aGlzLmhtYWNNRDUoaWRlbnRpdHksIGhhc2gpO1xuICB9XG5cbiAgbnRIYXNoKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaWNvZGVTdHJpbmcgPSBCdWZmZXIuZnJvbSh0ZXh0LCAndWNzMicpO1xuICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ0JykudXBkYXRlKHVuaWNvZGVTdHJpbmcpLmRpZ2VzdCgpO1xuICB9XG5cbiAgaG1hY01ENShkYXRhOiBCdWZmZXIsIGtleTogQnVmZmVyKSB7XG4gICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIbWFjKCdNRDUnLCBrZXkpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOVExNUmVzcG9uc2VQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBOVExNUmVzcG9uc2VQYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBWUEsTUFBTUEsbUJBQU4sQ0FBMEI7RUFHeEJDLFdBQVcsQ0FBQ0MsU0FBRCxFQUFxQjtJQUFBLEtBRmhDQyxJQUVnQztJQUM5QixLQUFLQSxJQUFMLEdBQVksS0FBS0MsY0FBTCxDQUFvQkYsU0FBcEIsQ0FBWjtFQUNEOztFQUVERyxRQUFRLENBQUNDLE1BQU0sR0FBRyxFQUFWLEVBQWM7SUFDcEIsT0FBT0EsTUFBTSxHQUFHLFdBQWhCO0VBQ0Q7O0VBRURGLGNBQWMsQ0FBQ0csU0FBRCxFQUFxQjtJQUNqQyxNQUFNQyxZQUFZLEdBQUcsS0FBS0MsaUJBQUwsRUFBckI7SUFDQSxNQUFNQyxPQUFPLEdBQUcsRUFBaEI7SUFDQSxNQUFNQyxTQUFTLEdBQUcsRUFBbEI7SUFDQSxNQUFNQyxNQUFNLEdBQUdMLFNBQVMsQ0FBQ0ssTUFBekI7SUFDQSxNQUFNQyxRQUFRLEdBQUdOLFNBQVMsQ0FBQ08sUUFBM0I7SUFDQSxNQUFNQyxRQUFRLEdBQUdSLFNBQVMsQ0FBQ1EsUUFBM0I7SUFDQSxNQUFNQyxRQUFRLEdBQUdULFNBQVMsQ0FBQ1UsVUFBM0I7SUFDQSxNQUFNQyxXQUFXLEdBQUdGLFFBQVEsQ0FBQ0csTUFBN0I7SUFDQSxNQUFNQyxZQUFZLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBOUI7SUFDQSxNQUFNQyxZQUFZLEdBQUcsS0FBTVYsTUFBTSxDQUFDVyxN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
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVExNUmVzcG9uc2VQYXlsb2FkIiwiY29uc3RydWN0b3IiLCJsb2dpbkRhdGEiLCJkYXRhIiwiY3JlYXRlUmVzcG9uc2UiLCJ0b1N0cmluZyIsImluZGVudCIsImNoYWxsZW5nZSIsImNsaWVudF9ub25jZSIsImNyZWF0ZUNsaWVudE5vbmNlIiwibG12MmxlbiIsIm50bG12MmxlbiIsImRvbWFpbiIsInVzZXJuYW1lIiwidXNlck5hbWUiLCJwYXNzd29yZCIsIm50bG1EYXRhIiwibnRsbXBhY2tldCIsInNlcnZlcl9kYXRhIiwidGFyZ2V0Iiwic2VydmVyX25vbmNlIiwibm9uY2UiLCJidWZmZXJMZW5ndGgiLCJsZW5ndGgiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwicG9zaXRpb24iLCJ3cml0ZVN0cmluZyIsIndyaXRlVUludDMyTEUiLCJiYXNlSWR4IiwiZG5JZHgiLCJ1bklkeCIsImwySWR4IiwibnRJZHgiLCJ3cml0ZVVJbnQxNkxFIiwibG12MkRhdGEiLCJsbXYyUmVzcG9uc2UiLCJjb3B5RnJvbSIsImdlblRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsIm50bG1EYXRhQnVmZmVyIiwibnRsbXYyUmVzcG9uc2UiLCJ0aW1lc3RhbXAiLCJjcmVhdGVUaW1lc3RhbXAiLCJCdWZmZXIiLCJhbGxvYyIsIm5pZHgiLCJ3cml0ZVVJbnQ4IiwiTWF0aCIsImNlaWwiLCJyYW5kb20iLCJ1c2VyIiwic2VydmVyTm9uY2UiLCJ0YXJnZXRJbmZvIiwiY2xpZW50Tm9uY2UiLCJteXRpbWUiLCJoYXNoIiwibnR2Mkhhc2giLCJkYXRhTGVuZ3RoIiwiY29weSIsImhtYWNNRDUiLCJ0aW1lIiwidGVudGhzT2ZBTWljcm9zZWNvbmQiLCJKU0JJIiwibXVsdGlwbHkiLCJhZGQiLCJCaWdJbnQiLCJsbyIsInRvTnVtYmVyIiwiYml0d2lzZUFuZCIsImhpIiwic2lnbmVkUmlnaHRTaGlmdCIsInJlc3VsdCIsIm5ld2hhc2giLCJyZXNwb25zZSIsIm50SGFzaCIsImlkZW50aXR5IiwiZnJvbSIsInRvVXBwZXJDYXNlIiwidGV4dCIsInVuaWNvZGVTdHJpbmciLCJtZDQiLCJhcnJheUJ1ZmZlciIsImtleSIsImNyeXB0byIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJkaWdlc3QiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL250bG0tcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgSlNCSSBmcm9tICdqc2JpJztcbmltcG9ydCBtZDQgZnJvbSAnanMtbWQ0JztcblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBkb21haW46IHN0cmluZztcbiAgdXNlck5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgbnRsbXBhY2tldDoge1xuICAgIHRhcmdldDogQnVmZmVyO1xuICAgIG5vbmNlOiBCdWZmZXI7XG4gIH07XG59XG5cbmNsYXNzIE5UTE1SZXNwb25zZVBheWxvYWQge1xuICBkYXRhOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobG9naW5EYXRhOiBPcHRpb25zKSB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jcmVhdGVSZXNwb25zZShsb2dpbkRhdGEpO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gaW5kZW50ICsgJ05UTE0gQXV0aCc7XG4gIH1cblxuICBjcmVhdGVSZXNwb25zZShjaGFsbGVuZ2U6IE9wdGlvbnMpIHtcbiAgICBjb25zdCBjbGllbnRfbm9uY2UgPSB0aGlzLmNyZWF0ZUNsaWVudE5vbmNlKCk7XG4gICAgY29uc3QgbG12MmxlbiA9IDI0O1xuICAgIGNvbnN0IG50bG12MmxlbiA9IDE2O1xuICAgIGNvbnN0IGRvbWFpbiA9IGNoYWxsZW5nZS5kb21haW47XG4gICAgY29uc3QgdXNlcm5hbWUgPSBjaGFsbGVuZ2UudXNlck5hbWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjaGFsbGVuZ2UucGFzc3dvcmQ7XG4gICAgY29uc3QgbnRsbURhdGEgPSBjaGFsbGVuZ2UubnRsbXBhY2tldDtcbiAgICBjb25zdCBzZXJ2ZXJfZGF0YSA9IG50bG1EYXRhLnRhcmdldDtcbiAgICBjb25zdCBzZXJ2ZXJfbm9uY2UgPSBudGxtRGF0YS5ub25jZTtcbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSA2NCArIChkb21haW4ubGVuZ3RoICogMikgKyAodXNlcm5hbWUubGVuZ3RoICogMikgKyBsbXYybGVuICsgbnRsbXYybGVuICsgOCArIDggKyA4ICsgNCArIHNlcnZlcl9kYXRhLmxlbmd0aCArIDQ7XG4gICAgY29uc3QgZGF0YSA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKGJ1ZmZlckxlbmd0aCk7XG4gICAgZGF0YS5wb3NpdGlvbiA9IDA7XG4gICAgZGF0YS53cml0ZVN0cmluZygnTlRMTVNTUFxcdTAwMDAnLCAndXRmOCcpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAzKTtcbiAgICBjb25zdCBiYXNlSWR4ID0gNjQ7XG4gICAgY29uc3QgZG5JZHggPSBiYXNlSWR4O1xuICAgIGNvbnN0IHVuSWR4ID0gZG5JZHggKyBkb21haW4ubGVuZ3RoICogMjtcbiAgICBjb25zdCBsMklkeCA9IHVuSWR4ICsgdXNlcm5hbWUubGVuZ3RoICogMjtcbiAgICBjb25zdCBudElkeCA9IGwySWR4ICsgbG12MmxlbjtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShsMklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKG50SWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGRuSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUodXNlcm5hbWUubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSh1bklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4ODIwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4MDgpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoZG9tYWluLCAndWNzMicpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcodXNlcm5hbWUsICd1Y3MyJyk7XG4gICAgY29uc3QgbG12MkRhdGEgPSB0aGlzLmxtdjJSZXNwb25zZShkb21haW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX25vbmNlLCBjbGllbnRfbm9uY2UpO1xuICAgIGRhdGEuY29weUZyb20obG12MkRhdGEpO1xuICAgIGNvbnN0IGdlblRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBudGxtRGF0YUJ1ZmZlciA9IHRoaXMubnRsbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgc2VydmVyX2RhdGEsIGNsaWVudF9ub25jZSwgZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbShudGxtRGF0YUJ1ZmZlcik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDEwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAoZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbSh0aW1lc3RhbXApO1xuICAgIGRhdGEuY29weUZyb20oY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICBkYXRhLmNvcHlGcm9tKHNlcnZlcl9kYXRhKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICByZXR1cm4gZGF0YS5kYXRhO1xuICB9XG5cbiAgY3JlYXRlQ2xpZW50Tm9uY2UoKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gQnVmZmVyLmFsbG9jKDgsIDApO1xuICAgIGxldCBuaWR4ID0gMDtcbiAgICB3aGlsZSAobmlkeCA8IDgpIHtcbiAgICAgIGNsaWVudF9ub25jZS53cml0ZVVJbnQ4KE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjU1KSwgbmlkeCk7XG4gICAgICBuaWR4Kys7XG4gICAgfVxuICAgIHJldHVybiBjbGllbnRfbm9uY2U7XG4gIH1cblxuICBudGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCB0YXJnZXRJbmZvOiBCdWZmZXIsIGNsaWVudE5vbmNlOiBCdWZmZXIsIG15dGltZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAobXl0aW1lKTtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udHYySGFzaChkb21haW4sIHVzZXIsIHBhc3N3b3JkKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gNDAgKyB0YXJnZXRJbmZvLmxlbmd0aDtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKGRhdGFMZW5ndGgsIDApO1xuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSwgMCwgMCwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MTAxLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAxMik7XG4gICAgdGltZXN0YW1wLmNvcHkoZGF0YSwgMTYsIDAsIDgpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkoZGF0YSwgMjQsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDMyKTtcbiAgICB0YXJnZXRJbmZvLmNvcHkoZGF0YSwgMzYsIDAsIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzNiArIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICB9XG5cbiAgY3JlYXRlVGltZXN0YW1wKHRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRlbnRoc09mQU1pY3Jvc2Vjb25kID0gSlNCSS5tdWx0aXBseShKU0JJLmFkZChKU0JJLkJpZ0ludCh0aW1lKSwgSlNCSS5CaWdJbnQoMTE2NDQ0NzM2MDApKSwgSlNCSS5CaWdJbnQoMTAwMDAwMDApKTtcblxuICAgIGNvbnN0IGxvID0gSlNCSS50b051bWJlcihKU0JJLmJpdHdpc2VBbmQodGVudGhzT2ZBTWljcm9zZWNvbmQsIEpTQkkuQmlnSW50KDB4ZmZmZmZmZmYpKSk7XG4gICAgY29uc3QgaGkgPSBKU0JJLnRvTnVtYmVyKEpTQkkuYml0d2lzZUFuZChKU0JJLnNpZ25lZFJpZ2h0U2hpZnQodGVudGhzT2ZBTWljcm9zZWNvbmQsIEpTQkkuQmlnSW50KDMyKSksIEpTQkkuQmlnSW50KDB4ZmZmZmZmZmYpKSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBCdWZmZXIuYWxsb2MoOCk7XG4gICAgcmVzdWx0LndyaXRlVUludDMyTEUobG8sIDApO1xuICAgIHJlc3VsdC53cml0ZVVJbnQzMkxFKGhpLCA0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbG12MlJlc3BvbnNlKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNlcnZlck5vbmNlOiBCdWZmZXIsIGNsaWVudE5vbmNlOiBCdWZmZXIpIHtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udHYySGFzaChkb21haW4sIHVzZXIsIHBhc3N3b3JkKTtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKHNlcnZlck5vbmNlLmxlbmd0aCArIGNsaWVudE5vbmNlLmxlbmd0aCwgMCk7XG5cbiAgICBzZXJ2ZXJOb25jZS5jb3B5KGRhdGEpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkoZGF0YSwgc2VydmVyTm9uY2UubGVuZ3RoLCAwLCBjbGllbnROb25jZS5sZW5ndGgpO1xuXG4gICAgY29uc3QgbmV3aGFzaCA9IHRoaXMuaG1hY01ENShkYXRhLCBoYXNoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IEJ1ZmZlci5hbGxvYyhuZXdoYXNoLmxlbmd0aCArIGNsaWVudE5vbmNlLmxlbmd0aCwgMCk7XG5cbiAgICBuZXdoYXNoLmNvcHkocmVzcG9uc2UpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkocmVzcG9uc2UsIG5ld2hhc2gubGVuZ3RoLCAwLCBjbGllbnROb25jZS5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgbnR2Mkhhc2goZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50SGFzaChwYXNzd29yZCk7XG4gICAgY29uc3QgaWRlbnRpdHkgPSBCdWZmZXIuZnJvbSh1c2VyLnRvVXBwZXJDYXNlKCkgKyBkb21haW4udG9VcHBlckNhc2UoKSwgJ3VjczInKTtcbiAgICByZXR1cm4gdGhpcy5obWFjTUQ1KGlkZW50aXR5LCBoYXNoKTtcbiAgfVxuXG4gIG50SGFzaCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCB1bmljb2RlU3RyaW5nID0gQnVmZmVyLmZyb20odGV4dCwgJ3VjczInKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20obWQ0LmFycmF5QnVmZmVyKHVuaWNvZGVTdHJpbmcpKTtcbiAgfVxuXG4gIGhtYWNNRDUoZGF0YTogQnVmZmVyLCBrZXk6IEJ1ZmZlcikge1xuICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSG1hYygnTUQ1Jywga2V5KS51cGRhdGUoZGF0YSkuZGlnZXN0KCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTlRMTVJlc3BvbnNlUGF5bG9hZDtcbm1vZHVsZS5leHBvcnRzID0gTlRMTVJlc3BvbnNlUGF5bG9hZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQVlBLE1BQU1BLG1CQUFOLENBQTBCO0VBR3hCQyxXQUFXLENBQUNDLFNBQUQsRUFBcUI7SUFBQSxLQUZoQ0MsSUFFZ0M7SUFDOUIsS0FBS0EsSUFBTCxHQUFZLEtBQUtDLGNBQUwsQ0FBb0JGLFNBQXBCLENBQVo7RUFDRDs7RUFFREcsUUFBUSxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0lBQ3BCLE9BQU9BLE1BQU0sR0FBRyxXQUFoQjtFQUNEOztFQUVERixjQUFjLENBQUNHLFNBQUQsRUFBcUI7SUFDakMsTUFBTUMsWUFBWSxHQUFHLEtBQUtDLGlCQUFMLEVBQXJCO0lBQ0EsTUFBTUMsT0FBTyxHQUFHLEVBQWhCO0lBQ0EsTUFBTUMsU0FBUyxHQUFHLEVBQWxCO0lBQ0EsTUFBTUMsTUFBTSxHQUFHTCxTQUFTLENBQUNLLE1BQXpCO0lBQ0EsTUFBTUMsUUFBUSxHQUFHTixTQUFTLENBQUNPLFFBQTNCO0lBQ0EsTUFBTUMsUUFBUSxHQUFHUixTQUFTLENBQUNRLFFBQTNCO0lBQ0EsTUFBTUMsUUFBUSxHQUFHVCxTQUFTLENBQUNVLFVBQTNCO0lBQ0EsTUFBTUMsV0FBVyxHQUFHRixRQUFRLENBQUNHLE1BQTdCO0lBQ0EsTUFBTUMsWUFBWSxHQUFHSixRQUFRLENBQUNLLEtBQTlCO0lBQ0EsTUFBTUMs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
package/lib/request.js CHANGED
@@ -231,7 +231,7 @@ class Request extends _events.EventEmitter {
231
231
  length,
232
232
  precision,
233
233
  scale
234
- } = options !== null && options !== void 0 ? options : {};
234
+ } = options ?? {};
235
235
  const parameter = {
236
236
  type: type,
237
237
  name: name,
@@ -367,4 +367,4 @@ class Request extends _events.EventEmitter {
367
367
  var _default = Request;
368
368
  exports.default = _default;
369
369
  module.exports = Request;
370
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXF1ZXN0IiwiRXZlbnRFbWl0dGVyIiwib24iLCJldmVudCIsImxpc3RlbmVyIiwiZW1pdCIsImFyZ3MiLCJjb25zdHJ1Y3RvciIsInNxbFRleHRPclByb2NlZHVyZSIsImNhbGxiYWNrIiwib3B0aW9ucyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzQnlOYW1lIiwicHJlcGFyaW5nIiwiY2FuY2VsZWQiLCJwYXVzZWQiLCJ1c2VyQ2FsbGJhY2siLCJoYW5kbGUiLCJlcnJvciIsImNvbm5lY3Rpb24iLCJ0aW1lb3V0Iiwicm93cyIsInJzdCIsInJvd0NvdW50Iiwic2hvdWxkSG9ub3JBRSIsInN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIiwiY3J5cHRvTWV0YWRhdGFMb2FkZWQiLCJ1bmRlZmluZWQiLCJTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyIsIlVzZUNvbm5lY3Rpb25TZXR0aW5nIiwiZXJyIiwiYWRkUGFyYW1ldGVyIiwibmFtZSIsInR5cGUiLCJ2YWx1ZSIsIm91dHB1dCIsImxlbmd0aCIsInByZWNpc2lvbiIsInNjYWxlIiwicGFyYW1ldGVyIiwicHVzaCIsImFkZE91dHB1dFBhcmFtZXRlciIsIm1ha2VQYXJhbXNQYXJhbWV0ZXIiLCJwYXJhbXNQYXJhbWV0ZXIiLCJpIiwibGVuIiwiZGVjbGFyYXRpb24iLCJ2YWxpZGF0ZVBhcmFtZXRlcnMiLCJjb2xsYXRpb24iLCJ2YWxpZGF0ZSIsIlJlcXVlc3RFcnJvciIsIm1lc3NhZ2UiLCJwYXVzZSIsInJlc3VtZSIsImNhbmNlbCIsInNldFRpbWVvdXQiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IFBhcmFtZXRlciwgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCBDb25uZWN0aW9uIGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4vbWV0YWRhdGEtcGFyc2VyJztcbmltcG9ydCB7IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIH0gZnJvbSAnLi9hbHdheXMtZW5jcnlwdGVkL3R5cGVzJztcbmltcG9ydCB7IENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi90b2tlbi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG4vKipcbiAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBoYXMgY29tcGxldGVkLCBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gKiBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgc3RhdGVtZW50KHMpLCB0aGVuIGBlcnJgIHdpbGwgZGVzY3JpYmUgdGhlIGVycm9yLlxuICpcbiAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gKiBiZSBpbml0aWF0ZWQgdW50aWwgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3JlIGByZXF1ZXN0Q29tcGxldGVkYCBpcyBlbWl0dGVkLlxuICovXG50eXBlIENvbXBsZXRpb25DYWxsYmFjayA9XG4gIC8qKlxuICAgKiBAcGFyYW0gZXJyb3JcbiAgICogICBJZiBhbiBlcnJvciBvY2N1cmVkLCBhbiBlcnJvciBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSByb3dDb3VudFxuICAgKiAgIFRoZSBudW1iZXIgb2Ygcm93cyBlbWl0dGVkIGFzIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzXG4gICAqICAgUm93cyBhcyBhIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAqICAgV2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBpZiBbW0Nvbm5lY3Rpb25PcHRpb25zLnJvd0NvbGxlY3Rpb25PblJlcXVlc3RDb21wbGV0aW9uXV0gaXMgYHRydWVgLlxuICAgKi9cbiAgLy8gVE9ETzogRmlndXJlIG91dCBob3cgdG8gdHlwZSB0aGUgYHJvd3NgIHBhcmFtZXRlciBoZXJlLlxuICAoZXJyb3I6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgcm93Q291bnQ/OiBudW1iZXIsIHJvd3M/OiBhbnkpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyT3B0aW9ucyB7XG4gIG91dHB1dD86IGJvb2xlYW47XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlcXVlc3RPcHRpb25zIHtcbiAgc3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmc/OiBTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZztcbn1cblxuLyoqXG4gKiBgYGBqc1xuICogY29uc3QgeyBSZXF1ZXN0IH0gPSByZXF1aXJlKCd0ZWRpb3VzJyk7XG4gKiBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoXCJzZWxlY3QgNDIsICdoZWxsbyB3b3JsZCdcIiwgKGVyciwgcm93Q291bnQpIHtcbiAqICAgLy8gUmVxdWVzdCBjb21wbGV0aW9uIGNhbGxiYWNrLi4uXG4gKiB9KTtcbiAqIGNvbm5lY3Rpb24uZXhlY1NxbChyZXF1ZXN0KTtcbiAqIGBgYFxuICovXG5jbGFzcyBSZXF1ZXN0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzcWxUZXh0T3JQcm9jZWR1cmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJbXTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwYXJhbWV0ZXJzQnlOYW1lOiB7IFtrZXk6IHN0cmluZ106IFBhcmFtZXRlciB9O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByZXBhcmluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjYW5jZWxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwYXVzZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdXNlckNhbGxiYWNrOiBDb21wbGV0aW9uQ2FsbGJhY2s7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcm93cz86IEFycmF5PGFueT47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcnN0PzogQXJyYXk8YW55PjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByb3dDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNhbGxiYWNrOiBDb21wbGV0aW9uQ2FsbGJhY2s7XG5cblxuICBzaG91bGRIb25vckFFPzogYm9vbGVhbjtcbiAgc3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmc6IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nO1xuICBjcnlwdG9NZXRhZGF0YUxvYWRlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBldmVudCwgZGVzY3JpYmluZyByZXN1bHQgc2V0IGNvbHVtbnMsIHdpbGwgYmUgZW1pdHRlZCBiZWZvcmUgcm93XG4gICAqIGV2ZW50cyBhcmUgZW1pdHRlZC4gVGhpcyBldmVudCBtYXkgYmUgZW1pdGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gbW9yZVxuICAgKiB0aGFuIG9uZSByZWNvcmRzZXQgaXMgcHJvZHVjZWQgYnkgdGhlIHN0YXRlbWVudC5cbiAgICpcbiAgICogQW4gYXJyYXkgbGlrZSBvYmplY3QsIHdoZXJlIHRoZSBjb2x1bW5zIGNhbiBiZSBhY2Nlc3NlZCBlaXRoZXIgYnkgaW5kZXhcbiAgICogb3IgbmFtZS4gQ29sdW1ucyB3aXRoIGEgbmFtZSB0aGF0IGlzIGFuIGludGVnZXIgYXJlIG5vdCBhY2Nlc3NpYmxlIGJ5IG5hbWUsXG4gICAqIGFzIGl0IHdvdWxkIGJlIGludGVycHJldGVkIGFzIGFuIGFycmF5IGluZGV4LlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdjb2x1bW5NZXRhZGF0YScsXG4gICAgbGlzdGVuZXI6XG4gICAgKGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10gfCB7IFtrZXk6IHN0cmluZ106IENvbHVtbk1ldGFkYXRhIH0pID0+IHZvaWRcbiAgKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdCBoYXMgYmVlbiBwcmVwYXJlZCBhbmQgY2FuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCBjYWxscyB0byBleGVjdXRlIGFuZCB1bnByZXBhcmUuXG4gICAqL1xuICBvbihldmVudDogJ3ByZXBhcmVkJywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSByZXF1ZXN0IGVuY291bnRlcmVkIGFuIGVycm9yIGFuZCBoYXMgbm90IGJlZW4gcHJlcGFyZWQuXG4gICAqL1xuICBvbihldmVudDogJ2Vycm9yJywgbGlzdGVuZXI6IChlcnI6IEVycm9yKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBBIHJvdyByZXN1bHRpbmcgZnJvbSBleGVjdXRpb24gb2YgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ3JvdycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEFuIGFycmF5IG9yIG9iamVjdCAoZGVwZW5kcyBvbiBbW0Nvbm5lY3Rpb25PcHRpb25zLnVzZUNvbHVtbk5hbWVzXV0pLCB3aGVyZSB0aGUgY29sdW1ucyBjYW4gYmUgYWNjZXNzZWQgYnkgaW5kZXgvbmFtZS5cbiAgICAgICAqIEVhY2ggY29sdW1uIGhhcyB0d28gcHJvcGVydGllcywgYG1ldGFkYXRhYCBhbmQgYHZhbHVlYO+8mlxuICAgICAgICpcbiAgICAgICAqICogYG1ldGFkYXRhYFxuICAgICAgICpcbiAgICAgICAqICAgIFRoZSBzYW1lIGRhdGEgdGhhdCBpcyBleHBvc2VkIGluIHRoZSBgY29sdW1uTWV0YWRhdGFgIGV2ZW50LlxuICAgICAgICpcbiAgICAgICAqICogYHZhbHVlYFxuICAgICAgICpcbiAgICAgICAqICAgIFRoZSBjb2x1bW4ncyB2YWx1ZS4gSXQgd2lsbCBiZSBgbnVsbGAgZm9yIGEgYE5VTExgLlxuICAgICAgICogICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvbHVtbnMgd2l0aCB0aGUgc2FtZSBuYW1lLCB0aGVuIHRoaXMgd2lsbCBiZSBhbiBhcnJheSBvZiB0aGUgdmFsdWVzLlxuICAgICAgICovXG4gICAgICAoY29sdW1uczogYW55KSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogQWxsIHJvd3MgZnJvbSBhIHJlc3VsdCBzZXQgaGF2ZSBiZWVuIHByb3ZpZGVkICh0aHJvdWdoIGByb3dgIGV2ZW50cykuXG4gICAqXG4gICAqIFRoaXMgdG9rZW4gaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgY29tcGxldGlvbiBvZiBhIFNRTCBzdGF0ZW1lbnQuXG4gICAqIEFzIG11bHRpcGxlIFNRTCBzdGF0ZW1lbnRzIGNhbiBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgaW4gYSBzaW5nbGUgU1FMIGJhdGNoLCBtdWx0aXBsZSBgZG9uZWAgY2FuIGJlIGdlbmVyYXRlZC5cbiAgICogQW4gYGRvbmVgIGV2ZW50IGlzIGVtaXRlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IGluIHRoZSBTUUwgYmF0Y2ggZXhjZXB0IHZhcmlhYmxlIGRlY2xhcmF0aW9ucy5cbiAgICogRm9yIGV4ZWN1dGlvbiBvZiBTUUwgc3RhdGVtZW50cyB3aXRoaW4gc3RvcmVkIHByb2NlZHVyZXMsIGBkb25lUHJvY2AgYW5kIGBkb25lSW5Qcm9jYCBldmVudHMgYXJlIHVzZWQgaW4gcGxhY2Ugb2YgYGRvbmVgLlxuICAgKlxuICAgKiBJZiB5b3UgYXJlIHVzaW5nIFtbQ29ubmVjdGlvbi5leGVjU3FsXV0gdGhlbiBTUUwgc2VydmVyIG1heSB0cmVhdCB0aGUgbXVsdGlwbGUgY2FsbHMgd2l0aCB0aGUgc2FtZSBxdWVyeSBhcyBhIHN0b3JlZCBwcm9jZWR1cmUuXG4gICAqIFdoZW4gdGhpcyBvY2N1cnMsIHRoZSBgZG9uZVByb2NgIGFuZCBgZG9uZUluUHJvY2AgZXZlbnRzIG1heSBiZSBlbWl0dGVkIGluc3RlYWQuIFlvdSBtdXN0IGhhbmRsZSBib3RoIGV2ZW50cyB0byBlbnN1cmUgY29tcGxldGUgY292ZXJhZ2UuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ2RvbmUnLFxuICAgIGxpc3RlbmVyOlxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0gcm93Q291bnRcbiAgICAgICAqICAgVGhlIG51bWJlciBvZiByZXN1bHQgcm93cy4gTWF5IGJlIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG1vcmVcbiAgICAgICAqICAgSWYgdGhlcmUgYXJlIG1vcmUgcmVzdWx0cyB0byBjb21lIChwcm9iYWJseSBiZWNhdXNlIG11bHRpcGxlIHN0YXRlbWVudHMgYXJlIGJlaW5nIGV4ZWN1dGVkKSwgdGhlbiBgdHJ1ZWAuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHJzdFxuICAgICAgICogICBSb3dzIGFzIGEgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgU1FMIHN0YXRlbWVudC5cbiAgICAgICAqICAgV2lsbCBvbmx5IGJlIGF2YWlhYmxlIGlmIENvbm5lY3Rpb24ncyBbW0Nvbm5lY3Rpb25PcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmVdXSBpcyBgdHJ1ZWAuXG4gICAgICAgKi9cbiAgICAgIChyb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkLCBtb3JlOiBib29sZWFuLCByc3Q/OiBhbnlbXSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIGByZXF1ZXN0Lm9uKCdkb25lSW5Qcm9jJywgZnVuY3Rpb24gKHJvd0NvdW50LCBtb3JlLCByb3dzKSB7IH0pO2BcbiAgICpcbiAgICogSW5kaWNhdGVzIHRoZSBjb21wbGV0aW9uIHN0YXR1cyBvZiBhIFNRTCBzdGF0ZW1lbnQgd2l0aGluIGEgc3RvcmVkIHByb2NlZHVyZS4gQWxsIHJvd3MgZnJvbSBhIHN0YXRlbWVudFxuICAgKiBpbiBhIHN0b3JlZCBwcm9jZWR1cmUgaGF2ZSBiZWVuIHByb3ZpZGVkICh0aHJvdWdoIGByb3dgIGV2ZW50cykuXG4gICAqXG4gICAqIFRoaXMgZXZlbnQgbWF5IGFsc28gb2NjdXIgd2hlbiBleGVjdXRpbmcgbXVsdGlwbGUgY2FsbHMgd2l0aCB0aGUgc2FtZSBxdWVyeSB1c2luZyBbW2V4ZWNTcWxdXS5cbiAgICovXG4gIG9uKFxuICAgIGV2ZW50OiAnZG9uZUluUHJvYycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSByb3dDb3VudFxuICAgICAgICogICBUaGUgbnVtYmVyIG9mIHJlc3VsdCByb3dzLiBNYXkgYmUgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gbW9yZVxuICAgICAgICogICBJZiB0aGVyZSBhcmUgbW9yZSByZXN1bHRzIHRvIGNvbWUgKHByb2JhYmx5IGJlY2F1c2UgbXVsdGlwbGUgc3RhdGVtZW50cyBhcmUgYmVpbmcgZXhlY3V0ZWQpLCB0aGVuIGB0cnVlYC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gcnN0XG4gICAgICAgKiAgIFJvd3MgYXMgYSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBTUUwgc3RhdGVtZW50LlxuICAgICAgICogICBXaWxsIG9ubHkgYmUgYXZhaWFibGUgaWYgQ29ubmVjdGlvbidzIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZV1dIGlzIGB0cnVlYC5cbiAgICAgICAqL1xuICAgICAgKHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb21wbGV0aW9uIHN0YXR1cyBvZiBhIHN0b3JlZCBwcm9jZWR1cmUuIFRoaXMgaXMgYWxzbyBnZW5lcmF0ZWQgZm9yIHN0b3JlZCBwcm9jZWR1cmVzXG4gICAqIGV4ZWN1dGVkIHRocm91Z2ggU1FMIHN0YXRlbWVudHMuXFxcbiAgICogVGhpcyBldmVudCBtYXkgYWxzbyBvY2N1ciB3aGVuIGV4ZWN1dGluZyBtdWx0aXBsZSBjYWxscyB3aXRoIHRoZSBzYW1lIHF1ZXJ5IHVzaW5nIFtbZXhlY1NxbF1dLlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdkb25lUHJvYycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSByb3dDb3VudFxuICAgICAgICogICBUaGUgbnVtYmVyIG9mIHJlc3VsdCByb3dzLiBNYXkgYmUgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gbW9yZVxuICAgICAgICogICBJZiB0aGVyZSBhcmUgbW9yZSByZXN1bHRzIHRvIGNvbWUgKHByb2JhYmx5IGJlY2F1c2UgbXVsdGlwbGUgc3RhdGVtZW50cyBhcmUgYmVpbmcgZXhlY3V0ZWQpLCB0aGVuIGB0cnVlYC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gcnN0XG4gICAgICAgKiAgIFJvd3MgYXMgYSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBTUUwgc3RhdGVtZW50LlxuICAgICAgICogICBXaWxsIG9ubHkgYmUgYXZhaWFibGUgaWYgQ29ubmVjdGlvbidzIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZV1dIGlzIGB0cnVlYC5cbiAgICAgICAqL1xuICAgICAgKHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHByb2NSZXR1cm5TdGF0dXNWYWx1ZTogbnVtYmVyLCByc3Q/OiBhbnlbXSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgZm9yIGFuIG91dHB1dCBwYXJhbWV0ZXIgKHRoYXQgd2FzIGFkZGVkIHRvIHRoZSByZXF1ZXN0IHdpdGggW1thZGRPdXRwdXRQYXJhbWV0ZXJdXSkuXG4gICAqIFNlZSBhbHNvIGBVc2luZyBQYXJhbWV0ZXJzYC5cbiAgICovXG4gIG9uKFxuICAgIGV2ZW50OiAncmV0dXJuVmFsdWUnLFxuICAgIGxpc3RlbmVyOlxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0gcGFyYW1ldGVyTmFtZVxuICAgICAgICogICBUaGUgcGFyYW1ldGVyIG5hbWUuIChEb2VzIG5vdCBzdGFydCB3aXRoICdAJy4pXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHZhbHVlXG4gICAgICAgKiAgIFRoZSBwYXJhbWV0ZXIncyBvdXRwdXQgdmFsdWUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG1ldGFkYXRhXG4gICAgICAgKiAgIFRoZSBzYW1lIGRhdGEgdGhhdCBpcyBleHBvc2VkIGluIHRoZSBgY29sdW1uTWV0YURhdGFgIGV2ZW50LlxuICAgICAgICovXG4gICAgICAocGFyYW1ldGVyTmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgbWV0YWRhdGE6IE1ldGFkYXRhKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogVGhpcyBldmVudCBnaXZlcyB0aGUgY29sdW1ucyBieSB3aGljaCBkYXRhIGlzIG9yZGVyZWQsIGlmIGBPUkRFUiBCWWAgY2xhdXNlIGlzIGV4ZWN1dGVkIGluIFNRTCBTZXJ2ZXIuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ29yZGVyJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIG9yZGVyQ29sdW1uc1xuICAgICAgICogICBBbiBhcnJheSBvZiBjb2x1bW4gbnVtYmVycyBpbiB0aGUgcmVzdWx0IHNldCBieSB3aGljaCBkYXRhIGlzIG9yZGVyZWQuXG4gICAgICAgKi9cbiAgICAgIChvcmRlckNvbHVtbnM6IG51bWJlcltdKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICBvbihldmVudDogJ3JlcXVlc3RDb21wbGV0ZWQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogJ2NhbmNlbCcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdGhpc1xuXG4gIG9uKGV2ZW50OiAncGF1c2UnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogJ3Jlc3VtZScsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdGhpc1xuXG4gIG9uKGV2ZW50OiBzdHJpbmcgfCBzeW1ib2wsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICByZXR1cm4gc3VwZXIub24oZXZlbnQsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2NvbHVtbk1ldGFkYXRhJywgY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXSB8IHsgW2tleTogc3RyaW5nXTogQ29sdW1uTWV0YWRhdGEgfSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncHJlcGFyZWQnKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdlcnJvcicsIGVycjogRXJyb3IpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3JvdycsIGNvbHVtbnM6IGFueSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnZG9uZScsIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdkb25lSW5Qcm9jJywgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcnN0PzogYW55W10pOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2RvbmVQcm9jJywgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcHJvY1JldHVyblN0YXR1c1ZhbHVlOiBudW1iZXIsIHJzdD86IGFueVtdKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdyZXR1cm5WYWx1ZScsIHBhcmFtZXRlck5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24sIG1ldGFkYXRhOiBNZXRhZGF0YSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncmVxdWVzdENvbXBsZXRlZCcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2NhbmNlbCcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3BhdXNlJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncmVzdW1lJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnb3JkZXInLCBvcmRlckNvbHVtbnM6IG51bWJlcltdKTogYm9vbGVhblxuICBlbWl0KGV2ZW50OiBzdHJpbmcgfCBzeW1ib2wsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIHN1cGVyLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzcWxUZXh0T3JQcm9jZWR1cmVcbiAgICogICBUaGUgU1FMIHN0YXRlbWVudCB0byBiZSBleGVjdXRlZFxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogICBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSBvbmNlIHRoZSByZXF1ZXN0IGhhcyBiZWVuIGZ1bGx5IGNvbXBsZXRlZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNxbFRleHRPclByb2NlZHVyZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBjYWxsYmFjazogQ29tcGxldGlvbkNhbGxiYWNrLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5zcWxUZXh0T3JQcm9jZWR1cmUgPSBzcWxUZXh0T3JQcm9jZWR1cmU7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gW107XG4gICAgdGhpcy5wYXJhbWV0ZXJzQnlOYW1lID0ge307XG4gICAgdGhpcy5wcmVwYXJpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmhhbmRsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy51c2VyQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLnN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5zdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZykgfHwgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcuVXNlQ29ubmVjdGlvblNldHRpbmc7XG4gICAgdGhpcy5jcnlwdG9NZXRhZGF0YUxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2FsbGJhY2sgPSBmdW5jdGlvbihlcnI6IEVycm9yIHwgdW5kZWZpbmVkIHwgbnVsbCwgcm93Q291bnQ/OiBudW1iZXIsIHJvd3M/OiBhbnkpIHtcbiAgICAgIGlmICh0aGlzLnByZXBhcmluZykge1xuICAgICAgICB0aGlzLnByZXBhcmluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdwcmVwYXJlZCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVzZXJDYWxsYmFjayhlcnIsIHJvd0NvdW50LCByb3dzKTtcbiAgICAgICAgdGhpcy5lbWl0KCdyZXF1ZXN0Q29tcGxldGVkJyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiAgIFRoZSBwYXJhbWV0ZXIgbmFtZS4gVGhpcyBzaG91bGQgY29ycmVzcG9uZCB0byBhIHBhcmFtZXRlciBpbiB0aGUgU1FMLFxuICAgKiAgIG9yIGEgcGFyYW1ldGVyIHRoYXQgYSBjYWxsZWQgcHJvY2VkdXJlIGV4cGVjdHMuIFRoZSBuYW1lIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBgQGAuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqICAgT25lIG9mIHRoZSBzdXBwb3J0ZWQgZGF0YSB0eXBlcy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqICAgVGhlIHZhbHVlIHRoYXQgdGhlIHBhcmFtZXRlciBpcyB0byBiZSBnaXZlbi4gVGhlIEphdmFzY3JpcHQgdHlwZSBvZiB0aGVcbiAgICogICBhcmd1bWVudCBzaG91bGQgbWF0Y2ggdGhhdCBkb2N1bWVudGVkIGZvciBkYXRhIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiAgIEFkZGl0aW9uYWwgdHlwZSBvcHRpb25zLiBPcHRpb25hbC5cbiAgICovXG4gIC8vIFRPRE86IGB0eXBlYCBtdXN0IGJlIGEgdmFsaWQgVERTIHZhbHVlIHR5cGVcbiAgYWRkUGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdHlwZTogRGF0YVR5cGUsIHZhbHVlPzogdW5rbm93biwgb3B0aW9ucz86IFJlYWRvbmx5PFBhcmFtZXRlck9wdGlvbnM+IHwgbnVsbCkge1xuICAgIGNvbnN0IHsgb3V0cHV0ID0gZmFsc2UsIGxlbmd0aCwgcHJlY2lzaW9uLCBzY2FsZSB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcjogUGFyYW1ldGVyID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgIGxlbmd0aDogbGVuZ3RoLFxuICAgICAgcHJlY2lzaW9uOiBwcmVjaXNpb24sXG4gICAgICBzY2FsZTogc2NhbGVcbiAgICB9O1xuXG4gICAgdGhpcy5wYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcbiAgICB0aGlzLnBhcmFtZXRlcnNCeU5hbWVbbmFtZV0gPSBwYXJhbWV0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG5hbWVcbiAgICogICBUaGUgcGFyYW1ldGVyIG5hbWUuIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gYSBwYXJhbWV0ZXIgaW4gdGhlIFNRTCxcbiAgICogICBvciBhIHBhcmFtZXRlciB0aGF0IGEgY2FsbGVkIHByb2NlZHVyZSBleHBlY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiAgIE9uZSBvZiB0aGUgc3VwcG9ydGVkIGRhdGEgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiAgIFRoZSB2YWx1ZSB0aGF0IHRoZSBwYXJhbWV0ZXIgaXMgdG8gYmUgZ2l2ZW4uIFRoZSBKYXZhc2NyaXB0IHR5cGUgb2YgdGhlXG4gICAqICAgYXJndW1lbnQgc2hvdWxkIG1hdGNoIHRoYXQgZG9jdW1lbnRlZCBmb3IgZGF0YSB0eXBlc1xuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiAgIEFkZGl0aW9uYWwgdHlwZSBvcHRpb25zLiBPcHRpb25hbC5cbiAgICovXG4gIGFkZE91dHB1dFBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB2YWx1ZT86IHVua25vd24sIG9wdGlvbnM/OiBSZWFkb25seTxQYXJhbWV0ZXJPcHRpb25zPiB8IG51bGwpIHtcbiAgICB0aGlzLmFkZFBhcmFtZXRlcihuYW1lLCB0eXBlLCB2YWx1ZSwgeyAuLi5vcHRpb25zLCBvdXRwdXQ6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1ha2VQYXJhbXNQYXJhbWV0ZXIocGFyYW1ldGVyczogUGFyYW1ldGVyW10pIHtcbiAgICBsZXQgcGFyYW1zUGFyYW1ldGVyID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhcmFtZXRlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHBhcmFtZXRlcnNbaV07XG4gICAgICBpZiAocGFyYW1zUGFyYW1ldGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcGFyYW1zUGFyYW1ldGVyICs9ICcsICc7XG4gICAgICB9XG4gICAgICBwYXJhbXNQYXJhbWV0ZXIgKz0gJ0AnICsgcGFyYW1ldGVyLm5hbWUgKyAnICc7XG4gICAgICBwYXJhbXNQYXJhbWV0ZXIgKz0gcGFyYW1ldGVyLnR5cGUuZGVjbGFyYXRpb24ocGFyYW1ldGVyKTtcbiAgICAgIGlmIChwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICAgIHBhcmFtc1BhcmFtZXRlciArPSAnIE9VVFBVVCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXNQYXJhbWV0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHRoaXMucGFyYW1ldGVyc1tpXTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyYW1ldGVyLnZhbHVlID0gcGFyYW1ldGVyLnR5cGUudmFsaWRhdGUocGFyYW1ldGVyLnZhbHVlLCBjb2xsYXRpb24pO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgUmVxdWVzdEVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZCBmb3IgcGFyYW1ldGVyIFxcJycgKyBwYXJhbWV0ZXIubmFtZSArICdcXCcuICcgKyBlcnJvci5tZXNzYWdlLCAnRVBBUkFNJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IHN1c3BlbmRzIHRoZSBmbG93IG9mIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2UuIE5vIG1vcmUgYHJvd2AgZXZlbnRzIHdpbGwgYmUgZW1pdHRlZCB1bnRpbCBbW3Jlc3VtZV0gaXMgY2FsbGVkLlxuICAgKiBJZiB0aGlzIHJlcXVlc3QgaXMgYWxyZWFkeSBpbiBhIHBhdXNlZCBzdGF0ZSwgY2FsbGluZyBbW3BhdXNlXV0gaGFzIG5vIGVmZmVjdC5cbiAgICovXG4gIHBhdXNlKCkge1xuICAgIGlmICh0aGlzLnBhdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZXMgdGhlIGZsb3cgb2YgZGF0YSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogSWYgdGhpcyByZXF1ZXN0IGlzIG5vdCBpbiBhIHBhdXNlZCBzdGF0ZSwgY2FsbGluZyBbW3Jlc3VtZV1dIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICByZXN1bWUoKSB7XG4gICAgaWYgKCF0aGlzLnBhdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncmVzdW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBhIHJlcXVlc3Qgd2hpbGUgd2FpdGluZyBmb3IgYSBzZXJ2ZXIgcmVzcG9uc2UuXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXQoJ2NhbmNlbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGlzIHJlcXVlc3QuXG4gICAqXG4gICAqIEBwYXJhbSB0aW1lb3V0XG4gICAqICAgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSByZXF1ZXN0IGlzIGNvbnNpZGVyZWQgZmFpbGVkLFxuICAgKiAgIG9yIGAwYCBmb3Igbm8gdGltZW91dC4gV2hlbiBubyB0aW1lb3V0IGlzIHNldCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqICAgdGhlIFtbQ29ubmVjdGlvbk9wdGlvbnMucmVxdWVzdFRpbWVvdXRdXSBvZiB0aGUgW1tDb25uZWN0aW9uXV0gaXMgdXNlZC5cbiAgICovXG4gIHNldFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVxdWVzdDtcbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUlBOztBQXVDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxPQUFOLFNBQXNCQyxvQkFBdEIsQ0FBbUM7RUFDakM7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FBQ0E7O0VBUUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQU9FO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FBQ0E7O0VBR0U7QUFDRjtBQUNBOztFQW9CRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQWtCRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQWtCRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztFQWtCRTtBQUNGO0FBQ0E7QUFDQTs7RUFpQkU7QUFDRjtBQUNBO0VBbUJFQyxFQUFFLENBQUNDLEtBQUQsRUFBeUJDLFFBQXpCLEVBQTZEO0lBQzdELE9BQU8sTUFBTUYsRUFBTixDQUFTQyxLQUFULEVB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
370
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXF1ZXN0IiwiRXZlbnRFbWl0dGVyIiwib24iLCJldmVudCIsImxpc3RlbmVyIiwiZW1pdCIsImFyZ3MiLCJjb25zdHJ1Y3RvciIsInNxbFRleHRPclByb2NlZHVyZSIsImNhbGxiYWNrIiwib3B0aW9ucyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzQnlOYW1lIiwicHJlcGFyaW5nIiwiY2FuY2VsZWQiLCJwYXVzZWQiLCJ1c2VyQ2FsbGJhY2siLCJoYW5kbGUiLCJlcnJvciIsImNvbm5lY3Rpb24iLCJ0aW1lb3V0Iiwicm93cyIsInJzdCIsInJvd0NvdW50Iiwic2hvdWxkSG9ub3JBRSIsInN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIiwiY3J5cHRvTWV0YWRhdGFMb2FkZWQiLCJ1bmRlZmluZWQiLCJTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyIsIlVzZUNvbm5lY3Rpb25TZXR0aW5nIiwiZXJyIiwiYWRkUGFyYW1ldGVyIiwibmFtZSIsInR5cGUiLCJ2YWx1ZSIsIm91dHB1dCIsImxlbmd0aCIsInByZWNpc2lvbiIsInNjYWxlIiwicGFyYW1ldGVyIiwicHVzaCIsImFkZE91dHB1dFBhcmFtZXRlciIsIm1ha2VQYXJhbXNQYXJhbWV0ZXIiLCJwYXJhbXNQYXJhbWV0ZXIiLCJpIiwibGVuIiwiZGVjbGFyYXRpb24iLCJ2YWxpZGF0ZVBhcmFtZXRlcnMiLCJjb2xsYXRpb24iLCJ2YWxpZGF0ZSIsIlJlcXVlc3RFcnJvciIsIm1lc3NhZ2UiLCJwYXVzZSIsInJlc3VtZSIsImNhbmNlbCIsInNldFRpbWVvdXQiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IFBhcmFtZXRlciwgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCBDb25uZWN0aW9uIGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4vbWV0YWRhdGEtcGFyc2VyJztcbmltcG9ydCB7IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIH0gZnJvbSAnLi9hbHdheXMtZW5jcnlwdGVkL3R5cGVzJztcbmltcG9ydCB7IENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi90b2tlbi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG4vKipcbiAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBoYXMgY29tcGxldGVkLCBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gKiBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgc3RhdGVtZW50KHMpLCB0aGVuIGBlcnJgIHdpbGwgZGVzY3JpYmUgdGhlIGVycm9yLlxuICpcbiAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gKiBiZSBpbml0aWF0ZWQgdW50aWwgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3JlIGByZXF1ZXN0Q29tcGxldGVkYCBpcyBlbWl0dGVkLlxuICovXG50eXBlIENvbXBsZXRpb25DYWxsYmFjayA9XG4gIC8qKlxuICAgKiBAcGFyYW0gZXJyb3JcbiAgICogICBJZiBhbiBlcnJvciBvY2N1cmVkLCBhbiBlcnJvciBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSByb3dDb3VudFxuICAgKiAgIFRoZSBudW1iZXIgb2Ygcm93cyBlbWl0dGVkIGFzIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzXG4gICAqICAgUm93cyBhcyBhIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAqICAgV2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBpZiBbW0Nvbm5lY3Rpb25PcHRpb25zLnJvd0NvbGxlY3Rpb25PblJlcXVlc3RDb21wbGV0aW9uXV0gaXMgYHRydWVgLlxuICAgKi9cbiAgLy8gVE9ETzogRmlndXJlIG91dCBob3cgdG8gdHlwZSB0aGUgYHJvd3NgIHBhcmFtZXRlciBoZXJlLlxuICAoZXJyb3I6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgcm93Q291bnQ/OiBudW1iZXIsIHJvd3M/OiBhbnkpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyT3B0aW9ucyB7XG4gIG91dHB1dD86IGJvb2xlYW47XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlcXVlc3RPcHRpb25zIHtcbiAgc3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmc/OiBTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZztcbn1cblxuLyoqXG4gKiBgYGBqc1xuICogY29uc3QgeyBSZXF1ZXN0IH0gPSByZXF1aXJlKCd0ZWRpb3VzJyk7XG4gKiBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoXCJzZWxlY3QgNDIsICdoZWxsbyB3b3JsZCdcIiwgKGVyciwgcm93Q291bnQpIHtcbiAqICAgLy8gUmVxdWVzdCBjb21wbGV0aW9uIGNhbGxiYWNrLi4uXG4gKiB9KTtcbiAqIGNvbm5lY3Rpb24uZXhlY1NxbChyZXF1ZXN0KTtcbiAqIGBgYFxuICovXG5jbGFzcyBSZXF1ZXN0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzcWxUZXh0T3JQcm9jZWR1cmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJbXTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwYXJhbWV0ZXJzQnlOYW1lOiB7IFtrZXk6IHN0cmluZ106IFBhcmFtZXRlciB9O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByZXBhcmluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjYW5jZWxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwYXVzZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdXNlckNhbGxiYWNrOiBDb21wbGV0aW9uQ2FsbGJhY2s7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcm93cz86IEFycmF5PGFueT47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcnN0PzogQXJyYXk8YW55PjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByb3dDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNhbGxiYWNrOiBDb21wbGV0aW9uQ2FsbGJhY2s7XG5cblxuICBzaG91bGRIb25vckFFPzogYm9vbGVhbjtcbiAgc3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmc6IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nO1xuICBjcnlwdG9NZXRhZGF0YUxvYWRlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBldmVudCwgZGVzY3JpYmluZyByZXN1bHQgc2V0IGNvbHVtbnMsIHdpbGwgYmUgZW1pdHRlZCBiZWZvcmUgcm93XG4gICAqIGV2ZW50cyBhcmUgZW1pdHRlZC4gVGhpcyBldmVudCBtYXkgYmUgZW1pdGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gbW9yZVxuICAgKiB0aGFuIG9uZSByZWNvcmRzZXQgaXMgcHJvZHVjZWQgYnkgdGhlIHN0YXRlbWVudC5cbiAgICpcbiAgICogQW4gYXJyYXkgbGlrZSBvYmplY3QsIHdoZXJlIHRoZSBjb2x1bW5zIGNhbiBiZSBhY2Nlc3NlZCBlaXRoZXIgYnkgaW5kZXhcbiAgICogb3IgbmFtZS4gQ29sdW1ucyB3aXRoIGEgbmFtZSB0aGF0IGlzIGFuIGludGVnZXIgYXJlIG5vdCBhY2Nlc3NpYmxlIGJ5IG5hbWUsXG4gICAqIGFzIGl0IHdvdWxkIGJlIGludGVycHJldGVkIGFzIGFuIGFycmF5IGluZGV4LlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdjb2x1bW5NZXRhZGF0YScsXG4gICAgbGlzdGVuZXI6XG4gICAgKGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10gfCB7IFtrZXk6IHN0cmluZ106IENvbHVtbk1ldGFkYXRhIH0pID0+IHZvaWRcbiAgKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdCBoYXMgYmVlbiBwcmVwYXJlZCBhbmQgY2FuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCBjYWxscyB0byBleGVjdXRlIGFuZCB1bnByZXBhcmUuXG4gICAqL1xuICBvbihldmVudDogJ3ByZXBhcmVkJywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSByZXF1ZXN0IGVuY291bnRlcmVkIGFuIGVycm9yIGFuZCBoYXMgbm90IGJlZW4gcHJlcGFyZWQuXG4gICAqL1xuICBvbihldmVudDogJ2Vycm9yJywgbGlzdGVuZXI6IChlcnI6IEVycm9yKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBBIHJvdyByZXN1bHRpbmcgZnJvbSBleGVjdXRpb24gb2YgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ3JvdycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEFuIGFycmF5IG9yIG9iamVjdCAoZGVwZW5kcyBvbiBbW0Nvbm5lY3Rpb25PcHRpb25zLnVzZUNvbHVtbk5hbWVzXV0pLCB3aGVyZSB0aGUgY29sdW1ucyBjYW4gYmUgYWNjZXNzZWQgYnkgaW5kZXgvbmFtZS5cbiAgICAgICAqIEVhY2ggY29sdW1uIGhhcyB0d28gcHJvcGVydGllcywgYG1ldGFkYXRhYCBhbmQgYHZhbHVlYO+8mlxuICAgICAgICpcbiAgICAgICAqICogYG1ldGFkYXRhYFxuICAgICAgICpcbiAgICAgICAqICAgIFRoZSBzYW1lIGRhdGEgdGhhdCBpcyBleHBvc2VkIGluIHRoZSBgY29sdW1uTWV0YWRhdGFgIGV2ZW50LlxuICAgICAgICpcbiAgICAgICAqICogYHZhbHVlYFxuICAgICAgICpcbiAgICAgICAqICAgIFRoZSBjb2x1bW4ncyB2YWx1ZS4gSXQgd2lsbCBiZSBgbnVsbGAgZm9yIGEgYE5VTExgLlxuICAgICAgICogICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvbHVtbnMgd2l0aCB0aGUgc2FtZSBuYW1lLCB0aGVuIHRoaXMgd2lsbCBiZSBhbiBhcnJheSBvZiB0aGUgdmFsdWVzLlxuICAgICAgICovXG4gICAgICAoY29sdW1uczogYW55KSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogQWxsIHJvd3MgZnJvbSBhIHJlc3VsdCBzZXQgaGF2ZSBiZWVuIHByb3ZpZGVkICh0aHJvdWdoIGByb3dgIGV2ZW50cykuXG4gICAqXG4gICAqIFRoaXMgdG9rZW4gaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgY29tcGxldGlvbiBvZiBhIFNRTCBzdGF0ZW1lbnQuXG4gICAqIEFzIG11bHRpcGxlIFNRTCBzdGF0ZW1lbnRzIGNhbiBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgaW4gYSBzaW5nbGUgU1FMIGJhdGNoLCBtdWx0aXBsZSBgZG9uZWAgY2FuIGJlIGdlbmVyYXRlZC5cbiAgICogQW4gYGRvbmVgIGV2ZW50IGlzIGVtaXRlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IGluIHRoZSBTUUwgYmF0Y2ggZXhjZXB0IHZhcmlhYmxlIGRlY2xhcmF0aW9ucy5cbiAgICogRm9yIGV4ZWN1dGlvbiBvZiBTUUwgc3RhdGVtZW50cyB3aXRoaW4gc3RvcmVkIHByb2NlZHVyZXMsIGBkb25lUHJvY2AgYW5kIGBkb25lSW5Qcm9jYCBldmVudHMgYXJlIHVzZWQgaW4gcGxhY2Ugb2YgYGRvbmVgLlxuICAgKlxuICAgKiBJZiB5b3UgYXJlIHVzaW5nIFtbQ29ubmVjdGlvbi5leGVjU3FsXV0gdGhlbiBTUUwgc2VydmVyIG1heSB0cmVhdCB0aGUgbXVsdGlwbGUgY2FsbHMgd2l0aCB0aGUgc2FtZSBxdWVyeSBhcyBhIHN0b3JlZCBwcm9jZWR1cmUuXG4gICAqIFdoZW4gdGhpcyBvY2N1cnMsIHRoZSBgZG9uZVByb2NgIGFuZCBgZG9uZUluUHJvY2AgZXZlbnRzIG1heSBiZSBlbWl0dGVkIGluc3RlYWQuIFlvdSBtdXN0IGhhbmRsZSBib3RoIGV2ZW50cyB0byBlbnN1cmUgY29tcGxldGUgY292ZXJhZ2UuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ2RvbmUnLFxuICAgIGxpc3RlbmVyOlxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0gcm93Q291bnRcbiAgICAgICAqICAgVGhlIG51bWJlciBvZiByZXN1bHQgcm93cy4gTWF5IGJlIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG1vcmVcbiAgICAgICAqICAgSWYgdGhlcmUgYXJlIG1vcmUgcmVzdWx0cyB0byBjb21lIChwcm9iYWJseSBiZWNhdXNlIG11bHRpcGxlIHN0YXRlbWVudHMgYXJlIGJlaW5nIGV4ZWN1dGVkKSwgdGhlbiBgdHJ1ZWAuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHJzdFxuICAgICAgICogICBSb3dzIGFzIGEgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgU1FMIHN0YXRlbWVudC5cbiAgICAgICAqICAgV2lsbCBvbmx5IGJlIGF2YWlhYmxlIGlmIENvbm5lY3Rpb24ncyBbW0Nvbm5lY3Rpb25PcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmVdXSBpcyBgdHJ1ZWAuXG4gICAgICAgKi9cbiAgICAgIChyb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkLCBtb3JlOiBib29sZWFuLCByc3Q/OiBhbnlbXSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIGByZXF1ZXN0Lm9uKCdkb25lSW5Qcm9jJywgZnVuY3Rpb24gKHJvd0NvdW50LCBtb3JlLCByb3dzKSB7IH0pO2BcbiAgICpcbiAgICogSW5kaWNhdGVzIHRoZSBjb21wbGV0aW9uIHN0YXR1cyBvZiBhIFNRTCBzdGF0ZW1lbnQgd2l0aGluIGEgc3RvcmVkIHByb2NlZHVyZS4gQWxsIHJvd3MgZnJvbSBhIHN0YXRlbWVudFxuICAgKiBpbiBhIHN0b3JlZCBwcm9jZWR1cmUgaGF2ZSBiZWVuIHByb3ZpZGVkICh0aHJvdWdoIGByb3dgIGV2ZW50cykuXG4gICAqXG4gICAqIFRoaXMgZXZlbnQgbWF5IGFsc28gb2NjdXIgd2hlbiBleGVjdXRpbmcgbXVsdGlwbGUgY2FsbHMgd2l0aCB0aGUgc2FtZSBxdWVyeSB1c2luZyBbW2V4ZWNTcWxdXS5cbiAgICovXG4gIG9uKFxuICAgIGV2ZW50OiAnZG9uZUluUHJvYycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSByb3dDb3VudFxuICAgICAgICogICBUaGUgbnVtYmVyIG9mIHJlc3VsdCByb3dzLiBNYXkgYmUgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gbW9yZVxuICAgICAgICogICBJZiB0aGVyZSBhcmUgbW9yZSByZXN1bHRzIHRvIGNvbWUgKHByb2JhYmx5IGJlY2F1c2UgbXVsdGlwbGUgc3RhdGVtZW50cyBhcmUgYmVpbmcgZXhlY3V0ZWQpLCB0aGVuIGB0cnVlYC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gcnN0XG4gICAgICAgKiAgIFJvd3MgYXMgYSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBTUUwgc3RhdGVtZW50LlxuICAgICAgICogICBXaWxsIG9ubHkgYmUgYXZhaWFibGUgaWYgQ29ubmVjdGlvbidzIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZV1dIGlzIGB0cnVlYC5cbiAgICAgICAqL1xuICAgICAgKHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb21wbGV0aW9uIHN0YXR1cyBvZiBhIHN0b3JlZCBwcm9jZWR1cmUuIFRoaXMgaXMgYWxzbyBnZW5lcmF0ZWQgZm9yIHN0b3JlZCBwcm9jZWR1cmVzXG4gICAqIGV4ZWN1dGVkIHRocm91Z2ggU1FMIHN0YXRlbWVudHMuXFxcbiAgICogVGhpcyBldmVudCBtYXkgYWxzbyBvY2N1ciB3aGVuIGV4ZWN1dGluZyBtdWx0aXBsZSBjYWxscyB3aXRoIHRoZSBzYW1lIHF1ZXJ5IHVzaW5nIFtbZXhlY1NxbF1dLlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdkb25lUHJvYycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSByb3dDb3VudFxuICAgICAgICogICBUaGUgbnVtYmVyIG9mIHJlc3VsdCByb3dzLiBNYXkgYmUgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gbW9yZVxuICAgICAgICogICBJZiB0aGVyZSBhcmUgbW9yZSByZXN1bHRzIHRvIGNvbWUgKHByb2JhYmx5IGJlY2F1c2UgbXVsdGlwbGUgc3RhdGVtZW50cyBhcmUgYmVpbmcgZXhlY3V0ZWQpLCB0aGVuIGB0cnVlYC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gcnN0XG4gICAgICAgKiAgIFJvd3MgYXMgYSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBTUUwgc3RhdGVtZW50LlxuICAgICAgICogICBXaWxsIG9ubHkgYmUgYXZhaWFibGUgaWYgQ29ubmVjdGlvbidzIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZV1dIGlzIGB0cnVlYC5cbiAgICAgICAqL1xuICAgICAgKHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHByb2NSZXR1cm5TdGF0dXNWYWx1ZTogbnVtYmVyLCByc3Q/OiBhbnlbXSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgZm9yIGFuIG91dHB1dCBwYXJhbWV0ZXIgKHRoYXQgd2FzIGFkZGVkIHRvIHRoZSByZXF1ZXN0IHdpdGggW1thZGRPdXRwdXRQYXJhbWV0ZXJdXSkuXG4gICAqIFNlZSBhbHNvIGBVc2luZyBQYXJhbWV0ZXJzYC5cbiAgICovXG4gIG9uKFxuICAgIGV2ZW50OiAncmV0dXJuVmFsdWUnLFxuICAgIGxpc3RlbmVyOlxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0gcGFyYW1ldGVyTmFtZVxuICAgICAgICogICBUaGUgcGFyYW1ldGVyIG5hbWUuIChEb2VzIG5vdCBzdGFydCB3aXRoICdAJy4pXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHZhbHVlXG4gICAgICAgKiAgIFRoZSBwYXJhbWV0ZXIncyBvdXRwdXQgdmFsdWUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG1ldGFkYXRhXG4gICAgICAgKiAgIFRoZSBzYW1lIGRhdGEgdGhhdCBpcyBleHBvc2VkIGluIHRoZSBgY29sdW1uTWV0YURhdGFgIGV2ZW50LlxuICAgICAgICovXG4gICAgICAocGFyYW1ldGVyTmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgbWV0YWRhdGE6IE1ldGFkYXRhKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogVGhpcyBldmVudCBnaXZlcyB0aGUgY29sdW1ucyBieSB3aGljaCBkYXRhIGlzIG9yZGVyZWQsIGlmIGBPUkRFUiBCWWAgY2xhdXNlIGlzIGV4ZWN1dGVkIGluIFNRTCBTZXJ2ZXIuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ29yZGVyJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIG9yZGVyQ29sdW1uc1xuICAgICAgICogICBBbiBhcnJheSBvZiBjb2x1bW4gbnVtYmVycyBpbiB0aGUgcmVzdWx0IHNldCBieSB3aGljaCBkYXRhIGlzIG9yZGVyZWQuXG4gICAgICAgKi9cbiAgICAgIChvcmRlckNvbHVtbnM6IG51bWJlcltdKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICBvbihldmVudDogJ3JlcXVlc3RDb21wbGV0ZWQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogJ2NhbmNlbCcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdGhpc1xuXG4gIG9uKGV2ZW50OiAncGF1c2UnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogJ3Jlc3VtZScsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdGhpc1xuXG4gIG9uKGV2ZW50OiBzdHJpbmcgfCBzeW1ib2wsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICByZXR1cm4gc3VwZXIub24oZXZlbnQsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2NvbHVtbk1ldGFkYXRhJywgY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXSB8IHsgW2tleTogc3RyaW5nXTogQ29sdW1uTWV0YWRhdGEgfSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncHJlcGFyZWQnKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdlcnJvcicsIGVycjogRXJyb3IpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3JvdycsIGNvbHVtbnM6IGFueSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnZG9uZScsIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdkb25lSW5Qcm9jJywgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcnN0PzogYW55W10pOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2RvbmVQcm9jJywgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcHJvY1JldHVyblN0YXR1c1ZhbHVlOiBudW1iZXIsIHJzdD86IGFueVtdKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdyZXR1cm5WYWx1ZScsIHBhcmFtZXRlck5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24sIG1ldGFkYXRhOiBNZXRhZGF0YSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncmVxdWVzdENvbXBsZXRlZCcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2NhbmNlbCcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3BhdXNlJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncmVzdW1lJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnb3JkZXInLCBvcmRlckNvbHVtbnM6IG51bWJlcltdKTogYm9vbGVhblxuICBlbWl0KGV2ZW50OiBzdHJpbmcgfCBzeW1ib2wsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIHN1cGVyLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzcWxUZXh0T3JQcm9jZWR1cmVcbiAgICogICBUaGUgU1FMIHN0YXRlbWVudCB0byBiZSBleGVjdXRlZFxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogICBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSBvbmNlIHRoZSByZXF1ZXN0IGhhcyBiZWVuIGZ1bGx5IGNvbXBsZXRlZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNxbFRleHRPclByb2NlZHVyZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBjYWxsYmFjazogQ29tcGxldGlvbkNhbGxiYWNrLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5zcWxUZXh0T3JQcm9jZWR1cmUgPSBzcWxUZXh0T3JQcm9jZWR1cmU7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gW107XG4gICAgdGhpcy5wYXJhbWV0ZXJzQnlOYW1lID0ge307XG4gICAgdGhpcy5wcmVwYXJpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmhhbmRsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy51c2VyQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLnN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5zdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZykgfHwgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcuVXNlQ29ubmVjdGlvblNldHRpbmc7XG4gICAgdGhpcy5jcnlwdG9NZXRhZGF0YUxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2FsbGJhY2sgPSBmdW5jdGlvbihlcnI6IEVycm9yIHwgdW5kZWZpbmVkIHwgbnVsbCwgcm93Q291bnQ/OiBudW1iZXIsIHJvd3M/OiBhbnkpIHtcbiAgICAgIGlmICh0aGlzLnByZXBhcmluZykge1xuICAgICAgICB0aGlzLnByZXBhcmluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdwcmVwYXJlZCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVzZXJDYWxsYmFjayhlcnIsIHJvd0NvdW50LCByb3dzKTtcbiAgICAgICAgdGhpcy5lbWl0KCdyZXF1ZXN0Q29tcGxldGVkJyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiAgIFRoZSBwYXJhbWV0ZXIgbmFtZS4gVGhpcyBzaG91bGQgY29ycmVzcG9uZCB0byBhIHBhcmFtZXRlciBpbiB0aGUgU1FMLFxuICAgKiAgIG9yIGEgcGFyYW1ldGVyIHRoYXQgYSBjYWxsZWQgcHJvY2VkdXJlIGV4cGVjdHMuIFRoZSBuYW1lIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBgQGAuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqICAgT25lIG9mIHRoZSBzdXBwb3J0ZWQgZGF0YSB0eXBlcy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqICAgVGhlIHZhbHVlIHRoYXQgdGhlIHBhcmFtZXRlciBpcyB0byBiZSBnaXZlbi4gVGhlIEphdmFzY3JpcHQgdHlwZSBvZiB0aGVcbiAgICogICBhcmd1bWVudCBzaG91bGQgbWF0Y2ggdGhhdCBkb2N1bWVudGVkIGZvciBkYXRhIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiAgIEFkZGl0aW9uYWwgdHlwZSBvcHRpb25zLiBPcHRpb25hbC5cbiAgICovXG4gIC8vIFRPRE86IGB0eXBlYCBtdXN0IGJlIGEgdmFsaWQgVERTIHZhbHVlIHR5cGVcbiAgYWRkUGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdHlwZTogRGF0YVR5cGUsIHZhbHVlPzogdW5rbm93biwgb3B0aW9ucz86IFJlYWRvbmx5PFBhcmFtZXRlck9wdGlvbnM+IHwgbnVsbCkge1xuICAgIGNvbnN0IHsgb3V0cHV0ID0gZmFsc2UsIGxlbmd0aCwgcHJlY2lzaW9uLCBzY2FsZSB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcjogUGFyYW1ldGVyID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgIGxlbmd0aDogbGVuZ3RoLFxuICAgICAgcHJlY2lzaW9uOiBwcmVjaXNpb24sXG4gICAgICBzY2FsZTogc2NhbGVcbiAgICB9O1xuXG4gICAgdGhpcy5wYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcbiAgICB0aGlzLnBhcmFtZXRlcnNCeU5hbWVbbmFtZV0gPSBwYXJhbWV0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG5hbWVcbiAgICogICBUaGUgcGFyYW1ldGVyIG5hbWUuIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gYSBwYXJhbWV0ZXIgaW4gdGhlIFNRTCxcbiAgICogICBvciBhIHBhcmFtZXRlciB0aGF0IGEgY2FsbGVkIHByb2NlZHVyZSBleHBlY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiAgIE9uZSBvZiB0aGUgc3VwcG9ydGVkIGRhdGEgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiAgIFRoZSB2YWx1ZSB0aGF0IHRoZSBwYXJhbWV0ZXIgaXMgdG8gYmUgZ2l2ZW4uIFRoZSBKYXZhc2NyaXB0IHR5cGUgb2YgdGhlXG4gICAqICAgYXJndW1lbnQgc2hvdWxkIG1hdGNoIHRoYXQgZG9jdW1lbnRlZCBmb3IgZGF0YSB0eXBlc1xuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiAgIEFkZGl0aW9uYWwgdHlwZSBvcHRpb25zLiBPcHRpb25hbC5cbiAgICovXG4gIGFkZE91dHB1dFBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB2YWx1ZT86IHVua25vd24sIG9wdGlvbnM/OiBSZWFkb25seTxQYXJhbWV0ZXJPcHRpb25zPiB8IG51bGwpIHtcbiAgICB0aGlzLmFkZFBhcmFtZXRlcihuYW1lLCB0eXBlLCB2YWx1ZSwgeyAuLi5vcHRpb25zLCBvdXRwdXQ6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1ha2VQYXJhbXNQYXJhbWV0ZXIocGFyYW1ldGVyczogUGFyYW1ldGVyW10pIHtcbiAgICBsZXQgcGFyYW1zUGFyYW1ldGVyID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhcmFtZXRlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHBhcmFtZXRlcnNbaV07XG4gICAgICBpZiAocGFyYW1zUGFyYW1ldGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcGFyYW1zUGFyYW1ldGVyICs9ICcsICc7XG4gICAgICB9XG4gICAgICBwYXJhbXNQYXJhbWV0ZXIgKz0gJ0AnICsgcGFyYW1ldGVyLm5hbWUgKyAnICc7XG4gICAgICBwYXJhbXNQYXJhbWV0ZXIgKz0gcGFyYW1ldGVyLnR5cGUuZGVjbGFyYXRpb24ocGFyYW1ldGVyKTtcbiAgICAgIGlmIChwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICAgIHBhcmFtc1BhcmFtZXRlciArPSAnIE9VVFBVVCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXNQYXJhbWV0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHRoaXMucGFyYW1ldGVyc1tpXTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyYW1ldGVyLnZhbHVlID0gcGFyYW1ldGVyLnR5cGUudmFsaWRhdGUocGFyYW1ldGVyLnZhbHVlLCBjb2xsYXRpb24pO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgUmVxdWVzdEVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZCBmb3IgcGFyYW1ldGVyIFxcJycgKyBwYXJhbWV0ZXIubmFtZSArICdcXCcuICcgKyBlcnJvci5tZXNzYWdlLCAnRVBBUkFNJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IHN1c3BlbmRzIHRoZSBmbG93IG9mIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2UuIE5vIG1vcmUgYHJvd2AgZXZlbnRzIHdpbGwgYmUgZW1pdHRlZCB1bnRpbCBbW3Jlc3VtZV0gaXMgY2FsbGVkLlxuICAgKiBJZiB0aGlzIHJlcXVlc3QgaXMgYWxyZWFkeSBpbiBhIHBhdXNlZCBzdGF0ZSwgY2FsbGluZyBbW3BhdXNlXV0gaGFzIG5vIGVmZmVjdC5cbiAgICovXG4gIHBhdXNlKCkge1xuICAgIGlmICh0aGlzLnBhdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZXMgdGhlIGZsb3cgb2YgZGF0YSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogSWYgdGhpcyByZXF1ZXN0IGlzIG5vdCBpbiBhIHBhdXNlZCBzdGF0ZSwgY2FsbGluZyBbW3Jlc3VtZV1dIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICByZXN1bWUoKSB7XG4gICAgaWYgKCF0aGlzLnBhdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncmVzdW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBhIHJlcXVlc3Qgd2hpbGUgd2FpdGluZyBmb3IgYSBzZXJ2ZXIgcmVzcG9uc2UuXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXQoJ2NhbmNlbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGlzIHJlcXVlc3QuXG4gICAqXG4gICAqIEBwYXJhbSB0aW1lb3V0XG4gICAqICAgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSByZXF1ZXN0IGlzIGNvbnNpZGVyZWQgZmFpbGVkLFxuICAgKiAgIG9yIGAwYCBmb3Igbm8gdGltZW91dC4gV2hlbiBubyB0aW1lb3V0IGlzIHNldCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqICAgdGhlIFtbQ29ubmVjdGlvbk9wdGlvbnMucmVxdWVzdFRpbWVvdXRdXSBvZiB0aGUgW1tDb25uZWN0aW9uXV0gaXMgdXNlZC5cbiAgICovXG4gIHNldFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVxdWVzdDtcbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUlBOztBQXVDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxPQUFOLFNBQXNCQyxvQkFBdEIsQ0FBbUM7RUFDakM7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FBQ0E7O0VBUUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQU9FO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FBQ0E7O0VBR0U7QUFDRjtBQUNBOztFQW9CRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQWtCRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQWtCRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztFQWtCRTtBQUNGO0FBQ0E7QUFDQTs7RUFpQkU7QUFDRjtBQUNBO0VBbUJFQyxFQUFFLENBQUNDLEtBQUQsRUFBeUJDLFFBQXpCLEVBQTZEO0lBQzdELE9BQU8sTUFBTUYsRUFBTixDQUFTQyxLQUFULEVB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
package/lib/sender.js CHANGED
@@ -3,7 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Sender = exports.ParallelSendStrategy = void 0;
6
+ exports.sendInParallel = sendInParallel;
7
+ exports.sendMessage = sendMessage;
7
8
 
8
9
  var _dgram = _interopRequireDefault(require("dgram"));
9
10
 
@@ -11,63 +12,42 @@ var _net = _interopRequireDefault(require("net"));
11
12
 
12
13
  var punycode = _interopRequireWildcard(require("punycode"));
13
14
 
15
+ var _abortError = _interopRequireDefault(require("./errors/abort-error"));
16
+
14
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
18
 
16
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
20
 
18
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
22
 
20
- class AbortError extends Error {
21
- constructor() {
22
- super('The operation was aborted');
23
- this.code = void 0;
24
- this.code = 'ABORT_ERR';
25
- this.name = 'AbortError';
26
- }
27
-
28
- }
29
-
30
- class ParallelSendStrategy {
31
- constructor(addresses, port, signal, request) {
32
- this.addresses = void 0;
33
- this.port = void 0;
34
- this.request = void 0;
35
- this.signal = void 0;
36
- this.addresses = addresses;
37
- this.port = port;
38
- this.request = request;
39
- this.signal = signal;
23
+ async function sendInParallel(addresses, port, request, signal) {
24
+ if (signal.aborted) {
25
+ throw new _abortError.default();
40
26
  }
41
27
 
42
- send(cb) {
43
- const signal = this.signal;
44
-
45
- if (signal.aborted) {
46
- return cb(new AbortError());
47
- }
48
-
28
+ return await new Promise((resolve, reject) => {
49
29
  const sockets = [];
50
30
  let errorCount = 0;
51
31
 
52
32
  const onError = err => {
53
33
  errorCount++;
54
34
 
55
- if (errorCount === this.addresses.length) {
35
+ if (errorCount === addresses.length) {
56
36
  signal.removeEventListener('abort', onAbort);
57
37
  clearSockets();
58
- cb(err);
38
+ reject(err);
59
39
  }
60
40
  };
61
41
 
62
42
  const onMessage = message => {
63
43
  signal.removeEventListener('abort', onAbort);
64
44
  clearSockets();
65
- cb(null, message);
45
+ resolve(message);
66
46
  };
67
47
 
68
48
  const onAbort = () => {
69
49
  clearSockets();
70
- cb(new AbortError());
50
+ reject(new _abortError.default());
71
51
  };
72
52
 
73
53
  const clearSockets = () => {
@@ -82,74 +62,47 @@ class ParallelSendStrategy {
82
62
  once: true
83
63
  });
84
64
 
85
- for (let j = 0; j < this.addresses.length; j++) {
86
- const udpType = this.addresses[j].family === 6 ? 'udp6' : 'udp4';
65
+ for (let j = 0; j < addresses.length; j++) {
66
+ const udpType = addresses[j].family === 6 ? 'udp6' : 'udp4';
87
67
 
88
68
  const socket = _dgram.default.createSocket(udpType);
89
69
 
90
70
  sockets.push(socket);
91
71
  socket.on('error', onError);
92
72
  socket.on('message', onMessage);
93
- socket.send(this.request, 0, this.request.length, this.port, this.addresses[j].address);
73
+ socket.send(request, 0, request.length, port, addresses[j].address);
94
74
  }
95
- }
96
-
75
+ });
97
76
  }
98
77
 
99
- exports.ParallelSendStrategy = ParallelSendStrategy;
100
-
101
- class Sender {
102
- constructor(host, port, lookup, signal, request) {
103
- this.host = void 0;
104
- this.port = void 0;
105
- this.request = void 0;
106
- this.lookup = void 0;
107
- this.signal = void 0;
108
- this.host = host;
109
- this.port = port;
110
- this.request = request;
111
- this.lookup = lookup;
112
- this.signal = signal;
78
+ async function sendMessage(host, port, lookup, signal, request) {
79
+ if (signal.aborted) {
80
+ throw new _abortError.default();
113
81
  }
114
82
 
115
- execute(cb) {
116
- if (_net.default.isIP(this.host)) {
117
- this.executeForIP(cb);
118
- } else {
119
- this.executeForHostname(cb);
120
- }
121
- }
122
-
123
- executeForIP(cb) {
124
- this.executeForAddresses([{
125
- address: this.host,
126
- family: _net.default.isIPv6(this.host) ? 6 : 4
127
- }], cb);
128
- } // Wrapper for stubbing. Sinon does not have support for stubbing module functions.
129
-
130
-
131
- invokeLookupAll(host, cb) {
132
- this.lookup.call(null, punycode.toASCII(host), {
133
- all: true
134
- }, cb);
135
- }
136
-
137
- executeForHostname(cb) {
138
- this.invokeLookupAll(this.host, (err, addresses) => {
139
- if (err) {
140
- return cb(err);
141
- }
142
-
143
- this.executeForAddresses(addresses, cb);
83
+ let addresses;
84
+
85
+ if (_net.default.isIP(host)) {
86
+ addresses = [{
87
+ address: host,
88
+ family: _net.default.isIPv6(host) ? 6 : 4
89
+ }];
90
+ } else {
91
+ addresses = await new Promise((resolve, reject) => {
92
+ const onAbort = () => {
93
+ reject(new _abortError.default());
94
+ };
95
+
96
+ signal.addEventListener('abort', onAbort);
97
+ lookup(punycode.toASCII(host), {
98
+ all: true
99
+ }, (err, addresses) => {
100
+ signal.removeEventListener('abort', onAbort);
101
+ err ? reject(err) : resolve(addresses);
102
+ });
144
103
  });
145
104
  }
146
105
 
147
- executeForAddresses(addresses, cb) {
148
- const parallelSendStrategy = new ParallelSendStrategy(addresses, this.port, this.signal, this.request);
149
- parallelSendStrategy.send(cb);
150
- }
151
-
106
+ return await sendInParallel(addresses, port, request, signal);
152
107
  }
153
-
154
- exports.Sender = Sender;
155
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBYm9ydEVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsImNvZGUiLCJuYW1lIiwiUGFyYWxsZWxTZW5kU3RyYXRlZ3kiLCJhZGRyZXNzZXMiLCJwb3J0Iiwic2lnbmFsIiwicmVxdWVzdCIsInNlbmQiLCJjYiIsImFib3J0ZWQiLCJzb2NrZXRzIiwiZXJyb3JDb3VudCIsIm9uRXJyb3IiLCJlcnIiLCJsZW5ndGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25BYm9ydCIsImNsZWFyU29ja2V0cyIsIm9uTWVzc2FnZSIsIm1lc3NhZ2UiLCJzb2NrZXQiLCJyZW1vdmVMaXN0ZW5lciIsImNsb3NlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uY2UiLCJqIiwidWRwVHlwZSIsImZhbWlseSIsImRncmFtIiwiY3JlYXRlU29ja2V0IiwicHVzaCIsIm9uIiwiYWRkcmVzcyIsIlNlbmRlciIsImhvc3QiLCJsb29rdXAiLCJleGVjdXRlIiwibmV0IiwiaXNJUCIsImV4ZWN1dGVGb3JJUCIsImV4ZWN1dGVGb3JIb3N0bmFtZSIsImV4ZWN1dGVGb3JBZGRyZXNzZXMiLCJpc0lQdjYiLCJpbnZva2VMb29rdXBBbGwiLCJjYWxsIiwicHVueWNvZGUiLCJ0b0FTQ0lJIiwiYWxsIiwicGFyYWxsZWxTZW5kU3RyYXRlZ3kiXSwic291cmNlcyI6WyIuLi9zcmMvc2VuZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZ3JhbSBmcm9tICdkZ3JhbSc7XG5pbXBvcnQgZG5zIGZyb20gJ2Rucyc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgKiBhcyBwdW55Y29kZSBmcm9tICdwdW55Y29kZSc7XG5pbXBvcnQgeyBBYm9ydFNpZ25hbCB9IGZyb20gJ25vZGUtYWJvcnQtY29udHJvbGxlcic7XG5cbnR5cGUgTG9va3VwRnVuY3Rpb24gPSAoaG9zdG5hbWU6IHN0cmluZywgb3B0aW9uczogZG5zLkxvb2t1cEFsbE9wdGlvbnMsIGNhbGxiYWNrOiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24gfCBudWxsLCBhZGRyZXNzZXM6IGRucy5Mb29rdXBBZGRyZXNzW10pID0+IHZvaWQpID0+IHZvaWQ7XG5cbmNsYXNzIEFib3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZCcpO1xuXG4gICAgdGhpcy5jb2RlID0gJ0FCT1JUX0VSUic7XG4gICAgdGhpcy5uYW1lID0gJ0Fib3J0RXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJhbGxlbFNlbmRTdHJhdGVneSB7XG4gIGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXTtcbiAgcG9ydDogbnVtYmVyO1xuICByZXF1ZXN0OiBCdWZmZXI7XG5cbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcblxuICBjb25zdHJ1Y3RvcihhZGRyZXNzZXM6IGRucy5Mb29rdXBBZGRyZXNzW10sIHBvcnQ6IG51bWJlciwgc2lnbmFsOiBBYm9ydFNpZ25hbCwgcmVxdWVzdDogQnVmZmVyKSB7XG4gICAgdGhpcy5hZGRyZXNzZXMgPSBhZGRyZXNzZXM7XG4gICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0O1xuICAgIHRoaXMuc2lnbmFsID0gc2lnbmFsO1xuICB9XG5cbiAgc2VuZChjYjogKGVycm9yOiBFcnJvciB8IG51bGwsIG1lc3NhZ2U/OiBCdWZmZXIpID0+IHZvaWQpIHtcbiAgICBjb25zdCBzaWduYWwgPSB0aGlzLnNpZ25hbDtcblxuICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIGNiKG5ldyBBYm9ydEVycm9yKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNvY2tldHM6IGRncmFtLlNvY2tldFtdID0gW107XG5cbiAgICBsZXQgZXJyb3JDb3VudCA9IDA7XG5cbiAgICBjb25zdCBvbkVycm9yID0gKGVycjogRXJyb3IpID0+IHtcbiAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgaWYgKGVycm9yQ291bnQgPT09IHRoaXMuYWRkcmVzc2VzLmxlbmd0aCkge1xuICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgICAgICAgY2xlYXJTb2NrZXRzKCk7XG5cbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25NZXNzYWdlID0gKG1lc3NhZ2U6IEJ1ZmZlcikgPT4ge1xuICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG4gICAgICBjbGVhclNvY2tldHMoKTtcblxuICAgICAgY2IobnVsbCwgbWVzc2FnZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICBjbGVhclNvY2tldHMoKTtcblxuICAgICAgY2IobmV3IEFib3J0RXJyb3IoKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNsZWFyU29ja2V0cyA9ICgpID0+IHtcbiAgICAgIGZvciAoY29uc3Qgc29ja2V0IG9mIHNvY2tldHMpIHtcbiAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xuICAgICAgICBzb2NrZXQuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmFkZHJlc3Nlcy5sZW5ndGg7IGorKykge1xuICAgICAgY29uc3QgdWRwVHlwZSA9IHRoaXMuYWRkcmVzc2VzW2pdLmZhbWlseSA9PT0gNiA/ICd1ZHA2JyA6ICd1ZHA0JztcblxuICAgICAgY29uc3Qgc29ja2V0ID0gZGdyYW0uY3JlYXRlU29ja2V0KHVkcFR5cGUpO1xuICAgICAgc29ja2V0cy5wdXNoKHNvY2tldCk7XG4gICAgICBzb2NrZXQub24oJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICBzb2NrZXQub24oJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xuICAgICAgc29ja2V0LnNlbmQodGhpcy5yZXF1ZXN0LCAwLCB0aGlzLnJlcXVlc3QubGVuZ3RoLCB0aGlzLnBvcnQsIHRoaXMuYWRkcmVzc2VzW2pdLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VuZGVyIHtcbiAgaG9zdDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG4gIHJlcXVlc3Q6IEJ1ZmZlcjtcbiAgbG9va3VwOiBMb29rdXBGdW5jdGlvbjtcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcblxuICBjb25zdHJ1Y3Rvcihob3N0OiBzdHJpbmcsIHBvcnQ6IG51bWJlciwgbG9va3VwOiBMb29rdXBGdW5jdGlvbiwgc2lnbmFsOiBBYm9ydFNpZ25hbCwgcmVxdWVzdDogQnVmZmVyKSB7XG4gICAgdGhpcy5ob3N0ID0gaG9zdDtcbiAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3Q7XG4gICAgdGhpcy5sb29rdXAgPSBsb29rdXA7XG4gICAgdGhpcy5zaWduYWwgPSBzaWduYWw7XG4gIH1cblxuICBleGVjdXRlKGNiOiAoZXJyb3I6IEVycm9yIHwgbnVsbCwgbWVzc2FnZT86IEJ1ZmZlcikgPT4gdm9pZCkge1xuICAgIGlmIChuZXQuaXNJUCh0aGlzLmhvc3QpKSB7XG4gICAgICB0aGlzLmV4ZWN1dGVGb3JJUChjYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhlY3V0ZUZvckhvc3RuYW1lKGNiKTtcbiAgICB9XG4gIH1cblxuICBleGVjdXRlRm9ySVAoY2I6IChlcnJvcjogRXJyb3IgfCBudWxsLCBtZXNzYWdlPzogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5leGVjdXRlRm9yQWRkcmVzc2VzKFt7IGFkZHJlc3M6IHRoaXMuaG9zdCwgZmFtaWx5OiBuZXQuaXNJUHY2KHRoaXMuaG9zdCkgPyA2IDogNCB9XSwgY2IpO1xuICB9XG5cbiAgLy8gV3JhcHBlciBmb3Igc3R1YmJpbmcuIFNpbm9uIGRvZXMgbm90IGhhdmUgc3VwcG9ydCBmb3Igc3R1YmJpbmcgbW9kdWxlIGZ1bmN0aW9ucy5cbiAgaW52b2tlTG9va3VwQWxsKGhvc3Q6IHN0cmluZywgY2I6IChlcnJvcjogRXJyb3IgfCBudWxsLCBhZGRyZXNzZXM/OiBkbnMuTG9va3VwQWRkcmVzc1tdKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5sb29rdXAuY2FsbChudWxsLCBwdW55Y29kZS50b0FTQ0lJKGhvc3QpLCB7IGFsbDogdHJ1ZSB9LCBjYik7XG4gIH1cblxuICBleGVjdXRlRm9ySG9zdG5hbWUoY2I6IChlcnJvcjogRXJyb3IgfCBudWxsLCBtZXNzYWdlPzogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5pbnZva2VMb29rdXBBbGwodGhpcy5ob3N0LCAoZXJyLCBhZGRyZXNzZXMpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZXhlY3V0ZUZvckFkZHJlc3NlcyhhZGRyZXNzZXMhLCBjYik7XG4gICAgfSk7XG4gIH1cblxuICBleGVjdXRlRm9yQWRkcmVzc2VzKGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXSwgY2I6IChlcnJvcjogRXJyb3IgfCBudWxsLCBtZXNzYWdlPzogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgcGFyYWxsZWxTZW5kU3RyYXRlZ3kgPSBuZXcgUGFyYWxsZWxTZW5kU3RyYXRlZ3koYWRkcmVzc2VzLCB0aGlzLnBvcnQsIHRoaXMuc2lnbmFsLCB0aGlzLnJlcXVlc3QpO1xuICAgIHBhcmFsbGVsU2VuZFN0cmF0ZWd5LnNlbmQoY2IpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7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
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZW5kSW5QYXJhbGxlbCIsImFkZHJlc3NlcyIsInBvcnQiLCJyZXF1ZXN0Iiwic2lnbmFsIiwiYWJvcnRlZCIsIkFib3J0RXJyb3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNvY2tldHMiLCJlcnJvckNvdW50Iiwib25FcnJvciIsImVyciIsImxlbmd0aCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkFib3J0IiwiY2xlYXJTb2NrZXRzIiwib25NZXNzYWdlIiwibWVzc2FnZSIsInNvY2tldCIsInJlbW92ZUxpc3RlbmVyIiwiY2xvc2UiLCJhZGRFdmVudExpc3RlbmVyIiwib25jZSIsImoiLCJ1ZHBUeXBlIiwiZmFtaWx5IiwiZGdyYW0iLCJjcmVhdGVTb2NrZXQiLCJwdXNoIiwib24iLCJzZW5kIiwiYWRkcmVzcyIsInNlbmRNZXNzYWdlIiwiaG9zdCIsImxvb2t1cCIsIm5ldCIsImlzSVAiLCJpc0lQdjYiLCJwdW55Y29kZSIsInRvQVNDSUkiLCJhbGwiXSwic291cmNlcyI6WyIuLi9zcmMvc2VuZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZ3JhbSBmcm9tICdkZ3JhbSc7XG5pbXBvcnQgZG5zIGZyb20gJ2Rucyc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgKiBhcyBwdW55Y29kZSBmcm9tICdwdW55Y29kZSc7XG5pbXBvcnQgeyBBYm9ydFNpZ25hbCB9IGZyb20gJ25vZGUtYWJvcnQtY29udHJvbGxlcic7XG5cbmltcG9ydCBBYm9ydEVycm9yIGZyb20gJy4vZXJyb3JzL2Fib3J0LWVycm9yJztcblxudHlwZSBMb29rdXBGdW5jdGlvbiA9IChob3N0bmFtZTogc3RyaW5nLCBvcHRpb25zOiBkbnMuTG9va3VwQWxsT3B0aW9ucywgY2FsbGJhY2s6IChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiB8IG51bGwsIGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXSkgPT4gdm9pZCkgPT4gdm9pZDtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRJblBhcmFsbGVsKGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXSwgcG9ydDogbnVtYmVyLCByZXF1ZXN0OiBCdWZmZXIsIHNpZ25hbDogQWJvcnRTaWduYWwpIHtcbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxCdWZmZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzb2NrZXRzOiBkZ3JhbS5Tb2NrZXRbXSA9IFtdO1xuXG4gICAgbGV0IGVycm9yQ291bnQgPSAwO1xuXG4gICAgY29uc3Qgb25FcnJvciA9IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgIGlmIChlcnJvckNvdW50ID09PSBhZGRyZXNzZXMubGVuZ3RoKSB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuICAgICAgICBjbGVhclNvY2tldHMoKTtcblxuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25NZXNzYWdlID0gKG1lc3NhZ2U6IEJ1ZmZlcikgPT4ge1xuICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG4gICAgICBjbGVhclNvY2tldHMoKTtcblxuICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICAgIGNsZWFyU29ja2V0cygpO1xuXG4gICAgICByZWplY3QobmV3IEFib3J0RXJyb3IoKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNsZWFyU29ja2V0cyA9ICgpID0+IHtcbiAgICAgIGZvciAoY29uc3Qgc29ja2V0IG9mIHNvY2tldHMpIHtcbiAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xuICAgICAgICBzb2NrZXQuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBhZGRyZXNzZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbnN0IHVkcFR5cGUgPSBhZGRyZXNzZXNbal0uZmFtaWx5ID09PSA2ID8gJ3VkcDYnIDogJ3VkcDQnO1xuXG4gICAgICBjb25zdCBzb2NrZXQgPSBkZ3JhbS5jcmVhdGVTb2NrZXQodWRwVHlwZSk7XG4gICAgICBzb2NrZXRzLnB1c2goc29ja2V0KTtcbiAgICAgIHNvY2tldC5vbignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgIHNvY2tldC5vbignbWVzc2FnZScsIG9uTWVzc2FnZSk7XG4gICAgICBzb2NrZXQuc2VuZChyZXF1ZXN0LCAwLCByZXF1ZXN0Lmxlbmd0aCwgcG9ydCwgYWRkcmVzc2VzW2pdLmFkZHJlc3MpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kTWVzc2FnZShob3N0OiBzdHJpbmcsIHBvcnQ6IG51bWJlciwgbG9va3VwOiBMb29rdXBGdW5jdGlvbiwgc2lnbmFsOiBBYm9ydFNpZ25hbCwgcmVxdWVzdDogQnVmZmVyKSB7XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBBYm9ydEVycm9yKCk7XG4gIH1cblxuICBsZXQgYWRkcmVzc2VzOiBkbnMuTG9va3VwQWRkcmVzc1tdO1xuXG4gIGlmIChuZXQuaXNJUChob3N0KSkge1xuICAgIGFkZHJlc3NlcyA9IFtcbiAgICAgIHsgYWRkcmVzczogaG9zdCwgZmFtaWx5OiBuZXQuaXNJUHY2KGhvc3QpID8gNiA6IDQgfVxuICAgIF07XG4gIH0gZWxzZSB7XG4gICAgYWRkcmVzc2VzID0gYXdhaXQgbmV3IFByb21pc2U8ZG5zLkxvb2t1cEFkZHJlc3NbXT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBBYm9ydEVycm9yKCkpO1xuICAgICAgfTtcblxuICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG5cbiAgICAgIGxvb2t1cChwdW55Y29kZS50b0FTQ0lJKGhvc3QpLCB7IGFsbDogdHJ1ZSB9LCAoZXJyLCBhZGRyZXNzZXMpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG5cbiAgICAgICAgZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGFkZHJlc3Nlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzZW5kSW5QYXJhbGxlbChhZGRyZXNzZXMsIHBvcnQsIHJlcXVlc3QsIHNpZ25hbCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBR0E7Ozs7Ozs7O0FBSU8sZUFBZUEsY0FBZixDQUE4QkMsU0FBOUIsRUFBOERDLElBQTlELEVBQTRFQyxPQUE1RSxFQUE2RkMsTUFBN0YsRUFBa0g7RUFDdkgsSUFBSUEsTUFBTSxDQUFDQyxPQUFYLEVBQW9CO0lBQ2xCLE1BQU0sSUFBSUMsbUJBQUosRUFBTjtFQUNEOztFQUVELE9BQU8sTUFBTSxJQUFJQyxPQUFKLENBQW9CLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtJQUNwRCxNQUFNQyxPQUF1QixHQUFHLEVBQWhDO0lBRUEsSUFBSUMsVUFBVSxHQUFHLENBQWpCOztJQUVBLE1BQU1DLE9BQU8sR0FBSUMsR0FBRCxJQUFnQjtNQUM5QkYsVUFBVTs7TUFFVixJQUFJQSxVQUFVLEtBQUtWLFNBQVMsQ0FBQ2EsTUFBN0IsRUFB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