Socket
Socket
Sign inDemoInstall

@glimmer/validator

Package Overview
Dependencies
Maintainers
12
Versions
143
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/validator - npm Package Compare versions

Comparing version 0.55.1 to 0.55.2

2

dist/commonjs/es2017/lib/validators.js

@@ -291,2 +291,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBTU8sTUFBTSxRQUFRLEdBQWQsQ0FBQTs7QUFDQSxNQUFNLE9BQU8sR0FBYixDQUFBOztBQUNBLE1BQU0sUUFBUSxHQUFkLGdCQUFBLEMsQ0FBNkM7OztBQUVwRCxJQUFJLFNBQVMsR0FBYixPQUFBOztBQUVNLFNBQUEsSUFBQSxHQUFjO0FBQ2xCLEVBQUEsU0FBUztFQUdYOzs7QUFFTyxNQUFNLE9BQU8sR0FBa0IsbUJBQS9CLGFBQStCLENBQS9CLEMsQ0FnQlA7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY00sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUErQjtBQUNuQyxTQUFBLFNBQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7QUFVTSxTQUFBLFdBQUEsQ0FBQSxHQUFBLEVBQUEsUUFBQSxFQUFrRDtBQUN0RCxTQUFPLFFBQVEsSUFBSSxHQUFHLENBQXRCLE9BQXNCLENBQUgsRUFBbkI7QUFDRDs7QUFpQkQsTUFBTSxJQUFJLEdBQWtCLG1CQUE1QixVQUE0QixDQUE1QjtBQUVPLElBQUEsWUFBQTs7O0FBRVAsSUFBQSxVQUFBLEVBQVc7QUFDVCx5QkFBQSxZQUFZLEdBQUcsSUFBZixPQUFlLEVBQWY7QUFDRDs7QUFxQkQsTUFBQSxrQkFBQSxDQUF3QjtBQWF0QixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQXFDO0FBWjdCLFNBQUEsUUFBQSxHQUFBLE9BQUE7QUFDQSxTQUFBLFdBQUEsR0FBQSxPQUFBO0FBQ0EsU0FBQSxTQUFBLEdBQUEsT0FBQTtBQUVBLFNBQUEsVUFBQSxHQUFBLEtBQUE7QUFDQSxTQUFBLE9BQUEsR0FBQSxJQUFBO0FBRUEsU0FBQSxNQUFBLEdBQUEsSUFBQTtBQUNBLFNBQUEsaUJBQUEsR0FBQSxJQUFBO0FBS04sU0FBQSxJQUFB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QyxRQUFJLEdBQUcsR0FBRyxJQUFJLENBQWQsQ0FBYyxDQUFkO0FBQ0EsUUFBSSxHQUFHLEtBQVAsWUFBQSxFQUEwQjtBQUMxQixJQUFBLFNBQVMsQ0FBVCxJQUFBLENBQUEsR0FBQTtBQUNEOztBQUVELFNBQU8sbUJBQW1CLENBQTFCLFNBQTBCLENBQTFCO0FBQ0Q7O0FBRUssU0FBQSxtQkFBQSxDQUFBLElBQUEsRUFBeUM7QUFDN0MsVUFBUSxJQUFJLENBQVosTUFBQTtBQUNFLFNBQUEsQ0FBQTtBQUNFLGFBQUEsWUFBQTs7QUFDRixTQUFBLENBQUE7QUFDRSxhQUFPLElBQUksQ0FBWCxDQUFXLENBQVg7O0FBQ0Y7QUFDRSxVQUFJLEdBQUcsR0FBRyxJQUFBLGtCQUFBLENBQXNCO0FBQUE7QUFBdEIsT0FBVjtBQUNDLE1BQUEsR0FBVyxDQUFYLE9BQUEsR0FBQSxJQUFBO0FBQ0QsYUFBQSxHQUFBO0FBUko7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IFVuaW9uVG9JbnRlcnNlY3Rpb24sIHN5bWJvbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgYXNzZXJ0VGFnTm90Q29uc3VtZWQgfSBmcm9tICcuL2RlYnVnJztcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgdHlwZSBSZXZpc2lvbiA9IG51bWJlcjtcblxuZXhwb3J0IGNvbnN0IENPTlNUQU5UOiBSZXZpc2lvbiA9IDA7XG5leHBvcnQgY29uc3QgSU5JVElBTDogUmV2aXNpb24gPSAxO1xuZXhwb3J0IGNvbnN0IFZPTEFUSUxFOiBSZXZpc2lvbiA9IDkwMDcxOTkyNTQ3NDA5OTE7IC8vIE1BWF9JTlRcblxubGV0ICRSRVZJU0lPTiA9IElOSVRJQUw7XG5cbmV4cG9ydCBmdW5jdGlvbiBidW1wKCkge1xuICAkUkVWSVNJT04rKztcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY29uc3QgQ09NUFVURTogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnVEFHX0NPTVBVVEUnKTtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUYWc8VD4ge1xuICBbQ09NUFVURV0oKTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWcgZXh0ZW5kcyBFbnRpdHlUYWc8UmV2aXNpb24+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VGFnZ2VkPFQ+IHtcbiAgdGFnOiBFbnRpdHlUYWc8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnZ2VkIHtcbiAgdGFnOiBUYWc7XG59XG5cbi8vLy8vLy8vLy9cblxuLyoqXG4gKiBgdmFsdWVgIHJlY2VpdmVzIGEgdGFnIGFuZCByZXR1cm5zIGFuIG9wYXF1ZSBSZXZpc2lvbiBiYXNlZCBvbiB0aGF0IHRhZy4gVGhpc1xuICogc25hcHNob3QgY2FuIHRoZW4gbGF0ZXIgYmUgcGFzc2VkIHRvIGB2YWxpZGF0ZWAgd2l0aCB0aGUgc2FtZSB0YWcgdG9cbiAqIGRldGVybWluZSBpZiB0aGUgdGFnIGhhcyBjaGFuZ2VkIGF0IGFsbCBzaW5jZSB0aGUgdGltZSB0aGF0IGB2YWx1ZWAgd2FzXG4gKiBjYWxsZWQuXG4gKlxuICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgZ2xvYmFsIHJldmlzaW9uIGNvdW50IGRpcmVjdGx5IGZvclxuICogcGVyZm9ybWFuY2UgcmVhc29ucy4gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBzaG91bGQgbm90IGJlXG4gKiByZWxpZWQgb24gZGlyZWN0bHkgYnkgdXNlcnMgb2YgdGhlc2UgQVBJcy4gSW5zdGVhZCwgUmV2aXNpb25zIHNob3VsZCBiZVxuICogdHJlYXRlZCBhcyBpZiB0aGV5IGFyZSBvcGFxdWUvdW5rbm93biwgYW5kIHNob3VsZCBvbmx5IGJlIGludGVyYWN0ZWQgd2l0aCB2aWFcbiAqIHRoZSBgdmFsdWVgL2B2YWxpZGF0ZWAgQVBJLlxuICpcbiAqIEBwYXJhbSB0YWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRm9yVGFnKF90YWc6IFRhZyk6IFJldmlzaW9uIHtcbiAgcmV0dXJuICRSRVZJU0lPTjtcbn1cblxuLyoqXG4gKiBgdmFsaWRhdGVgIHJlY2VpdmVzIGEgdGFnIGFuZCBhIHNuYXBzaG90IGZyb20gYSBwcmV2aW91cyBjYWxsIHRvIGB2YWx1ZWAgd2l0aFxuICogdGhlIHNhbWUgdGFnLCBhbmQgZGV0ZXJtaW5lcyBpZiB0aGUgdGFnIGlzIHN0aWxsIHZhbGlkIGNvbXBhcmVkIHRvIHRoZVxuICogc25hcHNob3QuIElmIHRoZSB0YWcncyBzdGF0ZSBoYXMgY2hhbmdlZCBhdCBhbGwgc2luY2UgdGhlbiwgYHZhbGlkYXRlYCB3aWxsXG4gKiByZXR1cm4gZmFsc2UsIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiB0cnVlLiBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFcbiAqIGNhbGN1bGF0aW9uIHJlbGF0ZWQgdG8gdGhlIHRhZ3Mgc2hvdWxkIGJlIHJlcnVuLlxuICpcbiAqIEBwYXJhbSB0YWdcbiAqIEBwYXJhbSBzbmFwc2hvdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYWcodGFnOiBUYWcsIHNuYXBzaG90OiBSZXZpc2lvbikge1xuICByZXR1cm4gc25hcHNob3QgPj0gdGFnW0NPTVBVVEVdKCk7XG59XG5cbi8vLy8vLy8vLy9cblxuLyoqXG4gKiBUaGlzIGVudW0gcmVwcmVzZW50cyBhbGwgb2YgdGhlIHBvc3NpYmxlIHRhZyB0eXBlcyBmb3IgdGhlIG1vbm9tb3JwaGljIHRhZyBjbGFzcy5cbiAqIE90aGVyIGN1c3RvbSB0YWcgY2xhc3NlcyBjYW4gZXhpc3QsIHN1Y2ggYXMgQ3VycmVudFRhZyBhbmQgVm9sYXRpbGVUYWcsIGJ1dCBmb3JcbiAqIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFueSB0eXBlIG9mIHRhZyB0aGF0IGlzIG1lYW50IHRvIGJlIHVzZWQgZnJlcXVlbnRseSBzaG91bGRcbiAqIGJlIGFkZGVkIHRvIHRoZSBtb25vbW9ycGhpYyB0YWcuXG4gKi9cbmNvbnN0IGVudW0gTW9ub21vcnBoaWNUYWdUeXBlcyB7XG4gIERpcnR5YWJsZSxcbiAgVXBkYXRhYmxlLFxuICBDb21iaW5hdG9yLFxuICBDb25zdGFudCxcbn1cblxuY29uc3QgVFlQRTogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnVEFHX1RZUEUnKTtcblxuZXhwb3J0IGxldCBBTExPV19DWUNMRVM6IFdlYWtNYXA8VGFnLCBib29sZWFuPiB8IHVuZGVmaW5lZDtcblxuaWYgKERFQlVHKSB7XG4gIEFMTE9XX0NZQ0xFUyA9IG5ldyBXZWFrTWFwKCk7XG59XG5cbmludGVyZmFjZSBNb25vbW9ycGhpY1RhZ0Jhc2U8VCBleHRlbmRzIE1vbm9tb3JwaGljVGFnVHlwZXM+IGV4dGVuZHMgVGFnIHtcbiAgW1RZUEVdOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcnR5YWJsZVRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZT4ge31cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRhYmxlVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlPiB7fVxuZXhwb3J0IGludGVyZmFjZSBDb21iaW5hdG9yVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuQ29tYmluYXRvcj4ge31cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RhbnRUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudD4ge31cblxuaW50ZXJmYWNlIE1vbm9tb3JwaGljVGFnTWFwcGluZyB7XG4gIFtNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZV06IERpcnR5YWJsZVRhZztcbiAgW01vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlXTogVXBkYXRhYmxlVGFnO1xuICBbTW9ub21vcnBoaWNUYWdUeXBlcy5Db21iaW5hdG9yXTogQ29tYmluYXRvclRhZztcbiAgW01vbm9tb3JwaGljVGFnVHlwZXMuQ29uc3RhbnRdOiBDb25zdGFudFRhZztcbn1cblxudHlwZSBNb25vbW9ycGhpY1RhZyA9IFVuaW9uVG9JbnRlcnNlY3Rpb248TW9ub21vcnBoaWNUYWdNYXBwaW5nW01vbm9tb3JwaGljVGFnVHlwZXNdPjtcbnR5cGUgTW9ub21vcnBoaWNUYWdUeXBlID0gVW5pb25Ub0ludGVyc2VjdGlvbjxNb25vbW9ycGhpY1RhZ1R5cGVzPjtcblxuY2xhc3MgTW9ub21vcnBoaWNUYWdJbXBsIGltcGxlbWVudHMgTW9ub21vcnBoaWNUYWcge1xuICBwcml2YXRlIHJldmlzaW9uID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBsYXN0Q2hlY2tlZCA9IElOSVRJQUw7XG4gIHByaXZhdGUgbGFzdFZhbHVlID0gSU5JVElBTDtcblxuICBwcml2YXRlIGlzVXBkYXRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdWJ0YWdzOiBUYWdbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc3VidGFnOiBUYWcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdWJ0YWdCdWZmZXJDYWNoZTogUmV2aXNpb24gfCBudWxsID0gbnVsbDtcblxuICBbVFlQRV06IE1vbm9tb3JwaGljVGFnVHlwZTtcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBNb25vbW9ycGhpY1RhZ1R5cGVzKSB7XG4gICAgdGhpc1tUWVBFXSA9IHR5cGUgYXMgTW9ub21vcnBoaWNUYWdUeXBlO1xuICB9XG5cbiAgW0NPTVBVVEVdKCk6IFJldmlzaW9uIHtcbiAgICBsZXQgeyBsYXN0Q2hlY2tlZCB9ID0gdGhpcztcblxuICAgIGlmICh0aGlzLmlzVXBkYXRpbmcgPT09IHRydWUpIHtcbiAgICAgIGlmIChERUJVRyAmJiAhQUxMT1dfQ1lDTEVTIS5oYXModGhpcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDeWNsZXMgaW4gdGFncyBhcmUgbm90IGFsbG93ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICsrJFJFVklTSU9OO1xuICAgIH0gZWxzZSBpZiAobGFzdENoZWNrZWQgIT09ICRSRVZJU0lPTikge1xuICAgICAgdGhpcy5pc1VwZGF0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMubGFzdENoZWNrZWQgPSAkUkVWSVNJT047XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCB7IHN1YnRhZ3MsIHN1YnRhZywgc3VidGFnQnVmZmVyQ2FjaGUsIGxhc3RWYWx1ZSwgcmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHN1YnRhZyAhPT0gbnVsbCkge1xuICAgICAgICAgIGxldCBzdWJ0YWdWYWx1ZSA9IHN1YnRhZ1tDT01QVVRFXSgpO1xuXG4gICAgICAgICAgaWYgKHN1YnRhZ1ZhbHVlID09PSBzdWJ0YWdCdWZmZXJDYWNoZSkge1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heChyZXZpc2lvbiwgbGFzdFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHRlbXBvcmFyeSBidWZmZXIgY2FjaGVcbiAgICAgICAgICAgIHRoaXMuc3VidGFnQnVmZmVyQ2FjaGUgPSBudWxsO1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heChyZXZpc2lvbiwgc3VidGFnVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJ0YWdzICE9PSBudWxsKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJ0YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzdWJ0YWdzW2ldW0NPTVBVVEVdKCk7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHZhbHVlLCByZXZpc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSByZXZpc2lvbjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyB1cGRhdGVUYWcoX3RhZzogVXBkYXRhYmxlVGFnLCBfc3VidGFnOiBUYWcpIHtcbiAgICBpZiAoREVCVUcgJiYgX3RhZ1tUWVBFXSAhPT0gTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGVkIHRvIHVwZGF0ZSBhIHRhZyB0aGF0IHdhcyBub3QgdXBkYXRhYmxlJyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVFMgMy43IHNob3VsZCBhbGxvdyB1cyB0byBkbyB0aGlzIHZpYSBhc3NlcnRpb25cbiAgICBsZXQgdGFnID0gX3RhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGw7XG4gICAgbGV0IHN1YnRhZyA9IF9zdWJ0YWcgYXMgTW9ub21vcnBoaWNUYWdJbXBsO1xuXG4gICAgaWYgKHN1YnRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgICB0YWcuc3VidGFnID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgcG9zc2liaWxpdGllcyB3aGVuIHVwZGF0aW5nIGEgc3VidGFnOlxuICAgICAgLy9cbiAgICAgIC8vIDEuIHN1YnRhZ1tDT01QVVRFXSgpIDw9IHRhZ1tDT01QVVRFXSgpO1xuICAgICAgLy8gMi4gc3VidGFnW0NPTVBVVEVdKCkgPiB0YWdbQ09NUFVURV0oKTtcbiAgICAgIC8vXG4gICAgICAvLyBUaGUgZmlyc3QgcG9zc2liaWxpdHkgaXMgY29tcGxldGVseSBmaW5lIHdpdGhpbiBvdXIgY2FjaGluZyBtb2RlbCwgYnV0XG4gICAgICAvLyB0aGUgc2Vjb25kIHBvc3NpYmlsaXR5IHByZXNlbnRzIGEgcHJvYmxlbS4gSWYgdGhlIHBhcmVudCB0YWcgaGFzXG4gICAgICAvLyBhbHJlYWR5IGJlZW4gcmVhZCwgdGhlbiBpdCdzIHZhbHVlIGlzIGNhY2hlZCBhbmQgd2lsbCBub3QgdXBkYXRlIHRvXG4gICAgICAvLyByZWZsZWN0IHRoZSBzdWJ0YWcncyBncmVhdGVyIHZhbHVlLiBOZXh0IHRpbWUgdGhlIGNhY2hlIGlzIGJ1c3RlZCwgdGhlXG4gICAgICAvLyBzdWJ0YWcncyB2YWx1ZSBfd2lsbF8gYmUgcmVhZCwgYW5kIGl0J3MgdmFsdWUgd2lsbCBiZSBfZ3JlYXRlcl8gdGhhblxuICAgICAgLy8gdGhlIHNhdmVkIHNuYXBzaG90IG9mIHRoZSBwYXJlbnQsIGNhdXNpbmcgdGhlIHJlc3VsdGluZyBjYWxjdWxhdGlvbiB0b1xuICAgICAgLy8gYmUgcmVydW4gZXJyb25lb3VzbHkuXG4gICAgICAvL1xuICAgICAgLy8gSW4gb3JkZXIgdG8gcHJldmVudCB0aGlzLCB3aGVuIHdlIGZpcnN0IHVwZGF0ZSB0byBhIG5ldyBzdWJ0YWcgd2Ugc3RvcmVcbiAgICAgIC8vIGl0cyBjb21wdXRlZCB2YWx1ZSwgYW5kIHRoZW4gY2hlY2sgYWdhaW5zdCB0aGF0IGNvbXB1dGVkIHZhbHVlIG9uXG4gICAgICAvLyBzdWJzZXF1ZW50IHVwZGF0ZXMuIElmIGl0cyB2YWx1ZSBoYXNuJ3QgY2hhbmdlZCwgdGhlbiB3ZSByZXR1cm4gdGhlXG4gICAgICAvLyBwYXJlbnQncyBwcmV2aW91cyB2YWx1ZS4gT25jZSB0aGUgc3VidGFnIGNoYW5nZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxuICAgICAgLy8gd2UgY2xlYXIgdGhlIGNhY2hlIGFuZCBldmVyeXRoaW5nIGlzIGZpbmFsbHkgaW4gc3luYyB3aXRoIHRoZSBwYXJlbnQuXG4gICAgICB0YWcuc3VidGFnQnVmZmVyQ2FjaGUgPSBzdWJ0YWdbQ09NUFVURV0oKTtcbiAgICAgIHRhZy5zdWJ0YWcgPSBzdWJ0YWc7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpcnR5VGFnKHRhZzogRGlydHlhYmxlVGFnIHwgVXBkYXRhYmxlVGFnKSB7XG4gICAgaWYgKFxuICAgICAgREVCVUcgJiZcbiAgICAgICEodGFnW1RZUEVdID09PSBNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSB8fCB0YWdbVFlQRV0gPT09IE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0ZWQgdG8gZGlydHkgYSB0YWcgdGhhdCB3YXMgbm90IGRpcnR5YWJsZScpO1xuICAgIH1cblxuICAgIGlmIChERUJVRykge1xuICAgICAgLy8gVXN1YWxseSBieSB0aGlzIHBvaW50LCB3ZSd2ZSBhbHJlYWR5IGFzc2VydGVkIHdpdGggYmV0dGVyIGVycm9yIGluZm9ybWF0aW9uLFxuICAgICAgLy8gYnV0IHRoaXMgaXMgb3VyIGxhc3QgbGluZSBvZiBkZWZlbnNlLlxuICAgICAgYXNzZXJ0VGFnTm90Q29uc3VtZWQhKHRhZyk7XG4gICAgfVxuXG4gICAgKHRhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGwpLnJldmlzaW9uID0gKyskUkVWSVNJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRpcnR5VGFnID0gTW9ub21vcnBoaWNUYWdJbXBsLmRpcnR5VGFnO1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVRhZyA9IE1vbm9tb3JwaGljVGFnSW1wbC51cGRhdGVUYWc7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhZygpOiBEaXJ0eWFibGVUYWcge1xuICByZXR1cm4gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVcGRhdGFibGVUYWcoKTogVXBkYXRhYmxlVGFnIHtcbiAgcmV0dXJuIG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUpO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVF9UQUcgPSBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuQ29uc3RhbnQpIGFzIENvbnN0YW50VGFnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdFRhZ2dlZCh7IHRhZyB9OiBUYWdnZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIHRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdFRhZyh0YWc6IFRhZyk6IHRhZyBpcyBDb25zdGFudFRhZyB7XG4gIHJldHVybiB0YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY2xhc3MgVm9sYXRpbGVUYWcgaW1wbGVtZW50cyBUYWcge1xuICBbQ09NUFVURV0oKSB7XG4gICAgcmV0dXJuIFZPTEFUSUxFO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBWT0xBVElMRV9UQUcgPSBuZXcgVm9sYXRpbGVUYWcoKTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY2xhc3MgQ3VycmVudFRhZyBpbXBsZW1lbnRzIEN1cnJlbnRUYWcge1xuICBbQ09NUFVURV0oKSB7XG4gICAgcmV0dXJuICRSRVZJU0lPTjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ1VSUkVOVF9UQUcgPSBuZXcgQ3VycmVudFRhZygpO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKHRhZ3M6IFRhZ1tdKTogVGFnIHtcbiAgbGV0IG9wdGltaXplZDogVGFnW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IHRhZ3MubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IHRhZyA9IHRhZ3NbaV07XG4gICAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKSBjb250aW51ZTtcbiAgICBvcHRpbWl6ZWQucHVzaCh0YWcpO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUNvbWJpbmF0b3JUYWcob3B0aW1pemVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbWJpbmF0b3JUYWcodGFnczogVGFnW10pOiBUYWcge1xuICBzd2l0Y2ggKHRhZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuIENPTlNUQU5UX1RBRztcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gdGFnc1swXTtcbiAgICBkZWZhdWx0OlxuICAgICAgbGV0IHRhZyA9IG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5Db21iaW5hdG9yKSBhcyBDb21iaW5hdG9yVGFnO1xuICAgICAgKHRhZyBhcyBhbnkpLnN1YnRhZ3MgPSB0YWdzO1xuICAgICAgcmV0dXJuIHRhZztcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBTU8sTUFBTSxRQUFRLEdBQWQsQ0FBQTs7QUFDQSxNQUFNLE9BQU8sR0FBYixDQUFBOztBQUNBLE1BQU0sUUFBUSxHQUFkLGdCQUFBLEMsQ0FBNkM7OztBQUVwRCxJQUFJLFNBQVMsR0FBYixPQUFBOztBQUVNLFNBQUEsSUFBQSxHQUFjO0FBQ2xCLEVBQUEsU0FBUztFQUdYOzs7QUFFTyxNQUFNLE9BQU8sR0FBa0IsbUJBQS9CLGFBQStCLENBQS9CLEMsQ0FnQlA7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY00sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUErQjtBQUNuQyxTQUFBLFNBQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7QUFVTSxTQUFBLFdBQUEsQ0FBQSxHQUFBLEVBQUEsUUFBQSxFQUFrRDtBQUN0RCxTQUFPLFFBQVEsSUFBSSxHQUFHLENBQXRCLE9BQXNCLENBQUgsRUFBbkI7QUFDRDs7QUFpQkQsTUFBTSxJQUFJLEdBQWtCLG1CQUE1QixVQUE0QixDQUE1QjtBQUVPLElBQUEsWUFBQTs7O0FBRVAsSUFBQSxVQUFBLEVBQVc7QUFDVCx5QkFBQSxZQUFZLEdBQUcsSUFBZixPQUFlLEVBQWY7QUFDRDs7QUFXRCxNQUFBLGtCQUFBLENBQXdCO0FBYXRCLEVBQUEsV0FBQSxDQUFBLElBQUEsRUFBbUI7QUFaWCxTQUFBLFFBQUEsR0FBQSxPQUFBO0FBQ0EsU0FBQSxXQUFBLEdBQUEsT0FBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLE9BQUE7QUFFQSxTQUFBLFVBQUEsR0FBQSxLQUFBO0FBQ0EsU0FBQSxPQUFBLEdBQUEsSUFBQTtBQUVBLFNBQUEsTUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLGlCQUFBLEdBQUEsSUFBQTtBQUtOLFNBQUEsSUFBQSxJ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LFFBQUksR0FBRyxHQUFHLElBQUksQ0FBZCxDQUFjLENBQWQ7QUFDQSxRQUFJLEdBQUcsS0FBUCxZQUFBLEVBQTBCO0FBQzFCLElBQUEsU0FBUyxDQUFULElBQUEsQ0FBQSxHQUFBO0FBQ0Q7O0FBRUQsU0FBTyxtQkFBbUIsQ0FBMUIsU0FBMEIsQ0FBMUI7QUFDRDs7QUFFSyxTQUFBLG1CQUFBLENBQUEsSUFBQSxFQUF5QztBQUM3QyxVQUFRLElBQUksQ0FBWixNQUFBO0FBQ0UsU0FBQSxDQUFBO0FBQ0UsYUFBQSxZQUFBOztBQUNGLFNBQUEsQ0FBQTtBQUNFLGFBQU8sSUFBSSxDQUFYLENBQVcsQ0FBWDs7QUFDRjtBQUNFLFVBQUksR0FBRyxHQUFrQixJQUFBLGtCQUFBLENBQXNCO0FBQUE7QUFBdEIsT0FBekI7QUFDQyxNQUFBLEdBQVcsQ0FBWCxPQUFBLEdBQUEsSUFBQTtBQUNELGFBQUEsR0FBQTtBQVJKO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBzeW1ib2wgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGFzc2VydFRhZ05vdENvbnN1bWVkIH0gZnJvbSAnLi9kZWJ1Zyc7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IHR5cGUgUmV2aXNpb24gPSBudW1iZXI7XG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVDogUmV2aXNpb24gPSAwO1xuZXhwb3J0IGNvbnN0IElOSVRJQUw6IFJldmlzaW9uID0gMTtcbmV4cG9ydCBjb25zdCBWT0xBVElMRTogUmV2aXNpb24gPSA5MDA3MTk5MjU0NzQwOTkxOyAvLyBNQVhfSU5UXG5cbmxldCAkUkVWSVNJT04gPSBJTklUSUFMO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVtcCgpIHtcbiAgJFJFVklTSU9OKys7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNvbnN0IENPTVBVVEU6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1RBR19DT01QVVRFJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VGFnPFQ+IHtcbiAgW0NPTVBVVEVdKCk6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIGV4dGVuZHMgRW50aXR5VGFnPFJldmlzaW9uPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVRhZ2dlZDxUPiB7XG4gIHRhZzogRW50aXR5VGFnPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ2dlZCB7XG4gIHRhZzogVGFnO1xufVxuXG4vLy8vLy8vLy8vXG5cbi8qKlxuICogYHZhbHVlYCByZWNlaXZlcyBhIHRhZyBhbmQgcmV0dXJucyBhbiBvcGFxdWUgUmV2aXNpb24gYmFzZWQgb24gdGhhdCB0YWcuIFRoaXNcbiAqIHNuYXBzaG90IGNhbiB0aGVuIGxhdGVyIGJlIHBhc3NlZCB0byBgdmFsaWRhdGVgIHdpdGggdGhlIHNhbWUgdGFnIHRvXG4gKiBkZXRlcm1pbmUgaWYgdGhlIHRhZyBoYXMgY2hhbmdlZCBhdCBhbGwgc2luY2UgdGhlIHRpbWUgdGhhdCBgdmFsdWVgIHdhc1xuICogY2FsbGVkLlxuICpcbiAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHJldHVybnMgdGhlIGdsb2JhbCByZXZpc2lvbiBjb3VudCBkaXJlY3RseSBmb3JcbiAqIHBlcmZvcm1hbmNlIHJlYXNvbnMuIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZVxuICogcmVsaWVkIG9uIGRpcmVjdGx5IGJ5IHVzZXJzIG9mIHRoZXNlIEFQSXMuIEluc3RlYWQsIFJldmlzaW9ucyBzaG91bGQgYmVcbiAqIHRyZWF0ZWQgYXMgaWYgdGhleSBhcmUgb3BhcXVlL3Vua25vd24sIGFuZCBzaG91bGQgb25seSBiZSBpbnRlcmFjdGVkIHdpdGggdmlhXG4gKiB0aGUgYHZhbHVlYC9gdmFsaWRhdGVgIEFQSS5cbiAqXG4gKiBAcGFyYW0gdGFnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZvclRhZyhfdGFnOiBUYWcpOiBSZXZpc2lvbiB7XG4gIHJldHVybiAkUkVWSVNJT047XG59XG5cbi8qKlxuICogYHZhbGlkYXRlYCByZWNlaXZlcyBhIHRhZyBhbmQgYSBzbmFwc2hvdCBmcm9tIGEgcHJldmlvdXMgY2FsbCB0byBgdmFsdWVgIHdpdGhcbiAqIHRoZSBzYW1lIHRhZywgYW5kIGRldGVybWluZXMgaWYgdGhlIHRhZyBpcyBzdGlsbCB2YWxpZCBjb21wYXJlZCB0byB0aGVcbiAqIHNuYXBzaG90LiBJZiB0aGUgdGFnJ3Mgc3RhdGUgaGFzIGNoYW5nZWQgYXQgYWxsIHNpbmNlIHRoZW4sIGB2YWxpZGF0ZWAgd2lsbFxuICogcmV0dXJuIGZhbHNlLCBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gdHJ1ZS4gVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhXG4gKiBjYWxjdWxhdGlvbiByZWxhdGVkIHRvIHRoZSB0YWdzIHNob3VsZCBiZSByZXJ1bi5cbiAqXG4gKiBAcGFyYW0gdGFnXG4gKiBAcGFyYW0gc25hcHNob3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFnKHRhZzogVGFnLCBzbmFwc2hvdDogUmV2aXNpb24pIHtcbiAgcmV0dXJuIHNuYXBzaG90ID49IHRhZ1tDT01QVVRFXSgpO1xufVxuXG4vLy8vLy8vLy8vXG5cbi8qKlxuICogVGhpcyBlbnVtIHJlcHJlc2VudHMgYWxsIG9mIHRoZSBwb3NzaWJsZSB0YWcgdHlwZXMgZm9yIHRoZSBtb25vbW9ycGhpYyB0YWcgY2xhc3MuXG4gKiBPdGhlciBjdXN0b20gdGFnIGNsYXNzZXMgY2FuIGV4aXN0LCBzdWNoIGFzIEN1cnJlbnRUYWcgYW5kIFZvbGF0aWxlVGFnLCBidXQgZm9yXG4gKiBwZXJmb3JtYW5jZSByZWFzb25zLCBhbnkgdHlwZSBvZiB0YWcgdGhhdCBpcyBtZWFudCB0byBiZSB1c2VkIGZyZXF1ZW50bHkgc2hvdWxkXG4gKiBiZSBhZGRlZCB0byB0aGUgbW9ub21vcnBoaWMgdGFnLlxuICovXG5jb25zdCBlbnVtIE1vbm9tb3JwaGljVGFnVHlwZXMge1xuICBEaXJ0eWFibGUsXG4gIFVwZGF0YWJsZSxcbiAgQ29tYmluYXRvcixcbiAgQ29uc3RhbnQsXG59XG5cbmNvbnN0IFRZUEU6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1RBR19UWVBFJyk7XG5cbmV4cG9ydCBsZXQgQUxMT1dfQ1lDTEVTOiBXZWFrTWFwPFRhZywgYm9vbGVhbj4gfCB1bmRlZmluZWQ7XG5cbmlmIChERUJVRykge1xuICBBTExPV19DWUNMRVMgPSBuZXcgV2Vha01hcCgpO1xufVxuXG5pbnRlcmZhY2UgTW9ub21vcnBoaWNUYWdCYXNlPFQgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ1R5cGVzPiBleHRlbmRzIFRhZyB7XG4gIFtUWVBFXTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJ0eWFibGVUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5EaXJ0eWFibGU+IHt9XG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZVRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZT4ge31cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluYXRvclRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3I+IHt9XG5leHBvcnQgaW50ZXJmYWNlIENvbnN0YW50VGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuQ29uc3RhbnQ+IHt9XG5cbmNsYXNzIE1vbm9tb3JwaGljVGFnSW1wbDxUIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdUeXBlcyA9IE1vbm9tb3JwaGljVGFnVHlwZXM+IHtcbiAgcHJpdmF0ZSByZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgbGFzdENoZWNrZWQgPSBJTklUSUFMO1xuICBwcml2YXRlIGxhc3RWYWx1ZSA9IElOSVRJQUw7XG5cbiAgcHJpdmF0ZSBpc1VwZGF0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VidGFnczogVGFnW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHN1YnRhZzogVGFnIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3VidGFnQnVmZmVyQ2FjaGU6IFJldmlzaW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgW1RZUEVdOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IFQpIHtcbiAgICB0aGlzW1RZUEVdID0gdHlwZTtcbiAgfVxuXG4gIFtDT01QVVRFXSgpOiBSZXZpc2lvbiB7XG4gICAgbGV0IHsgbGFzdENoZWNrZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5pc1VwZGF0aW5nID09PSB0cnVlKSB7XG4gICAgICBpZiAoREVCVUcgJiYgIUFMTE9XX0NZQ0xFUyEuaGFzKHRoaXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ3ljbGVzIGluIHRhZ3MgYXJlIG5vdCBhbGxvd2VkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGFzdENoZWNrZWQgPSArKyRSRVZJU0lPTjtcbiAgICB9IGVsc2UgaWYgKGxhc3RDaGVja2VkICE9PSAkUkVWSVNJT04pIHtcbiAgICAgIHRoaXMuaXNVcGRhdGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxhc3RDaGVja2VkID0gJFJFVklTSU9OO1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgeyBzdWJ0YWdzLCBzdWJ0YWcsIHN1YnRhZ0J1ZmZlckNhY2hlLCBsYXN0VmFsdWUsIHJldmlzaW9uIH0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChzdWJ0YWcgIT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgc3VidGFnVmFsdWUgPSBzdWJ0YWdbQ09NUFVURV0oKTtcblxuICAgICAgICAgIGlmIChzdWJ0YWdWYWx1ZSA9PT0gc3VidGFnQnVmZmVyQ2FjaGUpIHtcbiAgICAgICAgICAgIHJldmlzaW9uID0gTWF0aC5tYXgocmV2aXNpb24sIGxhc3RWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENsZWFyIHRoZSB0ZW1wb3JhcnkgYnVmZmVyIGNhY2hlXG4gICAgICAgICAgICB0aGlzLnN1YnRhZ0J1ZmZlckNhY2hlID0gbnVsbDtcbiAgICAgICAgICAgIHJldmlzaW9uID0gTWF0aC5tYXgocmV2aXNpb24sIHN1YnRhZ1ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VidGFncyAhPT0gbnVsbCkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3VidGFncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gc3VidGFnc1tpXVtDT01QVVRFXSgpO1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heCh2YWx1ZSwgcmV2aXNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGFzdFZhbHVlID0gcmV2aXNpb247XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gIH1cblxuICBzdGF0aWMgdXBkYXRlVGFnKF90YWc6IFVwZGF0YWJsZVRhZywgX3N1YnRhZzogVGFnKSB7XG4gICAgaWYgKERFQlVHICYmIF90YWdbVFlQRV0gIT09IE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byB1cGRhdGUgYSB0YWcgdGhhdCB3YXMgbm90IHVwZGF0YWJsZScpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFRTIDMuNyBzaG91bGQgYWxsb3cgdXMgdG8gZG8gdGhpcyB2aWEgYXNzZXJ0aW9uXG4gICAgbGV0IHRhZyA9IF90YWcgYXMgTW9ub21vcnBoaWNUYWdJbXBsO1xuICAgIGxldCBzdWJ0YWcgPSBfc3VidGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbDtcblxuICAgIGlmIChzdWJ0YWcgPT09IENPTlNUQU5UX1RBRykge1xuICAgICAgdGFnLnN1YnRhZyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHBvc3NpYmlsaXRpZXMgd2hlbiB1cGRhdGluZyBhIHN1YnRhZzpcbiAgICAgIC8vXG4gICAgICAvLyAxLiBzdWJ0YWdbQ09NUFVURV0oKSA8PSB0YWdbQ09NUFVURV0oKTtcbiAgICAgIC8vIDIuIHN1YnRhZ1tDT01QVVRFXSgpID4gdGFnW0NPTVBVVEVdKCk7XG4gICAgICAvL1xuICAgICAgLy8gVGhlIGZpcnN0IHBvc3NpYmlsaXR5IGlzIGNvbXBsZXRlbHkgZmluZSB3aXRoaW4gb3VyIGNhY2hpbmcgbW9kZWwsIGJ1dFxuICAgICAgLy8gdGhlIHNlY29uZCBwb3NzaWJpbGl0eSBwcmVzZW50cyBhIHByb2JsZW0uIElmIHRoZSBwYXJlbnQgdGFnIGhhc1xuICAgICAgLy8gYWxyZWFkeSBiZWVuIHJlYWQsIHRoZW4gaXQncyB2YWx1ZSBpcyBjYWNoZWQgYW5kIHdpbGwgbm90IHVwZGF0ZSB0b1xuICAgICAgLy8gcmVmbGVjdCB0aGUgc3VidGFnJ3MgZ3JlYXRlciB2YWx1ZS4gTmV4dCB0aW1lIHRoZSBjYWNoZSBpcyBidXN0ZWQsIHRoZVxuICAgICAgLy8gc3VidGFnJ3MgdmFsdWUgX3dpbGxfIGJlIHJlYWQsIGFuZCBpdCdzIHZhbHVlIHdpbGwgYmUgX2dyZWF0ZXJfIHRoYW5cbiAgICAgIC8vIHRoZSBzYXZlZCBzbmFwc2hvdCBvZiB0aGUgcGFyZW50LCBjYXVzaW5nIHRoZSByZXN1bHRpbmcgY2FsY3VsYXRpb24gdG9cbiAgICAgIC8vIGJlIHJlcnVuIGVycm9uZW91c2x5LlxuICAgICAgLy9cbiAgICAgIC8vIEluIG9yZGVyIHRvIHByZXZlbnQgdGhpcywgd2hlbiB3ZSBmaXJzdCB1cGRhdGUgdG8gYSBuZXcgc3VidGFnIHdlIHN0b3JlXG4gICAgICAvLyBpdHMgY29tcHV0ZWQgdmFsdWUsIGFuZCB0aGVuIGNoZWNrIGFnYWluc3QgdGhhdCBjb21wdXRlZCB2YWx1ZSBvblxuICAgICAgLy8gc3Vic2VxdWVudCB1cGRhdGVzLiBJZiBpdHMgdmFsdWUgaGFzbid0IGNoYW5nZWQsIHRoZW4gd2UgcmV0dXJuIHRoZVxuICAgICAgLy8gcGFyZW50J3MgcHJldmlvdXMgdmFsdWUuIE9uY2UgdGhlIHN1YnRhZyBjaGFuZ2VzIGZvciB0aGUgZmlyc3QgdGltZSxcbiAgICAgIC8vIHdlIGNsZWFyIHRoZSBjYWNoZSBhbmQgZXZlcnl0aGluZyBpcyBmaW5hbGx5IGluIHN5bmMgd2l0aCB0aGUgcGFyZW50LlxuICAgICAgdGFnLnN1YnRhZ0J1ZmZlckNhY2hlID0gc3VidGFnW0NPTVBVVEVdKCk7XG4gICAgICB0YWcuc3VidGFnID0gc3VidGFnO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkaXJ0eVRhZyh0YWc6IERpcnR5YWJsZVRhZyB8IFVwZGF0YWJsZVRhZykge1xuICAgIGlmIChcbiAgICAgIERFQlVHICYmXG4gICAgICAhKHRhZ1tUWVBFXSA9PT0gTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUgfHwgdGFnW1RZUEVdID09PSBNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGVkIHRvIGRpcnR5IGEgdGFnIHRoYXQgd2FzIG5vdCBkaXJ0eWFibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIC8vIFVzdWFsbHkgYnkgdGhpcyBwb2ludCwgd2UndmUgYWxyZWFkeSBhc3NlcnRlZCB3aXRoIGJldHRlciBlcnJvciBpbmZvcm1hdGlvbixcbiAgICAgIC8vIGJ1dCB0aGlzIGlzIG91ciBsYXN0IGxpbmUgb2YgZGVmZW5zZS5cbiAgICAgIGFzc2VydFRhZ05vdENvbnN1bWVkISh0YWcpO1xuICAgIH1cblxuICAgICh0YWcgYXMgTW9ub21vcnBoaWNUYWdJbXBsKS5yZXZpc2lvbiA9ICsrJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkaXJ0eVRhZyA9IE1vbm9tb3JwaGljVGFnSW1wbC5kaXJ0eVRhZztcbmV4cG9ydCBjb25zdCB1cGRhdGVUYWcgPSBNb25vbW9ycGhpY1RhZ0ltcGwudXBkYXRlVGFnO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWcoKTogRGlydHlhYmxlVGFnIHtcbiAgcmV0dXJuIG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5EaXJ0eWFibGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRhYmxlVGFnKCk6IFVwZGF0YWJsZVRhZyB7XG4gIHJldHVybiBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlKTtcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY29uc3QgQ09OU1RBTlRfVEFHOiBDb25zdGFudFRhZyA9IG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnZ2VkKHsgdGFnIH06IFRhZ2dlZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnKHRhZzogVGFnKTogdGFnIGlzIENvbnN0YW50VGFnIHtcbiAgcmV0dXJuIHRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBWb2xhdGlsZVRhZyBpbXBsZW1lbnRzIFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gVk9MQVRJTEU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFZPTEFUSUxFX1RBRyA9IG5ldyBWb2xhdGlsZVRhZygpO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50VGFnIGltcGxlbWVudHMgQ3VycmVudFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX1RBRyA9IG5ldyBDdXJyZW50VGFnKCk7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUodGFnczogVGFnW10pOiBUYWcge1xuICBsZXQgb3B0aW1pemVkOiBUYWdbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gdGFncy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgdGFnID0gdGFnc1tpXTtcbiAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIGNvbnRpbnVlO1xuICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ29tYmluYXRvclRhZyhvcHRpbWl6ZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tYmluYXRvclRhZyh0YWdzOiBUYWdbXSk6IFRhZyB7XG4gIHN3aXRjaCAodGFncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gQ09OU1RBTlRfVEFHO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB0YWdzWzBdO1xuICAgIGRlZmF1bHQ6XG4gICAgICBsZXQgdGFnOiBDb21iaW5hdG9yVGFnID0gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3IpO1xuICAgICAgKHRhZyBhcyBhbnkpLnN1YnRhZ3MgPSB0YWdzO1xuICAgICAgcmV0dXJuIHRhZztcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -299,2 +299,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBTU8sSUFBTSxRQUFRLEdBQWQsQ0FBQTs7QUFDQSxJQUFNLE9BQU8sR0FBYixDQUFBOztBQUNBLElBQU0sUUFBUSxHQUFkLGdCQUFBLEMsQ0FBNkM7OztBQUVwRCxJQUFJLFNBQVMsR0FBYixPQUFBOztBQUVNLFNBQUEsSUFBQSxHQUFjO0FBQ2xCLEVBQUEsU0FBUztFQUdYOzs7QUFFTyxJQUFNLE9BQU8sR0FBa0IsbUJBQS9CLGFBQStCLENBQS9CLEMsQ0FnQlA7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY00sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUErQjtBQUNuQyxTQUFBLFNBQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7QUFVTSxTQUFBLFdBQUEsQ0FBQSxHQUFBLEVBQUEsUUFBQSxFQUFrRDtBQUN0RCxTQUFPLFFBQVEsSUFBSSxHQUFHLENBQXRCLE9BQXNCLENBQUgsRUFBbkI7QUFDRDs7QUFpQkQsSUFBTSxJQUFJLEdBQWtCLG1CQUE1QixVQUE0QixDQUE1QjtBQUVPLElBQUEsWUFBQTs7O0FBRVAsSUFBQSxVQUFBLEVBQVc7QUFDVCx5QkFBQSxZQUFZLEdBQUcsSUFBZixPQUFlLEVBQWY7QUFDRDs7SUFxQkQsa0I7QUFhRSxXQUFBLGtCQUFBLENBQUEsSUFBQSxFQUFxQztBQVo3QixTQUFBLFFBQUEsR0FBQSxPQUFBO0FBQ0EsU0FBQSxXQUFBLEdBQUEsT0FBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLE9BQUE7QUFFQSxTQUFBLFVBQUEsR0FBQSxLQUFBO0FBQ0EsU0FBQSxPQUFBLEdBQUEsSUFBQTtBQUVBLFNBQUEsTUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLGlCQUFBLEdBQUEsSUFBQTtBQUtOLFNBQUEsSUFBQSxJQUFBLElBQUE7QUFD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QUEsR0FDRSxZQUFTO0FBQ1AsV0FBQSxTQUFBO0FBRkosR0FBQTs7QUFBQSxTQUFBLFVBQUE7QUFBQSxDQUFBLEVBQUE7OztBQU1PLElBQU0sV0FBVyxHQUFHLElBQXBCLFVBQW9CLEVBQXBCLEMsQ0FFUDs7OztBQUVNLFNBQUEsT0FBQSxDQUFBLElBQUEsRUFBNkI7QUFDakMsTUFBSSxTQUFTLEdBQWIsRUFBQTs7QUFFQSxPQUFLLElBQUksQ0FBQyxHQUFMLENBQUEsRUFBVyxDQUFDLEdBQUcsSUFBSSxDQUF4QixNQUFBLEVBQWlDLENBQUMsR0FBbEMsQ0FBQSxFQUF3QyxDQUF4QyxFQUFBLEVBQTZDO0FBQzNDLFFBQUksR0FBRyxHQUFHLElBQUksQ0FBZCxDQUFjLENBQWQ7QUFDQSxRQUFJLEdBQUcsS0FBUCxZQUFBLEVBQTBCO0FBQzFCLElBQUEsU0FBUyxDQUFULElBQUEsQ0FBQSxHQUFBO0FBQ0Q7O0FBRUQsU0FBTyxtQkFBbUIsQ0FBMUIsU0FBMEIsQ0FBMUI7QUFDRDs7QUFFSyxTQUFBLG1CQUFBLENBQUEsSUFBQSxFQUF5QztBQUM3QyxVQUFRLElBQUksQ0FBWixNQUFBO0FBQ0UsU0FBQSxDQUFBO0FBQ0UsYUFBQSxZQUFBOztBQUNGLFNBQUEsQ0FBQTtBQUNFLGFBQU8sSUFBSSxDQUFYLENBQVcsQ0FBWDs7QUFDRjtBQUNFLFVBQUksR0FBRyxHQUFHLElBQUEsa0JBQUEsQ0FBc0I7QUFBQTtBQUF0QixPQUFWO0FBQ0MsTUFBQSxHQUFXLENBQVgsT0FBQSxHQUFBLElBQUE7QUFDRCxhQUFBLEdBQUE7QUFSSjtBQVVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgVW5pb25Ub0ludGVyc2VjdGlvbiwgc3ltYm9sIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBhc3NlcnRUYWdOb3RDb25zdW1lZCB9IGZyb20gJy4vZGVidWcnO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFJldmlzaW9uID0gbnVtYmVyO1xuXG5leHBvcnQgY29uc3QgQ09OU1RBTlQ6IFJldmlzaW9uID0gMDtcbmV4cG9ydCBjb25zdCBJTklUSUFMOiBSZXZpc2lvbiA9IDE7XG5leHBvcnQgY29uc3QgVk9MQVRJTEU6IFJldmlzaW9uID0gOTAwNzE5OTI1NDc0MDk5MTsgLy8gTUFYX0lOVFxuXG5sZXQgJFJFVklTSU9OID0gSU5JVElBTDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXAoKSB7XG4gICRSRVZJU0lPTisrO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT01QVVRFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdUQUdfQ09NUFVURScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVRhZzxUPiB7XG4gIFtDT01QVVRFXSgpOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZyBleHRlbmRzIEVudGl0eVRhZzxSZXZpc2lvbj4ge31cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUYWdnZWQ8VD4ge1xuICB0YWc6IEVudGl0eVRhZzxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdnZWQge1xuICB0YWc6IFRhZztcbn1cblxuLy8vLy8vLy8vL1xuXG4vKipcbiAqIGB2YWx1ZWAgcmVjZWl2ZXMgYSB0YWcgYW5kIHJldHVybnMgYW4gb3BhcXVlIFJldmlzaW9uIGJhc2VkIG9uIHRoYXQgdGFnLiBUaGlzXG4gKiBzbmFwc2hvdCBjYW4gdGhlbiBsYXRlciBiZSBwYXNzZWQgdG8gYHZhbGlkYXRlYCB3aXRoIHRoZSBzYW1lIHRhZyB0b1xuICogZGV0ZXJtaW5lIGlmIHRoZSB0YWcgaGFzIGNoYW5nZWQgYXQgYWxsIHNpbmNlIHRoZSB0aW1lIHRoYXQgYHZhbHVlYCB3YXNcbiAqIGNhbGxlZC5cbiAqXG4gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBnbG9iYWwgcmV2aXNpb24gY291bnQgZGlyZWN0bHkgZm9yXG4gKiBwZXJmb3JtYW5jZSByZWFzb25zLiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgYW5kIHNob3VsZCBub3QgYmVcbiAqIHJlbGllZCBvbiBkaXJlY3RseSBieSB1c2VycyBvZiB0aGVzZSBBUElzLiBJbnN0ZWFkLCBSZXZpc2lvbnMgc2hvdWxkIGJlXG4gKiB0cmVhdGVkIGFzIGlmIHRoZXkgYXJlIG9wYXF1ZS91bmtub3duLCBhbmQgc2hvdWxkIG9ubHkgYmUgaW50ZXJhY3RlZCB3aXRoIHZpYVxuICogdGhlIGB2YWx1ZWAvYHZhbGlkYXRlYCBBUEkuXG4gKlxuICogQHBhcmFtIHRhZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JUYWcoX3RhZzogVGFnKTogUmV2aXNpb24ge1xuICByZXR1cm4gJFJFVklTSU9OO1xufVxuXG4vKipcbiAqIGB2YWxpZGF0ZWAgcmVjZWl2ZXMgYSB0YWcgYW5kIGEgc25hcHNob3QgZnJvbSBhIHByZXZpb3VzIGNhbGwgdG8gYHZhbHVlYCB3aXRoXG4gKiB0aGUgc2FtZSB0YWcsIGFuZCBkZXRlcm1pbmVzIGlmIHRoZSB0YWcgaXMgc3RpbGwgdmFsaWQgY29tcGFyZWQgdG8gdGhlXG4gKiBzbmFwc2hvdC4gSWYgdGhlIHRhZydzIHN0YXRlIGhhcyBjaGFuZ2VkIGF0IGFsbCBzaW5jZSB0aGVuLCBgdmFsaWRhdGVgIHdpbGxcbiAqIHJldHVybiBmYWxzZSwgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIHRydWUuIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYVxuICogY2FsY3VsYXRpb24gcmVsYXRlZCB0byB0aGUgdGFncyBzaG91bGQgYmUgcmVydW4uXG4gKlxuICogQHBhcmFtIHRhZ1xuICogQHBhcmFtIHNuYXBzaG90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhZyh0YWc6IFRhZywgc25hcHNob3Q6IFJldmlzaW9uKSB7XG4gIHJldHVybiBzbmFwc2hvdCA+PSB0YWdbQ09NUFVURV0oKTtcbn1cblxuLy8vLy8vLy8vL1xuXG4vKipcbiAqIFRoaXMgZW51bSByZXByZXNlbnRzIGFsbCBvZiB0aGUgcG9zc2libGUgdGFnIHR5cGVzIGZvciB0aGUgbW9ub21vcnBoaWMgdGFnIGNsYXNzLlxuICogT3RoZXIgY3VzdG9tIHRhZyBjbGFzc2VzIGNhbiBleGlzdCwgc3VjaCBhcyBDdXJyZW50VGFnIGFuZCBWb2xhdGlsZVRhZywgYnV0IGZvclxuICogcGVyZm9ybWFuY2UgcmVhc29ucywgYW55IHR5cGUgb2YgdGFnIHRoYXQgaXMgbWVhbnQgdG8gYmUgdXNlZCBmcmVxdWVudGx5IHNob3VsZFxuICogYmUgYWRkZWQgdG8gdGhlIG1vbm9tb3JwaGljIHRhZy5cbiAqL1xuY29uc3QgZW51bSBNb25vbW9ycGhpY1RhZ1R5cGVzIHtcbiAgRGlydHlhYmxlLFxuICBVcGRhdGFibGUsXG4gIENvbWJpbmF0b3IsXG4gIENvbnN0YW50LFxufVxuXG5jb25zdCBUWVBFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdUQUdfVFlQRScpO1xuXG5leHBvcnQgbGV0IEFMTE9XX0NZQ0xFUzogV2Vha01hcDxUYWcsIGJvb2xlYW4+IHwgdW5kZWZpbmVkO1xuXG5pZiAoREVCVUcpIHtcbiAgQUxMT1dfQ1lDTEVTID0gbmV3IFdlYWtNYXAoKTtcbn1cblxuaW50ZXJmYWNlIE1vbm9tb3JwaGljVGFnQmFzZTxUIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdUeXBlcz4gZXh0ZW5kcyBUYWcge1xuICBbVFlQRV06IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlydHlhYmxlVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlPiB7fVxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGFibGVUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGU+IHt9XG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmF0b3JUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5Db21iaW5hdG9yPiB7fVxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbnN0YW50PiB7fVxuXG5pbnRlcmZhY2UgTW9ub21vcnBoaWNUYWdNYXBwaW5nIHtcbiAgW01vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlXTogRGlydHlhYmxlVGFnO1xuICBbTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGVdOiBVcGRhdGFibGVUYWc7XG4gIFtNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3JdOiBDb21iaW5hdG9yVGFnO1xuICBbTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudF06IENvbnN0YW50VGFnO1xufVxuXG50eXBlIE1vbm9tb3JwaGljVGFnID0gVW5pb25Ub0ludGVyc2VjdGlvbjxNb25vbW9ycGhpY1RhZ01hcHBpbmdbTW9ub21vcnBoaWNUYWdUeXBlc10+O1xudHlwZSBNb25vbW9ycGhpY1RhZ1R5cGUgPSBVbmlvblRvSW50ZXJzZWN0aW9uPE1vbm9tb3JwaGljVGFnVHlwZXM+O1xuXG5jbGFzcyBNb25vbW9ycGhpY1RhZ0ltcGwgaW1wbGVtZW50cyBNb25vbW9ycGhpY1RhZyB7XG4gIHByaXZhdGUgcmV2aXNpb24gPSBJTklUSUFMO1xuICBwcml2YXRlIGxhc3RDaGVja2VkID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBsYXN0VmFsdWUgPSBJTklUSUFMO1xuXG4gIHByaXZhdGUgaXNVcGRhdGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnRhZ3M6IFRhZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzdWJ0YWc6IFRhZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN1YnRhZ0J1ZmZlckNhY2hlOiBSZXZpc2lvbiB8IG51bGwgPSBudWxsO1xuXG4gIFtUWVBFXTogTW9ub21vcnBoaWNUYWdUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1vbm9tb3JwaGljVGFnVHlwZXMpIHtcbiAgICB0aGlzW1RZUEVdID0gdHlwZSBhcyBNb25vbW9ycGhpY1RhZ1R5cGU7XG4gIH1cblxuICBbQ09NUFVURV0oKTogUmV2aXNpb24ge1xuICAgIGxldCB7IGxhc3RDaGVja2VkIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuaXNVcGRhdGluZyA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKERFQlVHICYmICFBTExPV19DWUNMRVMhLmhhcyh0aGlzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N5Y2xlcyBpbiB0YWdzIGFyZSBub3QgYWxsb3dlZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxhc3RDaGVja2VkID0gKyskUkVWSVNJT047XG4gICAgfSBlbHNlIGlmIChsYXN0Q2hlY2tlZCAhPT0gJFJFVklTSU9OKSB7XG4gICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICRSRVZJU0lPTjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHsgc3VidGFncywgc3VidGFnLCBzdWJ0YWdCdWZmZXJDYWNoZSwgbGFzdFZhbHVlLCByZXZpc2lvbiB9ID0gdGhpcztcblxuICAgICAgICBpZiAoc3VidGFnICE9PSBudWxsKSB7XG4gICAgICAgICAgbGV0IHN1YnRhZ1ZhbHVlID0gc3VidGFnW0NPTVBVVEVdKCk7XG5cbiAgICAgICAgICBpZiAoc3VidGFnVmFsdWUgPT09IHN1YnRhZ0J1ZmZlckNhY2hlKSB7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHJldmlzaW9uLCBsYXN0VmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDbGVhciB0aGUgdGVtcG9yYXJ5IGJ1ZmZlciBjYWNoZVxuICAgICAgICAgICAgdGhpcy5zdWJ0YWdCdWZmZXJDYWNoZSA9IG51bGw7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHJldmlzaW9uLCBzdWJ0YWdWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnRhZ3MgIT09IG51bGwpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1YnRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHN1YnRhZ3NbaV1bQ09NUFVURV0oKTtcbiAgICAgICAgICAgIHJldmlzaW9uID0gTWF0aC5tYXgodmFsdWUsIHJldmlzaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IHJldmlzaW9uO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIHVwZGF0ZVRhZyhfdGFnOiBVcGRhdGFibGVUYWcsIF9zdWJ0YWc6IFRhZykge1xuICAgIGlmIChERUJVRyAmJiBfdGFnW1RZUEVdICE9PSBNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0ZWQgdG8gdXBkYXRlIGEgdGFnIHRoYXQgd2FzIG5vdCB1cGRhdGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBUUyAzLjcgc2hvdWxkIGFsbG93IHVzIHRvIGRvIHRoaXMgdmlhIGFzc2VydGlvblxuICAgIGxldCB0YWcgPSBfdGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbDtcbiAgICBsZXQgc3VidGFnID0gX3N1YnRhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGw7XG5cbiAgICBpZiAoc3VidGFnID09PSBDT05TVEFOVF9UQUcpIHtcbiAgICAgIHRhZy5zdWJ0YWcgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBwb3NzaWJpbGl0aWVzIHdoZW4gdXBkYXRpbmcgYSBzdWJ0YWc6XG4gICAgICAvL1xuICAgICAgLy8gMS4gc3VidGFnW0NPTVBVVEVdKCkgPD0gdGFnW0NPTVBVVEVdKCk7XG4gICAgICAvLyAyLiBzdWJ0YWdbQ09NUFVURV0oKSA+IHRhZ1tDT01QVVRFXSgpO1xuICAgICAgLy9cbiAgICAgIC8vIFRoZSBmaXJzdCBwb3NzaWJpbGl0eSBpcyBjb21wbGV0ZWx5IGZpbmUgd2l0aGluIG91ciBjYWNoaW5nIG1vZGVsLCBidXRcbiAgICAgIC8vIHRoZSBzZWNvbmQgcG9zc2liaWxpdHkgcHJlc2VudHMgYSBwcm9ibGVtLiBJZiB0aGUgcGFyZW50IHRhZyBoYXNcbiAgICAgIC8vIGFscmVhZHkgYmVlbiByZWFkLCB0aGVuIGl0J3MgdmFsdWUgaXMgY2FjaGVkIGFuZCB3aWxsIG5vdCB1cGRhdGUgdG9cbiAgICAgIC8vIHJlZmxlY3QgdGhlIHN1YnRhZydzIGdyZWF0ZXIgdmFsdWUuIE5leHQgdGltZSB0aGUgY2FjaGUgaXMgYnVzdGVkLCB0aGVcbiAgICAgIC8vIHN1YnRhZydzIHZhbHVlIF93aWxsXyBiZSByZWFkLCBhbmQgaXQncyB2YWx1ZSB3aWxsIGJlIF9ncmVhdGVyXyB0aGFuXG4gICAgICAvLyB0aGUgc2F2ZWQgc25hcHNob3Qgb2YgdGhlIHBhcmVudCwgY2F1c2luZyB0aGUgcmVzdWx0aW5nIGNhbGN1bGF0aW9uIHRvXG4gICAgICAvLyBiZSByZXJ1biBlcnJvbmVvdXNseS5cbiAgICAgIC8vXG4gICAgICAvLyBJbiBvcmRlciB0byBwcmV2ZW50IHRoaXMsIHdoZW4gd2UgZmlyc3QgdXBkYXRlIHRvIGEgbmV3IHN1YnRhZyB3ZSBzdG9yZVxuICAgICAgLy8gaXRzIGNvbXB1dGVkIHZhbHVlLCBhbmQgdGhlbiBjaGVjayBhZ2FpbnN0IHRoYXQgY29tcHV0ZWQgdmFsdWUgb25cbiAgICAgIC8vIHN1YnNlcXVlbnQgdXBkYXRlcy4gSWYgaXRzIHZhbHVlIGhhc24ndCBjaGFuZ2VkLCB0aGVuIHdlIHJldHVybiB0aGVcbiAgICAgIC8vIHBhcmVudCdzIHByZXZpb3VzIHZhbHVlLiBPbmNlIHRoZSBzdWJ0YWcgY2hhbmdlcyBmb3IgdGhlIGZpcnN0IHRpbWUsXG4gICAgICAvLyB3ZSBjbGVhciB0aGUgY2FjaGUgYW5kIGV2ZXJ5dGhpbmcgaXMgZmluYWxseSBpbiBzeW5jIHdpdGggdGhlIHBhcmVudC5cbiAgICAgIHRhZy5zdWJ0YWdCdWZmZXJDYWNoZSA9IHN1YnRhZ1tDT01QVVRFXSgpO1xuICAgICAgdGFnLnN1YnRhZyA9IHN1YnRhZztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlydHlUYWcodGFnOiBEaXJ0eWFibGVUYWcgfCBVcGRhdGFibGVUYWcpIHtcbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgISh0YWdbVFlQRV0gPT09IE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlIHx8IHRhZ1tUWVBFXSA9PT0gTW9ub21vcnBoaWNUYWdUeXBlcy5EaXJ0eWFibGUpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBkaXJ0eSBhIHRhZyB0aGF0IHdhcyBub3QgZGlydHlhYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICAvLyBVc3VhbGx5IGJ5IHRoaXMgcG9pbnQsIHdlJ3ZlIGFscmVhZHkgYXNzZXJ0ZWQgd2l0aCBiZXR0ZXIgZXJyb3IgaW5mb3JtYXRpb24sXG4gICAgICAvLyBidXQgdGhpcyBpcyBvdXIgbGFzdCBsaW5lIG9mIGRlZmVuc2UuXG4gICAgICBhc3NlcnRUYWdOb3RDb25zdW1lZCEodGFnKTtcbiAgICB9XG5cbiAgICAodGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbCkucmV2aXNpb24gPSArKyRSRVZJU0lPTjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGlydHlUYWcgPSBNb25vbW9ycGhpY1RhZ0ltcGwuZGlydHlUYWc7XG5leHBvcnQgY29uc3QgdXBkYXRlVGFnID0gTW9ub21vcnBoaWNUYWdJbXBsLnVwZGF0ZVRhZztcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFnKCk6IERpcnR5YWJsZVRhZyB7XG4gIHJldHVybiBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwZGF0YWJsZVRhZygpOiBVcGRhdGFibGVUYWcge1xuICByZXR1cm4gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSk7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNvbnN0IENPTlNUQU5UX1RBRyA9IG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudCkgYXMgQ29uc3RhbnRUYWc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnZ2VkKHsgdGFnIH06IFRhZ2dlZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnKHRhZzogVGFnKTogdGFnIGlzIENvbnN0YW50VGFnIHtcbiAgcmV0dXJuIHRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBWb2xhdGlsZVRhZyBpbXBsZW1lbnRzIFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gVk9MQVRJTEU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFZPTEFUSUxFX1RBRyA9IG5ldyBWb2xhdGlsZVRhZygpO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50VGFnIGltcGxlbWVudHMgQ3VycmVudFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX1RBRyA9IG5ldyBDdXJyZW50VGFnKCk7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUodGFnczogVGFnW10pOiBUYWcge1xuICBsZXQgb3B0aW1pemVkOiBUYWdbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gdGFncy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgdGFnID0gdGFnc1tpXTtcbiAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIGNvbnRpbnVlO1xuICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ29tYmluYXRvclRhZyhvcHRpbWl6ZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tYmluYXRvclRhZyh0YWdzOiBUYWdbXSk6IFRhZyB7XG4gIHN3aXRjaCAodGFncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gQ09OU1RBTlRfVEFHO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB0YWdzWzBdO1xuICAgIGRlZmF1bHQ6XG4gICAgICBsZXQgdGFnID0gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3IpIGFzIENvbWJpbmF0b3JUYWc7XG4gICAgICAodGFnIGFzIGFueSkuc3VidGFncyA9IHRhZ3M7XG4gICAgICByZXR1cm4gdGFnO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBTU8sSUFBTSxRQUFRLEdBQWQsQ0FBQTs7QUFDQSxJQUFNLE9BQU8sR0FBYixDQUFBOztBQUNBLElBQU0sUUFBUSxHQUFkLGdCQUFBLEMsQ0FBNkM7OztBQUVwRCxJQUFJLFNBQVMsR0FBYixPQUFBOztBQUVNLFNBQUEsSUFBQSxHQUFjO0FBQ2xCLEVBQUEsU0FBUztFQUdYOzs7QUFFTyxJQUFNLE9BQU8sR0FBa0IsbUJBQS9CLGFBQStCLENBQS9CLEMsQ0FnQlA7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY00sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUErQjtBQUNuQyxTQUFBLFNBQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7QUFVTSxTQUFBLFdBQUEsQ0FBQSxHQUFBLEVBQUEsUUFBQSxFQUFrRDtBQUN0RCxTQUFPLFFBQVEsSUFBSSxHQUFHLENBQXRCLE9BQXNCLENBQUgsRUFBbkI7QUFDRDs7QUFpQkQsSUFBTSxJQUFJLEdBQWtCLG1CQUE1QixVQUE0QixDQUE1QjtBQUVPLElBQUEsWUFBQTs7O0FBRVAsSUFBQSxVQUFBLEVBQVc7QUFDVCx5QkFBQSxZQUFZLEdBQUcsSUFBZixPQUFlLEVBQWY7QUFDRDs7SUFXRCxrQjtBQWFFLFdBQUEsa0JBQUEsQ0FBQSxJQUFBLEVBQW1CO0FBWlgsU0FBQSxRQUFBLEdBQUEsT0FBQTtBQUNBLFNBQUEsV0FBQSxHQUFBLE9BQUE7QUFDQSxTQUFBLFNBQUEsR0FBQSxPQUFBO0FBRUEsU0FBQSxVQUFBLEdBQUEsS0FBQTtBQUNBLFNBQUEsT0FBQSxHQUFBLElBQUE7QUFFQSxTQUFBLE1BQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxpQkFBQSxHQUFBLElBQUE7QUFLTixTQUFBLElBQUEsSUFBQSxJQUFBO0FBQ0Q7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QSxHQUNFLFlBQVM7QUFDUCxXQUFBLFNBQUE7QUFGSixHQUFBOztBQUFBLFNBQUEsVUFBQTtBQUFBLENBQUEsRUFBQTs7O0FBTU8sSUFBTSxXQUFXLEdBQUcsSUFBcEIsVUFBb0IsRUFBcEIsQyxDQUVQOzs7O0FBRU0sU0FBQSxPQUFBLENBQUEsSUFBQSxFQUE2QjtBQUNqQyxNQUFJLFNBQVMsR0FBYixFQUFBOztBQUVBLE9BQUssSUFBSSxDQUFDLEdBQUwsQ0FBQSxFQUFXLENBQUMsR0FBRyxJQUFJLENBQXhCLE1BQUEsRUFBaUMsQ0FBQyxHQUFsQyxDQUFBLEVBQXdDLENBQXhDLEVBQUEsRUFBNkM7QUFDM0MsUUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFkLENBQWMsQ0FBZDtBQUNBLFFBQUksR0FBRyxLQUFQLFlBQUEsRUFBMEI7QUFDMUIsSUFBQSxTQUFTLENBQVQsSUFBQSxDQUFBLEdBQUE7QUFDRDs7QUFFRCxTQUFPLG1CQUFtQixDQUExQixTQUEwQixDQUExQjtBQUNEOztBQUVLLFNBQUEsbUJBQUEsQ0FBQSxJQUFBLEVBQXlDO0FBQzdDLFVBQVEsSUFBSSxDQUFaLE1BQUE7QUFDRSxTQUFBLENBQUE7QUFDRSxhQUFBLFlBQUE7O0FBQ0YsU0FBQSxDQUFBO0FBQ0UsYUFBTyxJQUFJLENBQVgsQ0FBVyxDQUFYOztBQUNGO0FBQ0UsVUFBSSxHQUFHLEdBQWtCLElBQUEsa0JBQUEsQ0FBc0I7QUFBQTtBQUF0QixPQUF6QjtBQUNDLE1BQUEsR0FBVyxDQUFYLE9BQUEsR0FBQSxJQUFBO0FBQ0QsYUFBQSxHQUFBO0FBUko7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IHN5bWJvbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgYXNzZXJ0VGFnTm90Q29uc3VtZWQgfSBmcm9tICcuL2RlYnVnJztcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgdHlwZSBSZXZpc2lvbiA9IG51bWJlcjtcblxuZXhwb3J0IGNvbnN0IENPTlNUQU5UOiBSZXZpc2lvbiA9IDA7XG5leHBvcnQgY29uc3QgSU5JVElBTDogUmV2aXNpb24gPSAxO1xuZXhwb3J0IGNvbnN0IFZPTEFUSUxFOiBSZXZpc2lvbiA9IDkwMDcxOTkyNTQ3NDA5OTE7IC8vIE1BWF9JTlRcblxubGV0ICRSRVZJU0lPTiA9IElOSVRJQUw7XG5cbmV4cG9ydCBmdW5jdGlvbiBidW1wKCkge1xuICAkUkVWSVNJT04rKztcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY29uc3QgQ09NUFVURTogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnVEFHX0NPTVBVVEUnKTtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUYWc8VD4ge1xuICBbQ09NUFVURV0oKTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWcgZXh0ZW5kcyBFbnRpdHlUYWc8UmV2aXNpb24+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VGFnZ2VkPFQ+IHtcbiAgdGFnOiBFbnRpdHlUYWc8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnZ2VkIHtcbiAgdGFnOiBUYWc7XG59XG5cbi8vLy8vLy8vLy9cblxuLyoqXG4gKiBgdmFsdWVgIHJlY2VpdmVzIGEgdGFnIGFuZCByZXR1cm5zIGFuIG9wYXF1ZSBSZXZpc2lvbiBiYXNlZCBvbiB0aGF0IHRhZy4gVGhpc1xuICogc25hcHNob3QgY2FuIHRoZW4gbGF0ZXIgYmUgcGFzc2VkIHRvIGB2YWxpZGF0ZWAgd2l0aCB0aGUgc2FtZSB0YWcgdG9cbiAqIGRldGVybWluZSBpZiB0aGUgdGFnIGhhcyBjaGFuZ2VkIGF0IGFsbCBzaW5jZSB0aGUgdGltZSB0aGF0IGB2YWx1ZWAgd2FzXG4gKiBjYWxsZWQuXG4gKlxuICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgZ2xvYmFsIHJldmlzaW9uIGNvdW50IGRpcmVjdGx5IGZvclxuICogcGVyZm9ybWFuY2UgcmVhc29ucy4gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBzaG91bGQgbm90IGJlXG4gKiByZWxpZWQgb24gZGlyZWN0bHkgYnkgdXNlcnMgb2YgdGhlc2UgQVBJcy4gSW5zdGVhZCwgUmV2aXNpb25zIHNob3VsZCBiZVxuICogdHJlYXRlZCBhcyBpZiB0aGV5IGFyZSBvcGFxdWUvdW5rbm93biwgYW5kIHNob3VsZCBvbmx5IGJlIGludGVyYWN0ZWQgd2l0aCB2aWFcbiAqIHRoZSBgdmFsdWVgL2B2YWxpZGF0ZWAgQVBJLlxuICpcbiAqIEBwYXJhbSB0YWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRm9yVGFnKF90YWc6IFRhZyk6IFJldmlzaW9uIHtcbiAgcmV0dXJuICRSRVZJU0lPTjtcbn1cblxuLyoqXG4gKiBgdmFsaWRhdGVgIHJlY2VpdmVzIGEgdGFnIGFuZCBhIHNuYXBzaG90IGZyb20gYSBwcmV2aW91cyBjYWxsIHRvIGB2YWx1ZWAgd2l0aFxuICogdGhlIHNhbWUgdGFnLCBhbmQgZGV0ZXJtaW5lcyBpZiB0aGUgdGFnIGlzIHN0aWxsIHZhbGlkIGNvbXBhcmVkIHRvIHRoZVxuICogc25hcHNob3QuIElmIHRoZSB0YWcncyBzdGF0ZSBoYXMgY2hhbmdlZCBhdCBhbGwgc2luY2UgdGhlbiwgYHZhbGlkYXRlYCB3aWxsXG4gKiByZXR1cm4gZmFsc2UsIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiB0cnVlLiBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFcbiAqIGNhbGN1bGF0aW9uIHJlbGF0ZWQgdG8gdGhlIHRhZ3Mgc2hvdWxkIGJlIHJlcnVuLlxuICpcbiAqIEBwYXJhbSB0YWdcbiAqIEBwYXJhbSBzbmFwc2hvdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYWcodGFnOiBUYWcsIHNuYXBzaG90OiBSZXZpc2lvbikge1xuICByZXR1cm4gc25hcHNob3QgPj0gdGFnW0NPTVBVVEVdKCk7XG59XG5cbi8vLy8vLy8vLy9cblxuLyoqXG4gKiBUaGlzIGVudW0gcmVwcmVzZW50cyBhbGwgb2YgdGhlIHBvc3NpYmxlIHRhZyB0eXBlcyBmb3IgdGhlIG1vbm9tb3JwaGljIHRhZyBjbGFzcy5cbiAqIE90aGVyIGN1c3RvbSB0YWcgY2xhc3NlcyBjYW4gZXhpc3QsIHN1Y2ggYXMgQ3VycmVudFRhZyBhbmQgVm9sYXRpbGVUYWcsIGJ1dCBmb3JcbiAqIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFueSB0eXBlIG9mIHRhZyB0aGF0IGlzIG1lYW50IHRvIGJlIHVzZWQgZnJlcXVlbnRseSBzaG91bGRcbiAqIGJlIGFkZGVkIHRvIHRoZSBtb25vbW9ycGhpYyB0YWcuXG4gKi9cbmNvbnN0IGVudW0gTW9ub21vcnBoaWNUYWdUeXBlcyB7XG4gIERpcnR5YWJsZSxcbiAgVXBkYXRhYmxlLFxuICBDb21iaW5hdG9yLFxuICBDb25zdGFudCxcbn1cblxuY29uc3QgVFlQRTogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnVEFHX1RZUEUnKTtcblxuZXhwb3J0IGxldCBBTExPV19DWUNMRVM6IFdlYWtNYXA8VGFnLCBib29sZWFuPiB8IHVuZGVmaW5lZDtcblxuaWYgKERFQlVHKSB7XG4gIEFMTE9XX0NZQ0xFUyA9IG5ldyBXZWFrTWFwKCk7XG59XG5cbmludGVyZmFjZSBNb25vbW9ycGhpY1RhZ0Jhc2U8VCBleHRlbmRzIE1vbm9tb3JwaGljVGFnVHlwZXM+IGV4dGVuZHMgVGFnIHtcbiAgW1RZUEVdOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcnR5YWJsZVRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZT4ge31cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRhYmxlVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlPiB7fVxuZXhwb3J0IGludGVyZmFjZSBDb21iaW5hdG9yVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuQ29tYmluYXRvcj4ge31cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RhbnRUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudD4ge31cblxuY2xhc3MgTW9ub21vcnBoaWNUYWdJbXBsPFQgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ1R5cGVzID0gTW9ub21vcnBoaWNUYWdUeXBlcz4ge1xuICBwcml2YXRlIHJldmlzaW9uID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBsYXN0Q2hlY2tlZCA9IElOSVRJQUw7XG4gIHByaXZhdGUgbGFzdFZhbHVlID0gSU5JVElBTDtcblxuICBwcml2YXRlIGlzVXBkYXRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdWJ0YWdzOiBUYWdbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc3VidGFnOiBUYWcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdWJ0YWdCdWZmZXJDYWNoZTogUmV2aXNpb24gfCBudWxsID0gbnVsbDtcblxuICBbVFlQRV06IFQ7XG5cbiAgY29uc3RydWN0b3IodHlwZTogVCkge1xuICAgIHRoaXNbVFlQRV0gPSB0eXBlO1xuICB9XG5cbiAgW0NPTVBVVEVdKCk6IFJldmlzaW9uIHtcbiAgICBsZXQgeyBsYXN0Q2hlY2tlZCB9ID0gdGhpcztcblxuICAgIGlmICh0aGlzLmlzVXBkYXRpbmcgPT09IHRydWUpIHtcbiAgICAgIGlmIChERUJVRyAmJiAhQUxMT1dfQ1lDTEVTIS5oYXModGhpcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDeWNsZXMgaW4gdGFncyBhcmUgbm90IGFsbG93ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICsrJFJFVklTSU9OO1xuICAgIH0gZWxzZSBpZiAobGFzdENoZWNrZWQgIT09ICRSRVZJU0lPTikge1xuICAgICAgdGhpcy5pc1VwZGF0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMubGFzdENoZWNrZWQgPSAkUkVWSVNJT047XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCB7IHN1YnRhZ3MsIHN1YnRhZywgc3VidGFnQnVmZmVyQ2FjaGUsIGxhc3RWYWx1ZSwgcmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHN1YnRhZyAhPT0gbnVsbCkge1xuICAgICAgICAgIGxldCBzdWJ0YWdWYWx1ZSA9IHN1YnRhZ1tDT01QVVRFXSgpO1xuXG4gICAgICAgICAgaWYgKHN1YnRhZ1ZhbHVlID09PSBzdWJ0YWdCdWZmZXJDYWNoZSkge1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heChyZXZpc2lvbiwgbGFzdFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHRlbXBvcmFyeSBidWZmZXIgY2FjaGVcbiAgICAgICAgICAgIHRoaXMuc3VidGFnQnVmZmVyQ2FjaGUgPSBudWxsO1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heChyZXZpc2lvbiwgc3VidGFnVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJ0YWdzICE9PSBudWxsKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJ0YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzdWJ0YWdzW2ldW0NPTVBVVEVdKCk7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHZhbHVlLCByZXZpc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSByZXZpc2lvbjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyB1cGRhdGVUYWcoX3RhZzogVXBkYXRhYmxlVGFnLCBfc3VidGFnOiBUYWcpIHtcbiAgICBpZiAoREVCVUcgJiYgX3RhZ1tUWVBFXSAhPT0gTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGVkIHRvIHVwZGF0ZSBhIHRhZyB0aGF0IHdhcyBub3QgdXBkYXRhYmxlJyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVFMgMy43IHNob3VsZCBhbGxvdyB1cyB0byBkbyB0aGlzIHZpYSBhc3NlcnRpb25cbiAgICBsZXQgdGFnID0gX3RhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGw7XG4gICAgbGV0IHN1YnRhZyA9IF9zdWJ0YWcgYXMgTW9ub21vcnBoaWNUYWdJbXBsO1xuXG4gICAgaWYgKHN1YnRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgICB0YWcuc3VidGFnID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgcG9zc2liaWxpdGllcyB3aGVuIHVwZGF0aW5nIGEgc3VidGFnOlxuICAgICAgLy9cbiAgICAgIC8vIDEuIHN1YnRhZ1tDT01QVVRFXSgpIDw9IHRhZ1tDT01QVVRFXSgpO1xuICAgICAgLy8gMi4gc3VidGFnW0NPTVBVVEVdKCkgPiB0YWdbQ09NUFVURV0oKTtcbiAgICAgIC8vXG4gICAgICAvLyBUaGUgZmlyc3QgcG9zc2liaWxpdHkgaXMgY29tcGxldGVseSBmaW5lIHdpdGhpbiBvdXIgY2FjaGluZyBtb2RlbCwgYnV0XG4gICAgICAvLyB0aGUgc2Vjb25kIHBvc3NpYmlsaXR5IHByZXNlbnRzIGEgcHJvYmxlbS4gSWYgdGhlIHBhcmVudCB0YWcgaGFzXG4gICAgICAvLyBhbHJlYWR5IGJlZW4gcmVhZCwgdGhlbiBpdCdzIHZhbHVlIGlzIGNhY2hlZCBhbmQgd2lsbCBub3QgdXBkYXRlIHRvXG4gICAgICAvLyByZWZsZWN0IHRoZSBzdWJ0YWcncyBncmVhdGVyIHZhbHVlLiBOZXh0IHRpbWUgdGhlIGNhY2hlIGlzIGJ1c3RlZCwgdGhlXG4gICAgICAvLyBzdWJ0YWcncyB2YWx1ZSBfd2lsbF8gYmUgcmVhZCwgYW5kIGl0J3MgdmFsdWUgd2lsbCBiZSBfZ3JlYXRlcl8gdGhhblxuICAgICAgLy8gdGhlIHNhdmVkIHNuYXBzaG90IG9mIHRoZSBwYXJlbnQsIGNhdXNpbmcgdGhlIHJlc3VsdGluZyBjYWxjdWxhdGlvbiB0b1xuICAgICAgLy8gYmUgcmVydW4gZXJyb25lb3VzbHkuXG4gICAgICAvL1xuICAgICAgLy8gSW4gb3JkZXIgdG8gcHJldmVudCB0aGlzLCB3aGVuIHdlIGZpcnN0IHVwZGF0ZSB0byBhIG5ldyBzdWJ0YWcgd2Ugc3RvcmVcbiAgICAgIC8vIGl0cyBjb21wdXRlZCB2YWx1ZSwgYW5kIHRoZW4gY2hlY2sgYWdhaW5zdCB0aGF0IGNvbXB1dGVkIHZhbHVlIG9uXG4gICAgICAvLyBzdWJzZXF1ZW50IHVwZGF0ZXMuIElmIGl0cyB2YWx1ZSBoYXNuJ3QgY2hhbmdlZCwgdGhlbiB3ZSByZXR1cm4gdGhlXG4gICAgICAvLyBwYXJlbnQncyBwcmV2aW91cyB2YWx1ZS4gT25jZSB0aGUgc3VidGFnIGNoYW5nZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxuICAgICAgLy8gd2UgY2xlYXIgdGhlIGNhY2hlIGFuZCBldmVyeXRoaW5nIGlzIGZpbmFsbHkgaW4gc3luYyB3aXRoIHRoZSBwYXJlbnQuXG4gICAgICB0YWcuc3VidGFnQnVmZmVyQ2FjaGUgPSBzdWJ0YWdbQ09NUFVURV0oKTtcbiAgICAgIHRhZy5zdWJ0YWcgPSBzdWJ0YWc7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpcnR5VGFnKHRhZzogRGlydHlhYmxlVGFnIHwgVXBkYXRhYmxlVGFnKSB7XG4gICAgaWYgKFxuICAgICAgREVCVUcgJiZcbiAgICAgICEodGFnW1RZUEVdID09PSBNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSB8fCB0YWdbVFlQRV0gPT09IE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0ZWQgdG8gZGlydHkgYSB0YWcgdGhhdCB3YXMgbm90IGRpcnR5YWJsZScpO1xuICAgIH1cblxuICAgIGlmIChERUJVRykge1xuICAgICAgLy8gVXN1YWxseSBieSB0aGlzIHBvaW50LCB3ZSd2ZSBhbHJlYWR5IGFzc2VydGVkIHdpdGggYmV0dGVyIGVycm9yIGluZm9ybWF0aW9uLFxuICAgICAgLy8gYnV0IHRoaXMgaXMgb3VyIGxhc3QgbGluZSBvZiBkZWZlbnNlLlxuICAgICAgYXNzZXJ0VGFnTm90Q29uc3VtZWQhKHRhZyk7XG4gICAgfVxuXG4gICAgKHRhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGwpLnJldmlzaW9uID0gKyskUkVWSVNJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRpcnR5VGFnID0gTW9ub21vcnBoaWNUYWdJbXBsLmRpcnR5VGFnO1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVRhZyA9IE1vbm9tb3JwaGljVGFnSW1wbC51cGRhdGVUYWc7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhZygpOiBEaXJ0eWFibGVUYWcge1xuICByZXR1cm4gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVcGRhdGFibGVUYWcoKTogVXBkYXRhYmxlVGFnIHtcbiAgcmV0dXJuIG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUpO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVF9UQUc6IENvbnN0YW50VGFnID0gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbnN0YW50KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RUYWdnZWQoeyB0YWcgfTogVGFnZ2VkKTogYm9vbGVhbiB7XG4gIHJldHVybiB0YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RUYWcodGFnOiBUYWcpOiB0YWcgaXMgQ29uc3RhbnRUYWcge1xuICByZXR1cm4gdGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNsYXNzIFZvbGF0aWxlVGFnIGltcGxlbWVudHMgVGFnIHtcbiAgW0NPTVBVVEVdKCkge1xuICAgIHJldHVybiBWT0xBVElMRTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgVk9MQVRJTEVfVEFHID0gbmV3IFZvbGF0aWxlVGFnKCk7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNsYXNzIEN1cnJlbnRUYWcgaW1wbGVtZW50cyBDdXJyZW50VGFnIHtcbiAgW0NPTVBVVEVdKCkge1xuICAgIHJldHVybiAkUkVWSVNJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IENVUlJFTlRfVEFHID0gbmV3IEN1cnJlbnRUYWcoKTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZSh0YWdzOiBUYWdbXSk6IFRhZyB7XG4gIGxldCBvcHRpbWl6ZWQ6IFRhZ1tdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSB0YWdzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGxldCB0YWcgPSB0YWdzW2ldO1xuICAgIGlmICh0YWcgPT09IENPTlNUQU5UX1RBRykgY29udGludWU7XG4gICAgb3B0aW1pemVkLnB1c2godGFnKTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVDb21iaW5hdG9yVGFnKG9wdGltaXplZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21iaW5hdG9yVGFnKHRhZ3M6IFRhZ1tdKTogVGFnIHtcbiAgc3dpdGNoICh0YWdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBDT05TVEFOVF9UQUc7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIHRhZ3NbMF07XG4gICAgZGVmYXVsdDpcbiAgICAgIGxldCB0YWc6IENvbWJpbmF0b3JUYWcgPSBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuQ29tYmluYXRvcik7XG4gICAgICAodGFnIGFzIGFueSkuc3VidGFncyA9IHRhZ3M7XG4gICAgICByZXR1cm4gdGFnO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -244,2 +244,2 @@ import { DEBUG } from '@glimmer/env';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLEtBQVQsUUFBc0IsY0FBdEI7QUFDQSxTQUE4QixNQUE5QixRQUE0QyxTQUE1QztBQUNBLFNBQVMsb0JBQVQsUUFBcUMsU0FBckM7QUFNQSxPQUFPLE1BQU0sUUFBUSxHQUFhLENBQTNCO0FBQ1AsT0FBTyxNQUFNLE9BQU8sR0FBYSxDQUExQjtBQUNQLE9BQU8sTUFBTSxRQUFRLEdBQWEsZ0JBQTNCLEMsQ0FBNkM7O0FBRXBELElBQUksU0FBUyxHQUFHLE9BQWhCO0FBRUEsT0FBTSxTQUFVLElBQVYsR0FBYztBQUNsQixFQUFBLFNBQVM7QUFDVixDLENBRUQ7O0FBRUEsT0FBTyxNQUFNLE9BQU8sR0FBa0IsTUFBTSxDQUFDLGFBQUQsQ0FBckMsQyxDQWdCUDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsT0FBTSxTQUFVLFdBQVYsQ0FBc0IsSUFBdEIsRUFBK0I7QUFDbkMsU0FBTyxTQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7QUFVQSxPQUFNLFNBQVUsV0FBVixDQUFzQixHQUF0QixFQUFnQyxRQUFoQyxFQUFrRDtBQUN0RCxTQUFPLFFBQVEsSUFBSSxHQUFHLENBQUMsT0FBRCxDQUFILEVBQW5CO0FBQ0Q7QUFpQkQsTUFBTSxJQUFJLEdBQWtCLE1BQU0sQ0FBQyxVQUFELENBQWxDO0FBRUEsT0FBTyxJQUFJLFlBQUo7O0FBRVAsSUFBSSxLQUFKLEVBQVc7QUFDVCxFQUFBLFlBQVksR0FBRyxJQUFJLE9BQUosRUFBZjtBQUNEOztBQXFCRCxNQUFNLGtCQUFOLENBQXdCO0FBYXRCLEVBQUEsV0FBQSxDQUFZLElBQVosRUFBcUM7QUFaN0IsU0FBQSxRQUFBLEdBQVcsT0FBWDtBQUNBLFNBQUEsV0FBQSxHQUFjLE9BQWQ7QUFDQSxTQUFBLFNBQUEsR0FBWSxPQUFaO0FBRUEsU0FBQSxVQUFBLEdB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O0FBTXZCLE9BQU8sTUFBTSxXQUFXLEdBQUcsSUFBSSxVQUFKLEVBQXBCLEMsQ0FFUDs7QUFFQSxPQUFNLFNBQVUsT0FBVixDQUFrQixJQUFsQixFQUE2QjtBQUNqQyxNQUFJLFNBQVMsR0FBVSxFQUF2Qjs7QUFFQSxPQUFLLElBQUksQ0FBQyxHQUFHLENBQVIsRUFBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQXpCLEVBQWlDLENBQUMsR0FBRyxDQUFyQyxFQUF3QyxDQUFDLEVBQXpDLEVBQTZDO0FBQzNDLFFBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFELENBQWQ7QUFDQSxRQUFJLEdBQUcsS0FBSyxZQUFaLEVBQTBCO0FBQzFCLElBQUEsU0FBUyxDQUFDLElBQVYsQ0FBZSxHQUFmO0FBQ0Q7O0FBRUQsU0FBTyxtQkFBbUIsQ0FBQyxTQUFELENBQTFCO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsbUJBQVYsQ0FBOEIsSUFBOUIsRUFBeUM7QUFDN0MsVUFBUSxJQUFJLENBQUMsTUFBYjtBQUNFLFNBQUssQ0FBTDtBQUNFLGFBQU8sWUFBUDs7QUFDRixTQUFLLENBQUw7QUFDRSxhQUFPLElBQUksQ0FBQyxDQUFELENBQVg7O0FBQ0Y7QUFDRSxVQUFJLEdBQUcsR0FBRyxJQUFJLGtCQUFKLENBQXNCO0FBQUE7QUFBdEIsT0FBVjtBQUNDLE1BQUEsR0FBVyxDQUFDLE9BQVosR0FBc0IsSUFBdEI7QUFDRCxhQUFPLEdBQVA7QUFSSjtBQVVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgVW5pb25Ub0ludGVyc2VjdGlvbiwgc3ltYm9sIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBhc3NlcnRUYWdOb3RDb25zdW1lZCB9IGZyb20gJy4vZGVidWcnO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFJldmlzaW9uID0gbnVtYmVyO1xuXG5leHBvcnQgY29uc3QgQ09OU1RBTlQ6IFJldmlzaW9uID0gMDtcbmV4cG9ydCBjb25zdCBJTklUSUFMOiBSZXZpc2lvbiA9IDE7XG5leHBvcnQgY29uc3QgVk9MQVRJTEU6IFJldmlzaW9uID0gOTAwNzE5OTI1NDc0MDk5MTsgLy8gTUFYX0lOVFxuXG5sZXQgJFJFVklTSU9OID0gSU5JVElBTDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXAoKSB7XG4gICRSRVZJU0lPTisrO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT01QVVRFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdUQUdfQ09NUFVURScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVRhZzxUPiB7XG4gIFtDT01QVVRFXSgpOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZyBleHRlbmRzIEVudGl0eVRhZzxSZXZpc2lvbj4ge31cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUYWdnZWQ8VD4ge1xuICB0YWc6IEVudGl0eVRhZzxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdnZWQge1xuICB0YWc6IFRhZztcbn1cblxuLy8vLy8vLy8vL1xuXG4vKipcbiAqIGB2YWx1ZWAgcmVjZWl2ZXMgYSB0YWcgYW5kIHJldHVybnMgYW4gb3BhcXVlIFJldmlzaW9uIGJhc2VkIG9uIHRoYXQgdGFnLiBUaGlzXG4gKiBzbmFwc2hvdCBjYW4gdGhlbiBsYXRlciBiZSBwYXNzZWQgdG8gYHZhbGlkYXRlYCB3aXRoIHRoZSBzYW1lIHRhZyB0b1xuICogZGV0ZXJtaW5lIGlmIHRoZSB0YWcgaGFzIGNoYW5nZWQgYXQgYWxsIHNpbmNlIHRoZSB0aW1lIHRoYXQgYHZhbHVlYCB3YXNcbiAqIGNhbGxlZC5cbiAqXG4gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBnbG9iYWwgcmV2aXNpb24gY291bnQgZGlyZWN0bHkgZm9yXG4gKiBwZXJmb3JtYW5jZSByZWFzb25zLiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgYW5kIHNob3VsZCBub3QgYmVcbiAqIHJlbGllZCBvbiBkaXJlY3RseSBieSB1c2VycyBvZiB0aGVzZSBBUElzLiBJbnN0ZWFkLCBSZXZpc2lvbnMgc2hvdWxkIGJlXG4gKiB0cmVhdGVkIGFzIGlmIHRoZXkgYXJlIG9wYXF1ZS91bmtub3duLCBhbmQgc2hvdWxkIG9ubHkgYmUgaW50ZXJhY3RlZCB3aXRoIHZpYVxuICogdGhlIGB2YWx1ZWAvYHZhbGlkYXRlYCBBUEkuXG4gKlxuICogQHBhcmFtIHRhZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JUYWcoX3RhZzogVGFnKTogUmV2aXNpb24ge1xuICByZXR1cm4gJFJFVklTSU9OO1xufVxuXG4vKipcbiAqIGB2YWxpZGF0ZWAgcmVjZWl2ZXMgYSB0YWcgYW5kIGEgc25hcHNob3QgZnJvbSBhIHByZXZpb3VzIGNhbGwgdG8gYHZhbHVlYCB3aXRoXG4gKiB0aGUgc2FtZSB0YWcsIGFuZCBkZXRlcm1pbmVzIGlmIHRoZSB0YWcgaXMgc3RpbGwgdmFsaWQgY29tcGFyZWQgdG8gdGhlXG4gKiBzbmFwc2hvdC4gSWYgdGhlIHRhZydzIHN0YXRlIGhhcyBjaGFuZ2VkIGF0IGFsbCBzaW5jZSB0aGVuLCBgdmFsaWRhdGVgIHdpbGxcbiAqIHJldHVybiBmYWxzZSwgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIHRydWUuIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYVxuICogY2FsY3VsYXRpb24gcmVsYXRlZCB0byB0aGUgdGFncyBzaG91bGQgYmUgcmVydW4uXG4gKlxuICogQHBhcmFtIHRhZ1xuICogQHBhcmFtIHNuYXBzaG90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhZyh0YWc6IFRhZywgc25hcHNob3Q6IFJldmlzaW9uKSB7XG4gIHJldHVybiBzbmFwc2hvdCA+PSB0YWdbQ09NUFVURV0oKTtcbn1cblxuLy8vLy8vLy8vL1xuXG4vKipcbiAqIFRoaXMgZW51bSByZXByZXNlbnRzIGFsbCBvZiB0aGUgcG9zc2libGUgdGFnIHR5cGVzIGZvciB0aGUgbW9ub21vcnBoaWMgdGFnIGNsYXNzLlxuICogT3RoZXIgY3VzdG9tIHRhZyBjbGFzc2VzIGNhbiBleGlzdCwgc3VjaCBhcyBDdXJyZW50VGFnIGFuZCBWb2xhdGlsZVRhZywgYnV0IGZvclxuICogcGVyZm9ybWFuY2UgcmVhc29ucywgYW55IHR5cGUgb2YgdGFnIHRoYXQgaXMgbWVhbnQgdG8gYmUgdXNlZCBmcmVxdWVudGx5IHNob3VsZFxuICogYmUgYWRkZWQgdG8gdGhlIG1vbm9tb3JwaGljIHRhZy5cbiAqL1xuY29uc3QgZW51bSBNb25vbW9ycGhpY1RhZ1R5cGVzIHtcbiAgRGlydHlhYmxlLFxuICBVcGRhdGFibGUsXG4gIENvbWJpbmF0b3IsXG4gIENvbnN0YW50LFxufVxuXG5jb25zdCBUWVBFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdUQUdfVFlQRScpO1xuXG5leHBvcnQgbGV0IEFMTE9XX0NZQ0xFUzogV2Vha01hcDxUYWcsIGJvb2xlYW4+IHwgdW5kZWZpbmVkO1xuXG5pZiAoREVCVUcpIHtcbiAgQUxMT1dfQ1lDTEVTID0gbmV3IFdlYWtNYXAoKTtcbn1cblxuaW50ZXJmYWNlIE1vbm9tb3JwaGljVGFnQmFzZTxUIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdUeXBlcz4gZXh0ZW5kcyBUYWcge1xuICBbVFlQRV06IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlydHlhYmxlVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlPiB7fVxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGFibGVUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGU+IHt9XG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmF0b3JUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5Db21iaW5hdG9yPiB7fVxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbnN0YW50PiB7fVxuXG5pbnRlcmZhY2UgTW9ub21vcnBoaWNUYWdNYXBwaW5nIHtcbiAgW01vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlXTogRGlydHlhYmxlVGFnO1xuICBbTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGVdOiBVcGRhdGFibGVUYWc7XG4gIFtNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3JdOiBDb21iaW5hdG9yVGFnO1xuICBbTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudF06IENvbnN0YW50VGFnO1xufVxuXG50eXBlIE1vbm9tb3JwaGljVGFnID0gVW5pb25Ub0ludGVyc2VjdGlvbjxNb25vbW9ycGhpY1RhZ01hcHBpbmdbTW9ub21vcnBoaWNUYWdUeXBlc10+O1xudHlwZSBNb25vbW9ycGhpY1RhZ1R5cGUgPSBVbmlvblRvSW50ZXJzZWN0aW9uPE1vbm9tb3JwaGljVGFnVHlwZXM+O1xuXG5jbGFzcyBNb25vbW9ycGhpY1RhZ0ltcGwgaW1wbGVtZW50cyBNb25vbW9ycGhpY1RhZyB7XG4gIHByaXZhdGUgcmV2aXNpb24gPSBJTklUSUFMO1xuICBwcml2YXRlIGxhc3RDaGVja2VkID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBsYXN0VmFsdWUgPSBJTklUSUFMO1xuXG4gIHByaXZhdGUgaXNVcGRhdGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnRhZ3M6IFRhZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzdWJ0YWc6IFRhZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN1YnRhZ0J1ZmZlckNhY2hlOiBSZXZpc2lvbiB8IG51bGwgPSBudWxsO1xuXG4gIFtUWVBFXTogTW9ub21vcnBoaWNUYWdUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1vbm9tb3JwaGljVGFnVHlwZXMpIHtcbiAgICB0aGlzW1RZUEVdID0gdHlwZSBhcyBNb25vbW9ycGhpY1RhZ1R5cGU7XG4gIH1cblxuICBbQ09NUFVURV0oKTogUmV2aXNpb24ge1xuICAgIGxldCB7IGxhc3RDaGVja2VkIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuaXNVcGRhdGluZyA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKERFQlVHICYmICFBTExPV19DWUNMRVMhLmhhcyh0aGlzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N5Y2xlcyBpbiB0YWdzIGFyZSBub3QgYWxsb3dlZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxhc3RDaGVja2VkID0gKyskUkVWSVNJT047XG4gICAgfSBlbHNlIGlmIChsYXN0Q2hlY2tlZCAhPT0gJFJFVklTSU9OKSB7XG4gICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICRSRVZJU0lPTjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHsgc3VidGFncywgc3VidGFnLCBzdWJ0YWdCdWZmZXJDYWNoZSwgbGFzdFZhbHVlLCByZXZpc2lvbiB9ID0gdGhpcztcblxuICAgICAgICBpZiAoc3VidGFnICE9PSBudWxsKSB7XG4gICAgICAgICAgbGV0IHN1YnRhZ1ZhbHVlID0gc3VidGFnW0NPTVBVVEVdKCk7XG5cbiAgICAgICAgICBpZiAoc3VidGFnVmFsdWUgPT09IHN1YnRhZ0J1ZmZlckNhY2hlKSB7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHJldmlzaW9uLCBsYXN0VmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDbGVhciB0aGUgdGVtcG9yYXJ5IGJ1ZmZlciBjYWNoZVxuICAgICAgICAgICAgdGhpcy5zdWJ0YWdCdWZmZXJDYWNoZSA9IG51bGw7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHJldmlzaW9uLCBzdWJ0YWdWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnRhZ3MgIT09IG51bGwpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1YnRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHN1YnRhZ3NbaV1bQ09NUFVURV0oKTtcbiAgICAgICAgICAgIHJldmlzaW9uID0gTWF0aC5tYXgodmFsdWUsIHJldmlzaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IHJldmlzaW9uO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIHVwZGF0ZVRhZyhfdGFnOiBVcGRhdGFibGVUYWcsIF9zdWJ0YWc6IFRhZykge1xuICAgIGlmIChERUJVRyAmJiBfdGFnW1RZUEVdICE9PSBNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0ZWQgdG8gdXBkYXRlIGEgdGFnIHRoYXQgd2FzIG5vdCB1cGRhdGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBUUyAzLjcgc2hvdWxkIGFsbG93IHVzIHRvIGRvIHRoaXMgdmlhIGFzc2VydGlvblxuICAgIGxldCB0YWcgPSBfdGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbDtcbiAgICBsZXQgc3VidGFnID0gX3N1YnRhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGw7XG5cbiAgICBpZiAoc3VidGFnID09PSBDT05TVEFOVF9UQUcpIHtcbiAgICAgIHRhZy5zdWJ0YWcgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBwb3NzaWJpbGl0aWVzIHdoZW4gdXBkYXRpbmcgYSBzdWJ0YWc6XG4gICAgICAvL1xuICAgICAgLy8gMS4gc3VidGFnW0NPTVBVVEVdKCkgPD0gdGFnW0NPTVBVVEVdKCk7XG4gICAgICAvLyAyLiBzdWJ0YWdbQ09NUFVURV0oKSA+IHRhZ1tDT01QVVRFXSgpO1xuICAgICAgLy9cbiAgICAgIC8vIFRoZSBmaXJzdCBwb3NzaWJpbGl0eSBpcyBjb21wbGV0ZWx5IGZpbmUgd2l0aGluIG91ciBjYWNoaW5nIG1vZGVsLCBidXRcbiAgICAgIC8vIHRoZSBzZWNvbmQgcG9zc2liaWxpdHkgcHJlc2VudHMgYSBwcm9ibGVtLiBJZiB0aGUgcGFyZW50IHRhZyBoYXNcbiAgICAgIC8vIGFscmVhZHkgYmVlbiByZWFkLCB0aGVuIGl0J3MgdmFsdWUgaXMgY2FjaGVkIGFuZCB3aWxsIG5vdCB1cGRhdGUgdG9cbiAgICAgIC8vIHJlZmxlY3QgdGhlIHN1YnRhZydzIGdyZWF0ZXIgdmFsdWUuIE5leHQgdGltZSB0aGUgY2FjaGUgaXMgYnVzdGVkLCB0aGVcbiAgICAgIC8vIHN1YnRhZydzIHZhbHVlIF93aWxsXyBiZSByZWFkLCBhbmQgaXQncyB2YWx1ZSB3aWxsIGJlIF9ncmVhdGVyXyB0aGFuXG4gICAgICAvLyB0aGUgc2F2ZWQgc25hcHNob3Qgb2YgdGhlIHBhcmVudCwgY2F1c2luZyB0aGUgcmVzdWx0aW5nIGNhbGN1bGF0aW9uIHRvXG4gICAgICAvLyBiZSByZXJ1biBlcnJvbmVvdXNseS5cbiAgICAgIC8vXG4gICAgICAvLyBJbiBvcmRlciB0byBwcmV2ZW50IHRoaXMsIHdoZW4gd2UgZmlyc3QgdXBkYXRlIHRvIGEgbmV3IHN1YnRhZyB3ZSBzdG9yZVxuICAgICAgLy8gaXRzIGNvbXB1dGVkIHZhbHVlLCBhbmQgdGhlbiBjaGVjayBhZ2FpbnN0IHRoYXQgY29tcHV0ZWQgdmFsdWUgb25cbiAgICAgIC8vIHN1YnNlcXVlbnQgdXBkYXRlcy4gSWYgaXRzIHZhbHVlIGhhc24ndCBjaGFuZ2VkLCB0aGVuIHdlIHJldHVybiB0aGVcbiAgICAgIC8vIHBhcmVudCdzIHByZXZpb3VzIHZhbHVlLiBPbmNlIHRoZSBzdWJ0YWcgY2hhbmdlcyBmb3IgdGhlIGZpcnN0IHRpbWUsXG4gICAgICAvLyB3ZSBjbGVhciB0aGUgY2FjaGUgYW5kIGV2ZXJ5dGhpbmcgaXMgZmluYWxseSBpbiBzeW5jIHdpdGggdGhlIHBhcmVudC5cbiAgICAgIHRhZy5zdWJ0YWdCdWZmZXJDYWNoZSA9IHN1YnRhZ1tDT01QVVRFXSgpO1xuICAgICAgdGFnLnN1YnRhZyA9IHN1YnRhZztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlydHlUYWcodGFnOiBEaXJ0eWFibGVUYWcgfCBVcGRhdGFibGVUYWcpIHtcbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgISh0YWdbVFlQRV0gPT09IE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlIHx8IHRhZ1tUWVBFXSA9PT0gTW9ub21vcnBoaWNUYWdUeXBlcy5EaXJ0eWFibGUpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBkaXJ0eSBhIHRhZyB0aGF0IHdhcyBub3QgZGlydHlhYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICAvLyBVc3VhbGx5IGJ5IHRoaXMgcG9pbnQsIHdlJ3ZlIGFscmVhZHkgYXNzZXJ0ZWQgd2l0aCBiZXR0ZXIgZXJyb3IgaW5mb3JtYXRpb24sXG4gICAgICAvLyBidXQgdGhpcyBpcyBvdXIgbGFzdCBsaW5lIG9mIGRlZmVuc2UuXG4gICAgICBhc3NlcnRUYWdOb3RDb25zdW1lZCEodGFnKTtcbiAgICB9XG5cbiAgICAodGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbCkucmV2aXNpb24gPSArKyRSRVZJU0lPTjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGlydHlUYWcgPSBNb25vbW9ycGhpY1RhZ0ltcGwuZGlydHlUYWc7XG5leHBvcnQgY29uc3QgdXBkYXRlVGFnID0gTW9ub21vcnBoaWNUYWdJbXBsLnVwZGF0ZVRhZztcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFnKCk6IERpcnR5YWJsZVRhZyB7XG4gIHJldHVybiBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwZGF0YWJsZVRhZygpOiBVcGRhdGFibGVUYWcge1xuICByZXR1cm4gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSk7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNvbnN0IENPTlNUQU5UX1RBRyA9IG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudCkgYXMgQ29uc3RhbnRUYWc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnZ2VkKHsgdGFnIH06IFRhZ2dlZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnKHRhZzogVGFnKTogdGFnIGlzIENvbnN0YW50VGFnIHtcbiAgcmV0dXJuIHRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBWb2xhdGlsZVRhZyBpbXBsZW1lbnRzIFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gVk9MQVRJTEU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFZPTEFUSUxFX1RBRyA9IG5ldyBWb2xhdGlsZVRhZygpO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50VGFnIGltcGxlbWVudHMgQ3VycmVudFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX1RBRyA9IG5ldyBDdXJyZW50VGFnKCk7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUodGFnczogVGFnW10pOiBUYWcge1xuICBsZXQgb3B0aW1pemVkOiBUYWdbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gdGFncy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgdGFnID0gdGFnc1tpXTtcbiAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIGNvbnRpbnVlO1xuICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ29tYmluYXRvclRhZyhvcHRpbWl6ZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tYmluYXRvclRhZyh0YWdzOiBUYWdbXSk6IFRhZyB7XG4gIHN3aXRjaCAodGFncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gQ09OU1RBTlRfVEFHO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB0YWdzWzBdO1xuICAgIGRlZmF1bHQ6XG4gICAgICBsZXQgdGFnID0gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3IpIGFzIENvbWJpbmF0b3JUYWc7XG4gICAgICAodGFnIGFzIGFueSkuc3VidGFncyA9IHRhZ3M7XG4gICAgICByZXR1cm4gdGFnO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLEtBQVQsUUFBc0IsY0FBdEI7QUFDQSxTQUFTLE1BQVQsUUFBdUIsU0FBdkI7QUFDQSxTQUFTLG9CQUFULFFBQXFDLFNBQXJDO0FBTUEsT0FBTyxNQUFNLFFBQVEsR0FBYSxDQUEzQjtBQUNQLE9BQU8sTUFBTSxPQUFPLEdBQWEsQ0FBMUI7QUFDUCxPQUFPLE1BQU0sUUFBUSxHQUFhLGdCQUEzQixDLENBQTZDOztBQUVwRCxJQUFJLFNBQVMsR0FBRyxPQUFoQjtBQUVBLE9BQU0sU0FBVSxJQUFWLEdBQWM7QUFDbEIsRUFBQSxTQUFTO0FBQ1YsQyxDQUVEOztBQUVBLE9BQU8sTUFBTSxPQUFPLEdBQWtCLE1BQU0sQ0FBQyxhQUFELENBQXJDLEMsQ0FnQlA7O0FBRUE7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE9BQU0sU0FBVSxXQUFWLENBQXNCLElBQXRCLEVBQStCO0FBQ25DLFNBQU8sU0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O0FBVUEsT0FBTSxTQUFVLFdBQVYsQ0FBc0IsR0FBdEIsRUFBZ0MsUUFBaEMsRUFBa0Q7QUFDdEQsU0FBTyxRQUFRLElBQUksR0FBRyxDQUFDLE9BQUQsQ0FBSCxFQUFuQjtBQUNEO0FBaUJELE1BQU0sSUFBSSxHQUFrQixNQUFNLENBQUMsVUFBRCxDQUFsQztBQUVBLE9BQU8sSUFBSSxZQUFKOztBQUVQLElBQUksS0FBSixFQUFXO0FBQ1QsRUFBQSxZQUFZLEdBQUcsSUFBSSxPQUFKLEVBQWY7QUFDRDs7QUFXRCxNQUFNLGtCQUFOLENBQXdCO0FBYXRCLEVBQUEsV0FBQSxDQUFZLElBQVosRUFBbUI7QUFaWCxTQUFBLFFBQUEsR0FBVyxPQUFYO0FBQ0EsU0FBQSxXQUFBLEdBQWMsT0FBZDtBQUNBLFNBQUEsU0FBQSxHQUFZLE9BQVo7QUFFQSxTQUFBLFVBQUEsR0FBYSxL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TXZCLE9BQU8sTUFBTSxXQUFXLEdBQUcsSUFBSSxVQUFKLEVBQXBCLEMsQ0FFUDs7QUFFQSxPQUFNLFNBQVUsT0FBVixDQUFrQixJQUFsQixFQUE2QjtBQUNqQyxNQUFJLFNBQVMsR0FBVSxFQUF2Qjs7QUFFQSxPQUFLLElBQUksQ0FBQyxHQUFHLENBQVIsRUFBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQXpCLEVBQWlDLENBQUMsR0FBRyxDQUFyQyxFQUF3QyxDQUFDLEVBQXpDLEVBQTZDO0FBQzNDLFFBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFELENBQWQ7QUFDQSxRQUFJLEdBQUcsS0FBSyxZQUFaLEVBQTBCO0FBQzFCLElBQUEsU0FBUyxDQUFDLElBQVYsQ0FBZSxHQUFmO0FBQ0Q7O0FBRUQsU0FBTyxtQkFBbUIsQ0FBQyxTQUFELENBQTFCO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsbUJBQVYsQ0FBOEIsSUFBOUIsRUFBeUM7QUFDN0MsVUFBUSxJQUFJLENBQUMsTUFBYjtBQUNFLFNBQUssQ0FBTDtBQUNFLGFBQU8sWUFBUDs7QUFDRixTQUFLLENBQUw7QUFDRSxhQUFPLElBQUksQ0FBQyxDQUFELENBQVg7O0FBQ0Y7QUFDRSxVQUFJLEdBQUcsR0FBa0IsSUFBSSxrQkFBSixDQUFzQjtBQUFBO0FBQXRCLE9BQXpCO0FBQ0MsTUFBQSxHQUFXLENBQUMsT0FBWixHQUFzQixJQUF0QjtBQUNELGFBQU8sR0FBUDtBQVJKO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBzeW1ib2wgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGFzc2VydFRhZ05vdENvbnN1bWVkIH0gZnJvbSAnLi9kZWJ1Zyc7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IHR5cGUgUmV2aXNpb24gPSBudW1iZXI7XG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVDogUmV2aXNpb24gPSAwO1xuZXhwb3J0IGNvbnN0IElOSVRJQUw6IFJldmlzaW9uID0gMTtcbmV4cG9ydCBjb25zdCBWT0xBVElMRTogUmV2aXNpb24gPSA5MDA3MTk5MjU0NzQwOTkxOyAvLyBNQVhfSU5UXG5cbmxldCAkUkVWSVNJT04gPSBJTklUSUFMO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVtcCgpIHtcbiAgJFJFVklTSU9OKys7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNvbnN0IENPTVBVVEU6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1RBR19DT01QVVRFJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VGFnPFQ+IHtcbiAgW0NPTVBVVEVdKCk6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIGV4dGVuZHMgRW50aXR5VGFnPFJldmlzaW9uPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVRhZ2dlZDxUPiB7XG4gIHRhZzogRW50aXR5VGFnPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ2dlZCB7XG4gIHRhZzogVGFnO1xufVxuXG4vLy8vLy8vLy8vXG5cbi8qKlxuICogYHZhbHVlYCByZWNlaXZlcyBhIHRhZyBhbmQgcmV0dXJucyBhbiBvcGFxdWUgUmV2aXNpb24gYmFzZWQgb24gdGhhdCB0YWcuIFRoaXNcbiAqIHNuYXBzaG90IGNhbiB0aGVuIGxhdGVyIGJlIHBhc3NlZCB0byBgdmFsaWRhdGVgIHdpdGggdGhlIHNhbWUgdGFnIHRvXG4gKiBkZXRlcm1pbmUgaWYgdGhlIHRhZyBoYXMgY2hhbmdlZCBhdCBhbGwgc2luY2UgdGhlIHRpbWUgdGhhdCBgdmFsdWVgIHdhc1xuICogY2FsbGVkLlxuICpcbiAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHJldHVybnMgdGhlIGdsb2JhbCByZXZpc2lvbiBjb3VudCBkaXJlY3RseSBmb3JcbiAqIHBlcmZvcm1hbmNlIHJlYXNvbnMuIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZVxuICogcmVsaWVkIG9uIGRpcmVjdGx5IGJ5IHVzZXJzIG9mIHRoZXNlIEFQSXMuIEluc3RlYWQsIFJldmlzaW9ucyBzaG91bGQgYmVcbiAqIHRyZWF0ZWQgYXMgaWYgdGhleSBhcmUgb3BhcXVlL3Vua25vd24sIGFuZCBzaG91bGQgb25seSBiZSBpbnRlcmFjdGVkIHdpdGggdmlhXG4gKiB0aGUgYHZhbHVlYC9gdmFsaWRhdGVgIEFQSS5cbiAqXG4gKiBAcGFyYW0gdGFnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZvclRhZyhfdGFnOiBUYWcpOiBSZXZpc2lvbiB7XG4gIHJldHVybiAkUkVWSVNJT047XG59XG5cbi8qKlxuICogYHZhbGlkYXRlYCByZWNlaXZlcyBhIHRhZyBhbmQgYSBzbmFwc2hvdCBmcm9tIGEgcHJldmlvdXMgY2FsbCB0byBgdmFsdWVgIHdpdGhcbiAqIHRoZSBzYW1lIHRhZywgYW5kIGRldGVybWluZXMgaWYgdGhlIHRhZyBpcyBzdGlsbCB2YWxpZCBjb21wYXJlZCB0byB0aGVcbiAqIHNuYXBzaG90LiBJZiB0aGUgdGFnJ3Mgc3RhdGUgaGFzIGNoYW5nZWQgYXQgYWxsIHNpbmNlIHRoZW4sIGB2YWxpZGF0ZWAgd2lsbFxuICogcmV0dXJuIGZhbHNlLCBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gdHJ1ZS4gVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhXG4gKiBjYWxjdWxhdGlvbiByZWxhdGVkIHRvIHRoZSB0YWdzIHNob3VsZCBiZSByZXJ1bi5cbiAqXG4gKiBAcGFyYW0gdGFnXG4gKiBAcGFyYW0gc25hcHNob3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFnKHRhZzogVGFnLCBzbmFwc2hvdDogUmV2aXNpb24pIHtcbiAgcmV0dXJuIHNuYXBzaG90ID49IHRhZ1tDT01QVVRFXSgpO1xufVxuXG4vLy8vLy8vLy8vXG5cbi8qKlxuICogVGhpcyBlbnVtIHJlcHJlc2VudHMgYWxsIG9mIHRoZSBwb3NzaWJsZSB0YWcgdHlwZXMgZm9yIHRoZSBtb25vbW9ycGhpYyB0YWcgY2xhc3MuXG4gKiBPdGhlciBjdXN0b20gdGFnIGNsYXNzZXMgY2FuIGV4aXN0LCBzdWNoIGFzIEN1cnJlbnRUYWcgYW5kIFZvbGF0aWxlVGFnLCBidXQgZm9yXG4gKiBwZXJmb3JtYW5jZSByZWFzb25zLCBhbnkgdHlwZSBvZiB0YWcgdGhhdCBpcyBtZWFudCB0byBiZSB1c2VkIGZyZXF1ZW50bHkgc2hvdWxkXG4gKiBiZSBhZGRlZCB0byB0aGUgbW9ub21vcnBoaWMgdGFnLlxuICovXG5jb25zdCBlbnVtIE1vbm9tb3JwaGljVGFnVHlwZXMge1xuICBEaXJ0eWFibGUsXG4gIFVwZGF0YWJsZSxcbiAgQ29tYmluYXRvcixcbiAgQ29uc3RhbnQsXG59XG5cbmNvbnN0IFRZUEU6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1RBR19UWVBFJyk7XG5cbmV4cG9ydCBsZXQgQUxMT1dfQ1lDTEVTOiBXZWFrTWFwPFRhZywgYm9vbGVhbj4gfCB1bmRlZmluZWQ7XG5cbmlmIChERUJVRykge1xuICBBTExPV19DWUNMRVMgPSBuZXcgV2Vha01hcCgpO1xufVxuXG5pbnRlcmZhY2UgTW9ub21vcnBoaWNUYWdCYXNlPFQgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ1R5cGVzPiBleHRlbmRzIFRhZyB7XG4gIFtUWVBFXTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJ0eWFibGVUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5EaXJ0eWFibGU+IHt9XG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZVRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZT4ge31cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluYXRvclRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3I+IHt9XG5leHBvcnQgaW50ZXJmYWNlIENvbnN0YW50VGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuQ29uc3RhbnQ+IHt9XG5cbmNsYXNzIE1vbm9tb3JwaGljVGFnSW1wbDxUIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdUeXBlcyA9IE1vbm9tb3JwaGljVGFnVHlwZXM+IHtcbiAgcHJpdmF0ZSByZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgbGFzdENoZWNrZWQgPSBJTklUSUFMO1xuICBwcml2YXRlIGxhc3RWYWx1ZSA9IElOSVRJQUw7XG5cbiAgcHJpdmF0ZSBpc1VwZGF0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VidGFnczogVGFnW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHN1YnRhZzogVGFnIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3VidGFnQnVmZmVyQ2FjaGU6IFJldmlzaW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgW1RZUEVdOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IFQpIHtcbiAgICB0aGlzW1RZUEVdID0gdHlwZTtcbiAgfVxuXG4gIFtDT01QVVRFXSgpOiBSZXZpc2lvbiB7XG4gICAgbGV0IHsgbGFzdENoZWNrZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5pc1VwZGF0aW5nID09PSB0cnVlKSB7XG4gICAgICBpZiAoREVCVUcgJiYgIUFMTE9XX0NZQ0xFUyEuaGFzKHRoaXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ3ljbGVzIGluIHRhZ3MgYXJlIG5vdCBhbGxvd2VkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGFzdENoZWNrZWQgPSArKyRSRVZJU0lPTjtcbiAgICB9IGVsc2UgaWYgKGxhc3RDaGVja2VkICE9PSAkUkVWSVNJT04pIHtcbiAgICAgIHRoaXMuaXNVcGRhdGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxhc3RDaGVja2VkID0gJFJFVklTSU9OO1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgeyBzdWJ0YWdzLCBzdWJ0YWcsIHN1YnRhZ0J1ZmZlckNhY2hlLCBsYXN0VmFsdWUsIHJldmlzaW9uIH0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChzdWJ0YWcgIT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgc3VidGFnVmFsdWUgPSBzdWJ0YWdbQ09NUFVURV0oKTtcblxuICAgICAgICAgIGlmIChzdWJ0YWdWYWx1ZSA9PT0gc3VidGFnQnVmZmVyQ2FjaGUpIHtcbiAgICAgICAgICAgIHJldmlzaW9uID0gTWF0aC5tYXgocmV2aXNpb24sIGxhc3RWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENsZWFyIHRoZSB0ZW1wb3JhcnkgYnVmZmVyIGNhY2hlXG4gICAgICAgICAgICB0aGlzLnN1YnRhZ0J1ZmZlckNhY2hlID0gbnVsbDtcbiAgICAgICAgICAgIHJldmlzaW9uID0gTWF0aC5tYXgocmV2aXNpb24sIHN1YnRhZ1ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VidGFncyAhPT0gbnVsbCkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3VidGFncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gc3VidGFnc1tpXVtDT01QVVRFXSgpO1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heCh2YWx1ZSwgcmV2aXNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGFzdFZhbHVlID0gcmV2aXNpb247XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gIH1cblxuICBzdGF0aWMgdXBkYXRlVGFnKF90YWc6IFVwZGF0YWJsZVRhZywgX3N1YnRhZzogVGFnKSB7XG4gICAgaWYgKERFQlVHICYmIF90YWdbVFlQRV0gIT09IE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byB1cGRhdGUgYSB0YWcgdGhhdCB3YXMgbm90IHVwZGF0YWJsZScpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFRTIDMuNyBzaG91bGQgYWxsb3cgdXMgdG8gZG8gdGhpcyB2aWEgYXNzZXJ0aW9uXG4gICAgbGV0IHRhZyA9IF90YWcgYXMgTW9ub21vcnBoaWNUYWdJbXBsO1xuICAgIGxldCBzdWJ0YWcgPSBfc3VidGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbDtcblxuICAgIGlmIChzdWJ0YWcgPT09IENPTlNUQU5UX1RBRykge1xuICAgICAgdGFnLnN1YnRhZyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHBvc3NpYmlsaXRpZXMgd2hlbiB1cGRhdGluZyBhIHN1YnRhZzpcbiAgICAgIC8vXG4gICAgICAvLyAxLiBzdWJ0YWdbQ09NUFVURV0oKSA8PSB0YWdbQ09NUFVURV0oKTtcbiAgICAgIC8vIDIuIHN1YnRhZ1tDT01QVVRFXSgpID4gdGFnW0NPTVBVVEVdKCk7XG4gICAgICAvL1xuICAgICAgLy8gVGhlIGZpcnN0IHBvc3NpYmlsaXR5IGlzIGNvbXBsZXRlbHkgZmluZSB3aXRoaW4gb3VyIGNhY2hpbmcgbW9kZWwsIGJ1dFxuICAgICAgLy8gdGhlIHNlY29uZCBwb3NzaWJpbGl0eSBwcmVzZW50cyBhIHByb2JsZW0uIElmIHRoZSBwYXJlbnQgdGFnIGhhc1xuICAgICAgLy8gYWxyZWFkeSBiZWVuIHJlYWQsIHRoZW4gaXQncyB2YWx1ZSBpcyBjYWNoZWQgYW5kIHdpbGwgbm90IHVwZGF0ZSB0b1xuICAgICAgLy8gcmVmbGVjdCB0aGUgc3VidGFnJ3MgZ3JlYXRlciB2YWx1ZS4gTmV4dCB0aW1lIHRoZSBjYWNoZSBpcyBidXN0ZWQsIHRoZVxuICAgICAgLy8gc3VidGFnJ3MgdmFsdWUgX3dpbGxfIGJlIHJlYWQsIGFuZCBpdCdzIHZhbHVlIHdpbGwgYmUgX2dyZWF0ZXJfIHRoYW5cbiAgICAgIC8vIHRoZSBzYXZlZCBzbmFwc2hvdCBvZiB0aGUgcGFyZW50LCBjYXVzaW5nIHRoZSByZXN1bHRpbmcgY2FsY3VsYXRpb24gdG9cbiAgICAgIC8vIGJlIHJlcnVuIGVycm9uZW91c2x5LlxuICAgICAgLy9cbiAgICAgIC8vIEluIG9yZGVyIHRvIHByZXZlbnQgdGhpcywgd2hlbiB3ZSBmaXJzdCB1cGRhdGUgdG8gYSBuZXcgc3VidGFnIHdlIHN0b3JlXG4gICAgICAvLyBpdHMgY29tcHV0ZWQgdmFsdWUsIGFuZCB0aGVuIGNoZWNrIGFnYWluc3QgdGhhdCBjb21wdXRlZCB2YWx1ZSBvblxuICAgICAgLy8gc3Vic2VxdWVudCB1cGRhdGVzLiBJZiBpdHMgdmFsdWUgaGFzbid0IGNoYW5nZWQsIHRoZW4gd2UgcmV0dXJuIHRoZVxuICAgICAgLy8gcGFyZW50J3MgcHJldmlvdXMgdmFsdWUuIE9uY2UgdGhlIHN1YnRhZyBjaGFuZ2VzIGZvciB0aGUgZmlyc3QgdGltZSxcbiAgICAgIC8vIHdlIGNsZWFyIHRoZSBjYWNoZSBhbmQgZXZlcnl0aGluZyBpcyBmaW5hbGx5IGluIHN5bmMgd2l0aCB0aGUgcGFyZW50LlxuICAgICAgdGFnLnN1YnRhZ0J1ZmZlckNhY2hlID0gc3VidGFnW0NPTVBVVEVdKCk7XG4gICAgICB0YWcuc3VidGFnID0gc3VidGFnO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkaXJ0eVRhZyh0YWc6IERpcnR5YWJsZVRhZyB8IFVwZGF0YWJsZVRhZykge1xuICAgIGlmIChcbiAgICAgIERFQlVHICYmXG4gICAgICAhKHRhZ1tUWVBFXSA9PT0gTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUgfHwgdGFnW1RZUEVdID09PSBNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGVkIHRvIGRpcnR5IGEgdGFnIHRoYXQgd2FzIG5vdCBkaXJ0eWFibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIC8vIFVzdWFsbHkgYnkgdGhpcyBwb2ludCwgd2UndmUgYWxyZWFkeSBhc3NlcnRlZCB3aXRoIGJldHRlciBlcnJvciBpbmZvcm1hdGlvbixcbiAgICAgIC8vIGJ1dCB0aGlzIGlzIG91ciBsYXN0IGxpbmUgb2YgZGVmZW5zZS5cbiAgICAgIGFzc2VydFRhZ05vdENvbnN1bWVkISh0YWcpO1xuICAgIH1cblxuICAgICh0YWcgYXMgTW9ub21vcnBoaWNUYWdJbXBsKS5yZXZpc2lvbiA9ICsrJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkaXJ0eVRhZyA9IE1vbm9tb3JwaGljVGFnSW1wbC5kaXJ0eVRhZztcbmV4cG9ydCBjb25zdCB1cGRhdGVUYWcgPSBNb25vbW9ycGhpY1RhZ0ltcGwudXBkYXRlVGFnO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWcoKTogRGlydHlhYmxlVGFnIHtcbiAgcmV0dXJuIG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5EaXJ0eWFibGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRhYmxlVGFnKCk6IFVwZGF0YWJsZVRhZyB7XG4gIHJldHVybiBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlKTtcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY29uc3QgQ09OU1RBTlRfVEFHOiBDb25zdGFudFRhZyA9IG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnZ2VkKHsgdGFnIH06IFRhZ2dlZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnKHRhZzogVGFnKTogdGFnIGlzIENvbnN0YW50VGFnIHtcbiAgcmV0dXJuIHRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBWb2xhdGlsZVRhZyBpbXBsZW1lbnRzIFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gVk9MQVRJTEU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFZPTEFUSUxFX1RBRyA9IG5ldyBWb2xhdGlsZVRhZygpO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50VGFnIGltcGxlbWVudHMgQ3VycmVudFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX1RBRyA9IG5ldyBDdXJyZW50VGFnKCk7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUodGFnczogVGFnW10pOiBUYWcge1xuICBsZXQgb3B0aW1pemVkOiBUYWdbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gdGFncy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgdGFnID0gdGFnc1tpXTtcbiAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIGNvbnRpbnVlO1xuICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ29tYmluYXRvclRhZyhvcHRpbWl6ZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tYmluYXRvclRhZyh0YWdzOiBUYWdbXSk6IFRhZyB7XG4gIHN3aXRjaCAodGFncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gQ09OU1RBTlRfVEFHO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB0YWdzWzBdO1xuICAgIGRlZmF1bHQ6XG4gICAgICBsZXQgdGFnOiBDb21iaW5hdG9yVGFnID0gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3IpO1xuICAgICAgKHRhZyBhcyBhbnkpLnN1YnRhZ3MgPSB0YWdzO1xuICAgICAgcmV0dXJuIHRhZztcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -252,2 +252,2 @@ import { DEBUG } from '@glimmer/env';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLEtBQUEsUUFBQSxjQUFBO0FBQ0EsU0FBQSxNQUFBLFFBQUEsU0FBQTtBQUNBLFNBQUEsb0JBQUEsUUFBQSxTQUFBO0FBTUEsT0FBTyxJQUFNLFFBQVEsR0FBZCxDQUFBO0FBQ1AsT0FBTyxJQUFNLE9BQU8sR0FBYixDQUFBO0FBQ1AsT0FBTyxJQUFNLFFBQVEsR0FBZCxnQkFBQSxDLENBQTZDOztBQUVwRCxJQUFJLFNBQVMsR0FBYixPQUFBO0FBRUEsT0FBTSxTQUFBLElBQUEsR0FBYztBQUNsQixFQUFBLFNBQVM7RUFHWDs7QUFFQSxPQUFPLElBQU0sT0FBTyxHQUFrQixNQUFNLENBQXJDLGFBQXFDLENBQXJDLEMsQ0FnQlA7O0FBRUE7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE9BQU0sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUErQjtBQUNuQyxTQUFBLFNBQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVVBLE9BQU0sU0FBQSxXQUFBLENBQUEsR0FBQSxFQUFBLFFBQUEsRUFBa0Q7QUFDdEQsU0FBTyxRQUFRLElBQUksR0FBRyxDQUF0QixPQUFzQixDQUFILEVBQW5CO0FBQ0Q7QUFpQkQsSUFBTSxJQUFJLEdBQWtCLE1BQU0sQ0FBbEMsVUFBa0MsQ0FBbEM7QUFFQSxPQUFPLElBQUEsWUFBQTs7QUFFUCxJQUFBLEtBQUEsRUFBVztBQUNULEVBQUEsWUFBWSxHQUFHLElBQWYsT0FBZSxFQUFmO0FBQ0Q7O0lBcUJELGtCO0FBYUUsOEJBQUEsSUFBQSxFQUFxQztBQVo3QixTQUFBLFFBQUEsR0FBQSxPQUFBO0FBQ0EsU0FBQSxXQUFBLEdBQUEsT0FBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLE9BQUE7QUFFQSxTQUFBLFVBQUEsR0FBQSxLQUFBO0FBQ0EsU0FBQSxPQUFBLEdBQUEsSUFBQTtBQUVBLFNBQUEs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O0FBQUE7QUFBQTtBQU1BLE9BQU8sSUFBTSxXQUFXLEdBQUcsSUFBcEIsVUFBb0IsRUFBcEIsQyxDQUVQOztBQUVBLE9BQU0sU0FBQSxPQUFBLENBQUEsSUFBQSxFQUE2QjtBQUNqQyxNQUFJLFNBQVMsR0FBYixFQUFBOztBQUVBLE9BQUssSUFBSSxDQUFDLEdBQUwsQ0FBQSxFQUFXLENBQUMsR0FBRyxJQUFJLENBQXhCLE1BQUEsRUFBaUMsQ0FBQyxHQUFsQyxDQUFBLEVBQXdDLENBQXhDLEVBQUEsRUFBNkM7QUFDM0MsUUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFkLENBQWMsQ0FBZDtBQUNBLFFBQUksR0FBRyxLQUFQLFlBQUEsRUFBMEI7QUFDMUIsSUFBQSxTQUFTLENBQVQsSUFBQSxDQUFBLEdBQUE7QUFDRDs7QUFFRCxTQUFPLG1CQUFtQixDQUExQixTQUEwQixDQUExQjtBQUNEO0FBRUQsT0FBTSxTQUFBLG1CQUFBLENBQUEsSUFBQSxFQUF5QztBQUM3QyxVQUFRLElBQUksQ0FBWixNQUFBO0FBQ0UsU0FBQSxDQUFBO0FBQ0UsYUFBQSxZQUFBOztBQUNGLFNBQUEsQ0FBQTtBQUNFLGFBQU8sSUFBSSxDQUFYLENBQVcsQ0FBWDs7QUFDRjtBQUNFLFVBQUksR0FBRyxHQUFHLElBQUEsa0JBQUEsQ0FBc0I7QUFBQTtBQUF0QixPQUFWO0FBQ0MsTUFBQSxHQUFXLENBQVgsT0FBQSxHQUFBLElBQUE7QUFDRCxhQUFBLEdBQUE7QUFSSjtBQVVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgVW5pb25Ub0ludGVyc2VjdGlvbiwgc3ltYm9sIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBhc3NlcnRUYWdOb3RDb25zdW1lZCB9IGZyb20gJy4vZGVidWcnO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFJldmlzaW9uID0gbnVtYmVyO1xuXG5leHBvcnQgY29uc3QgQ09OU1RBTlQ6IFJldmlzaW9uID0gMDtcbmV4cG9ydCBjb25zdCBJTklUSUFMOiBSZXZpc2lvbiA9IDE7XG5leHBvcnQgY29uc3QgVk9MQVRJTEU6IFJldmlzaW9uID0gOTAwNzE5OTI1NDc0MDk5MTsgLy8gTUFYX0lOVFxuXG5sZXQgJFJFVklTSU9OID0gSU5JVElBTDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXAoKSB7XG4gICRSRVZJU0lPTisrO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT01QVVRFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdUQUdfQ09NUFVURScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVRhZzxUPiB7XG4gIFtDT01QVVRFXSgpOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZyBleHRlbmRzIEVudGl0eVRhZzxSZXZpc2lvbj4ge31cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUYWdnZWQ8VD4ge1xuICB0YWc6IEVudGl0eVRhZzxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdnZWQge1xuICB0YWc6IFRhZztcbn1cblxuLy8vLy8vLy8vL1xuXG4vKipcbiAqIGB2YWx1ZWAgcmVjZWl2ZXMgYSB0YWcgYW5kIHJldHVybnMgYW4gb3BhcXVlIFJldmlzaW9uIGJhc2VkIG9uIHRoYXQgdGFnLiBUaGlzXG4gKiBzbmFwc2hvdCBjYW4gdGhlbiBsYXRlciBiZSBwYXNzZWQgdG8gYHZhbGlkYXRlYCB3aXRoIHRoZSBzYW1lIHRhZyB0b1xuICogZGV0ZXJtaW5lIGlmIHRoZSB0YWcgaGFzIGNoYW5nZWQgYXQgYWxsIHNpbmNlIHRoZSB0aW1lIHRoYXQgYHZhbHVlYCB3YXNcbiAqIGNhbGxlZC5cbiAqXG4gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBnbG9iYWwgcmV2aXNpb24gY291bnQgZGlyZWN0bHkgZm9yXG4gKiBwZXJmb3JtYW5jZSByZWFzb25zLiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgYW5kIHNob3VsZCBub3QgYmVcbiAqIHJlbGllZCBvbiBkaXJlY3RseSBieSB1c2VycyBvZiB0aGVzZSBBUElzLiBJbnN0ZWFkLCBSZXZpc2lvbnMgc2hvdWxkIGJlXG4gKiB0cmVhdGVkIGFzIGlmIHRoZXkgYXJlIG9wYXF1ZS91bmtub3duLCBhbmQgc2hvdWxkIG9ubHkgYmUgaW50ZXJhY3RlZCB3aXRoIHZpYVxuICogdGhlIGB2YWx1ZWAvYHZhbGlkYXRlYCBBUEkuXG4gKlxuICogQHBhcmFtIHRhZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JUYWcoX3RhZzogVGFnKTogUmV2aXNpb24ge1xuICByZXR1cm4gJFJFVklTSU9OO1xufVxuXG4vKipcbiAqIGB2YWxpZGF0ZWAgcmVjZWl2ZXMgYSB0YWcgYW5kIGEgc25hcHNob3QgZnJvbSBhIHByZXZpb3VzIGNhbGwgdG8gYHZhbHVlYCB3aXRoXG4gKiB0aGUgc2FtZSB0YWcsIGFuZCBkZXRlcm1pbmVzIGlmIHRoZSB0YWcgaXMgc3RpbGwgdmFsaWQgY29tcGFyZWQgdG8gdGhlXG4gKiBzbmFwc2hvdC4gSWYgdGhlIHRhZydzIHN0YXRlIGhhcyBjaGFuZ2VkIGF0IGFsbCBzaW5jZSB0aGVuLCBgdmFsaWRhdGVgIHdpbGxcbiAqIHJldHVybiBmYWxzZSwgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIHRydWUuIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYVxuICogY2FsY3VsYXRpb24gcmVsYXRlZCB0byB0aGUgdGFncyBzaG91bGQgYmUgcmVydW4uXG4gKlxuICogQHBhcmFtIHRhZ1xuICogQHBhcmFtIHNuYXBzaG90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhZyh0YWc6IFRhZywgc25hcHNob3Q6IFJldmlzaW9uKSB7XG4gIHJldHVybiBzbmFwc2hvdCA+PSB0YWdbQ09NUFVURV0oKTtcbn1cblxuLy8vLy8vLy8vL1xuXG4vKipcbiAqIFRoaXMgZW51bSByZXByZXNlbnRzIGFsbCBvZiB0aGUgcG9zc2libGUgdGFnIHR5cGVzIGZvciB0aGUgbW9ub21vcnBoaWMgdGFnIGNsYXNzLlxuICogT3RoZXIgY3VzdG9tIHRhZyBjbGFzc2VzIGNhbiBleGlzdCwgc3VjaCBhcyBDdXJyZW50VGFnIGFuZCBWb2xhdGlsZVRhZywgYnV0IGZvclxuICogcGVyZm9ybWFuY2UgcmVhc29ucywgYW55IHR5cGUgb2YgdGFnIHRoYXQgaXMgbWVhbnQgdG8gYmUgdXNlZCBmcmVxdWVudGx5IHNob3VsZFxuICogYmUgYWRkZWQgdG8gdGhlIG1vbm9tb3JwaGljIHRhZy5cbiAqL1xuY29uc3QgZW51bSBNb25vbW9ycGhpY1RhZ1R5cGVzIHtcbiAgRGlydHlhYmxlLFxuICBVcGRhdGFibGUsXG4gIENvbWJpbmF0b3IsXG4gIENvbnN0YW50LFxufVxuXG5jb25zdCBUWVBFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdUQUdfVFlQRScpO1xuXG5leHBvcnQgbGV0IEFMTE9XX0NZQ0xFUzogV2Vha01hcDxUYWcsIGJvb2xlYW4+IHwgdW5kZWZpbmVkO1xuXG5pZiAoREVCVUcpIHtcbiAgQUxMT1dfQ1lDTEVTID0gbmV3IFdlYWtNYXAoKTtcbn1cblxuaW50ZXJmYWNlIE1vbm9tb3JwaGljVGFnQmFzZTxUIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdUeXBlcz4gZXh0ZW5kcyBUYWcge1xuICBbVFlQRV06IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlydHlhYmxlVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlPiB7fVxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGFibGVUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGU+IHt9XG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmF0b3JUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5Db21iaW5hdG9yPiB7fVxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbnN0YW50PiB7fVxuXG5pbnRlcmZhY2UgTW9ub21vcnBoaWNUYWdNYXBwaW5nIHtcbiAgW01vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlXTogRGlydHlhYmxlVGFnO1xuICBbTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGVdOiBVcGRhdGFibGVUYWc7XG4gIFtNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3JdOiBDb21iaW5hdG9yVGFnO1xuICBbTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudF06IENvbnN0YW50VGFnO1xufVxuXG50eXBlIE1vbm9tb3JwaGljVGFnID0gVW5pb25Ub0ludGVyc2VjdGlvbjxNb25vbW9ycGhpY1RhZ01hcHBpbmdbTW9ub21vcnBoaWNUYWdUeXBlc10+O1xudHlwZSBNb25vbW9ycGhpY1RhZ1R5cGUgPSBVbmlvblRvSW50ZXJzZWN0aW9uPE1vbm9tb3JwaGljVGFnVHlwZXM+O1xuXG5jbGFzcyBNb25vbW9ycGhpY1RhZ0ltcGwgaW1wbGVtZW50cyBNb25vbW9ycGhpY1RhZyB7XG4gIHByaXZhdGUgcmV2aXNpb24gPSBJTklUSUFMO1xuICBwcml2YXRlIGxhc3RDaGVja2VkID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBsYXN0VmFsdWUgPSBJTklUSUFMO1xuXG4gIHByaXZhdGUgaXNVcGRhdGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnRhZ3M6IFRhZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzdWJ0YWc6IFRhZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN1YnRhZ0J1ZmZlckNhY2hlOiBSZXZpc2lvbiB8IG51bGwgPSBudWxsO1xuXG4gIFtUWVBFXTogTW9ub21vcnBoaWNUYWdUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1vbm9tb3JwaGljVGFnVHlwZXMpIHtcbiAgICB0aGlzW1RZUEVdID0gdHlwZSBhcyBNb25vbW9ycGhpY1RhZ1R5cGU7XG4gIH1cblxuICBbQ09NUFVURV0oKTogUmV2aXNpb24ge1xuICAgIGxldCB7IGxhc3RDaGVja2VkIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuaXNVcGRhdGluZyA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKERFQlVHICYmICFBTExPV19DWUNMRVMhLmhhcyh0aGlzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N5Y2xlcyBpbiB0YWdzIGFyZSBub3QgYWxsb3dlZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxhc3RDaGVja2VkID0gKyskUkVWSVNJT047XG4gICAgfSBlbHNlIGlmIChsYXN0Q2hlY2tlZCAhPT0gJFJFVklTSU9OKSB7XG4gICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICRSRVZJU0lPTjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHsgc3VidGFncywgc3VidGFnLCBzdWJ0YWdCdWZmZXJDYWNoZSwgbGFzdFZhbHVlLCByZXZpc2lvbiB9ID0gdGhpcztcblxuICAgICAgICBpZiAoc3VidGFnICE9PSBudWxsKSB7XG4gICAgICAgICAgbGV0IHN1YnRhZ1ZhbHVlID0gc3VidGFnW0NPTVBVVEVdKCk7XG5cbiAgICAgICAgICBpZiAoc3VidGFnVmFsdWUgPT09IHN1YnRhZ0J1ZmZlckNhY2hlKSB7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHJldmlzaW9uLCBsYXN0VmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDbGVhciB0aGUgdGVtcG9yYXJ5IGJ1ZmZlciBjYWNoZVxuICAgICAgICAgICAgdGhpcy5zdWJ0YWdCdWZmZXJDYWNoZSA9IG51bGw7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHJldmlzaW9uLCBzdWJ0YWdWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnRhZ3MgIT09IG51bGwpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1YnRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHN1YnRhZ3NbaV1bQ09NUFVURV0oKTtcbiAgICAgICAgICAgIHJldmlzaW9uID0gTWF0aC5tYXgodmFsdWUsIHJldmlzaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IHJldmlzaW9uO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIHVwZGF0ZVRhZyhfdGFnOiBVcGRhdGFibGVUYWcsIF9zdWJ0YWc6IFRhZykge1xuICAgIGlmIChERUJVRyAmJiBfdGFnW1RZUEVdICE9PSBNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0ZWQgdG8gdXBkYXRlIGEgdGFnIHRoYXQgd2FzIG5vdCB1cGRhdGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBUUyAzLjcgc2hvdWxkIGFsbG93IHVzIHRvIGRvIHRoaXMgdmlhIGFzc2VydGlvblxuICAgIGxldCB0YWcgPSBfdGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbDtcbiAgICBsZXQgc3VidGFnID0gX3N1YnRhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGw7XG5cbiAgICBpZiAoc3VidGFnID09PSBDT05TVEFOVF9UQUcpIHtcbiAgICAgIHRhZy5zdWJ0YWcgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBwb3NzaWJpbGl0aWVzIHdoZW4gdXBkYXRpbmcgYSBzdWJ0YWc6XG4gICAgICAvL1xuICAgICAgLy8gMS4gc3VidGFnW0NPTVBVVEVdKCkgPD0gdGFnW0NPTVBVVEVdKCk7XG4gICAgICAvLyAyLiBzdWJ0YWdbQ09NUFVURV0oKSA+IHRhZ1tDT01QVVRFXSgpO1xuICAgICAgLy9cbiAgICAgIC8vIFRoZSBmaXJzdCBwb3NzaWJpbGl0eSBpcyBjb21wbGV0ZWx5IGZpbmUgd2l0aGluIG91ciBjYWNoaW5nIG1vZGVsLCBidXRcbiAgICAgIC8vIHRoZSBzZWNvbmQgcG9zc2liaWxpdHkgcHJlc2VudHMgYSBwcm9ibGVtLiBJZiB0aGUgcGFyZW50IHRhZyBoYXNcbiAgICAgIC8vIGFscmVhZHkgYmVlbiByZWFkLCB0aGVuIGl0J3MgdmFsdWUgaXMgY2FjaGVkIGFuZCB3aWxsIG5vdCB1cGRhdGUgdG9cbiAgICAgIC8vIHJlZmxlY3QgdGhlIHN1YnRhZydzIGdyZWF0ZXIgdmFsdWUuIE5leHQgdGltZSB0aGUgY2FjaGUgaXMgYnVzdGVkLCB0aGVcbiAgICAgIC8vIHN1YnRhZydzIHZhbHVlIF93aWxsXyBiZSByZWFkLCBhbmQgaXQncyB2YWx1ZSB3aWxsIGJlIF9ncmVhdGVyXyB0aGFuXG4gICAgICAvLyB0aGUgc2F2ZWQgc25hcHNob3Qgb2YgdGhlIHBhcmVudCwgY2F1c2luZyB0aGUgcmVzdWx0aW5nIGNhbGN1bGF0aW9uIHRvXG4gICAgICAvLyBiZSByZXJ1biBlcnJvbmVvdXNseS5cbiAgICAgIC8vXG4gICAgICAvLyBJbiBvcmRlciB0byBwcmV2ZW50IHRoaXMsIHdoZW4gd2UgZmlyc3QgdXBkYXRlIHRvIGEgbmV3IHN1YnRhZyB3ZSBzdG9yZVxuICAgICAgLy8gaXRzIGNvbXB1dGVkIHZhbHVlLCBhbmQgdGhlbiBjaGVjayBhZ2FpbnN0IHRoYXQgY29tcHV0ZWQgdmFsdWUgb25cbiAgICAgIC8vIHN1YnNlcXVlbnQgdXBkYXRlcy4gSWYgaXRzIHZhbHVlIGhhc24ndCBjaGFuZ2VkLCB0aGVuIHdlIHJldHVybiB0aGVcbiAgICAgIC8vIHBhcmVudCdzIHByZXZpb3VzIHZhbHVlLiBPbmNlIHRoZSBzdWJ0YWcgY2hhbmdlcyBmb3IgdGhlIGZpcnN0IHRpbWUsXG4gICAgICAvLyB3ZSBjbGVhciB0aGUgY2FjaGUgYW5kIGV2ZXJ5dGhpbmcgaXMgZmluYWxseSBpbiBzeW5jIHdpdGggdGhlIHBhcmVudC5cbiAgICAgIHRhZy5zdWJ0YWdCdWZmZXJDYWNoZSA9IHN1YnRhZ1tDT01QVVRFXSgpO1xuICAgICAgdGFnLnN1YnRhZyA9IHN1YnRhZztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlydHlUYWcodGFnOiBEaXJ0eWFibGVUYWcgfCBVcGRhdGFibGVUYWcpIHtcbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgISh0YWdbVFlQRV0gPT09IE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlIHx8IHRhZ1tUWVBFXSA9PT0gTW9ub21vcnBoaWNUYWdUeXBlcy5EaXJ0eWFibGUpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBkaXJ0eSBhIHRhZyB0aGF0IHdhcyBub3QgZGlydHlhYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICAvLyBVc3VhbGx5IGJ5IHRoaXMgcG9pbnQsIHdlJ3ZlIGFscmVhZHkgYXNzZXJ0ZWQgd2l0aCBiZXR0ZXIgZXJyb3IgaW5mb3JtYXRpb24sXG4gICAgICAvLyBidXQgdGhpcyBpcyBvdXIgbGFzdCBsaW5lIG9mIGRlZmVuc2UuXG4gICAgICBhc3NlcnRUYWdOb3RDb25zdW1lZCEodGFnKTtcbiAgICB9XG5cbiAgICAodGFnIGFzIE1vbm9tb3JwaGljVGFnSW1wbCkucmV2aXNpb24gPSArKyRSRVZJU0lPTjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGlydHlUYWcgPSBNb25vbW9ycGhpY1RhZ0ltcGwuZGlydHlUYWc7XG5leHBvcnQgY29uc3QgdXBkYXRlVGFnID0gTW9ub21vcnBoaWNUYWdJbXBsLnVwZGF0ZVRhZztcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFnKCk6IERpcnR5YWJsZVRhZyB7XG4gIHJldHVybiBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwZGF0YWJsZVRhZygpOiBVcGRhdGFibGVUYWcge1xuICByZXR1cm4gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSk7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNvbnN0IENPTlNUQU5UX1RBRyA9IG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudCkgYXMgQ29uc3RhbnRUYWc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnZ2VkKHsgdGFnIH06IFRhZ2dlZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VGFnKHRhZzogVGFnKTogdGFnIGlzIENvbnN0YW50VGFnIHtcbiAgcmV0dXJuIHRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBWb2xhdGlsZVRhZyBpbXBsZW1lbnRzIFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gVk9MQVRJTEU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFZPTEFUSUxFX1RBRyA9IG5ldyBWb2xhdGlsZVRhZygpO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50VGFnIGltcGxlbWVudHMgQ3VycmVudFRhZyB7XG4gIFtDT01QVVRFXSgpIHtcbiAgICByZXR1cm4gJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX1RBRyA9IG5ldyBDdXJyZW50VGFnKCk7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUodGFnczogVGFnW10pOiBUYWcge1xuICBsZXQgb3B0aW1pemVkOiBUYWdbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gdGFncy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgdGFnID0gdGFnc1tpXTtcbiAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIGNvbnRpbnVlO1xuICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ29tYmluYXRvclRhZyhvcHRpbWl6ZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tYmluYXRvclRhZyh0YWdzOiBUYWdbXSk6IFRhZyB7XG4gIHN3aXRjaCAodGFncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gQ09OU1RBTlRfVEFHO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB0YWdzWzBdO1xuICAgIGRlZmF1bHQ6XG4gICAgICBsZXQgdGFnID0gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbWJpbmF0b3IpIGFzIENvbWJpbmF0b3JUYWc7XG4gICAgICAodGFnIGFzIGFueSkuc3VidGFncyA9IHRhZ3M7XG4gICAgICByZXR1cm4gdGFnO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLEtBQUEsUUFBQSxjQUFBO0FBQ0EsU0FBQSxNQUFBLFFBQUEsU0FBQTtBQUNBLFNBQUEsb0JBQUEsUUFBQSxTQUFBO0FBTUEsT0FBTyxJQUFNLFFBQVEsR0FBZCxDQUFBO0FBQ1AsT0FBTyxJQUFNLE9BQU8sR0FBYixDQUFBO0FBQ1AsT0FBTyxJQUFNLFFBQVEsR0FBZCxnQkFBQSxDLENBQTZDOztBQUVwRCxJQUFJLFNBQVMsR0FBYixPQUFBO0FBRUEsT0FBTSxTQUFBLElBQUEsR0FBYztBQUNsQixFQUFBLFNBQVM7RUFHWDs7QUFFQSxPQUFPLElBQU0sT0FBTyxHQUFrQixNQUFNLENBQXJDLGFBQXFDLENBQXJDLEMsQ0FnQlA7O0FBRUE7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE9BQU0sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUErQjtBQUNuQyxTQUFBLFNBQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVVBLE9BQU0sU0FBQSxXQUFBLENBQUEsR0FBQSxFQUFBLFFBQUEsRUFBa0Q7QUFDdEQsU0FBTyxRQUFRLElBQUksR0FBRyxDQUF0QixPQUFzQixDQUFILEVBQW5CO0FBQ0Q7QUFpQkQsSUFBTSxJQUFJLEdBQWtCLE1BQU0sQ0FBbEMsVUFBa0MsQ0FBbEM7QUFFQSxPQUFPLElBQUEsWUFBQTs7QUFFUCxJQUFBLEtBQUEsRUFBVztBQUNULEVBQUEsWUFBWSxHQUFHLElBQWYsT0FBZSxFQUFmO0FBQ0Q7O0lBV0Qsa0I7QUFhRSw4QkFBQSxJQUFBLEVBQW1CO0FBWlgsU0FBQSxRQUFBLEdBQUEsT0FBQTtBQUNBLFNBQUEsV0FBQSxHQUFBLE9BQUE7QUFDQSxTQUFBLFNBQUEsR0FBQSxPQUFBO0FBRUEsU0FBQSxVQUFBLEdBQUEsS0FBQTtBQUNBLFNBQUEsT0FBQSxHQUFBLElBQUE7QUFFQSxTQUFBLE1B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QUFBQTtBQUFBO0FBTUEsT0FBTyxJQUFNLFdBQVcsR0FBRyxJQUFwQixVQUFvQixFQUFwQixDLENBRVA7O0FBRUEsT0FBTSxTQUFBLE9BQUEsQ0FBQSxJQUFBLEVBQTZCO0FBQ2pDLE1BQUksU0FBUyxHQUFiLEVBQUE7O0FBRUEsT0FBSyxJQUFJLENBQUMsR0FBTCxDQUFBLEVBQVcsQ0FBQyxHQUFHLElBQUksQ0FBeEIsTUFBQSxFQUFpQyxDQUFDLEdBQWxDLENBQUEsRUFBd0MsQ0FBeEMsRUFBQSxFQUE2QztBQUMzQyxRQUFJLEdBQUcsR0FBRyxJQUFJLENBQWQsQ0FBYyxDQUFkO0FBQ0EsUUFBSSxHQUFHLEtBQVAsWUFBQSxFQUEwQjtBQUMxQixJQUFBLFNBQVMsQ0FBVCxJQUFBLENBQUEsR0FBQTtBQUNEOztBQUVELFNBQU8sbUJBQW1CLENBQTFCLFNBQTBCLENBQTFCO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsbUJBQUEsQ0FBQSxJQUFBLEVBQXlDO0FBQzdDLFVBQVEsSUFBSSxDQUFaLE1BQUE7QUFDRSxTQUFBLENBQUE7QUFDRSxhQUFBLFlBQUE7O0FBQ0YsU0FBQSxDQUFBO0FBQ0UsYUFBTyxJQUFJLENBQVgsQ0FBVyxDQUFYOztBQUNGO0FBQ0UsVUFBSSxHQUFHLEdBQWtCLElBQUEsa0JBQUEsQ0FBc0I7QUFBQTtBQUF0QixPQUF6QjtBQUNDLE1BQUEsR0FBVyxDQUFYLE9BQUEsR0FBQSxJQUFBO0FBQ0QsYUFBQSxHQUFBO0FBUko7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IHN5bWJvbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgYXNzZXJ0VGFnTm90Q29uc3VtZWQgfSBmcm9tICcuL2RlYnVnJztcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgdHlwZSBSZXZpc2lvbiA9IG51bWJlcjtcblxuZXhwb3J0IGNvbnN0IENPTlNUQU5UOiBSZXZpc2lvbiA9IDA7XG5leHBvcnQgY29uc3QgSU5JVElBTDogUmV2aXNpb24gPSAxO1xuZXhwb3J0IGNvbnN0IFZPTEFUSUxFOiBSZXZpc2lvbiA9IDkwMDcxOTkyNTQ3NDA5OTE7IC8vIE1BWF9JTlRcblxubGV0ICRSRVZJU0lPTiA9IElOSVRJQUw7XG5cbmV4cG9ydCBmdW5jdGlvbiBidW1wKCkge1xuICAkUkVWSVNJT04rKztcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY29uc3QgQ09NUFVURTogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnVEFHX0NPTVBVVEUnKTtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUYWc8VD4ge1xuICBbQ09NUFVURV0oKTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWcgZXh0ZW5kcyBFbnRpdHlUYWc8UmV2aXNpb24+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VGFnZ2VkPFQ+IHtcbiAgdGFnOiBFbnRpdHlUYWc8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnZ2VkIHtcbiAgdGFnOiBUYWc7XG59XG5cbi8vLy8vLy8vLy9cblxuLyoqXG4gKiBgdmFsdWVgIHJlY2VpdmVzIGEgdGFnIGFuZCByZXR1cm5zIGFuIG9wYXF1ZSBSZXZpc2lvbiBiYXNlZCBvbiB0aGF0IHRhZy4gVGhpc1xuICogc25hcHNob3QgY2FuIHRoZW4gbGF0ZXIgYmUgcGFzc2VkIHRvIGB2YWxpZGF0ZWAgd2l0aCB0aGUgc2FtZSB0YWcgdG9cbiAqIGRldGVybWluZSBpZiB0aGUgdGFnIGhhcyBjaGFuZ2VkIGF0IGFsbCBzaW5jZSB0aGUgdGltZSB0aGF0IGB2YWx1ZWAgd2FzXG4gKiBjYWxsZWQuXG4gKlxuICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgZ2xvYmFsIHJldmlzaW9uIGNvdW50IGRpcmVjdGx5IGZvclxuICogcGVyZm9ybWFuY2UgcmVhc29ucy4gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBzaG91bGQgbm90IGJlXG4gKiByZWxpZWQgb24gZGlyZWN0bHkgYnkgdXNlcnMgb2YgdGhlc2UgQVBJcy4gSW5zdGVhZCwgUmV2aXNpb25zIHNob3VsZCBiZVxuICogdHJlYXRlZCBhcyBpZiB0aGV5IGFyZSBvcGFxdWUvdW5rbm93biwgYW5kIHNob3VsZCBvbmx5IGJlIGludGVyYWN0ZWQgd2l0aCB2aWFcbiAqIHRoZSBgdmFsdWVgL2B2YWxpZGF0ZWAgQVBJLlxuICpcbiAqIEBwYXJhbSB0YWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRm9yVGFnKF90YWc6IFRhZyk6IFJldmlzaW9uIHtcbiAgcmV0dXJuICRSRVZJU0lPTjtcbn1cblxuLyoqXG4gKiBgdmFsaWRhdGVgIHJlY2VpdmVzIGEgdGFnIGFuZCBhIHNuYXBzaG90IGZyb20gYSBwcmV2aW91cyBjYWxsIHRvIGB2YWx1ZWAgd2l0aFxuICogdGhlIHNhbWUgdGFnLCBhbmQgZGV0ZXJtaW5lcyBpZiB0aGUgdGFnIGlzIHN0aWxsIHZhbGlkIGNvbXBhcmVkIHRvIHRoZVxuICogc25hcHNob3QuIElmIHRoZSB0YWcncyBzdGF0ZSBoYXMgY2hhbmdlZCBhdCBhbGwgc2luY2UgdGhlbiwgYHZhbGlkYXRlYCB3aWxsXG4gKiByZXR1cm4gZmFsc2UsIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiB0cnVlLiBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFcbiAqIGNhbGN1bGF0aW9uIHJlbGF0ZWQgdG8gdGhlIHRhZ3Mgc2hvdWxkIGJlIHJlcnVuLlxuICpcbiAqIEBwYXJhbSB0YWdcbiAqIEBwYXJhbSBzbmFwc2hvdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYWcodGFnOiBUYWcsIHNuYXBzaG90OiBSZXZpc2lvbikge1xuICByZXR1cm4gc25hcHNob3QgPj0gdGFnW0NPTVBVVEVdKCk7XG59XG5cbi8vLy8vLy8vLy9cblxuLyoqXG4gKiBUaGlzIGVudW0gcmVwcmVzZW50cyBhbGwgb2YgdGhlIHBvc3NpYmxlIHRhZyB0eXBlcyBmb3IgdGhlIG1vbm9tb3JwaGljIHRhZyBjbGFzcy5cbiAqIE90aGVyIGN1c3RvbSB0YWcgY2xhc3NlcyBjYW4gZXhpc3QsIHN1Y2ggYXMgQ3VycmVudFRhZyBhbmQgVm9sYXRpbGVUYWcsIGJ1dCBmb3JcbiAqIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFueSB0eXBlIG9mIHRhZyB0aGF0IGlzIG1lYW50IHRvIGJlIHVzZWQgZnJlcXVlbnRseSBzaG91bGRcbiAqIGJlIGFkZGVkIHRvIHRoZSBtb25vbW9ycGhpYyB0YWcuXG4gKi9cbmNvbnN0IGVudW0gTW9ub21vcnBoaWNUYWdUeXBlcyB7XG4gIERpcnR5YWJsZSxcbiAgVXBkYXRhYmxlLFxuICBDb21iaW5hdG9yLFxuICBDb25zdGFudCxcbn1cblxuY29uc3QgVFlQRTogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnVEFHX1RZUEUnKTtcblxuZXhwb3J0IGxldCBBTExPV19DWUNMRVM6IFdlYWtNYXA8VGFnLCBib29sZWFuPiB8IHVuZGVmaW5lZDtcblxuaWYgKERFQlVHKSB7XG4gIEFMTE9XX0NZQ0xFUyA9IG5ldyBXZWFrTWFwKCk7XG59XG5cbmludGVyZmFjZSBNb25vbW9ycGhpY1RhZ0Jhc2U8VCBleHRlbmRzIE1vbm9tb3JwaGljVGFnVHlwZXM+IGV4dGVuZHMgVGFnIHtcbiAgW1RZUEVdOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcnR5YWJsZVRhZyBleHRlbmRzIE1vbm9tb3JwaGljVGFnQmFzZTxNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZT4ge31cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRhYmxlVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuVXBkYXRhYmxlPiB7fVxuZXhwb3J0IGludGVyZmFjZSBDb21iaW5hdG9yVGFnIGV4dGVuZHMgTW9ub21vcnBoaWNUYWdCYXNlPE1vbm9tb3JwaGljVGFnVHlwZXMuQ29tYmluYXRvcj4ge31cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RhbnRUYWcgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ0Jhc2U8TW9ub21vcnBoaWNUYWdUeXBlcy5Db25zdGFudD4ge31cblxuY2xhc3MgTW9ub21vcnBoaWNUYWdJbXBsPFQgZXh0ZW5kcyBNb25vbW9ycGhpY1RhZ1R5cGVzID0gTW9ub21vcnBoaWNUYWdUeXBlcz4ge1xuICBwcml2YXRlIHJldmlzaW9uID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBsYXN0Q2hlY2tlZCA9IElOSVRJQUw7XG4gIHByaXZhdGUgbGFzdFZhbHVlID0gSU5JVElBTDtcblxuICBwcml2YXRlIGlzVXBkYXRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdWJ0YWdzOiBUYWdbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc3VidGFnOiBUYWcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdWJ0YWdCdWZmZXJDYWNoZTogUmV2aXNpb24gfCBudWxsID0gbnVsbDtcblxuICBbVFlQRV06IFQ7XG5cbiAgY29uc3RydWN0b3IodHlwZTogVCkge1xuICAgIHRoaXNbVFlQRV0gPSB0eXBlO1xuICB9XG5cbiAgW0NPTVBVVEVdKCk6IFJldmlzaW9uIHtcbiAgICBsZXQgeyBsYXN0Q2hlY2tlZCB9ID0gdGhpcztcblxuICAgIGlmICh0aGlzLmlzVXBkYXRpbmcgPT09IHRydWUpIHtcbiAgICAgIGlmIChERUJVRyAmJiAhQUxMT1dfQ1lDTEVTIS5oYXModGhpcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDeWNsZXMgaW4gdGFncyBhcmUgbm90IGFsbG93ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICsrJFJFVklTSU9OO1xuICAgIH0gZWxzZSBpZiAobGFzdENoZWNrZWQgIT09ICRSRVZJU0lPTikge1xuICAgICAgdGhpcy5pc1VwZGF0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMubGFzdENoZWNrZWQgPSAkUkVWSVNJT047XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCB7IHN1YnRhZ3MsIHN1YnRhZywgc3VidGFnQnVmZmVyQ2FjaGUsIGxhc3RWYWx1ZSwgcmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHN1YnRhZyAhPT0gbnVsbCkge1xuICAgICAgICAgIGxldCBzdWJ0YWdWYWx1ZSA9IHN1YnRhZ1tDT01QVVRFXSgpO1xuXG4gICAgICAgICAgaWYgKHN1YnRhZ1ZhbHVlID09PSBzdWJ0YWdCdWZmZXJDYWNoZSkge1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heChyZXZpc2lvbiwgbGFzdFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHRlbXBvcmFyeSBidWZmZXIgY2FjaGVcbiAgICAgICAgICAgIHRoaXMuc3VidGFnQnVmZmVyQ2FjaGUgPSBudWxsO1xuICAgICAgICAgICAgcmV2aXNpb24gPSBNYXRoLm1heChyZXZpc2lvbiwgc3VidGFnVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJ0YWdzICE9PSBudWxsKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJ0YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzdWJ0YWdzW2ldW0NPTVBVVEVdKCk7XG4gICAgICAgICAgICByZXZpc2lvbiA9IE1hdGgubWF4KHZhbHVlLCByZXZpc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSByZXZpc2lvbjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyB1cGRhdGVUYWcoX3RhZzogVXBkYXRhYmxlVGFnLCBfc3VidGFnOiBUYWcpIHtcbiAgICBpZiAoREVCVUcgJiYgX3RhZ1tUWVBFXSAhPT0gTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGVkIHRvIHVwZGF0ZSBhIHRhZyB0aGF0IHdhcyBub3QgdXBkYXRhYmxlJyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVFMgMy43IHNob3VsZCBhbGxvdyB1cyB0byBkbyB0aGlzIHZpYSBhc3NlcnRpb25cbiAgICBsZXQgdGFnID0gX3RhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGw7XG4gICAgbGV0IHN1YnRhZyA9IF9zdWJ0YWcgYXMgTW9ub21vcnBoaWNUYWdJbXBsO1xuXG4gICAgaWYgKHN1YnRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgICB0YWcuc3VidGFnID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgcG9zc2liaWxpdGllcyB3aGVuIHVwZGF0aW5nIGEgc3VidGFnOlxuICAgICAgLy9cbiAgICAgIC8vIDEuIHN1YnRhZ1tDT01QVVRFXSgpIDw9IHRhZ1tDT01QVVRFXSgpO1xuICAgICAgLy8gMi4gc3VidGFnW0NPTVBVVEVdKCkgPiB0YWdbQ09NUFVURV0oKTtcbiAgICAgIC8vXG4gICAgICAvLyBUaGUgZmlyc3QgcG9zc2liaWxpdHkgaXMgY29tcGxldGVseSBmaW5lIHdpdGhpbiBvdXIgY2FjaGluZyBtb2RlbCwgYnV0XG4gICAgICAvLyB0aGUgc2Vjb25kIHBvc3NpYmlsaXR5IHByZXNlbnRzIGEgcHJvYmxlbS4gSWYgdGhlIHBhcmVudCB0YWcgaGFzXG4gICAgICAvLyBhbHJlYWR5IGJlZW4gcmVhZCwgdGhlbiBpdCdzIHZhbHVlIGlzIGNhY2hlZCBhbmQgd2lsbCBub3QgdXBkYXRlIHRvXG4gICAgICAvLyByZWZsZWN0IHRoZSBzdWJ0YWcncyBncmVhdGVyIHZhbHVlLiBOZXh0IHRpbWUgdGhlIGNhY2hlIGlzIGJ1c3RlZCwgdGhlXG4gICAgICAvLyBzdWJ0YWcncyB2YWx1ZSBfd2lsbF8gYmUgcmVhZCwgYW5kIGl0J3MgdmFsdWUgd2lsbCBiZSBfZ3JlYXRlcl8gdGhhblxuICAgICAgLy8gdGhlIHNhdmVkIHNuYXBzaG90IG9mIHRoZSBwYXJlbnQsIGNhdXNpbmcgdGhlIHJlc3VsdGluZyBjYWxjdWxhdGlvbiB0b1xuICAgICAgLy8gYmUgcmVydW4gZXJyb25lb3VzbHkuXG4gICAgICAvL1xuICAgICAgLy8gSW4gb3JkZXIgdG8gcHJldmVudCB0aGlzLCB3aGVuIHdlIGZpcnN0IHVwZGF0ZSB0byBhIG5ldyBzdWJ0YWcgd2Ugc3RvcmVcbiAgICAgIC8vIGl0cyBjb21wdXRlZCB2YWx1ZSwgYW5kIHRoZW4gY2hlY2sgYWdhaW5zdCB0aGF0IGNvbXB1dGVkIHZhbHVlIG9uXG4gICAgICAvLyBzdWJzZXF1ZW50IHVwZGF0ZXMuIElmIGl0cyB2YWx1ZSBoYXNuJ3QgY2hhbmdlZCwgdGhlbiB3ZSByZXR1cm4gdGhlXG4gICAgICAvLyBwYXJlbnQncyBwcmV2aW91cyB2YWx1ZS4gT25jZSB0aGUgc3VidGFnIGNoYW5nZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxuICAgICAgLy8gd2UgY2xlYXIgdGhlIGNhY2hlIGFuZCBldmVyeXRoaW5nIGlzIGZpbmFsbHkgaW4gc3luYyB3aXRoIHRoZSBwYXJlbnQuXG4gICAgICB0YWcuc3VidGFnQnVmZmVyQ2FjaGUgPSBzdWJ0YWdbQ09NUFVURV0oKTtcbiAgICAgIHRhZy5zdWJ0YWcgPSBzdWJ0YWc7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpcnR5VGFnKHRhZzogRGlydHlhYmxlVGFnIHwgVXBkYXRhYmxlVGFnKSB7XG4gICAgaWYgKFxuICAgICAgREVCVUcgJiZcbiAgICAgICEodGFnW1RZUEVdID09PSBNb25vbW9ycGhpY1RhZ1R5cGVzLlVwZGF0YWJsZSB8fCB0YWdbVFlQRV0gPT09IE1vbm9tb3JwaGljVGFnVHlwZXMuRGlydHlhYmxlKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0ZWQgdG8gZGlydHkgYSB0YWcgdGhhdCB3YXMgbm90IGRpcnR5YWJsZScpO1xuICAgIH1cblxuICAgIGlmIChERUJVRykge1xuICAgICAgLy8gVXN1YWxseSBieSB0aGlzIHBvaW50LCB3ZSd2ZSBhbHJlYWR5IGFzc2VydGVkIHdpdGggYmV0dGVyIGVycm9yIGluZm9ybWF0aW9uLFxuICAgICAgLy8gYnV0IHRoaXMgaXMgb3VyIGxhc3QgbGluZSBvZiBkZWZlbnNlLlxuICAgICAgYXNzZXJ0VGFnTm90Q29uc3VtZWQhKHRhZyk7XG4gICAgfVxuXG4gICAgKHRhZyBhcyBNb25vbW9ycGhpY1RhZ0ltcGwpLnJldmlzaW9uID0gKyskUkVWSVNJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRpcnR5VGFnID0gTW9ub21vcnBoaWNUYWdJbXBsLmRpcnR5VGFnO1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVRhZyA9IE1vbm9tb3JwaGljVGFnSW1wbC51cGRhdGVUYWc7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhZygpOiBEaXJ0eWFibGVUYWcge1xuICByZXR1cm4gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkRpcnR5YWJsZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVcGRhdGFibGVUYWcoKTogVXBkYXRhYmxlVGFnIHtcbiAgcmV0dXJuIG5ldyBNb25vbW9ycGhpY1RhZ0ltcGwoTW9ub21vcnBoaWNUYWdUeXBlcy5VcGRhdGFibGUpO1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVF9UQUc6IENvbnN0YW50VGFnID0gbmV3IE1vbm9tb3JwaGljVGFnSW1wbChNb25vbW9ycGhpY1RhZ1R5cGVzLkNvbnN0YW50KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RUYWdnZWQoeyB0YWcgfTogVGFnZ2VkKTogYm9vbGVhbiB7XG4gIHJldHVybiB0YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RUYWcodGFnOiBUYWcpOiB0YWcgaXMgQ29uc3RhbnRUYWcge1xuICByZXR1cm4gdGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNsYXNzIFZvbGF0aWxlVGFnIGltcGxlbWVudHMgVGFnIHtcbiAgW0NPTVBVVEVdKCkge1xuICAgIHJldHVybiBWT0xBVElMRTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgVk9MQVRJTEVfVEFHID0gbmV3IFZvbGF0aWxlVGFnKCk7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNsYXNzIEN1cnJlbnRUYWcgaW1wbGVtZW50cyBDdXJyZW50VGFnIHtcbiAgW0NPTVBVVEVdKCkge1xuICAgIHJldHVybiAkUkVWSVNJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IENVUlJFTlRfVEFHID0gbmV3IEN1cnJlbnRUYWcoKTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZSh0YWdzOiBUYWdbXSk6IFRhZyB7XG4gIGxldCBvcHRpbWl6ZWQ6IFRhZ1tdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSB0YWdzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGxldCB0YWcgPSB0YWdzW2ldO1xuICAgIGlmICh0YWcgPT09IENPTlNUQU5UX1RBRykgY29udGludWU7XG4gICAgb3B0aW1pemVkLnB1c2godGFnKTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVDb21iaW5hdG9yVGFnKG9wdGltaXplZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21iaW5hdG9yVGFnKHRhZ3M6IFRhZ1tdKTogVGFnIHtcbiAgc3dpdGNoICh0YWdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBDT05TVEFOVF9UQUc7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIHRhZ3NbMF07XG4gICAgZGVmYXVsdDpcbiAgICAgIGxldCB0YWc6IENvbWJpbmF0b3JUYWcgPSBuZXcgTW9ub21vcnBoaWNUYWdJbXBsKE1vbm9tb3JwaGljVGFnVHlwZXMuQ29tYmluYXRvcik7XG4gICAgICAodGFnIGFzIGFueSkuc3VidGFncyA9IHRhZ3M7XG4gICAgICByZXR1cm4gdGFnO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -1,2 +0,1 @@

import { UnionToIntersection } from './utils';
export declare type Revision = number;

@@ -70,11 +69,3 @@ export declare const CONSTANT: Revision;

}
interface MonomorphicTagMapping {
[MonomorphicTagTypes.Dirtyable]: DirtyableTag;
[MonomorphicTagTypes.Updatable]: UpdatableTag;
[MonomorphicTagTypes.Combinator]: CombinatorTag;
[MonomorphicTagTypes.Constant]: ConstantTag;
}
declare type MonomorphicTag = UnionToIntersection<MonomorphicTagMapping[MonomorphicTagTypes]>;
declare type MonomorphicTagType = UnionToIntersection<MonomorphicTagTypes>;
declare class MonomorphicTagImpl implements MonomorphicTag {
declare class MonomorphicTagImpl<T extends MonomorphicTagTypes = MonomorphicTagTypes> {
private revision;

@@ -87,4 +78,4 @@ private lastChecked;

private subtagBufferCache;
[TYPE]: MonomorphicTagType;
constructor(type: MonomorphicTagTypes);
[TYPE]: T;
constructor(type: T);
[COMPUTE](): Revision;

@@ -91,0 +82,0 @@ static updateTag(_tag: UpdatableTag, _subtag: Tag): void;

{
"name": "@glimmer/validator",
"version": "0.55.1",
"version": "0.55.2",
"description": "Objects used to track values and their dirtiness in Glimmer",

@@ -5,0 +5,0 @@ "license": "MIT",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc