Socket
Socket
Sign inDemoInstall

@glimmer/runtime

Package Overview
Dependencies
Maintainers
12
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/runtime - npm Package Compare versions

Comparing version 0.83.1 to 0.84.0

4

dist/commonjs/es2017/lib/modifiers/on.js

@@ -126,3 +126,3 @@ "use strict";

if (typeof value !== 'function') {
throw new Error(`You must pass a function as the second argument to the \`on\` modifier, you passed ${value === null ? 'null' : typeof value}. While rendering:\n\n${userProvidedCallbackReference.debugLabel}`);
throw new Error(`You must pass a function as the second argument to the \`on\` modifier; you passed ${value === null ? 'null' : typeof value}. While rendering:\n\n${userProvidedCallbackReference.debugLabel}`);
}

@@ -389,2 +389,2 @@ }

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUEsTUFBTSxrQkFBa0IsR0FBRyxnQ0FBM0IsZUFBMkIsQ0FBM0I7QUFFQTs7Ozs7Ozs7Ozs7OztBQVlBLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFLO0FBQ25DLE1BQUk7QUFDRixVQUFNLEdBQUcsR0FBRyxRQUFRLENBQVIsYUFBQSxDQUFaLEtBQVksQ0FBWjtBQUNBLFFBQUksT0FBTyxHQUFYLENBQUE7QUFDQSxJQUFBLEdBQUcsQ0FBSCxnQkFBQSxDQUFBLE9BQUEsRUFBOEIsTUFBTSxPQUFwQyxFQUFBLEVBQStDO0FBQUUsTUFBQSxJQUFJLEVBQUU7QUFBUixLQUEvQztBQUVBLFFBQUEsS0FBQTs7QUFDQSxRQUFJLE9BQUEsS0FBQSxLQUFKLFVBQUEsRUFBaUM7QUFDL0IsTUFBQSxLQUFLLEdBQUcsSUFBQSxLQUFBLENBQVIsT0FBUSxDQUFSO0FBREYsS0FBQSxNQUVPO0FBQ0wsTUFBQSxLQUFLLEdBQUcsUUFBUSxDQUFSLFdBQUEsQ0FBUixPQUFRLENBQVI7QUFDQSxNQUFBLEtBQUssQ0FBTCxTQUFBLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0Q7O0FBRUQsSUFBQSxHQUFHLENBQUgsYUFBQSxDQUFBLEtBQUE7QUFDQSxJQUFBLEdBQUcsQ0FBSCxhQUFBLENBQUEsS0FBQTtBQUVBLFdBQU8sT0FBTyxLQUFkLENBQUE7QUFoQkYsR0FBQSxDQWlCRSxPQUFBLEtBQUEsRUFBYztBQUNkLFdBQUEsS0FBQTtBQUNEO0FBcEJILENBQStCLEdBQS9COztBQXVCTSxNQUFBLGVBQUEsQ0FBc0I7QUFhMUIsRUFBQSxXQUFBLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBcUQ7QUFaOUMsU0FBQSxHQUFB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Q0FBdEUsT0FBZ0IsQ0FBaEI7QUFFQSxJQUFBLEtBQUssQ0FBTCxZQUFBLEdBQUEsS0FBQTtBQUNEOztBQUVELEVBQUEsY0FBYyxDQUFBLEtBQUEsRUFBOEI7QUFDMUMsV0FBQSxLQUFBO0FBQ0Q7O0FBckVvQjs7ZUF3RVIseUNBQTJCLElBQUQsaUJBQUMsRUFBM0IsRUFBZixFQUFlLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckRlc3RydWN0b3IgfSBmcm9tICdAZ2xpbW1lci9kZXN0cm95YWJsZSc7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBDYXB0dXJlZEFyZ3VtZW50cywgSW50ZXJuYWxNb2RpZmllck1hbmFnZXIsIE93bmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBzZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlciB9IGZyb20gJ0BnbGltbWVyL21hbmFnZXInO1xuaW1wb3J0IHsgdmFsdWVGb3JSZWYgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgcmVpZnlOYW1lZCB9IGZyb20gJ0BnbGltbWVyL3J1bnRpbWUnO1xuaW1wb3J0IHsgY3JlYXRlVXBkYXRhYmxlVGFnLCBVcGRhdGFibGVUYWcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgU2ltcGxlRWxlbWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBidWlsZFVudG91Y2hhYmxlVGhpcyB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5jb25zdCB1bnRvdWNoYWJsZUNvbnRleHQgPSBidWlsZFVudG91Y2hhYmxlVGhpcygnYG9uYCBtb2RpZmllcicpO1xuXG4vKlxuICBJbnRlcm5ldCBFeHBsb3JlciAxMSBkb2VzIG5vdCBzdXBwb3J0IGBvbmNlYCBhbmQgYWxzbyBkb2VzIG5vdCBzdXBwb3J0XG4gIHBhc3NpbmcgYGV2ZW50T3B0aW9uc2AuIEluIHNvbWUgc2l0dWF0aW9ucyBpdCB0aGVuIHRocm93cyBhIHdlaXJkIHNjcmlwdFxuICBlcnJvciwgbGlrZTpcblxuICBgYGBcbiAgQ291bGQgbm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gZHVlIHRvIGVycm9yIDgwMDIwMTAxXG4gIGBgYFxuXG4gIFRoaXMgZmxhZyBkZXRlcm1pbmVzLCB3aGV0aGVyIGB7IG9uY2U6IHRydWUgfWAgYW5kIHRodXMgYWxzbyBldmVudCBvcHRpb25zIGluXG4gIGdlbmVyYWwgYXJlIHN1cHBvcnRlZC5cbiovXG5jb25zdCBTVVBQT1JUU19FVkVOVF9PUFRJT05TID0gKCgpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBsZXQgY291bnRlciA9IDA7XG4gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gY291bnRlcisrLCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgICBsZXQgZXZlbnQ7XG4gICAgaWYgKHR5cGVvZiBFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoJ2NsaWNrJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZGl2LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcblxuICAgIHJldHVybiBjb3VudGVyID09PSAxO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSkoKTtcblxuZXhwb3J0IGNsYXNzIE9uTW9kaWZpZXJTdGF0ZSB7XG4gIHB1YmxpYyB0YWcgPSBjcmVhdGVVcGRhdGFibGVUYWcoKTtcbiAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnQ7XG4gIHB1YmxpYyBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50cztcbiAgcHVibGljIGV2ZW50TmFtZSE6IHN0cmluZztcbiAgcHVibGljIGNhbGxiYWNrITogRXZlbnRMaXN0ZW5lcjtcbiAgcHJpdmF0ZSB1c2VyUHJvdmlkZWRDYWxsYmFjayE6IEV2ZW50TGlzdGVuZXI7XG4gIHB1YmxpYyBvbmNlPzogYm9vbGVhbjtcbiAgcHVibGljIHBhc3NpdmU/OiBib29sZWFuO1xuICBwdWJsaWMgY2FwdHVyZT86IGJvb2xlYW47XG4gIHB1YmxpYyBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG4gIHB1YmxpYyBzaG91bGRVcGRhdGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnQsIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgdXBkYXRlRnJvbUFyZ3MoKTogdm9pZCB7XG4gICAgbGV0IHsgYXJncyB9ID0gdGhpcztcblxuICAgIGxldCB7IG9uY2UsIHBhc3NpdmUsIGNhcHR1cmUgfTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSByZWlmeU5hbWVkKGFyZ3MubmFtZWQpO1xuICAgIGlmIChvbmNlICE9PSB0aGlzLm9uY2UpIHtcbiAgICAgIHRoaXMub25jZSA9IG9uY2U7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHBhc3NpdmUgIT09IHRoaXMucGFzc2l2ZSkge1xuICAgICAgdGhpcy5wYXNzaXZlID0gcGFzc2l2ZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2FwdHVyZSAhPT0gdGhpcy5jYXB0dXJlKSB7XG4gICAgICB0aGlzLmNhcHR1cmUgPSBjYXB0dXJlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGxldCBvcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucztcbiAgICBpZiAob25jZSB8fCBwYXNzaXZlIHx8IGNhcHR1cmUpIHtcbiAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB7IG9uY2UsIHBhc3NpdmUsIGNhcHR1cmUgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIERFQlVHICYmXG4gICAgICAoYXJncy5wb3NpdGlvbmFsWzBdID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlRm9yUmVmKGFyZ3MucG9zaXRpb25hbFswXSkgIT09ICdzdHJpbmcnKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnWW91IG11c3QgcGFzcyBhIHZhbGlkIERPTSBldmVudCBuYW1lIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgYG9uYCBtb2RpZmllcidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZSA9IHZhbHVlRm9yUmVmKGFyZ3MucG9zaXRpb25hbFswXSkgYXMgc3RyaW5nO1xuICAgIGlmIChldmVudE5hbWUgIT09IHRoaXMuZXZlbnROYW1lKSB7XG4gICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgdXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UgPSBhcmdzLnBvc2l0aW9uYWxbMV07XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGlmIChhcmdzLnBvc2l0aW9uYWxbMV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBcXGBvblxcYCBtb2RpZmllci5gKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHZhbHVlID0gdmFsdWVGb3JSZWYodXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyLCB5b3UgcGFzc2VkICR7XG4gICAgICAgICAgICB2YWx1ZSA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiB2YWx1ZVxuICAgICAgICAgIH0uIFdoaWxlIHJlbmRlcmluZzpcXG5cXG4ke3VzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlLmRlYnVnTGFiZWx9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB1c2VyUHJvdmlkZWRDYWxsYmFjayA9IHZhbHVlRm9yUmVmKHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlKSBhcyBFdmVudExpc3RlbmVyO1xuICAgIGlmICh1c2VyUHJvdmlkZWRDYWxsYmFjayAhPT0gdGhpcy51c2VyUHJvdmlkZWRDYWxsYmFjaykge1xuICAgICAgdGhpcy51c2VyUHJvdmlkZWRDYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChERUJVRyAmJiBhcmdzLnBvc2l0aW9uYWwubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgY2FuIG9ubHkgcGFzcyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMgKGV2ZW50IG5hbWUgYW5kIGNhbGxiYWNrKSB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXIsIGJ1dCB5b3UgcHJvdmlkZWQgJHthcmdzLnBvc2l0aW9uYWwubGVuZ3RofS4gQ29uc2lkZXIgdXNpbmcgdGhlIFxcYGZuXFxgIGhlbHBlciB0byBwcm92aWRlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBcXGBvblxcYCBjYWxsYmFjay5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBuZWVkc0N1c3RvbUNhbGxiYWNrID1cbiAgICAgIChTVVBQT1JUU19FVkVOVF9PUFRJT05TID09PSBmYWxzZSAmJiBvbmNlKSAvKiBuZWVkcyBtYW51YWwgb25jZSBpbXBsZW1lbnRhdGlvbiAqLyB8fFxuICAgICAgKERFQlVHICYmIHBhc3NpdmUpOyAvKiBuZWVkcyBwYXNzaXZlIGVuZm9yY2VtZW50ICovXG5cbiAgICBpZiAodGhpcy5zaG91bGRVcGRhdGUpIHtcbiAgICAgIGlmIChuZWVkc0N1c3RvbUNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9ICh0aGlzLmNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IEVsZW1lbnQsIGV2ZW50KSB7XG4gICAgICAgICAgaWYgKERFQlVHICYmIHBhc3NpdmUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFlvdSBtYXJrZWQgdGhpcyBsaXN0ZW5lciBhcyAncGFzc2l2ZScsIG1lYW5pbmcgdGhhdCB5b3UgbXVzdCBub3QgY2FsbCAnZXZlbnQucHJldmVudERlZmF1bHQoKSc6IFxcblxcbiR7dXNlclByb3ZpZGVkQ2FsbGJhY2t9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIVNVUFBPUlRTX0VWRU5UX09QVElPTlMgJiYgb25jZSkge1xuICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHVzZXJQcm92aWRlZENhbGxiYWNrLmNhbGwodW50b3VjaGFibGVDb250ZXh0LCBldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChERUJVRykge1xuICAgICAgICAvLyBwcmV2ZW50IHRoZSBjYWxsYmFjayBmcm9tIGJlaW5nIGJvdW5kIHRvIHRoZSBlbGVtZW50XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjay5iaW5kKHVudG91Y2hhYmxlQ29udGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmxldCBhZGRzID0gMDtcbmxldCByZW1vdmVzID0gMDtcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgZWxlbWVudDogRWxlbWVudCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiBFdmVudExpc3RlbmVyLFxuICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbik6IHZvaWQge1xuICByZW1vdmVzKys7XG5cbiAgaWYgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMpIHtcbiAgICAvLyB3aGVuIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCwgdXNlIHRoZW0gYWNyb3NzIHRoZSBib2FyZFxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5jYXB0dXJlKSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZTpcbiAgICAvL1xuICAgIC8vIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH1cbiAgICAvL1xuICAgIC8vIGBvbmNlYCBpcyBoYW5kbGVkIHZpYSBhIGN1c3RvbSBjYWxsYmFjayB0aGF0IHJlbW92ZXMgYWZ0ZXIgZmlyc3RcbiAgICAvLyBpbnZvY2F0aW9uIHNvIHdlIG9ubHkgY2FyZSBhYm91dCBjYXB0dXJlIGhlcmUgYXMgYSBib29sZWFuXG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgIC8vXG4gICAgLy8gKiB3aGVyZSB0aGVyZSBpcyBubyBvcHRpb25zXG4gICAgLy8gKiBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogZmFsc2UgfVxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKFxuICBlbGVtZW50OiBFbGVtZW50LFxuICBldmVudE5hbWU6IHN0cmluZyxcbiAgY2FsbGJhY2s6IEV2ZW50TGlzdGVuZXIsXG4gIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9uc1xuKTogdm9pZCB7XG4gIGFkZHMrKztcblxuICBpZiAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUykge1xuICAgIC8vIHdoZW4gb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCB1c2UgdGhlbSBhY3Jvc3MgdGhlIGJvYXJkXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmNhcHR1cmUpIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlOlxuICAgIC8vXG4gICAgLy8gYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IHRydWUgfVxuICAgIC8vXG4gICAgLy8gYG9uY2VgIGlzIGhhbmRsZWQgdmlhIGEgY3VzdG9tIGNhbGxiYWNrIHRoYXQgcmVtb3ZlcyBhZnRlciBmaXJzdFxuICAgIC8vIGludm9jYXRpb24gc28gd2Ugb25seSBjYXJlIGFib3V0IGNhcHR1cmUgaGVyZSBhcyBhIGJvb2xlYW5cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgLy9cbiAgICAvLyAqIHdoZXJlIHRoZXJlIGlzIG5vIG9wdGlvbnNcbiAgICAvLyAqIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiBmYWxzZSB9XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuICB9XG59XG5cbi8qKlxuICBUaGUgYHt7b259fWAgbW9kaWZpZXIgbGV0cyB5b3UgZWFzaWx5IGFkZCBldmVudCBsaXN0ZW5lcnMgKGl0IHVzZXNcbiAgW0V2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyKVxuICBpbnRlcm5hbGx5KS5cblxuICBGb3IgZXhhbXBsZSwgaWYgeW91J2QgbGlrZSB0byBydW4gYSBmdW5jdGlvbiBvbiB5b3VyIGNvbXBvbmVudCB3aGVuIGEgYDxidXR0b24+YFxuICBpbiB0aGUgY29tcG9uZW50cyB0ZW1wbGF0ZSBpcyBjbGlja2VkIHlvdSBtaWdodCBkbyBzb21ldGhpbmcgbGlrZTpcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuaGJzXG4gIDxidXR0b24ge3tvbiAnY2xpY2snIHRoaXMuc2F2ZUxpa2V9fT5MaWtlIHRoaXMgcG9zdCE8L2J1dHRvbj5cbiAgYGBgXG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0LmpzXG4gIGltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbiAgaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQGVtYmVyL29iamVjdCc7XG5cbiAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlrZVBvc3RDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHNhdmVMaWtlID0gKCkgPT4ge1xuICAgICAgLy8gc29tZW9uZSBsaWtlcyB5b3VyIHBvc3QhXG4gICAgICAvLyBiZXR0ZXIgc2VuZCBhIHJlcXVlc3Qgb2ZmIHRvIHlvdXIgc2VydmVyLi4uXG4gICAgfVxuICB9XG4gIGBgYFxuXG4gICMjIyBBcmd1bWVudHNcblxuICBge3tvbn19YCBhY2NlcHRzIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50cywgYW5kIGEgZmV3IG5hbWVkIGFyZ3VtZW50cy5cblxuICBUaGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlOlxuXG4gIC0gYGV2ZW50YCAtLSB0aGUgbmFtZSB0byB1c2Ugd2hlbiBjYWxsaW5nIGBhZGRFdmVudExpc3RlbmVyYFxuICAtIGBjYWxsYmFja2AgLS0gdGhlIGZ1bmN0aW9uIHRvIGJlIHBhc3NlZCB0byBgYWRkRXZlbnRMaXN0ZW5lcmBcblxuICBUaGUgbmFtZWQgYXJndW1lbnRzIGFyZTpcblxuICAtIGNhcHR1cmUgLS0gYSBgdHJ1ZWAgdmFsdWUgaW5kaWNhdGVzIHRoYXQgZXZlbnRzIG9mIHRoaXMgdHlwZSB3aWxsIGJlIGRpc3BhdGNoZWRcbiAgICB0byB0aGUgcmVnaXN0ZXJlZCBsaXN0ZW5lciBiZWZvcmUgYmVpbmcgZGlzcGF0Y2hlZCB0byBhbnkgRXZlbnRUYXJnZXQgYmVuZWF0aCBpdFxuICAgIGluIHRoZSBET00gdHJlZS5cbiAgLSBvbmNlIC0tIGluZGljYXRlcyB0aGF0IHRoZSBsaXN0ZW5lciBzaG91bGQgYmUgaW52b2tlZCBhdCBtb3N0IG9uY2UgYWZ0ZXIgYmVpbmdcbiAgICBhZGRlZC4gSWYgdHJ1ZSwgdGhlIGxpc3RlbmVyIHdvdWxkIGJlIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCB3aGVuIGludm9rZWQuXG4gIC0gcGFzc2l2ZSAtLSBpZiBgdHJ1ZWAsIGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgbGlzdGVuZXIgd2lsbCBuZXZlclxuICAgIGNhbGwgcHJldmVudERlZmF1bHQoKS4gSWYgYSBwYXNzaXZlIGxpc3RlbmVyIGRvZXMgY2FsbCBwcmV2ZW50RGVmYXVsdCgpLCB0aGUgdXNlclxuICAgIGFnZW50IHdpbGwgZG8gbm90aGluZyBvdGhlciB0aGFuIGdlbmVyYXRlIGEgY29uc29sZSB3YXJuaW5nLiBTZWVcbiAgICBbSW1wcm92aW5nIHNjcm9sbGluZyBwZXJmb3JtYW5jZSB3aXRoIHBhc3NpdmUgbGlzdGVuZXJzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lciNJbXByb3Zpbmdfc2Nyb2xsaW5nX3BlcmZvcm1hbmNlX3dpdGhfcGFzc2l2ZV9saXN0ZW5lcnMpXG4gICAgdG8gbGVhcm4gbW9yZS5cblxuICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gcGFzc2VkIHRvIGB7e29ufX1gIHdpbGwgcmVjZWl2ZSBhbnkgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZFxuICB0byB0aGUgZXZlbnQgaGFuZGxlci4gTW9zdCBjb21tb25seSB0aGlzIHdvdWxkIGJlIHRoZSBgZXZlbnRgIGl0c2VsZi5cblxuICBJZiB5b3Ugd291bGQgbGlrZSB0byBwYXNzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiB5b3Ugc2hvdWxkIHVzZVxuICB0aGUgYHt7Zm59fWAgaGVscGVyLlxuXG4gIEZvciBleGFtcGxlLCBpbiBvdXIgZXhhbXBsZSBjYXNlIGFib3ZlIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiB0aGUgcG9zdCB0aGF0XG4gIHdhcyBiZWluZyBsaWtlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCB5b3UgY291bGQgZG8gc29tZXRoaW5nIGxpa2U6XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0Lmhic1xuICA8YnV0dG9uIHt7b24gJ2NsaWNrJyAoZm4gdGhpcy5zYXZlTGlrZSBAcG9zdCl9fT5MaWtlIHRoaXMgcG9zdCE8L2J1dHRvbj5cbiAgYGBgXG5cbiAgSW4gdGhpcyBjYXNlLCB0aGUgYHNhdmVMaWtlYCBmdW5jdGlvbiB3aWxsIHJlY2VpdmUgdHdvIGFyZ3VtZW50czogdGhlIGNsaWNrIGV2ZW50XG4gIGFuZCB0aGUgdmFsdWUgb2YgYEBwb3N0YC5cblxuICAjIyMgRnVuY3Rpb24gQ29udGV4dFxuXG4gIEluIHRoZSBleGFtcGxlIGFib3ZlLCB3ZSB1c2VkIGFuIGFycm93IGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IGBsaWtlUG9zdGAgaXNcbiAgcHJvcGVybHkgYm91bmQgdG8gdGhlIGBpdGVtcy1saXN0YCwgYnV0IGxldCdzIGV4cGxvcmUgd2hhdCBoYXBwZW5zIGlmIHdlXG4gIGxlZnQgb3V0IHRoZSBhcnJvdyBmdW5jdGlvbjpcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuanNcbiAgaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuXG4gIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExpa2VQb3N0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzYXZlTGlrZSgpIHtcbiAgICAgIC8vIC4uLnNuaXAuLi5cbiAgICB9XG4gIH1cbiAgYGBgXG5cbiAgSW4gdGhpcyBleGFtcGxlLCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCBgc2F2ZUxpa2VgIHdpbGwgYmUgaW52b2tlZCxcbiAgaXQgd2lsbCAqKm5vdCoqIGhhdmUgYWNjZXNzIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuIEluIG90aGVyXG4gIHdvcmRzLCBpdCB3aWxsIGhhdmUgbm8gYHRoaXNgIGNvbnRleHQsIHNvIHBsZWFzZSBtYWtlIHN1cmUgeW91ciBmdW5jdGlvbnNcbiAgYXJlIGJvdW5kICh2aWEgYW4gYXJyb3cgZnVuY3Rpb24gb3Igb3RoZXIgbWVhbnMpIGJlZm9yZSBwYXNzaW5nIGludG8gYG9uYCFcblxuICBAbWV0aG9kIG9uXG4gIEBwdWJsaWNcbiovXG5jbGFzcyBPbk1vZGlmaWVyTWFuYWdlciBpbXBsZW1lbnRzIEludGVybmFsTW9kaWZpZXJNYW5hZ2VyPE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwsIG9iamVjdD4ge1xuICBwdWJsaWMgU1VQUE9SVFNfRVZFTlRfT1BUSU9OUzogYm9vbGVhbiA9IFNVUFBPUlRTX0VWRU5UX09QVElPTlM7XG5cbiAgZ2V0RGVidWdOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdvbic7XG4gIH1cblxuICBnZXQgY291bnRlcnMoKTogeyBhZGRzOiBudW1iZXI7IHJlbW92ZXM6IG51bWJlciB9IHtcbiAgICByZXR1cm4geyBhZGRzLCByZW1vdmVzIH07XG4gIH1cblxuICBjcmVhdGUoXG4gICAgX293bmVyOiBPd25lcixcbiAgICBlbGVtZW50OiBTaW1wbGVFbGVtZW50IHwgRWxlbWVudCxcbiAgICBfc3RhdGU6IG9iamVjdCxcbiAgICBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50c1xuICApOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gbmV3IE9uTW9kaWZpZXJTdGF0ZShlbGVtZW50IGFzIEVsZW1lbnQsIGFyZ3MpO1xuICB9XG5cbiAgZ2V0VGFnKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogVXBkYXRhYmxlVGFnIHwgbnVsbCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGUudGFnO1xuICB9XG5cbiAgaW5zdGFsbChzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN0YXRlLnVwZGF0ZUZyb21BcmdzKCk7XG5cbiAgICBsZXQgeyBlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zIH0gPSBzdGF0ZTtcblxuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG5cbiAgICByZWdpc3RlckRlc3RydWN0b3Ioc3RhdGUsICgpID0+IHJlbW92ZUV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucykpO1xuXG4gICAgc3RhdGUuc2hvdWxkVXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICB1cGRhdGUoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzdGFzaCBwcmlvciBzdGF0ZSBmb3IgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuICAgIGxldCB7IGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgfSA9IHN0YXRlO1xuXG4gICAgc3RhdGUudXBkYXRlRnJvbUFyZ3MoKTtcblxuICAgIGlmICghc3RhdGUuc2hvdWxkVXBkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gdXNlIHByaW9yIHN0YXRlIHZhbHVlcyBmb3IgcmVtb3ZhbFxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG5cbiAgICAvLyByZWFkIHVwZGF0ZWQgdmFsdWVzIGZyb20gdGhlIHN0YXRlIG9iamVjdFxuICAgIGFkZEV2ZW50TGlzdGVuZXIoc3RhdGUuZWxlbWVudCwgc3RhdGUuZXZlbnROYW1lLCBzdGF0ZS5jYWxsYmFjaywgc3RhdGUub3B0aW9ucyk7XG5cbiAgICBzdGF0ZS5zaG91bGRVcGRhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIGdldERlc3Ryb3lhYmxlKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyKG5ldyBPbk1vZGlmaWVyTWFuYWdlcigpLCB7fSk7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUEsTUFBTSxrQkFBa0IsR0FBRyxnQ0FBM0IsZUFBMkIsQ0FBM0I7QUFFQTs7Ozs7Ozs7Ozs7OztBQVlBLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFLO0FBQ25DLE1BQUk7QUFDRixVQUFNLEdBQUcsR0FBRyxRQUFRLENBQVIsYUFBQSxDQUFaLEtBQVksQ0FBWjtBQUNBLFFBQUksT0FBTyxHQUFYLENBQUE7QUFDQSxJQUFBLEdBQUcsQ0FBSCxnQkFBQSxDQUFBLE9BQUEsRUFBOEIsTUFBTSxPQUFwQyxFQUFBLEVBQStDO0FBQUUsTUFBQSxJQUFJLEVBQUU7QUFBUixLQUEvQztBQUVBLFFBQUEsS0FBQTs7QUFDQSxRQUFJLE9BQUEsS0FBQSxLQUFKLFVBQUEsRUFBaUM7QUFDL0IsTUFBQSxLQUFLLEdBQUcsSUFBQSxLQUFBLENBQVIsT0FBUSxDQUFSO0FBREYsS0FBQSxNQUVPO0FBQ0wsTUFBQSxLQUFLLEdBQUcsUUFBUSxDQUFSLFdBQUEsQ0FBUixPQUFRLENBQVI7QUFDQSxNQUFBLEtBQUssQ0FBTCxTQUFBLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0Q7O0FBRUQsSUFBQSxHQUFHLENBQUgsYUFBQSxDQUFBLEtBQUE7QUFDQSxJQUFBLEdBQUcsQ0FBSCxhQUFBLENBQUEsS0FBQTtBQUVBLFdBQU8sT0FBTyxLQUFkLENBQUE7QUFoQkYsR0FBQSxDQWlCRSxPQUFBLEtBQUEsRUFBYztBQUNkLFdBQUEsS0FBQTtBQUNEO0FBcEJILENBQStCLEdBQS9COztBQXVCTSxNQUFBLGVBQUEsQ0FBc0I7QUFhMUIsRUFBQSxXQUFBLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBcUQ7QUFaOUMsU0FBQSxHQUFB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Q0FBdEUsT0FBZ0IsQ0FBaEI7QUFFQSxJQUFBLEtBQUssQ0FBTCxZQUFBLEdBQUEsS0FBQTtBQUNEOztBQUVELEVBQUEsY0FBYyxDQUFBLEtBQUEsRUFBOEI7QUFDMUMsV0FBQSxLQUFBO0FBQ0Q7O0FBckVvQjs7ZUF3RVIseUNBQTJCLElBQUQsaUJBQUMsRUFBM0IsRUFBZixFQUFlLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckRlc3RydWN0b3IgfSBmcm9tICdAZ2xpbW1lci9kZXN0cm95YWJsZSc7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBDYXB0dXJlZEFyZ3VtZW50cywgSW50ZXJuYWxNb2RpZmllck1hbmFnZXIsIE93bmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBzZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlciB9IGZyb20gJ0BnbGltbWVyL21hbmFnZXInO1xuaW1wb3J0IHsgdmFsdWVGb3JSZWYgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgcmVpZnlOYW1lZCB9IGZyb20gJ0BnbGltbWVyL3J1bnRpbWUnO1xuaW1wb3J0IHsgY3JlYXRlVXBkYXRhYmxlVGFnLCBVcGRhdGFibGVUYWcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgU2ltcGxlRWxlbWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBidWlsZFVudG91Y2hhYmxlVGhpcyB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5jb25zdCB1bnRvdWNoYWJsZUNvbnRleHQgPSBidWlsZFVudG91Y2hhYmxlVGhpcygnYG9uYCBtb2RpZmllcicpO1xuXG4vKlxuICBJbnRlcm5ldCBFeHBsb3JlciAxMSBkb2VzIG5vdCBzdXBwb3J0IGBvbmNlYCBhbmQgYWxzbyBkb2VzIG5vdCBzdXBwb3J0XG4gIHBhc3NpbmcgYGV2ZW50T3B0aW9uc2AuIEluIHNvbWUgc2l0dWF0aW9ucyBpdCB0aGVuIHRocm93cyBhIHdlaXJkIHNjcmlwdFxuICBlcnJvciwgbGlrZTpcblxuICBgYGBcbiAgQ291bGQgbm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gZHVlIHRvIGVycm9yIDgwMDIwMTAxXG4gIGBgYFxuXG4gIFRoaXMgZmxhZyBkZXRlcm1pbmVzLCB3aGV0aGVyIGB7IG9uY2U6IHRydWUgfWAgYW5kIHRodXMgYWxzbyBldmVudCBvcHRpb25zIGluXG4gIGdlbmVyYWwgYXJlIHN1cHBvcnRlZC5cbiovXG5jb25zdCBTVVBQT1JUU19FVkVOVF9PUFRJT05TID0gKCgpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBsZXQgY291bnRlciA9IDA7XG4gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gY291bnRlcisrLCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgICBsZXQgZXZlbnQ7XG4gICAgaWYgKHR5cGVvZiBFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoJ2NsaWNrJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZGl2LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcblxuICAgIHJldHVybiBjb3VudGVyID09PSAxO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSkoKTtcblxuZXhwb3J0IGNsYXNzIE9uTW9kaWZpZXJTdGF0ZSB7XG4gIHB1YmxpYyB0YWcgPSBjcmVhdGVVcGRhdGFibGVUYWcoKTtcbiAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnQ7XG4gIHB1YmxpYyBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50cztcbiAgcHVibGljIGV2ZW50TmFtZSE6IHN0cmluZztcbiAgcHVibGljIGNhbGxiYWNrITogRXZlbnRMaXN0ZW5lcjtcbiAgcHJpdmF0ZSB1c2VyUHJvdmlkZWRDYWxsYmFjayE6IEV2ZW50TGlzdGVuZXI7XG4gIHB1YmxpYyBvbmNlPzogYm9vbGVhbjtcbiAgcHVibGljIHBhc3NpdmU/OiBib29sZWFuO1xuICBwdWJsaWMgY2FwdHVyZT86IGJvb2xlYW47XG4gIHB1YmxpYyBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG4gIHB1YmxpYyBzaG91bGRVcGRhdGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnQsIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgdXBkYXRlRnJvbUFyZ3MoKTogdm9pZCB7XG4gICAgbGV0IHsgYXJncyB9ID0gdGhpcztcblxuICAgIGxldCB7IG9uY2UsIHBhc3NpdmUsIGNhcHR1cmUgfTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSByZWlmeU5hbWVkKGFyZ3MubmFtZWQpO1xuICAgIGlmIChvbmNlICE9PSB0aGlzLm9uY2UpIHtcbiAgICAgIHRoaXMub25jZSA9IG9uY2U7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHBhc3NpdmUgIT09IHRoaXMucGFzc2l2ZSkge1xuICAgICAgdGhpcy5wYXNzaXZlID0gcGFzc2l2ZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2FwdHVyZSAhPT0gdGhpcy5jYXB0dXJlKSB7XG4gICAgICB0aGlzLmNhcHR1cmUgPSBjYXB0dXJlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGxldCBvcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucztcbiAgICBpZiAob25jZSB8fCBwYXNzaXZlIHx8IGNhcHR1cmUpIHtcbiAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB7IG9uY2UsIHBhc3NpdmUsIGNhcHR1cmUgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIERFQlVHICYmXG4gICAgICAoYXJncy5wb3NpdGlvbmFsWzBdID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlRm9yUmVmKGFyZ3MucG9zaXRpb25hbFswXSkgIT09ICdzdHJpbmcnKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnWW91IG11c3QgcGFzcyBhIHZhbGlkIERPTSBldmVudCBuYW1lIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgYG9uYCBtb2RpZmllcidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZSA9IHZhbHVlRm9yUmVmKGFyZ3MucG9zaXRpb25hbFswXSkgYXMgc3RyaW5nO1xuICAgIGlmIChldmVudE5hbWUgIT09IHRoaXMuZXZlbnROYW1lKSB7XG4gICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgdXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UgPSBhcmdzLnBvc2l0aW9uYWxbMV07XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGlmIChhcmdzLnBvc2l0aW9uYWxbMV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBcXGBvblxcYCBtb2RpZmllci5gKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHZhbHVlID0gdmFsdWVGb3JSZWYodXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyOyB5b3UgcGFzc2VkICR7XG4gICAgICAgICAgICB2YWx1ZSA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiB2YWx1ZVxuICAgICAgICAgIH0uIFdoaWxlIHJlbmRlcmluZzpcXG5cXG4ke3VzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlLmRlYnVnTGFiZWx9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB1c2VyUHJvdmlkZWRDYWxsYmFjayA9IHZhbHVlRm9yUmVmKHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlKSBhcyBFdmVudExpc3RlbmVyO1xuICAgIGlmICh1c2VyUHJvdmlkZWRDYWxsYmFjayAhPT0gdGhpcy51c2VyUHJvdmlkZWRDYWxsYmFjaykge1xuICAgICAgdGhpcy51c2VyUHJvdmlkZWRDYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChERUJVRyAmJiBhcmdzLnBvc2l0aW9uYWwubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgY2FuIG9ubHkgcGFzcyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMgKGV2ZW50IG5hbWUgYW5kIGNhbGxiYWNrKSB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXIsIGJ1dCB5b3UgcHJvdmlkZWQgJHthcmdzLnBvc2l0aW9uYWwubGVuZ3RofS4gQ29uc2lkZXIgdXNpbmcgdGhlIFxcYGZuXFxgIGhlbHBlciB0byBwcm92aWRlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBcXGBvblxcYCBjYWxsYmFjay5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBuZWVkc0N1c3RvbUNhbGxiYWNrID1cbiAgICAgIChTVVBQT1JUU19FVkVOVF9PUFRJT05TID09PSBmYWxzZSAmJiBvbmNlKSAvKiBuZWVkcyBtYW51YWwgb25jZSBpbXBsZW1lbnRhdGlvbiAqLyB8fFxuICAgICAgKERFQlVHICYmIHBhc3NpdmUpOyAvKiBuZWVkcyBwYXNzaXZlIGVuZm9yY2VtZW50ICovXG5cbiAgICBpZiAodGhpcy5zaG91bGRVcGRhdGUpIHtcbiAgICAgIGlmIChuZWVkc0N1c3RvbUNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9ICh0aGlzLmNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IEVsZW1lbnQsIGV2ZW50KSB7XG4gICAgICAgICAgaWYgKERFQlVHICYmIHBhc3NpdmUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFlvdSBtYXJrZWQgdGhpcyBsaXN0ZW5lciBhcyAncGFzc2l2ZScsIG1lYW5pbmcgdGhhdCB5b3UgbXVzdCBub3QgY2FsbCAnZXZlbnQucHJldmVudERlZmF1bHQoKSc6IFxcblxcbiR7dXNlclByb3ZpZGVkQ2FsbGJhY2t9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIVNVUFBPUlRTX0VWRU5UX09QVElPTlMgJiYgb25jZSkge1xuICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHVzZXJQcm92aWRlZENhbGxiYWNrLmNhbGwodW50b3VjaGFibGVDb250ZXh0LCBldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChERUJVRykge1xuICAgICAgICAvLyBwcmV2ZW50IHRoZSBjYWxsYmFjayBmcm9tIGJlaW5nIGJvdW5kIHRvIHRoZSBlbGVtZW50XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjay5iaW5kKHVudG91Y2hhYmxlQ29udGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmxldCBhZGRzID0gMDtcbmxldCByZW1vdmVzID0gMDtcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgZWxlbWVudDogRWxlbWVudCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiBFdmVudExpc3RlbmVyLFxuICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbik6IHZvaWQge1xuICByZW1vdmVzKys7XG5cbiAgaWYgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMpIHtcbiAgICAvLyB3aGVuIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCwgdXNlIHRoZW0gYWNyb3NzIHRoZSBib2FyZFxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5jYXB0dXJlKSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZTpcbiAgICAvL1xuICAgIC8vIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH1cbiAgICAvL1xuICAgIC8vIGBvbmNlYCBpcyBoYW5kbGVkIHZpYSBhIGN1c3RvbSBjYWxsYmFjayB0aGF0IHJlbW92ZXMgYWZ0ZXIgZmlyc3RcbiAgICAvLyBpbnZvY2F0aW9uIHNvIHdlIG9ubHkgY2FyZSBhYm91dCBjYXB0dXJlIGhlcmUgYXMgYSBib29sZWFuXG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgIC8vXG4gICAgLy8gKiB3aGVyZSB0aGVyZSBpcyBubyBvcHRpb25zXG4gICAgLy8gKiBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogZmFsc2UgfVxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKFxuICBlbGVtZW50OiBFbGVtZW50LFxuICBldmVudE5hbWU6IHN0cmluZyxcbiAgY2FsbGJhY2s6IEV2ZW50TGlzdGVuZXIsXG4gIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9uc1xuKTogdm9pZCB7XG4gIGFkZHMrKztcblxuICBpZiAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUykge1xuICAgIC8vIHdoZW4gb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCB1c2UgdGhlbSBhY3Jvc3MgdGhlIGJvYXJkXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmNhcHR1cmUpIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlOlxuICAgIC8vXG4gICAgLy8gYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IHRydWUgfVxuICAgIC8vXG4gICAgLy8gYG9uY2VgIGlzIGhhbmRsZWQgdmlhIGEgY3VzdG9tIGNhbGxiYWNrIHRoYXQgcmVtb3ZlcyBhZnRlciBmaXJzdFxuICAgIC8vIGludm9jYXRpb24gc28gd2Ugb25seSBjYXJlIGFib3V0IGNhcHR1cmUgaGVyZSBhcyBhIGJvb2xlYW5cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgLy9cbiAgICAvLyAqIHdoZXJlIHRoZXJlIGlzIG5vIG9wdGlvbnNcbiAgICAvLyAqIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiBmYWxzZSB9XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuICB9XG59XG5cbi8qKlxuICBUaGUgYHt7b259fWAgbW9kaWZpZXIgbGV0cyB5b3UgZWFzaWx5IGFkZCBldmVudCBsaXN0ZW5lcnMgKGl0IHVzZXNcbiAgW0V2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyKVxuICBpbnRlcm5hbGx5KS5cblxuICBGb3IgZXhhbXBsZSwgaWYgeW91J2QgbGlrZSB0byBydW4gYSBmdW5jdGlvbiBvbiB5b3VyIGNvbXBvbmVudCB3aGVuIGEgYDxidXR0b24+YFxuICBpbiB0aGUgY29tcG9uZW50cyB0ZW1wbGF0ZSBpcyBjbGlja2VkIHlvdSBtaWdodCBkbyBzb21ldGhpbmcgbGlrZTpcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuaGJzXG4gIDxidXR0b24ge3tvbiAnY2xpY2snIHRoaXMuc2F2ZUxpa2V9fT5MaWtlIHRoaXMgcG9zdCE8L2J1dHRvbj5cbiAgYGBgXG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0LmpzXG4gIGltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbiAgaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQGVtYmVyL29iamVjdCc7XG5cbiAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlrZVBvc3RDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHNhdmVMaWtlID0gKCkgPT4ge1xuICAgICAgLy8gc29tZW9uZSBsaWtlcyB5b3VyIHBvc3QhXG4gICAgICAvLyBiZXR0ZXIgc2VuZCBhIHJlcXVlc3Qgb2ZmIHRvIHlvdXIgc2VydmVyLi4uXG4gICAgfVxuICB9XG4gIGBgYFxuXG4gICMjIyBBcmd1bWVudHNcblxuICBge3tvbn19YCBhY2NlcHRzIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50cywgYW5kIGEgZmV3IG5hbWVkIGFyZ3VtZW50cy5cblxuICBUaGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlOlxuXG4gIC0gYGV2ZW50YCAtLSB0aGUgbmFtZSB0byB1c2Ugd2hlbiBjYWxsaW5nIGBhZGRFdmVudExpc3RlbmVyYFxuICAtIGBjYWxsYmFja2AgLS0gdGhlIGZ1bmN0aW9uIHRvIGJlIHBhc3NlZCB0byBgYWRkRXZlbnRMaXN0ZW5lcmBcblxuICBUaGUgbmFtZWQgYXJndW1lbnRzIGFyZTpcblxuICAtIGNhcHR1cmUgLS0gYSBgdHJ1ZWAgdmFsdWUgaW5kaWNhdGVzIHRoYXQgZXZlbnRzIG9mIHRoaXMgdHlwZSB3aWxsIGJlIGRpc3BhdGNoZWRcbiAgICB0byB0aGUgcmVnaXN0ZXJlZCBsaXN0ZW5lciBiZWZvcmUgYmVpbmcgZGlzcGF0Y2hlZCB0byBhbnkgRXZlbnRUYXJnZXQgYmVuZWF0aCBpdFxuICAgIGluIHRoZSBET00gdHJlZS5cbiAgLSBvbmNlIC0tIGluZGljYXRlcyB0aGF0IHRoZSBsaXN0ZW5lciBzaG91bGQgYmUgaW52b2tlZCBhdCBtb3N0IG9uY2UgYWZ0ZXIgYmVpbmdcbiAgICBhZGRlZC4gSWYgdHJ1ZSwgdGhlIGxpc3RlbmVyIHdvdWxkIGJlIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCB3aGVuIGludm9rZWQuXG4gIC0gcGFzc2l2ZSAtLSBpZiBgdHJ1ZWAsIGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgbGlzdGVuZXIgd2lsbCBuZXZlclxuICAgIGNhbGwgcHJldmVudERlZmF1bHQoKS4gSWYgYSBwYXNzaXZlIGxpc3RlbmVyIGRvZXMgY2FsbCBwcmV2ZW50RGVmYXVsdCgpLCB0aGUgdXNlclxuICAgIGFnZW50IHdpbGwgZG8gbm90aGluZyBvdGhlciB0aGFuIGdlbmVyYXRlIGEgY29uc29sZSB3YXJuaW5nLiBTZWVcbiAgICBbSW1wcm92aW5nIHNjcm9sbGluZyBwZXJmb3JtYW5jZSB3aXRoIHBhc3NpdmUgbGlzdGVuZXJzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lciNJbXByb3Zpbmdfc2Nyb2xsaW5nX3BlcmZvcm1hbmNlX3dpdGhfcGFzc2l2ZV9saXN0ZW5lcnMpXG4gICAgdG8gbGVhcm4gbW9yZS5cblxuICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gcGFzc2VkIHRvIGB7e29ufX1gIHdpbGwgcmVjZWl2ZSBhbnkgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZFxuICB0byB0aGUgZXZlbnQgaGFuZGxlci4gTW9zdCBjb21tb25seSB0aGlzIHdvdWxkIGJlIHRoZSBgZXZlbnRgIGl0c2VsZi5cblxuICBJZiB5b3Ugd291bGQgbGlrZSB0byBwYXNzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiB5b3Ugc2hvdWxkIHVzZVxuICB0aGUgYHt7Zm59fWAgaGVscGVyLlxuXG4gIEZvciBleGFtcGxlLCBpbiBvdXIgZXhhbXBsZSBjYXNlIGFib3ZlIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiB0aGUgcG9zdCB0aGF0XG4gIHdhcyBiZWluZyBsaWtlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCB5b3UgY291bGQgZG8gc29tZXRoaW5nIGxpa2U6XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0Lmhic1xuICA8YnV0dG9uIHt7b24gJ2NsaWNrJyAoZm4gdGhpcy5zYXZlTGlrZSBAcG9zdCl9fT5MaWtlIHRoaXMgcG9zdCE8L2J1dHRvbj5cbiAgYGBgXG5cbiAgSW4gdGhpcyBjYXNlLCB0aGUgYHNhdmVMaWtlYCBmdW5jdGlvbiB3aWxsIHJlY2VpdmUgdHdvIGFyZ3VtZW50czogdGhlIGNsaWNrIGV2ZW50XG4gIGFuZCB0aGUgdmFsdWUgb2YgYEBwb3N0YC5cblxuICAjIyMgRnVuY3Rpb24gQ29udGV4dFxuXG4gIEluIHRoZSBleGFtcGxlIGFib3ZlLCB3ZSB1c2VkIGFuIGFycm93IGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IGBsaWtlUG9zdGAgaXNcbiAgcHJvcGVybHkgYm91bmQgdG8gdGhlIGBpdGVtcy1saXN0YCwgYnV0IGxldCdzIGV4cGxvcmUgd2hhdCBoYXBwZW5zIGlmIHdlXG4gIGxlZnQgb3V0IHRoZSBhcnJvdyBmdW5jdGlvbjpcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuanNcbiAgaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuXG4gIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExpa2VQb3N0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzYXZlTGlrZSgpIHtcbiAgICAgIC8vIC4uLnNuaXAuLi5cbiAgICB9XG4gIH1cbiAgYGBgXG5cbiAgSW4gdGhpcyBleGFtcGxlLCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCBgc2F2ZUxpa2VgIHdpbGwgYmUgaW52b2tlZCxcbiAgaXQgd2lsbCAqKm5vdCoqIGhhdmUgYWNjZXNzIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuIEluIG90aGVyXG4gIHdvcmRzLCBpdCB3aWxsIGhhdmUgbm8gYHRoaXNgIGNvbnRleHQsIHNvIHBsZWFzZSBtYWtlIHN1cmUgeW91ciBmdW5jdGlvbnNcbiAgYXJlIGJvdW5kICh2aWEgYW4gYXJyb3cgZnVuY3Rpb24gb3Igb3RoZXIgbWVhbnMpIGJlZm9yZSBwYXNzaW5nIGludG8gYG9uYCFcblxuICBAbWV0aG9kIG9uXG4gIEBwdWJsaWNcbiovXG5jbGFzcyBPbk1vZGlmaWVyTWFuYWdlciBpbXBsZW1lbnRzIEludGVybmFsTW9kaWZpZXJNYW5hZ2VyPE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwsIG9iamVjdD4ge1xuICBwdWJsaWMgU1VQUE9SVFNfRVZFTlRfT1BUSU9OUzogYm9vbGVhbiA9IFNVUFBPUlRTX0VWRU5UX09QVElPTlM7XG5cbiAgZ2V0RGVidWdOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdvbic7XG4gIH1cblxuICBnZXQgY291bnRlcnMoKTogeyBhZGRzOiBudW1iZXI7IHJlbW92ZXM6IG51bWJlciB9IHtcbiAgICByZXR1cm4geyBhZGRzLCByZW1vdmVzIH07XG4gIH1cblxuICBjcmVhdGUoXG4gICAgX293bmVyOiBPd25lcixcbiAgICBlbGVtZW50OiBTaW1wbGVFbGVtZW50IHwgRWxlbWVudCxcbiAgICBfc3RhdGU6IG9iamVjdCxcbiAgICBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50c1xuICApOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gbmV3IE9uTW9kaWZpZXJTdGF0ZShlbGVtZW50IGFzIEVsZW1lbnQsIGFyZ3MpO1xuICB9XG5cbiAgZ2V0VGFnKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogVXBkYXRhYmxlVGFnIHwgbnVsbCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGUudGFnO1xuICB9XG5cbiAgaW5zdGFsbChzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN0YXRlLnVwZGF0ZUZyb21BcmdzKCk7XG5cbiAgICBsZXQgeyBlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zIH0gPSBzdGF0ZTtcblxuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG5cbiAgICByZWdpc3RlckRlc3RydWN0b3Ioc3RhdGUsICgpID0+IHJlbW92ZUV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucykpO1xuXG4gICAgc3RhdGUuc2hvdWxkVXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICB1cGRhdGUoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzdGFzaCBwcmlvciBzdGF0ZSBmb3IgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuICAgIGxldCB7IGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgfSA9IHN0YXRlO1xuXG4gICAgc3RhdGUudXBkYXRlRnJvbUFyZ3MoKTtcblxuICAgIGlmICghc3RhdGUuc2hvdWxkVXBkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gdXNlIHByaW9yIHN0YXRlIHZhbHVlcyBmb3IgcmVtb3ZhbFxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG5cbiAgICAvLyByZWFkIHVwZGF0ZWQgdmFsdWVzIGZyb20gdGhlIHN0YXRlIG9iamVjdFxuICAgIGFkZEV2ZW50TGlzdGVuZXIoc3RhdGUuZWxlbWVudCwgc3RhdGUuZXZlbnROYW1lLCBzdGF0ZS5jYWxsYmFjaywgc3RhdGUub3B0aW9ucyk7XG5cbiAgICBzdGF0ZS5zaG91bGRVcGRhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIGdldERlc3Ryb3lhYmxlKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyKG5ldyBPbk1vZGlmaWVyTWFuYWdlcigpLCB7fSk7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -144,3 +144,3 @@ "use strict";

if (typeof value !== 'function') {
throw new Error("You must pass a function as the second argument to the `on` modifier, you passed " + (value === null ? 'null' : typeof value) + ". While rendering:\n\n" + userProvidedCallbackReference.debugLabel);
throw new Error("You must pass a function as the second argument to the `on` modifier; you passed " + (value === null ? 'null' : typeof value) + ". While rendering:\n\n" + userProvidedCallbackReference.debugLabel);
}

@@ -412,2 +412,2 @@ }

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sa0JBQWtCLEdBQUcsZ0NBQTNCLGVBQTJCLENBQTNCO0FBRUE7Ozs7Ozs7Ozs7Ozs7QUFZQSxJQUFNLHNCQUFzQixHQUFJLFlBQUs7QUFDbkMsTUFBSTtBQUNGLFFBQU0sR0FBRyxHQUFHLFFBQVEsQ0FBUixhQUFBLENBQVosS0FBWSxDQUFaO0FBQ0EsUUFBSSxPQUFPLEdBQVgsQ0FBQTtBQUNBLElBQUEsR0FBRyxDQUFILGdCQUFBLENBQUEsT0FBQSxFQUE4QixZQUFBO0FBQUEsYUFBTSxPQUFwQyxFQUE4QjtBQUE5QixLQUFBLEVBQStDO0FBQUUsTUFBQSxJQUFJLEVBQUU7QUFBUixLQUEvQztBQUVBLFFBQUEsS0FBQTs7QUFDQSxRQUFJLE9BQUEsS0FBQSxLQUFKLFVBQUEsRUFBaUM7QUFDL0IsTUFBQSxLQUFLLEdBQUcsSUFBQSxLQUFBLENBQVIsT0FBUSxDQUFSO0FBREYsS0FBQSxNQUVPO0FBQ0wsTUFBQSxLQUFLLEdBQUcsUUFBUSxDQUFSLFdBQUEsQ0FBUixPQUFRLENBQVI7QUFDQSxNQUFBLEtBQUssQ0FBTCxTQUFBLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0Q7O0FBRUQsSUFBQSxHQUFHLENBQUgsYUFBQSxDQUFBLEtBQUE7QUFDQSxJQUFBLEdBQUcsQ0FBSCxhQUFBLENBQUEsS0FBQTtBQUVBLFdBQU8sT0FBTyxLQUFkLENBQUE7QUFoQkYsR0FBQSxDQWlCRSxPQUFBLEtBQUEsRUFBYztBQUNkLFdBQUEsS0FBQTtBQUNEO0FBcEJILENBQWdDLEVBQWhDOztBQXVCQSxJQUFNLGVBQU4sR0FBQSxhQUFBLFlBQUE7QUFhRSxXQUFBLGVBQUEs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UUFNOUIsUUFOOEIsR0FNbEMsS0FOa0MsQ0FBQSxRQUFBO0FBQUEsUUFNRSxPQU5GLEdBTWxDLEtBTmtDLENBQUEsT0FBQTtBQVFsQyxJQUFBLEtBQUssQ0FBTCxjQUFBOztBQUVBLFFBQUksQ0FBQyxLQUFLLENBQVYsWUFBQSxFQUF5QjtBQUN2QjtBQVhnQyxLQUFBLENBY2xDOzs7QUFDQSxJQUFBLG1CQUFtQixDQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsUUFBQSxFQWZlLE9BZWYsQ0FBbkIsQ0Fma0MsQ0FpQmxDOztBQUNBLElBQUEsZ0JBQWdCLENBQUMsS0FBSyxDQUFOLE9BQUEsRUFBZ0IsS0FBSyxDQUFyQixTQUFBLEVBQWlDLEtBQUssQ0FBdEMsUUFBQSxFQUFpRCxLQUFLLENBQXRFLE9BQWdCLENBQWhCO0FBRUEsSUFBQSxLQUFLLENBQUwsWUFBQSxHQUFBLEtBQUE7OztVQUdGLGMsR0FBQSxTQUFBLGNBQUEsQ0FBQSxLQUFBLEVBQTRDO0FBQzFDLFdBQUEsS0FBQTs7Ozs7d0JBN0RVO0FBQ1YsYUFBTztBQUFFLFFBQUEsSUFBRixFQUFBLElBQUE7QUFBUSxRQUFBLE9BQUEsRUFBQTtBQUFSLE9BQVA7QUFDRDs7Ozs7O2VBK0RZLHlDQUEyQixJQUFELGlCQUFDLEVBQTNCLEVBQWYsRUFBZSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJEZXN0cnVjdG9yIH0gZnJvbSAnQGdsaW1tZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgQ2FwdHVyZWRBcmd1bWVudHMsIEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLCBPd25lciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgc2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIgfSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IHJlaWZ5TmFtZWQgfSBmcm9tICdAZ2xpbW1lci9ydW50aW1lJztcbmltcG9ydCB7IGNyZWF0ZVVwZGF0YWJsZVRhZywgVXBkYXRhYmxlVGFnIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcbmltcG9ydCB7IFNpbXBsZUVsZW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYnVpbGRVbnRvdWNoYWJsZVRoaXMgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuY29uc3QgdW50b3VjaGFibGVDb250ZXh0ID0gYnVpbGRVbnRvdWNoYWJsZVRoaXMoJ2BvbmAgbW9kaWZpZXInKTtcblxuLypcbiAgSW50ZXJuZXQgRXhwbG9yZXIgMTEgZG9lcyBub3Qgc3VwcG9ydCBgb25jZWAgYW5kIGFsc28gZG9lcyBub3Qgc3VwcG9ydFxuICBwYXNzaW5nIGBldmVudE9wdGlvbnNgLiBJbiBzb21lIHNpdHVhdGlvbnMgaXQgdGhlbiB0aHJvd3MgYSB3ZWlyZCBzY3JpcHRcbiAgZXJyb3IsIGxpa2U6XG5cbiAgYGBgXG4gIENvdWxkIG5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGR1ZSB0byBlcnJvciA4MDAyMDEwMVxuICBgYGBcblxuICBUaGlzIGZsYWcgZGV0ZXJtaW5lcywgd2hldGhlciBgeyBvbmNlOiB0cnVlIH1gIGFuZCB0aHVzIGFsc28gZXZlbnQgb3B0aW9ucyBpblxuICBnZW5lcmFsIGFyZSBzdXBwb3J0ZWQuXG4qL1xuY29uc3QgU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9ICgoKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGNvdW50ZXIrKywgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgbGV0IGV2ZW50O1xuICAgIGlmICh0eXBlb2YgRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuICAgIH1cblxuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICBkaXYuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cbiAgICByZXR1cm4gY291bnRlciA9PT0gMTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBPbk1vZGlmaWVyU3RhdGUge1xuICBwdWJsaWMgdGFnID0gY3JlYXRlVXBkYXRhYmxlVGFnKCk7XG4gIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50O1xuICBwdWJsaWMgYXJnczogQ2FwdHVyZWRBcmd1bWVudHM7XG4gIHB1YmxpYyBldmVudE5hbWUhOiBzdHJpbmc7XG4gIHB1YmxpYyBjYWxsYmFjayE6IEV2ZW50TGlzdGVuZXI7XG4gIHByaXZhdGUgdXNlclByb3ZpZGVkQ2FsbGJhY2shOiBFdmVudExpc3RlbmVyO1xuICBwdWJsaWMgb25jZT86IGJvb2xlYW47XG4gIHB1YmxpYyBwYXNzaXZlPzogYm9vbGVhbjtcbiAgcHVibGljIGNhcHR1cmU/OiBib29sZWFuO1xuICBwdWJsaWMgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zO1xuICBwdWJsaWMgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50LCBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50cykge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIHVwZGF0ZUZyb21BcmdzKCk6IHZvaWQge1xuICAgIGxldCB7IGFyZ3MgfSA9IHRoaXM7XG5cbiAgICBsZXQgeyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH06IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0gcmVpZnlOYW1lZChhcmdzLm5hbWVkKTtcbiAgICBpZiAob25jZSAhPT0gdGhpcy5vbmNlKSB7XG4gICAgICB0aGlzLm9uY2UgPSBvbmNlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwYXNzaXZlICE9PSB0aGlzLnBhc3NpdmUpIHtcbiAgICAgIHRoaXMucGFzc2l2ZSA9IHBhc3NpdmU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNhcHR1cmUgIT09IHRoaXMuY2FwdHVyZSkge1xuICAgICAgdGhpcy5jYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG4gICAgaWYgKG9uY2UgfHwgcGFzc2l2ZSB8fCBjYXB0dXJlKSB7XG4gICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zID0geyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgKGFyZ3MucG9zaXRpb25hbFswXSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pICE9PSAnc3RyaW5nJylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHBhc3MgYSB2YWxpZCBET00gZXZlbnQgbmFtZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGBvbmAgbW9kaWZpZXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBldmVudE5hbWUgPSB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pIGFzIHN0cmluZztcbiAgICBpZiAoZXZlbnROYW1lICE9PSB0aGlzLmV2ZW50TmFtZSkge1xuICAgICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5hbWU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlID0gYXJncy5wb3NpdGlvbmFsWzFdO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBpZiAoYXJncy5wb3NpdGlvbmFsWzFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXIuYCk7XG4gICAgICB9XG5cbiAgICAgIGxldCB2YWx1ZSA9IHZhbHVlRm9yUmVmKHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBcXGBvblxcYCBtb2RpZmllciwgeW91IHBhc3NlZCAke1xuICAgICAgICAgICAgdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgdmFsdWVcbiAgICAgICAgICB9LiBXaGlsZSByZW5kZXJpbmc6XFxuXFxuJHt1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZS5kZWJ1Z0xhYmVsfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB2YWx1ZUZvclJlZih1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSkgYXMgRXZlbnRMaXN0ZW5lcjtcbiAgICBpZiAodXNlclByb3ZpZGVkQ2FsbGJhY2sgIT09IHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjaztcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoREVCVUcgJiYgYXJncy5wb3NpdGlvbmFsLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbiBvbmx5IHBhc3MgdHdvIHBvc2l0aW9uYWwgYXJndW1lbnRzIChldmVudCBuYW1lIGFuZCBjYWxsYmFjaykgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyLCBidXQgeW91IHByb3ZpZGVkICR7YXJncy5wb3NpdGlvbmFsLmxlbmd0aH0uIENvbnNpZGVyIHVzaW5nIHRoZSBcXGBmblxcYCBoZWxwZXIgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgXFxgb25cXGAgY2FsbGJhY2suYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbmVlZHNDdXN0b21DYWxsYmFjayA9XG4gICAgICAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9PT0gZmFsc2UgJiYgb25jZSkgLyogbmVlZHMgbWFudWFsIG9uY2UgaW1wbGVtZW50YXRpb24gKi8gfHxcbiAgICAgIChERUJVRyAmJiBwYXNzaXZlKTsgLyogbmVlZHMgcGFzc2l2ZSBlbmZvcmNlbWVudCAqL1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlKSB7XG4gICAgICBpZiAobmVlZHNDdXN0b21DYWxsYmFjaykge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSAodGhpcy5jYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBFbGVtZW50LCBldmVudCkge1xuICAgICAgICAgIGlmIChERUJVRyAmJiBwYXNzaXZlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBZb3UgbWFya2VkIHRoaXMgbGlzdGVuZXIgYXMgJ3Bhc3NpdmUnLCBtZWFuaW5nIHRoYXQgeW91IG11c3Qgbm90IGNhbGwgJ2V2ZW50LnByZXZlbnREZWZhdWx0KCknOiBcXG5cXG4ke3VzZXJQcm92aWRlZENhbGxiYWNrfWBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFTVVBQT1JUU19FVkVOVF9PUFRJT05TICYmIG9uY2UpIHtcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1c2VyUHJvdmlkZWRDYWxsYmFjay5jYWxsKHVudG91Y2hhYmxlQ29udGV4dCwgZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoREVCVUcpIHtcbiAgICAgICAgLy8gcHJldmVudCB0aGUgY2FsbGJhY2sgZnJvbSBiZWluZyBib3VuZCB0byB0aGUgZWxlbWVudFxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2suYmluZCh1bnRvdWNoYWJsZUNvbnRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5sZXQgYWRkcyA9IDA7XG5sZXQgcmVtb3ZlcyA9IDA7XG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGV2ZW50TmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogRXZlbnRMaXN0ZW5lcixcbiAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4pOiB2b2lkIHtcbiAgcmVtb3ZlcysrO1xuXG4gIGlmIChTVVBQT1JUU19FVkVOVF9PUFRJT05TKSB7XG4gICAgLy8gd2hlbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQsIHVzZSB0aGVtIGFjcm9zcyB0aGUgYm9hcmRcbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY2FwdHVyZSkge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6XG4gICAgLy9cbiAgICAvLyBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9XG4gICAgLy9cbiAgICAvLyBgb25jZWAgaXMgaGFuZGxlZCB2aWEgYSBjdXN0b20gY2FsbGJhY2sgdGhhdCByZW1vdmVzIGFmdGVyIGZpcnN0XG4gICAgLy8gaW52b2NhdGlvbiBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgY2FwdHVyZSBoZXJlIGFzIGEgYm9vbGVhblxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAvL1xuICAgIC8vICogd2hlcmUgdGhlcmUgaXMgbm8gb3B0aW9uc1xuICAgIC8vICogYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IGZhbHNlIH1cbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihcbiAgZWxlbWVudDogRWxlbWVudCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiBFdmVudExpc3RlbmVyLFxuICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbik6IHZvaWQge1xuICBhZGRzKys7XG5cbiAgaWYgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMpIHtcbiAgICAvLyB3aGVuIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCwgdXNlIHRoZW0gYWNyb3NzIHRoZSBib2FyZFxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5jYXB0dXJlKSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZTpcbiAgICAvL1xuICAgIC8vIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH1cbiAgICAvL1xuICAgIC8vIGBvbmNlYCBpcyBoYW5kbGVkIHZpYSBhIGN1c3RvbSBjYWxsYmFjayB0aGF0IHJlbW92ZXMgYWZ0ZXIgZmlyc3RcbiAgICAvLyBpbnZvY2F0aW9uIHNvIHdlIG9ubHkgY2FyZSBhYm91dCBjYXB0dXJlIGhlcmUgYXMgYSBib29sZWFuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgIC8vXG4gICAgLy8gKiB3aGVyZSB0aGVyZSBpcyBubyBvcHRpb25zXG4gICAgLy8gKiBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogZmFsc2UgfVxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAgVGhlIGB7e29ufX1gIG1vZGlmaWVyIGxldHMgeW91IGVhc2lseSBhZGQgZXZlbnQgbGlzdGVuZXJzIChpdCB1c2VzXG4gIFtFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lcilcbiAgaW50ZXJuYWxseSkuXG5cbiAgRm9yIGV4YW1wbGUsIGlmIHlvdSdkIGxpa2UgdG8gcnVuIGEgZnVuY3Rpb24gb24geW91ciBjb21wb25lbnQgd2hlbiBhIGA8YnV0dG9uPmBcbiAgaW4gdGhlIGNvbXBvbmVudHMgdGVtcGxhdGUgaXMgY2xpY2tlZCB5b3UgbWlnaHQgZG8gc29tZXRoaW5nIGxpa2U6XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0Lmhic1xuICA8YnV0dG9uIHt7b24gJ2NsaWNrJyB0aGlzLnNhdmVMaWtlfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5qc1xuICBpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG4gIGltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BlbWJlci9vYmplY3QnO1xuXG4gIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExpa2VQb3N0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzYXZlTGlrZSA9ICgpID0+IHtcbiAgICAgIC8vIHNvbWVvbmUgbGlrZXMgeW91ciBwb3N0IVxuICAgICAgLy8gYmV0dGVyIHNlbmQgYSByZXF1ZXN0IG9mZiB0byB5b3VyIHNlcnZlci4uLlxuICAgIH1cbiAgfVxuICBgYGBcblxuICAjIyMgQXJndW1lbnRzXG5cbiAgYHt7b259fWAgYWNjZXB0cyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMsIGFuZCBhIGZldyBuYW1lZCBhcmd1bWVudHMuXG5cbiAgVGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZTpcblxuICAtIGBldmVudGAgLS0gdGhlIG5hbWUgdG8gdXNlIHdoZW4gY2FsbGluZyBgYWRkRXZlbnRMaXN0ZW5lcmBcbiAgLSBgY2FsbGJhY2tgIC0tIHRoZSBmdW5jdGlvbiB0byBiZSBwYXNzZWQgdG8gYGFkZEV2ZW50TGlzdGVuZXJgXG5cbiAgVGhlIG5hbWVkIGFyZ3VtZW50cyBhcmU6XG5cbiAgLSBjYXB0dXJlIC0tIGEgYHRydWVgIHZhbHVlIGluZGljYXRlcyB0aGF0IGV2ZW50cyBvZiB0aGlzIHR5cGUgd2lsbCBiZSBkaXNwYXRjaGVkXG4gICAgdG8gdGhlIHJlZ2lzdGVyZWQgbGlzdGVuZXIgYmVmb3JlIGJlaW5nIGRpc3BhdGNoZWQgdG8gYW55IEV2ZW50VGFyZ2V0IGJlbmVhdGggaXRcbiAgICBpbiB0aGUgRE9NIHRyZWUuXG4gIC0gb25jZSAtLSBpbmRpY2F0ZXMgdGhhdCB0aGUgbGlzdGVuZXIgc2hvdWxkIGJlIGludm9rZWQgYXQgbW9zdCBvbmNlIGFmdGVyIGJlaW5nXG4gICAgYWRkZWQuIElmIHRydWUsIHRoZSBsaXN0ZW5lciB3b3VsZCBiZSBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiBpbnZva2VkLlxuICAtIHBhc3NpdmUgLS0gaWYgYHRydWVgLCBpbmRpY2F0ZXMgdGhhdCB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IGxpc3RlbmVyIHdpbGwgbmV2ZXJcbiAgICBjYWxsIHByZXZlbnREZWZhdWx0KCkuIElmIGEgcGFzc2l2ZSBsaXN0ZW5lciBkb2VzIGNhbGwgcHJldmVudERlZmF1bHQoKSwgdGhlIHVzZXJcbiAgICBhZ2VudCB3aWxsIGRvIG5vdGhpbmcgb3RoZXIgdGhhbiBnZW5lcmF0ZSBhIGNvbnNvbGUgd2FybmluZy4gU2VlXG4gICAgW0ltcHJvdmluZyBzY3JvbGxpbmcgcGVyZm9ybWFuY2Ugd2l0aCBwYXNzaXZlIGxpc3RlbmVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXIjSW1wcm92aW5nX3Njcm9sbGluZ19wZXJmb3JtYW5jZV93aXRoX3Bhc3NpdmVfbGlzdGVuZXJzKVxuICAgIHRvIGxlYXJuIG1vcmUuXG5cbiAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHBhc3NlZCB0byBge3tvbn19YCB3aWxsIHJlY2VpdmUgYW55IGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWRcbiAgdG8gdGhlIGV2ZW50IGhhbmRsZXIuIE1vc3QgY29tbW9ubHkgdGhpcyB3b3VsZCBiZSB0aGUgYGV2ZW50YCBpdHNlbGYuXG5cbiAgSWYgeW91IHdvdWxkIGxpa2UgdG8gcGFzcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24geW91IHNob3VsZCB1c2VcbiAgdGhlIGB7e2ZufX1gIGhlbHBlci5cblxuICBGb3IgZXhhbXBsZSwgaW4gb3VyIGV4YW1wbGUgY2FzZSBhYm92ZSBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gdGhlIHBvc3QgdGhhdFxuICB3YXMgYmVpbmcgbGlrZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgeW91IGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5oYnNcbiAgPGJ1dHRvbiB7e29uICdjbGljaycgKGZuIHRoaXMuc2F2ZUxpa2UgQHBvc3QpfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIEluIHRoaXMgY2FzZSwgdGhlIGBzYXZlTGlrZWAgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHR3byBhcmd1bWVudHM6IHRoZSBjbGljayBldmVudFxuICBhbmQgdGhlIHZhbHVlIG9mIGBAcG9zdGAuXG5cbiAgIyMjIEZ1bmN0aW9uIENvbnRleHRcblxuICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgdXNlZCBhbiBhcnJvdyBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBgbGlrZVBvc3RgIGlzXG4gIHByb3Blcmx5IGJvdW5kIHRvIHRoZSBgaXRlbXMtbGlzdGAsIGJ1dCBsZXQncyBleHBsb3JlIHdoYXQgaGFwcGVucyBpZiB3ZVxuICBsZWZ0IG91dCB0aGUgYXJyb3cgZnVuY3Rpb246XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0LmpzXG4gIGltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcblxuICBleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWtlUG9zdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc2F2ZUxpa2UoKSB7XG4gICAgICAvLyAuLi5zbmlwLi4uXG4gICAgfVxuICB9XG4gIGBgYFxuXG4gIEluIHRoaXMgZXhhbXBsZSwgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgYHNhdmVMaWtlYCB3aWxsIGJlIGludm9rZWQsXG4gIGl0IHdpbGwgKipub3QqKiBoYXZlIGFjY2VzcyB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlLiBJbiBvdGhlclxuICB3b3JkcywgaXQgd2lsbCBoYXZlIG5vIGB0aGlzYCBjb250ZXh0LCBzbyBwbGVhc2UgbWFrZSBzdXJlIHlvdXIgZnVuY3Rpb25zXG4gIGFyZSBib3VuZCAodmlhIGFuIGFycm93IGZ1bmN0aW9uIG9yIG90aGVyIG1lYW5zKSBiZWZvcmUgcGFzc2luZyBpbnRvIGBvbmAhXG5cbiAgQG1ldGhvZCBvblxuICBAcHVibGljXG4qL1xuY2xhc3MgT25Nb2RpZmllck1hbmFnZXIgaW1wbGVtZW50cyBJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcjxPbk1vZGlmaWVyU3RhdGUgfCBudWxsLCBvYmplY3Q+IHtcbiAgcHVibGljIFNVUFBPUlRTX0VWRU5UX09QVElPTlM6IGJvb2xlYW4gPSBTVVBQT1JUU19FVkVOVF9PUFRJT05TO1xuXG4gIGdldERlYnVnTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnb24nO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJzKCk6IHsgYWRkczogbnVtYmVyOyByZW1vdmVzOiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHsgYWRkcywgcmVtb3ZlcyB9O1xuICB9XG5cbiAgY3JlYXRlKFxuICAgIF9vd25lcjogT3duZXIsXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCB8IEVsZW1lbnQsXG4gICAgX3N0YXRlOiBvYmplY3QsXG4gICAgYXJnczogQ2FwdHVyZWRBcmd1bWVudHNcbiAgKTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIG5ldyBPbk1vZGlmaWVyU3RhdGUoZWxlbWVudCBhcyBFbGVtZW50LCBhcmdzKTtcbiAgfVxuXG4gIGdldFRhZyhzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IFVwZGF0YWJsZVRhZyB8IG51bGwge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlLnRhZztcbiAgfVxuXG4gIGluc3RhbGwoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGF0ZS51cGRhdGVGcm9tQXJncygpO1xuXG4gICAgbGV0IHsgZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyB9ID0gc3RhdGU7XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgcmVnaXN0ZXJEZXN0cnVjdG9yKHN0YXRlLCAoKSA9PiByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpKTtcblxuICAgIHN0YXRlLnNob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgdXBkYXRlKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc3Rhc2ggcHJpb3Igc3RhdGUgZm9yIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiAgICBsZXQgeyBlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zIH0gPSBzdGF0ZTtcblxuICAgIHN0YXRlLnVwZGF0ZUZyb21BcmdzKCk7XG5cbiAgICBpZiAoIXN0YXRlLnNob3VsZFVwZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHVzZSBwcmlvciBzdGF0ZSB2YWx1ZXMgZm9yIHJlbW92YWxcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgLy8gcmVhZCB1cGRhdGVkIHZhbHVlcyBmcm9tIHRoZSBzdGF0ZSBvYmplY3RcbiAgICBhZGRFdmVudExpc3RlbmVyKHN0YXRlLmVsZW1lbnQsIHN0YXRlLmV2ZW50TmFtZSwgc3RhdGUuY2FsbGJhY2ssIHN0YXRlLm9wdGlvbnMpO1xuXG4gICAgc3RhdGUuc2hvdWxkVXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICBnZXREZXN0cm95YWJsZShzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcihuZXcgT25Nb2RpZmllck1hbmFnZXIoKSwge30pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sa0JBQWtCLEdBQUcsZ0NBQTNCLGVBQTJCLENBQTNCO0FBRUE7Ozs7Ozs7Ozs7Ozs7QUFZQSxJQUFNLHNCQUFzQixHQUFJLFlBQUs7QUFDbkMsTUFBSTtBQUNGLFFBQU0sR0FBRyxHQUFHLFFBQVEsQ0FBUixhQUFBLENBQVosS0FBWSxDQUFaO0FBQ0EsUUFBSSxPQUFPLEdBQVgsQ0FBQTtBQUNBLElBQUEsR0FBRyxDQUFILGdCQUFBLENBQUEsT0FBQSxFQUE4QixZQUFBO0FBQUEsYUFBTSxPQUFwQyxFQUE4QjtBQUE5QixLQUFBLEVBQStDO0FBQUUsTUFBQSxJQUFJLEVBQUU7QUFBUixLQUEvQztBQUVBLFFBQUEsS0FBQTs7QUFDQSxRQUFJLE9BQUEsS0FBQSxLQUFKLFVBQUEsRUFBaUM7QUFDL0IsTUFBQSxLQUFLLEdBQUcsSUFBQSxLQUFBLENBQVIsT0FBUSxDQUFSO0FBREYsS0FBQSxNQUVPO0FBQ0wsTUFBQSxLQUFLLEdBQUcsUUFBUSxDQUFSLFdBQUEsQ0FBUixPQUFRLENBQVI7QUFDQSxNQUFBLEtBQUssQ0FBTCxTQUFBLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0Q7O0FBRUQsSUFBQSxHQUFHLENBQUgsYUFBQSxDQUFBLEtBQUE7QUFDQSxJQUFBLEdBQUcsQ0FBSCxhQUFBLENBQUEsS0FBQTtBQUVBLFdBQU8sT0FBTyxLQUFkLENBQUE7QUFoQkYsR0FBQSxDQWlCRSxPQUFBLEtBQUEsRUFBYztBQUNkLFdBQUEsS0FBQTtBQUNEO0FBcEJILENBQWdDLEVBQWhDOztBQXVCQSxJQUFNLGVBQU4sR0FBQSxhQUFBLFlBQUE7QUFhRSxXQUFBLGVBQUEs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UUFNOUIsUUFOOEIsR0FNbEMsS0FOa0MsQ0FBQSxRQUFBO0FBQUEsUUFNRSxPQU5GLEdBTWxDLEtBTmtDLENBQUEsT0FBQTtBQVFsQyxJQUFBLEtBQUssQ0FBTCxjQUFBOztBQUVBLFFBQUksQ0FBQyxLQUFLLENBQVYsWUFBQSxFQUF5QjtBQUN2QjtBQVhnQyxLQUFBLENBY2xDOzs7QUFDQSxJQUFBLG1CQUFtQixDQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsUUFBQSxFQWZlLE9BZWYsQ0FBbkIsQ0Fma0MsQ0FpQmxDOztBQUNBLElBQUEsZ0JBQWdCLENBQUMsS0FBSyxDQUFOLE9BQUEsRUFBZ0IsS0FBSyxDQUFyQixTQUFBLEVBQWlDLEtBQUssQ0FBdEMsUUFBQSxFQUFpRCxLQUFLLENBQXRFLE9BQWdCLENBQWhCO0FBRUEsSUFBQSxLQUFLLENBQUwsWUFBQSxHQUFBLEtBQUE7OztVQUdGLGMsR0FBQSxTQUFBLGNBQUEsQ0FBQSxLQUFBLEVBQTRDO0FBQzFDLFdBQUEsS0FBQTs7Ozs7d0JBN0RVO0FBQ1YsYUFBTztBQUFFLFFBQUEsSUFBRixFQUFBLElBQUE7QUFBUSxRQUFBLE9BQUEsRUFBQTtBQUFSLE9BQVA7QUFDRDs7Ozs7O2VBK0RZLHlDQUEyQixJQUFELGlCQUFDLEVBQTNCLEVBQWYsRUFBZSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJEZXN0cnVjdG9yIH0gZnJvbSAnQGdsaW1tZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgQ2FwdHVyZWRBcmd1bWVudHMsIEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLCBPd25lciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgc2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIgfSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IHJlaWZ5TmFtZWQgfSBmcm9tICdAZ2xpbW1lci9ydW50aW1lJztcbmltcG9ydCB7IGNyZWF0ZVVwZGF0YWJsZVRhZywgVXBkYXRhYmxlVGFnIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcbmltcG9ydCB7IFNpbXBsZUVsZW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYnVpbGRVbnRvdWNoYWJsZVRoaXMgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuY29uc3QgdW50b3VjaGFibGVDb250ZXh0ID0gYnVpbGRVbnRvdWNoYWJsZVRoaXMoJ2BvbmAgbW9kaWZpZXInKTtcblxuLypcbiAgSW50ZXJuZXQgRXhwbG9yZXIgMTEgZG9lcyBub3Qgc3VwcG9ydCBgb25jZWAgYW5kIGFsc28gZG9lcyBub3Qgc3VwcG9ydFxuICBwYXNzaW5nIGBldmVudE9wdGlvbnNgLiBJbiBzb21lIHNpdHVhdGlvbnMgaXQgdGhlbiB0aHJvd3MgYSB3ZWlyZCBzY3JpcHRcbiAgZXJyb3IsIGxpa2U6XG5cbiAgYGBgXG4gIENvdWxkIG5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGR1ZSB0byBlcnJvciA4MDAyMDEwMVxuICBgYGBcblxuICBUaGlzIGZsYWcgZGV0ZXJtaW5lcywgd2hldGhlciBgeyBvbmNlOiB0cnVlIH1gIGFuZCB0aHVzIGFsc28gZXZlbnQgb3B0aW9ucyBpblxuICBnZW5lcmFsIGFyZSBzdXBwb3J0ZWQuXG4qL1xuY29uc3QgU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9ICgoKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGNvdW50ZXIrKywgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgbGV0IGV2ZW50O1xuICAgIGlmICh0eXBlb2YgRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuICAgIH1cblxuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICBkaXYuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cbiAgICByZXR1cm4gY291bnRlciA9PT0gMTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBPbk1vZGlmaWVyU3RhdGUge1xuICBwdWJsaWMgdGFnID0gY3JlYXRlVXBkYXRhYmxlVGFnKCk7XG4gIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50O1xuICBwdWJsaWMgYXJnczogQ2FwdHVyZWRBcmd1bWVudHM7XG4gIHB1YmxpYyBldmVudE5hbWUhOiBzdHJpbmc7XG4gIHB1YmxpYyBjYWxsYmFjayE6IEV2ZW50TGlzdGVuZXI7XG4gIHByaXZhdGUgdXNlclByb3ZpZGVkQ2FsbGJhY2shOiBFdmVudExpc3RlbmVyO1xuICBwdWJsaWMgb25jZT86IGJvb2xlYW47XG4gIHB1YmxpYyBwYXNzaXZlPzogYm9vbGVhbjtcbiAgcHVibGljIGNhcHR1cmU/OiBib29sZWFuO1xuICBwdWJsaWMgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zO1xuICBwdWJsaWMgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50LCBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50cykge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIHVwZGF0ZUZyb21BcmdzKCk6IHZvaWQge1xuICAgIGxldCB7IGFyZ3MgfSA9IHRoaXM7XG5cbiAgICBsZXQgeyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH06IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0gcmVpZnlOYW1lZChhcmdzLm5hbWVkKTtcbiAgICBpZiAob25jZSAhPT0gdGhpcy5vbmNlKSB7XG4gICAgICB0aGlzLm9uY2UgPSBvbmNlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwYXNzaXZlICE9PSB0aGlzLnBhc3NpdmUpIHtcbiAgICAgIHRoaXMucGFzc2l2ZSA9IHBhc3NpdmU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNhcHR1cmUgIT09IHRoaXMuY2FwdHVyZSkge1xuICAgICAgdGhpcy5jYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG4gICAgaWYgKG9uY2UgfHwgcGFzc2l2ZSB8fCBjYXB0dXJlKSB7XG4gICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zID0geyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgKGFyZ3MucG9zaXRpb25hbFswXSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pICE9PSAnc3RyaW5nJylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHBhc3MgYSB2YWxpZCBET00gZXZlbnQgbmFtZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGBvbmAgbW9kaWZpZXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBldmVudE5hbWUgPSB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pIGFzIHN0cmluZztcbiAgICBpZiAoZXZlbnROYW1lICE9PSB0aGlzLmV2ZW50TmFtZSkge1xuICAgICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5hbWU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlID0gYXJncy5wb3NpdGlvbmFsWzFdO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBpZiAoYXJncy5wb3NpdGlvbmFsWzFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXIuYCk7XG4gICAgICB9XG5cbiAgICAgIGxldCB2YWx1ZSA9IHZhbHVlRm9yUmVmKHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBcXGBvblxcYCBtb2RpZmllcjsgeW91IHBhc3NlZCAke1xuICAgICAgICAgICAgdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgdmFsdWVcbiAgICAgICAgICB9LiBXaGlsZSByZW5kZXJpbmc6XFxuXFxuJHt1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZS5kZWJ1Z0xhYmVsfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB2YWx1ZUZvclJlZih1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSkgYXMgRXZlbnRMaXN0ZW5lcjtcbiAgICBpZiAodXNlclByb3ZpZGVkQ2FsbGJhY2sgIT09IHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjaztcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoREVCVUcgJiYgYXJncy5wb3NpdGlvbmFsLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbiBvbmx5IHBhc3MgdHdvIHBvc2l0aW9uYWwgYXJndW1lbnRzIChldmVudCBuYW1lIGFuZCBjYWxsYmFjaykgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyLCBidXQgeW91IHByb3ZpZGVkICR7YXJncy5wb3NpdGlvbmFsLmxlbmd0aH0uIENvbnNpZGVyIHVzaW5nIHRoZSBcXGBmblxcYCBoZWxwZXIgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgXFxgb25cXGAgY2FsbGJhY2suYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbmVlZHNDdXN0b21DYWxsYmFjayA9XG4gICAgICAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9PT0gZmFsc2UgJiYgb25jZSkgLyogbmVlZHMgbWFudWFsIG9uY2UgaW1wbGVtZW50YXRpb24gKi8gfHxcbiAgICAgIChERUJVRyAmJiBwYXNzaXZlKTsgLyogbmVlZHMgcGFzc2l2ZSBlbmZvcmNlbWVudCAqL1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlKSB7XG4gICAgICBpZiAobmVlZHNDdXN0b21DYWxsYmFjaykge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSAodGhpcy5jYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBFbGVtZW50LCBldmVudCkge1xuICAgICAgICAgIGlmIChERUJVRyAmJiBwYXNzaXZlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBZb3UgbWFya2VkIHRoaXMgbGlzdGVuZXIgYXMgJ3Bhc3NpdmUnLCBtZWFuaW5nIHRoYXQgeW91IG11c3Qgbm90IGNhbGwgJ2V2ZW50LnByZXZlbnREZWZhdWx0KCknOiBcXG5cXG4ke3VzZXJQcm92aWRlZENhbGxiYWNrfWBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFTVVBQT1JUU19FVkVOVF9PUFRJT05TICYmIG9uY2UpIHtcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1c2VyUHJvdmlkZWRDYWxsYmFjay5jYWxsKHVudG91Y2hhYmxlQ29udGV4dCwgZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoREVCVUcpIHtcbiAgICAgICAgLy8gcHJldmVudCB0aGUgY2FsbGJhY2sgZnJvbSBiZWluZyBib3VuZCB0byB0aGUgZWxlbWVudFxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2suYmluZCh1bnRvdWNoYWJsZUNvbnRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5sZXQgYWRkcyA9IDA7XG5sZXQgcmVtb3ZlcyA9IDA7XG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGV2ZW50TmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogRXZlbnRMaXN0ZW5lcixcbiAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4pOiB2b2lkIHtcbiAgcmVtb3ZlcysrO1xuXG4gIGlmIChTVVBQT1JUU19FVkVOVF9PUFRJT05TKSB7XG4gICAgLy8gd2hlbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQsIHVzZSB0aGVtIGFjcm9zcyB0aGUgYm9hcmRcbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY2FwdHVyZSkge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6XG4gICAgLy9cbiAgICAvLyBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9XG4gICAgLy9cbiAgICAvLyBgb25jZWAgaXMgaGFuZGxlZCB2aWEgYSBjdXN0b20gY2FsbGJhY2sgdGhhdCByZW1vdmVzIGFmdGVyIGZpcnN0XG4gICAgLy8gaW52b2NhdGlvbiBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgY2FwdHVyZSBoZXJlIGFzIGEgYm9vbGVhblxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAvL1xuICAgIC8vICogd2hlcmUgdGhlcmUgaXMgbm8gb3B0aW9uc1xuICAgIC8vICogYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IGZhbHNlIH1cbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihcbiAgZWxlbWVudDogRWxlbWVudCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiBFdmVudExpc3RlbmVyLFxuICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbik6IHZvaWQge1xuICBhZGRzKys7XG5cbiAgaWYgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMpIHtcbiAgICAvLyB3aGVuIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCwgdXNlIHRoZW0gYWNyb3NzIHRoZSBib2FyZFxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5jYXB0dXJlKSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZTpcbiAgICAvL1xuICAgIC8vIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH1cbiAgICAvL1xuICAgIC8vIGBvbmNlYCBpcyBoYW5kbGVkIHZpYSBhIGN1c3RvbSBjYWxsYmFjayB0aGF0IHJlbW92ZXMgYWZ0ZXIgZmlyc3RcbiAgICAvLyBpbnZvY2F0aW9uIHNvIHdlIG9ubHkgY2FyZSBhYm91dCBjYXB0dXJlIGhlcmUgYXMgYSBib29sZWFuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgIC8vXG4gICAgLy8gKiB3aGVyZSB0aGVyZSBpcyBubyBvcHRpb25zXG4gICAgLy8gKiBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogZmFsc2UgfVxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAgVGhlIGB7e29ufX1gIG1vZGlmaWVyIGxldHMgeW91IGVhc2lseSBhZGQgZXZlbnQgbGlzdGVuZXJzIChpdCB1c2VzXG4gIFtFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lcilcbiAgaW50ZXJuYWxseSkuXG5cbiAgRm9yIGV4YW1wbGUsIGlmIHlvdSdkIGxpa2UgdG8gcnVuIGEgZnVuY3Rpb24gb24geW91ciBjb21wb25lbnQgd2hlbiBhIGA8YnV0dG9uPmBcbiAgaW4gdGhlIGNvbXBvbmVudHMgdGVtcGxhdGUgaXMgY2xpY2tlZCB5b3UgbWlnaHQgZG8gc29tZXRoaW5nIGxpa2U6XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0Lmhic1xuICA8YnV0dG9uIHt7b24gJ2NsaWNrJyB0aGlzLnNhdmVMaWtlfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5qc1xuICBpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG4gIGltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BlbWJlci9vYmplY3QnO1xuXG4gIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExpa2VQb3N0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzYXZlTGlrZSA9ICgpID0+IHtcbiAgICAgIC8vIHNvbWVvbmUgbGlrZXMgeW91ciBwb3N0IVxuICAgICAgLy8gYmV0dGVyIHNlbmQgYSByZXF1ZXN0IG9mZiB0byB5b3VyIHNlcnZlci4uLlxuICAgIH1cbiAgfVxuICBgYGBcblxuICAjIyMgQXJndW1lbnRzXG5cbiAgYHt7b259fWAgYWNjZXB0cyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMsIGFuZCBhIGZldyBuYW1lZCBhcmd1bWVudHMuXG5cbiAgVGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZTpcblxuICAtIGBldmVudGAgLS0gdGhlIG5hbWUgdG8gdXNlIHdoZW4gY2FsbGluZyBgYWRkRXZlbnRMaXN0ZW5lcmBcbiAgLSBgY2FsbGJhY2tgIC0tIHRoZSBmdW5jdGlvbiB0byBiZSBwYXNzZWQgdG8gYGFkZEV2ZW50TGlzdGVuZXJgXG5cbiAgVGhlIG5hbWVkIGFyZ3VtZW50cyBhcmU6XG5cbiAgLSBjYXB0dXJlIC0tIGEgYHRydWVgIHZhbHVlIGluZGljYXRlcyB0aGF0IGV2ZW50cyBvZiB0aGlzIHR5cGUgd2lsbCBiZSBkaXNwYXRjaGVkXG4gICAgdG8gdGhlIHJlZ2lzdGVyZWQgbGlzdGVuZXIgYmVmb3JlIGJlaW5nIGRpc3BhdGNoZWQgdG8gYW55IEV2ZW50VGFyZ2V0IGJlbmVhdGggaXRcbiAgICBpbiB0aGUgRE9NIHRyZWUuXG4gIC0gb25jZSAtLSBpbmRpY2F0ZXMgdGhhdCB0aGUgbGlzdGVuZXIgc2hvdWxkIGJlIGludm9rZWQgYXQgbW9zdCBvbmNlIGFmdGVyIGJlaW5nXG4gICAgYWRkZWQuIElmIHRydWUsIHRoZSBsaXN0ZW5lciB3b3VsZCBiZSBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiBpbnZva2VkLlxuICAtIHBhc3NpdmUgLS0gaWYgYHRydWVgLCBpbmRpY2F0ZXMgdGhhdCB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IGxpc3RlbmVyIHdpbGwgbmV2ZXJcbiAgICBjYWxsIHByZXZlbnREZWZhdWx0KCkuIElmIGEgcGFzc2l2ZSBsaXN0ZW5lciBkb2VzIGNhbGwgcHJldmVudERlZmF1bHQoKSwgdGhlIHVzZXJcbiAgICBhZ2VudCB3aWxsIGRvIG5vdGhpbmcgb3RoZXIgdGhhbiBnZW5lcmF0ZSBhIGNvbnNvbGUgd2FybmluZy4gU2VlXG4gICAgW0ltcHJvdmluZyBzY3JvbGxpbmcgcGVyZm9ybWFuY2Ugd2l0aCBwYXNzaXZlIGxpc3RlbmVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXIjSW1wcm92aW5nX3Njcm9sbGluZ19wZXJmb3JtYW5jZV93aXRoX3Bhc3NpdmVfbGlzdGVuZXJzKVxuICAgIHRvIGxlYXJuIG1vcmUuXG5cbiAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHBhc3NlZCB0byBge3tvbn19YCB3aWxsIHJlY2VpdmUgYW55IGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWRcbiAgdG8gdGhlIGV2ZW50IGhhbmRsZXIuIE1vc3QgY29tbW9ubHkgdGhpcyB3b3VsZCBiZSB0aGUgYGV2ZW50YCBpdHNlbGYuXG5cbiAgSWYgeW91IHdvdWxkIGxpa2UgdG8gcGFzcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24geW91IHNob3VsZCB1c2VcbiAgdGhlIGB7e2ZufX1gIGhlbHBlci5cblxuICBGb3IgZXhhbXBsZSwgaW4gb3VyIGV4YW1wbGUgY2FzZSBhYm92ZSBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gdGhlIHBvc3QgdGhhdFxuICB3YXMgYmVpbmcgbGlrZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgeW91IGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5oYnNcbiAgPGJ1dHRvbiB7e29uICdjbGljaycgKGZuIHRoaXMuc2F2ZUxpa2UgQHBvc3QpfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIEluIHRoaXMgY2FzZSwgdGhlIGBzYXZlTGlrZWAgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHR3byBhcmd1bWVudHM6IHRoZSBjbGljayBldmVudFxuICBhbmQgdGhlIHZhbHVlIG9mIGBAcG9zdGAuXG5cbiAgIyMjIEZ1bmN0aW9uIENvbnRleHRcblxuICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgdXNlZCBhbiBhcnJvdyBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBgbGlrZVBvc3RgIGlzXG4gIHByb3Blcmx5IGJvdW5kIHRvIHRoZSBgaXRlbXMtbGlzdGAsIGJ1dCBsZXQncyBleHBsb3JlIHdoYXQgaGFwcGVucyBpZiB3ZVxuICBsZWZ0IG91dCB0aGUgYXJyb3cgZnVuY3Rpb246XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0LmpzXG4gIGltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcblxuICBleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWtlUG9zdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc2F2ZUxpa2UoKSB7XG4gICAgICAvLyAuLi5zbmlwLi4uXG4gICAgfVxuICB9XG4gIGBgYFxuXG4gIEluIHRoaXMgZXhhbXBsZSwgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgYHNhdmVMaWtlYCB3aWxsIGJlIGludm9rZWQsXG4gIGl0IHdpbGwgKipub3QqKiBoYXZlIGFjY2VzcyB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlLiBJbiBvdGhlclxuICB3b3JkcywgaXQgd2lsbCBoYXZlIG5vIGB0aGlzYCBjb250ZXh0LCBzbyBwbGVhc2UgbWFrZSBzdXJlIHlvdXIgZnVuY3Rpb25zXG4gIGFyZSBib3VuZCAodmlhIGFuIGFycm93IGZ1bmN0aW9uIG9yIG90aGVyIG1lYW5zKSBiZWZvcmUgcGFzc2luZyBpbnRvIGBvbmAhXG5cbiAgQG1ldGhvZCBvblxuICBAcHVibGljXG4qL1xuY2xhc3MgT25Nb2RpZmllck1hbmFnZXIgaW1wbGVtZW50cyBJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcjxPbk1vZGlmaWVyU3RhdGUgfCBudWxsLCBvYmplY3Q+IHtcbiAgcHVibGljIFNVUFBPUlRTX0VWRU5UX09QVElPTlM6IGJvb2xlYW4gPSBTVVBQT1JUU19FVkVOVF9PUFRJT05TO1xuXG4gIGdldERlYnVnTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnb24nO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJzKCk6IHsgYWRkczogbnVtYmVyOyByZW1vdmVzOiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHsgYWRkcywgcmVtb3ZlcyB9O1xuICB9XG5cbiAgY3JlYXRlKFxuICAgIF9vd25lcjogT3duZXIsXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCB8IEVsZW1lbnQsXG4gICAgX3N0YXRlOiBvYmplY3QsXG4gICAgYXJnczogQ2FwdHVyZWRBcmd1bWVudHNcbiAgKTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIG5ldyBPbk1vZGlmaWVyU3RhdGUoZWxlbWVudCBhcyBFbGVtZW50LCBhcmdzKTtcbiAgfVxuXG4gIGdldFRhZyhzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IFVwZGF0YWJsZVRhZyB8IG51bGwge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlLnRhZztcbiAgfVxuXG4gIGluc3RhbGwoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGF0ZS51cGRhdGVGcm9tQXJncygpO1xuXG4gICAgbGV0IHsgZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyB9ID0gc3RhdGU7XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgcmVnaXN0ZXJEZXN0cnVjdG9yKHN0YXRlLCAoKSA9PiByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpKTtcblxuICAgIHN0YXRlLnNob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgdXBkYXRlKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc3Rhc2ggcHJpb3Igc3RhdGUgZm9yIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiAgICBsZXQgeyBlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zIH0gPSBzdGF0ZTtcblxuICAgIHN0YXRlLnVwZGF0ZUZyb21BcmdzKCk7XG5cbiAgICBpZiAoIXN0YXRlLnNob3VsZFVwZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHVzZSBwcmlvciBzdGF0ZSB2YWx1ZXMgZm9yIHJlbW92YWxcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgLy8gcmVhZCB1cGRhdGVkIHZhbHVlcyBmcm9tIHRoZSBzdGF0ZSBvYmplY3RcbiAgICBhZGRFdmVudExpc3RlbmVyKHN0YXRlLmVsZW1lbnQsIHN0YXRlLmV2ZW50TmFtZSwgc3RhdGUuY2FsbGJhY2ssIHN0YXRlLm9wdGlvbnMpO1xuXG4gICAgc3RhdGUuc2hvdWxkVXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICBnZXREZXN0cm95YWJsZShzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcihuZXcgT25Nb2RpZmllck1hbmFnZXIoKSwge30pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -112,3 +112,3 @@ import { registerDestructor } from '@glimmer/destroyable';

if (typeof value !== 'function') {
throw new Error(`You must pass a function as the second argument to the \`on\` modifier, you passed ${value === null ? 'null' : typeof value}. While rendering:\n\n${userProvidedCallbackReference.debugLabel}`);
throw new Error(`You must pass a function as the second argument to the \`on\` modifier; you passed ${value === null ? 'null' : typeof value}. While rendering:\n\n${userProvidedCallbackReference.debugLabel}`);
}

@@ -371,2 +371,2 @@ }

export default setInternalModifierManager(new OnModifierManager(), {});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGtCQUFULFFBQW1DLHNCQUFuQztBQUNBLFNBQVMsS0FBVCxRQUFzQixjQUF0QjtBQUVBLFNBQVMsMEJBQVQsUUFBMkMsa0JBQTNDO0FBQ0EsU0FBUyxXQUFULFFBQTRCLG9CQUE1QjtBQUNBLFNBQVMsVUFBVCxRQUEyQixrQkFBM0I7QUFDQSxTQUFTLGtCQUFULFFBQWlELG9CQUFqRDtBQUVBLFNBQVMsb0JBQVQsUUFBcUMsZUFBckM7QUFFQSxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLGVBQUQsQ0FBL0M7QUFFQTs7Ozs7Ozs7Ozs7OztBQVlBLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFLO0FBQ25DLE1BQUk7QUFDRixVQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBVCxDQUF1QixLQUF2QixDQUFaO0FBQ0EsUUFBSSxPQUFPLEdBQUcsQ0FBZDtBQUNBLElBQUEsR0FBRyxDQUFDLGdCQUFKLENBQXFCLE9BQXJCLEVBQThCLE1BQU0sT0FBTyxFQUEzQyxFQUErQztBQUFFLE1BQUEsSUFBSSxFQUFFO0FBQVIsS0FBL0M7QUFFQSxRQUFJLEtBQUo7O0FBQ0EsUUFBSSxPQUFPLEtBQVAsS0FBaUIsVUFBckIsRUFBaUM7QUFDL0IsTUFBQSxLQUFLLEdBQUcsSUFBSSxLQUFKLENBQVUsT0FBVixDQUFSO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsTUFBQSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVQsQ0FBcUIsT0FBckIsQ0FBUjtBQUNBLE1BQUEsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsT0FBaEIsRUFBeUIsSUFBekIsRUFBK0IsSUFBL0I7QUFDRDs7QUFFRCxJQUFBLEdBQUcsQ0FBQyxhQUFKLENBQWtCLEtBQWxCO0FBQ0EsSUFBQSxHQUFHLENBQUMsYUFBSixDQUFrQixLQUFsQjtBQUVB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QUNBLFFBQUk7QUFBRSxNQUFBLE9BQUY7QUFBVyxNQUFBLFNBQVg7QUFBc0IsTUFBQSxRQUF0QjtBQUFnQyxNQUFBO0FBQWhDLFFBQTRDLEtBQWhEO0FBRUEsSUFBQSxLQUFLLENBQUMsY0FBTjs7QUFFQSxRQUFJLENBQUMsS0FBSyxDQUFDLFlBQVgsRUFBeUI7QUFDdkI7QUFDRCxLQVppQyxDQWNsQzs7O0FBQ0EsSUFBQSxtQkFBbUIsQ0FBQyxPQUFELEVBQVUsU0FBVixFQUFxQixRQUFyQixFQUErQixPQUEvQixDQUFuQixDQWZrQyxDQWlCbEM7O0FBQ0EsSUFBQSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBUCxFQUFnQixLQUFLLENBQUMsU0FBdEIsRUFBaUMsS0FBSyxDQUFDLFFBQXZDLEVBQWlELEtBQUssQ0FBQyxPQUF2RCxDQUFoQjtBQUVBLElBQUEsS0FBSyxDQUFDLFlBQU4sR0FBcUIsS0FBckI7QUFDRDs7QUFFRCxFQUFBLGNBQWMsQ0FBQyxLQUFELEVBQThCO0FBQzFDLFdBQU8sS0FBUDtBQUNEOztBQXJFb0I7O0FBd0V2QixlQUFlLDBCQUEwQixDQUFDLElBQUksaUJBQUosRUFBRCxFQUEwQixFQUExQixDQUF6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlZ2lzdGVyRGVzdHJ1Y3RvciB9IGZyb20gJ0BnbGltbWVyL2Rlc3Ryb3lhYmxlJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IENhcHR1cmVkQXJndW1lbnRzLCBJbnRlcm5hbE1vZGlmaWVyTWFuYWdlciwgT3duZXIgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnQGdsaW1tZXIvbWFuYWdlcic7XG5pbXBvcnQgeyB2YWx1ZUZvclJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyByZWlmeU5hbWVkIH0gZnJvbSAnQGdsaW1tZXIvcnVudGltZSc7XG5pbXBvcnQgeyBjcmVhdGVVcGRhdGFibGVUYWcsIFVwZGF0YWJsZVRhZyB9IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBTaW1wbGVFbGVtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IGJ1aWxkVW50b3VjaGFibGVUaGlzIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmNvbnN0IHVudG91Y2hhYmxlQ29udGV4dCA9IGJ1aWxkVW50b3VjaGFibGVUaGlzKCdgb25gIG1vZGlmaWVyJyk7XG5cbi8qXG4gIEludGVybmV0IEV4cGxvcmVyIDExIGRvZXMgbm90IHN1cHBvcnQgYG9uY2VgIGFuZCBhbHNvIGRvZXMgbm90IHN1cHBvcnRcbiAgcGFzc2luZyBgZXZlbnRPcHRpb25zYC4gSW4gc29tZSBzaXR1YXRpb25zIGl0IHRoZW4gdGhyb3dzIGEgd2VpcmQgc2NyaXB0XG4gIGVycm9yLCBsaWtlOlxuXG4gIGBgYFxuICBDb3VsZCBub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBkdWUgdG8gZXJyb3IgODAwMjAxMDFcbiAgYGBgXG5cbiAgVGhpcyBmbGFnIGRldGVybWluZXMsIHdoZXRoZXIgYHsgb25jZTogdHJ1ZSB9YCBhbmQgdGh1cyBhbHNvIGV2ZW50IG9wdGlvbnMgaW5cbiAgZ2VuZXJhbCBhcmUgc3VwcG9ydGVkLlxuKi9cbmNvbnN0IFNVUFBPUlRTX0VWRU5UX09QVElPTlMgPSAoKCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGxldCBjb3VudGVyID0gMDtcbiAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBjb3VudGVyKyssIHsgb25jZTogdHJ1ZSB9KTtcblxuICAgIGxldCBldmVudDtcbiAgICBpZiAodHlwZW9mIEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBldmVudCA9IG5ldyBFdmVudCgnY2xpY2snKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBkaXYuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgZGl2LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuXG4gICAgcmV0dXJuIGNvdW50ZXIgPT09IDE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KSgpO1xuXG5leHBvcnQgY2xhc3MgT25Nb2RpZmllclN0YXRlIHtcbiAgcHVibGljIHRhZyA9IGNyZWF0ZVVwZGF0YWJsZVRhZygpO1xuICBwdWJsaWMgZWxlbWVudDogRWxlbWVudDtcbiAgcHVibGljIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzO1xuICBwdWJsaWMgZXZlbnROYW1lITogc3RyaW5nO1xuICBwdWJsaWMgY2FsbGJhY2shOiBFdmVudExpc3RlbmVyO1xuICBwcml2YXRlIHVzZXJQcm92aWRlZENhbGxiYWNrITogRXZlbnRMaXN0ZW5lcjtcbiAgcHVibGljIG9uY2U/OiBib29sZWFuO1xuICBwdWJsaWMgcGFzc2l2ZT86IGJvb2xlYW47XG4gIHB1YmxpYyBjYXB0dXJlPzogYm9vbGVhbjtcbiAgcHVibGljIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucztcbiAgcHVibGljIHNob3VsZFVwZGF0ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudCwgYXJnczogQ2FwdHVyZWRBcmd1bWVudHMpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gIH1cblxuICB1cGRhdGVGcm9tQXJncygpOiB2b2lkIHtcbiAgICBsZXQgeyBhcmdzIH0gPSB0aGlzO1xuXG4gICAgbGV0IHsgb25jZSwgcGFzc2l2ZSwgY2FwdHVyZSB9OiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHJlaWZ5TmFtZWQoYXJncy5uYW1lZCk7XG4gICAgaWYgKG9uY2UgIT09IHRoaXMub25jZSkge1xuICAgICAgdGhpcy5vbmNlID0gb25jZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocGFzc2l2ZSAhPT0gdGhpcy5wYXNzaXZlKSB7XG4gICAgICB0aGlzLnBhc3NpdmUgPSBwYXNzaXZlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjYXB0dXJlICE9PSB0aGlzLmNhcHR1cmUpIHtcbiAgICAgIHRoaXMuY2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zO1xuICAgIGlmIChvbmNlIHx8IHBhc3NpdmUgfHwgY2FwdHVyZSkge1xuICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IHsgb25jZSwgcGFzc2l2ZSwgY2FwdHVyZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgREVCVUcgJiZcbiAgICAgIChhcmdzLnBvc2l0aW9uYWxbMF0gPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVGb3JSZWYoYXJncy5wb3NpdGlvbmFsWzBdKSAhPT0gJ3N0cmluZycpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdZb3UgbXVzdCBwYXNzIGEgdmFsaWQgRE9NIGV2ZW50IG5hbWUgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBgb25gIG1vZGlmaWVyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgZXZlbnROYW1lID0gdmFsdWVGb3JSZWYoYXJncy5wb3NpdGlvbmFsWzBdKSBhcyBzdHJpbmc7XG4gICAgaWYgKGV2ZW50TmFtZSAhPT0gdGhpcy5ldmVudE5hbWUpIHtcbiAgICAgIHRoaXMuZXZlbnROYW1lID0gZXZlbnROYW1lO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGxldCB1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSA9IGFyZ3MucG9zaXRpb25hbFsxXTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgaWYgKGFyZ3MucG9zaXRpb25hbFsxXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyLmApO1xuICAgICAgfVxuXG4gICAgICBsZXQgdmFsdWUgPSB2YWx1ZUZvclJlZih1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXIsIHlvdSBwYXNzZWQgJHtcbiAgICAgICAgICAgIHZhbHVlID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHZhbHVlXG4gICAgICAgICAgfS4gV2hpbGUgcmVuZGVyaW5nOlxcblxcbiR7dXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UuZGVidWdMYWJlbH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHVzZXJQcm92aWRlZENhbGxiYWNrID0gdmFsdWVGb3JSZWYodXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UpIGFzIEV2ZW50TGlzdGVuZXI7XG4gICAgaWYgKHVzZXJQcm92aWRlZENhbGxiYWNrICE9PSB0aGlzLnVzZXJQcm92aWRlZENhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVzZXJQcm92aWRlZENhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2s7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKERFQlVHICYmIGFyZ3MucG9zaXRpb25hbC5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW4gb25seSBwYXNzIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoZXZlbnQgbmFtZSBhbmQgY2FsbGJhY2spIHRvIHRoZSBcXGBvblxcYCBtb2RpZmllciwgYnV0IHlvdSBwcm92aWRlZCAke2FyZ3MucG9zaXRpb25hbC5sZW5ndGh9LiBDb25zaWRlciB1c2luZyB0aGUgXFxgZm5cXGAgaGVscGVyIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIFxcYG9uXFxgIGNhbGxiYWNrLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IG5lZWRzQ3VzdG9tQ2FsbGJhY2sgPVxuICAgICAgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMgPT09IGZhbHNlICYmIG9uY2UpIC8qIG5lZWRzIG1hbnVhbCBvbmNlIGltcGxlbWVudGF0aW9uICovIHx8XG4gICAgICAoREVCVUcgJiYgcGFzc2l2ZSk7IC8qIG5lZWRzIHBhc3NpdmUgZW5mb3JjZW1lbnQgKi9cblxuICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZSkge1xuICAgICAgaWYgKG5lZWRzQ3VzdG9tQ2FsbGJhY2spIHtcbiAgICAgICAgbGV0IGNhbGxiYWNrID0gKHRoaXMuY2FsbGJhY2sgPSBmdW5jdGlvbiAodGhpczogRWxlbWVudCwgZXZlbnQpIHtcbiAgICAgICAgICBpZiAoREVCVUcgJiYgcGFzc2l2ZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgWW91IG1hcmtlZCB0aGlzIGxpc3RlbmVyIGFzICdwYXNzaXZlJywgbWVhbmluZyB0aGF0IHlvdSBtdXN0IG5vdCBjYWxsICdldmVudC5wcmV2ZW50RGVmYXVsdCgpJzogXFxuXFxuJHt1c2VyUHJvdmlkZWRDYWxsYmFja31gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyAmJiBvbmNlKSB7XG4gICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdXNlclByb3ZpZGVkQ2FsbGJhY2suY2FsbCh1bnRvdWNoYWJsZUNvbnRleHQsIGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKERFQlVHKSB7XG4gICAgICAgIC8vIHByZXZlbnQgdGhlIGNhbGxiYWNrIGZyb20gYmVpbmcgYm91bmQgdG8gdGhlIGVsZW1lbnRcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrLmJpbmQodW50b3VjaGFibGVDb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxubGV0IGFkZHMgPSAwO1xubGV0IHJlbW92ZXMgPSAwO1xuXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKFxuICBlbGVtZW50OiBFbGVtZW50LFxuICBldmVudE5hbWU6IHN0cmluZyxcbiAgY2FsbGJhY2s6IEV2ZW50TGlzdGVuZXIsXG4gIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9uc1xuKTogdm9pZCB7XG4gIHJlbW92ZXMrKztcblxuICBpZiAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUykge1xuICAgIC8vIHdoZW4gb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCB1c2UgdGhlbSBhY3Jvc3MgdGhlIGJvYXJkXG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmNhcHR1cmUpIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlOlxuICAgIC8vXG4gICAgLy8gYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IHRydWUgfVxuICAgIC8vXG4gICAgLy8gYG9uY2VgIGlzIGhhbmRsZWQgdmlhIGEgY3VzdG9tIGNhbGxiYWNrIHRoYXQgcmVtb3ZlcyBhZnRlciBmaXJzdFxuICAgIC8vIGludm9jYXRpb24gc28gd2Ugb25seSBjYXJlIGFib3V0IGNhcHR1cmUgaGVyZSBhcyBhIGJvb2xlYW5cbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgLy9cbiAgICAvLyAqIHdoZXJlIHRoZXJlIGlzIG5vIG9wdGlvbnNcbiAgICAvLyAqIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiBmYWxzZSB9XG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGV2ZW50TmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogRXZlbnRMaXN0ZW5lcixcbiAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4pOiB2b2lkIHtcbiAgYWRkcysrO1xuXG4gIGlmIChTVVBQT1JUU19FVkVOVF9PUFRJT05TKSB7XG4gICAgLy8gd2hlbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQsIHVzZSB0aGVtIGFjcm9zcyB0aGUgYm9hcmRcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY2FwdHVyZSkge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6XG4gICAgLy9cbiAgICAvLyBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9XG4gICAgLy9cbiAgICAvLyBgb25jZWAgaXMgaGFuZGxlZCB2aWEgYSBjdXN0b20gY2FsbGJhY2sgdGhhdCByZW1vdmVzIGFmdGVyIGZpcnN0XG4gICAgLy8gaW52b2NhdGlvbiBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgY2FwdHVyZSBoZXJlIGFzIGEgYm9vbGVhblxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAvL1xuICAgIC8vICogd2hlcmUgdGhlcmUgaXMgbm8gb3B0aW9uc1xuICAgIC8vICogYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IGZhbHNlIH1cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuLyoqXG4gIFRoZSBge3tvbn19YCBtb2RpZmllciBsZXRzIHlvdSBlYXNpbHkgYWRkIGV2ZW50IGxpc3RlbmVycyAoaXQgdXNlc1xuICBbRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXIpXG4gIGludGVybmFsbHkpLlxuXG4gIEZvciBleGFtcGxlLCBpZiB5b3UnZCBsaWtlIHRvIHJ1biBhIGZ1bmN0aW9uIG9uIHlvdXIgY29tcG9uZW50IHdoZW4gYSBgPGJ1dHRvbj5gXG4gIGluIHRoZSBjb21wb25lbnRzIHRlbXBsYXRlIGlzIGNsaWNrZWQgeW91IG1pZ2h0IGRvIHNvbWV0aGluZyBsaWtlOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5oYnNcbiAgPGJ1dHRvbiB7e29uICdjbGljaycgdGhpcy5zYXZlTGlrZX19Pkxpa2UgdGhpcyBwb3N0ITwvYnV0dG9uPlxuICBgYGBcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuanNcbiAgaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuICBpbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAZW1iZXIvb2JqZWN0JztcblxuICBleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWtlUG9zdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc2F2ZUxpa2UgPSAoKSA9PiB7XG4gICAgICAvLyBzb21lb25lIGxpa2VzIHlvdXIgcG9zdCFcbiAgICAgIC8vIGJldHRlciBzZW5kIGEgcmVxdWVzdCBvZmYgdG8geW91ciBzZXJ2ZXIuLi5cbiAgICB9XG4gIH1cbiAgYGBgXG5cbiAgIyMjIEFyZ3VtZW50c1xuXG4gIGB7e29ufX1gIGFjY2VwdHMgdHdvIHBvc2l0aW9uYWwgYXJndW1lbnRzLCBhbmQgYSBmZXcgbmFtZWQgYXJndW1lbnRzLlxuXG4gIFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmU6XG5cbiAgLSBgZXZlbnRgIC0tIHRoZSBuYW1lIHRvIHVzZSB3aGVuIGNhbGxpbmcgYGFkZEV2ZW50TGlzdGVuZXJgXG4gIC0gYGNhbGxiYWNrYCAtLSB0aGUgZnVuY3Rpb24gdG8gYmUgcGFzc2VkIHRvIGBhZGRFdmVudExpc3RlbmVyYFxuXG4gIFRoZSBuYW1lZCBhcmd1bWVudHMgYXJlOlxuXG4gIC0gY2FwdHVyZSAtLSBhIGB0cnVlYCB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBldmVudHMgb2YgdGhpcyB0eXBlIHdpbGwgYmUgZGlzcGF0Y2hlZFxuICAgIHRvIHRoZSByZWdpc3RlcmVkIGxpc3RlbmVyIGJlZm9yZSBiZWluZyBkaXNwYXRjaGVkIHRvIGFueSBFdmVudFRhcmdldCBiZW5lYXRoIGl0XG4gICAgaW4gdGhlIERPTSB0cmVlLlxuICAtIG9uY2UgLS0gaW5kaWNhdGVzIHRoYXQgdGhlIGxpc3RlbmVyIHNob3VsZCBiZSBpbnZva2VkIGF0IG1vc3Qgb25jZSBhZnRlciBiZWluZ1xuICAgIGFkZGVkLiBJZiB0cnVlLCB0aGUgbGlzdGVuZXIgd291bGQgYmUgYXV0b21hdGljYWxseSByZW1vdmVkIHdoZW4gaW52b2tlZC5cbiAgLSBwYXNzaXZlIC0tIGlmIGB0cnVlYCwgaW5kaWNhdGVzIHRoYXQgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSBsaXN0ZW5lciB3aWxsIG5ldmVyXG4gICAgY2FsbCBwcmV2ZW50RGVmYXVsdCgpLiBJZiBhIHBhc3NpdmUgbGlzdGVuZXIgZG9lcyBjYWxsIHByZXZlbnREZWZhdWx0KCksIHRoZSB1c2VyXG4gICAgYWdlbnQgd2lsbCBkbyBub3RoaW5nIG90aGVyIHRoYW4gZ2VuZXJhdGUgYSBjb25zb2xlIHdhcm5pbmcuIFNlZVxuICAgIFtJbXByb3Zpbmcgc2Nyb2xsaW5nIHBlcmZvcm1hbmNlIHdpdGggcGFzc2l2ZSBsaXN0ZW5lcnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyI0ltcHJvdmluZ19zY3JvbGxpbmdfcGVyZm9ybWFuY2Vfd2l0aF9wYXNzaXZlX2xpc3RlbmVycylcbiAgICB0byBsZWFybiBtb3JlLlxuXG4gIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBwYXNzZWQgdG8gYHt7b259fWAgd2lsbCByZWNlaXZlIGFueSBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkXG4gIHRvIHRoZSBldmVudCBoYW5kbGVyLiBNb3N0IGNvbW1vbmx5IHRoaXMgd291bGQgYmUgdGhlIGBldmVudGAgaXRzZWxmLlxuXG4gIElmIHlvdSB3b3VsZCBsaWtlIHRvIHBhc3MgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIHlvdSBzaG91bGQgdXNlXG4gIHRoZSBge3tmbn19YCBoZWxwZXIuXG5cbiAgRm9yIGV4YW1wbGUsIGluIG91ciBleGFtcGxlIGNhc2UgYWJvdmUgaWYgeW91J2QgbGlrZSB0byBwYXNzIGluIHRoZSBwb3N0IHRoYXRcbiAgd2FzIGJlaW5nIGxpa2VkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIHlvdSBjb3VsZCBkbyBzb21ldGhpbmcgbGlrZTpcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuaGJzXG4gIDxidXR0b24ge3tvbiAnY2xpY2snIChmbiB0aGlzLnNhdmVMaWtlIEBwb3N0KX19Pkxpa2UgdGhpcyBwb3N0ITwvYnV0dG9uPlxuICBgYGBcblxuICBJbiB0aGlzIGNhc2UsIHRoZSBgc2F2ZUxpa2VgIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSB0d28gYXJndW1lbnRzOiB0aGUgY2xpY2sgZXZlbnRcbiAgYW5kIHRoZSB2YWx1ZSBvZiBgQHBvc3RgLlxuXG4gICMjIyBGdW5jdGlvbiBDb250ZXh0XG5cbiAgSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHdlIHVzZWQgYW4gYXJyb3cgZnVuY3Rpb24gdG8gZW5zdXJlIHRoYXQgYGxpa2VQb3N0YCBpc1xuICBwcm9wZXJseSBib3VuZCB0byB0aGUgYGl0ZW1zLWxpc3RgLCBidXQgbGV0J3MgZXhwbG9yZSB3aGF0IGhhcHBlbnMgaWYgd2VcbiAgbGVmdCBvdXQgdGhlIGFycm93IGZ1bmN0aW9uOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5qc1xuICBpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5cbiAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlrZVBvc3RDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHNhdmVMaWtlKCkge1xuICAgICAgLy8gLi4uc25pcC4uLlxuICAgIH1cbiAgfVxuICBgYGBcblxuICBJbiB0aGlzIGV4YW1wbGUsIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIGBzYXZlTGlrZWAgd2lsbCBiZSBpbnZva2VkLFxuICBpdCB3aWxsICoqbm90KiogaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS4gSW4gb3RoZXJcbiAgd29yZHMsIGl0IHdpbGwgaGF2ZSBubyBgdGhpc2AgY29udGV4dCwgc28gcGxlYXNlIG1ha2Ugc3VyZSB5b3VyIGZ1bmN0aW9uc1xuICBhcmUgYm91bmQgKHZpYSBhbiBhcnJvdyBmdW5jdGlvbiBvciBvdGhlciBtZWFucykgYmVmb3JlIHBhc3NpbmcgaW50byBgb25gIVxuXG4gIEBtZXRob2Qgb25cbiAgQHB1YmxpY1xuKi9cbmNsYXNzIE9uTW9kaWZpZXJNYW5hZ2VyIGltcGxlbWVudHMgSW50ZXJuYWxNb2RpZmllck1hbmFnZXI8T25Nb2RpZmllclN0YXRlIHwgbnVsbCwgb2JqZWN0PiB7XG4gIHB1YmxpYyBTVVBQT1JUU19FVkVOVF9PUFRJT05TOiBib29sZWFuID0gU1VQUE9SVFNfRVZFTlRfT1BUSU9OUztcblxuICBnZXREZWJ1Z05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ29uJztcbiAgfVxuXG4gIGdldCBjb3VudGVycygpOiB7IGFkZHM6IG51bWJlcjsgcmVtb3ZlczogbnVtYmVyIH0ge1xuICAgIHJldHVybiB7IGFkZHMsIHJlbW92ZXMgfTtcbiAgfVxuXG4gIGNyZWF0ZShcbiAgICBfb3duZXI6IE93bmVyLFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQgfCBFbGVtZW50LFxuICAgIF9zdGF0ZTogb2JqZWN0LFxuICAgIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzXG4gICk6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiBuZXcgT25Nb2RpZmllclN0YXRlKGVsZW1lbnQgYXMgRWxlbWVudCwgYXJncyk7XG4gIH1cblxuICBnZXRUYWcoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiBVcGRhdGFibGVUYWcgfCBudWxsIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZS50YWc7XG4gIH1cblxuICBpbnN0YWxsKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhdGUudXBkYXRlRnJvbUFyZ3MoKTtcblxuICAgIGxldCB7IGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgfSA9IHN0YXRlO1xuXG4gICAgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcblxuICAgIHJlZ2lzdGVyRGVzdHJ1Y3RvcihzdGF0ZSwgKCkgPT4gcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKSk7XG5cbiAgICBzdGF0ZS5zaG91bGRVcGRhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIHVwZGF0ZShzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHN0YXNoIHByaW9yIHN0YXRlIGZvciBlbC5yZW1vdmVFdmVudExpc3RlbmVyXG4gICAgbGV0IHsgZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyB9ID0gc3RhdGU7XG5cbiAgICBzdGF0ZS51cGRhdGVGcm9tQXJncygpO1xuXG4gICAgaWYgKCFzdGF0ZS5zaG91bGRVcGRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyB1c2UgcHJpb3Igc3RhdGUgdmFsdWVzIGZvciByZW1vdmFsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcblxuICAgIC8vIHJlYWQgdXBkYXRlZCB2YWx1ZXMgZnJvbSB0aGUgc3RhdGUgb2JqZWN0XG4gICAgYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5lbGVtZW50LCBzdGF0ZS5ldmVudE5hbWUsIHN0YXRlLmNhbGxiYWNrLCBzdGF0ZS5vcHRpb25zKTtcblxuICAgIHN0YXRlLnNob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0RGVzdHJveWFibGUoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIobmV3IE9uTW9kaWZpZXJNYW5hZ2VyKCksIHt9KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGtCQUFULFFBQW1DLHNCQUFuQztBQUNBLFNBQVMsS0FBVCxRQUFzQixjQUF0QjtBQUVBLFNBQVMsMEJBQVQsUUFBMkMsa0JBQTNDO0FBQ0EsU0FBUyxXQUFULFFBQTRCLG9CQUE1QjtBQUNBLFNBQVMsVUFBVCxRQUEyQixrQkFBM0I7QUFDQSxTQUFTLGtCQUFULFFBQWlELG9CQUFqRDtBQUVBLFNBQVMsb0JBQVQsUUFBcUMsZUFBckM7QUFFQSxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLGVBQUQsQ0FBL0M7QUFFQTs7Ozs7Ozs7Ozs7OztBQVlBLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFLO0FBQ25DLE1BQUk7QUFDRixVQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBVCxDQUF1QixLQUF2QixDQUFaO0FBQ0EsUUFBSSxPQUFPLEdBQUcsQ0FBZDtBQUNBLElBQUEsR0FBRyxDQUFDLGdCQUFKLENBQXFCLE9BQXJCLEVBQThCLE1BQU0sT0FBTyxFQUEzQyxFQUErQztBQUFFLE1BQUEsSUFBSSxFQUFFO0FBQVIsS0FBL0M7QUFFQSxRQUFJLEtBQUo7O0FBQ0EsUUFBSSxPQUFPLEtBQVAsS0FBaUIsVUFBckIsRUFBaUM7QUFDL0IsTUFBQSxLQUFLLEdBQUcsSUFBSSxLQUFKLENBQVUsT0FBVixDQUFSO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsTUFBQSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVQsQ0FBcUIsT0FBckIsQ0FBUjtBQUNBLE1BQUEsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsT0FBaEIsRUFBeUIsSUFBekIsRUFBK0IsSUFBL0I7QUFDRDs7QUFFRCxJQUFBLEdBQUcsQ0FBQyxhQUFKLENBQWtCLEtBQWxCO0FBQ0EsSUFBQSxHQUFHLENBQUMsYUFBSixDQUFrQixLQUFsQjtBQUVB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QUNBLFFBQUk7QUFBRSxNQUFBLE9BQUY7QUFBVyxNQUFBLFNBQVg7QUFBc0IsTUFBQSxRQUF0QjtBQUFnQyxNQUFBO0FBQWhDLFFBQTRDLEtBQWhEO0FBRUEsSUFBQSxLQUFLLENBQUMsY0FBTjs7QUFFQSxRQUFJLENBQUMsS0FBSyxDQUFDLFlBQVgsRUFBeUI7QUFDdkI7QUFDRCxLQVppQyxDQWNsQzs7O0FBQ0EsSUFBQSxtQkFBbUIsQ0FBQyxPQUFELEVBQVUsU0FBVixFQUFxQixRQUFyQixFQUErQixPQUEvQixDQUFuQixDQWZrQyxDQWlCbEM7O0FBQ0EsSUFBQSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBUCxFQUFnQixLQUFLLENBQUMsU0FBdEIsRUFBaUMsS0FBSyxDQUFDLFFBQXZDLEVBQWlELEtBQUssQ0FBQyxPQUF2RCxDQUFoQjtBQUVBLElBQUEsS0FBSyxDQUFDLFlBQU4sR0FBcUIsS0FBckI7QUFDRDs7QUFFRCxFQUFBLGNBQWMsQ0FBQyxLQUFELEVBQThCO0FBQzFDLFdBQU8sS0FBUDtBQUNEOztBQXJFb0I7O0FBd0V2QixlQUFlLDBCQUEwQixDQUFDLElBQUksaUJBQUosRUFBRCxFQUEwQixFQUExQixDQUF6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlZ2lzdGVyRGVzdHJ1Y3RvciB9IGZyb20gJ0BnbGltbWVyL2Rlc3Ryb3lhYmxlJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IENhcHR1cmVkQXJndW1lbnRzLCBJbnRlcm5hbE1vZGlmaWVyTWFuYWdlciwgT3duZXIgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnQGdsaW1tZXIvbWFuYWdlcic7XG5pbXBvcnQgeyB2YWx1ZUZvclJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyByZWlmeU5hbWVkIH0gZnJvbSAnQGdsaW1tZXIvcnVudGltZSc7XG5pbXBvcnQgeyBjcmVhdGVVcGRhdGFibGVUYWcsIFVwZGF0YWJsZVRhZyB9IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBTaW1wbGVFbGVtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IGJ1aWxkVW50b3VjaGFibGVUaGlzIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmNvbnN0IHVudG91Y2hhYmxlQ29udGV4dCA9IGJ1aWxkVW50b3VjaGFibGVUaGlzKCdgb25gIG1vZGlmaWVyJyk7XG5cbi8qXG4gIEludGVybmV0IEV4cGxvcmVyIDExIGRvZXMgbm90IHN1cHBvcnQgYG9uY2VgIGFuZCBhbHNvIGRvZXMgbm90IHN1cHBvcnRcbiAgcGFzc2luZyBgZXZlbnRPcHRpb25zYC4gSW4gc29tZSBzaXR1YXRpb25zIGl0IHRoZW4gdGhyb3dzIGEgd2VpcmQgc2NyaXB0XG4gIGVycm9yLCBsaWtlOlxuXG4gIGBgYFxuICBDb3VsZCBub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBkdWUgdG8gZXJyb3IgODAwMjAxMDFcbiAgYGBgXG5cbiAgVGhpcyBmbGFnIGRldGVybWluZXMsIHdoZXRoZXIgYHsgb25jZTogdHJ1ZSB9YCBhbmQgdGh1cyBhbHNvIGV2ZW50IG9wdGlvbnMgaW5cbiAgZ2VuZXJhbCBhcmUgc3VwcG9ydGVkLlxuKi9cbmNvbnN0IFNVUFBPUlRTX0VWRU5UX09QVElPTlMgPSAoKCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGxldCBjb3VudGVyID0gMDtcbiAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBjb3VudGVyKyssIHsgb25jZTogdHJ1ZSB9KTtcblxuICAgIGxldCBldmVudDtcbiAgICBpZiAodHlwZW9mIEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBldmVudCA9IG5ldyBFdmVudCgnY2xpY2snKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBkaXYuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgZGl2LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuXG4gICAgcmV0dXJuIGNvdW50ZXIgPT09IDE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KSgpO1xuXG5leHBvcnQgY2xhc3MgT25Nb2RpZmllclN0YXRlIHtcbiAgcHVibGljIHRhZyA9IGNyZWF0ZVVwZGF0YWJsZVRhZygpO1xuICBwdWJsaWMgZWxlbWVudDogRWxlbWVudDtcbiAgcHVibGljIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzO1xuICBwdWJsaWMgZXZlbnROYW1lITogc3RyaW5nO1xuICBwdWJsaWMgY2FsbGJhY2shOiBFdmVudExpc3RlbmVyO1xuICBwcml2YXRlIHVzZXJQcm92aWRlZENhbGxiYWNrITogRXZlbnRMaXN0ZW5lcjtcbiAgcHVibGljIG9uY2U/OiBib29sZWFuO1xuICBwdWJsaWMgcGFzc2l2ZT86IGJvb2xlYW47XG4gIHB1YmxpYyBjYXB0dXJlPzogYm9vbGVhbjtcbiAgcHVibGljIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucztcbiAgcHVibGljIHNob3VsZFVwZGF0ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudCwgYXJnczogQ2FwdHVyZWRBcmd1bWVudHMpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gIH1cblxuICB1cGRhdGVGcm9tQXJncygpOiB2b2lkIHtcbiAgICBsZXQgeyBhcmdzIH0gPSB0aGlzO1xuXG4gICAgbGV0IHsgb25jZSwgcGFzc2l2ZSwgY2FwdHVyZSB9OiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHJlaWZ5TmFtZWQoYXJncy5uYW1lZCk7XG4gICAgaWYgKG9uY2UgIT09IHRoaXMub25jZSkge1xuICAgICAgdGhpcy5vbmNlID0gb25jZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocGFzc2l2ZSAhPT0gdGhpcy5wYXNzaXZlKSB7XG4gICAgICB0aGlzLnBhc3NpdmUgPSBwYXNzaXZlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjYXB0dXJlICE9PSB0aGlzLmNhcHR1cmUpIHtcbiAgICAgIHRoaXMuY2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zO1xuICAgIGlmIChvbmNlIHx8IHBhc3NpdmUgfHwgY2FwdHVyZSkge1xuICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IHsgb25jZSwgcGFzc2l2ZSwgY2FwdHVyZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgREVCVUcgJiZcbiAgICAgIChhcmdzLnBvc2l0aW9uYWxbMF0gPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVGb3JSZWYoYXJncy5wb3NpdGlvbmFsWzBdKSAhPT0gJ3N0cmluZycpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdZb3UgbXVzdCBwYXNzIGEgdmFsaWQgRE9NIGV2ZW50IG5hbWUgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBgb25gIG1vZGlmaWVyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgZXZlbnROYW1lID0gdmFsdWVGb3JSZWYoYXJncy5wb3NpdGlvbmFsWzBdKSBhcyBzdHJpbmc7XG4gICAgaWYgKGV2ZW50TmFtZSAhPT0gdGhpcy5ldmVudE5hbWUpIHtcbiAgICAgIHRoaXMuZXZlbnROYW1lID0gZXZlbnROYW1lO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGxldCB1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSA9IGFyZ3MucG9zaXRpb25hbFsxXTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgaWYgKGFyZ3MucG9zaXRpb25hbFsxXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyLmApO1xuICAgICAgfVxuXG4gICAgICBsZXQgdmFsdWUgPSB2YWx1ZUZvclJlZih1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXI7IHlvdSBwYXNzZWQgJHtcbiAgICAgICAgICAgIHZhbHVlID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHZhbHVlXG4gICAgICAgICAgfS4gV2hpbGUgcmVuZGVyaW5nOlxcblxcbiR7dXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UuZGVidWdMYWJlbH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHVzZXJQcm92aWRlZENhbGxiYWNrID0gdmFsdWVGb3JSZWYodXNlclByb3ZpZGVkQ2FsbGJhY2tSZWZlcmVuY2UpIGFzIEV2ZW50TGlzdGVuZXI7XG4gICAgaWYgKHVzZXJQcm92aWRlZENhbGxiYWNrICE9PSB0aGlzLnVzZXJQcm92aWRlZENhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVzZXJQcm92aWRlZENhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2s7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKERFQlVHICYmIGFyZ3MucG9zaXRpb25hbC5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW4gb25seSBwYXNzIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoZXZlbnQgbmFtZSBhbmQgY2FsbGJhY2spIHRvIHRoZSBcXGBvblxcYCBtb2RpZmllciwgYnV0IHlvdSBwcm92aWRlZCAke2FyZ3MucG9zaXRpb25hbC5sZW5ndGh9LiBDb25zaWRlciB1c2luZyB0aGUgXFxgZm5cXGAgaGVscGVyIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIFxcYG9uXFxgIGNhbGxiYWNrLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IG5lZWRzQ3VzdG9tQ2FsbGJhY2sgPVxuICAgICAgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMgPT09IGZhbHNlICYmIG9uY2UpIC8qIG5lZWRzIG1hbnVhbCBvbmNlIGltcGxlbWVudGF0aW9uICovIHx8XG4gICAgICAoREVCVUcgJiYgcGFzc2l2ZSk7IC8qIG5lZWRzIHBhc3NpdmUgZW5mb3JjZW1lbnQgKi9cblxuICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZSkge1xuICAgICAgaWYgKG5lZWRzQ3VzdG9tQ2FsbGJhY2spIHtcbiAgICAgICAgbGV0IGNhbGxiYWNrID0gKHRoaXMuY2FsbGJhY2sgPSBmdW5jdGlvbiAodGhpczogRWxlbWVudCwgZXZlbnQpIHtcbiAgICAgICAgICBpZiAoREVCVUcgJiYgcGFzc2l2ZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgWW91IG1hcmtlZCB0aGlzIGxpc3RlbmVyIGFzICdwYXNzaXZlJywgbWVhbmluZyB0aGF0IHlvdSBtdXN0IG5vdCBjYWxsICdldmVudC5wcmV2ZW50RGVmYXVsdCgpJzogXFxuXFxuJHt1c2VyUHJvdmlkZWRDYWxsYmFja31gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyAmJiBvbmNlKSB7XG4gICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdXNlclByb3ZpZGVkQ2FsbGJhY2suY2FsbCh1bnRvdWNoYWJsZUNvbnRleHQsIGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKERFQlVHKSB7XG4gICAgICAgIC8vIHByZXZlbnQgdGhlIGNhbGxiYWNrIGZyb20gYmVpbmcgYm91bmQgdG8gdGhlIGVsZW1lbnRcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrLmJpbmQodW50b3VjaGFibGVDb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxubGV0IGFkZHMgPSAwO1xubGV0IHJlbW92ZXMgPSAwO1xuXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKFxuICBlbGVtZW50OiBFbGVtZW50LFxuICBldmVudE5hbWU6IHN0cmluZyxcbiAgY2FsbGJhY2s6IEV2ZW50TGlzdGVuZXIsXG4gIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9uc1xuKTogdm9pZCB7XG4gIHJlbW92ZXMrKztcblxuICBpZiAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUykge1xuICAgIC8vIHdoZW4gb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCB1c2UgdGhlbSBhY3Jvc3MgdGhlIGJvYXJkXG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmNhcHR1cmUpIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlOlxuICAgIC8vXG4gICAgLy8gYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IHRydWUgfVxuICAgIC8vXG4gICAgLy8gYG9uY2VgIGlzIGhhbmRsZWQgdmlhIGEgY3VzdG9tIGNhbGxiYWNrIHRoYXQgcmVtb3ZlcyBhZnRlciBmaXJzdFxuICAgIC8vIGludm9jYXRpb24gc28gd2Ugb25seSBjYXJlIGFib3V0IGNhcHR1cmUgaGVyZSBhcyBhIGJvb2xlYW5cbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgLy9cbiAgICAvLyAqIHdoZXJlIHRoZXJlIGlzIG5vIG9wdGlvbnNcbiAgICAvLyAqIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiBmYWxzZSB9XG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGV2ZW50TmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogRXZlbnRMaXN0ZW5lcixcbiAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4pOiB2b2lkIHtcbiAgYWRkcysrO1xuXG4gIGlmIChTVVBQT1JUU19FVkVOVF9PUFRJT05TKSB7XG4gICAgLy8gd2hlbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQsIHVzZSB0aGVtIGFjcm9zcyB0aGUgYm9hcmRcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY2FwdHVyZSkge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6XG4gICAgLy9cbiAgICAvLyBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9XG4gICAgLy9cbiAgICAvLyBgb25jZWAgaXMgaGFuZGxlZCB2aWEgYSBjdXN0b20gY2FsbGJhY2sgdGhhdCByZW1vdmVzIGFmdGVyIGZpcnN0XG4gICAgLy8gaW52b2NhdGlvbiBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgY2FwdHVyZSBoZXJlIGFzIGEgYm9vbGVhblxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAvL1xuICAgIC8vICogd2hlcmUgdGhlcmUgaXMgbm8gb3B0aW9uc1xuICAgIC8vICogYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IGZhbHNlIH1cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuLyoqXG4gIFRoZSBge3tvbn19YCBtb2RpZmllciBsZXRzIHlvdSBlYXNpbHkgYWRkIGV2ZW50IGxpc3RlbmVycyAoaXQgdXNlc1xuICBbRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXIpXG4gIGludGVybmFsbHkpLlxuXG4gIEZvciBleGFtcGxlLCBpZiB5b3UnZCBsaWtlIHRvIHJ1biBhIGZ1bmN0aW9uIG9uIHlvdXIgY29tcG9uZW50IHdoZW4gYSBgPGJ1dHRvbj5gXG4gIGluIHRoZSBjb21wb25lbnRzIHRlbXBsYXRlIGlzIGNsaWNrZWQgeW91IG1pZ2h0IGRvIHNvbWV0aGluZyBsaWtlOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5oYnNcbiAgPGJ1dHRvbiB7e29uICdjbGljaycgdGhpcy5zYXZlTGlrZX19Pkxpa2UgdGhpcyBwb3N0ITwvYnV0dG9uPlxuICBgYGBcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuanNcbiAgaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuICBpbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAZW1iZXIvb2JqZWN0JztcblxuICBleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWtlUG9zdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc2F2ZUxpa2UgPSAoKSA9PiB7XG4gICAgICAvLyBzb21lb25lIGxpa2VzIHlvdXIgcG9zdCFcbiAgICAgIC8vIGJldHRlciBzZW5kIGEgcmVxdWVzdCBvZmYgdG8geW91ciBzZXJ2ZXIuLi5cbiAgICB9XG4gIH1cbiAgYGBgXG5cbiAgIyMjIEFyZ3VtZW50c1xuXG4gIGB7e29ufX1gIGFjY2VwdHMgdHdvIHBvc2l0aW9uYWwgYXJndW1lbnRzLCBhbmQgYSBmZXcgbmFtZWQgYXJndW1lbnRzLlxuXG4gIFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmU6XG5cbiAgLSBgZXZlbnRgIC0tIHRoZSBuYW1lIHRvIHVzZSB3aGVuIGNhbGxpbmcgYGFkZEV2ZW50TGlzdGVuZXJgXG4gIC0gYGNhbGxiYWNrYCAtLSB0aGUgZnVuY3Rpb24gdG8gYmUgcGFzc2VkIHRvIGBhZGRFdmVudExpc3RlbmVyYFxuXG4gIFRoZSBuYW1lZCBhcmd1bWVudHMgYXJlOlxuXG4gIC0gY2FwdHVyZSAtLSBhIGB0cnVlYCB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBldmVudHMgb2YgdGhpcyB0eXBlIHdpbGwgYmUgZGlzcGF0Y2hlZFxuICAgIHRvIHRoZSByZWdpc3RlcmVkIGxpc3RlbmVyIGJlZm9yZSBiZWluZyBkaXNwYXRjaGVkIHRvIGFueSBFdmVudFRhcmdldCBiZW5lYXRoIGl0XG4gICAgaW4gdGhlIERPTSB0cmVlLlxuICAtIG9uY2UgLS0gaW5kaWNhdGVzIHRoYXQgdGhlIGxpc3RlbmVyIHNob3VsZCBiZSBpbnZva2VkIGF0IG1vc3Qgb25jZSBhZnRlciBiZWluZ1xuICAgIGFkZGVkLiBJZiB0cnVlLCB0aGUgbGlzdGVuZXIgd291bGQgYmUgYXV0b21hdGljYWxseSByZW1vdmVkIHdoZW4gaW52b2tlZC5cbiAgLSBwYXNzaXZlIC0tIGlmIGB0cnVlYCwgaW5kaWNhdGVzIHRoYXQgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSBsaXN0ZW5lciB3aWxsIG5ldmVyXG4gICAgY2FsbCBwcmV2ZW50RGVmYXVsdCgpLiBJZiBhIHBhc3NpdmUgbGlzdGVuZXIgZG9lcyBjYWxsIHByZXZlbnREZWZhdWx0KCksIHRoZSB1c2VyXG4gICAgYWdlbnQgd2lsbCBkbyBub3RoaW5nIG90aGVyIHRoYW4gZ2VuZXJhdGUgYSBjb25zb2xlIHdhcm5pbmcuIFNlZVxuICAgIFtJbXByb3Zpbmcgc2Nyb2xsaW5nIHBlcmZvcm1hbmNlIHdpdGggcGFzc2l2ZSBsaXN0ZW5lcnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyI0ltcHJvdmluZ19zY3JvbGxpbmdfcGVyZm9ybWFuY2Vfd2l0aF9wYXNzaXZlX2xpc3RlbmVycylcbiAgICB0byBsZWFybiBtb3JlLlxuXG4gIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBwYXNzZWQgdG8gYHt7b259fWAgd2lsbCByZWNlaXZlIGFueSBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkXG4gIHRvIHRoZSBldmVudCBoYW5kbGVyLiBNb3N0IGNvbW1vbmx5IHRoaXMgd291bGQgYmUgdGhlIGBldmVudGAgaXRzZWxmLlxuXG4gIElmIHlvdSB3b3VsZCBsaWtlIHRvIHBhc3MgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIHlvdSBzaG91bGQgdXNlXG4gIHRoZSBge3tmbn19YCBoZWxwZXIuXG5cbiAgRm9yIGV4YW1wbGUsIGluIG91ciBleGFtcGxlIGNhc2UgYWJvdmUgaWYgeW91J2QgbGlrZSB0byBwYXNzIGluIHRoZSBwb3N0IHRoYXRcbiAgd2FzIGJlaW5nIGxpa2VkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIHlvdSBjb3VsZCBkbyBzb21ldGhpbmcgbGlrZTpcblxuICBgYGBhcHAvY29tcG9uZW50cy9saWtlLXBvc3QuaGJzXG4gIDxidXR0b24ge3tvbiAnY2xpY2snIChmbiB0aGlzLnNhdmVMaWtlIEBwb3N0KX19Pkxpa2UgdGhpcyBwb3N0ITwvYnV0dG9uPlxuICBgYGBcblxuICBJbiB0aGlzIGNhc2UsIHRoZSBgc2F2ZUxpa2VgIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSB0d28gYXJndW1lbnRzOiB0aGUgY2xpY2sgZXZlbnRcbiAgYW5kIHRoZSB2YWx1ZSBvZiBgQHBvc3RgLlxuXG4gICMjIyBGdW5jdGlvbiBDb250ZXh0XG5cbiAgSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHdlIHVzZWQgYW4gYXJyb3cgZnVuY3Rpb24gdG8gZW5zdXJlIHRoYXQgYGxpa2VQb3N0YCBpc1xuICBwcm9wZXJseSBib3VuZCB0byB0aGUgYGl0ZW1zLWxpc3RgLCBidXQgbGV0J3MgZXhwbG9yZSB3aGF0IGhhcHBlbnMgaWYgd2VcbiAgbGVmdCBvdXQgdGhlIGFycm93IGZ1bmN0aW9uOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5qc1xuICBpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5cbiAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlrZVBvc3RDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHNhdmVMaWtlKCkge1xuICAgICAgLy8gLi4uc25pcC4uLlxuICAgIH1cbiAgfVxuICBgYGBcblxuICBJbiB0aGlzIGV4YW1wbGUsIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIGBzYXZlTGlrZWAgd2lsbCBiZSBpbnZva2VkLFxuICBpdCB3aWxsICoqbm90KiogaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS4gSW4gb3RoZXJcbiAgd29yZHMsIGl0IHdpbGwgaGF2ZSBubyBgdGhpc2AgY29udGV4dCwgc28gcGxlYXNlIG1ha2Ugc3VyZSB5b3VyIGZ1bmN0aW9uc1xuICBhcmUgYm91bmQgKHZpYSBhbiBhcnJvdyBmdW5jdGlvbiBvciBvdGhlciBtZWFucykgYmVmb3JlIHBhc3NpbmcgaW50byBgb25gIVxuXG4gIEBtZXRob2Qgb25cbiAgQHB1YmxpY1xuKi9cbmNsYXNzIE9uTW9kaWZpZXJNYW5hZ2VyIGltcGxlbWVudHMgSW50ZXJuYWxNb2RpZmllck1hbmFnZXI8T25Nb2RpZmllclN0YXRlIHwgbnVsbCwgb2JqZWN0PiB7XG4gIHB1YmxpYyBTVVBQT1JUU19FVkVOVF9PUFRJT05TOiBib29sZWFuID0gU1VQUE9SVFNfRVZFTlRfT1BUSU9OUztcblxuICBnZXREZWJ1Z05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ29uJztcbiAgfVxuXG4gIGdldCBjb3VudGVycygpOiB7IGFkZHM6IG51bWJlcjsgcmVtb3ZlczogbnVtYmVyIH0ge1xuICAgIHJldHVybiB7IGFkZHMsIHJlbW92ZXMgfTtcbiAgfVxuXG4gIGNyZWF0ZShcbiAgICBfb3duZXI6IE93bmVyLFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQgfCBFbGVtZW50LFxuICAgIF9zdGF0ZTogb2JqZWN0LFxuICAgIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzXG4gICk6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiBuZXcgT25Nb2RpZmllclN0YXRlKGVsZW1lbnQgYXMgRWxlbWVudCwgYXJncyk7XG4gIH1cblxuICBnZXRUYWcoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiBVcGRhdGFibGVUYWcgfCBudWxsIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZS50YWc7XG4gIH1cblxuICBpbnN0YWxsKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhdGUudXBkYXRlRnJvbUFyZ3MoKTtcblxuICAgIGxldCB7IGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgfSA9IHN0YXRlO1xuXG4gICAgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcblxuICAgIHJlZ2lzdGVyRGVzdHJ1Y3RvcihzdGF0ZSwgKCkgPT4gcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKSk7XG5cbiAgICBzdGF0ZS5zaG91bGRVcGRhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIHVwZGF0ZShzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHN0YXNoIHByaW9yIHN0YXRlIGZvciBlbC5yZW1vdmVFdmVudExpc3RlbmVyXG4gICAgbGV0IHsgZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyB9ID0gc3RhdGU7XG5cbiAgICBzdGF0ZS51cGRhdGVGcm9tQXJncygpO1xuXG4gICAgaWYgKCFzdGF0ZS5zaG91bGRVcGRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyB1c2UgcHJpb3Igc3RhdGUgdmFsdWVzIGZvciByZW1vdmFsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcblxuICAgIC8vIHJlYWQgdXBkYXRlZCB2YWx1ZXMgZnJvbSB0aGUgc3RhdGUgb2JqZWN0XG4gICAgYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5lbGVtZW50LCBzdGF0ZS5ldmVudE5hbWUsIHN0YXRlLmNhbGxiYWNrLCBzdGF0ZS5vcHRpb25zKTtcblxuICAgIHN0YXRlLnNob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0RGVzdHJveWFibGUoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIobmV3IE9uTW9kaWZpZXJNYW5hZ2VyKCksIHt9KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -118,3 +118,3 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

if (typeof value !== 'function') {
throw new Error("You must pass a function as the second argument to the `on` modifier, you passed " + (value === null ? 'null' : typeof value) + ". While rendering:\n\n" + userProvidedCallbackReference.debugLabel);
throw new Error("You must pass a function as the second argument to the `on` modifier; you passed " + (value === null ? 'null' : typeof value) + ". While rendering:\n\n" + userProvidedCallbackReference.debugLabel);
}

@@ -382,2 +382,2 @@ }

export default setInternalModifierManager(new OnModifierManager(), {});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBQSxrQkFBQSxRQUFBLHNCQUFBO0FBQ0EsU0FBQSxLQUFBLFFBQUEsY0FBQTtBQUVBLFNBQUEsMEJBQUEsUUFBQSxrQkFBQTtBQUNBLFNBQUEsV0FBQSxRQUFBLG9CQUFBO0FBQ0EsU0FBQSxVQUFBLFFBQUEsa0JBQUE7QUFDQSxTQUFBLGtCQUFBLFFBQUEsb0JBQUE7QUFFQSxTQUFBLG9CQUFBLFFBQUEsZUFBQTtBQUVBLElBQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQS9DLGVBQStDLENBQS9DO0FBRUE7Ozs7Ozs7Ozs7Ozs7QUFZQSxJQUFNLHNCQUFzQixHQUFJLFlBQUs7QUFDbkMsTUFBSTtBQUNGLFFBQU0sR0FBRyxHQUFHLFFBQVEsQ0FBUixhQUFBLENBQVosS0FBWSxDQUFaO0FBQ0EsUUFBSSxPQUFPLEdBQVgsQ0FBQTtBQUNBLElBQUEsR0FBRyxDQUFILGdCQUFBLENBQUEsT0FBQSxFQUE4QjtBQUFBLGFBQU0sT0FBcEMsRUFBOEI7QUFBQSxLQUE5QixFQUErQztBQUFFLE1BQUEsSUFBSSxFQUFFO0FBQVIsS0FBL0M7QUFFQSxRQUFBLEtBQUE7O0FBQ0EsUUFBSSxPQUFBLEtBQUEsS0FBSixVQUFBLEVBQWlDO0FBQy9CLE1BQUEsS0FBSyxHQUFHLElBQUEsS0FBQSxDQUFSLE9BQVEsQ0FBUjtBQURGLEtBQUEsTUFFTztBQUNMLE1BQUEsS0FBSyxHQUFHLFFBQVEsQ0FBUixXQUFBLENBQVIsT0FBUSxDQUFSO0FBQ0EsTUFBQSxLQUFLLENBQUwsU0FBQSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsSUFBQTtBQUNEOztBQUVELElBQUEsR0FBRyxDQUFILGFBQUEsQ0FBQSxLQUFBO0FBQ0EsSUFBQSxHQUFHLENBQUgsYUFBQSxDQUFBLEtBQUE7QUFFQSxXQUFPLE9BQU8sS0FBZCxDQUFBO0FBaEJGLEdBQUEsQ0FpQkUsT0FBQSxLQUFBLEVBQWM7QUFDZCxXQUFBLEtBQUE7QUFDRDtBQXBCSCxDQUErQixFQUEvQjs7QUF1QkEsV0FBTSxlQUFOO0FBYUUsMkJBQUEsT0FBQSxFQUFBLElBQUEsRUFBcUQ7QUFaOUMsU0FBQSxHQUFBLEdBQU0sa0JBQU4sRUFBQTtBQVVBLFNBQUEsWUFBQSxHQUFBLElBQUE7QUFHTCxTQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0EsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNEOztBQWhCSDs7QUFBQSxTQWtCRSxjQWxCRixHQWtCRSwwQkFBYztBQUFBLFFBQ04sSUFETSxHQUNaLElBRFksQ0FDTixJQURNOztBQUFBLHNCQUc4QyxVQUFVLENBQUMsSUFBSSxDQUF6RSxLQUFvRSxDQUh4RDtBQUFBLFFBR1IsSUFIUSxlQUdSLElBSFE7QUFBQSxRQUdSLE9BSFEsZUFHUixPQUhRO0FBQUEsUUFHUyxPQUhULGVBR1MsT0FIVDs7QUFJWixRQUFJLElBQUksS0FBSyxLQUFiLElBQUEsRUFBd0I7QUFDdEIsV0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLFdBQUEsWUFBQSxHQUFBLElBQUE7QUFDRDs7QUFFRCxRQUFJLE9BQU8sS0FBSyxLQUFoQixPQUFBLEVBQThCO0FBQzVCLFdBQUEsT0FBQSxHQUFBLE9BQUE7QUFDQSxXQUFBLFlBQUEsR0FBQSxJQUFBO0FBQ0Q7O0FBRUQsUUFBSSxPQUFPLEtBQUssS0FBaEIsT0FBQSxFQUE4QjtBQUM1QixXQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0EsV0FBQSxZQUFBLEdBQUEsSUFBQTtBQUNEOztBQUVELFFBQUEsT0FBQTs7QUFDQSxRQUFJLElBQUksSUFBSixPQUFBLElBQUosT0FBQSxFQUFnQztBQUM5QixNQUFBLE9BQU8sR0FBRyxLQUFBLE9BQUEsR0FBZTtBQUFFLFFBQUEsSUFBRixFQUFFLElBQUY7QUFBUSxRQUFBLE9BQVIsRUFBUSxPQUFSO0FBQWlCLFFBQUEsT0FBQSxFQUFBO0FBQWpCLE9BQXpCO0FBREYsS0FBQSxNQUVPO0FBQ0wsV0FBQSxPQUFBLEdBQUEsU0FBQTtBQUNEOztBQUVELFFBQ0UsS0FBSyxLQUNKLElBQUksQ0FBSixVQUFBLENBQUEsQ0FBQSxNQUFBLFNBQUEsSUFBb0MsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFKLFVBQUEsQ0FBbkIsQ0FBbUIsQ0FBRCxDQUFsQixLQUZ2QyxRQUNPLENBRFAsRUFHRTtBQUNBLFlBQU0sSUFBQSxLQUFBLENBQU4saUZBQU0sQ0FBTjtBQUdEOztBQUVELFFBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUosVUFBQSxDQUE1QixDQUE0QixDQUFELENBQTNCOztBQUNBLFFBQUksU0FBUyxLQUFLLEtBQWxCLFNBQUEsRUFBa0M7QUFDaEMsV0FBQSxTQUFBLEdBQUEsU0FBQTtBQUNBLFdBQUEsWUFBQSxHQUFBLElBQUE7QUFDRDs7QUFFRCxRQUFJLDZCQUE2QixHQUFHLElBQUksQ0FBSixVQUFBLENBQXBDLENBQW9DLENBQXBDOztBQUVBLFFBQUEsS0FBQSxFQUFXO0FBQ1QsVUFBSSxJQUFJLENBQUosVUFBQSxDQUFBLENBQUEsTUFBSixTQUFBLEVBQXNDO0FBQ3BDLGNBQU0sSUFBTixLQUFNLHlFQUFOO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLLEdBQUcsV0FBVyxDQUF2Qiw2QkFBdUIsQ0FBdkI7O0FBRUEsVUFBSSxPQUFBLEtBQUEsS0FBSixVQUFBLEVBQWlDO0FBQy9CLGNBQU0sSUFBQSxLQUFBLHdGQUVGLEtBQUssS0FBTCxJQUFBLEdBQUEsTUFBQSxHQUEwQixPQUFPLEtBRi9CLCtCQUdxQiw2QkFBNkIsQ0FIeEQsVUFBTSxDQUFOO0FBS0Q7QUFDRjs7QUFFRCxRQUFJLG9CQUFvQixHQUFHLFdBQVcsQ0FBdEMsNkJBQXNDLENBQXRDOztBQUNBLFFBQUksb0JBQW9CLEtBQUssS0FBN0Isb0JBQUEsRUFBd0Q7QUFDdEQsV0FBQSxvQkFBQSxHQUFBLG9CQUFBO0FBQ0EsV0FBQSxZQUFBLEdBQUEsSUFBQTtBQUNEOztBQUVELFFBQUksS0FBSyxJQUFJLElBQUksQ0FBSixVQUFBLENBQUEsTUFBQSxLQUFiLENBQUEsRUFBMkM7QUFDekMsWUFBTSxJQUFBLEtBQUEsa0hBQzZHLElBQUksQ0FBSixVQUFBLENBRG5ILE1BQU0sNEZBQU47QUFHRDs7QUFFRCxRQUFJLG1CQUFtQixHQUNwQixzQkFBc0IsS0FBdEIsS0FBQSxJQUFELElBQUM7QUFBMEM7QUFDMUMsSUFBQSxLQUFLLElBRlIsT0FBQTtBQUVzQjs7QUFFdEIsUUFBSSxLQUFKLFlBQUEsRUFBdUI7QUFDckIsVUFBQSxtQkFBQSxFQUF5QjtBQUN2QixZQUFJLFFBQVEsR0FBSSxLQUFBLFFBQUEsR0FBZ0IsVUFBQSxLQUFBLEVBQThCO0FBQzVELGNBQUksS0FBSyxJQUFULE9BQUEsRUFBc0I7QUFDcEIsWUFBQSxLQUFLLENBQUwsY0FBQSxHQUF1QixZQUFLO0FBQzFCLG9CQUFNLElBQUEsS0FBQSwwR0FBTixvQkFBTSxDQUFOO0FBREYsYUFBQTtBQUtEOztBQUVELGNBQUksQ0FBQSxzQkFBQSxJQUFKLElBQUEsRUFBcUM7QUFDbkMsWUFBQSxtQkFBbUIsQ0FBQSxJQUFBLEVBQUEsU0FBQSxFQUFBLFFBQUEsRUFBbkIsT0FBbUIsQ0FBbkI7QUFDRDs7QUFDRCxpQkFBTyxvQkFBb0IsQ0FBcEIsSUFBQSxDQUFBLGtCQUFBLEVBQVAsS0FBTyxDQUFQO0FBWkYsU0FBQTtBQURGLE9BQUEsTUFlTyxJQUFBLEtBQUEsRUFBVztBQUNoQjtBQUNBLGFBQUEsUUFBQSxHQUFnQixvQkFBb0IsQ0FBcEIsSUFBQSxDQUFoQixrQkFBZ0IsQ0FBaEI7QUFGSyxPQUFBLE1BR0E7QUFDTCxhQUFBLFFBQUEsR0FBQSxvQkFBQTtBQUNEO0FBQ0Y7QUFDRixHQXBISDs7QUFBQTtBQUFBO0FBdUhBLElBQUksSUFBSSxHQUFSLENBQUE7QUFDQSxJQUFJLE9BQU8sR0FBWCxDQUFBOztBQUVBLFNBQUEsbUJBQUEsQ0FBQSxPQUFBLEVBQUEsU0FBQSxFQUFBLFFBQUEsRUFBQSxPQUFBLEVBSW1DO0FBRWpDLEVBQUEsT0FBTzs7QUFFUCxNQUFBLHNCQUFBLEVBQTRCO0FBQzFCO0FBQ0EsSUFBQSxPQUFPLENBQVAsbUJBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUE7QUFGRixHQUFBLE1BR08sSUFBSSxPQUFPLEtBQVAsU0FBQSxJQUF5QixPQUFPLENBQXBDLE9BQUEsRUFBOEM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBQSxPQUFPLENBQVAsbUJBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLElBQUE7QUFQSyxHQUFBLE1BUUE7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUEsT0FBTyxDQUFQLG1CQUFBLENBQUEsU0FBQSxFQUFBLFFBQUE7QUFDRDtBQUNGOztBQUVELFNBQUEsZ0JBQUEsQ0FBQSxPQUFBLEVBQUEsU0FBQSxFQUFBLFFBQUEsRUFBQSxPQUFBLEVBSW1DO0FBRWpDLEVBQUEsSUFBSTs7QUFFSixNQUFBLHNCQUFBLEVBQTRCO0FBQzFCO0FBQ0EsSUFBQSxPQUFPLENBQVAsZ0JBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUE7QUFGRixHQUFBLE1BR08sSUFBSSxPQUFPLEtBQVAsU0FBQSxJQUF5QixPQUFPLENBQXBDLE9BQUEsRUFBOEM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBQSxPQUFPLENBQVAsZ0JBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLElBQUE7QUFQSyxHQUFBLE1BUUE7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUEsT0FBTyxDQUFQLGdCQUFBLENBQUEsU0FBQSxFQUFBLFFBQUE7QUFDRDtBQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFzRkEsaUI7QUFBQSwrQkFBQTtBQUNTLFNBQUEsc0JBQUEsR0FBQSxzQkFBQTtBQXFFUjs7OztVQW5FQyxZLEdBQUEsd0JBQVk7QUFDVixXQUFBLElBQUE7QUFDRCxHOztVQU1ELE0sR0FBQSxnQkFBTSxNQUFOLEVBQU0sT0FBTixFQUFNLE1BQU4sRUFBTSxJQUFOLEVBSXlCO0FBRXZCLFdBQU8sSUFBQSxlQUFBLENBQUEsT0FBQSxFQUFQLElBQU8sQ0FBUDtBQUNELEc7O1VBRUQsTSxHQUFBLGdCQUFNLEtBQU4sRUFBb0M7QUFDbEMsUUFBSSxLQUFLLEtBQVQsSUFBQSxFQUFvQjtBQUNsQixhQUFBLElBQUE7QUFDRDs7QUFFRCxXQUFPLEtBQUssQ0FBWixHQUFBO0FBQ0QsRzs7VUFFRCxPLEdBQUEsaUJBQU8sS0FBUCxFQUFxQztBQUNuQyxRQUFJLEtBQUssS0FBVCxJQUFBLEVBQW9CO0FBQ2xCO0FBQ0Q7O0FBRUQsSUFBQSxLQUFLLENBQUwsY0FBQTtBQUxtQyxRQU8vQixPQVArQixHQU9uQyxLQVBtQyxDQU8vQixPQVArQjtBQUFBLFFBTy9CLFNBUCtCLEdBT25DLEtBUG1DLENBTy9CLFNBUCtCO0FBQUEsUUFPL0IsUUFQK0IsR0FPbkMsS0FQbUMsQ0FPL0IsUUFQK0I7QUFBQSxRQU9DLE9BUEQsR0FPbkMsS0FQbUMsQ0FPQyxPQVBEO0FBU25DLElBQUEsZ0JBQWdCLENBQUEsT0FBQSxFQUFBLFNBQUEsRUFBQSxRQUFBLEVBQWhCLE9BQWdCLENBQWhCO0FBRUEsSUFBQSxrQkFBa0IsQ0FBQSxLQUFBLEVBQVE7QUFBQSxhQUFNLG1CQUFtQixDQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsUUFBQSxFQUFuRCxPQUFtRCxDQUF6QjtBQUFBLEtBQVIsQ0FBbEI7QUFFQSxJQUFBLEtBQUssQ0FBTCxZQUFBLEdBQUEsS0FBQTtBQUNELEc7O1VBRUQsTSxHQUFBLGdCQUFNLEtBQU4sRUFBb0M7QUFDbEMsUUFBSSxLQUFLLEtBQVQsSUFBQSxFQUFvQjtBQUNsQjtBQUZnQyxLQUFBLENBS2xDOzs7QUFMa0MsUUFNOUIsT0FOOEIsR0FNbEMsS0FOa0MsQ0FNOUIsT0FOOEI7QUFBQSxRQU05QixTQU44QixHQU1sQyxLQU5rQyxDQU05QixTQU44QjtBQUFBLFFBTTlCLFFBTjhCLEdBTWxDLEtBTmtDLENBTTlCLFFBTjhCO0FBQUEsUUFNRSxPQU5GLEdBTWxDLEtBTmtDLENBTUUsT0FORjtBQVFsQyxJQUFBLEtBQUssQ0FBTCxjQUFBOztBQUVBLFFBQUksQ0FBQyxLQUFLLENBQVYsWUFBQSxFQUF5QjtBQUN2QjtBQVhnQyxLQUFBLENBY2xDOzs7QUFDQSxJQUFBLG1CQUFtQixDQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsUUFBQSxFQWZlLE9BZWYsQ0FBbkIsQ0Fma0MsQ0FpQmxDOztBQUNBLElBQUEsZ0JBQWdCLENBQUMsS0FBSyxDQUFOLE9BQUEsRUFBZ0IsS0FBSyxDQUFyQixTQUFBLEVBQWlDLEtBQUssQ0FBdEMsUUFBQSxFQUFpRCxLQUFLLENBQXRFLE9BQWdCLENBQWhCO0FBRUEsSUFBQSxLQUFLLENBQUwsWUFBQSxHQUFBLEtBQUE7QUFDRCxHOztVQUVELGMsR0FBQSx3QkFBYyxLQUFkLEVBQTRDO0FBQzFDLFdBQUEsS0FBQTtBQUNELEc7Ozs7d0JBOURXO0FBQ1YsYUFBTztBQUFFLFFBQUEsSUFBRixFQUFFLElBQUY7QUFBUSxRQUFBLE9BQUEsRUFBQTtBQUFSLE9BQVA7QUFDRDs7Ozs7O0FBK0RILGVBQWUsMEJBQTBCLENBQUMsSUFBRCxpQkFBQyxFQUFELEVBQXpDLEVBQXlDLENBQXpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJEZXN0cnVjdG9yIH0gZnJvbSAnQGdsaW1tZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgQ2FwdHVyZWRBcmd1bWVudHMsIEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLCBPd25lciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgc2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIgfSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IHJlaWZ5TmFtZWQgfSBmcm9tICdAZ2xpbW1lci9ydW50aW1lJztcbmltcG9ydCB7IGNyZWF0ZVVwZGF0YWJsZVRhZywgVXBkYXRhYmxlVGFnIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcbmltcG9ydCB7IFNpbXBsZUVsZW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYnVpbGRVbnRvdWNoYWJsZVRoaXMgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuY29uc3QgdW50b3VjaGFibGVDb250ZXh0ID0gYnVpbGRVbnRvdWNoYWJsZVRoaXMoJ2BvbmAgbW9kaWZpZXInKTtcblxuLypcbiAgSW50ZXJuZXQgRXhwbG9yZXIgMTEgZG9lcyBub3Qgc3VwcG9ydCBgb25jZWAgYW5kIGFsc28gZG9lcyBub3Qgc3VwcG9ydFxuICBwYXNzaW5nIGBldmVudE9wdGlvbnNgLiBJbiBzb21lIHNpdHVhdGlvbnMgaXQgdGhlbiB0aHJvd3MgYSB3ZWlyZCBzY3JpcHRcbiAgZXJyb3IsIGxpa2U6XG5cbiAgYGBgXG4gIENvdWxkIG5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGR1ZSB0byBlcnJvciA4MDAyMDEwMVxuICBgYGBcblxuICBUaGlzIGZsYWcgZGV0ZXJtaW5lcywgd2hldGhlciBgeyBvbmNlOiB0cnVlIH1gIGFuZCB0aHVzIGFsc28gZXZlbnQgb3B0aW9ucyBpblxuICBnZW5lcmFsIGFyZSBzdXBwb3J0ZWQuXG4qL1xuY29uc3QgU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9ICgoKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGNvdW50ZXIrKywgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgbGV0IGV2ZW50O1xuICAgIGlmICh0eXBlb2YgRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuICAgIH1cblxuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICBkaXYuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cbiAgICByZXR1cm4gY291bnRlciA9PT0gMTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBPbk1vZGlmaWVyU3RhdGUge1xuICBwdWJsaWMgdGFnID0gY3JlYXRlVXBkYXRhYmxlVGFnKCk7XG4gIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50O1xuICBwdWJsaWMgYXJnczogQ2FwdHVyZWRBcmd1bWVudHM7XG4gIHB1YmxpYyBldmVudE5hbWUhOiBzdHJpbmc7XG4gIHB1YmxpYyBjYWxsYmFjayE6IEV2ZW50TGlzdGVuZXI7XG4gIHByaXZhdGUgdXNlclByb3ZpZGVkQ2FsbGJhY2shOiBFdmVudExpc3RlbmVyO1xuICBwdWJsaWMgb25jZT86IGJvb2xlYW47XG4gIHB1YmxpYyBwYXNzaXZlPzogYm9vbGVhbjtcbiAgcHVibGljIGNhcHR1cmU/OiBib29sZWFuO1xuICBwdWJsaWMgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zO1xuICBwdWJsaWMgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50LCBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50cykge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIHVwZGF0ZUZyb21BcmdzKCk6IHZvaWQge1xuICAgIGxldCB7IGFyZ3MgfSA9IHRoaXM7XG5cbiAgICBsZXQgeyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH06IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0gcmVpZnlOYW1lZChhcmdzLm5hbWVkKTtcbiAgICBpZiAob25jZSAhPT0gdGhpcy5vbmNlKSB7XG4gICAgICB0aGlzLm9uY2UgPSBvbmNlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwYXNzaXZlICE9PSB0aGlzLnBhc3NpdmUpIHtcbiAgICAgIHRoaXMucGFzc2l2ZSA9IHBhc3NpdmU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNhcHR1cmUgIT09IHRoaXMuY2FwdHVyZSkge1xuICAgICAgdGhpcy5jYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG4gICAgaWYgKG9uY2UgfHwgcGFzc2l2ZSB8fCBjYXB0dXJlKSB7XG4gICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zID0geyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgKGFyZ3MucG9zaXRpb25hbFswXSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pICE9PSAnc3RyaW5nJylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHBhc3MgYSB2YWxpZCBET00gZXZlbnQgbmFtZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGBvbmAgbW9kaWZpZXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBldmVudE5hbWUgPSB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pIGFzIHN0cmluZztcbiAgICBpZiAoZXZlbnROYW1lICE9PSB0aGlzLmV2ZW50TmFtZSkge1xuICAgICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5hbWU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlID0gYXJncy5wb3NpdGlvbmFsWzFdO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBpZiAoYXJncy5wb3NpdGlvbmFsWzFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXIuYCk7XG4gICAgICB9XG5cbiAgICAgIGxldCB2YWx1ZSA9IHZhbHVlRm9yUmVmKHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBcXGBvblxcYCBtb2RpZmllciwgeW91IHBhc3NlZCAke1xuICAgICAgICAgICAgdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgdmFsdWVcbiAgICAgICAgICB9LiBXaGlsZSByZW5kZXJpbmc6XFxuXFxuJHt1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZS5kZWJ1Z0xhYmVsfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB2YWx1ZUZvclJlZih1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSkgYXMgRXZlbnRMaXN0ZW5lcjtcbiAgICBpZiAodXNlclByb3ZpZGVkQ2FsbGJhY2sgIT09IHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjaztcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoREVCVUcgJiYgYXJncy5wb3NpdGlvbmFsLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbiBvbmx5IHBhc3MgdHdvIHBvc2l0aW9uYWwgYXJndW1lbnRzIChldmVudCBuYW1lIGFuZCBjYWxsYmFjaykgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyLCBidXQgeW91IHByb3ZpZGVkICR7YXJncy5wb3NpdGlvbmFsLmxlbmd0aH0uIENvbnNpZGVyIHVzaW5nIHRoZSBcXGBmblxcYCBoZWxwZXIgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgXFxgb25cXGAgY2FsbGJhY2suYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbmVlZHNDdXN0b21DYWxsYmFjayA9XG4gICAgICAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9PT0gZmFsc2UgJiYgb25jZSkgLyogbmVlZHMgbWFudWFsIG9uY2UgaW1wbGVtZW50YXRpb24gKi8gfHxcbiAgICAgIChERUJVRyAmJiBwYXNzaXZlKTsgLyogbmVlZHMgcGFzc2l2ZSBlbmZvcmNlbWVudCAqL1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlKSB7XG4gICAgICBpZiAobmVlZHNDdXN0b21DYWxsYmFjaykge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSAodGhpcy5jYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBFbGVtZW50LCBldmVudCkge1xuICAgICAgICAgIGlmIChERUJVRyAmJiBwYXNzaXZlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBZb3UgbWFya2VkIHRoaXMgbGlzdGVuZXIgYXMgJ3Bhc3NpdmUnLCBtZWFuaW5nIHRoYXQgeW91IG11c3Qgbm90IGNhbGwgJ2V2ZW50LnByZXZlbnREZWZhdWx0KCknOiBcXG5cXG4ke3VzZXJQcm92aWRlZENhbGxiYWNrfWBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFTVVBQT1JUU19FVkVOVF9PUFRJT05TICYmIG9uY2UpIHtcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1c2VyUHJvdmlkZWRDYWxsYmFjay5jYWxsKHVudG91Y2hhYmxlQ29udGV4dCwgZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoREVCVUcpIHtcbiAgICAgICAgLy8gcHJldmVudCB0aGUgY2FsbGJhY2sgZnJvbSBiZWluZyBib3VuZCB0byB0aGUgZWxlbWVudFxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2suYmluZCh1bnRvdWNoYWJsZUNvbnRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5sZXQgYWRkcyA9IDA7XG5sZXQgcmVtb3ZlcyA9IDA7XG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGV2ZW50TmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogRXZlbnRMaXN0ZW5lcixcbiAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4pOiB2b2lkIHtcbiAgcmVtb3ZlcysrO1xuXG4gIGlmIChTVVBQT1JUU19FVkVOVF9PUFRJT05TKSB7XG4gICAgLy8gd2hlbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQsIHVzZSB0aGVtIGFjcm9zcyB0aGUgYm9hcmRcbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY2FwdHVyZSkge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6XG4gICAgLy9cbiAgICAvLyBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9XG4gICAgLy9cbiAgICAvLyBgb25jZWAgaXMgaGFuZGxlZCB2aWEgYSBjdXN0b20gY2FsbGJhY2sgdGhhdCByZW1vdmVzIGFmdGVyIGZpcnN0XG4gICAgLy8gaW52b2NhdGlvbiBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgY2FwdHVyZSBoZXJlIGFzIGEgYm9vbGVhblxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAvL1xuICAgIC8vICogd2hlcmUgdGhlcmUgaXMgbm8gb3B0aW9uc1xuICAgIC8vICogYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IGZhbHNlIH1cbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihcbiAgZWxlbWVudDogRWxlbWVudCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiBFdmVudExpc3RlbmVyLFxuICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbik6IHZvaWQge1xuICBhZGRzKys7XG5cbiAgaWYgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMpIHtcbiAgICAvLyB3aGVuIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCwgdXNlIHRoZW0gYWNyb3NzIHRoZSBib2FyZFxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5jYXB0dXJlKSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZTpcbiAgICAvL1xuICAgIC8vIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH1cbiAgICAvL1xuICAgIC8vIGBvbmNlYCBpcyBoYW5kbGVkIHZpYSBhIGN1c3RvbSBjYWxsYmFjayB0aGF0IHJlbW92ZXMgYWZ0ZXIgZmlyc3RcbiAgICAvLyBpbnZvY2F0aW9uIHNvIHdlIG9ubHkgY2FyZSBhYm91dCBjYXB0dXJlIGhlcmUgYXMgYSBib29sZWFuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgIC8vXG4gICAgLy8gKiB3aGVyZSB0aGVyZSBpcyBubyBvcHRpb25zXG4gICAgLy8gKiBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogZmFsc2UgfVxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAgVGhlIGB7e29ufX1gIG1vZGlmaWVyIGxldHMgeW91IGVhc2lseSBhZGQgZXZlbnQgbGlzdGVuZXJzIChpdCB1c2VzXG4gIFtFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lcilcbiAgaW50ZXJuYWxseSkuXG5cbiAgRm9yIGV4YW1wbGUsIGlmIHlvdSdkIGxpa2UgdG8gcnVuIGEgZnVuY3Rpb24gb24geW91ciBjb21wb25lbnQgd2hlbiBhIGA8YnV0dG9uPmBcbiAgaW4gdGhlIGNvbXBvbmVudHMgdGVtcGxhdGUgaXMgY2xpY2tlZCB5b3UgbWlnaHQgZG8gc29tZXRoaW5nIGxpa2U6XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0Lmhic1xuICA8YnV0dG9uIHt7b24gJ2NsaWNrJyB0aGlzLnNhdmVMaWtlfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5qc1xuICBpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG4gIGltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BlbWJlci9vYmplY3QnO1xuXG4gIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExpa2VQb3N0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzYXZlTGlrZSA9ICgpID0+IHtcbiAgICAgIC8vIHNvbWVvbmUgbGlrZXMgeW91ciBwb3N0IVxuICAgICAgLy8gYmV0dGVyIHNlbmQgYSByZXF1ZXN0IG9mZiB0byB5b3VyIHNlcnZlci4uLlxuICAgIH1cbiAgfVxuICBgYGBcblxuICAjIyMgQXJndW1lbnRzXG5cbiAgYHt7b259fWAgYWNjZXB0cyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMsIGFuZCBhIGZldyBuYW1lZCBhcmd1bWVudHMuXG5cbiAgVGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZTpcblxuICAtIGBldmVudGAgLS0gdGhlIG5hbWUgdG8gdXNlIHdoZW4gY2FsbGluZyBgYWRkRXZlbnRMaXN0ZW5lcmBcbiAgLSBgY2FsbGJhY2tgIC0tIHRoZSBmdW5jdGlvbiB0byBiZSBwYXNzZWQgdG8gYGFkZEV2ZW50TGlzdGVuZXJgXG5cbiAgVGhlIG5hbWVkIGFyZ3VtZW50cyBhcmU6XG5cbiAgLSBjYXB0dXJlIC0tIGEgYHRydWVgIHZhbHVlIGluZGljYXRlcyB0aGF0IGV2ZW50cyBvZiB0aGlzIHR5cGUgd2lsbCBiZSBkaXNwYXRjaGVkXG4gICAgdG8gdGhlIHJlZ2lzdGVyZWQgbGlzdGVuZXIgYmVmb3JlIGJlaW5nIGRpc3BhdGNoZWQgdG8gYW55IEV2ZW50VGFyZ2V0IGJlbmVhdGggaXRcbiAgICBpbiB0aGUgRE9NIHRyZWUuXG4gIC0gb25jZSAtLSBpbmRpY2F0ZXMgdGhhdCB0aGUgbGlzdGVuZXIgc2hvdWxkIGJlIGludm9rZWQgYXQgbW9zdCBvbmNlIGFmdGVyIGJlaW5nXG4gICAgYWRkZWQuIElmIHRydWUsIHRoZSBsaXN0ZW5lciB3b3VsZCBiZSBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiBpbnZva2VkLlxuICAtIHBhc3NpdmUgLS0gaWYgYHRydWVgLCBpbmRpY2F0ZXMgdGhhdCB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IGxpc3RlbmVyIHdpbGwgbmV2ZXJcbiAgICBjYWxsIHByZXZlbnREZWZhdWx0KCkuIElmIGEgcGFzc2l2ZSBsaXN0ZW5lciBkb2VzIGNhbGwgcHJldmVudERlZmF1bHQoKSwgdGhlIHVzZXJcbiAgICBhZ2VudCB3aWxsIGRvIG5vdGhpbmcgb3RoZXIgdGhhbiBnZW5lcmF0ZSBhIGNvbnNvbGUgd2FybmluZy4gU2VlXG4gICAgW0ltcHJvdmluZyBzY3JvbGxpbmcgcGVyZm9ybWFuY2Ugd2l0aCBwYXNzaXZlIGxpc3RlbmVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXIjSW1wcm92aW5nX3Njcm9sbGluZ19wZXJmb3JtYW5jZV93aXRoX3Bhc3NpdmVfbGlzdGVuZXJzKVxuICAgIHRvIGxlYXJuIG1vcmUuXG5cbiAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHBhc3NlZCB0byBge3tvbn19YCB3aWxsIHJlY2VpdmUgYW55IGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWRcbiAgdG8gdGhlIGV2ZW50IGhhbmRsZXIuIE1vc3QgY29tbW9ubHkgdGhpcyB3b3VsZCBiZSB0aGUgYGV2ZW50YCBpdHNlbGYuXG5cbiAgSWYgeW91IHdvdWxkIGxpa2UgdG8gcGFzcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24geW91IHNob3VsZCB1c2VcbiAgdGhlIGB7e2ZufX1gIGhlbHBlci5cblxuICBGb3IgZXhhbXBsZSwgaW4gb3VyIGV4YW1wbGUgY2FzZSBhYm92ZSBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gdGhlIHBvc3QgdGhhdFxuICB3YXMgYmVpbmcgbGlrZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgeW91IGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5oYnNcbiAgPGJ1dHRvbiB7e29uICdjbGljaycgKGZuIHRoaXMuc2F2ZUxpa2UgQHBvc3QpfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIEluIHRoaXMgY2FzZSwgdGhlIGBzYXZlTGlrZWAgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHR3byBhcmd1bWVudHM6IHRoZSBjbGljayBldmVudFxuICBhbmQgdGhlIHZhbHVlIG9mIGBAcG9zdGAuXG5cbiAgIyMjIEZ1bmN0aW9uIENvbnRleHRcblxuICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgdXNlZCBhbiBhcnJvdyBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBgbGlrZVBvc3RgIGlzXG4gIHByb3Blcmx5IGJvdW5kIHRvIHRoZSBgaXRlbXMtbGlzdGAsIGJ1dCBsZXQncyBleHBsb3JlIHdoYXQgaGFwcGVucyBpZiB3ZVxuICBsZWZ0IG91dCB0aGUgYXJyb3cgZnVuY3Rpb246XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0LmpzXG4gIGltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcblxuICBleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWtlUG9zdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc2F2ZUxpa2UoKSB7XG4gICAgICAvLyAuLi5zbmlwLi4uXG4gICAgfVxuICB9XG4gIGBgYFxuXG4gIEluIHRoaXMgZXhhbXBsZSwgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgYHNhdmVMaWtlYCB3aWxsIGJlIGludm9rZWQsXG4gIGl0IHdpbGwgKipub3QqKiBoYXZlIGFjY2VzcyB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlLiBJbiBvdGhlclxuICB3b3JkcywgaXQgd2lsbCBoYXZlIG5vIGB0aGlzYCBjb250ZXh0LCBzbyBwbGVhc2UgbWFrZSBzdXJlIHlvdXIgZnVuY3Rpb25zXG4gIGFyZSBib3VuZCAodmlhIGFuIGFycm93IGZ1bmN0aW9uIG9yIG90aGVyIG1lYW5zKSBiZWZvcmUgcGFzc2luZyBpbnRvIGBvbmAhXG5cbiAgQG1ldGhvZCBvblxuICBAcHVibGljXG4qL1xuY2xhc3MgT25Nb2RpZmllck1hbmFnZXIgaW1wbGVtZW50cyBJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcjxPbk1vZGlmaWVyU3RhdGUgfCBudWxsLCBvYmplY3Q+IHtcbiAgcHVibGljIFNVUFBPUlRTX0VWRU5UX09QVElPTlM6IGJvb2xlYW4gPSBTVVBQT1JUU19FVkVOVF9PUFRJT05TO1xuXG4gIGdldERlYnVnTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnb24nO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJzKCk6IHsgYWRkczogbnVtYmVyOyByZW1vdmVzOiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHsgYWRkcywgcmVtb3ZlcyB9O1xuICB9XG5cbiAgY3JlYXRlKFxuICAgIF9vd25lcjogT3duZXIsXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCB8IEVsZW1lbnQsXG4gICAgX3N0YXRlOiBvYmplY3QsXG4gICAgYXJnczogQ2FwdHVyZWRBcmd1bWVudHNcbiAgKTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIG5ldyBPbk1vZGlmaWVyU3RhdGUoZWxlbWVudCBhcyBFbGVtZW50LCBhcmdzKTtcbiAgfVxuXG4gIGdldFRhZyhzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IFVwZGF0YWJsZVRhZyB8IG51bGwge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlLnRhZztcbiAgfVxuXG4gIGluc3RhbGwoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGF0ZS51cGRhdGVGcm9tQXJncygpO1xuXG4gICAgbGV0IHsgZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyB9ID0gc3RhdGU7XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgcmVnaXN0ZXJEZXN0cnVjdG9yKHN0YXRlLCAoKSA9PiByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpKTtcblxuICAgIHN0YXRlLnNob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgdXBkYXRlKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc3Rhc2ggcHJpb3Igc3RhdGUgZm9yIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiAgICBsZXQgeyBlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zIH0gPSBzdGF0ZTtcblxuICAgIHN0YXRlLnVwZGF0ZUZyb21BcmdzKCk7XG5cbiAgICBpZiAoIXN0YXRlLnNob3VsZFVwZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHVzZSBwcmlvciBzdGF0ZSB2YWx1ZXMgZm9yIHJlbW92YWxcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgLy8gcmVhZCB1cGRhdGVkIHZhbHVlcyBmcm9tIHRoZSBzdGF0ZSBvYmplY3RcbiAgICBhZGRFdmVudExpc3RlbmVyKHN0YXRlLmVsZW1lbnQsIHN0YXRlLmV2ZW50TmFtZSwgc3RhdGUuY2FsbGJhY2ssIHN0YXRlLm9wdGlvbnMpO1xuXG4gICAgc3RhdGUuc2hvdWxkVXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICBnZXREZXN0cm95YWJsZShzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcihuZXcgT25Nb2RpZmllck1hbmFnZXIoKSwge30pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL21vZGlmaWVycy9vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBQSxrQkFBQSxRQUFBLHNCQUFBO0FBQ0EsU0FBQSxLQUFBLFFBQUEsY0FBQTtBQUVBLFNBQUEsMEJBQUEsUUFBQSxrQkFBQTtBQUNBLFNBQUEsV0FBQSxRQUFBLG9CQUFBO0FBQ0EsU0FBQSxVQUFBLFFBQUEsa0JBQUE7QUFDQSxTQUFBLGtCQUFBLFFBQUEsb0JBQUE7QUFFQSxTQUFBLG9CQUFBLFFBQUEsZUFBQTtBQUVBLElBQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQS9DLGVBQStDLENBQS9DO0FBRUE7Ozs7Ozs7Ozs7Ozs7QUFZQSxJQUFNLHNCQUFzQixHQUFJLFlBQUs7QUFDbkMsTUFBSTtBQUNGLFFBQU0sR0FBRyxHQUFHLFFBQVEsQ0FBUixhQUFBLENBQVosS0FBWSxDQUFaO0FBQ0EsUUFBSSxPQUFPLEdBQVgsQ0FBQTtBQUNBLElBQUEsR0FBRyxDQUFILGdCQUFBLENBQUEsT0FBQSxFQUE4QjtBQUFBLGFBQU0sT0FBcEMsRUFBOEI7QUFBQSxLQUE5QixFQUErQztBQUFFLE1BQUEsSUFBSSxFQUFFO0FBQVIsS0FBL0M7QUFFQSxRQUFBLEtBQUE7O0FBQ0EsUUFBSSxPQUFBLEtBQUEsS0FBSixVQUFBLEVBQWlDO0FBQy9CLE1BQUEsS0FBSyxHQUFHLElBQUEsS0FBQSxDQUFSLE9BQVEsQ0FBUjtBQURGLEtBQUEsTUFFTztBQUNMLE1BQUEsS0FBSyxHQUFHLFFBQVEsQ0FBUixXQUFBLENBQVIsT0FBUSxDQUFSO0FBQ0EsTUFBQSxLQUFLLENBQUwsU0FBQSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsSUFBQTtBQUNEOztBQUVELElBQUEsR0FBRyxDQUFILGFBQUEsQ0FBQSxLQUFBO0FBQ0EsSUFBQSxHQUFHLENBQUgsYUFBQSxDQUFBLEtBQUE7QUFFQSxXQUFPLE9BQU8sS0FBZCxDQUFBO0FBaEJGLEdBQUEsQ0FpQkUsT0FBQSxLQUFBLEVBQWM7QUFDZCxXQUFBLEtBQUE7QUFDRDtBQXBCSCxDQUErQixFQUEvQjs7QUF1QkEsV0FBTSxlQUFOO0FBYUUsMkJBQUEsT0FBQSxFQUFBLElBQUEsRUFBcUQ7QUFaOUMsU0FBQSxHQUFBLEdBQU0sa0JBQU4sRUFBQTtBQVVBLFNBQUEsWUFBQSxHQUFBLElBQUE7QUFHTCxTQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0EsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNEOztBQWhCSDs7QUFBQSxTQWtCRSxjQWxCRixHQWtCRSwwQkFBYztBQUFBLFFBQ04sSUFETSxHQUNaLElBRFksQ0FDTixJQURNOztBQUFBLHNCQUc4QyxVQUFVLENBQUMsSUFBSSxDQUF6RSxLQUFvRSxDQUh4RDtBQUFBLFFBR1IsSUFIUSxlQUdSLElBSFE7QUFBQSxRQUdSLE9BSFEsZUFHUixPQUhRO0FBQUEsUUFHUyxPQUhULGVBR1MsT0FIVDs7QUFJWixRQUFJLElBQUksS0FBSyxLQUFiLElBQUEsRUFBd0I7QUFDdEIsV0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLFdBQUEsWUFBQSxHQUFBLElBQUE7QUFDRDs7QUFFRCxRQUFJLE9BQU8sS0FBSyxLQUFoQixPQUFBLEVBQThCO0FBQzVCLFdBQUEsT0FBQSxHQUFBLE9BQUE7QUFDQSxXQUFBLFlBQUEsR0FBQSxJQUFBO0FBQ0Q7O0FBRUQsUUFBSSxPQUFPLEtBQUssS0FBaEIsT0FBQSxFQUE4QjtBQUM1QixXQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0EsV0FBQSxZQUFBLEdBQUEsSUFBQTtBQUNEOztBQUVELFFBQUEsT0FBQTs7QUFDQSxRQUFJLElBQUksSUFBSixPQUFBLElBQUosT0FBQSxFQUFnQztBQUM5QixNQUFBLE9BQU8sR0FBRyxLQUFBLE9BQUEsR0FBZTtBQUFFLFFBQUEsSUFBRixFQUFFLElBQUY7QUFBUSxRQUFBLE9BQVIsRUFBUSxPQUFSO0FBQWlCLFFBQUEsT0FBQSxFQUFBO0FBQWpCLE9BQXpCO0FBREYsS0FBQSxNQUVPO0FBQ0wsV0FBQSxPQUFBLEdBQUEsU0FBQTtBQUNEOztBQUVELFFBQ0UsS0FBSyxLQUNKLElBQUksQ0FBSixVQUFBLENBQUEsQ0FBQSxNQUFBLFNBQUEsSUFBb0MsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFKLFVBQUEsQ0FBbkIsQ0FBbUIsQ0FBRCxDQUFsQixLQUZ2QyxRQUNPLENBRFAsRUFHRTtBQUNBLFlBQU0sSUFBQSxLQUFBLENBQU4saUZBQU0sQ0FBTjtBQUdEOztBQUVELFFBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUosVUFBQSxDQUE1QixDQUE0QixDQUFELENBQTNCOztBQUNBLFFBQUksU0FBUyxLQUFLLEtBQWxCLFNBQUEsRUFBa0M7QUFDaEMsV0FBQSxTQUFBLEdBQUEsU0FBQTtBQUNBLFdBQUEsWUFBQSxHQUFBLElBQUE7QUFDRDs7QUFFRCxRQUFJLDZCQUE2QixHQUFHLElBQUksQ0FBSixVQUFBLENBQXBDLENBQW9DLENBQXBDOztBQUVBLFFBQUEsS0FBQSxFQUFXO0FBQ1QsVUFBSSxJQUFJLENBQUosVUFBQSxDQUFBLENBQUEsTUFBSixTQUFBLEVBQXNDO0FBQ3BDLGNBQU0sSUFBTixLQUFNLHlFQUFOO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLLEdBQUcsV0FBVyxDQUF2Qiw2QkFBdUIsQ0FBdkI7O0FBRUEsVUFBSSxPQUFBLEtBQUEsS0FBSixVQUFBLEVBQWlDO0FBQy9CLGNBQU0sSUFBQSxLQUFBLHdGQUVGLEtBQUssS0FBTCxJQUFBLEdBQUEsTUFBQSxHQUEwQixPQUFPLEtBRi9CLCtCQUdxQiw2QkFBNkIsQ0FIeEQsVUFBTSxDQUFOO0FBS0Q7QUFDRjs7QUFFRCxRQUFJLG9CQUFvQixHQUFHLFdBQVcsQ0FBdEMsNkJBQXNDLENBQXRDOztBQUNBLFFBQUksb0JBQW9CLEtBQUssS0FBN0Isb0JBQUEsRUFBd0Q7QUFDdEQsV0FBQSxvQkFBQSxHQUFBLG9CQUFBO0FBQ0EsV0FBQSxZQUFBLEdBQUEsSUFBQTtBQUNEOztBQUVELFFBQUksS0FBSyxJQUFJLElBQUksQ0FBSixVQUFBLENBQUEsTUFBQSxLQUFiLENBQUEsRUFBMkM7QUFDekMsWUFBTSxJQUFBLEtBQUEsa0hBQzZHLElBQUksQ0FBSixVQUFBLENBRG5ILE1BQU0sNEZBQU47QUFHRDs7QUFFRCxRQUFJLG1CQUFtQixHQUNwQixzQkFBc0IsS0FBdEIsS0FBQSxJQUFELElBQUM7QUFBMEM7QUFDMUMsSUFBQSxLQUFLLElBRlIsT0FBQTtBQUVzQjs7QUFFdEIsUUFBSSxLQUFKLFlBQUEsRUFBdUI7QUFDckIsVUFBQSxtQkFBQSxFQUF5QjtBQUN2QixZQUFJLFFBQVEsR0FBSSxLQUFBLFFBQUEsR0FBZ0IsVUFBQSxLQUFBLEVBQThCO0FBQzVELGNBQUksS0FBSyxJQUFULE9BQUEsRUFBc0I7QUFDcEIsWUFBQSxLQUFLLENBQUwsY0FBQSxHQUF1QixZQUFLO0FBQzFCLG9CQUFNLElBQUEsS0FBQSwwR0FBTixvQkFBTSxDQUFOO0FBREYsYUFBQTtBQUtEOztBQUVELGNBQUksQ0FBQSxzQkFBQSxJQUFKLElBQUEsRUFBcUM7QUFDbkMsWUFBQSxtQkFBbUIsQ0FBQSxJQUFBLEVBQUEsU0FBQSxFQUFBLFFBQUEsRUFBbkIsT0FBbUIsQ0FBbkI7QUFDRDs7QUFDRCxpQkFBTyxvQkFBb0IsQ0FBcEIsSUFBQSxDQUFBLGtCQUFBLEVBQVAsS0FBTyxDQUFQO0FBWkYsU0FBQTtBQURGLE9BQUEsTUFlTyxJQUFBLEtBQUEsRUFBVztBQUNoQjtBQUNBLGFBQUEsUUFBQSxHQUFnQixvQkFBb0IsQ0FBcEIsSUFBQSxDQUFoQixrQkFBZ0IsQ0FBaEI7QUFGSyxPQUFBLE1BR0E7QUFDTCxhQUFBLFFBQUEsR0FBQSxvQkFBQTtBQUNEO0FBQ0Y7QUFDRixHQXBISDs7QUFBQTtBQUFBO0FBdUhBLElBQUksSUFBSSxHQUFSLENBQUE7QUFDQSxJQUFJLE9BQU8sR0FBWCxDQUFBOztBQUVBLFNBQUEsbUJBQUEsQ0FBQSxPQUFBLEVBQUEsU0FBQSxFQUFBLFFBQUEsRUFBQSxPQUFBLEVBSW1DO0FBRWpDLEVBQUEsT0FBTzs7QUFFUCxNQUFBLHNCQUFBLEVBQTRCO0FBQzFCO0FBQ0EsSUFBQSxPQUFPLENBQVAsbUJBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUE7QUFGRixHQUFBLE1BR08sSUFBSSxPQUFPLEtBQVAsU0FBQSxJQUF5QixPQUFPLENBQXBDLE9BQUEsRUFBOEM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBQSxPQUFPLENBQVAsbUJBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLElBQUE7QUFQSyxHQUFBLE1BUUE7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUEsT0FBTyxDQUFQLG1CQUFBLENBQUEsU0FBQSxFQUFBLFFBQUE7QUFDRDtBQUNGOztBQUVELFNBQUEsZ0JBQUEsQ0FBQSxPQUFBLEVBQUEsU0FBQSxFQUFBLFFBQUEsRUFBQSxPQUFBLEVBSW1DO0FBRWpDLEVBQUEsSUFBSTs7QUFFSixNQUFBLHNCQUFBLEVBQTRCO0FBQzFCO0FBQ0EsSUFBQSxPQUFPLENBQVAsZ0JBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUE7QUFGRixHQUFBLE1BR08sSUFBSSxPQUFPLEtBQVAsU0FBQSxJQUF5QixPQUFPLENBQXBDLE9BQUEsRUFBOEM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBQSxPQUFPLENBQVAsZ0JBQUEsQ0FBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLElBQUE7QUFQSyxHQUFBLE1BUUE7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUEsT0FBTyxDQUFQLGdCQUFBLENBQUEsU0FBQSxFQUFBLFFBQUE7QUFDRDtBQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFzRkEsaUI7QUFBQSwrQkFBQTtBQUNTLFNBQUEsc0JBQUEsR0FBQSxzQkFBQTtBQXFFUjs7OztVQW5FQyxZLEdBQUEsd0JBQVk7QUFDVixXQUFBLElBQUE7QUFDRCxHOztVQU1ELE0sR0FBQSxnQkFBTSxNQUFOLEVBQU0sT0FBTixFQUFNLE1BQU4sRUFBTSxJQUFOLEVBSXlCO0FBRXZCLFdBQU8sSUFBQSxlQUFBLENBQUEsT0FBQSxFQUFQLElBQU8sQ0FBUDtBQUNELEc7O1VBRUQsTSxHQUFBLGdCQUFNLEtBQU4sRUFBb0M7QUFDbEMsUUFBSSxLQUFLLEtBQVQsSUFBQSxFQUFvQjtBQUNsQixhQUFBLElBQUE7QUFDRDs7QUFFRCxXQUFPLEtBQUssQ0FBWixHQUFBO0FBQ0QsRzs7VUFFRCxPLEdBQUEsaUJBQU8sS0FBUCxFQUFxQztBQUNuQyxRQUFJLEtBQUssS0FBVCxJQUFBLEVBQW9CO0FBQ2xCO0FBQ0Q7O0FBRUQsSUFBQSxLQUFLLENBQUwsY0FBQTtBQUxtQyxRQU8vQixPQVArQixHQU9uQyxLQVBtQyxDQU8vQixPQVArQjtBQUFBLFFBTy9CLFNBUCtCLEdBT25DLEtBUG1DLENBTy9CLFNBUCtCO0FBQUEsUUFPL0IsUUFQK0IsR0FPbkMsS0FQbUMsQ0FPL0IsUUFQK0I7QUFBQSxRQU9DLE9BUEQsR0FPbkMsS0FQbUMsQ0FPQyxPQVBEO0FBU25DLElBQUEsZ0JBQWdCLENBQUEsT0FBQSxFQUFBLFNBQUEsRUFBQSxRQUFBLEVBQWhCLE9BQWdCLENBQWhCO0FBRUEsSUFBQSxrQkFBa0IsQ0FBQSxLQUFBLEVBQVE7QUFBQSxhQUFNLG1CQUFtQixDQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsUUFBQSxFQUFuRCxPQUFtRCxDQUF6QjtBQUFBLEtBQVIsQ0FBbEI7QUFFQSxJQUFBLEtBQUssQ0FBTCxZQUFBLEdBQUEsS0FBQTtBQUNELEc7O1VBRUQsTSxHQUFBLGdCQUFNLEtBQU4sRUFBb0M7QUFDbEMsUUFBSSxLQUFLLEtBQVQsSUFBQSxFQUFvQjtBQUNsQjtBQUZnQyxLQUFBLENBS2xDOzs7QUFMa0MsUUFNOUIsT0FOOEIsR0FNbEMsS0FOa0MsQ0FNOUIsT0FOOEI7QUFBQSxRQU05QixTQU44QixHQU1sQyxLQU5rQyxDQU05QixTQU44QjtBQUFBLFFBTTlCLFFBTjhCLEdBTWxDLEtBTmtDLENBTTlCLFFBTjhCO0FBQUEsUUFNRSxPQU5GLEdBTWxDLEtBTmtDLENBTUUsT0FORjtBQVFsQyxJQUFBLEtBQUssQ0FBTCxjQUFBOztBQUVBLFFBQUksQ0FBQyxLQUFLLENBQVYsWUFBQSxFQUF5QjtBQUN2QjtBQVhnQyxLQUFBLENBY2xDOzs7QUFDQSxJQUFBLG1CQUFtQixDQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsUUFBQSxFQWZlLE9BZWYsQ0FBbkIsQ0Fma0MsQ0FpQmxDOztBQUNBLElBQUEsZ0JBQWdCLENBQUMsS0FBSyxDQUFOLE9BQUEsRUFBZ0IsS0FBSyxDQUFyQixTQUFBLEVBQWlDLEtBQUssQ0FBdEMsUUFBQSxFQUFpRCxLQUFLLENBQXRFLE9BQWdCLENBQWhCO0FBRUEsSUFBQSxLQUFLLENBQUwsWUFBQSxHQUFBLEtBQUE7QUFDRCxHOztVQUVELGMsR0FBQSx3QkFBYyxLQUFkLEVBQTRDO0FBQzFDLFdBQUEsS0FBQTtBQUNELEc7Ozs7d0JBOURXO0FBQ1YsYUFBTztBQUFFLFFBQUEsSUFBRixFQUFFLElBQUY7QUFBUSxRQUFBLE9BQUEsRUFBQTtBQUFSLE9BQVA7QUFDRDs7Ozs7O0FBK0RILGVBQWUsMEJBQTBCLENBQUMsSUFBRCxpQkFBQyxFQUFELEVBQXpDLEVBQXlDLENBQXpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJEZXN0cnVjdG9yIH0gZnJvbSAnQGdsaW1tZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgQ2FwdHVyZWRBcmd1bWVudHMsIEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLCBPd25lciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgc2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIgfSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IHJlaWZ5TmFtZWQgfSBmcm9tICdAZ2xpbW1lci9ydW50aW1lJztcbmltcG9ydCB7IGNyZWF0ZVVwZGF0YWJsZVRhZywgVXBkYXRhYmxlVGFnIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcbmltcG9ydCB7IFNpbXBsZUVsZW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYnVpbGRVbnRvdWNoYWJsZVRoaXMgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuY29uc3QgdW50b3VjaGFibGVDb250ZXh0ID0gYnVpbGRVbnRvdWNoYWJsZVRoaXMoJ2BvbmAgbW9kaWZpZXInKTtcblxuLypcbiAgSW50ZXJuZXQgRXhwbG9yZXIgMTEgZG9lcyBub3Qgc3VwcG9ydCBgb25jZWAgYW5kIGFsc28gZG9lcyBub3Qgc3VwcG9ydFxuICBwYXNzaW5nIGBldmVudE9wdGlvbnNgLiBJbiBzb21lIHNpdHVhdGlvbnMgaXQgdGhlbiB0aHJvd3MgYSB3ZWlyZCBzY3JpcHRcbiAgZXJyb3IsIGxpa2U6XG5cbiAgYGBgXG4gIENvdWxkIG5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGR1ZSB0byBlcnJvciA4MDAyMDEwMVxuICBgYGBcblxuICBUaGlzIGZsYWcgZGV0ZXJtaW5lcywgd2hldGhlciBgeyBvbmNlOiB0cnVlIH1gIGFuZCB0aHVzIGFsc28gZXZlbnQgb3B0aW9ucyBpblxuICBnZW5lcmFsIGFyZSBzdXBwb3J0ZWQuXG4qL1xuY29uc3QgU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9ICgoKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGNvdW50ZXIrKywgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgbGV0IGV2ZW50O1xuICAgIGlmICh0eXBlb2YgRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuICAgIH1cblxuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICBkaXYuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cbiAgICByZXR1cm4gY291bnRlciA9PT0gMTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBPbk1vZGlmaWVyU3RhdGUge1xuICBwdWJsaWMgdGFnID0gY3JlYXRlVXBkYXRhYmxlVGFnKCk7XG4gIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50O1xuICBwdWJsaWMgYXJnczogQ2FwdHVyZWRBcmd1bWVudHM7XG4gIHB1YmxpYyBldmVudE5hbWUhOiBzdHJpbmc7XG4gIHB1YmxpYyBjYWxsYmFjayE6IEV2ZW50TGlzdGVuZXI7XG4gIHByaXZhdGUgdXNlclByb3ZpZGVkQ2FsbGJhY2shOiBFdmVudExpc3RlbmVyO1xuICBwdWJsaWMgb25jZT86IGJvb2xlYW47XG4gIHB1YmxpYyBwYXNzaXZlPzogYm9vbGVhbjtcbiAgcHVibGljIGNhcHR1cmU/OiBib29sZWFuO1xuICBwdWJsaWMgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zO1xuICBwdWJsaWMgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50LCBhcmdzOiBDYXB0dXJlZEFyZ3VtZW50cykge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIHVwZGF0ZUZyb21BcmdzKCk6IHZvaWQge1xuICAgIGxldCB7IGFyZ3MgfSA9IHRoaXM7XG5cbiAgICBsZXQgeyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH06IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0gcmVpZnlOYW1lZChhcmdzLm5hbWVkKTtcbiAgICBpZiAob25jZSAhPT0gdGhpcy5vbmNlKSB7XG4gICAgICB0aGlzLm9uY2UgPSBvbmNlO1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwYXNzaXZlICE9PSB0aGlzLnBhc3NpdmUpIHtcbiAgICAgIHRoaXMucGFzc2l2ZSA9IHBhc3NpdmU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNhcHR1cmUgIT09IHRoaXMuY2FwdHVyZSkge1xuICAgICAgdGhpcy5jYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG4gICAgaWYgKG9uY2UgfHwgcGFzc2l2ZSB8fCBjYXB0dXJlKSB7XG4gICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zID0geyBvbmNlLCBwYXNzaXZlLCBjYXB0dXJlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgKGFyZ3MucG9zaXRpb25hbFswXSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pICE9PSAnc3RyaW5nJylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHBhc3MgYSB2YWxpZCBET00gZXZlbnQgbmFtZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGBvbmAgbW9kaWZpZXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBldmVudE5hbWUgPSB2YWx1ZUZvclJlZihhcmdzLnBvc2l0aW9uYWxbMF0pIGFzIHN0cmluZztcbiAgICBpZiAoZXZlbnROYW1lICE9PSB0aGlzLmV2ZW50TmFtZSkge1xuICAgICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5hbWU7XG4gICAgICB0aGlzLnNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlID0gYXJncy5wb3NpdGlvbmFsWzFdO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBpZiAoYXJncy5wb3NpdGlvbmFsWzFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgXFxgb25cXGAgbW9kaWZpZXIuYCk7XG4gICAgICB9XG5cbiAgICAgIGxldCB2YWx1ZSA9IHZhbHVlRm9yUmVmKHVzZXJQcm92aWRlZENhbGxiYWNrUmVmZXJlbmNlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBcXGBvblxcYCBtb2RpZmllcjsgeW91IHBhc3NlZCAke1xuICAgICAgICAgICAgdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgdmFsdWVcbiAgICAgICAgICB9LiBXaGlsZSByZW5kZXJpbmc6XFxuXFxuJHt1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZS5kZWJ1Z0xhYmVsfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB2YWx1ZUZvclJlZih1c2VyUHJvdmlkZWRDYWxsYmFja1JlZmVyZW5jZSkgYXMgRXZlbnRMaXN0ZW5lcjtcbiAgICBpZiAodXNlclByb3ZpZGVkQ2FsbGJhY2sgIT09IHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXNlclByb3ZpZGVkQ2FsbGJhY2sgPSB1c2VyUHJvdmlkZWRDYWxsYmFjaztcbiAgICAgIHRoaXMuc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoREVCVUcgJiYgYXJncy5wb3NpdGlvbmFsLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbiBvbmx5IHBhc3MgdHdvIHBvc2l0aW9uYWwgYXJndW1lbnRzIChldmVudCBuYW1lIGFuZCBjYWxsYmFjaykgdG8gdGhlIFxcYG9uXFxgIG1vZGlmaWVyLCBidXQgeW91IHByb3ZpZGVkICR7YXJncy5wb3NpdGlvbmFsLmxlbmd0aH0uIENvbnNpZGVyIHVzaW5nIHRoZSBcXGBmblxcYCBoZWxwZXIgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgXFxgb25cXGAgY2FsbGJhY2suYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbmVlZHNDdXN0b21DYWxsYmFjayA9XG4gICAgICAoU1VQUE9SVFNfRVZFTlRfT1BUSU9OUyA9PT0gZmFsc2UgJiYgb25jZSkgLyogbmVlZHMgbWFudWFsIG9uY2UgaW1wbGVtZW50YXRpb24gKi8gfHxcbiAgICAgIChERUJVRyAmJiBwYXNzaXZlKTsgLyogbmVlZHMgcGFzc2l2ZSBlbmZvcmNlbWVudCAqL1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlKSB7XG4gICAgICBpZiAobmVlZHNDdXN0b21DYWxsYmFjaykge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSAodGhpcy5jYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBFbGVtZW50LCBldmVudCkge1xuICAgICAgICAgIGlmIChERUJVRyAmJiBwYXNzaXZlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBZb3UgbWFya2VkIHRoaXMgbGlzdGVuZXIgYXMgJ3Bhc3NpdmUnLCBtZWFuaW5nIHRoYXQgeW91IG11c3Qgbm90IGNhbGwgJ2V2ZW50LnByZXZlbnREZWZhdWx0KCknOiBcXG5cXG4ke3VzZXJQcm92aWRlZENhbGxiYWNrfWBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFTVVBQT1JUU19FVkVOVF9PUFRJT05TICYmIG9uY2UpIHtcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1c2VyUHJvdmlkZWRDYWxsYmFjay5jYWxsKHVudG91Y2hhYmxlQ29udGV4dCwgZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoREVCVUcpIHtcbiAgICAgICAgLy8gcHJldmVudCB0aGUgY2FsbGJhY2sgZnJvbSBiZWluZyBib3VuZCB0byB0aGUgZWxlbWVudFxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gdXNlclByb3ZpZGVkQ2FsbGJhY2suYmluZCh1bnRvdWNoYWJsZUNvbnRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IHVzZXJQcm92aWRlZENhbGxiYWNrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5sZXQgYWRkcyA9IDA7XG5sZXQgcmVtb3ZlcyA9IDA7XG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGV2ZW50TmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogRXZlbnRMaXN0ZW5lcixcbiAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4pOiB2b2lkIHtcbiAgcmVtb3ZlcysrO1xuXG4gIGlmIChTVVBQT1JUU19FVkVOVF9PUFRJT05TKSB7XG4gICAgLy8gd2hlbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQsIHVzZSB0aGVtIGFjcm9zcyB0aGUgYm9hcmRcbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY2FwdHVyZSkge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6XG4gICAgLy9cbiAgICAvLyBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9XG4gICAgLy9cbiAgICAvLyBgb25jZWAgaXMgaGFuZGxlZCB2aWEgYSBjdXN0b20gY2FsbGJhY2sgdGhhdCByZW1vdmVzIGFmdGVyIGZpcnN0XG4gICAgLy8gaW52b2NhdGlvbiBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgY2FwdHVyZSBoZXJlIGFzIGEgYm9vbGVhblxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2VkIG9ubHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAvL1xuICAgIC8vICogd2hlcmUgdGhlcmUgaXMgbm8gb3B0aW9uc1xuICAgIC8vICogYHsgb25jZTogdHJ1ZSB8IGZhbHNlLCBwYXNzaXZlOiB0cnVlIHwgZmFsc2UsIGNhcHR1cmU6IGZhbHNlIH1cbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihcbiAgZWxlbWVudDogRWxlbWVudCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiBFdmVudExpc3RlbmVyLFxuICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbik6IHZvaWQge1xuICBhZGRzKys7XG5cbiAgaWYgKFNVUFBPUlRTX0VWRU5UX09QVElPTlMpIHtcbiAgICAvLyB3aGVuIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCwgdXNlIHRoZW0gYWNyb3NzIHRoZSBib2FyZFxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5jYXB0dXJlKSB7XG4gICAgLy8gdXNlZCBvbmx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZTpcbiAgICAvL1xuICAgIC8vIGB7IG9uY2U6IHRydWUgfCBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB8IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH1cbiAgICAvL1xuICAgIC8vIGBvbmNlYCBpcyBoYW5kbGVkIHZpYSBhIGN1c3RvbSBjYWxsYmFjayB0aGF0IHJlbW92ZXMgYWZ0ZXIgZmlyc3RcbiAgICAvLyBpbnZvY2F0aW9uIHNvIHdlIG9ubHkgY2FyZSBhYm91dCBjYXB0dXJlIGhlcmUgYXMgYSBib29sZWFuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZWQgb25seSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgIC8vXG4gICAgLy8gKiB3aGVyZSB0aGVyZSBpcyBubyBvcHRpb25zXG4gICAgLy8gKiBgeyBvbmNlOiB0cnVlIHwgZmFsc2UsIHBhc3NpdmU6IHRydWUgfCBmYWxzZSwgY2FwdHVyZTogZmFsc2UgfVxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAgVGhlIGB7e29ufX1gIG1vZGlmaWVyIGxldHMgeW91IGVhc2lseSBhZGQgZXZlbnQgbGlzdGVuZXJzIChpdCB1c2VzXG4gIFtFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lcilcbiAgaW50ZXJuYWxseSkuXG5cbiAgRm9yIGV4YW1wbGUsIGlmIHlvdSdkIGxpa2UgdG8gcnVuIGEgZnVuY3Rpb24gb24geW91ciBjb21wb25lbnQgd2hlbiBhIGA8YnV0dG9uPmBcbiAgaW4gdGhlIGNvbXBvbmVudHMgdGVtcGxhdGUgaXMgY2xpY2tlZCB5b3UgbWlnaHQgZG8gc29tZXRoaW5nIGxpa2U6XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0Lmhic1xuICA8YnV0dG9uIHt7b24gJ2NsaWNrJyB0aGlzLnNhdmVMaWtlfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5qc1xuICBpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG4gIGltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BlbWJlci9vYmplY3QnO1xuXG4gIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExpa2VQb3N0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzYXZlTGlrZSA9ICgpID0+IHtcbiAgICAgIC8vIHNvbWVvbmUgbGlrZXMgeW91ciBwb3N0IVxuICAgICAgLy8gYmV0dGVyIHNlbmQgYSByZXF1ZXN0IG9mZiB0byB5b3VyIHNlcnZlci4uLlxuICAgIH1cbiAgfVxuICBgYGBcblxuICAjIyMgQXJndW1lbnRzXG5cbiAgYHt7b259fWAgYWNjZXB0cyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMsIGFuZCBhIGZldyBuYW1lZCBhcmd1bWVudHMuXG5cbiAgVGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZTpcblxuICAtIGBldmVudGAgLS0gdGhlIG5hbWUgdG8gdXNlIHdoZW4gY2FsbGluZyBgYWRkRXZlbnRMaXN0ZW5lcmBcbiAgLSBgY2FsbGJhY2tgIC0tIHRoZSBmdW5jdGlvbiB0byBiZSBwYXNzZWQgdG8gYGFkZEV2ZW50TGlzdGVuZXJgXG5cbiAgVGhlIG5hbWVkIGFyZ3VtZW50cyBhcmU6XG5cbiAgLSBjYXB0dXJlIC0tIGEgYHRydWVgIHZhbHVlIGluZGljYXRlcyB0aGF0IGV2ZW50cyBvZiB0aGlzIHR5cGUgd2lsbCBiZSBkaXNwYXRjaGVkXG4gICAgdG8gdGhlIHJlZ2lzdGVyZWQgbGlzdGVuZXIgYmVmb3JlIGJlaW5nIGRpc3BhdGNoZWQgdG8gYW55IEV2ZW50VGFyZ2V0IGJlbmVhdGggaXRcbiAgICBpbiB0aGUgRE9NIHRyZWUuXG4gIC0gb25jZSAtLSBpbmRpY2F0ZXMgdGhhdCB0aGUgbGlzdGVuZXIgc2hvdWxkIGJlIGludm9rZWQgYXQgbW9zdCBvbmNlIGFmdGVyIGJlaW5nXG4gICAgYWRkZWQuIElmIHRydWUsIHRoZSBsaXN0ZW5lciB3b3VsZCBiZSBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiBpbnZva2VkLlxuICAtIHBhc3NpdmUgLS0gaWYgYHRydWVgLCBpbmRpY2F0ZXMgdGhhdCB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IGxpc3RlbmVyIHdpbGwgbmV2ZXJcbiAgICBjYWxsIHByZXZlbnREZWZhdWx0KCkuIElmIGEgcGFzc2l2ZSBsaXN0ZW5lciBkb2VzIGNhbGwgcHJldmVudERlZmF1bHQoKSwgdGhlIHVzZXJcbiAgICBhZ2VudCB3aWxsIGRvIG5vdGhpbmcgb3RoZXIgdGhhbiBnZW5lcmF0ZSBhIGNvbnNvbGUgd2FybmluZy4gU2VlXG4gICAgW0ltcHJvdmluZyBzY3JvbGxpbmcgcGVyZm9ybWFuY2Ugd2l0aCBwYXNzaXZlIGxpc3RlbmVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXIjSW1wcm92aW5nX3Njcm9sbGluZ19wZXJmb3JtYW5jZV93aXRoX3Bhc3NpdmVfbGlzdGVuZXJzKVxuICAgIHRvIGxlYXJuIG1vcmUuXG5cbiAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHBhc3NlZCB0byBge3tvbn19YCB3aWxsIHJlY2VpdmUgYW55IGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWRcbiAgdG8gdGhlIGV2ZW50IGhhbmRsZXIuIE1vc3QgY29tbW9ubHkgdGhpcyB3b3VsZCBiZSB0aGUgYGV2ZW50YCBpdHNlbGYuXG5cbiAgSWYgeW91IHdvdWxkIGxpa2UgdG8gcGFzcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24geW91IHNob3VsZCB1c2VcbiAgdGhlIGB7e2ZufX1gIGhlbHBlci5cblxuICBGb3IgZXhhbXBsZSwgaW4gb3VyIGV4YW1wbGUgY2FzZSBhYm92ZSBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gdGhlIHBvc3QgdGhhdFxuICB3YXMgYmVpbmcgbGlrZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgeW91IGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlOlxuXG4gIGBgYGFwcC9jb21wb25lbnRzL2xpa2UtcG9zdC5oYnNcbiAgPGJ1dHRvbiB7e29uICdjbGljaycgKGZuIHRoaXMuc2F2ZUxpa2UgQHBvc3QpfX0+TGlrZSB0aGlzIHBvc3QhPC9idXR0b24+XG4gIGBgYFxuXG4gIEluIHRoaXMgY2FzZSwgdGhlIGBzYXZlTGlrZWAgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHR3byBhcmd1bWVudHM6IHRoZSBjbGljayBldmVudFxuICBhbmQgdGhlIHZhbHVlIG9mIGBAcG9zdGAuXG5cbiAgIyMjIEZ1bmN0aW9uIENvbnRleHRcblxuICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgdXNlZCBhbiBhcnJvdyBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBgbGlrZVBvc3RgIGlzXG4gIHByb3Blcmx5IGJvdW5kIHRvIHRoZSBgaXRlbXMtbGlzdGAsIGJ1dCBsZXQncyBleHBsb3JlIHdoYXQgaGFwcGVucyBpZiB3ZVxuICBsZWZ0IG91dCB0aGUgYXJyb3cgZnVuY3Rpb246XG5cbiAgYGBgYXBwL2NvbXBvbmVudHMvbGlrZS1wb3N0LmpzXG4gIGltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcblxuICBleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWtlUG9zdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc2F2ZUxpa2UoKSB7XG4gICAgICAvLyAuLi5zbmlwLi4uXG4gICAgfVxuICB9XG4gIGBgYFxuXG4gIEluIHRoaXMgZXhhbXBsZSwgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgYHNhdmVMaWtlYCB3aWxsIGJlIGludm9rZWQsXG4gIGl0IHdpbGwgKipub3QqKiBoYXZlIGFjY2VzcyB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlLiBJbiBvdGhlclxuICB3b3JkcywgaXQgd2lsbCBoYXZlIG5vIGB0aGlzYCBjb250ZXh0LCBzbyBwbGVhc2UgbWFrZSBzdXJlIHlvdXIgZnVuY3Rpb25zXG4gIGFyZSBib3VuZCAodmlhIGFuIGFycm93IGZ1bmN0aW9uIG9yIG90aGVyIG1lYW5zKSBiZWZvcmUgcGFzc2luZyBpbnRvIGBvbmAhXG5cbiAgQG1ldGhvZCBvblxuICBAcHVibGljXG4qL1xuY2xhc3MgT25Nb2RpZmllck1hbmFnZXIgaW1wbGVtZW50cyBJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcjxPbk1vZGlmaWVyU3RhdGUgfCBudWxsLCBvYmplY3Q+IHtcbiAgcHVibGljIFNVUFBPUlRTX0VWRU5UX09QVElPTlM6IGJvb2xlYW4gPSBTVVBQT1JUU19FVkVOVF9PUFRJT05TO1xuXG4gIGdldERlYnVnTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnb24nO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJzKCk6IHsgYWRkczogbnVtYmVyOyByZW1vdmVzOiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHsgYWRkcywgcmVtb3ZlcyB9O1xuICB9XG5cbiAgY3JlYXRlKFxuICAgIF9vd25lcjogT3duZXIsXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCB8IEVsZW1lbnQsXG4gICAgX3N0YXRlOiBvYmplY3QsXG4gICAgYXJnczogQ2FwdHVyZWRBcmd1bWVudHNcbiAgKTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIG5ldyBPbk1vZGlmaWVyU3RhdGUoZWxlbWVudCBhcyBFbGVtZW50LCBhcmdzKTtcbiAgfVxuXG4gIGdldFRhZyhzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IFVwZGF0YWJsZVRhZyB8IG51bGwge1xuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlLnRhZztcbiAgfVxuXG4gIGluc3RhbGwoc3RhdGU6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGF0ZS51cGRhdGVGcm9tQXJncygpO1xuXG4gICAgbGV0IHsgZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyB9ID0gc3RhdGU7XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgcmVnaXN0ZXJEZXN0cnVjdG9yKHN0YXRlLCAoKSA9PiByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpKTtcblxuICAgIHN0YXRlLnNob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgdXBkYXRlKHN0YXRlOiBPbk1vZGlmaWVyU3RhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc3Rhc2ggcHJpb3Igc3RhdGUgZm9yIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiAgICBsZXQgeyBlbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zIH0gPSBzdGF0ZTtcblxuICAgIHN0YXRlLnVwZGF0ZUZyb21BcmdzKCk7XG5cbiAgICBpZiAoIXN0YXRlLnNob3VsZFVwZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHVzZSBwcmlvciBzdGF0ZSB2YWx1ZXMgZm9yIHJlbW92YWxcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuXG4gICAgLy8gcmVhZCB1cGRhdGVkIHZhbHVlcyBmcm9tIHRoZSBzdGF0ZSBvYmplY3RcbiAgICBhZGRFdmVudExpc3RlbmVyKHN0YXRlLmVsZW1lbnQsIHN0YXRlLmV2ZW50TmFtZSwgc3RhdGUuY2FsbGJhY2ssIHN0YXRlLm9wdGlvbnMpO1xuXG4gICAgc3RhdGUuc2hvdWxkVXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICBnZXREZXN0cm95YWJsZShzdGF0ZTogT25Nb2RpZmllclN0YXRlIHwgbnVsbCk6IE9uTW9kaWZpZXJTdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcihuZXcgT25Nb2RpZmllck1hbmFnZXIoKSwge30pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
{
"name": "@glimmer/runtime",
"version": "0.83.1",
"version": "0.84.0",
"description": "Minimal runtime needed to render Glimmer templates",

@@ -9,19 +9,19 @@ "repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/runtime",

"@glimmer/env": "0.1.7",
"@glimmer/global-context": "0.83.1",
"@glimmer/global-context": "0.84.0",
"@glimmer/low-level": "0.78.2",
"@glimmer/util": "0.83.1",
"@glimmer/reference": "0.83.1",
"@glimmer/validator": "0.83.1",
"@glimmer/wire-format": "0.83.1",
"@glimmer/interfaces": "0.83.1",
"@glimmer/destroyable": "0.83.1",
"@glimmer/owner": "0.83.1",
"@glimmer/program": "0.83.1",
"@glimmer/vm": "0.83.1",
"@glimmer/util": "0.84.0",
"@glimmer/reference": "0.84.0",
"@glimmer/validator": "0.84.0",
"@glimmer/wire-format": "0.84.0",
"@glimmer/interfaces": "0.84.0",
"@glimmer/destroyable": "0.84.0",
"@glimmer/owner": "0.84.0",
"@glimmer/program": "0.84.0",
"@glimmer/vm": "0.84.0",
"@simple-dom/interface": "^1.4.0"
},
"devDependencies": {
"@glimmer/local-debug-flags": "0.83.1",
"@glimmer/opcode-compiler": "0.83.1",
"@glimmer/debug": "0.83.1",
"@glimmer/local-debug-flags": "0.84.0",
"@glimmer/opcode-compiler": "0.84.0",
"@glimmer/debug": "0.84.0",
"@types/qunit": "^2.9.0"

@@ -28,0 +28,0 @@ },

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

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