@pipeline-builder/api-server 4.4.6 → 4.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -118,4 +118,4 @@ export async function withAiCallReservation(opts, body, onError) {
118
118
  function featureLabel(feature) {
119
119
  return feature.startsWith('agent-tool:') ? 'agent-tool' : feature;
120
120
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2FsbC1yZXNlcnZhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvYWktY2FsbC1yZXNlcnZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFDTCxZQUFZLEVBQ1osV0FBVyxFQUNYLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsZUFBZSxHQUloQixNQUFNLDRCQUE0QixDQUFDO0FBR3BDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsV0FBVyxHQUlaLE1BQU0sd0JBQXdCLENBQUM7QUFxRWhDLDhFQUE4RTtBQUM5RSxTQUFTLGlCQUFpQjtJQUN4QixPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDNUYsQ0FBQztBQUVELHNGQUFzRjtBQUN0RixTQUFTLGFBQWEsQ0FBQyxJQUE4QixFQUFFLFNBQTBCO0lBQy9FLE9BQU87UUFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEdBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckUsR0FBRyxJQUFJLENBQUMsV0FBVztRQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7UUFDdEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO0tBQy9CLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBOEIsRUFBRSxTQUEwQixFQUFFLE1BQWM7SUFDM0YsSUFBSSxTQUFT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QUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7XG4gIGFpQ2FsbFdlaWdodCxcbiAgZW1pdENvdW50ZXIsXG4gIGdldFNlcnZpY2VBdXRoSGVhZGVyLFxuICBxdW90YUF0dHJpYnV0aW9uRnJvbVJlcXVlc3QsXG4gIHNlcnZpY2VJZGVudGl0eSxcbiAgdHlwZSBBaUtleVNvdXJjZSxcbiAgdHlwZSBRdW90YVJlc2VydmVSZXN1bHQsXG4gIHR5cGUgUXVvdGFVc2FnZUF0dHJpYnV0aW9uLFxufSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcblxuaW1wb3J0IHtcbiAgcmVzZXJ2ZVF1b3RhU2xvdCxcbiAgcnVuV2l0aFNsb3QsXG4gIHR5cGUgUXVvdGFSZXNlcnZhdGlvbk9wdGlvbnMsXG4gIHR5cGUgUXVvdGFSZXNlcnZhdGlvbk91dGNvbWUsXG4gIHR5cGUgUXVvdGFTbG90LFxufSBmcm9tICcuL3F1b3RhLXJlc2VydmF0aW9uLmpzJztcblxuLyoqXG4gKiBXaGljaCBwcm9kdWN0IHN1cmZhY2UgYW4gQUkgY2FsbCBiZWxvbmdzIHRvIOKAlCB0aGUgdXNhZ2UgbGVkZ2VyJ3MgYGZlYXR1cmVgXG4gKiBkaW1lbnNpb24uIGBhZ2VudC10b29sOjxuYW1lPmAgaXMgYSBnZW5lcmF0aW9uIGFuIGFnZW50IFRPT0wgcnVucyBpbi1wcm9jZXNzXG4gKiAoaXRzIG93biBzbG90LCBiZXNpZGUgdGhlIHR1cm4ncykuXG4gKi9cbmV4cG9ydCB0eXBlIEFpRmVhdHVyZSA9XG4gIHwgJ2FzaydcbiAgfCAnYWdlbnQnXG4gIHwgYGFnZW50LXRvb2w6JHtzdHJpbmd9YFxuICB8ICdwaXBlbGluZS1nZW5lcmF0ZSdcbiAgfCAncGx1Z2luLWdlbmVyYXRlJ1xuICB8ICdyZXBvcnQtc3VtbWFyeSc7XG5cbi8qKiBUaGUgcGFydCBvZiBhIHJlc29sdmVkIG1vZGVsIHNlbGVjdGlvbiB0aGUgcmVzZXJ2YXRpb24gcmVhZHMgKGFpLWNvcmUgYFJlc29sdmVkTW9kZWxTZWxlY3Rpb25gIGZpdHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBaUNhbGxTZWxlY3Rpb24ge1xuICBwcm92aWRlcjogc3RyaW5nO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIGtleVNvdXJjZTogQWlLZXlTb3VyY2U7XG59XG5cbi8qKlxuICogV2h5IGFuIEFJIGNhbGwgc3BlbnQgbm8gYGFpQ2FsbHNgIHVuaXQ6XG4gKiAgLSBgYnlva2Ag4oCUIHRoZSBvcmcncyBvd24ga2V5IG9yIHRoZSBjYWxsZXIncyByZXF1ZXN0IGtleSBzZXJ2ZWQgaXRcbiAqICAgIChga2V5U291cmNlICE9PSAncGxhdGZvcm0nYCk6IHRoZSBjdXN0b21lciBwYXlzIHRoZSBwcm92aWRlciwgbm90IHVzO1xuICogIC0gYGltcGVyc29uYXRpb25gIOKAlCBhIHN5c2FkbWluIGltcGVyc29uYXRpb24gc2Vzc2lvbjogdmVuZG9yIHN0YWZmIG5laXRoZXJcbiAqICAgIHNwZW5kIHRoZSB0ZW5hbnQncyBidWRnZXQgbm9yIGdldCBsb2NrZWQgb3V0IGJ5IGl0IChtaXJyb3JzIHRoZSBhcGlDYWxsc1xuICogICAgZXhlbXB0aW9uOyB0aGUgY2FsbCBpcyBzdGlsbCBhdWRpdGVkKTtcbiAqICAtIGB1bndlaWdodGVkYCDigJQgdGhlIG1vZGVsJ3MgYEFJX01PREVMX1dFSUdIVFNgIHdlaWdodCBpcyAwIChieSBkZWZhdWx0IHRoZVxuICogICAgc2VsZi1ob3N0ZWQgT3BlbkFJLWNvbXBhdGlibGUgcHJvdmlkZXIpLlxuICogQSB3YWl2ZWQgY2FsbCBpcyBzdGlsbCByZWNvcmRlZCBpbiB0aGUgdXNhZ2UgbGVkZ2VyICh6ZXJvIHVuaXRzLCBpdHMgdG9rZW5zKS5cbiAqL1xuZXhwb3J0IHR5cGUgQWlTbG90V2FpdmVyID0gJ2J5b2snIHwgJ2ltcGVyc29uYXRpb24nIHwgJ3Vud2VpZ2h0ZWQnO1xuXG4vKiogVG9rZW4gY291bnRzIGFzIHRoZSBBSSBTREsgLyBhaS1jb3JlIHJlcG9ydCB0aGVtIChtaXNzaW5nIOKGkiAwKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlDYWxsVG9rZW5zIHtcbiAgaW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gIG91dHB1dFRva2Vucz86IG51bWJlcjtcbn1cblxuLyoqIEEgc2V0dGxlZC1ieS1ydWxlIGBhaUNhbGxzYCBzbG90LCBwbHVzIHdoYXQgdGhlIEFJIHBhdGggbmVlZHMgb24gdG9wIG9mIHtAbGluayBRdW90YVNsb3R9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBaUNhbGxTbG90IGV4dGVuZHMgUXVvdGFTbG90IHtcbiAgLyoqIFVuaXRzIHJlc2VydmVkOiB0aGUgbW9kZWwncyB3ZWlnaHQsIG9yIDAgd2hlbiB7QGxpbmsgd2FpdmVkfS4gKi9cbiAgcmVhZG9ubHkgYW1vdW50OiBudW1iZXI7XG4gIC8qKiBTZXQgd2hlbiBubyB1bml0IHdhcyByZXNlcnZlZCwgYW5kIHdoeS4gKi9cbiAgcmVhZG9ubHkgd2FpdmVkPzogQWlTbG90V2FpdmVyO1xuICAvKiogVGhlIGF0dHJpYnV0aW9uIHRoZSByZXNlcnZlLCByZWZ1bmQgYW5kIHVzYWdlIHJlcG9ydCBjYXJyeS4gKi9cbiAgcmVhZG9ubHkgYXR0cmlidXRpb246IFF1b3RhVXNhZ2VBdHRyaWJ1dGlvbjtcbiAgLyoqXG4gICAqIFJlcG9ydCB0aGUgY2FsbCdzIHRva2VuIHVzYWdlIHRvIHRoZSB1c2FnZSBsZWRnZXIgKG9uY2U7IGxhdGVyIGNhbGxzIGFyZVxuICAgKiBpZ25vcmVkKS4gRmlyZS1hbmQtZm9yZ2V0LiBDYWxsIGl0IGFmdGVyIHRoZSBjYWxsIHNldHRsZXMg4oCUIHN1Y2Nlc3MsIGFib3J0IG9yXG4gICAqIGZhaWx1cmUg4oCUIHdpdGggd2hhdGV2ZXIgdXNhZ2UgdGhlIHByb3ZpZGVyIHJlcG9ydGVkLlxuICAgKi9cbiAgcmVwb3J0VXNhZ2UodG9rZW5zOiBBaUNhbGxUb2tlbnMgfCB1bmRlZmluZWQpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFpQ2FsbFJlc2VydmF0aW9uT3B0aW9ucyBleHRlbmRzIE9taXQ8UXVvdGFSZXNlcnZhdGlvbk9wdGlvbnMsICd0eXBlJyB8ICdhbW91bnQnIHwgJ2F0dHJpYnV0aW9uJz4ge1xuICBmZWF0dXJlOiBBaUZlYXR1cmU7XG4gIC8qKlxuICAgKiBUaGUgaW5ib3VuZCByZXF1ZXN0LCB3aGVuIHRoZXJlIGlzIG9uZTogaXRzIHJvdXRlIHBhdHRlcm4gKyB2ZXJpZmllZFxuICAgKiBwcmluY2lwYWwgYmVjb21lIHRoZSBhdHRyaWJ1dGlvbiwgYW5kIGFuIGltcGVyc29uYXRpb24gc2Vzc2lvbiB3YWl2ZXMgdGhlXG4gICAqIHNsb3QuIEFic2VudCBmb3Igc2NoZWR1bGVkIHdvcmssIHdoaWNoIHBhc3NlcyB7QGxpbmsgYXR0cmlidXRpb259IGluc3RlYWQuXG4gICAqL1xuICByZXE/OiBQaWNrPFJlcXVlc3QsICd1c2VyJyB8ICdyb3V0ZScgfCAnbWV0aG9kJyB8ICdiYXNlVXJsJyB8ICdwYXJhbXMnIHwgJ2hlYWRlcnMnPjtcbiAgLyoqIEF0dHJpYnV0aW9uIG1lcmdlZCBPVkVSIHRoZSByZXF1ZXN0J3MgKGEgc2NoZWR1bGVyIG5hbWVzIGl0cyBwcmluY2lwYWwgKyByb3V0ZSBoZXJlKS4gKi9cbiAgYXR0cmlidXRpb24/OiBRdW90YVVzYWdlQXR0cmlidXRpb247XG59XG5cbi8qKiBUaGUgc3ludGhldGljIHJlc2VydmF0aW9uIGEgd2FpdmVkIHNsb3QgY2FycmllcyAobm90aGluZyB3YXMgcmVzZXJ2ZWQpLiAqL1xuZnVuY3Rpb24gd2FpdmVkUmVzZXJ2YXRpb24oKTogUXVvdGFSZXNlcnZlUmVzdWx0IHtcbiAgcmV0dXJuIHsgZXhjZWVkZWQ6IGZhbHNlLCBxdW90YTogeyB0eXBlOiAnYWlDYWxscycsIGxpbWl0OiAtMSwgdXNlZDogMCwgcmVtYWluaW5nOiAtMSB9IH07XG59XG5cbi8qKiBBdHRyaWJ1dGlvbiBmb3Igb25lIEFJIGNhbGw6IHJlcXVlc3QgKG9yIGV4cGxpY2l0KSArIGZlYXR1cmUsIG1vZGVsLCBrZXlTb3VyY2UuICovXG5mdW5jdGlvbiBhaUF0dHJpYnV0aW9uKG9wdHM6IEFpQ2FsbFJlc2VydmF0aW9uT3B0aW9ucywgc2VsZWN0aW9uOiBBaUNhbGxTZWxlY3Rpb24pOiBRdW90YVVzYWdlQXR0cmlidXRpb24ge1xuICByZXR1cm4ge1xuICAgIC4uLihvcHRzLnJlcSA/IHF1b3RhQXR0cmlidXRpb25Gcm9tUmVxdWVzdChvcHRzLnJlcSBhcyBSZXF1ZXN0KSA6IHt9KSxcbiAgICAuLi5vcHRzLmF0dHJpYnV0aW9uLFxuICAgIGZlYXR1cmU6IG9wdHMuZmVhdHVyZSxcbiAgICBtb2RlbDogc2VsZWN0aW9uLm1vZGVsSWQuc2xpY2UoMCwgMjAwKSxcbiAgICBrZXlTb3VyY2U6IHNlbGVjdGlvbi5rZXlTb3VyY2UsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHdhaXZlckZvcihvcHRzOiBBaUNhbGxSZXNlcnZhdGlvbk9wdGlvbnMsIHNlbGVjdGlvbjogQWlDYWxsU2VsZWN0aW9uLCB3ZWlnaHQ6IG51bWJlcik6IEFpU2xvdFdhaXZlciB8IHVuZGVmaW5lZCB7XG4gIGlmIChzZWxlY3Rpb24ua2V5U291cmNlICE9PSAncGxhdGZvcm0nKSByZXR1cm4gJ2J5b2snO1xuICBpZiAob3B0cy5yZXE/LnVzZXI/LmltcGVyc29uYXRvcklkKSByZXR1cm4gJ2ltcGVyc29uYXRpb24nO1xuICBpZiAod2VpZ2h0IDw9IDApIHJldHVybiAndW53ZWlnaHRlZCc7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzZXJ2ZSB0aGUgYGFpQ2FsbHNgIHNsb3QgZm9yIE9ORSBBSSBjYWxsIG9uIGFuIGFscmVhZHktcmVzb2x2ZWQgbW9kZWwg4oCUXG4gKiBvciB3YWl2ZSBpdCDigJQgYW5kIHJldHVybiB0aGUgaGFuZGxlOyB0aGUgY2FsbGVyIHNldHRsZXMgaXQgKGBtYXJrQ29uc3VtZWQoKWBcbiAqIG9uIHRoZSBwcm92aWRlcidzIGZpcnN0IHJlc3BvbnNlLCBgcmVmdW5kKClgIG9uIGEgcHJlLWNvbnRhY3QgZmFpbHVyZSxcbiAqIGByZXBvcnRVc2FnZSgpYCBvbmNlIHNldHRsZWQpLiBUaGUgcHJpbWl0aXZlIHVuZGVyXG4gKiB7QGxpbmsgd2l0aEFpQ2FsbFJlc2VydmF0aW9ufSwgZm9yIHdvcmsgdGhhdCBkb2VzIG5vdCBmaXQgb25lIGNhbGxiYWNrIChhblxuICogYWdlbnQgdG9vbCdzIGluLXByb2Nlc3MgZ2VuZXJhdGlvbiwgYSBzY2hlZHVsZWQgcmVwb3J0IHN1bW1hcnkpLlxuICpcbiAqIFRoZSBtb2RlbCBpcyByZXNvbHZlZCBGSVJTVCBiZWNhdXNlIGl0IGRlY2lkZXMgdGhlIGNoYXJnZTpcbiAqICAtIGEgQllPSyBrZXkgKGBrZXlTb3VyY2VgIGBvcmdgIC8gYHJlcXVlc3RgKSwgYW4gaW1wZXJzb25hdGlvbiBzZXNzaW9uIG9yIGFcbiAqICAgIHdlaWdodC0wIG1vZGVsIHJlc2VydmVzIE5PVEhJTkcgKHtAbGluayBBaVNsb3RXYWl2ZXJ9KTtcbiAqICAtIG90aGVyd2lzZSB0aGUgcmVzZXJ2YXRpb24gaXMgYGFpQ2FsbFdlaWdodChzZWxlY3Rpb24pYCB1bml0cyAoMSB1bmxlc3NcbiAqICAgIGBBSV9NT0RFTF9XRUlHSFRTYCBzYXlzIG90aGVyd2lzZSksIGF0dHJpYnV0ZWQgdG8gdGhlIHJvdXRlLCBwcmluY2lwYWwsXG4gKiAgICBmZWF0dXJlLCBtb2RlbCBhbmQga2V5IHNvdXJjZS5cbiAqIFRoZSBxdW90YSBzZXJ2aWNlIGFsc28gYXBwbGllcyB0aGUgb3JnJ3Mgb3B0aW9uYWwgQUkgY29udHJvbHMgdG8gdGhhdFxuICogcmVzZXJ2YXRpb24gKHBlci1tZW1iZXIgc2hhcmUsIHRva2VuIGJ1ZGdldCkgYW5kIGFuc3dlcnMgYSBkaXN0aW5jdCA0MjkgY29kZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc2VydmVBaUNhbGxTbG90KFxuICBvcHRzOiBBaUNhbGxSZXNlcnZhdGlvbk9wdGlvbnMsXG4gIHNlbGVjdGlvbjogQWlDYWxsU2VsZWN0aW9uLFxuKTogUHJvbWlzZTx7IHN0YXR1czogJ2RlbmllZCc7IHJlc2VydmF0aW9uOiBRdW90YVJlc2VydmVSZXN1bHQgfSB8IHsgc3RhdHVzOiAncmVzZXJ2ZWQnOyBzbG90OiBBaUNhbGxTbG90IH0+IHtcbiAgY29uc3Qgd2VpZ2h0ID0gYWlDYWxsV2VpZ2h0KHNlbGVjdGlvbik7XG4gIGNvbnN0IHdhaXZlZCA9IHdhaXZlckZvcihvcHRzLCBzZWxlY3Rpb24sIHdlaWdodCk7XG4gIGNvbnN0IGF0dHJpYnV0aW9uID0gYWlBdHRyaWJ1dGlvbihvcHRzLCBzZWxlY3Rpb24pO1xuXG4gIGxldCBiYXNlOiBRdW90YVNsb3Q7XG4gIGlmICh3YWl2ZWQpIHtcbiAgICBlbWl0Q291bnRlcignYWlfcXVvdGFfd2FpdmVkX3RvdGFsJywgeyBmZWF0dXJlOiBmZWF0dXJlTGFiZWwob3B0cy5mZWF0dXJlKSwgcmVhc29uOiB3YWl2ZWQgfSk7XG4gICAgLy8gTm90aGluZyByZXNlcnZlZCwgc28gbm90aGluZyB0byBrZWVwIG9yIGdpdmUgYmFjay5cbiAgICBiYXNlID0ge1xuICAgICAgc2VydmljZUF1dGg6IGdldFNlcnZpY2VBdXRoSGVhZGVyKHsgc2VydmljZU5hbWU6IG9wdHMuc2VydmljZU5hbWUgPz8gc2VydmljZUlkZW50aXR5KCksIG9yZ0lkOiBvcHRzLm9yZ0lkLCByb2xlOiAnbWVtYmVyJyB9KSxcbiAgICAgIHJlc2VydmF0aW9uOiB3YWl2ZWRSZXNlcnZhdGlvbigpLFxuICAgICAgbWFya0NvbnN1bWVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICByZWZ1bmQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJlc2VydmVkID0gYXdhaXQgcmVzZXJ2ZVF1b3RhU2xvdCh7IC4uLm9wdHMsIHR5cGU6ICdhaUNhbGxzJywgYW1vdW50OiB3ZWlnaHQsIGF0dHJpYnV0aW9uIH0pO1xuICAgIGlmIChyZXNlcnZlZC5zdGF0dXMgPT09ICdkZW5pZWQnKSByZXR1cm4gcmVzZXJ2ZWQ7XG4gICAgYmFzZSA9IHJlc2VydmVkLnNsb3Q7XG4gIH1cblxuICBsZXQgY29uc3VtZWQgPSBmYWxzZTtcbiAgbGV0IHJlcG9ydGVkID0gZmFsc2U7XG4gIGNvbnN0IHNsb3Q6IEFpQ2FsbFNsb3QgPSB7XG4gICAgc2VydmljZUF1dGg6IGJhc2Uuc2VydmljZUF1dGgsXG4gICAgcmVzZXJ2YXRpb246IGJhc2UucmVzZXJ2YXRpb24sXG4gICAgYW1vdW50OiB3YWl2ZWQgPyAwIDogd2VpZ2h0LFxuICAgIC4uLih3YWl2ZWQgPyB7IHdhaXZlZCB9IDoge30pLFxuICAgIGF0dHJpYnV0aW9uLFxuICAgIG1hcmtDb25zdW1lZDogKCkgPT4geyBjb25zdW1lZCA9IHRydWU7IGJhc2UubWFya0NvbnN1bWVkKCk7IH0sXG4gICAgcmVmdW5kOiAoKSA9PiBiYXNlLnJlZnVuZCgpLFxuICAgIHJlcG9ydFVzYWdlOiAodG9rZW5zKSA9PiB7XG4gICAgICBpZiAocmVwb3J0ZWQpIHJldHVybjtcbiAgICAgIHJlcG9ydGVkID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHRva2Vuc0luID0gdG9rZW5zPy5pbnB1dFRva2VucyA/PyAwO1xuICAgICAgY29uc3QgdG9rZW5zT3V0ID0gdG9rZW5zPy5vdXRwdXRUb2tlbnMgPz8gMDtcbiAgICAgIC8vIEEgY2FsbCB0aGF0IG5ldmVyIHJlYWNoZWQgdGhlIHByb3ZpZGVyIGFuZCBzcGVudCBubyB0b2tlbnMgaGFzIG5vdGhpbmdcbiAgICAgIC8vIHRvIHJlY29yZCAoaXRzIHJlc2VydmF0aW9uLCBpZiBhbnksIHdhcyByZWZ1bmRlZCBhbmQgbGVkZ2VyZWQgYXMgc3VjaCkuXG4gICAgICBpZiAodG9rZW5zSW4gKyB0b2tlbnNPdXQgPT09IDAgJiYgISh3YWl2ZWQgJiYgY29uc3VtZWQpKSByZXR1cm47XG4gICAgICB2b2lkIG9wdHMucXVvdGFTZXJ2aWNlLnJlcG9ydFVzYWdlPy4ob3B0cy5vcmdJZCwgJ2FpQ2FsbHMnLCBiYXNlLnNlcnZpY2VBdXRoLCB7IHRva2Vuc0luLCB0b2tlbnNPdXQgfSwgYXR0cmlidXRpb24pO1xuICAgIH0sXG4gIH07XG4gIHJldHVybiB7IHN0YXR1czogJ3Jlc2VydmVkJywgc2xvdCB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIG1vZGVsLCByZXNlcnZlIChvciB3YWl2ZSkgaXRzIGBhaUNhbGxzYCBzbG90LCBydW4gYGJvZHlgLCBhbmRcbiAqIHNldHRsZSBieSB0aGUge0BsaW5rIHdpdGhRdW90YVJlc2VydmF0aW9ufSBydWxlIOKAlCBrZWVwIG9uY2UgY29uc3VtZWQsIHJlZnVuZFxuICogd2hlbiB0aGUgYm9keSBmYWlscyBmaXJzdC5cbiAqXG4gKiBgcmVzb2x2ZWAgcnVucyBCRUZPUkUgYW55IHJlc2VydmF0aW9uIChpdHMgcmVzdWx0IGRlY2lkZXMgdGhlIGNoYXJnZSDigJQgc2VlXG4gKiB7QGxpbmsgcmVzZXJ2ZUFpQ2FsbFNsb3R9KTsgYSByZXNvbHV0aW9uIGZhaWx1cmUgKEFJIHN3aXRjaGVkIG9mZiwgYW5cbiAqIHVubG9hZGFibGUgb3JnIGtleSwgbm90aGluZyBjb25maWd1cmVkKSBnb2VzIHRvIGBvbkVycm9yYCB3aXRoIG5vIHNsb3QgdGFrZW4uXG4gKiBEZW5pZWQg4oaSIGB7IHN0YXR1czogJ2RlbmllZCcgfWAsIGFuc3dlcmVkIG9uIGByZXNgIHdoZW4gZ2l2ZW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoQWlDYWxsUmVzZXJ2YXRpb248VCwgUyBleHRlbmRzIEFpQ2FsbFNlbGVjdGlvbj4oXG4gIG9wdHM6IEFpQ2FsbFJlc2VydmF0aW9uT3B0aW9ucyAmIHsgcmVzb2x2ZTogKCkgPT4gUHJvbWlzZTxTPiB9LFxuICBib2R5OiAoc2xvdDogQWlDYWxsU2xvdCwgc2VsZWN0aW9uOiBTKSA9PiBQcm9taXNlPFQ+LFxuICBvbkVycm9yPzogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbik6IFByb21pc2U8UXVvdGFSZXNlcnZhdGlvbk91dGNvbWU8VD4+IHtcbiAgbGV0IHNlbGVjdGlvbjogUztcbiAgdHJ5IHtcbiAgICBzZWxlY3Rpb24gPSBhd2FpdCBvcHRzLnJlc29sdmUoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIW9uRXJyb3IpIHRocm93IGVycm9yO1xuICAgIGF3YWl0IG9uRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7IHN0YXR1czogJ2ZhaWxlZCcsIGVycm9yIH07XG4gIH1cbiAgY29uc3QgcmVzZXJ2ZWQgPSBhd2FpdCByZXNlcnZlQWlDYWxsU2xvdChvcHRzLCBzZWxlY3Rpb24pO1xuICBpZiAocmVzZXJ2ZWQuc3RhdHVzID09PSAnZGVuaWVkJykgcmV0dXJuIHJlc2VydmVkO1xuICByZXR1cm4gcnVuV2l0aFNsb3QocmVzZXJ2ZWQuc2xvdCwgKHNsb3QpID0+IGJvZHkoc2xvdCwgc2VsZWN0aW9uKSwgb25FcnJvcik7XG59XG5cbi8qKiBCb3VuZGVkIG1ldHJpYyBsYWJlbDogYGFnZW50LXRvb2w6PG5hbWU+YCBjb2xsYXBzZXMgdG8gYGFnZW50LXRvb2xgLiAqL1xuZnVuY3Rpb24gZmVhdHVyZUxhYmVsKGZlYXR1cmU6IEFpRmVhdHVyZSk6IHN0cmluZyB7XG4gIHJldHVybiBmZWF0dXJlLnN0YXJ0c1dpdGgoJ2FnZW50LXRvb2w6JykgPyAnYWdlbnQtdG9vbCcgOiBmZWF0dXJlO1xufVxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2FsbC1yZXNlcnZhdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9haS1jYWxsLXJlc2VydmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixlQUFlLEdBSWhCLE1BQU0sNEJBQTRCLENBQUM7QUFHcEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEdBSVosTUFBTSx3QkFBd0IsQ0FBQztBQXFFaEMsOEVBQThFO0FBQzlFLFNBQVMsaUJBQWlCO0lBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUM1RixDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLFNBQVMsYUFBYSxDQUFDLElBQThCLEVBQUUsU0FBMEI7SUFDL0UsT0FBTztRQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsR0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxHQUFHLElBQUksQ0FBQyxXQUFXO1FBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixLQUFLLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUN0QyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7S0FDL0IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUE4QixFQUFFLFNBQTBCLEVBQUUsTUFBYztJQUMzRixJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssVUFBVTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYztRQUFFLE9BQU8sZUFBZSxDQUFDO0lBQzNELElBQUksTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPLFlBQVksQ0FBQztJQUNyQyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUE4QixFQUM5QixTQUEwQjtJQUUxQixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVuRCxJQUFJLElBQWUsQ0FBQztJQUNwQixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsV0FBVyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUYscURBQXFEO1FBQ3JELElBQUksR0FBRztZQUNMLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUM1SCxXQUFXLEVBQUUsaUJBQWlCLEVBQUU7WUFDaEMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7U0FDeEIsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFDbEQsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNyQixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsTUFBTSxJQUFJLEdBQWU7UUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1FBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztRQUM3QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDM0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdCLFdBQVc7UUFDWCxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDM0IsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRO2dCQUFFLE9BQU87WUFDckIsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQixNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQztZQUMxQyxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsWUFBWSxJQUFJLENBQUMsQ0FBQztZQUM1Qyx5RUFBeUU7WUFDekUsMEVBQTBFO1lBQzFFLElBQUksUUFBUSxHQUFHLFNBQVMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUM7Z0JBQUUsT0FBTztZQUNoRSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0SCxDQUFDO0tBQ0YsQ0FBQztJQUNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxJQUE4RCxFQUM5RCxJQUFvRCxFQUNwRCxPQUFrRDtJQUVsRCxJQUFJLFNBQVksQ0FBQztJQUNqQixJQUFJLENBQUM7UUFDSCxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sS0FBSyxDQUFDO1FBQzFCLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGlCQUFpQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQ2xELE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxTQUFTLFlBQVksQ0FBQyxPQUFrQjtJQUN0QyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHtcbiAgYWlDYWxsV2VpZ2h0LFxuICBlbWl0Q291bnRlcixcbiAgZ2V0U2VydmljZUF1dGhIZWFkZXIsXG4gIHF1b3RhQXR0cmlidXRpb25Gcm9tUmVxdWVzdCxcbiAgc2VydmljZUlkZW50aXR5LFxuICB0eXBlIEFpS2V5U291cmNlLFxuICB0eXBlIFF1b3RhUmVzZXJ2ZVJlc3VsdCxcbiAgdHlwZSBRdW90YVVzYWdlQXR0cmlidXRpb24sXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQge1xuICByZXNlcnZlUXVvdGFTbG90LFxuICBydW5XaXRoU2xvdCxcbiAgdHlwZSBRdW90YVJlc2VydmF0aW9uT3B0aW9ucyxcbiAgdHlwZSBRdW90YVJlc2VydmF0aW9uT3V0Y29tZSxcbiAgdHlwZSBRdW90YVNsb3QsXG59IGZyb20gJy4vcXVvdGEtcmVzZXJ2YXRpb24uanMnO1xuXG4vKipcbiAqIFdoaWNoIHByb2R1Y3Qgc3VyZmFjZSBhbiBBSSBjYWxsIGJlbG9uZ3MgdG8g4oCUIHRoZSB1c2FnZSBsZWRnZXIncyBgZmVhdHVyZWBcbiAqIGRpbWVuc2lvbi4gYGFnZW50LXRvb2w6PG5hbWU+YCBpcyBhIGdlbmVyYXRpb24gYW4gYWdlbnQgVE9PTCBydW5zIGluLXByb2Nlc3NcbiAqIChpdHMgb3duIHNsb3QsIGJlc2lkZSB0aGUgdHVybidzKS5cbiAqL1xuZXhwb3J0IHR5cGUgQWlGZWF0dXJlID1cbiAgfCAnYXNrJ1xuICB8ICdhZ2VudCdcbiAgfCBgYWdlbnQtdG9vbDoke3N0cmluZ31gXG4gIHwgJ3BpcGVsaW5lLWdlbmVyYXRlJ1xuICB8ICdwbHVnaW4tZ2VuZXJhdGUnXG4gIHwgJ3JlcG9ydC1zdW1tYXJ5JztcblxuLyoqIFRoZSBwYXJ0IG9mIGEgcmVzb2x2ZWQgbW9kZWwgc2VsZWN0aW9uIHRoZSByZXNlcnZhdGlvbiByZWFkcyAoYWktY29yZSBgUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbmAgZml0cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEFpQ2FsbFNlbGVjdGlvbiB7XG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAga2V5U291cmNlOiBBaUtleVNvdXJjZTtcbn1cblxuLyoqXG4gKiBXaHkgYW4gQUkgY2FsbCBzcGVudCBubyBgYWlDYWxsc2AgdW5pdDpcbiAqICAtIGBieW9rYCDigJQgdGhlIG9yZydzIG93biBrZXkgb3IgdGhlIGNhbGxlcidzIHJlcXVlc3Qga2V5IHNlcnZlZCBpdFxuICogICAgKGBrZXlTb3VyY2UgIT09ICdwbGF0Zm9ybSdgKTogdGhlIGN1c3RvbWVyIHBheXMgdGhlIHByb3ZpZGVyLCBub3QgdXM7XG4gKiAgLSBgaW1wZXJzb25hdGlvbmAg4oCUIGEgc3lzYWRtaW4gaW1wZXJzb25hdGlvbiBzZXNzaW9uOiB2ZW5kb3Igc3RhZmYgbmVpdGhlclxuICogICAgc3BlbmQgdGhlIHRlbmFudCdzIGJ1ZGdldCBub3IgZ2V0IGxvY2tlZCBvdXQgYnkgaXQgKG1pcnJvcnMgdGhlIGFwaUNhbGxzXG4gKiAgICBleGVtcHRpb247IHRoZSBjYWxsIGlzIHN0aWxsIGF1ZGl0ZWQpO1xuICogIC0gYHVud2VpZ2h0ZWRgIOKAlCB0aGUgbW9kZWwncyBgQUlfTU9ERUxfV0VJR0hUU2Agd2VpZ2h0IGlzIDAgKGJ5IGRlZmF1bHQgdGhlXG4gKiAgICBzZWxmLWhvc3RlZCBPcGVuQUktY29tcGF0aWJsZSBwcm92aWRlcikuXG4gKiBBIHdhaXZlZCBjYWxsIGlzIHN0aWxsIHJlY29yZGVkIGluIHRoZSB1c2FnZSBsZWRnZXIgKHplcm8gdW5pdHMsIGl0cyB0b2tlbnMpLlxuICovXG5leHBvcnQgdHlwZSBBaVNsb3RXYWl2ZXIgPSAnYnlvaycgfCAnaW1wZXJzb25hdGlvbicgfCAndW53ZWlnaHRlZCc7XG5cbi8qKiBUb2tlbiBjb3VudHMgYXMgdGhlIEFJIFNESyAvIGFpLWNvcmUgcmVwb3J0IHRoZW0gKG1pc3Npbmcg4oaSIDApLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBaUNhbGxUb2tlbnMge1xuICBpbnB1dFRva2Vucz86IG51bWJlcjtcbiAgb3V0cHV0VG9rZW5zPzogbnVtYmVyO1xufVxuXG4vKiogQSBzZXR0bGVkLWJ5LXJ1bGUgYGFpQ2FsbHNgIHNsb3QsIHBsdXMgd2hhdCB0aGUgQUkgcGF0aCBuZWVkcyBvbiB0b3Agb2Yge0BsaW5rIFF1b3RhU2xvdH0uICovXG5leHBvcnQgaW50ZXJmYWNlIEFpQ2FsbFNsb3QgZXh0ZW5kcyBRdW90YVNsb3Qge1xuICAvKiogVW5pdHMgcmVzZXJ2ZWQ6IHRoZSBtb2RlbCdzIHdlaWdodCwgb3IgMCB3aGVuIHtAbGluayB3YWl2ZWR9LiAqL1xuICByZWFkb25seSBhbW91bnQ6IG51bWJlcjtcbiAgLyoqIFNldCB3aGVuIG5vIHVuaXQgd2FzIHJlc2VydmVkLCBhbmQgd2h5LiAqL1xuICByZWFkb25seSB3YWl2ZWQ/OiBBaVNsb3RXYWl2ZXI7XG4gIC8qKiBUaGUgYXR0cmlidXRpb24gdGhlIHJlc2VydmUsIHJlZnVuZCBhbmQgdXNhZ2UgcmVwb3J0IGNhcnJ5LiAqL1xuICByZWFkb25seSBhdHRyaWJ1dGlvbjogUXVvdGFVc2FnZUF0dHJpYnV0aW9uO1xuICAvKipcbiAgICogUmVwb3J0IHRoZSBjYWxsJ3MgdG9rZW4gdXNhZ2UgdG8gdGhlIHVzYWdlIGxlZGdlciAob25jZTsgbGF0ZXIgY2FsbHMgYXJlXG4gICAqIGlnbm9yZWQpLiBGaXJlLWFuZC1mb3JnZXQuIENhbGwgaXQgYWZ0ZXIgdGhlIGNhbGwgc2V0dGxlcyDigJQgc3VjY2VzcywgYWJvcnQgb3JcbiAgICogZmFpbHVyZSDigJQgd2l0aCB3aGF0ZXZlciB1c2FnZSB0aGUgcHJvdmlkZXIgcmVwb3J0ZWQuXG4gICAqL1xuICByZXBvcnRVc2FnZSh0b2tlbnM6IEFpQ2FsbFRva2VucyB8IHVuZGVmaW5lZCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWlDYWxsUmVzZXJ2YXRpb25PcHRpb25zIGV4dGVuZHMgT21pdDxRdW90YVJlc2VydmF0aW9uT3B0aW9ucywgJ3R5cGUnIHwgJ2Ftb3VudCcgfCAnYXR0cmlidXRpb24nPiB7XG4gIGZlYXR1cmU6IEFpRmVhdHVyZTtcbiAgLyoqXG4gICAqIFRoZSBpbmJvdW5kIHJlcXVlc3QsIHdoZW4gdGhlcmUgaXMgb25lOiBpdHMgcm91dGUgcGF0dGVybiArIHZlcmlmaWVkXG4gICAqIHByaW5jaXBhbCBiZWNvbWUgdGhlIGF0dHJpYnV0aW9uLCBhbmQgYW4gaW1wZXJzb25hdGlvbiBzZXNzaW9uIHdhaXZlcyB0aGVcbiAgICogc2xvdC4gQWJzZW50IGZvciBzY2hlZHVsZWQgd29yaywgd2hpY2ggcGFzc2VzIHtAbGluayBhdHRyaWJ1dGlvbn0gaW5zdGVhZC5cbiAgICovXG4gIHJlcT86IFBpY2s8UmVxdWVzdCwgJ3VzZXInIHwgJ3JvdXRlJyB8ICdtZXRob2QnIHwgJ2Jhc2VVcmwnIHwgJ3BhcmFtcycgfCAnaGVhZGVycyc+O1xuICAvKiogQXR0cmlidXRpb24gbWVyZ2VkIE9WRVIgdGhlIHJlcXVlc3QncyAoYSBzY2hlZHVsZXIgbmFtZXMgaXRzIHByaW5jaXBhbCArIHJvdXRlIGhlcmUpLiAqL1xuICBhdHRyaWJ1dGlvbj86IFF1b3RhVXNhZ2VBdHRyaWJ1dGlvbjtcbn1cblxuLyoqIFRoZSBzeW50aGV0aWMgcmVzZXJ2YXRpb24gYSB3YWl2ZWQgc2xvdCBjYXJyaWVzIChub3RoaW5nIHdhcyByZXNlcnZlZCkuICovXG5mdW5jdGlvbiB3YWl2ZWRSZXNlcnZhdGlvbigpOiBRdW90YVJlc2VydmVSZXN1bHQge1xuICByZXR1cm4geyBleGNlZWRlZDogZmFsc2UsIHF1b3RhOiB7IHR5cGU6ICdhaUNhbGxzJywgbGltaXQ6IC0xLCB1c2VkOiAwLCByZW1haW5pbmc6IC0xIH0gfTtcbn1cblxuLyoqIEF0dHJpYnV0aW9uIGZvciBvbmUgQUkgY2FsbDogcmVxdWVzdCAob3IgZXhwbGljaXQpICsgZmVhdHVyZSwgbW9kZWwsIGtleVNvdXJjZS4gKi9cbmZ1bmN0aW9uIGFpQXR0cmlidXRpb24ob3B0czogQWlDYWxsUmVzZXJ2YXRpb25PcHRpb25zLCBzZWxlY3Rpb246IEFpQ2FsbFNlbGVjdGlvbik6IFF1b3RhVXNhZ2VBdHRyaWJ1dGlvbiB7XG4gIHJldHVybiB7XG4gICAgLi4uKG9wdHMucmVxID8gcXVvdGFBdHRyaWJ1dGlvbkZyb21SZXF1ZXN0KG9wdHMucmVxIGFzIFJlcXVlc3QpIDoge30pLFxuICAgIC4uLm9wdHMuYXR0cmlidXRpb24sXG4gICAgZmVhdHVyZTogb3B0cy5mZWF0dXJlLFxuICAgIG1vZGVsOiBzZWxlY3Rpb24ubW9kZWxJZC5zbGljZSgwLCAyMDApLFxuICAgIGtleVNvdXJjZTogc2VsZWN0aW9uLmtleVNvdXJjZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2FpdmVyRm9yKG9wdHM6IEFpQ2FsbFJlc2VydmF0aW9uT3B0aW9ucywgc2VsZWN0aW9uOiBBaUNhbGxTZWxlY3Rpb24sIHdlaWdodDogbnVtYmVyKTogQWlTbG90V2FpdmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNlbGVjdGlvbi5rZXlTb3VyY2UgIT09ICdwbGF0Zm9ybScpIHJldHVybiAnYnlvayc7XG4gIGlmIChvcHRzLnJlcT8udXNlcj8uaW1wZXJzb25hdG9ySWQpIHJldHVybiAnaW1wZXJzb25hdGlvbic7XG4gIGlmICh3ZWlnaHQgPD0gMCkgcmV0dXJuICd1bndlaWdodGVkJztcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXNlcnZlIHRoZSBgYWlDYWxsc2Agc2xvdCBmb3IgT05FIEFJIGNhbGwgb24gYW4gYWxyZWFkeS1yZXNvbHZlZCBtb2RlbCDigJRcbiAqIG9yIHdhaXZlIGl0IOKAlCBhbmQgcmV0dXJuIHRoZSBoYW5kbGU7IHRoZSBjYWxsZXIgc2V0dGxlcyBpdCAoYG1hcmtDb25zdW1lZCgpYFxuICogb24gdGhlIHByb3ZpZGVyJ3MgZmlyc3QgcmVzcG9uc2UsIGByZWZ1bmQoKWAgb24gYSBwcmUtY29udGFjdCBmYWlsdXJlLFxuICogYHJlcG9ydFVzYWdlKClgIG9uY2Ugc2V0dGxlZCkuIFRoZSBwcmltaXRpdmUgdW5kZXJcbiAqIHtAbGluayB3aXRoQWlDYWxsUmVzZXJ2YXRpb259LCBmb3Igd29yayB0aGF0IGRvZXMgbm90IGZpdCBvbmUgY2FsbGJhY2sgKGFuXG4gKiBhZ2VudCB0b29sJ3MgaW4tcHJvY2VzcyBnZW5lcmF0aW9uLCBhIHNjaGVkdWxlZCByZXBvcnQgc3VtbWFyeSkuXG4gKlxuICogVGhlIG1vZGVsIGlzIHJlc29sdmVkIEZJUlNUIGJlY2F1c2UgaXQgZGVjaWRlcyB0aGUgY2hhcmdlOlxuICogIC0gYSBCWU9LIGtleSAoYGtleVNvdXJjZWAgYG9yZ2AgLyBgcmVxdWVzdGApLCBhbiBpbXBlcnNvbmF0aW9uIHNlc3Npb24gb3IgYVxuICogICAgd2VpZ2h0LTAgbW9kZWwgcmVzZXJ2ZXMgTk9USElORyAoe0BsaW5rIEFpU2xvdFdhaXZlcn0pO1xuICogIC0gb3RoZXJ3aXNlIHRoZSByZXNlcnZhdGlvbiBpcyBgYWlDYWxsV2VpZ2h0KHNlbGVjdGlvbilgIHVuaXRzICgxIHVubGVzc1xuICogICAgYEFJX01PREVMX1dFSUdIVFNgIHNheXMgb3RoZXJ3aXNlKSwgYXR0cmlidXRlZCB0byB0aGUgcm91dGUsIHByaW5jaXBhbCxcbiAqICAgIGZlYXR1cmUsIG1vZGVsIGFuZCBrZXkgc291cmNlLlxuICogVGhlIHF1b3RhIHNlcnZpY2UgYWxzbyBhcHBsaWVzIHRoZSBvcmcncyBvcHRpb25hbCBBSSBjb250cm9scyB0byB0aGF0XG4gKiByZXNlcnZhdGlvbiAocGVyLW1lbWJlciBzaGFyZSwgdG9rZW4gYnVkZ2V0KSBhbmQgYW5zd2VycyBhIGRpc3RpbmN0IDQyOSBjb2RlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzZXJ2ZUFpQ2FsbFNsb3QoXG4gIG9wdHM6IEFpQ2FsbFJlc2VydmF0aW9uT3B0aW9ucyxcbiAgc2VsZWN0aW9uOiBBaUNhbGxTZWxlY3Rpb24sXG4pOiBQcm9taXNlPHsgc3RhdHVzOiAnZGVuaWVkJzsgcmVzZXJ2YXRpb246IFF1b3RhUmVzZXJ2ZVJlc3VsdCB9IHwgeyBzdGF0dXM6ICdyZXNlcnZlZCc7IHNsb3Q6IEFpQ2FsbFNsb3QgfT4ge1xuICBjb25zdCB3ZWlnaHQgPSBhaUNhbGxXZWlnaHQoc2VsZWN0aW9uKTtcbiAgY29uc3Qgd2FpdmVkID0gd2FpdmVyRm9yKG9wdHMsIHNlbGVjdGlvbiwgd2VpZ2h0KTtcbiAgY29uc3QgYXR0cmlidXRpb24gPSBhaUF0dHJpYnV0aW9uKG9wdHMsIHNlbGVjdGlvbik7XG5cbiAgbGV0IGJhc2U6IFF1b3RhU2xvdDtcbiAgaWYgKHdhaXZlZCkge1xuICAgIGVtaXRDb3VudGVyKCdhaV9xdW90YV93YWl2ZWRfdG90YWwnLCB7IGZlYXR1cmU6IGZlYXR1cmVMYWJlbChvcHRzLmZlYXR1cmUpLCByZWFzb246IHdhaXZlZCB9KTtcbiAgICAvLyBOb3RoaW5nIHJlc2VydmVkLCBzbyBub3RoaW5nIHRvIGtlZXAgb3IgZ2l2ZSBiYWNrLlxuICAgIGJhc2UgPSB7XG4gICAgICBzZXJ2aWNlQXV0aDogZ2V0U2VydmljZUF1dGhIZWFkZXIoeyBzZXJ2aWNlTmFtZTogb3B0cy5zZXJ2aWNlTmFtZSA/PyBzZXJ2aWNlSWRlbnRpdHkoKSwgb3JnSWQ6IG9wdHMub3JnSWQsIHJvbGU6ICdtZW1iZXInIH0pLFxuICAgICAgcmVzZXJ2YXRpb246IHdhaXZlZFJlc2VydmF0aW9uKCksXG4gICAgICBtYXJrQ29uc3VtZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIHJlZnVuZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVzZXJ2ZWQgPSBhd2FpdCByZXNlcnZlUXVvdGFTbG90KHsgLi4ub3B0cywgdHlwZTogJ2FpQ2FsbHMnLCBhbW91bnQ6IHdlaWdodCwgYXR0cmlidXRpb24gfSk7XG4gICAgaWYgKHJlc2VydmVkLnN0YXR1cyA9PT0gJ2RlbmllZCcpIHJldHVybiByZXNlcnZlZDtcbiAgICBiYXNlID0gcmVzZXJ2ZWQuc2xvdDtcbiAgfVxuXG4gIGxldCBjb25zdW1lZCA9IGZhbHNlO1xuICBsZXQgcmVwb3J0ZWQgPSBmYWxzZTtcbiAgY29uc3Qgc2xvdDogQWlDYWxsU2xvdCA9IHtcbiAgICBzZXJ2aWNlQXV0aDogYmFzZS5zZXJ2aWNlQXV0aCxcbiAgICByZXNlcnZhdGlvbjogYmFzZS5yZXNlcnZhdGlvbixcbiAgICBhbW91bnQ6IHdhaXZlZCA/IDAgOiB3ZWlnaHQsXG4gICAgLi4uKHdhaXZlZCA/IHsgd2FpdmVkIH0gOiB7fSksXG4gICAgYXR0cmlidXRpb24sXG4gICAgbWFya0NvbnN1bWVkOiAoKSA9PiB7IGNvbnN1bWVkID0gdHJ1ZTsgYmFzZS5tYXJrQ29uc3VtZWQoKTsgfSxcbiAgICByZWZ1bmQ6ICgpID0+IGJhc2UucmVmdW5kKCksXG4gICAgcmVwb3J0VXNhZ2U6ICh0b2tlbnMpID0+IHtcbiAgICAgIGlmIChyZXBvcnRlZCkgcmV0dXJuO1xuICAgICAgcmVwb3J0ZWQgPSB0cnVlO1xuICAgICAgY29uc3QgdG9rZW5zSW4gPSB0b2tlbnM/LmlucHV0VG9rZW5zID8/IDA7XG4gICAgICBjb25zdCB0b2tlbnNPdXQgPSB0b2tlbnM/Lm91dHB1dFRva2VucyA/PyAwO1xuICAgICAgLy8gQSBjYWxsIHRoYXQgbmV2ZXIgcmVhY2hlZCB0aGUgcHJvdmlkZXIgYW5kIHNwZW50IG5vIHRva2VucyBoYXMgbm90aGluZ1xuICAgICAgLy8gdG8gcmVjb3JkIChpdHMgcmVzZXJ2YXRpb24sIGlmIGFueSwgd2FzIHJlZnVuZGVkIGFuZCBsZWRnZXJlZCBhcyBzdWNoKS5cbiAgICAgIGlmICh0b2tlbnNJbiArIHRva2Vuc091dCA9PT0gMCAmJiAhKHdhaXZlZCAmJiBjb25zdW1lZCkpIHJldHVybjtcbiAgICAgIHZvaWQgb3B0cy5xdW90YVNlcnZpY2UucmVwb3J0VXNhZ2U/LihvcHRzLm9yZ0lkLCAnYWlDYWxscycsIGJhc2Uuc2VydmljZUF1dGgsIHsgdG9rZW5zSW4sIHRva2Vuc091dCB9LCBhdHRyaWJ1dGlvbik7XG4gICAgfSxcbiAgfTtcbiAgcmV0dXJuIHsgc3RhdHVzOiAncmVzZXJ2ZWQnLCBzbG90IH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgbW9kZWwsIHJlc2VydmUgKG9yIHdhaXZlKSBpdHMgYGFpQ2FsbHNgIHNsb3QsIHJ1biBgYm9keWAsIGFuZFxuICogc2V0dGxlIGJ5IHRoZSB7QGxpbmsgd2l0aFF1b3RhUmVzZXJ2YXRpb259IHJ1bGUg4oCUIGtlZXAgb25jZSBjb25zdW1lZCwgcmVmdW5kXG4gKiB3aGVuIHRoZSBib2R5IGZhaWxzIGZpcnN0LlxuICpcbiAqIGByZXNvbHZlYCBydW5zIEJFRk9SRSBhbnkgcmVzZXJ2YXRpb24gKGl0cyByZXN1bHQgZGVjaWRlcyB0aGUgY2hhcmdlIOKAlCBzZWVcbiAqIHtAbGluayByZXNlcnZlQWlDYWxsU2xvdH0pOyBhIHJlc29sdXRpb24gZmFpbHVyZSAoQUkgc3dpdGNoZWQgb2ZmLCBhblxuICogdW5sb2FkYWJsZSBvcmcga2V5LCBub3RoaW5nIGNvbmZpZ3VyZWQpIGdvZXMgdG8gYG9uRXJyb3JgIHdpdGggbm8gc2xvdCB0YWtlbi5cbiAqIERlbmllZCDihpIgYHsgc3RhdHVzOiAnZGVuaWVkJyB9YCwgYW5zd2VyZWQgb24gYHJlc2Agd2hlbiBnaXZlbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhBaUNhbGxSZXNlcnZhdGlvbjxULCBTIGV4dGVuZHMgQWlDYWxsU2VsZWN0aW9uPihcbiAgb3B0czogQWlDYWxsUmVzZXJ2YXRpb25PcHRpb25zICYgeyByZXNvbHZlOiAoKSA9PiBQcm9taXNlPFM+IH0sXG4gIGJvZHk6IChzbG90OiBBaUNhbGxTbG90LCBzZWxlY3Rpb246IFMpID0+IFByb21pc2U8VD4sXG4gIG9uRXJyb3I/OiAoZXJyb3I6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuKTogUHJvbWlzZTxRdW90YVJlc2VydmF0aW9uT3V0Y29tZTxUPj4ge1xuICBsZXQgc2VsZWN0aW9uOiBTO1xuICB0cnkge1xuICAgIHNlbGVjdGlvbiA9IGF3YWl0IG9wdHMucmVzb2x2ZSgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICghb25FcnJvcikgdGhyb3cgZXJyb3I7XG4gICAgYXdhaXQgb25FcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiAnZmFpbGVkJywgZXJyb3IgfTtcbiAgfVxuICBjb25zdCByZXNlcnZlZCA9IGF3YWl0IHJlc2VydmVBaUNhbGxTbG90KG9wdHMsIHNlbGVjdGlvbik7XG4gIGlmIChyZXNlcnZlZC5zdGF0dXMgPT09ICdkZW5pZWQnKSByZXR1cm4gcmVzZXJ2ZWQ7XG4gIHJldHVybiBydW5XaXRoU2xvdChyZXNlcnZlZC5zbG90LCAoc2xvdCkgPT4gYm9keShzbG90LCBzZWxlY3Rpb24pLCBvbkVycm9yKTtcbn1cblxuLyoqIEJvdW5kZWQgbWV0cmljIGxhYmVsOiBgYWdlbnQtdG9vbDo8bmFtZT5gIGNvbGxhcHNlcyB0byBgYWdlbnQtdG9vbGAuICovXG5mdW5jdGlvbiBmZWF0dXJlTGFiZWwoZmVhdHVyZTogQWlGZWF0dXJlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0aCgnYWdlbnQtdG9vbDonKSA/ICdhZ2VudC10b29sJyA6IGZlYXR1cmU7XG59XG4iXX0=
@@ -5,7 +5,7 @@ import { Config, CoreConstants } from '@pipeline-builder/pipeline-core';
5
5
  import { getConnection } from '@pipeline-builder/pipeline-data';
6
6
  import compression from 'compression';
7
7
  import cors from 'cors';
8
- import express, {} from 'express';
8
+ import express from 'express';
9
9
  import rateLimit, { ipKeyGenerator } from 'express-rate-limit';
10
10
  import helmet from 'helmet';
11
11
  import swaggerUi from 'swagger-ui-express';
@@ -393,4 +393,4 @@ export function createApp(options = {}) {
393
393
  wireSse(app, sseManager);
394
394
  return { app, sseManager };
395
395
  }
396
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2FwcC1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNVLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxPQUFPLEVBQUUsRUFBZ0UsTUFBTSxTQUFTLENBQUM7QUFDaEcsT0FBTyxTQUFTLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN6SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFD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QUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM5RCxJQUFJLGVBQWU7UUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEQscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFM0IsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSw0RUFBNEU7SUFDNUUsK0VBQStFO0lBQy9FLGlFQUFpRTtJQUNqRSw4REFBOEQ7SUFFOUQsSUFBSSxTQUFTO1FBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUV4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgc2VuZFN1Y2Nlc3MsIHNlbmRFcnJvciwgZ2VuZXJhdGVPcGVuQXBpU3BlYywgRXJyb3JDb2RlLCBjcmVhdGVMb2dnZXIsIHZlcmlmeVNlcnZpY2VQcmluY2lwYWwsIGNyZWF0ZUhlYWx0aFJvdXRlciwgc2V0Q291bnRlckVtaXR0ZXIsIHNldEdhdWdlRW1pdHRlciwgcmVxdWlyZUF1dGgsIHNhZmVFcXVhbCwgY3JlYXRlRW52U3NlVGlja2V0U3RvcmUsIFNTRV9USUNLRVRfVFRMX01TLCBhdWRpdENvbnRleHRGcm9tUmVxdWVzdCwgcnVuV2l0aEF1ZGl0Q29udGV4dCwgc2FuaXRpemVDb3JyZWxhdGlvbklkIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBPcGVuQXBpU3BlY09wdGlvbnMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBDb25maWcsIENvcmVDb25zdGFudHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IGdldENvbm5lY3Rpb24gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcbmltcG9ydCBjb21wcmVzc2lvbiBmcm9tICdjb21wcmVzc2lvbic7XG5pbXBvcnQgY29ycyBmcm9tICdjb3JzJztcbmltcG9ydCBleHByZXNzLCB7IHR5cGUgRXhwcmVzcywgdHlwZSBOZXh0RnVuY3Rpb24sIHR5cGUgUmVxdWVzdCwgdHlwZSBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHJhdGVMaW1pdCwgeyBpcEtleUdlbmVyYXRvciB9IGZyb20gJ2V4cHJlc3MtcmF0ZS1saW1pdCc7XG5pbXBvcnQgaGVsbWV0IGZyb20gJ2hlbG1ldCc7XG5pbXBvcnQgc3dhZ2dlclVpIGZyb20gJ3N3YWdnZXItdWktZXhwcmVzcyc7XG5pbXBvcnQgeyB2NyBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBldGFnTWlkZGxld2FyZSB9IGZyb20gJy4vZXRhZy1taWRkbGV3YXJlLmpzJztcbmltcG9ydCB7IGNyZWF0ZUVudlJlZGlzSWRlbXBvdGVuY3lTdG9yZSwgc2V0SWRlbXBvdGVuY3lTdG9yZSwgdHlwZSBJZGVtcG90ZW5jeVN0b3JlIH0gZnJvbSAnLi9pZGVtcG90ZW5jeS1taWRkbGV3YXJlLmpzJztcbmltcG9ydCB7IG1ldHJpY3NNaWRkbGV3YXJlLCBtZXRyaWNzSGFuZGxlciwgaW5jQ291bnRlciwgc2V0R2F1Z2UgfSBmcm9tICcuL21ldHJpY3MuanMnO1xuaW1wb3J0IHsgY3JlYXRlU2hhcmVkUmF0ZUxpbWl0U3RvcmUgfSBmcm9tICcuL3JhdGUtbGltaXQtc3RvcmUuanMnO1xuaW1wb3J0IHsgcmVhZGluZXNzR3VhcmQgfSBmcm9tICcuL3JlYWRpbmVzcy5qcyc7XG5pbXBvcnQgeyBjdXJyZW50VHJhY2VJZCB9IGZyb20gJy4vdHJhY2luZy5qcyc7XG5pbXBvcnQgeyBTU0VNYW5hZ2VyLCBTU0VfUkVRVUVTVF9JRF9SRSB9IGZyb20gJy4uL2h0dHAvc3NlLWNvbm5lY3Rpb24tbWFuYWdlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVFbnZSZWRpc1NTRVJlbGF5IH0gZnJvbSAnLi4vaHR0cC9zc2UtcmVsYXkuanMnO1xuXG4vLyBXaXJlIGFwaS1jb3JlJ3MgY291bnRlciBzaGltIHRvIHRoZSByZWFsIHByb20tY2xpZW50IHJlZ2lzdHJ5LiBUaGlzIGlzXG4vLyBhIG5vLW9wIHVudGlsIGluY0NvdW50ZXIgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZSAobGF6eSByZWdpc3RyYXRpb25cbi8vIGluIG1ldHJpY3MudHMpLCBhbmQgbGV0cyBhcGktY29yZSBoZWxwZXJzIGxpa2UgdGhlIHF1b3RhIGNsaWVudCByZWNvcmRcbi8vIGBxdW90YV9mYWlsX29wZW5fdG90YWxgIHdpdGhvdXQgdGFraW5nIGEgaGFyZCBkZXAgb24gYXBpLXNlcnZlci5cbnNldENvdW50ZXJFbWl0dGVyKGluY0NvdW50ZXIpO1xuLy8gU2FtZSBzZWFtIGZvciBHQVVHRVMuIHBpcGVsaW5lLWRhdGEncyByZWFkLXJlcGxpY2EgbGFnIHNhbXBsZXIgbmVlZHMgaXQ6XG4vLyByZXBsYXkgbGFnIGFuZCB0aGUgc3RhdGUgb2YgdGhlIHJlYWQgZmFsbGJhY2sgY2lyY3VpdCBhcmUgc2FtcGxlZFxuLy8gcG9pbnQtaW4tdGltZSB2YWx1ZXMsIHNvIGVtaXR0aW5nIHRoZW0gYXMgY291bnRlcnMgd291bGQgbWFrZSBldmVyeSBxdWVyeVxuLy8gb3ZlciB0aGVtIHdyb25nLiBwaXBlbGluZS1kYXRhIGRlcGVuZHMgb24gYXBpLWNvcmUgYW5kIG11c3Qgbm90IGRlcGVuZCBvblxuLy8gYXBpLXNlcnZlciwgaGVuY2UgdGhlIHNoaW0gcmF0aGVyIHRoYW4gYSBkaXJlY3QgaW1wb3J0Llxuc2V0R2F1Z2VFbWl0dGVyKHNldEdhdWdlKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBFeHByZXNzIGFwcGxpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQXBwT3B0aW9ucyB7XG4gIC8qKiBFbmFibGUgQ09SUyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlQ29ycz86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgSGVsbWV0IHNlY3VyaXR5IGhlYWRlcnMgKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZUhlbG1ldD86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgcmF0ZSBsaW1pdGluZyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlUmF0ZUxpbWl0PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBKU09OIGJvZHkgcGFyc2luZyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlSnNvbkJvZHk/OiBib29sZWFuO1xuICAvKiogSlNPTiBib2R5IHNpemUgbGltaXQgKGRlZmF1bHQ6ICcxbWInKSAqL1xuICBqc29uTGltaXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHByZWZpeGVzIHRoZSBnbG9iYWwgSlNPTiBib2R5IHBhcnNlciBtdXN0IE5PVCB0b3VjaCDigJQgZm9yIHJvdXRlcyB0aGF0IG5lZWRcbiAgICogdGhlIHJhdyBib2R5IChlLmcuIGEgU3RyaXBlIHdlYmhvb2sgd2hvc2UgSE1BQyBpcyBjb21wdXRlZCBvdmVyIHRoZSBleGFjdCBieXRlcykuXG4gICAqIFdpdGhvdXQgdGhpcyB0aGUgZ2xvYmFsIHBhcnNlciBjb25zdW1lcyB0aGUgYm9keSBmaXJzdCBhbmQgYSBsYXRlciBgZXhwcmVzcy5yYXcoKWBcbiAgICogb24gdGhlIHNhbWUgcGF0aCBpcyBhIG5vLW9wLCBicmVha2luZyBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLlxuICAgKi9cbiAganNvbkJvZHlFeGNsdWRlPzogc3RyaW5nW107XG4gIC8qKiBFbmFibGUgVVJMLWVuY29kZWQgYm9keSBwYXJzaW5nIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlbmFibGVVcmxFbmNvZGVkPzogYm9vbGVhbjtcbiAgLyoqIFVSTC1lbmNvZGVkIGJvZHkgc2l6ZSBsaW1pdCAoZGVmYXVsdDogJzFtYicpICovXG4gIHVybEVuY29kZWRMaW1pdD86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBTU0UgbWFuYWdlciBpbnN0YW5jZSAqL1xuICBzc2VNYW5hZ2VyPzogU1NFTWFuYWdlcjtcbiAgLyoqXG4gICAqIFNlcnZlIHRoZSBwZXItcmVxdWVzdCBidWlsZC1sb2cgc3RyZWFtOiBgUE9TVCAvbG9ncy90aWNrZXRgICtcbiAgICogYEdFVCAvbG9ncy86cmVxdWVzdElkYCwgYSBsb2cgdGlja2V0IHN0b3JlLCB0aGUgY3Jvc3MtcG9kIHJlbGF5LCBhbmRcbiAgICogYGN0eC5sb2dgIGZyYW1lcyBwdXNoZWQgdG8gU1NFLiBEZWZhdWx0IGZhbHNlIOKAlCBhIHNlcnZpY2Ugd2l0aG91dCBpdCBoYXMgbm9cbiAgICogYC9sb2dzYCByb3V0ZXMgYW5kIGBjdHgubG9nYCBvbmx5IHdyaXRlcyB0byB0aGUgbG9nZ2VyLlxuICAgKi9cbiAgbG9nU3RyZWFtPzogYm9vbGVhbjtcbiAgLyoqIEhlYWx0aCBjaGVjayBkZXBlbmRlbmN5IGNoZWNrZXIg4oCUIGlmIHByb3ZpZGVkLCAvaGVhbHRoIHJlcG9ydHMgZGVwZW5kZW5jeSBzdGF0dXMgKi9cbiAgY2hlY2tEZXBlbmRlbmNpZXM/OiAoKSA9PiBQcm9taXNlPFJlY29yZDxzdHJpbmcsICdjb25uZWN0ZWQnIHwgJ2Rpc2Nvbm5lY3RlZCcgfCAndW5rbm93bic+PjtcbiAgLyoqXG4gICAqIFNlcnZlIHRoZSBPcGVuQVBJIHNwZWMgYXQgYC9kb2NzL29wZW5hcGkuanNvbmAgYW5kIFN3YWdnZXIgVUkgYXQgYC9kb2NzYC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gT0ZGIHVuZGVyIGBOT0RFX0VOVj1wcm9kdWN0aW9uYDogdGhlIHJvdXRlcyBhcmUgcmVnaXN0ZXJlZCBhYm92ZVxuICAgKiB0aGUgcmF0ZSBsaW1pdGVyIGFuZCBhcmUgbm90IGF1dGgtZ2F0ZWQsIHNvIGluIHByb2R1Y3Rpb24gdGhleSB3b3VsZCBwdWJsaXNoXG4gICAqIHRoZSBmdWxsIHJvdXRlICsgc2NoZW1hIGludmVudG9yeSBvZiBldmVyeSBzZXJ2aWNlIHRvIGFueW9uZSB3aG8gY291bGQgcmVhY2hcbiAgICogdGhlIHBvcnQuIFBhc3MgYHRydWVgIGV4cGxpY2l0bHkgdG8gc2VydmUgdGhlbSBpbiBwcm9kdWN0aW9uIGFueXdheS5cbiAgICovXG4gIGVuYWJsZU9wZW5BcGk/OiBib29sZWFuO1xuICAvKiogT3BlbkFQSSBzcGVjIGN1c3RvbWl6YXRpb24gb3B0aW9ucyAqL1xuICBvcGVuQXBpT3B0aW9ucz86IE9wZW5BcGlTcGVjT3B0aW9ucztcbiAgLyoqIEVuYWJsZSBnemlwL2RlZmxhdGUgcmVzcG9uc2UgY29tcHJlc3Npb24gKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZUNvbXByZXNzaW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElkZW1wb3RlbmN5IHJlcGxheS1jYWNoZSBiYWNrZW5kIGZvciBrZXllZCBtdXRhdGlvbiByZXRyaWVzLiBXaGVuIG9taXR0ZWQsXG4gICAqIGNyZWF0ZUFwcCBhdXRvLXdpcmVzIHRoZSBzaGFyZWQgZW52IFJlZGlzIHN0b3JlIChtdWx0aS1yZXBsaWNhIGRlZHVwKSBpZlxuICAgKiBSZWRpcyBpcyBjb25maWd1cmVkLCBlbHNlIGtlZXBzIHRoZSBpbi1tZW1vcnkgZGVmYXVsdCAoc2luZ2xlLXJlcGxpY2EpLlxuICAgKiBQYXNzIGFuIGV4cGxpY2l0IHN0b3JlIHRvIGluamVjdCBhIGJlc3Bva2UgYmFja2VuZCAoZS5nLiBhIHNlcnZpY2UncyBvd25cbiAgICogaW9yZWRpcyBjb25uZWN0aW9uKS5cbiAgICovXG4gIGlkZW1wb3RlbmN5U3RvcmU/OiBJZGVtcG90ZW5jeVN0b3JlO1xuICAvKipcbiAgICogRXh0cmEgd2FybXVwIGNhbGxiYWNrcyBpbnZva2VkIGJ5IGBHRVQgL3dhcm11cGAgaW4gYWRkaXRpb24gdG8gdGhlXG4gICAqIGRlZmF1bHQgUG9zdGdyZXMgcGluZy4gVXNlIGZvciBzZXJ2aWNlcyB0aGF0IGRlcGVuZCBvbiBNb25nbywgUmVkaXMsXG4gICAqIFNRUywgZXRjLiDigJQgcHJlLXdhcm1pbmcgb3BlbnMgY29ubmVjdGlvbiBwb29scyBiZWZvcmUgcmVhbCB0cmFmZmljXG4gICAqIGFycml2ZXMuIEVhY2ggY2FsbGJhY2sgc2hvdWxkIHJlc29sdmUgd2hlbiBpdHMgZGVwZW5kZW5jeSBpcyByZWFkeTtcbiAgICogYW55IHJlamVjdGlvbiBjYXVzZXMgL3dhcm11cCB0byByZXR1cm4gNTAzLlxuICAgKi9cbiAgd2FybXVwSG9va3M/OiBBcnJheTwoKSA9PiBQcm9taXNlPHZvaWQ+Pjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgY3JlYXRpbmcgYW4gRXhwcmVzcyBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUFwcFJlc3VsdCB7XG4gIC8qKiBDb25maWd1cmVkIEV4cHJlc3MgYXBwbGljYXRpb24gKi9cbiAgYXBwOiBFeHByZXNzO1xuICAvKiogU1NFIG1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgc3NlTWFuYWdlcjogU1NFTWFuYWdlcjtcbn1cblxuLyoqIEhlbG1ldCAoc3RyaWN0IENTUCksIENPUlMsIGNvbXByZXNzaW9uIGFuZCBFVGFncy4gKi9cbmZ1bmN0aW9uIGFwcGx5U2VjdXJpdHlIZWFkZXJzKGFwcDogRXhwcmVzcywgb3B0aW9uczogQ3JlYXRlQXBwT3B0aW9ucywgZW5hYmxlT3BlbkFwaTogYm9vbGVhbik6IHZvaWQge1xuICBjb25zdCB7IGVuYWJsZUNvcnMgPSB0cnVlLCBlbmFibGVIZWxtZXQgPSB0cnVlLCBlbmFibGVDb21wcmVzc2lvbiA9IHRydWUgfSA9IG9wdGlvbnM7XG4gIC8vIFN3YWdnZXIgVUkgbmVlZHMgdW5zYWZlLWlubGluZSArIHVuc2FmZS1ldmFsIGZvciBpdHMgYnVuZGxlZCBzY3JpcHRzIOKAlFxuICAvLyBidXQgQ1NQIGlzIG9ubHkgcmVsYXhlZCB0aGF0IGZhciB3aGVuIChhKSBPcGVuQVBJIGlzIGVuYWJsZWQgQU5EIChiKSB3ZSdyZVxuICAvLyBub3QgaW4gcHJvZHVjdGlvbi4gSW4gcHJvZCwgU3dhZ2dlciBzaG91bGQgYmUgc2VydmVkIGJlaGluZCBhIHNlcGFyYXRlXG4gIC8vIGhvc3Qgb3IgYXV0aC1nYXRlZCByb3V0ZTsgdGhlIG1haW4gYXBwIGtlZXBzIHRoZSBzdHJpY3QgQ1NQIHNvIGEgU3RvcmVkXG4gIC8vIFhTUyBpbiBhbnkgaGFuZGxlciBjYW4ndCBgZXZhbCgpYCBhcmJpdHJhcnkgc2NyaXB0LlxuICBjb25zdCBhbGxvd1N3YWdnZXJDc3AgPSBlbmFibGVPcGVuQXBpICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbic7XG4gIGlmIChlbmFibGVIZWxtZXQpIHtcbiAgICBhcHAudXNlKGhlbG1ldCh7XG4gICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3k6IHtcbiAgICAgICAgZGlyZWN0aXZlczoge1xuICAgICAgICAgIGRlZmF1bHRTcmM6IFtcIidzZWxmJ1wiXSxcbiAgICAgICAgICBzY3JpcHRTcmM6IGFsbG93U3dhZ2dlckNzcFxuICAgICAgICAgICAgPyBbXCInc2VsZidcIiwgXCIndW5zYWZlLWlubGluZSdcIiwgXCIndW5zYWZlLWV2YWwnXCJdXG4gICAgICAgICAgICA6IFtcIidzZWxmJ1wiXSxcbiAgICAgICAgICBzdHlsZVNyYzogW1wiJ3NlbGYnXCIsIFwiJ3Vuc2FmZS1pbmxpbmUnXCJdLFxuICAgICAgICAgIGltZ1NyYzogW1wiJ3NlbGYnXCIsICdkYXRhOicsICdibG9iOiddLFxuICAgICAgICAgIGNvbm5lY3RTcmM6IFtcIidzZWxmJ1wiXSxcbiAgICAgICAgICBmb250U3JjOiBbXCInc2VsZidcIl0sXG4gICAgICAgICAgb2JqZWN0U3JjOiBbXCInbm9uZSdcIl0sXG4gICAgICAgICAgZnJhbWVBbmNlc3RvcnM6IFtcIidub25lJ1wiXSxcbiAgICAgICAgICBiYXNlVXJpOiBbXCInc2VsZidcIl0sXG4gICAgICAgICAgZm9ybUFjdGlvbjogW1wiJ3NlbGYnXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG4gIH1cblxuICBpZiAoZW5hYmxlQ29ycykge1xuICAgIGFwcC51c2UoY29ycyhDb25maWcuZ2V0KCdzZXJ2ZXInKS5jb3JzKSk7XG4gIH1cblxuICAvLyBSZXNwb25zZSBjb21wcmVzc2lvbiAoZ3ppcC9kZWZsYXRlKSDigJQgc2tpcCBTU0Ugc3RyZWFtc1xuICBpZiAoZW5hYmxlQ29tcHJlc3Npb24pIHtcbiAgICBhcHAudXNlKGNvbXByZXNzaW9uKHtcbiAgICAgIGZpbHRlcjogKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAvLyBEb24ndCBjb21wcmVzcyBTU0Ugc3RyZWFtcy4gTWF0Y2ggYnkgaW5jbHVzaW9uOiB0aGUgQWNjZXB0IGhlYWRlciBpc1xuICAgICAgICAvLyBvZnRlbiBhIGxpc3QgKGUuZy4gXCJ0ZXh0L2V2ZW50LXN0cmVhbSwgKi8qXCIpLCB3aGljaCBleGFjdCBlcXVhbGl0eVxuICAgICAgICAvLyB3b3VsZCBtaXNzLCBjb21wcmVzc2luZy9idWZmZXJpbmcgdGhlIHN0cmVhbS5cbiAgICAgICAgaWYgKChyZXEuaGVhZGVycy5hY2NlcHQgfHwgJycpLmluY2x1ZGVzKCd0ZXh0L2V2ZW50LXN0cmVhbScpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBjb21wcmVzc2lvbi5maWx0ZXIocmVxLCByZXMpO1xuICAgICAgfSxcbiAgICAgIHRocmVzaG9sZDogQ29yZUNvbnN0YW50cy5DT01QUkVTU0lPTl9USFJFU0hPTERfQllURVMsXG4gICAgfSkpO1xuICB9XG5cbiAgLy8gRVRhZyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBHRVQgcmVxdWVzdHMgKDMwNCBOb3QgTW9kaWZpZWQpXG4gIGFwcC51c2UoZXRhZ01pZGRsZXdhcmUoKSk7XG59XG5cbi8qKiBKU09OICsgVVJMLWVuY29kZWQgYm9keSBwYXJzZXJzLiAqL1xuZnVuY3Rpb24gYXBwbHlCb2R5UGFyc2luZyhhcHA6IEV4cHJlc3MsIG9wdGlvbnM6IENyZWF0ZUFwcE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3QgeyBlbmFibGVKc29uQm9keSA9IHRydWUsIGpzb25MaW1pdCA9ICcxbWInLCBlbmFibGVVcmxFbmNvZGVkID0gdHJ1ZSwgdXJsRW5jb2RlZExpbWl0ID0gJzFtYicgfSA9IG9wdGlvbnM7XG4gIGlmIChlbmFibGVKc29uQm9keSkge1xuICAgIGNvbnN0IGpzb25QYXJzZXIgPSBleHByZXNzLmpzb24oeyBsaW1pdDoganNvbkxpbWl0IH0pO1xuICAgIGNvbnN0IGV4Y2x1ZGUgPSBvcHRpb25zLmpzb25Cb2R5RXhjbHVkZSA/PyBbXTtcbiAgICBpZiAoZXhjbHVkZS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBTa2lwIHRoZSBnbG9iYWwgSlNPTiBwYXJzZXIgZm9yIHJhdy1ib2R5IHBhdGhzIHNvIGEgcGVyLXBhdGggYGV4cHJlc3MucmF3KClgXG4gICAgICAvLyBjYW4gcmVhZCB0aGUgZXhhY3QgYnl0ZXMgKHNlZSBganNvbkJvZHlFeGNsdWRlYCkuXG4gICAgICBhcHAudXNlKChyZXEsIHJlcywgbmV4dCkgPT4gKGV4Y2x1ZGUuc29tZSgocCkgPT4gcmVxLnBhdGguc3RhcnRzV2l0aChwKSkgPyBuZXh0KCkgOiBqc29uUGFyc2VyKHJlcSwgcmVzLCBuZXh0KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHAudXNlKGpzb25QYXJzZXIpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVVcmxFbmNvZGVkKSB7XG4gICAgYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogdHJ1ZSwgbGltaXQ6IHVybEVuY29kZWRMaW1pdCB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBIZWFsdGgsIHJlYWRpbmVzcyBndWFyZCwgYC93YXJtdXBgLCBgL21ldHJpY3NgIGFuZCB0aGUgT3BlbkFQSSBkb2NzIOKAlCBhbGxcbiAqIHJlZ2lzdGVyZWQgYmVmb3JlIHRoZSByYXRlIGxpbWl0ZXIgc28gdGhleSBhcmUgbmV2ZXIgdGhyb3R0bGVkLlxuICovXG5mdW5jdGlvbiBtb3VudEluZnJhRW5kcG9pbnRzKGFwcDogRXhwcmVzcywgb3B0aW9uczogQ3JlYXRlQXBwT3B0aW9ucywgc2VydmljZU5hbWU6IHN0cmluZywgZW5hYmxlT3BlbkFwaTogYm9vbGVhbik6IHZvaWQge1xuICBjb25zdCB7IGNoZWNrRGVwZW5kZW5jaWVzLCBvcGVuQXBpT3B0aW9ucywgd2FybXVwSG9va3MgPSBbXSB9ID0gb3B0aW9ucztcblxuICBhcHAudXNlKGNyZWF0ZUhlYWx0aFJvdXRlcih7XG4gICAgc2VydmljZU5hbWUsXG4gICAgY2hlY2tEZXBlbmRlbmNpZXMsXG4gIH0pKTtcblxuICAvLyBSZWFkaW5lc3MgZ3VhcmQg4oCUIDUwM3MgYnVzaW5lc3MgdHJhZmZpYyB3aGlsZSB0aGUgc2VydmljZSBpcyBOb3RSZWFkeVxuICAvLyAoZGF0YXN0b3JlIHN0aWxsIGNvbm5lY3RpbmcgYXQgc3RhcnR1cCwgb3IgZHJvcHBlZCkuIE1vdW50ZWQgcmlnaHQgYWZ0ZXJcbiAgLy8gdGhlIGhlYWx0aCByb3V0ZXIgYW5kIGJlZm9yZSBldmVyeXRoaW5nIGVsc2Ugc28gYSBOb3RSZWFkeSByZXF1ZXN0IGlzXG4gIC8vIHJlamVjdGVkIGNoZWFwbHksIGJlZm9yZSByYXRlLWxpbWl0IC8gaWRlbXBvdGVuY3kgLyBidXNpbmVzcyBoYW5kbGVycyBldmVyXG4gIC8vIHRvdWNoIGEgZGlzY29ubmVjdGVkIGRhdGFzdG9yZS4gSXQgYWxsb3dsaXN0cyB0aGUgaW5mcmEgZW5kcG9pbnRzXG4gIC8vICgvbWV0cmljcywgL3dhcm11cCwgL2RvY3MsIC9sb2dzKSByZWdpc3RlcmVkIGJlbG93LCBwbHVzIC9oZWFsdGggKyAvcmVhZHkuXG4gIGFwcC51c2UocmVhZGluZXNzR3VhcmQoKSk7XG5cbiAgLy8gV2FybS11cCBlbmRwb2ludCDigJQgcHJlLW9wZW5zIGNvbm5lY3Rpb24gcG9vbHMgc28gdGhlIGZpcnN0IHJlYWwgcmVxdWVzdFxuICAvLyBkb2Vzbid0IHBheSBjb2xkLXN0YXJ0IGxhdGVuY3kuIEFsd2F5cyBwaW5ncyBQb3N0Z3Jlczsgc2VydmljZXMgdXNpbmdcbiAgLy8gTW9uZ28gLyBSZWRpcyAvIFNRUyBwYXNzIGB3YXJtdXBIb29rc2Agc28gdGhvc2UgYXJlIHdhcm1lZCBpbiBwYXJhbGxlbC5cbiAgLy9cbiAgLy8gR0FURUQgdG8gdmVyaWZpZWQgc2VydmljZSBwcmluY2lwYWxzLiBFdmVyeSBoaXQgcnVucyBhIFBvc3RncmVzIHJvdW5kLXRyaXBcbiAgLy8gcGx1cyBhbGwgYHdhcm11cEhvb2tzYCAoTW9uZ28vUmVkaXMvU1FTKSwgc28gYW4gb3BlbiBlbmRwb2ludCB3b3VsZCBsZXQgYW5cbiAgLy8gYW5vbnltb3VzIGxvb3AgYW1wbGlmeSBpbnRvIGRhdGFzdG9yZSBsb2FkIG9uIGV2ZXJ5IHNlcnZpY2UgaW4gdGhlIGZsZWV0IOKAlFxuICAvLyBhbmQgaXQgaXMgcmVnaXN0ZXJlZCBhYm92ZSB0aGUgcmF0ZSBsaW1pdGVyLCBzbyBub3RoaW5nIHdvdWxkIHRocm90dGxlIGl0LlxuICAvLyBgdmVyaWZ5U2VydmljZVByaW5jaXBhbGAgY2hlY2tzIHRoZSBiZWFyZXIgdG9rZW4gY3J5cHRvZ3JhcGhpY2FsbHksIHNvIGl0IGlzXG4gIC8vIHNhZmUgaGVyZSwgYWJvdmUgYHJlcXVpcmVBdXRoYC5cbiAgYXBwLmdldCgnL3dhcm11cCcsIGFzeW5jIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpID0+IHtcbiAgICBpZiAoIXZlcmlmeVNlcnZpY2VQcmluY2lwYWwocmVxKSkge1xuICAgICAgc2VuZEVycm9yKHJlcywgNDA0LCAnTm90IGZvdW5kJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIGdldENvbm5lY3Rpb24oKS50ZXN0Q29ubmVjdGlvbigpLFxuICAgICAgICAuLi53YXJtdXBIb29rcy5tYXAoKGhvb2spID0+IGhvb2soKSksXG4gICAgICBdKTtcbiAgICAgIHNlbmRTdWNjZXNzKHJlcywgMjAwLCB7IHdhcm1lZDogdHJ1ZSwgaG9va3M6IHdhcm11cEhvb2tzLmxlbmd0aCB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHNlbmRFcnJvcihyZXMsIDUwMywgJ1dhcm11cCBmYWlsZWQnKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFByb21ldGhldXMgbWV0cmljcyBlbmRwb2ludCDigJQgYWx3YXlzIHJlZ2lzdGVyZWQgKG5ldmVyIHRocm90dGxlZCkuXG4gIC8vXG4gIC8vIE9wdGlvbmFsbHkgZ2F0ZWQ6IHdoZW4gYE1FVFJJQ1NfU0NSQVBFX1RPS0VOYCBpcyBzZXQsIHRoZSBzY3JhcGVyIG11c3Qgc2VuZFxuICAvLyBpdCBhcyBhIGJlYXJlciB0b2tlbiAoUHJvbWV0aGV1cyBgYmVhcmVyX3Rva2VuYCAvIGBiZWFyZXJfdG9rZW5fZmlsZWAgaW4gdGhlXG4gIC8vIHNjcmFwZSBjb25maWcpLiBMZWZ0IHVuZ2F0ZWQgd2hlbiB1bnNldCBzbyBlbmFibGluZyBpdCBpcyBhIGRlbGliZXJhdGUsXG4gIC8vIGNvb3JkaW5hdGVkIGNoYW5nZSByYXRoZXIgdGhhbiBhIHNpbGVudCBtb25pdG9yaW5nIG91dGFnZSDigJQgdGVuYW50IGlkcyBzdGF5XG4gIC8vIG91dCBvZiB0aGUgb3V0cHV0IHJlZ2FyZGxlc3MsIGJlY2F1c2UgdGhlIHBlci1vcmcgbGFiZWwgZGVmYXVsdHMgT0ZGIChzZWVcbiAgLy8gSFRUUF9NRVRSSUNTX09SR19TQU1QTEVfUkFURSBpbiBtZXRyaWNzLnRzKS5cbiAgY29uc3QgbWV0cmljc1Rva2VuID0gcHJvY2Vzcy5lbnYuTUVUUklDU19TQ1JBUEVfVE9LRU47XG4gIGFwcC5nZXQoJy9tZXRyaWNzJywgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgaWYgKCFtZXRyaWNzVG9rZW4pIHtcbiAgICAgIG5leHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVyID0gcmVxLmhlYWRlcnMuYXV0aG9yaXphdGlvbjtcbiAgICBjb25zdCBwcmVzZW50ZWQgPSBoZWFkZXI/LnN0YXJ0c1dpdGgoJ0JlYXJlciAnKSA/IGhlYWRlci5zbGljZSg3KSA6IHVuZGVmaW5lZDtcbiAgICAvLyBDb25zdGFudC10aW1lIGNvbXBhcmUg4oCUIGEgbGVuZ3RoLWluZGVwZW5kZW50IGVxdWFsaXR5IGNoZWNrIGhlcmUgd291bGRcbiAgICAvLyBsZWFrIHRoZSB0b2tlbiBhIGJ5dGUgYXQgYSB0aW1lLlxuICAgIGlmICghcHJlc2VudGVkIHx8ICFzYWZlRXF1YWwocHJlc2VudGVkLCBtZXRyaWNzVG9rZW4pKSB7XG4gICAgICBzZW5kRXJyb3IocmVzLCA0MDQsICdOb3QgZm91bmQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV4dCgpO1xuICB9LCBtZXRyaWNzSGFuZGxlcigpKTtcblxuICBpZiAoZW5hYmxlT3BlbkFwaSkge1xuICAgIGNvbnN0IHNwZWMgPSBnZW5lcmF0ZU9wZW5BcGlTcGVjKG9wZW5BcGlPcHRpb25zKTtcbiAgICBhcHAuZ2V0KCcvZG9jcy9vcGVuYXBpLmpzb24nLCAoX3JlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgcmVzLmpzb24oc3BlYyk7XG4gICAgfSk7XG4gICAgYXBwLnVzZSgnL2RvY3MnLCBzd2FnZ2VyVWkuc2VydmUsIHN3YWdnZXJVaS5zZXR1cChzcGVjLCB7XG4gICAgICBjdXN0b21TaXRlVGl0bGU6IG9wZW5BcGlPcHRpb25zPy50aXRsZSA/PyAnUGlwZWxpbmUgQnVpbGRlciBBUEkgRG9jcycsXG4gICAgfSkpO1xuICB9XG59XG5cbi8qKiBHbG9iYWwgcmF0ZSBsaW1pdGVyIOKAlCBzaGFyZWQgYWNyb3NzIHJlcGxpY2FzIHZpYSB0aGUgZW52IFJlZGlzIHdoZW4gY29uZmlndXJlZC4gKi9cbmZ1bmN0aW9uIG1vdW50UmF0ZUxpbWl0ZXIoYXBwOiBFeHByZXNzLCBzZXJ2aWNlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHJhdGVMaW1pdENvbmZpZyA9IENvbmZpZy5nZXQoJ3JhdGVMaW1pdCcpO1xuXG4gIGNvbnN0IHJhdGVMaW1pdE9wdGlvbnM6IFBhcmFtZXRlcnM8dHlwZW9mIHJhdGVMaW1pdD5bMF0gPSB7XG4gICAgbWF4OiByYXRlTGltaXRDb25maWcubWF4LFxuICAgIHdpbmRvd01zOiByYXRlTGltaXRDb25maWcud2luZG93TXMsXG4gICAgc3RhbmRhcmRIZWFkZXJzOiB0cnVlLFxuICAgIGxlZ2FjeUhlYWRlcnM6IGZhbHNlLFxuICAgIC8vIFNraXAgcmF0ZSBsaW1pdGluZyBvbmx5IGZvciBDUllQVE9HUkFQSElDQUxMWS1WRVJJRklFRCBpbnRlcm5hbCBzZXJ2aWNlXG4gICAgLy8gY2FsbGVycy4gVGhlIGxpbWl0ZXIgcnVucyBiZWZvcmUgcmVxdWlyZUF1dGgsIHNvIGEgcGxhaW50ZXh0IGhlYWRlclxuICAgIC8vIHdvdWxkIGJlIHNwb29mYWJsZSBieSBhbnkgZXh0ZXJuYWwgY2xpZW50IOKGkiB0b3RhbCBieXBhc3MuXG4gICAgLy8gdmVyaWZ5U2VydmljZVByaW5jaXBhbCB2ZXJpZmllcyB0aGUgc2lnbmVkIHNlcnZpY2UgSldUIGluc3RlYWQ7XG4gICAgLy8gaW50ZXItc2VydmljZSBjYWxsZXJzIGFsbCBzZW5kIG9uZSAoZ2V0U2VydmljZUF1dGhIZWFkZXIpLlxuICAgIHNraXA6IChyZXE6IFJlcXVlc3QpID0+IHZlcmlmeVNlcnZpY2VQcmluY2lwYWwocmVxKSxcbiAgICAvLyBLZXkgb24gY2xpZW50IElQIG9ubHkuIFRoZSBsaW1pdGVyIHJ1bnMgcHJlLWF1dGgsIHNvIGByZXEudXNlcmAgaXMgdW5zZXRcbiAgICAvLyBhbmQgYW55IG9yZyBpZCB3b3VsZCBjb21lIGZyb20gdGhlIGNhbGxlci1zdXBwbGllZCBgeC1vcmctaWRgIGhlYWRlciDigJRcbiAgICAvLyBzcG9vZmFibGUsIGxldHRpbmcgYW4gYXR0YWNrZXIgcm90YXRlIHZhbHVlcyB0byBldmFkZSB0aGUgYnVja2V0IG9yXG4gICAgLy8gZmxvb2QgYSB2aWN0aW0gb3JnJ3MgYnVja2V0LiBpcEtleUdlbmVyYXRvciBub3JtYWxpemVzIElQdjYgdG8gYSAvNjRcbiAgICAvLyBwcmVmaXggKGFsc28gcmVxdWlyZWQgYnkgZXhwcmVzcy1yYXRlLWxpbWl0IDgueCdzIHZhbGlkYXRvcikuXG4gICAga2V5R2VuZXJhdG9yOiAocmVxOiBSZXF1ZXN0KSA9PiBpcEtleUdlbmVyYXRvcihyZXEuaXAgfHwgJ2Fub24nLCA2NCksXG4gICAgLy8gQSBzdG9yZSBmYWlsdXJlIChSZWRpcyBkb3duIC8gZmFpbGluZyBvdmVyKSBtdXN0IGRlZ3JhZGUgdG8gXCJub3QgcmF0ZVxuICAgIC8vIGxpbWl0ZWRcIiwgbmV2ZXIgdG8gYSA1MDAgb24gZXZlcnkgcmVxdWVzdCBvZiBldmVyeSBzZXJ2aWNlLlxuICAgIHBhc3NPblN0b3JlRXJyb3I6IHRydWUsXG4gICAgaGFuZGxlcjogKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpID0+IHtcbiAgICAgIHNlbmRFcnJvcihyZXMsIDQyOSwgJ1RvbyBtYW55IHJlcXVlc3RzLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsIEVycm9yQ29kZS5SQVRFX0xJTUlUX0VYQ0VFREVEKTtcbiAgICB9LFxuICAgIC8vIFNoYXJlZCBzdGF0ZSBhY3Jvc3MgcmVwbGljYXMgKHRoZSBwcm9jZXNzLXdpZGUgcmF0ZS1saW1pdCBSZWRpcyBjb25uZWN0aW9uO1xuICAgIC8vIHVuZGVmaW5lZCB3aXRob3V0IFJlZGlzIOKGkiBwZXItcHJvY2VzcyBtZW1vcnkgc3RvcmUsIHJpZ2h0IGZvciBvbmUgcmVwbGljYSkuXG4gICAgLy8gTmFtZXNwYWNlZCBwZXIgU0VSVklDRTogZXZlcnkgc2VydmljZSBzaGFyZXMgb25lIFJlZGlzLCBhbmQgYW4gdW5wcmVmaXhlZFxuICAgIC8vIGBybDo8aXA+YCBrZXkgd291bGQgbGV0IG9uZSBjbGllbnQncyB0cmFmZmljIHRvIEFOWSBzZXJ2aWNlIGRyYWluIGl0c1xuICAgIC8vIGJ1ZGdldCBvbiBFVkVSWSBzZXJ2aWNlLlxuICAgIHN0b3JlOiBjcmVhdGVTaGFyZWRSYXRlTGltaXRTdG9yZShgJHtzZXJ2aWNlTmFtZX06Z2xvYmFsYCksXG4gIH07XG5cbiAgYXBwLnVzZShyYXRlTGltaXQocmF0ZUxpbWl0T3B0aW9ucykpO1xufVxuXG4vKiogUmVxdWVzdCB0aW1lb3V0LCBkdXJhdGlvbiBsb2dnaW5nIGFuZCBIVFRQIG1ldHJpY3MuICovXG5mdW5jdGlvbiBhcHBseVJlcXVlc3RUZWxlbWV0cnkoYXBwOiBFeHByZXNzKTogdm9pZCB7XG4gIC8vIEV4cHJlc3MgcmVxdWVzdCB0aW1lb3V0IOKAlCB1c2VzIENvcmVDb25zdGFudHMgdG8gc2hhcmUgdGhlIHNhbWUgZGVmYXVsdCBhcyBMYW1iZGEgaGFuZGxlcnNcbiAgY29uc3QgdGltZW91dE1zID0gQ29yZUNvbnN0YW50cy5IQU5ETEVSX1RJTUVPVVRfTVM7XG4gIGFwcC51c2UoKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIHJlcy5zZXRUaW1lb3V0KHRpbWVvdXRNcywgKCkgPT4ge1xuICAgICAgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgICAgc2VuZEVycm9yKHJlcywgNTAzLCAnUmVxdWVzdCB0aW1lb3V0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbmV4dCgpO1xuICB9KTtcblxuICAvLyBSZXF1ZXN0IGR1cmF0aW9uIGxvZ2dpbmdcbiAgY29uc3QgZHVyYXRpb25Mb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3JlcXVlc3QtZHVyYXRpb24nKTtcbiAgYXBwLnVzZSgocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pID0+IHtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgcmVzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydDtcbiAgICAgIC8vIExvZyBgcmVxLnBhdGhgIChubyBxdWVyeSBzdHJpbmcpIOKAlCBhIHN0cmF5IGA/dG9rZW49YC9gP3RpY2tldD1gIG11c3Qgbm90IGJlXG4gICAgICAvLyBwZXJzaXN0ZWQgdmVyYmF0aW0gb24gZXZlcnkgcmVxdWVzdCAobWlycm9ycyB0aGUgYXV0aHotZGVuaWFsIGF1ZGl0b3IncyBzdHJpcCkuXG4gICAgICBkdXJhdGlvbkxvZ2dlci5pbmZvKGAke3JlcS5tZXRob2R9ICR7cmVxLnBhdGh9ICR7cmVzLnN0YXR1c0NvZGV9ICR7ZHVyYXRpb259bXNgLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgcGF0aDogcmVxLnBhdGgsXG4gICAgICAgIHN0YXR1c0NvZGU6IHJlcy5zdGF0dXNDb2RlLFxuICAgICAgICBkdXJhdGlvbk1zOiBkdXJhdGlvbixcbiAgICAgICAgcmVxdWVzdElkOiByZXEucmVxdWVzdElkLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgbmV4dCgpO1xuICB9KTtcblxuICAvLyBQcm9tZXRoZXVzIG1ldHJpY3MgbWlkZGxld2FyZSDigJQgcmVjb3JkcyByZXF1ZXN0IGR1cmF0aW9uIGFuZCBjb3VudFxuICBhcHAudXNlKG1ldHJpY3NNaWRkbGV3YXJlKCkpO1xufVxuXG4vKipcbiAqIFRoZSBkZWZhdWx0IFNTRSBtYW5hZ2VyLiBUaGUgcmVsYXkgKHRoaXMgc2VydmljZSdzIG93biBSZWRpcyBjaGFubmVsKSBpc1xuICogYnVpbHQgb25seSB3aGVuIHNvbWV0aGluZyBzdHJlYW1zOiB0aGUgbG9nIHN0cmVhbSB0dXJucyBpdCBvbiBoZXJlLCBhbmQgYW5cbiAqIG9yZy1rZXllZCBjaGFubmVsIHR1cm5zIGl0IG9uIHdoZW4gcmVnaXN0ZXJlZCAocmVnaXN0ZXJTc2VUaWNrZXRDaGFubmVsKS5cbiAqIFRoZSBsb2cgdGlja2V0IHN0b3JlIGV4aXN0cyBvbmx5IHdpdGggdGhlIGxvZyBzdHJlYW0uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRTc2VNYW5hZ2VyKHNlcnZpY2VOYW1lOiBzdHJpbmcsIGxvZ1N0cmVhbTogYm9vbGVhbik6IFNTRU1hbmFnZXIge1xuICBjb25zdCBzc2VNYW5hZ2VyID0gbmV3IFNTRU1hbmFnZXIoe1xuICAgIGxvZ1N0cmVhbSxcbiAgICByZWxheUZhY3Rvcnk6ICgpID0+IGNyZWF0ZUVudlJlZGlzU1NFUmVsYXkoc2VydmljZU5hbWUpLFxuICAgIC4uLihsb2dTdHJlYW0gJiYge1xuICAgICAgdGlja2V0U3RvcmU6IGNyZWF0ZUVudlNzZVRpY2tldFN0b3JlKHtcbiAgICAgICAgdHRsTXM6IFNTRV9USUNLRVRfVFRMX01TLFxuICAgICAgICBrZXlQcmVmaXg6IGBsb2dzOiR7c2VydmljZU5hbWV9YCxcbiAgICAgIH0pLFxuICAgIH0pLFxuICB9KTtcbiAgaWYgKGxvZ1N0cmVhbSkgc3NlTWFuYWdlci5lbmFibGVSZWxheSgpO1xuICByZXR1cm4gc3NlTWFuYWdlcjtcbn1cblxuLyoqXG4gKiBUaGUgcGVyLXJlcXVlc3QgYnVpbGQtbG9nIHN0cmVhbTogYFBPU1QgL2xvZ3MvdGlja2V0YCArIGBHRVQgL2xvZ3MvOnJlcXVlc3RJZGAuXG4gKlxuICogVGlja2V0LWdhdGVkIOKAlCB0aGUgc3RyZWFtIGNhcnJpZXMgcGVyLW9yZyBidWlsZCBsb2dzLCBzbyBpdCBtdXN0IG5vdCBiZVxuICogd29ybGQtcmVhZGFibGUuIENsaWVudHMgZmlyc3QgUE9TVCAvbG9ncy90aWNrZXQgKEpXVC1hdXRoZW50aWNhdGVkKSB0byBtaW50IGFcbiAqIHNob3J0LWxpdmVkLCBzaW5nbGUtdXNlIHRpY2tldCBib3VuZCB0byB0aGVpciBvcmcgQU5EIHRvIHRoZSBzcGVjaWZpY1xuICogYHJlcXVlc3RJZGAgc3RyZWFtIHRoZXkgaW50ZW5kIHRvIG9wZW4sIHRoZW4gb3BlbiB0aGUgRXZlbnRTb3VyY2Ugd2l0aFxuICogP3RpY2tldD08dD4uIFRoaXMga2VlcHMgdGhlIEpXVCBvdXQgb2YgcXVlcnkgc3RyaW5ncyAvIGFjY2VzcyBsb2dzIHdoaWxlXG4gKiBlbmZvcmNpbmcgb3JnIG93bmVyc2hpcCwgcGVyLXN1YmplY3QgYXV0aG9yaXphdGlvbiwgYW5kIHRoZSBwZXItb3JnXG4gKiBjb25uZWN0aW9uIGNhcCBvbiB0aGUgc3RyZWFtLiBNaXJyb3JzIHRoZSBtZXNzYWdlLXNlcnZpY2Ugbm90aWZpY2F0aW9ucyBTU0VcbiAqIHRpY2tldCBleGNoYW5nZS5cbiAqL1xuZnVuY3Rpb24gd2lyZVNzZShhcHA6IEV4cHJlc3MsIHNzZU1hbmFnZXI6IFNTRU1hbmFnZXIpOiB2b2lkIHtcbiAgYXBwLnBvc3QoJy9sb2dzL3RpY2tldCcsIHJlcXVpcmVBdXRoLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgY29uc3Qgb3JnSWQgPSByZXEudXNlcj8ub3JnYW5pemF0aW9uSWQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCFvcmdJZCkge1xuICAgICAgc2VuZEVycm9yKHJlcywgNDAwLCAnVG9rZW4gbWlzc2luZyBvcmdhbml6YXRpb24nLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRoZSBjYWxsZXIgbXVzdCBuYW1lIHRoZSBzdHJlYW0gc3ViamVjdCB1cCBmcm9udCBzbyB0aGUgdGlja2V0IGlzIGJvdW5kIHRvXG4gICAgLy8gaXQuIFdpdGhvdXQgdGhpcywgYSB0aWNrZXQgY291bGQgYmUgcmVwbGF5ZWQgYWdhaW5zdCBBTlkgcmVxdWVzdElkIHRoZVxuICAgIC8vIG9yZyBjb3VsZCBndWVzcywgbGV0dGluZyBpdCBhdHRhY2ggdG8gYW5vdGhlciBvcmcncyBsb2cgc3RyZWFtLiBTdHJpY3RseVxuICAgIC8vIGZvcm1hdC12YWxpZGF0ZWQgc28gaXQgY2FuJ3QgY2FycnkgYW4gaW5qZWN0aW9uIHBheWxvYWQgaW50byB0aGUgc3ViamVjdC5cbiAgICBjb25zdCByZXF1ZXN0SWQgPSAocmVxLmJvZHkgYXMgeyByZXF1ZXN0SWQ/OiB1bmtub3duIH0gfCB1bmRlZmluZWQpPy5yZXF1ZXN0SWQ7XG4gICAgaWYgKHR5cGVvZiByZXF1ZXN0SWQgIT09ICdzdHJpbmcnIHx8ICFTU0VfUkVRVUVTVF9JRF9SRS50ZXN0KHJlcXVlc3RJZCkpIHtcbiAgICAgIHNlbmRFcnJvcihyZXMsIDQwMCwgJ01pc3Npbmcgb3IgaW52YWxpZCByZXF1ZXN0SWQnLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNzZU1hbmFnZXIuY3JlYXRlVGlja2V0KG9yZ0lkLCByZXF1ZXN0SWQpO1xuICAgIGlmICghcmVzdWx0Lm9rKSB7XG4gICAgICBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ2ZvcmJpZGRlbicpIHtcbiAgICAgICAgLy8gVGhlIHN1YmplY3QgaXMgb3duZWQgYnkgYW5vdGhlciBvcmcg4oCUIGRvIG5vdCBjb25maXJtIGl0IGV4aXN0czsgYSBwbGFpblxuICAgICAgICAvLyA0MDMgaXMgZW5vdWdoIGFuZCBsZWFrcyBub3RoaW5nIGFib3V0IHdoaWNoIHJlcXVlc3RJZHMgYXJlIGxpdmUuXG4gICAgICAgIHNlbmRFcnJvcihyZXMsIDQwMywgJ05vdCBhdXRob3JpemVkIGZvciB0aGlzIGxvZyBzdHJlYW0nLCBFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ29yZy1saW1pdCcpIHtcbiAgICAgICAgc2VuZEVycm9yKHJlcywgNDI5LCAnVG9vIG1hbnkgbG9nIHN0cmVhbSB0aWNrZXRzIGlzc3VlZCcsIEVycm9yQ29kZS5RVU9UQV9FWENFRURFRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZW5kRXJyb3IocmVzLCA1MDMsICdMb2cgc3RyZWFtaW5nIHN1YnN5c3RlbSBhdCBjYXBhY2l0eScsIEVycm9yQ29kZS5RVU9UQV9FWENFRURFRCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlbmRTdWNjZXNzKHJlcywgMjAwLCB7IHRpY2tldDogcmVzdWx0LnRpY2tldCB9KTtcbiAgfSk7XG5cbiAgLy8gVGhlIHN0cmVhbSBpdHNlbGYgcmVzb2x2ZXMgKyBjb25zdW1lcyB0aGUgdGlja2V0IGluc2lkZSBtaWRkbGV3YXJlKCkgYW5kXG4gIC8vIHJlamVjdHMgYW55IGFub255bW91cyAvIGludmFsaWQgLyBleHBpcmVkIC8gYWxyZWFkeS11c2VkIHRpY2tldCB3aXRoIDQwMS5cbiAgYXBwLmdldCgnL2xvZ3MvOnJlcXVlc3RJZCcsIHNzZU1hbmFnZXIubWlkZGxld2FyZSgpKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBhbiBFeHByZXNzIGFwcGxpY2F0aW9uIHdpdGggY29tbW9uIG1pZGRsZXdhcmVcbiAqXG4gKiBTZXRzIHVwOlxuICogLSBDT1JTIHdpdGggY29uZmlndXJlZCBvcmlnaW5zXG4gKiAtIEhlbG1ldCBzZWN1cml0eSBoZWFkZXJzXG4gKiAtIFJhdGUgbGltaXRpbmdcbiAqIC0gSlNPTiBhbmQgVVJMLWVuY29kZWQgYm9keSBwYXJzaW5nXG4gKiAtIFRydXN0IHByb3h5IHNldHRpbmdzXG4gKiAtIEhlYWx0aCBjaGVjayBlbmRwb2ludCAoL2hlYWx0aClcbiAqIC0gTWV0cmljcyBlbmRwb2ludCAoL21ldHJpY3MpXG4gKiAtIFNTRSBsb2dzIGVuZHBvaW50ICgvbG9ncy86cmVxdWVzdElkKSDigJQgb25seSB3aXRoIGBsb2dTdHJlYW06IHRydWVgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIENvbmZpZ3VyZWQgRXhwcmVzcyBhcHAgYW5kIFNTRSBtYW5hZ2VyXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHsgYXBwLCBzc2VNYW5hZ2VyIH0gPSBjcmVhdGVBcHAoKTtcbiAqXG4gKiBhcHAucG9zdCgnL2FwaS9yZXNvdXJjZScsIHJlcXVpcmVBdXRoLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAqICAgLy8gWW91ciByb3V0ZSBoYW5kbGVyXG4gKiB9KTtcbiAqXG4gKiBzdGFydFNlcnZlcihhcHAsIHsgbmFtZTogJ015IFNlcnZpY2UnIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcHAob3B0aW9uczogQ3JlYXRlQXBwT3B0aW9ucyA9IHt9KTogQ3JlYXRlQXBwUmVzdWx0IHtcbiAgY29uc3Qge1xuICAgIGVuYWJsZVJhdGVMaW1pdCA9IHRydWUsXG4gICAgbG9nU3RyZWFtID0gZmFsc2UsXG4gICAgZW5hYmxlT3BlbkFwaSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknO1xuXG4gIC8vIEEgY2FsbGVyLXN1cHBsaWVkIGBzc2VNYW5hZ2VyYCBza2lwcyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rpb24gZW50aXJlbHkuXG4gIGNvbnN0IHNzZU1hbmFnZXIgPSBvcHRpb25zLnNzZU1hbmFnZXIgPz8gY3JlYXRlRGVmYXVsdFNzZU1hbmFnZXIoc2VydmljZU5hbWUsIGxvZ1N0cmVhbSk7XG5cbiAgLy8gV2lyZSB0aGUgaWRlbXBvdGVuY3kgcmVwbGF5LWNhY2hlIGJhY2tlbmQgdXNlZCBieSB0aGUgcG9zdC1hdXRoIHJvdXRlXG4gIC8vIGZhY3RvcmllcyAoY3JlYXRlUHJvdGVjdGVkUm91dGUgLyBjcmVhdGVBdXRoZW50aWNhdGVkV2l0aE9yZ1JvdXRlKS4gUHJlZmVyXG4gIC8vIGFuIGV4cGxpY2l0bHkgaW5qZWN0ZWQgc3RvcmU7IG90aGVyd2lzZSBhdXRvLWNvbnN0cnVjdCBmcm9tIHRoZSBzaGFyZWQgZW52XG4gIC8vIFJlZGlzIHNvIGtleWVkIG11dGF0aW9uIHJldHJpZXMgZGVkdXBlIGFjcm9zcyByZXBsaWNhcy4gRmFsbHMgYmFjayB0byB0aGVcbiAgLy8gaW4tbWVtb3J5IGRlZmF1bHQgd2hlbiBubyBSZWRpcyBpcyBjb25maWd1cmVkIChzaW5nbGUtcmVwbGljYSBjb3JyZWN0bmVzcykuXG4gIGNvbnN0IHJlc29sdmVkSWRlbXBvdGVuY3lTdG9yZSA9IG9wdGlvbnMuaWRlbXBvdGVuY3lTdG9yZSA/PyBjcmVhdGVFbnZSZWRpc0lkZW1wb3RlbmN5U3RvcmUoKTtcbiAgaWYgKHJlc29sdmVkSWRlbXBvdGVuY3lTdG9yZSkge1xuICAgIHNldElkZW1wb3RlbmN5U3RvcmUocmVzb2x2ZWRJZGVtcG90ZW5jeVN0b3JlKTtcbiAgfVxuXG4gIC8vIE9wZW5UZWxlbWV0cnkgaXMgTk9UIGluaXRpYWxpemVkIGhlcmU6IGJ5IHRoZSB0aW1lIGNyZWF0ZUFwcCBydW5zLCBleHByZXNzXG4gIC8vIGFuZCBodHRwIGhhdmUgYWxyZWFkeSBiZWVuIHJlcXVpcmVkLCBzbyB0aGUgYXV0by1pbnN0cnVtZW50YXRpb24gaG9va3NcbiAgLy8gd291bGQgaGF2ZSBub3RoaW5nIHRvIHBhdGNoIChubyBpbmJvdW5kIHNwYW4g4oaSIG5vIHRyYWNlIGlkKS4gVHJhY2luZyBpc1xuICAvLyBzdGFydGVkIGJ5IHRoZSBgb3RlbC1ib290c3RyYXAuanNgIHByZWxvYWQgaW5zdGVhZCAobm9kZSAtciDigKYg4oCUIHNlZSBlYWNoXG4gIC8vIHNlcnZpY2UncyBEb2NrZXJmaWxlIENNRCAvIHN0YXJ0IHNjcmlwdCksIHdoaWNoIHJ1bnMgYmVmb3JlIGFueVxuICAvLyBpbnN0cnVtZW50ZWQgbW9kdWxlIGxvYWRzLiBgY3VycmVudFRyYWNlSWQoKWAgdGhlbiByZWFkcyB0aGUgYWN0aXZlIHNwYW4uXG5cbiAgY29uc3QgYXBwID0gZXhwcmVzcygpO1xuXG4gIGFwcGx5U2VjdXJpdHlIZWFkZXJzKGFwcCwgb3B0aW9ucywgZW5hYmxlT3BlbkFwaSk7XG4gIGFwcGx5Qm9keVBhcnNpbmcoYXBwLCBvcHRpb25zKTtcblxuICAvLyBUcnVzdCBwcm94eSAobXVzdCBiZSBzZXQgYmVmb3JlIHJhdGUgbGltaXRlciBzbyByZXEuaXAgcmVzb2x2ZXMgY29ycmVjdGx5KVxuICBhcHAuc2V0KCd0cnVzdCBwcm94eScsIENvbmZpZy5nZXQoJ3NlcnZlcicpLnRydXN0UHJveHkpO1xuXG4gIC8vIFJlcXVlc3QgSUQgKyBhdWRpdCBjb250ZXh0LiBQcmVmZXIgdGhlIGluYm91bmQgYFgtUmVxdWVzdC1JZGAgKG5naW54LCBvciBhXG4gIC8vIHBlZXIgc2VydmljZSAvIENMSSBmb3J3YXJkaW5nIGl0cyBvd24pIHdoZW4gaXQgaXMgYSBib3VuZGVkIG9wYXF1ZSB0b2tlbiDigJRcbiAgLy8gYW4gb3ZlcnNpemVkIG9yIGp1bmsgdmFsdWUgaXMgcmVwbGFjZWQsIG5vdCBzdG9yZWQg4oCUIG90aGVyd2lzZSBnZW5lcmF0ZSBvbmUuXG4gIC8vIFRoZSByZXN0IG9mIHRoZSByZXF1ZXN0IHRoZW4gcnVucyBpbnNpZGUgYW4gYXVkaXQtY29udGV4dCBzY29wZSwgc28gZXZlcnlcbiAgLy8gYHJlY29yZEF1ZGl0YCBpdCBtYWtlcyBjYXJyaWVzIHRoZSByZXF1ZXN0IGlkLCB0cmFjZSBpZCwgY2xpZW50IGlwIC8gVUEsIHRoZVxuICAvLyB2ZXJpZmllZCBjcmVkZW50aWFsIChyZWFkIGxhemlseSwgYWZ0ZXIgYHJlcXVpcmVBdXRoYCkgYW5kIGFueSBpbmJvdW5kXG4gIC8vIGBYLVBpcGVsaW5lLUV4ZWN1dGlvbi1JZGAgLyBgWC1Db2RlQnVpbGQtQnVpbGQtSWRgIC8gYFgtU291cmNlLUV2ZW50LUlkYFxuICAvLyB3aXRoIG5vIGNhbGwtc2l0ZSBjaGFuZ2UuIE1vdW50ZWQgYWZ0ZXIgYHRydXN0IHByb3h5YCBzbyBgcmVxLmlwYCBpcyByZWFsLlxuICBhcHAudXNlKChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IGhkciA9IHJlcS5oZWFkZXJzWyd4LXJlcXVlc3QtaWQnXTtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSBzYW5pdGl6ZUNvcnJlbGF0aW9uSWQoQXJyYXkuaXNBcnJheShoZHIpID8gaGRyWzBdIDogaGRyKSA/PyB1dWlkKCk7XG4gICAgcmVxLnJlcXVlc3RJZCA9IHJlcXVlc3RJZDtcbiAgICByZXMuc2V0SGVhZGVyKCdYLVJlcXVlc3QtSWQnLCByZXF1ZXN0SWQpO1xuICAgIHJ1bldpdGhBdWRpdENvbnRleHQoYXVkaXRDb250ZXh0RnJvbVJlcXVlc3QocmVxLCB7IHJlcXVlc3RJZCwgdHJhY2VJZDogY3VycmVudFRyYWNlSWQoKSB9KSwgbmV4dCk7XG4gIH0pO1xuXG4gIG1vdW50SW5mcmFFbmRwb2ludHMoYXBwLCBvcHRpb25zLCBzZXJ2aWNlTmFtZSwgZW5hYmxlT3BlbkFwaSk7XG4gIGlmIChlbmFibGVSYXRlTGltaXQpIG1vdW50UmF0ZUxpbWl0ZXIoYXBwLCBzZXJ2aWNlTmFtZSk7XG4gIGFwcGx5UmVxdWVzdFRlbGVtZXRyeShhcHApO1xuXG4gIC8vIE5PVEU6IGlkZW1wb3RlbmN5IGlzIGludGVudGlvbmFsbHkgTk9UIG1vdW50ZWQgaGVyZS4gSXQgbmVlZHMgdGhlIFZFUklGSUVEXG4gIC8vIG9yZyBpZCB0byBuYW1lc3BhY2UgaXRzIHJlcGxheSBjYWNoZSwgYnV0IHRoaXMgcHJlLWF1dGggcG9zaXRpb24gcnVucyBiZWZvcmVcbiAgLy8gYHJlcXVpcmVBdXRoYC9gYXR0YWNoUmVxdWVzdENvbnRleHRgIHBvcHVsYXRlIGlkZW50aXR5LCBzbyBhIGdsb2JhbCBtb3VudFxuICAvLyBoZXJlIGlzIGEgcGVybWFuZW50IG5vLW9wIChvcmcgYWx3YXlzIHVuZGVmaW5lZCDihpIgc2tpcCkuIEl0IGlzIGluc3RlYWQgd2lyZWRcbiAgLy8gaW50byB0aGUgcG9zdC1hdXRoIHJvdXRlIGNoYWlucyDigJQgc2VlIGBjcmVhdGVQcm90ZWN0ZWRSb3V0ZWAgL1xuICAvLyBgY3JlYXRlQXV0aGVudGljYXRlZFdpdGhPcmdSb3V0ZWAgaW4gbWlkZGxld2FyZS1mYWN0b3J5LnRzLlxuXG4gIGlmIChsb2dTdHJlYW0pIHdpcmVTc2UoYXBwLCBzc2VNYW5hZ2VyKTtcblxuICByZXR1cm4geyBhcHAsIHNzZU1hbmFnZXIgfTtcbn1cbiJdfQ==
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZhY3RvcnkuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvYXBwLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM1UsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxXQUFXLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLE9BQXlFLE1BQU0sU0FBUyxDQUFDO0FBQ2hHLE9BQU8sU0FBUyxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0QsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sNkJBQTZCLENBQUM7QUFDekgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxN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QUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BHLENBQUMsQ0FBQyxDQUFDO0lBRUgsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDOUQsSUFBSSxlQUFlO1FBQUUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTNCLDZFQUE2RTtJQUM3RSwrRUFBK0U7SUFDL0UsNEVBQTRFO0lBQzVFLCtFQUErRTtJQUMvRSxpRUFBaUU7SUFDakUsOERBQThEO0lBRTlELElBQUksU0FBUztRQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHNlbmRTdWNjZXNzLCBzZW5kRXJyb3IsIGdlbmVyYXRlT3BlbkFwaVNwZWMsIEVycm9yQ29kZSwgY3JlYXRlTG9nZ2VyLCB2ZXJpZnlTZXJ2aWNlUHJpbmNpcGFsLCBjcmVhdGVIZWFsdGhSb3V0ZXIsIHNldENvdW50ZXJFbWl0dGVyLCBzZXRHYXVnZUVtaXR0ZXIsIHJlcXVpcmVBdXRoLCBzYWZlRXF1YWwsIGNyZWF0ZUVudlNzZVRpY2tldFN0b3JlLCBTU0VfVElDS0VUX1RUTF9NUywgYXVkaXRDb250ZXh0RnJvbVJlcXVlc3QsIHJ1bldpdGhBdWRpdENvbnRleHQsIHNhbml0aXplQ29ycmVsYXRpb25JZCB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgT3BlbkFwaVNwZWNPcHRpb25zIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgeyBnZXRDb25uZWN0aW9uIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgY29tcHJlc3Npb24gZnJvbSAnY29tcHJlc3Npb24nO1xuaW1wb3J0IGNvcnMgZnJvbSAnY29ycyc7XG5pbXBvcnQgZXhwcmVzcywgeyB0eXBlIEV4cHJlc3MsIHR5cGUgTmV4dEZ1bmN0aW9uLCB0eXBlIFJlcXVlc3QsIHR5cGUgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCByYXRlTGltaXQsIHsgaXBLZXlHZW5lcmF0b3IgfSBmcm9tICdleHByZXNzLXJhdGUtbGltaXQnO1xuaW1wb3J0IGhlbG1ldCBmcm9tICdoZWxtZXQnO1xuaW1wb3J0IHN3YWdnZXJVaSBmcm9tICdzd2FnZ2VyLXVpLWV4cHJlc3MnO1xuaW1wb3J0IHsgdjcgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZXRhZ01pZGRsZXdhcmUgfSBmcm9tICcuL2V0YWctbWlkZGxld2FyZS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVFbnZSZWRpc0lkZW1wb3RlbmN5U3RvcmUsIHNldElkZW1wb3RlbmN5U3RvcmUsIHR5cGUgSWRlbXBvdGVuY3lTdG9yZSB9IGZyb20gJy4vaWRlbXBvdGVuY3ktbWlkZGxld2FyZS5qcyc7XG5pbXBvcnQgeyBtZXRyaWNzTWlkZGxld2FyZSwgbWV0cmljc0hhbmRsZXIsIGluY0NvdW50ZXIsIHNldEdhdWdlIH0gZnJvbSAnLi9tZXRyaWNzLmpzJztcbmltcG9ydCB7IGNyZWF0ZVNoYXJlZFJhdGVMaW1pdFN0b3JlIH0gZnJvbSAnLi9yYXRlLWxpbWl0LXN0b3JlLmpzJztcbmltcG9ydCB7IHJlYWRpbmVzc0d1YXJkIH0gZnJvbSAnLi9yZWFkaW5lc3MuanMnO1xuaW1wb3J0IHsgY3VycmVudFRyYWNlSWQgfSBmcm9tICcuL3RyYWNpbmcuanMnO1xuaW1wb3J0IHsgU1NFTWFuYWdlciwgU1NFX1JFUVVFU1RfSURfUkUgfSBmcm9tICcuLi9odHRwL3NzZS1jb25uZWN0aW9uLW1hbmFnZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlRW52UmVkaXNTU0VSZWxheSB9IGZyb20gJy4uL2h0dHAvc3NlLXJlbGF5LmpzJztcblxuLy8gV2lyZSBhcGktY29yZSdzIGNvdW50ZXIgc2hpbSB0byB0aGUgcmVhbCBwcm9tLWNsaWVudCByZWdpc3RyeS4gVGhpcyBpc1xuLy8gYSBuby1vcCB1bnRpbCBpbmNDb3VudGVyIGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUgKGxhenkgcmVnaXN0cmF0aW9uXG4vLyBpbiBtZXRyaWNzLnRzKSwgYW5kIGxldHMgYXBpLWNvcmUgaGVscGVycyBsaWtlIHRoZSBxdW90YSBjbGllbnQgcmVjb3JkXG4vLyBgcXVvdGFfZmFpbF9vcGVuX3RvdGFsYCB3aXRob3V0IHRha2luZyBhIGhhcmQgZGVwIG9uIGFwaS1zZXJ2ZXIuXG5zZXRDb3VudGVyRW1pdHRlcihpbmNDb3VudGVyKTtcbi8vIFNhbWUgc2VhbSBmb3IgR0FVR0VTLiBwaXBlbGluZS1kYXRhJ3MgcmVhZC1yZXBsaWNhIGxhZyBzYW1wbGVyIG5lZWRzIGl0OlxuLy8gcmVwbGF5IGxhZyBhbmQgdGhlIHN0YXRlIG9mIHRoZSByZWFkIGZhbGxiYWNrIGNpcmN1aXQgYXJlIHNhbXBsZWRcbi8vIHBvaW50LWluLXRpbWUgdmFsdWVzLCBzbyBlbWl0dGluZyB0aGVtIGFzIGNvdW50ZXJzIHdvdWxkIG1ha2UgZXZlcnkgcXVlcnlcbi8vIG92ZXIgdGhlbSB3cm9uZy4gcGlwZWxpbmUtZGF0YSBkZXBlbmRzIG9uIGFwaS1jb3JlIGFuZCBtdXN0IG5vdCBkZXBlbmQgb25cbi8vIGFwaS1zZXJ2ZXIsIGhlbmNlIHRoZSBzaGltIHJhdGhlciB0aGFuIGEgZGlyZWN0IGltcG9ydC5cbnNldEdhdWdlRW1pdHRlcihzZXRHYXVnZSk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYW4gRXhwcmVzcyBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUFwcE9wdGlvbnMge1xuICAvKiogRW5hYmxlIENPUlMgKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZUNvcnM/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIEhlbG1ldCBzZWN1cml0eSBoZWFkZXJzIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlbmFibGVIZWxtZXQ/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIHJhdGUgbGltaXRpbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZVJhdGVMaW1pdD86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgSlNPTiBib2R5IHBhcnNpbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZUpzb25Cb2R5PzogYm9vbGVhbjtcbiAgLyoqIEpTT04gYm9keSBzaXplIGxpbWl0IChkZWZhdWx0OiAnMW1iJykgKi9cbiAganNvbkxpbWl0Pzogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCBwcmVmaXhlcyB0aGUgZ2xvYmFsIEpTT04gYm9keSBwYXJzZXIgbXVzdCBOT1QgdG91Y2gg4oCUIGZvciByb3V0ZXMgdGhhdCBuZWVkXG4gICAqIHRoZSByYXcgYm9keSAoZS5nLiBhIFN0cmlwZSB3ZWJob29rIHdob3NlIEhNQUMgaXMgY29tcHV0ZWQgb3ZlciB0aGUgZXhhY3QgYnl0ZXMpLlxuICAgKiBXaXRob3V0IHRoaXMgdGhlIGdsb2JhbCBwYXJzZXIgY29uc3VtZXMgdGhlIGJvZHkgZmlyc3QgYW5kIGEgbGF0ZXIgYGV4cHJlc3MucmF3KClgXG4gICAqIG9uIHRoZSBzYW1lIHBhdGggaXMgYSBuby1vcCwgYnJlYWtpbmcgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIGpzb25Cb2R5RXhjbHVkZT86IHN0cmluZ1tdO1xuICAvKiogRW5hYmxlIFVSTC1lbmNvZGVkIGJvZHkgcGFyc2luZyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlVXJsRW5jb2RlZD86IGJvb2xlYW47XG4gIC8qKiBVUkwtZW5jb2RlZCBib2R5IHNpemUgbGltaXQgKGRlZmF1bHQ6ICcxbWInKSAqL1xuICB1cmxFbmNvZGVkTGltaXQ/OiBzdHJpbmc7XG4gIC8qKiBDdXN0b20gU1NFIG1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgc3NlTWFuYWdlcj86IFNTRU1hbmFnZXI7XG4gIC8qKlxuICAgKiBTZXJ2ZSB0aGUgcGVyLXJlcXVlc3QgYnVpbGQtbG9nIHN0cmVhbTogYFBPU1QgL2xvZ3MvdGlja2V0YCArXG4gICAqIGBHRVQgL2xvZ3MvOnJlcXVlc3RJZGAsIGEgbG9nIHRpY2tldCBzdG9yZSwgdGhlIGNyb3NzLXBvZCByZWxheSwgYW5kXG4gICAqIGBjdHgubG9nYCBmcmFtZXMgcHVzaGVkIHRvIFNTRS4gRGVmYXVsdCBmYWxzZSDigJQgYSBzZXJ2aWNlIHdpdGhvdXQgaXQgaGFzIG5vXG4gICAqIGAvbG9nc2Agcm91dGVzIGFuZCBgY3R4LmxvZ2Agb25seSB3cml0ZXMgdG8gdGhlIGxvZ2dlci5cbiAgICovXG4gIGxvZ1N0cmVhbT86IGJvb2xlYW47XG4gIC8qKiBIZWFsdGggY2hlY2sgZGVwZW5kZW5jeSBjaGVja2VyIOKAlCBpZiBwcm92aWRlZCwgL2hlYWx0aCByZXBvcnRzIGRlcGVuZGVuY3kgc3RhdHVzICovXG4gIGNoZWNrRGVwZW5kZW5jaWVzPzogKCkgPT4gUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCAnY29ubmVjdGVkJyB8ICdkaXNjb25uZWN0ZWQnIHwgJ3Vua25vd24nPj47XG4gIC8qKlxuICAgKiBTZXJ2ZSB0aGUgT3BlbkFQSSBzcGVjIGF0IGAvZG9jcy9vcGVuYXBpLmpzb25gIGFuZCBTd2FnZ2VyIFVJIGF0IGAvZG9jc2AuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIE9GRiB1bmRlciBgTk9ERV9FTlY9cHJvZHVjdGlvbmA6IHRoZSByb3V0ZXMgYXJlIHJlZ2lzdGVyZWQgYWJvdmVcbiAgICogdGhlIHJhdGUgbGltaXRlciBhbmQgYXJlIG5vdCBhdXRoLWdhdGVkLCBzbyBpbiBwcm9kdWN0aW9uIHRoZXkgd291bGQgcHVibGlzaFxuICAgKiB0aGUgZnVsbCByb3V0ZSArIHNjaGVtYSBpbnZlbnRvcnkgb2YgZXZlcnkgc2VydmljZSB0byBhbnlvbmUgd2hvIGNvdWxkIHJlYWNoXG4gICAqIHRoZSBwb3J0LiBQYXNzIGB0cnVlYCBleHBsaWNpdGx5IHRvIHNlcnZlIHRoZW0gaW4gcHJvZHVjdGlvbiBhbnl3YXkuXG4gICAqL1xuICBlbmFibGVPcGVuQXBpPzogYm9vbGVhbjtcbiAgLyoqIE9wZW5BUEkgc3BlYyBjdXN0b21pemF0aW9uIG9wdGlvbnMgKi9cbiAgb3BlbkFwaU9wdGlvbnM/OiBPcGVuQXBpU3BlY09wdGlvbnM7XG4gIC8qKiBFbmFibGUgZ3ppcC9kZWZsYXRlIHJlc3BvbnNlIGNvbXByZXNzaW9uIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlbmFibGVDb21wcmVzc2lvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZGVtcG90ZW5jeSByZXBsYXktY2FjaGUgYmFja2VuZCBmb3Iga2V5ZWQgbXV0YXRpb24gcmV0cmllcy4gV2hlbiBvbWl0dGVkLFxuICAgKiBjcmVhdGVBcHAgYXV0by13aXJlcyB0aGUgc2hhcmVkIGVudiBSZWRpcyBzdG9yZSAobXVsdGktcmVwbGljYSBkZWR1cCkgaWZcbiAgICogUmVkaXMgaXMgY29uZmlndXJlZCwgZWxzZSBrZWVwcyB0aGUgaW4tbWVtb3J5IGRlZmF1bHQgKHNpbmdsZS1yZXBsaWNhKS5cbiAgICogUGFzcyBhbiBleHBsaWNpdCBzdG9yZSB0byBpbmplY3QgYSBiZXNwb2tlIGJhY2tlbmQgKGUuZy4gYSBzZXJ2aWNlJ3Mgb3duXG4gICAqIGlvcmVkaXMgY29ubmVjdGlvbikuXG4gICAqL1xuICBpZGVtcG90ZW5jeVN0b3JlPzogSWRlbXBvdGVuY3lTdG9yZTtcbiAgLyoqXG4gICAqIEV4dHJhIHdhcm11cCBjYWxsYmFja3MgaW52b2tlZCBieSBgR0VUIC93YXJtdXBgIGluIGFkZGl0aW9uIHRvIHRoZVxuICAgKiBkZWZhdWx0IFBvc3RncmVzIHBpbmcuIFVzZSBmb3Igc2VydmljZXMgdGhhdCBkZXBlbmQgb24gTW9uZ28sIFJlZGlzLFxuICAgKiBTUVMsIGV0Yy4g4oCUIHByZS13YXJtaW5nIG9wZW5zIGNvbm5lY3Rpb24gcG9vbHMgYmVmb3JlIHJlYWwgdHJhZmZpY1xuICAgKiBhcnJpdmVzLiBFYWNoIGNhbGxiYWNrIHNob3VsZCByZXNvbHZlIHdoZW4gaXRzIGRlcGVuZGVuY3kgaXMgcmVhZHk7XG4gICAqIGFueSByZWplY3Rpb24gY2F1c2VzIC93YXJtdXAgdG8gcmV0dXJuIDUwMy5cbiAgICovXG4gIHdhcm11cEhvb2tzPzogQXJyYXk8KCkgPT4gUHJvbWlzZTx2b2lkPj47XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNyZWF0aW5nIGFuIEV4cHJlc3MgYXBwbGljYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcHBSZXN1bHQge1xuICAvKiogQ29uZmlndXJlZCBFeHByZXNzIGFwcGxpY2F0aW9uICovXG4gIGFwcDogRXhwcmVzcztcbiAgLyoqIFNTRSBtYW5hZ2VyIGluc3RhbmNlICovXG4gIHNzZU1hbmFnZXI6IFNTRU1hbmFnZXI7XG59XG5cbi8qKiBIZWxtZXQgKHN0cmljdCBDU1ApLCBDT1JTLCBjb21wcmVzc2lvbiBhbmQgRVRhZ3MuICovXG5mdW5jdGlvbiBhcHBseVNlY3VyaXR5SGVhZGVycyhhcHA6IEV4cHJlc3MsIG9wdGlvbnM6IENyZWF0ZUFwcE9wdGlvbnMsIGVuYWJsZU9wZW5BcGk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgY29uc3QgeyBlbmFibGVDb3JzID0gdHJ1ZSwgZW5hYmxlSGVsbWV0ID0gdHJ1ZSwgZW5hYmxlQ29tcHJlc3Npb24gPSB0cnVlIH0gPSBvcHRpb25zO1xuICAvLyBTd2FnZ2VyIFVJIG5lZWRzIHVuc2FmZS1pbmxpbmUgKyB1bnNhZmUtZXZhbCBmb3IgaXRzIGJ1bmRsZWQgc2NyaXB0cyDigJRcbiAgLy8gYnV0IENTUCBpcyBvbmx5IHJlbGF4ZWQgdGhhdCBmYXIgd2hlbiAoYSkgT3BlbkFQSSBpcyBlbmFibGVkIEFORCAoYikgd2UncmVcbiAgLy8gbm90IGluIHByb2R1Y3Rpb24uIEluIHByb2QsIFN3YWdnZXIgc2hvdWxkIGJlIHNlcnZlZCBiZWhpbmQgYSBzZXBhcmF0ZVxuICAvLyBob3N0IG9yIGF1dGgtZ2F0ZWQgcm91dGU7IHRoZSBtYWluIGFwcCBrZWVwcyB0aGUgc3RyaWN0IENTUCBzbyBhIFN0b3JlZFxuICAvLyBYU1MgaW4gYW55IGhhbmRsZXIgY2FuJ3QgYGV2YWwoKWAgYXJiaXRyYXJ5IHNjcmlwdC5cbiAgY29uc3QgYWxsb3dTd2FnZ2VyQ3NwID0gZW5hYmxlT3BlbkFwaSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nO1xuICBpZiAoZW5hYmxlSGVsbWV0KSB7XG4gICAgYXBwLnVzZShoZWxtZXQoe1xuICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5OiB7XG4gICAgICAgIGRpcmVjdGl2ZXM6IHtcbiAgICAgICAgICBkZWZhdWx0U3JjOiBbXCInc2VsZidcIl0sXG4gICAgICAgICAgc2NyaXB0U3JjOiBhbGxvd1N3YWdnZXJDc3BcbiAgICAgICAgICAgID8gW1wiJ3NlbGYnXCIsIFwiJ3Vuc2FmZS1pbmxpbmUnXCIsIFwiJ3Vuc2FmZS1ldmFsJ1wiXVxuICAgICAgICAgICAgOiBbXCInc2VsZidcIl0sXG4gICAgICAgICAgc3R5bGVTcmM6IFtcIidzZWxmJ1wiLCBcIid1bnNhZmUtaW5saW5lJ1wiXSxcbiAgICAgICAgICBpbWdTcmM6IFtcIidzZWxmJ1wiLCAnZGF0YTonLCAnYmxvYjonXSxcbiAgICAgICAgICBjb25uZWN0U3JjOiBbXCInc2VsZidcIl0sXG4gICAgICAgICAgZm9udFNyYzogW1wiJ3NlbGYnXCJdLFxuICAgICAgICAgIG9iamVjdFNyYzogW1wiJ25vbmUnXCJdLFxuICAgICAgICAgIGZyYW1lQW5jZXN0b3JzOiBbXCInbm9uZSdcIl0sXG4gICAgICAgICAgYmFzZVVyaTogW1wiJ3NlbGYnXCJdLFxuICAgICAgICAgIGZvcm1BY3Rpb246IFtcIidzZWxmJ1wiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgaWYgKGVuYWJsZUNvcnMpIHtcbiAgICBhcHAudXNlKGNvcnMoQ29uZmlnLmdldCgnc2VydmVyJykuY29ycykpO1xuICB9XG5cbiAgLy8gUmVzcG9uc2UgY29tcHJlc3Npb24gKGd6aXAvZGVmbGF0ZSkg4oCUIHNraXAgU1NFIHN0cmVhbXNcbiAgaWYgKGVuYWJsZUNvbXByZXNzaW9uKSB7XG4gICAgYXBwLnVzZShjb21wcmVzc2lvbih7XG4gICAgICBmaWx0ZXI6IChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgLy8gRG9uJ3QgY29tcHJlc3MgU1NFIHN0cmVhbXMuIE1hdGNoIGJ5IGluY2x1c2lvbjogdGhlIEFjY2VwdCBoZWFkZXIgaXNcbiAgICAgICAgLy8gb2Z0ZW4gYSBsaXN0IChlLmcuIFwidGV4dC9ldmVudC1zdHJlYW0sICovKlwiKSwgd2hpY2ggZXhhY3QgZXF1YWxpdHlcbiAgICAgICAgLy8gd291bGQgbWlzcywgY29tcHJlc3NpbmcvYnVmZmVyaW5nIHRoZSBzdHJlYW0uXG4gICAgICAgIGlmICgocmVxLmhlYWRlcnMuYWNjZXB0IHx8ICcnKS5pbmNsdWRlcygndGV4dC9ldmVudC1zdHJlYW0nKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gY29tcHJlc3Npb24uZmlsdGVyKHJlcSwgcmVzKTtcbiAgICAgIH0sXG4gICAgICB0aHJlc2hvbGQ6IENvcmVDb25zdGFudHMuQ09NUFJFU1NJT05fVEhSRVNIT0xEX0JZVEVTLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8vIEVUYWcgc3VwcG9ydCBmb3IgY29uZGl0aW9uYWwgR0VUIHJlcXVlc3RzICgzMDQgTm90IE1vZGlmaWVkKVxuICBhcHAudXNlKGV0YWdNaWRkbGV3YXJlKCkpO1xufVxuXG4vKiogSlNPTiArIFVSTC1lbmNvZGVkIGJvZHkgcGFyc2Vycy4gKi9cbmZ1bmN0aW9uIGFwcGx5Qm9keVBhcnNpbmcoYXBwOiBFeHByZXNzLCBvcHRpb25zOiBDcmVhdGVBcHBPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHsgZW5hYmxlSnNvbkJvZHkgPSB0cnVlLCBqc29uTGltaXQgPSAnMW1iJywgZW5hYmxlVXJsRW5jb2RlZCA9IHRydWUsIHVybEVuY29kZWRMaW1pdCA9ICcxbWInIH0gPSBvcHRpb25zO1xuICBpZiAoZW5hYmxlSnNvbkJvZHkpIHtcbiAgICBjb25zdCBqc29uUGFyc2VyID0gZXhwcmVzcy5qc29uKHsgbGltaXQ6IGpzb25MaW1pdCB9KTtcbiAgICBjb25zdCBleGNsdWRlID0gb3B0aW9ucy5qc29uQm9keUV4Y2x1ZGUgPz8gW107XG4gICAgaWYgKGV4Y2x1ZGUubGVuZ3RoID4gMCkge1xuICAgICAgLy8gU2tpcCB0aGUgZ2xvYmFsIEpTT04gcGFyc2VyIGZvciByYXctYm9keSBwYXRocyBzbyBhIHBlci1wYXRoIGBleHByZXNzLnJhdygpYFxuICAgICAgLy8gY2FuIHJlYWQgdGhlIGV4YWN0IGJ5dGVzIChzZWUgYGpzb25Cb2R5RXhjbHVkZWApLlxuICAgICAgYXBwLnVzZSgocmVxLCByZXMsIG5leHQpID0+IChleGNsdWRlLnNvbWUoKHApID0+IHJlcS5wYXRoLnN0YXJ0c1dpdGgocCkpID8gbmV4dCgpIDoganNvblBhcnNlcihyZXEsIHJlcywgbmV4dCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBwLnVzZShqc29uUGFyc2VyKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlVXJsRW5jb2RlZCkge1xuICAgIGFwcC51c2UoZXhwcmVzcy51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IHRydWUsIGxpbWl0OiB1cmxFbmNvZGVkTGltaXQgfSkpO1xuICB9XG59XG5cbi8qKlxuICogSGVhbHRoLCByZWFkaW5lc3MgZ3VhcmQsIGAvd2FybXVwYCwgYC9tZXRyaWNzYCBhbmQgdGhlIE9wZW5BUEkgZG9jcyDigJQgYWxsXG4gKiByZWdpc3RlcmVkIGJlZm9yZSB0aGUgcmF0ZSBsaW1pdGVyIHNvIHRoZXkgYXJlIG5ldmVyIHRocm90dGxlZC5cbiAqL1xuZnVuY3Rpb24gbW91bnRJbmZyYUVuZHBvaW50cyhhcHA6IEV4cHJlc3MsIG9wdGlvbnM6IENyZWF0ZUFwcE9wdGlvbnMsIHNlcnZpY2VOYW1lOiBzdHJpbmcsIGVuYWJsZU9wZW5BcGk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgY29uc3QgeyBjaGVja0RlcGVuZGVuY2llcywgb3BlbkFwaU9wdGlvbnMsIHdhcm11cEhvb2tzID0gW10gfSA9IG9wdGlvbnM7XG5cbiAgYXBwLnVzZShjcmVhdGVIZWFsdGhSb3V0ZXIoe1xuICAgIHNlcnZpY2VOYW1lLFxuICAgIGNoZWNrRGVwZW5kZW5jaWVzLFxuICB9KSk7XG5cbiAgLy8gUmVhZGluZXNzIGd1YXJkIOKAlCA1MDNzIGJ1c2luZXNzIHRyYWZmaWMgd2hpbGUgdGhlIHNlcnZpY2UgaXMgTm90UmVhZHlcbiAgLy8gKGRhdGFzdG9yZSBzdGlsbCBjb25uZWN0aW5nIGF0IHN0YXJ0dXAsIG9yIGRyb3BwZWQpLiBNb3VudGVkIHJpZ2h0IGFmdGVyXG4gIC8vIHRoZSBoZWFsdGggcm91dGVyIGFuZCBiZWZvcmUgZXZlcnl0aGluZyBlbHNlIHNvIGEgTm90UmVhZHkgcmVxdWVzdCBpc1xuICAvLyByZWplY3RlZCBjaGVhcGx5LCBiZWZvcmUgcmF0ZS1saW1pdCAvIGlkZW1wb3RlbmN5IC8gYnVzaW5lc3MgaGFuZGxlcnMgZXZlclxuICAvLyB0b3VjaCBhIGRpc2Nvbm5lY3RlZCBkYXRhc3RvcmUuIEl0IGFsbG93bGlzdHMgdGhlIGluZnJhIGVuZHBvaW50c1xuICAvLyAoL21ldHJpY3MsIC93YXJtdXAsIC9kb2NzLCAvbG9ncykgcmVnaXN0ZXJlZCBiZWxvdywgcGx1cyAvaGVhbHRoICsgL3JlYWR5LlxuICBhcHAudXNlKHJlYWRpbmVzc0d1YXJkKCkpO1xuXG4gIC8vIFdhcm0tdXAgZW5kcG9pbnQg4oCUIHByZS1vcGVucyBjb25uZWN0aW9uIHBvb2xzIHNvIHRoZSBmaXJzdCByZWFsIHJlcXVlc3RcbiAgLy8gZG9lc24ndCBwYXkgY29sZC1zdGFydCBsYXRlbmN5LiBBbHdheXMgcGluZ3MgUG9zdGdyZXM7IHNlcnZpY2VzIHVzaW5nXG4gIC8vIE1vbmdvIC8gUmVkaXMgLyBTUVMgcGFzcyBgd2FybXVwSG9va3NgIHNvIHRob3NlIGFyZSB3YXJtZWQgaW4gcGFyYWxsZWwuXG4gIC8vXG4gIC8vIEdBVEVEIHRvIHZlcmlmaWVkIHNlcnZpY2UgcHJpbmNpcGFscy4gRXZlcnkgaGl0IHJ1bnMgYSBQb3N0Z3JlcyByb3VuZC10cmlwXG4gIC8vIHBsdXMgYWxsIGB3YXJtdXBIb29rc2AgKE1vbmdvL1JlZGlzL1NRUyksIHNvIGFuIG9wZW4gZW5kcG9pbnQgd291bGQgbGV0IGFuXG4gIC8vIGFub255bW91cyBsb29wIGFtcGxpZnkgaW50byBkYXRhc3RvcmUgbG9hZCBvbiBldmVyeSBzZXJ2aWNlIGluIHRoZSBmbGVldCDigJRcbiAgLy8gYW5kIGl0IGlzIHJlZ2lzdGVyZWQgYWJvdmUgdGhlIHJhdGUgbGltaXRlciwgc28gbm90aGluZyB3b3VsZCB0aHJvdHRsZSBpdC5cbiAgLy8gYHZlcmlmeVNlcnZpY2VQcmluY2lwYWxgIGNoZWNrcyB0aGUgYmVhcmVyIHRva2VuIGNyeXB0b2dyYXBoaWNhbGx5LCBzbyBpdCBpc1xuICAvLyBzYWZlIGhlcmUsIGFib3ZlIGByZXF1aXJlQXV0aGAuXG4gIGFwcC5nZXQoJy93YXJtdXAnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKCF2ZXJpZnlTZXJ2aWNlUHJpbmNpcGFsKHJlcSkpIHtcbiAgICAgIHNlbmRFcnJvcihyZXMsIDQwNCwgJ05vdCBmb3VuZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBnZXRDb25uZWN0aW9uKCkudGVzdENvbm5lY3Rpb24oKSxcbiAgICAgICAgLi4ud2FybXVwSG9va3MubWFwKChob29rKSA9PiBob29rKCkpLFxuICAgICAgXSk7XG4gICAgICBzZW5kU3VjY2VzcyhyZXMsIDIwMCwgeyB3YXJtZWQ6IHRydWUsIGhvb2tzOiB3YXJtdXBIb29rcy5sZW5ndGggfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBzZW5kRXJyb3IocmVzLCA1MDMsICdXYXJtdXAgZmFpbGVkJyk7XG4gICAgfVxuICB9KTtcblxuICAvLyBQcm9tZXRoZXVzIG1ldHJpY3MgZW5kcG9pbnQg4oCUIGFsd2F5cyByZWdpc3RlcmVkIChuZXZlciB0aHJvdHRsZWQpLlxuICAvL1xuICAvLyBPcHRpb25hbGx5IGdhdGVkOiB3aGVuIGBNRVRSSUNTX1NDUkFQRV9UT0tFTmAgaXMgc2V0LCB0aGUgc2NyYXBlciBtdXN0IHNlbmRcbiAgLy8gaXQgYXMgYSBiZWFyZXIgdG9rZW4gKFByb21ldGhldXMgYGJlYXJlcl90b2tlbmAgLyBgYmVhcmVyX3Rva2VuX2ZpbGVgIGluIHRoZVxuICAvLyBzY3JhcGUgY29uZmlnKS4gTGVmdCB1bmdhdGVkIHdoZW4gdW5zZXQgc28gZW5hYmxpbmcgaXQgaXMgYSBkZWxpYmVyYXRlLFxuICAvLyBjb29yZGluYXRlZCBjaGFuZ2UgcmF0aGVyIHRoYW4gYSBzaWxlbnQgbW9uaXRvcmluZyBvdXRhZ2Ug4oCUIHRlbmFudCBpZHMgc3RheVxuICAvLyBvdXQgb2YgdGhlIG91dHB1dCByZWdhcmRsZXNzLCBiZWNhdXNlIHRoZSBwZXItb3JnIGxhYmVsIGRlZmF1bHRzIE9GRiAoc2VlXG4gIC8vIEhUVFBfTUVUUklDU19PUkdfU0FNUExFX1JBVEUgaW4gbWV0cmljcy50cykuXG4gIGNvbnN0IG1ldHJpY3NUb2tlbiA9IHByb2Nlc3MuZW52Lk1FVFJJQ1NfU0NSQVBFX1RPS0VOO1xuICBhcHAuZ2V0KCcvbWV0cmljcycsIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIGlmICghbWV0cmljc1Rva2VuKSB7XG4gICAgICBuZXh0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhlYWRlciA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb247XG4gICAgY29uc3QgcHJlc2VudGVkID0gaGVhZGVyPy5zdGFydHNXaXRoKCdCZWFyZXIgJykgPyBoZWFkZXIuc2xpY2UoNykgOiB1bmRlZmluZWQ7XG4gICAgLy8gQ29uc3RhbnQtdGltZSBjb21wYXJlIOKAlCBhIGxlbmd0aC1pbmRlcGVuZGVudCBlcXVhbGl0eSBjaGVjayBoZXJlIHdvdWxkXG4gICAgLy8gbGVhayB0aGUgdG9rZW4gYSBieXRlIGF0IGEgdGltZS5cbiAgICBpZiAoIXByZXNlbnRlZCB8fCAhc2FmZUVxdWFsKHByZXNlbnRlZCwgbWV0cmljc1Rva2VuKSkge1xuICAgICAgc2VuZEVycm9yKHJlcywgNDA0LCAnTm90IGZvdW5kJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5leHQoKTtcbiAgfSwgbWV0cmljc0hhbmRsZXIoKSk7XG5cbiAgaWYgKGVuYWJsZU9wZW5BcGkpIHtcbiAgICBjb25zdCBzcGVjID0gZ2VuZXJhdGVPcGVuQXBpU3BlYyhvcGVuQXBpT3B0aW9ucyk7XG4gICAgYXBwLmdldCgnL2RvY3Mvb3BlbmFwaS5qc29uJywgKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpID0+IHtcbiAgICAgIHJlcy5qc29uKHNwZWMpO1xuICAgIH0pO1xuICAgIGFwcC51c2UoJy9kb2NzJywgc3dhZ2dlclVpLnNlcnZlLCBzd2FnZ2VyVWkuc2V0dXAoc3BlYywge1xuICAgICAgY3VzdG9tU2l0ZVRpdGxlOiBvcGVuQXBpT3B0aW9ucz8udGl0bGUgPz8gJ1BpcGVsaW5lIEJ1aWxkZXIgQVBJIERvY3MnLFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKiogR2xvYmFsIHJhdGUgbGltaXRlciDigJQgc2hhcmVkIGFjcm9zcyByZXBsaWNhcyB2aWEgdGhlIGVudiBSZWRpcyB3aGVuIGNvbmZpZ3VyZWQuICovXG5mdW5jdGlvbiBtb3VudFJhdGVMaW1pdGVyKGFwcDogRXhwcmVzcywgc2VydmljZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByYXRlTGltaXRDb25maWcgPSBDb25maWcuZ2V0KCdyYXRlTGltaXQnKTtcblxuICBjb25zdCByYXRlTGltaXRPcHRpb25zOiBQYXJhbWV0ZXJzPHR5cGVvZiByYXRlTGltaXQ+WzBdID0ge1xuICAgIG1heDogcmF0ZUxpbWl0Q29uZmlnLm1heCxcbiAgICB3aW5kb3dNczogcmF0ZUxpbWl0Q29uZmlnLndpbmRvd01zLFxuICAgIHN0YW5kYXJkSGVhZGVyczogdHJ1ZSxcbiAgICBsZWdhY3lIZWFkZXJzOiBmYWxzZSxcbiAgICAvLyBTa2lwIHJhdGUgbGltaXRpbmcgb25seSBmb3IgQ1JZUFRPR1JBUEhJQ0FMTFktVkVSSUZJRUQgaW50ZXJuYWwgc2VydmljZVxuICAgIC8vIGNhbGxlcnMuIFRoZSBsaW1pdGVyIHJ1bnMgYmVmb3JlIHJlcXVpcmVBdXRoLCBzbyBhIHBsYWludGV4dCBoZWFkZXJcbiAgICAvLyB3b3VsZCBiZSBzcG9vZmFibGUgYnkgYW55IGV4dGVybmFsIGNsaWVudCDihpIgdG90YWwgYnlwYXNzLlxuICAgIC8vIHZlcmlmeVNlcnZpY2VQcmluY2lwYWwgdmVyaWZpZXMgdGhlIHNpZ25lZCBzZXJ2aWNlIEpXVCBpbnN0ZWFkO1xuICAgIC8vIGludGVyLXNlcnZpY2UgY2FsbGVycyBhbGwgc2VuZCBvbmUgKGdldFNlcnZpY2VBdXRoSGVhZGVyKS5cbiAgICBza2lwOiAocmVxOiBSZXF1ZXN0KSA9PiB2ZXJpZnlTZXJ2aWNlUHJpbmNpcGFsKHJlcSksXG4gICAgLy8gS2V5IG9uIGNsaWVudCBJUCBvbmx5LiBUaGUgbGltaXRlciBydW5zIHByZS1hdXRoLCBzbyBgcmVxLnVzZXJgIGlzIHVuc2V0XG4gICAgLy8gYW5kIGFueSBvcmcgaWQgd291bGQgY29tZSBmcm9tIHRoZSBjYWxsZXItc3VwcGxpZWQgYHgtb3JnLWlkYCBoZWFkZXIg4oCUXG4gICAgLy8gc3Bvb2ZhYmxlLCBsZXR0aW5nIGFuIGF0dGFja2VyIHJvdGF0ZSB2YWx1ZXMgdG8gZXZhZGUgdGhlIGJ1Y2tldCBvclxuICAgIC8vIGZsb29kIGEgdmljdGltIG9yZydzIGJ1Y2tldC4gaXBLZXlHZW5lcmF0b3Igbm9ybWFsaXplcyBJUHY2IHRvIGEgLzY0XG4gICAgLy8gcHJlZml4IChhbHNvIHJlcXVpcmVkIGJ5IGV4cHJlc3MtcmF0ZS1saW1pdCA4LngncyB2YWxpZGF0b3IpLlxuICAgIGtleUdlbmVyYXRvcjogKHJlcTogUmVxdWVzdCkgPT4gaXBLZXlHZW5lcmF0b3IocmVxLmlwIHx8ICdhbm9uJywgNjQpLFxuICAgIC8vIEEgc3RvcmUgZmFpbHVyZSAoUmVkaXMgZG93biAvIGZhaWxpbmcgb3ZlcikgbXVzdCBkZWdyYWRlIHRvIFwibm90IHJhdGVcbiAgICAvLyBsaW1pdGVkXCIsIG5ldmVyIHRvIGEgNTAwIG9uIGV2ZXJ5IHJlcXVlc3Qgb2YgZXZlcnkgc2VydmljZS5cbiAgICBwYXNzT25TdG9yZUVycm9yOiB0cnVlLFxuICAgIGhhbmRsZXI6IChfcmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICBzZW5kRXJyb3IocmVzLCA0MjksICdUb28gbWFueSByZXF1ZXN0cywgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLCBFcnJvckNvZGUuUkFURV9MSU1JVF9FWENFRURFRCk7XG4gICAgfSxcbiAgICAvLyBTaGFyZWQgc3RhdGUgYWNyb3NzIHJlcGxpY2FzICh0aGUgcHJvY2Vzcy13aWRlIHJhdGUtbGltaXQgUmVkaXMgY29ubmVjdGlvbjtcbiAgICAvLyB1bmRlZmluZWQgd2l0aG91dCBSZWRpcyDihpIgcGVyLXByb2Nlc3MgbWVtb3J5IHN0b3JlLCByaWdodCBmb3Igb25lIHJlcGxpY2EpLlxuICAgIC8vIE5hbWVzcGFjZWQgcGVyIFNFUlZJQ0U6IGV2ZXJ5IHNlcnZpY2Ugc2hhcmVzIG9uZSBSZWRpcywgYW5kIGFuIHVucHJlZml4ZWRcbiAgICAvLyBgcmw6PGlwPmAga2V5IHdvdWxkIGxldCBvbmUgY2xpZW50J3MgdHJhZmZpYyB0byBBTlkgc2VydmljZSBkcmFpbiBpdHNcbiAgICAvLyBidWRnZXQgb24gRVZFUlkgc2VydmljZS5cbiAgICBzdG9yZTogY3JlYXRlU2hhcmVkUmF0ZUxpbWl0U3RvcmUoYCR7c2VydmljZU5hbWV9Omdsb2JhbGApLFxuICB9O1xuXG4gIGFwcC51c2UocmF0ZUxpbWl0KHJhdGVMaW1pdE9wdGlvbnMpKTtcbn1cblxuLyoqIFJlcXVlc3QgdGltZW91dCwgZHVyYXRpb24gbG9nZ2luZyBhbmQgSFRUUCBtZXRyaWNzLiAqL1xuZnVuY3Rpb24gYXBwbHlSZXF1ZXN0VGVsZW1ldHJ5KGFwcDogRXhwcmVzcyk6IHZvaWQge1xuICAvLyBFeHByZXNzIHJlcXVlc3QgdGltZW91dCDigJQgdXNlcyBDb3JlQ29uc3RhbnRzIHRvIHNoYXJlIHRoZSBzYW1lIGRlZmF1bHQgYXMgTGFtYmRhIGhhbmRsZXJzXG4gIGNvbnN0IHRpbWVvdXRNcyA9IENvcmVDb25zdGFudHMuSEFORExFUl9USU1FT1VUX01TO1xuICBhcHAudXNlKChfcmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pID0+IHtcbiAgICByZXMuc2V0VGltZW91dCh0aW1lb3V0TXMsICgpID0+IHtcbiAgICAgIGlmICghcmVzLmhlYWRlcnNTZW50KSB7XG4gICAgICAgIHNlbmRFcnJvcihyZXMsIDUwMywgJ1JlcXVlc3QgdGltZW91dCcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG5leHQoKTtcbiAgfSk7XG5cbiAgLy8gUmVxdWVzdCBkdXJhdGlvbiBsb2dnaW5nXG4gIGNvbnN0IGR1cmF0aW9uTG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdyZXF1ZXN0LWR1cmF0aW9uJyk7XG4gIGFwcC51c2UoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJlcy5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICAvLyBMb2cgYHJlcS5wYXRoYCAobm8gcXVlcnkgc3RyaW5nKSDigJQgYSBzdHJheSBgP3Rva2VuPWAvYD90aWNrZXQ9YCBtdXN0IG5vdCBiZVxuICAgICAgLy8gcGVyc2lzdGVkIHZlcmJhdGltIG9uIGV2ZXJ5IHJlcXVlc3QgKG1pcnJvcnMgdGhlIGF1dGh6LWRlbmlhbCBhdWRpdG9yJ3Mgc3RyaXApLlxuICAgICAgZHVyYXRpb25Mb2dnZXIuaW5mbyhgJHtyZXEubWV0aG9kfSAke3JlcS5wYXRofSAke3Jlcy5zdGF0dXNDb2RlfSAke2R1cmF0aW9ufW1zYCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIHBhdGg6IHJlcS5wYXRoLFxuICAgICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgZHVyYXRpb25NczogZHVyYXRpb24sXG4gICAgICAgIHJlcXVlc3RJZDogcmVxLnJlcXVlc3RJZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIG5leHQoKTtcbiAgfSk7XG5cbiAgLy8gUHJvbWV0aGV1cyBtZXRyaWNzIG1pZGRsZXdhcmUg4oCUIHJlY29yZHMgcmVxdWVzdCBkdXJhdGlvbiBhbmQgY291bnRcbiAgYXBwLnVzZShtZXRyaWNzTWlkZGxld2FyZSgpKTtcbn1cblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBTU0UgbWFuYWdlci4gVGhlIHJlbGF5ICh0aGlzIHNlcnZpY2UncyBvd24gUmVkaXMgY2hhbm5lbCkgaXNcbiAqIGJ1aWx0IG9ubHkgd2hlbiBzb21ldGhpbmcgc3RyZWFtczogdGhlIGxvZyBzdHJlYW0gdHVybnMgaXQgb24gaGVyZSwgYW5kIGFuXG4gKiBvcmcta2V5ZWQgY2hhbm5lbCB0dXJucyBpdCBvbiB3aGVuIHJlZ2lzdGVyZWQgKHJlZ2lzdGVyU3NlVGlja2V0Q2hhbm5lbCkuXG4gKiBUaGUgbG9nIHRpY2tldCBzdG9yZSBleGlzdHMgb25seSB3aXRoIHRoZSBsb2cgc3RyZWFtLlxuICovXG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0U3NlTWFuYWdlcihzZXJ2aWNlTmFtZTogc3RyaW5nLCBsb2dTdHJlYW06IGJvb2xlYW4pOiBTU0VNYW5hZ2VyIHtcbiAgY29uc3Qgc3NlTWFuYWdlciA9IG5ldyBTU0VNYW5hZ2VyKHtcbiAgICBsb2dTdHJlYW0sXG4gICAgcmVsYXlGYWN0b3J5OiAoKSA9PiBjcmVhdGVFbnZSZWRpc1NTRVJlbGF5KHNlcnZpY2VOYW1lKSxcbiAgICAuLi4obG9nU3RyZWFtICYmIHtcbiAgICAgIHRpY2tldFN0b3JlOiBjcmVhdGVFbnZTc2VUaWNrZXRTdG9yZSh7XG4gICAgICAgIHR0bE1zOiBTU0VfVElDS0VUX1RUTF9NUyxcbiAgICAgICAga2V5UHJlZml4OiBgbG9nczoke3NlcnZpY2VOYW1lfWAsXG4gICAgICB9KSxcbiAgICB9KSxcbiAgfSk7XG4gIGlmIChsb2dTdHJlYW0pIHNzZU1hbmFnZXIuZW5hYmxlUmVsYXkoKTtcbiAgcmV0dXJuIHNzZU1hbmFnZXI7XG59XG5cbi8qKlxuICogVGhlIHBlci1yZXF1ZXN0IGJ1aWxkLWxvZyBzdHJlYW06IGBQT1NUIC9sb2dzL3RpY2tldGAgKyBgR0VUIC9sb2dzLzpyZXF1ZXN0SWRgLlxuICpcbiAqIFRpY2tldC1nYXRlZCDigJQgdGhlIHN0cmVhbSBjYXJyaWVzIHBlci1vcmcgYnVpbGQgbG9ncywgc28gaXQgbXVzdCBub3QgYmVcbiAqIHdvcmxkLXJlYWRhYmxlLiBDbGllbnRzIGZpcnN0IFBPU1QgL2xvZ3MvdGlja2V0IChKV1QtYXV0aGVudGljYXRlZCkgdG8gbWludCBhXG4gKiBzaG9ydC1saXZlZCwgc2luZ2xlLXVzZSB0aWNrZXQgYm91bmQgdG8gdGhlaXIgb3JnIEFORCB0byB0aGUgc3BlY2lmaWNcbiAqIGByZXF1ZXN0SWRgIHN0cmVhbSB0aGV5IGludGVuZCB0byBvcGVuLCB0aGVuIG9wZW4gdGhlIEV2ZW50U291cmNlIHdpdGhcbiAqID90aWNrZXQ9PHQ+LiBUaGlzIGtlZXBzIHRoZSBKV1Qgb3V0IG9mIHF1ZXJ5IHN0cmluZ3MgLyBhY2Nlc3MgbG9ncyB3aGlsZVxuICogZW5mb3JjaW5nIG9yZyBvd25lcnNoaXAsIHBlci1zdWJqZWN0IGF1dGhvcml6YXRpb24sIGFuZCB0aGUgcGVyLW9yZ1xuICogY29ubmVjdGlvbiBjYXAgb24gdGhlIHN0cmVhbS4gTWlycm9ycyB0aGUgbWVzc2FnZS1zZXJ2aWNlIG5vdGlmaWNhdGlvbnMgU1NFXG4gKiB0aWNrZXQgZXhjaGFuZ2UuXG4gKi9cbmZ1bmN0aW9uIHdpcmVTc2UoYXBwOiBFeHByZXNzLCBzc2VNYW5hZ2VyOiBTU0VNYW5hZ2VyKTogdm9pZCB7XG4gIGFwcC5wb3N0KCcvbG9ncy90aWNrZXQnLCByZXF1aXJlQXV0aCwgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgIGNvbnN0IG9yZ0lkID0gcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICghb3JnSWQpIHtcbiAgICAgIHNlbmRFcnJvcihyZXMsIDQwMCwgJ1Rva2VuIG1pc3Npbmcgb3JnYW5pemF0aW9uJywgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBUaGUgY2FsbGVyIG11c3QgbmFtZSB0aGUgc3RyZWFtIHN1YmplY3QgdXAgZnJvbnQgc28gdGhlIHRpY2tldCBpcyBib3VuZCB0b1xuICAgIC8vIGl0LiBXaXRob3V0IHRoaXMsIGEgdGlja2V0IGNvdWxkIGJlIHJlcGxheWVkIGFnYWluc3QgQU5ZIHJlcXVlc3RJZCB0aGVcbiAgICAvLyBvcmcgY291bGQgZ3Vlc3MsIGxldHRpbmcgaXQgYXR0YWNoIHRvIGFub3RoZXIgb3JnJ3MgbG9nIHN0cmVhbS4gU3RyaWN0bHlcbiAgICAvLyBmb3JtYXQtdmFsaWRhdGVkIHNvIGl0IGNhbid0IGNhcnJ5IGFuIGluamVjdGlvbiBwYXlsb2FkIGludG8gdGhlIHN1YmplY3QuXG4gICAgY29uc3QgcmVxdWVzdElkID0gKHJlcS5ib2R5IGFzIHsgcmVxdWVzdElkPzogdW5rbm93biB9IHwgdW5kZWZpbmVkKT8ucmVxdWVzdElkO1xuICAgIGlmICh0eXBlb2YgcmVxdWVzdElkICE9PSAnc3RyaW5nJyB8fCAhU1NFX1JFUVVFU1RfSURfUkUudGVzdChyZXF1ZXN0SWQpKSB7XG4gICAgICBzZW5kRXJyb3IocmVzLCA0MDAsICdNaXNzaW5nIG9yIGludmFsaWQgcmVxdWVzdElkJywgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzc2VNYW5hZ2VyLmNyZWF0ZVRpY2tldChvcmdJZCwgcmVxdWVzdElkKTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdmb3JiaWRkZW4nKSB7XG4gICAgICAgIC8vIFRoZSBzdWJqZWN0IGlzIG93bmVkIGJ5IGFub3RoZXIgb3JnIOKAlCBkbyBub3QgY29uZmlybSBpdCBleGlzdHM7IGEgcGxhaW5cbiAgICAgICAgLy8gNDAzIGlzIGVub3VnaCBhbmQgbGVha3Mgbm90aGluZyBhYm91dCB3aGljaCByZXF1ZXN0SWRzIGFyZSBsaXZlLlxuICAgICAgICBzZW5kRXJyb3IocmVzLCA0MDMsICdOb3QgYXV0aG9yaXplZCBmb3IgdGhpcyBsb2cgc3RyZWFtJywgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyk7XG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdvcmctbGltaXQnKSB7XG4gICAgICAgIHNlbmRFcnJvcihyZXMsIDQyOSwgJ1RvbyBtYW55IGxvZyBzdHJlYW0gdGlja2V0cyBpc3N1ZWQnLCBFcnJvckNvZGUuUVVPVEFfRVhDRUVERUQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VuZEVycm9yKHJlcywgNTAzLCAnTG9nIHN0cmVhbWluZyBzdWJzeXN0ZW0gYXQgY2FwYWNpdHknLCBFcnJvckNvZGUuUVVPVEFfRVhDRUVERUQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZW5kU3VjY2VzcyhyZXMsIDIwMCwgeyB0aWNrZXQ6IHJlc3VsdC50aWNrZXQgfSk7XG4gIH0pO1xuXG4gIC8vIFRoZSBzdHJlYW0gaXRzZWxmIHJlc29sdmVzICsgY29uc3VtZXMgdGhlIHRpY2tldCBpbnNpZGUgbWlkZGxld2FyZSgpIGFuZFxuICAvLyByZWplY3RzIGFueSBhbm9ueW1vdXMgLyBpbnZhbGlkIC8gZXhwaXJlZCAvIGFscmVhZHktdXNlZCB0aWNrZXQgd2l0aCA0MDEuXG4gIGFwcC5nZXQoJy9sb2dzLzpyZXF1ZXN0SWQnLCBzc2VNYW5hZ2VyLm1pZGRsZXdhcmUoKSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuZCBjb25maWd1cmUgYW4gRXhwcmVzcyBhcHBsaWNhdGlvbiB3aXRoIGNvbW1vbiBtaWRkbGV3YXJlXG4gKlxuICogU2V0cyB1cDpcbiAqIC0gQ09SUyB3aXRoIGNvbmZpZ3VyZWQgb3JpZ2luc1xuICogLSBIZWxtZXQgc2VjdXJpdHkgaGVhZGVyc1xuICogLSBSYXRlIGxpbWl0aW5nXG4gKiAtIEpTT04gYW5kIFVSTC1lbmNvZGVkIGJvZHkgcGFyc2luZ1xuICogLSBUcnVzdCBwcm94eSBzZXR0aW5nc1xuICogLSBIZWFsdGggY2hlY2sgZW5kcG9pbnQgKC9oZWFsdGgpXG4gKiAtIE1ldHJpY3MgZW5kcG9pbnQgKC9tZXRyaWNzKVxuICogLSBTU0UgbG9ncyBlbmRwb2ludCAoL2xvZ3MvOnJlcXVlc3RJZCkg4oCUIG9ubHkgd2l0aCBgbG9nU3RyZWFtOiB0cnVlYFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyBDb25maWd1cmVkIEV4cHJlc3MgYXBwIGFuZCBTU0UgbWFuYWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB7IGFwcCwgc3NlTWFuYWdlciB9ID0gY3JlYXRlQXBwKCk7XG4gKlxuICogYXBwLnBvc3QoJy9hcGkvcmVzb3VyY2UnLCByZXF1aXJlQXV0aCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gKiAgIC8vIFlvdXIgcm91dGUgaGFuZGxlclxuICogfSk7XG4gKlxuICogc3RhcnRTZXJ2ZXIoYXBwLCB7IG5hbWU6ICdNeSBTZXJ2aWNlJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXBwKG9wdGlvbnM6IENyZWF0ZUFwcE9wdGlvbnMgPSB7fSk6IENyZWF0ZUFwcFJlc3VsdCB7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVSYXRlTGltaXQgPSB0cnVlLFxuICAgIGxvZ1N0cmVhbSA9IGZhbHNlLFxuICAgIGVuYWJsZU9wZW5BcGkgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCBzZXJ2aWNlTmFtZSA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAnYXBpJztcblxuICAvLyBBIGNhbGxlci1zdXBwbGllZCBgc3NlTWFuYWdlcmAgc2tpcHMgdGhlIGRlZmF1bHQgY29uc3RydWN0aW9uIGVudGlyZWx5LlxuICBjb25zdCBzc2VNYW5hZ2VyID0gb3B0aW9ucy5zc2VNYW5hZ2VyID8/IGNyZWF0ZURlZmF1bHRTc2VNYW5hZ2VyKHNlcnZpY2VOYW1lLCBsb2dTdHJlYW0pO1xuXG4gIC8vIFdpcmUgdGhlIGlkZW1wb3RlbmN5IHJlcGxheS1jYWNoZSBiYWNrZW5kIHVzZWQgYnkgdGhlIHBvc3QtYXV0aCByb3V0ZVxuICAvLyBmYWN0b3JpZXMgKGNyZWF0ZVByb3RlY3RlZFJvdXRlIC8gY3JlYXRlQXV0aGVudGljYXRlZFdpdGhPcmdSb3V0ZSkuIFByZWZlclxuICAvLyBhbiBleHBsaWNpdGx5IGluamVjdGVkIHN0b3JlOyBvdGhlcndpc2UgYXV0by1jb25zdHJ1Y3QgZnJvbSB0aGUgc2hhcmVkIGVudlxuICAvLyBSZWRpcyBzbyBrZXllZCBtdXRhdGlvbiByZXRyaWVzIGRlZHVwZSBhY3Jvc3MgcmVwbGljYXMuIEZhbGxzIGJhY2sgdG8gdGhlXG4gIC8vIGluLW1lbW9yeSBkZWZhdWx0IHdoZW4gbm8gUmVkaXMgaXMgY29uZmlndXJlZCAoc2luZ2xlLXJlcGxpY2EgY29ycmVjdG5lc3MpLlxuICBjb25zdCByZXNvbHZlZElkZW1wb3RlbmN5U3RvcmUgPSBvcHRpb25zLmlkZW1wb3RlbmN5U3RvcmUgPz8gY3JlYXRlRW52UmVkaXNJZGVtcG90ZW5jeVN0b3JlKCk7XG4gIGlmIChyZXNvbHZlZElkZW1wb3RlbmN5U3RvcmUpIHtcbiAgICBzZXRJZGVtcG90ZW5jeVN0b3JlKHJlc29sdmVkSWRlbXBvdGVuY3lTdG9yZSk7XG4gIH1cblxuICAvLyBPcGVuVGVsZW1ldHJ5IGlzIE5PVCBpbml0aWFsaXplZCBoZXJlOiBieSB0aGUgdGltZSBjcmVhdGVBcHAgcnVucywgZXhwcmVzc1xuICAvLyBhbmQgaHR0cCBoYXZlIGFscmVhZHkgYmVlbiByZXF1aXJlZCwgc28gdGhlIGF1dG8taW5zdHJ1bWVudGF0aW9uIGhvb2tzXG4gIC8vIHdvdWxkIGhhdmUgbm90aGluZyB0byBwYXRjaCAobm8gaW5ib3VuZCBzcGFuIOKGkiBubyB0cmFjZSBpZCkuIFRyYWNpbmcgaXNcbiAgLy8gc3RhcnRlZCBieSB0aGUgYG90ZWwtYm9vdHN0cmFwLmpzYCBwcmVsb2FkIGluc3RlYWQgKG5vZGUgLXIg4oCmIOKAlCBzZWUgZWFjaFxuICAvLyBzZXJ2aWNlJ3MgRG9ja2VyZmlsZSBDTUQgLyBzdGFydCBzY3JpcHQpLCB3aGljaCBydW5zIGJlZm9yZSBhbnlcbiAgLy8gaW5zdHJ1bWVudGVkIG1vZHVsZSBsb2Fkcy4gYGN1cnJlbnRUcmFjZUlkKClgIHRoZW4gcmVhZHMgdGhlIGFjdGl2ZSBzcGFuLlxuXG4gIGNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuICBhcHBseVNlY3VyaXR5SGVhZGVycyhhcHAsIG9wdGlvbnMsIGVuYWJsZU9wZW5BcGkpO1xuICBhcHBseUJvZHlQYXJzaW5nKGFwcCwgb3B0aW9ucyk7XG5cbiAgLy8gVHJ1c3QgcHJveHkgKG11c3QgYmUgc2V0IGJlZm9yZSByYXRlIGxpbWl0ZXIgc28gcmVxLmlwIHJlc29sdmVzIGNvcnJlY3RseSlcbiAgYXBwLnNldCgndHJ1c3QgcHJveHknLCBDb25maWcuZ2V0KCdzZXJ2ZXInKS50cnVzdFByb3h5KTtcblxuICAvLyBSZXF1ZXN0IElEICsgYXVkaXQgY29udGV4dC4gUHJlZmVyIHRoZSBpbmJvdW5kIGBYLVJlcXVlc3QtSWRgIChuZ2lueCwgb3IgYVxuICAvLyBwZWVyIHNlcnZpY2UgLyBDTEkgZm9yd2FyZGluZyBpdHMgb3duKSB3aGVuIGl0IGlzIGEgYm91bmRlZCBvcGFxdWUgdG9rZW4g4oCUXG4gIC8vIGFuIG92ZXJzaXplZCBvciBqdW5rIHZhbHVlIGlzIHJlcGxhY2VkLCBub3Qgc3RvcmVkIOKAlCBvdGhlcndpc2UgZ2VuZXJhdGUgb25lLlxuICAvLyBUaGUgcmVzdCBvZiB0aGUgcmVxdWVzdCB0aGVuIHJ1bnMgaW5zaWRlIGFuIGF1ZGl0LWNvbnRleHQgc2NvcGUsIHNvIGV2ZXJ5XG4gIC8vIGByZWNvcmRBdWRpdGAgaXQgbWFrZXMgY2FycmllcyB0aGUgcmVxdWVzdCBpZCwgdHJhY2UgaWQsIGNsaWVudCBpcCAvIFVBLCB0aGVcbiAgLy8gdmVyaWZpZWQgY3JlZGVudGlhbCAocmVhZCBsYXppbHksIGFmdGVyIGByZXF1aXJlQXV0aGApIGFuZCBhbnkgaW5ib3VuZFxuICAvLyBgWC1QaXBlbGluZS1FeGVjdXRpb24tSWRgIC8gYFgtQ29kZUJ1aWxkLUJ1aWxkLUlkYCAvIGBYLVNvdXJjZS1FdmVudC1JZGBcbiAgLy8gd2l0aCBubyBjYWxsLXNpdGUgY2hhbmdlLiBNb3VudGVkIGFmdGVyIGB0cnVzdCBwcm94eWAgc28gYHJlcS5pcGAgaXMgcmVhbC5cbiAgYXBwLnVzZSgocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pID0+IHtcbiAgICBjb25zdCBoZHIgPSByZXEuaGVhZGVyc1sneC1yZXF1ZXN0LWlkJ107XG4gICAgY29uc3QgcmVxdWVzdElkID0gc2FuaXRpemVDb3JyZWxhdGlvbklkKEFycmF5LmlzQXJyYXkoaGRyKSA/IGhkclswXSA6IGhkcikgPz8gdXVpZCgpO1xuICAgIHJlcS5yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7XG4gICAgcmVzLnNldEhlYWRlcignWC1SZXF1ZXN0LUlkJywgcmVxdWVzdElkKTtcbiAgICBydW5XaXRoQXVkaXRDb250ZXh0KGF1ZGl0Q29udGV4dEZyb21SZXF1ZXN0KHJlcSwgeyByZXF1ZXN0SWQsIHRyYWNlSWQ6IGN1cnJlbnRUcmFjZUlkKCkgfSksIG5leHQpO1xuICB9KTtcblxuICBtb3VudEluZnJhRW5kcG9pbnRzKGFwcCwgb3B0aW9ucywgc2VydmljZU5hbWUsIGVuYWJsZU9wZW5BcGkpO1xuICBpZiAoZW5hYmxlUmF0ZUxpbWl0KSBtb3VudFJhdGVMaW1pdGVyKGFwcCwgc2VydmljZU5hbWUpO1xuICBhcHBseVJlcXVlc3RUZWxlbWV0cnkoYXBwKTtcblxuICAvLyBOT1RFOiBpZGVtcG90ZW5jeSBpcyBpbnRlbnRpb25hbGx5IE5PVCBtb3VudGVkIGhlcmUuIEl0IG5lZWRzIHRoZSBWRVJJRklFRFxuICAvLyBvcmcgaWQgdG8gbmFtZXNwYWNlIGl0cyByZXBsYXkgY2FjaGUsIGJ1dCB0aGlzIHByZS1hdXRoIHBvc2l0aW9uIHJ1bnMgYmVmb3JlXG4gIC8vIGByZXF1aXJlQXV0aGAvYGF0dGFjaFJlcXVlc3RDb250ZXh0YCBwb3B1bGF0ZSBpZGVudGl0eSwgc28gYSBnbG9iYWwgbW91bnRcbiAgLy8gaGVyZSBpcyBhIHBlcm1hbmVudCBuby1vcCAob3JnIGFsd2F5cyB1bmRlZmluZWQg4oaSIHNraXApLiBJdCBpcyBpbnN0ZWFkIHdpcmVkXG4gIC8vIGludG8gdGhlIHBvc3QtYXV0aCByb3V0ZSBjaGFpbnMg4oCUIHNlZSBgY3JlYXRlUHJvdGVjdGVkUm91dGVgIC9cbiAgLy8gYGNyZWF0ZUF1dGhlbnRpY2F0ZWRXaXRoT3JnUm91dGVgIGluIG1pZGRsZXdhcmUtZmFjdG9yeS50cy5cblxuICBpZiAobG9nU3RyZWFtKSB3aXJlU3NlKGFwcCwgc3NlTWFuYWdlcik7XG5cbiAgcmV0dXJuIHsgYXBwLCBzc2VNYW5hZ2VyIH07XG59XG4iXX0=
@@ -241,4 +241,4 @@ export function deferredCheckQuota(quotaService, quotaType) {
241
241
  next();
242
242
  }, { kind: 'quota', mode: 'check', quotaType });
243
243
  }
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stcXVvdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NoZWNrLXF1b3RhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdqUSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0UsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRTNDLHVCQUF1QjtBQUN2QixFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLGdGQUFnRjtBQUNoRixvQ0FBb0M7QUFDcEMsOEVBQThFO0FBQzlFLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UscUVBQXFFO0FBQ3JFLHlEQUF5RDtBQUN6RCwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBQ2hFLGtGQUFrRjtBQUNsRiw4RUFBOEU7QUFDOUUsdUVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsMkJBQTJCO0FBRTNCLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFN0YsNEZBQTRGO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FB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O0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgYXJtRGVmZXJyZWRRdW90YUNoZWNrLCBjYWxsUXVvdGFFeGVtcHRpb24sIGNyZWF0ZUxvZ2dlciwgZW1pdENvdW50ZXIsIGVuZm9yY2VkUXVvdGFMaW1pdCwgZW52SW50LCBnZXRRdW90YVNlcnZpY2VBdXRoSGVhZGVyLCBpc1F1b3RhRXhlbXB0Um91dGUsIG1ldGVyZWRRdW90YVR5cGVGb3IsIHNlbmRRdW90YUV4Y2VlZGVkLCBlcnJvck1lc3NhZ2UsIHRhZ1JvdXRlR2F0ZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUXVvdGFDaGVja1Jlc3VsdCwgUXVvdGFUeXBlLCBRdW90YVNlcnZpY2UgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlcXVlc3RIYW5kbGVyLCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBnZXRDb250ZXh0IH0gZnJvbSAnLi9nZXQtY29udGV4dC5qcyc7XG5pbXBvcnQgeyBoYXNDb21wbGV0ZWRJZGVtcG90ZW50UmVzcG9uc2UgfSBmcm9tICcuL2lkZW1wb3RlbmN5LW1pZGRsZXdhcmUuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2NoZWNrLXF1b3RhJyk7XG5cbi8vIFBFUi1QT0QgQ0hFQ0sgQ0FDSEUuXG4vL1xuLy8gVGhlIGdhdGUgdXNlZCB0byBhc2sgdGhlIHF1b3RhIHNlcnZpY2Ugb24gRVZFUlkgbWV0ZXJlZCByZXF1ZXN0IOKAlCBhIEdFVCwgYVxuLy8gSldUIHZlcmlmeSBhbmQgYSBoaWVyYXJjaHkgcmVzb2x2ZSBvdmVyIHRoZXJlLCBwZXIgcmVxdWVzdCBoZXJlLiBBIHJlYWRpbmcgaXNcbi8vIG5vdyByZXVzZWQgcGVyIChvcmcsIHF1b3RhIHR5cGUpOlxuLy8gIC0gYW4gQUxMT1dFRCByZWFkaW5nIGZvciBgUVVPVEFfQ0hFQ0tfQ0FDSEVfVFRMX01TYCAoZGVmYXVsdCA1MDAwOyAwIHR1cm5zXG4vLyAgICB0aGUgY2FjaGUgb2ZmKSwgYW5kIG9ubHkgd2hpbGUgdGhpcyBwb2QgaGFzIHBhc3NlZCBmZXdlciByZXF1ZXN0cyBvbiBpdFxuLy8gICAgdGhhbiB0aGUgcmVhZGluZyBoYWQgaGVhZHJvb20gZm9yIChgZW5mb3JjZWRRdW90YUxpbWl0IOKIkiB1c2VkYCksIHNvIG9uZVxuLy8gICAgcG9kIGNhbm5vdCBydW4gZmFyIHBhc3QgYSBuZWFybHktZnVsbCBjb3VudGVyIG9uIGEgc3RhbGUgXCJ5ZXNcIjtcbi8vICAtIGEgREVOSUVEIHJlYWRpbmcgdW50aWwgdGhlIHBlcmlvZCByZXNldHMsIGNhcHBlZCBhdFxuLy8gICAgYFFVT1RBX0NIRUNLX0RFTklFRF9DQUNIRV9NU2AgKGRlZmF1bHQgNjAwMDApIHNvIGFuIHVwZ3JhZGUsIGEgYnVuZGxlXG4vLyAgICBwdXJjaGFzZSBvciBhbiBvcGVyYXRvciByZXNldCBpcyBob25vdXJlZCB3aXRoaW4gYSBtaW51dGU7XG4vLyAgLSBhIGZhaWwtb3BlbiBzZW50aW5lbCBpcyBORVZFUiBjYWNoZWQg4oCUIHJlY292ZXJ5IGlzIHNlZW4gb24gdGhlIG5leHQgcmVxdWVzdC5cbi8vIFN0YWxlbmVzcyBpcyBib3VuZGVkIGFuZCBhY2NlcHRlZDogdGhlIGNvdW50ZXIgaXRzZWxmIG5ldmVyIGV4Y2VlZHMgdGhlIGNhcFxuLy8gKHRoZSBtZXRlcmVkIGluY3JlbWVudCBhZG1pdHMgb25seSB3aGF0IGZpdHMgYW5kIHJlY29yZHMgdGhlIHJlc3QgYXNcbi8vIG92ZXJzaG9vdCksIHNvIGEgc3RhbGUgXCJ5ZXNcIiBjb3N0cyBhdCBtb3N0IGEgZmV3IHVuYmlsbGVkLW92ZXItY2FwIHJlcXVlc3RzXG4vLyBwZXIgcG9kIHBlciBUVEwsIG5ldmVyIGFuIHVuYm91bmRlZCBydW4uIENvbmN1cnJlbnQgbWlzc2VzIGZvciBvbmUga2V5IHNoYXJlXG4vLyBhIHNpbmdsZSBpbi1mbGlnaHQgcmVhZC5cblxuLyoqIFRUTCAobXMpIG9mIGEgY2FjaGVkIEFMTE9XRUQgY2hlY2suIGAwYCBkaXNhYmxlcyB0aGUgY2FjaGUuICovXG5leHBvcnQgY29uc3QgUVVPVEFfQ0hFQ0tfQ0FDSEVfVFRMX01TID0gZW52SW50KCdRVU9UQV9DSEVDS19DQUNIRV9UVExfTVMnLCA1MDAwLCB7IG1pbjogMCB9KTtcblxuLyoqIExvbmdlc3QgKG1zKSBhIERFTklFRCBjaGVjayBpcyByZXVzZWQgYmVmb3JlIHJlLWFza2luZyAoaXQgbmV2ZXIgb3V0bGl2ZXMgYHJlc2V0QXRgKS4gKi9cbmV4cG9ydCBjb25zdCBRVU9UQV9DSEVDS19ERU5JRURfQ0FDSEVfTVMgPSBlbnZJbnQoJ1FVT1RBX0NIRUNLX0RFTklFRF9DQUNIRV9NUycsIDYwMDAwLCB7IG1pbjogMCB9KTtcblxuLyoqIEJvdW5kIG9uIGNhY2hlZCAob3JnLCB0eXBlKSByZWFkaW5ncyBwZXIgcG9kLiAqL1xuY29uc3QgQ0hFQ0tfQ0FDSEVfTUFYX0VOVFJJRVMgPSAxMF8wMDA7XG5cbmludGVyZmFjZSBDYWNoZWRDaGVjayB7XG4gIHN0YXR1czogUXVvdGFDaGVja1Jlc3VsdDtcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0cyB0aGlzIHBvZCBsZXQgdGhyb3VnaCBvbiB0aGlzIHJlYWRpbmcuICovXG4gIHBhc3NlczogbnVtYmVyO1xufVxuXG5jb25zdCBjaGVja0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlZENoZWNrPigpO1xuY29uc3QgaW5GbGlnaHRDaGVja3MgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxRdW90YUNoZWNrUmVzdWx0Pj4oKTtcblxuLyoqIERyb3AgZXZlcnkgY2FjaGVkIGNoZWNrICh0ZXN0czsgYWxzbyBhIHNhZmUgb3BlcmF0aW9uYWwgcmVzZXQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyUXVvdGFDaGVja0NhY2hlKCk6IHZvaWQge1xuICBjaGVja0NhY2hlLmNsZWFyKCk7XG4gIGluRmxpZ2h0Q2hlY2tzLmNsZWFyKCk7XG59XG5cbi8qKiBBIHVzYWJsZSBjYWNoZWQgcmVhZGluZyBmb3IgYGtleWAsIGNvdW50aW5nIHRoaXMgcmVxdWVzdCBhZ2FpbnN0IGl0cyBoZWFkcm9vbS4gKi9cbmZ1bmN0aW9uIGNhY2hlZENoZWNrKGtleTogc3RyaW5nLCBxdW90YVR5cGU6IFF1b3RhVHlwZSk6IFF1b3RhQ2hlY2tSZXN1bHQgfCBudWxsIHtcbiAgY29uc3QgaGl0ID0gY2hlY2tDYWNoZS5nZXQoa2V5KTtcbiAgaWYgKCFoaXQpIHJldHVybiBudWxsO1xuICBpZiAoaGl0LmV4cGlyZXNBdCA8PSBEYXRlLm5vdygpKSB7XG4gICAgY2hlY2tDYWNoZS5kZWxldGUoa2V5KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWhpdC5zdGF0dXMuYWxsb3dlZCkgcmV0dXJuIGhpdC5zdGF0dXM7XG4gIGlmIChoaXQuc3RhdHVzLmxpbWl0ICE9PSAtMSkge1xuICAgIGNvbnN0IGhlYWRyb29tID0gZW5mb3JjZWRRdW90YUxpbWl0KHF1b3RhVHlwZSwgaGl0LnN0YXR1cy5saW1pdCkgLSBoaXQuc3RhdHVzLnVzZWQ7XG4gICAgaWYgKGhpdC5wYXNzZXMgPj0gaGVhZHJvb20pIHtcbiAgICAgIGNoZWNrQ2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgaGl0LnBhc3NlcyArPSAxO1xuICByZXR1cm4gaGl0LnN0YXR1cztcbn1cblxuZnVuY3Rpb24gcmVtZW1iZXJDaGVjayhrZXk6IHN0cmluZywgc3RhdHVzOiBRdW90YUNoZWNrUmVzdWx0KTogdm9pZCB7XG4gIGlmICghc3RhdHVzIHx8IHN0YXR1cy5mYWlsT3BlbikgcmV0dXJuO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBsZXQgZXhwaXJlc0F0OiBudW1iZXI7XG4gIGlmIChzdGF0dXMuYWxsb3dlZCkge1xuICAgIGlmIChRVU9UQV9DSEVDS19DQUNIRV9UVExfTVMgPT09IDApIHJldHVybjtcbiAgICBleHBpcmVzQXQgPSBub3cgKyBRVU9UQV9DSEVDS19DQUNIRV9UVExfTVM7XG4gIH0gZWxzZSB7XG4gICAgaWYgKFFVT1RBX0NIRUNLX0RFTklFRF9DQUNIRV9NUyA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlc2V0QXQgPSBEYXRlLnBhcnNlKHN0YXR1cy5yZXNldEF0KTtcbiAgICBleHBpcmVzQXQgPSBNYXRoLm1pbihub3cgKyBRVU9UQV9DSEVDS19ERU5JRURfQ0FDSEVfTVMsIE51bWJlci5pc0Zpbml0ZShyZXNldEF0KSA/IHJlc2V0QXQgOiBub3cpO1xuICAgIGlmIChleHBpcmVzQXQgPD0gbm93KSByZXR1cm47XG4gIH1cbiAgaWYgKGNoZWNrQ2FjaGUuc2l6ZSA+PSBDSEVDS19DQUNIRV9NQVhfRU5UUklFUykge1xuICAgIC8vIE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLCBzbyB0aGUgZmlyc3Qga2V5IGlzIHRoZSBvbGRlc3QgcmVhZGluZy5cbiAgICBjb25zdCBvbGRlc3QgPSBjaGVja0NhY2hlLmtleXMoKS5uZXh0KCk7XG4gICAgaWYgKCFvbGRlc3QuZG9uZSkgY2hlY2tDYWNoZS5kZWxldGUob2xkZXN0LnZhbHVlKTtcbiAgfVxuICAvLyBUaGUgcmVxdWVzdCB0aGF0IGZldGNoZWQgdGhlIHJlYWRpbmcgaXMgaXRzIGZpcnN0IHBhc3MuXG4gIGNoZWNrQ2FjaGUuc2V0KGtleSwgeyBzdGF0dXMsIGV4cGlyZXNBdCwgcGFzc2VzOiBzdGF0dXMuYWxsb3dlZCA/IDEgOiAwIH0pO1xufVxuXG4vKipcbiAqIE9uZSBxdW90YSByZWFkIGZvciAob3JnLCB0eXBlKSwgc2hhcmVkIGJ5IGV2ZXJ5IGNvbmN1cnJlbnQgbWlzcyBvbiB0aGlzIHBvZC5cbiAqIEEgcmVxdWVzdCB0aGF0IHdhaXRlZCBvbiBzb21lb25lIGVsc2UncyByZWFkIHRoZW4gZ29lcyBiYWNrIHRocm91Z2ggdGhlXG4gKiBjYWNoZSwgc28gaXQgaXMgY291bnRlZCBhZ2FpbnN0IHRoZSByZWFkaW5nJ3MgaGVhZHJvb20gbGlrZSBhbnkgb3RoZXIgcGFzc1xuICogKGBqb2luZWRgIHN0b3BzIGl0IGZyb20gd2FpdGluZyBhIHNlY29uZCB0aW1lKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVhZENoZWNrKHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlLCBvcmdJZDogc3RyaW5nLCBxdW90YVR5cGU6IFF1b3RhVHlwZSwgam9pbmVkID0gZmFsc2UpOiBQcm9taXNlPFF1b3RhQ2hlY2tSZXN1bHQ+IHtcbiAgY29uc3Qga2V5ID0gYCR7b3JnSWR9XFx1MDAwMCR7cXVvdGFUeXBlfWA7XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlZENoZWNrKGtleSwgcXVvdGFUeXBlKTtcbiAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgY29uc3QgcGVuZGluZyA9IGluRmxpZ2h0Q2hlY2tzLmdldChrZXkpO1xuICBpZiAocGVuZGluZykge1xuICAgIGlmIChqb2luZWQpIHJldHVybiBwZW5kaW5nO1xuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHBlbmRpbmc7XG4gICAgLy8gQSBmYWlsLW9wZW4gKG9yIHVuY2FjaGVhYmxlKSByZWFkaW5nIGhhcyBub3RoaW5nIHRvIGFjY291bnQgYWdhaW5zdC5cbiAgICByZXR1cm4gY2hlY2tDYWNoZS5oYXMoa2V5KSA/IHJlYWRDaGVjayhxdW90YVNlcnZpY2UsIG9yZ0lkLCBxdW90YVR5cGUsIHRydWUpIDogc3RhdHVzO1xuICB9XG4gIC8vIEF1dGhlbnRpY2F0ZSBhcyBUSElTIHNlcnZpY2UsIG5vdCBieSBmb3J3YXJkaW5nIHRoZSB1c2VyJ3MgdG9rZW46IHRoZSB1c2VyXG4gIC8vIHRva2VuIDQwM3MgYXQgdGhlIHF1b3RhIHJlYWQgcm91dGUgZm9yIGN1c3RvbSByb2xlcyB3aXRob3V0IGBxdW90YXM6cmVhZGAsXG4gIC8vIGFuZCAoYmVpbmcgbm9uLXNlcnZpY2UpIGNvdW50cyBhZ2FpbnN0IHRoZSBxdW90YSBzZXJ2aWNlJ3MgcGVyLUlQIGxpbWl0ZXJcbiAgLy8ga2V5ZWQgb24gVEhJUyBwb2QncyBJUCDigJQgYm90aCBvZiB3aGljaCBzaWxlbnRseSBmYWlsIHRoZSBnYXRlIG9wZW4gdW5kZXIgbG9hZC5cbiAgY29uc3QgcmVhZCA9IHF1b3RhU2VydmljZS5jaGVjayhvcmdJZCwgcXVvdGFUeXBlLCBnZXRRdW90YVNlcnZpY2VBdXRoSGVhZGVyKG9yZ0lkKSlcbiAgICAudGhlbigoc3RhdHVzKSA9PiB7XG4gICAgICByZW1lbWJlckNoZWNrKGtleSwgc3RhdHVzKTtcbiAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiBpbkZsaWdodENoZWNrcy5kZWxldGUoa2V5KSk7XG4gIGluRmxpZ2h0Q2hlY2tzLnNldChrZXksIHJlYWQpO1xuICByZXR1cm4gcmVhZDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgbWlkZGxld2FyZSB0aGF0IGNoZWNrcyBhIHNwZWNpZmljIHF1b3RhIHR5cGUgYmVmb3JlIHByb2NlZWRpbmcuXG4gKlxuICogT24gcXVvdGEgZXhjZWVkZWQsIHJldHVybnMgYSA0MjkgcmVzcG9uc2Ugd2l0aCBxdW90YSBkZXRhaWxzIChxdW90YVR5cGUsXG4gKiBsaW1pdCwgdXNlZCwgcmVzZXRBdCwgdXBncmFkZVVybCDigJQgc2VlIGFwaS1jb3JlIGBzZW5kUXVvdGFFeGNlZWRlZGApLlxuICogT24gcXVvdGEgc2VydmljZSBmYWlsdXJlLCBmYWlscyBvcGVuIChhbGxvd3MgdGhlIHJlcXVlc3QpLlxuICpcbiAqIGBhcGlDYWxsc2AgaXMgc3BsaXQgcGVyIHJlcXVlc3QgYnkgcHJpbmNpcGFsOiBhbiBvcmcgc2VydmljZSBhY2NvdW50IG9yIGFcbiAqIHBlcnNvbmFsIGFjY2VzcyBrZXkgaXMgY2hlY2tlZCBhZ2FpbnN0IGBhdXRvbWF0aW9uQ2FsbHNgIGluc3RlYWRcbiAqICh7QGxpbmsgbWV0ZXJlZFF1b3RhVHlwZUZvcn0pLCB0aGVcbiAqIHNhbWUgdHlwZSBgbWV0ZXJRdW90YU9uU3VjY2Vzc2AgaW5jcmVtZW50cyDigJQgc28gbW91bnQgYm90aCB3aXRoIGAnYXBpQ2FsbHMnYC5cbiAqXG4gKiBTa2lwcGVkIChwYXNzZXMgdGhyb3VnaCkgZXhhY3RseSB3aGVyZSB0aGUgbWV0ZXIgc2tpcHMsIHNvIHRoZSBnYXRlIG5ldmVyXG4gKiByZWZ1c2VzIGEgY2FsbCB0aGUgbWV0ZXIgd291bGQgbm90IGJpbGwgKGBjYWxsUXVvdGFFeGVtcHRpb25gKTpcbiAqIC0gYSBTRVJWSUNFIFBSSU5DSVBBTCAocGVlci1zZXJ2aWNlIHRyYWZmaWMgaXMgbmV2ZXIgbWV0ZXJlZCwgc28gYSB0ZW5hbnQgYXRcbiAqICAgaXRzIGxpbWl0IG11c3Qgbm90IGJyZWFrIHRoZSBpbnRlcm5hbCBjYWxscyBpdHMgb3duIGVhcmxpZXIgYWN0aW9ucyBjYXVzZWQpO1xuICogLSBmb3IgYGFwaUNhbGxzYDogYW4gSU1QRVJTT05BVElPTiBzZXNzaW9uICh2ZW5kb3Igc3RhZmYgZGlhZ25vc2luZyBhblxuICogICBleGhhdXN0ZWQgb3JnIG11c3Qgbm90IGJlIGxvY2tlZCBvdXQgYnkgaXQpIGFuZCBhbiBPTi1CRUhBTEYgaG9wIChhIHVzZXJcbiAqICAgdG9rZW4gZm9yd2FyZGVkIGJ5IGFzay9waXBlbGluZSB3aXRoIGEgc2lnbmVkIG1hcmtlciDigJQgdGhlIG9yaWdpbmF0aW5nXG4gKiAgIHJlcXVlc3Qgd2FzIGFscmVhZHkgZ2F0ZWQgYW5kIG1ldGVyZWQpO1xuICogLSBhbiBgYXBpQ2FsbHNgIHJlcXVlc3Qgb24gdGhlIGZsZWV0LXdpZGUgYFFVT1RBX0VYRU1QVF9ST1VURVNgIChjb25zb2xlXG4gKiAgIHBvbGxpbmcg4oCUIGFuIGV4aGF1c3RlZCBvcmcgbXVzdCBzdGlsbCByZW5kZXIgdGhlIGJhbm5lciBzYXlpbmcgc28pO1xuICogLSBhbiBpZGVtcG90ZW50IFJFVFJZIHdob3NlIG9yaWdpbmFsIGFscmVhZHkgY29tcGxldGVkICh0aGUgcmVwbGF5IGlzIHNlcnZlZFxuICogICBmcm9tIHRoZSBpZGVtcG90ZW5jeSBjYWNoZSwgZG9lcyBubyB3b3JrIGFuZCBpcyBuZXZlciBtZXRlcmVkOyByZWZ1c2luZyBpdFxuICogICB3b3VsZCA0MjkgYSBjbGllbnQgZm9yIGFza2luZyB3aGF0IGl0cyBvd24gZWFybGllciByZXF1ZXN0IHJldHVybmVkKS5cbiAqXG4gKiBSZWFkaW5ncyBhcmUgY2FjaGVkIHBlciBwb2QgKHNlZSB0aGUgY2FjaGUgbm90ZXMgYWJvdmUpLCBhbmQgdGhlIHJlYWQgaXRzZWxmXG4gKiBoYXMgYSBzaG9ydCBidWRnZXQgKGFwaS1jb3JlIGBRVU9UQV9DSEVDS19USU1FT1VUX01TYCwgbm8gcmV0cnkpIOKAlCBhIHNsb3dcbiAqIHF1b3RhIHNlcnZpY2UgZmFpbHMgb3BlbiBxdWlja2x5IGluc3RlYWQgb2Ygc3RhbGxpbmcgZXZlcnkgcmVxdWVzdC5cbiAqXG4gKiBNb3VudGFibGUgYXQgdGhlIGFwcC1yb3V0ZXMgbGV2ZWwgKGBhcHAudXNlKHByZWZpeCwg4oCmYXV0aCwgY2hlY2tRdW90YSguLi4pKWApOlxuICogdGhlIG9yZyBjb21lcyBmcm9tIHRoZSByZXF1ZXN0IGNvbnRleHQgd2hlbiBvbmUgaXMgYXR0YWNoZWQsIGVsc2UgZnJvbSB0aGVcbiAqIHZlcmlmaWVkIGByZXEudXNlci5vcmdhbml6YXRpb25JZGAg4oCUIHRoZSBzYW1lIGZhbGxiYWNrIHRoZSBtZXRlciB1c2VzLlxuICpcbiAqIEBwYXJhbSBxdW90YVNlcnZpY2UgLSBRdW90YSBzZXJ2aWNlIGNsaWVudFxuICogQHBhcmFtIHF1b3RhVHlwZSAtIFdoaWNoIHF1b3RhIHRvIGNoZWNrIChlLmcuICdhcGlDYWxscycsICdwaXBlbGluZXMnLCAncGx1Z2lucycpXG4gKiBAcmV0dXJucyBFeHByZXNzIG1pZGRsZXdhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUXVvdGEoXG4gIHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlLFxuICBiYXNlUXVvdGFUeXBlOiBRdW90YVR5cGUsXG4pIHtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZShhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAvLyBUaGUgY2hlY2sgaXMgc2VudCB3aXRoIFRISVMgc2VydmljZSdzIGNyZWRlbnRpYWxzLCBzbyBpdCBtdXN0IG9ubHkgcnVuIGZvclxuICAgIC8vIGEgVkVSSUZJRUQgY2FsbGVyIOKAlCBvdGhlcndpc2UgdGhlIG9yZyB3b3VsZCBjb21lIGZyb20gdGhlIHNwb29mYWJsZVxuICAgIC8vIGhlYWRlci1kZXJpdmVkIGlkZW50aXR5LiBNb3VudGVkIGFmdGVyIHJlcXVpcmVBdXRoIGV2ZXJ5d2hlcmU7IGFuXG4gICAgLy8gdW5hdXRoZW50aWNhdGVkIHJlcXVlc3QgaGVyZSBpcyBhIHdpcmluZyBidWcsIHNvIHNraXAgKGZhaWwgb3BlbikgbG91ZGx5LlxuICAgIGlmICghcmVxLnVzZXIpIHtcbiAgICAgIGxvZ2dlci53YXJuKCdRdW90YSBjaGVjayBza2lwcGVkOiByZXF1ZXN0IGlzIG5vdCBhdXRoZW50aWNhdGVkJyk7XG4gICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4ZW1wdGlvbiA9IGNhbGxRdW90YUV4ZW1wdGlvbihyZXEpO1xuICAgIGlmIChleGVtcHRpb24gPT09ICdzZXJ2aWNlJyB8fCAoZXhlbXB0aW9uICYmIGJhc2VRdW90YVR5cGUgPT09ICdhcGlDYWxscycpKSByZXR1cm4gbmV4dCgpO1xuICAgIGlmIChiYXNlUXVvdGFUeXBlID09PSAnYXBpQ2FsbHMnICYmIGlzUXVvdGFFeGVtcHRSb3V0ZShyZXEubWV0aG9kLCByZXF1ZXN0UGF0aChyZXEpKSkgcmV0dXJuIG5leHQoKTtcblxuICAgIGNvbnN0IHF1b3RhVHlwZSA9IG1ldGVyZWRRdW90YVR5cGVGb3IocmVxLCBiYXNlUXVvdGFUeXBlKTtcbiAgICBsZXQgb3JnSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBvcmdJZCA9IGdldENvbnRleHQocmVxKS5pZGVudGl0eS5vcmdJZDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE5vIHJlcXVlc3QgY29udGV4dCAocGxhdGZvcm0gYXR0YWNoZXMgbm9uZSk6IHRoZSB2ZXJpZmllZCBhdXRoIG9yZyDigJQgdGhlXG4gICAgICAvLyBzYW1lIGZhbGxiYWNrIGBtZXRlclF1b3RhT25TdWNjZXNzYCB1c2VzLCBzbyBib3RoIHJlYWQgb25lIGNvdW50ZXIuXG4gICAgICBvcmdJZCA9IHJlcS51c2VyLm9yZ2FuaXphdGlvbklkO1xuICAgIH1cblxuICAgIC8vIE5vIG9yZywgbm90aGluZyB0byBiaWxsICh0aGUgbWV0ZXIgc2tpcHMgaXQgdG9vKS4gTm90IGEgNDAwOiBydW4gZGVmZXJyZWRcbiAgICAvLyBmcm9tIGByZXF1aXJlQXV0aGAgdGhpcyBwcmVjZWRlcyB0aGUgcm91dGUncyBvd24gYHJlcXVpcmVPcmdJZGAsIGFuZCBhXG4gICAgLy8gcm91dGUgdGhhdCBuZWVkcyBubyBvcmcgKGEgcGVyc29uIGJldHdlZW4gb3JncyBzd2l0Y2hpbmcgaW50byBvbmUpIG11c3RcbiAgICAvLyBub3QgYmUgcmVmdXNlZCBieSBhIHF1b3RhIGdhdGUuXG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuIG5leHQoKTtcblxuICAgIC8vIEEgcmV0cnkgb2YgYSBjb21wbGV0ZWQgaWRlbXBvdGVudCBtdXRhdGlvbiBpcyBhbnN3ZXJlZCBmcm9tIHRoZSByZXBsYXlcbiAgICAvLyBjYWNoZSB3aXRob3V0IHJ1bm5pbmcgdGhlIGhhbmRsZXIg4oCUIG5vdGhpbmcgdG8gZ2F0ZSAob25lIHN0b3JlIHJlYWQsIG9ubHlcbiAgICAvLyBmb3IgcmVxdWVzdHMgdGhhdCBjYXJyeSBhbiBJZGVtcG90ZW5jeS1LZXkpLlxuICAgIGlmIChhd2FpdCBoYXNDb21wbGV0ZWRJZGVtcG90ZW50UmVzcG9uc2UocmVxKSkgcmV0dXJuIG5leHQoKTtcblxuICAgIGxldCBxdW90YVN0YXR1czogUXVvdGFDaGVja1Jlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcXVvdGFTdGF0dXMgPSBhd2FpdCByZWFkQ2hlY2socXVvdGFTZXJ2aWNlLCBvcmdJZCwgcXVvdGFUeXBlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRmFpbCBvcGVuIOKAlCBhbGxvdyB0aGUgcmVxdWVzdCBpZiBxdW90YSBzZXJ2aWNlIGlzIHVuYXZhaWxhYmxlXG4gICAgICBsb2dnZXIud2FybignUVVPVEFfRkFJTF9PUEVOOiBRdW90YSBjaGVjayBleGNlcHRpb24sIGFsbG93aW5nIHJlcXVlc3QnLCB7XG4gICAgICAgIG9yZ0lkLFxuICAgICAgICBxdW90YVR5cGUsXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyb3IpLFxuICAgICAgfSk7XG4gICAgICAvLyBTYW1lIGNvdW50ZXIgdGhlIGFwaS1jb3JlIHF1b3RhIGNsaWVudCBlbWl0cywgc28gYSBxdW90YS1zZXJ2aWNlIG91dGFnZVxuICAgICAgLy8gaXMgQUxFUlRBQkxFIGZyb20gb25lIHNlcmllcyByZWdhcmRsZXNzIG9mIHdoaWNoIGxheWVyIGZlbGwgb3Blbi4gT25seVxuICAgICAgLy8gYSBsb2cgbGluZSBoZXJlIG1lYW50IGV2ZXJ5IG9yZyB3YXMgc2lsZW50bHkgdW4tYmlsbGVkIGZvciB0aGUgZHVyYXRpb24uXG4gICAgICBlbWl0Q291bnRlcigncXVvdGFfZmFpbF9vcGVuX3RvdGFsJywgeyBvcGVyYXRpb246ICdjaGVjaycsIHJlYXNvbjogJ2V4Y2VwdGlvbicsIHF1b3RhVHlwZSB9KTtcbiAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKCFxdW90YVN0YXR1cy5hbGxvd2VkKSB7XG4gICAgICBsb2dnZXIud2FybihgJHtxdW90YVR5cGV9IHF1b3RhIGV4Y2VlZGVkYCwge1xuICAgICAgICBvcmdJZCxcbiAgICAgICAgbGltaXQ6IHF1b3RhU3RhdHVzLmxpbWl0LFxuICAgICAgICB1c2VkOiBxdW90YVN0YXR1cy51c2VkLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJvdXRlIHRocm91Z2ggdGhlIHNoYXJlZCBoZWxwZXIgc28gdGhlIGNoZWNrLWdhdGUgNDI5IGVtaXRzIHRoZSBzYW1lXG4gICAgICAvLyBSZXRyeS1BZnRlciArIFgtUXVvdGEtKiBoZWFkZXJzIGFuZCB0aGUgc2FtZSBib2R5ICh3aGljaCBxdW90YSwgdGhlXG4gICAgICAvLyByZXNldCBkYXRlLCB0aGUgdXBncmFkZSBwYWdlKSBhcyB0aGUgcmVzZXJ2ZS1wYXRoIDQyOS5cbiAgICAgIHNlbmRRdW90YUV4Y2VlZGVkKFxuICAgICAgICByZXMsXG4gICAgICAgIHF1b3RhVHlwZSxcbiAgICAgICAgeyB0eXBlOiBxdW90YVR5cGUsIGxpbWl0OiBxdW90YVN0YXR1cy5saW1pdCwgdXNlZDogcXVvdGFTdGF0dXMudXNlZCwgcmVtYWluaW5nOiBxdW90YVN0YXR1cy5yZW1haW5pbmcgfSxcbiAgICAgICAgcXVvdGFTdGF0dXMucmVzZXRBdCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gT3V0c2lkZSB0aGUgdHJ5OiBhIHN5bmNocm9ub3VzIHRocm93IGRvd25zdHJlYW0gbXVzdCByZWFjaCBFeHByZXNzJ3MgZXJyb3JcbiAgICAvLyBoYW5kbGluZywgbm90IGJlIG1pc3Rha2VuIGZvciBhIHF1b3RhLXNlcnZpY2UgZmFpbHVyZSBhbmQgcnVuIG5leHQoKSB0d2ljZS5cbiAgICBuZXh0KCk7XG4gIH0sIHsga2luZDogJ3F1b3RhJywgbW9kZTogJ2NoZWNrJywgcXVvdGFUeXBlOiBiYXNlUXVvdGFUeXBlIH0pO1xufVxuXG4vKiogVGhlIHNlcnZpY2UtbG9jYWwgcmVxdWVzdCBwYXRoLCB3aXRob3V0IHRoZSBxdWVyeSBzdHJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFBhdGgocmVxOiBSZXF1ZXN0KTogc3RyaW5nIHtcbiAgcmV0dXJuIChyZXEub3JpZ2luYWxVcmwgPz8gcmVxLnVybCA/PyAnJykuc3BsaXQoJz8nKVswXSA/PyAnJztcbn1cblxuLyoqXG4gKiBUaGUgREVGRVJSRUQgZm9ybSBvZiB7QGxpbmsgY2hlY2tRdW90YX06IGFybXMgdGhlIGNoZWNrIGF0IG1vdW50IHRpbWUgYW5kIGxldHNcbiAqIGByZXF1aXJlQXV0aGAgcnVuIGl0IG9uY2UgdGhlIGNhbGxlciBpcyB2ZXJpZmllZCAoYXBpLWNvcmVcbiAqIGBhcm1EZWZlcnJlZFF1b3RhQ2hlY2tgKS4gRm9yIGEgcHJlZml4IG1vdW50IGFoZWFkIG9mIHJvdXRlcnMgdGhhdFxuICogYXV0aGVudGljYXRlIHBlciByb3V0ZSDigJQgdXNlIHtAbGluayBhcGlDYWxsc1F1b3RhfSwgd2hpY2ggcGFpcnMgaXQgd2l0aCB0aGVcbiAqIG1ldGVyLiBUYWdnZWQgYXMgdGhlIGNoZWNrIGdhdGUsIHNvIHRoZSByb3V0ZSB0YWJsZSByZWNvcmRzIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmZXJyZWRDaGVja1F1b3RhKHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlLCBxdW90YVR5cGU6IFF1b3RhVHlwZSk6IFJlcXVlc3RIYW5kbGVyIHtcbiAgY29uc3QgY2hlY2sgPSBjaGVja1F1b3RhKHF1b3RhU2VydmljZSwgcXVvdGFUeXBlKSBhcyBSZXF1ZXN0SGFuZGxlcjtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZSgoX3JlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgYXJtRGVmZXJyZWRRdW90YUNoZWNrKHJlcywgY2hlY2spO1xuICAgIG5leHQoKTtcbiAgfSwgeyBraW5kOiAncXVvdGEnLCBtb2RlOiAnY2hlY2snLCBxdW90YVR5cGUgfSk7XG59XG4iXX0=
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stcXVvdGEuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY2hlY2stcXVvdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2pRLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFM0MsdUJBQXVCO0FBQ3ZCLEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsZ0ZBQWdGO0FBQ2hGLG9DQUFvQztBQUNwQyw4RUFBOEU7QUFDOUUsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSxxRUFBcUU7QUFDckUseURBQXlEO0FBQ3pELDJFQUEyRTtBQUMzRSxnRUFBZ0U7QUFDaEUsa0ZBQWtGO0FBQ2xGLDhFQUE4RTtBQUM5RSx1RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSwyQkFBMkI7QUFFM0Isa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUU3Riw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRXBHLG9EQUFvRDtB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dXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBhcm1EZWZlcnJlZFF1b3RhQ2hlY2ssIGNhbGxRdW90YUV4ZW1wdGlvbiwgY3JlYXRlTG9nZ2VyLCBlbWl0Q291bnRlciwgZW5mb3JjZWRRdW90YUxpbWl0LCBlbnZJbnQsIGdldFF1b3RhU2VydmljZUF1dGhIZWFkZXIsIGlzUXVvdGFFeGVtcHRSb3V0ZSwgbWV0ZXJlZFF1b3RhVHlwZUZvciwgc2VuZFF1b3RhRXhjZWVkZWQsIGVycm9yTWVzc2FnZSwgdGFnUm91dGVHYXRlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBRdW90YUNoZWNrUmVzdWx0LCBRdW90YVR5cGUsIFF1b3RhU2VydmljZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVxdWVzdEhhbmRsZXIsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGdldENvbnRleHQgfSBmcm9tICcuL2dldC1jb250ZXh0LmpzJztcbmltcG9ydCB7IGhhc0NvbXBsZXRlZElkZW1wb3RlbnRSZXNwb25zZSB9IGZyb20gJy4vaWRlbXBvdGVuY3ktbWlkZGxld2FyZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignY2hlY2stcXVvdGEnKTtcblxuLy8gUEVSLVBPRCBDSEVDSyBDQUNIRS5cbi8vXG4vLyBUaGUgZ2F0ZSB1c2VkIHRvIGFzayB0aGUgcXVvdGEgc2VydmljZSBvbiBFVkVSWSBtZXRlcmVkIHJlcXVlc3Qg4oCUIGEgR0VULCBhXG4vLyBKV1QgdmVyaWZ5IGFuZCBhIGhpZXJhcmNoeSByZXNvbHZlIG92ZXIgdGhlcmUsIHBlciByZXF1ZXN0IGhlcmUuIEEgcmVhZGluZyBpc1xuLy8gbm93IHJldXNlZCBwZXIgKG9yZywgcXVvdGEgdHlwZSk6XG4vLyAgLSBhbiBBTExPV0VEIHJlYWRpbmcgZm9yIGBRVU9UQV9DSEVDS19DQUNIRV9UVExfTVNgIChkZWZhdWx0IDUwMDA7IDAgdHVybnNcbi8vICAgIHRoZSBjYWNoZSBvZmYpLCBhbmQgb25seSB3aGlsZSB0aGlzIHBvZCBoYXMgcGFzc2VkIGZld2VyIHJlcXVlc3RzIG9uIGl0XG4vLyAgICB0aGFuIHRoZSByZWFkaW5nIGhhZCBoZWFkcm9vbSBmb3IgKGBlbmZvcmNlZFF1b3RhTGltaXQg4oiSIHVzZWRgKSwgc28gb25lXG4vLyAgICBwb2QgY2Fubm90IHJ1biBmYXIgcGFzdCBhIG5lYXJseS1mdWxsIGNvdW50ZXIgb24gYSBzdGFsZSBcInllc1wiO1xuLy8gIC0gYSBERU5JRUQgcmVhZGluZyB1bnRpbCB0aGUgcGVyaW9kIHJlc2V0cywgY2FwcGVkIGF0XG4vLyAgICBgUVVPVEFfQ0hFQ0tfREVOSUVEX0NBQ0hFX01TYCAoZGVmYXVsdCA2MDAwMCkgc28gYW4gdXBncmFkZSwgYSBidW5kbGVcbi8vICAgIHB1cmNoYXNlIG9yIGFuIG9wZXJhdG9yIHJlc2V0IGlzIGhvbm91cmVkIHdpdGhpbiBhIG1pbnV0ZTtcbi8vICAtIGEgZmFpbC1vcGVuIHNlbnRpbmVsIGlzIE5FVkVSIGNhY2hlZCDigJQgcmVjb3ZlcnkgaXMgc2VlbiBvbiB0aGUgbmV4dCByZXF1ZXN0LlxuLy8gU3RhbGVuZXNzIGlzIGJvdW5kZWQgYW5kIGFjY2VwdGVkOiB0aGUgY291bnRlciBpdHNlbGYgbmV2ZXIgZXhjZWVkcyB0aGUgY2FwXG4vLyAodGhlIG1ldGVyZWQgaW5jcmVtZW50IGFkbWl0cyBvbmx5IHdoYXQgZml0cyBhbmQgcmVjb3JkcyB0aGUgcmVzdCBhc1xuLy8gb3ZlcnNob290KSwgc28gYSBzdGFsZSBcInllc1wiIGNvc3RzIGF0IG1vc3QgYSBmZXcgdW5iaWxsZWQtb3Zlci1jYXAgcmVxdWVzdHNcbi8vIHBlciBwb2QgcGVyIFRUTCwgbmV2ZXIgYW4gdW5ib3VuZGVkIHJ1bi4gQ29uY3VycmVudCBtaXNzZXMgZm9yIG9uZSBrZXkgc2hhcmVcbi8vIGEgc2luZ2xlIGluLWZsaWdodCByZWFkLlxuXG4vKiogVFRMIChtcykgb2YgYSBjYWNoZWQgQUxMT1dFRCBjaGVjay4gYDBgIGRpc2FibGVzIHRoZSBjYWNoZS4gKi9cbmV4cG9ydCBjb25zdCBRVU9UQV9DSEVDS19DQUNIRV9UVExfTVMgPSBlbnZJbnQoJ1FVT1RBX0NIRUNLX0NBQ0hFX1RUTF9NUycsIDUwMDAsIHsgbWluOiAwIH0pO1xuXG4vKiogTG9uZ2VzdCAobXMpIGEgREVOSUVEIGNoZWNrIGlzIHJldXNlZCBiZWZvcmUgcmUtYXNraW5nIChpdCBuZXZlciBvdXRsaXZlcyBgcmVzZXRBdGApLiAqL1xuZXhwb3J0IGNvbnN0IFFVT1RBX0NIRUNLX0RFTklFRF9DQUNIRV9NUyA9IGVudkludCgnUVVPVEFfQ0hFQ0tfREVOSUVEX0NBQ0hFX01TJywgNjAwMDAsIHsgbWluOiAwIH0pO1xuXG4vKiogQm91bmQgb24gY2FjaGVkIChvcmcsIHR5cGUpIHJlYWRpbmdzIHBlciBwb2QuICovXG5jb25zdCBDSEVDS19DQUNIRV9NQVhfRU5UUklFUyA9IDEwXzAwMDtcblxuaW50ZXJmYWNlIENhY2hlZENoZWNrIHtcbiAgc3RhdHVzOiBRdW90YUNoZWNrUmVzdWx0O1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgLyoqIFJlcXVlc3RzIHRoaXMgcG9kIGxldCB0aHJvdWdoIG9uIHRoaXMgcmVhZGluZy4gKi9cbiAgcGFzc2VzOiBudW1iZXI7XG59XG5cbmNvbnN0IGNoZWNrQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVkQ2hlY2s+KCk7XG5jb25zdCBpbkZsaWdodENoZWNrcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFF1b3RhQ2hlY2tSZXN1bHQ+PigpO1xuXG4vKiogRHJvcCBldmVyeSBjYWNoZWQgY2hlY2sgKHRlc3RzOyBhbHNvIGEgc2FmZSBvcGVyYXRpb25hbCByZXNldCkuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJRdW90YUNoZWNrQ2FjaGUoKTogdm9pZCB7XG4gIGNoZWNrQ2FjaGUuY2xlYXIoKTtcbiAgaW5GbGlnaHRDaGVja3MuY2xlYXIoKTtcbn1cblxuLyoqIEEgdXNhYmxlIGNhY2hlZCByZWFkaW5nIGZvciBga2V5YCwgY291bnRpbmcgdGhpcyByZXF1ZXN0IGFnYWluc3QgaXRzIGhlYWRyb29tLiAqL1xuZnVuY3Rpb24gY2FjaGVkQ2hlY2soa2V5OiBzdHJpbmcsIHF1b3RhVHlwZTogUXVvdGFUeXBlKTogUXVvdGFDaGVja1Jlc3VsdCB8IG51bGwge1xuICBjb25zdCBoaXQgPSBjaGVja0NhY2hlLmdldChrZXkpO1xuICBpZiAoIWhpdCkgcmV0dXJuIG51bGw7XG4gIGlmIChoaXQuZXhwaXJlc0F0IDw9IERhdGUubm93KCkpIHtcbiAgICBjaGVja0NhY2hlLmRlbGV0ZShrZXkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghaGl0LnN0YXR1cy5hbGxvd2VkKSByZXR1cm4gaGl0LnN0YXR1cztcbiAgaWYgKGhpdC5zdGF0dXMubGltaXQgIT09IC0xKSB7XG4gICAgY29uc3QgaGVhZHJvb20gPSBlbmZvcmNlZFF1b3RhTGltaXQocXVvdGFUeXBlLCBoaXQuc3RhdHVzLmxpbWl0KSAtIGhpdC5zdGF0dXMudXNlZDtcbiAgICBpZiAoaGl0LnBhc3NlcyA+PSBoZWFkcm9vbSkge1xuICAgICAgY2hlY2tDYWNoZS5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICBoaXQucGFzc2VzICs9IDE7XG4gIHJldHVybiBoaXQuc3RhdHVzO1xufVxuXG5mdW5jdGlvbiByZW1lbWJlckNoZWNrKGtleTogc3RyaW5nLCBzdGF0dXM6IFF1b3RhQ2hlY2tSZXN1bHQpOiB2b2lkIHtcbiAgaWYgKCFzdGF0dXMgfHwgc3RhdHVzLmZhaWxPcGVuKSByZXR1cm47XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGxldCBleHBpcmVzQXQ6IG51bWJlcjtcbiAgaWYgKHN0YXR1cy5hbGxvd2VkKSB7XG4gICAgaWYgKFFVT1RBX0NIRUNLX0NBQ0hFX1RUTF9NUyA9PT0gMCkgcmV0dXJuO1xuICAgIGV4cGlyZXNBdCA9IG5vdyArIFFVT1RBX0NIRUNLX0NBQ0hFX1RUTF9NUztcbiAgfSBlbHNlIHtcbiAgICBpZiAoUVVPVEFfQ0hFQ0tfREVOSUVEX0NBQ0hFX01TID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgcmVzZXRBdCA9IERhdGUucGFyc2Uoc3RhdHVzLnJlc2V0QXQpO1xuICAgIGV4cGlyZXNBdCA9IE1hdGgubWluKG5vdyArIFFVT1RBX0NIRUNLX0RFTklFRF9DQUNIRV9NUywgTnVtYmVyLmlzRmluaXRlKHJlc2V0QXQpID8gcmVzZXRBdCA6IG5vdyk7XG4gICAgaWYgKGV4cGlyZXNBdCA8PSBub3cpIHJldHVybjtcbiAgfVxuICBpZiAoY2hlY2tDYWNoZS5zaXplID49IENIRUNLX0NBQ0hFX01BWF9FTlRSSUVTKSB7XG4gICAgLy8gTWFwIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIsIHNvIHRoZSBmaXJzdCBrZXkgaXMgdGhlIG9sZGVzdCByZWFkaW5nLlxuICAgIGNvbnN0IG9sZGVzdCA9IGNoZWNrQ2FjaGUua2V5cygpLm5leHQoKTtcbiAgICBpZiAoIW9sZGVzdC5kb25lKSBjaGVja0NhY2hlLmRlbGV0ZShvbGRlc3QudmFsdWUpO1xuICB9XG4gIC8vIFRoZSByZXF1ZXN0IHRoYXQgZmV0Y2hlZCB0aGUgcmVhZGluZyBpcyBpdHMgZmlyc3QgcGFzcy5cbiAgY2hlY2tDYWNoZS5zZXQoa2V5LCB7IHN0YXR1cywgZXhwaXJlc0F0LCBwYXNzZXM6IHN0YXR1cy5hbGxvd2VkID8gMSA6IDAgfSk7XG59XG5cbi8qKlxuICogT25lIHF1b3RhIHJlYWQgZm9yIChvcmcsIHR5cGUpLCBzaGFyZWQgYnkgZXZlcnkgY29uY3VycmVudCBtaXNzIG9uIHRoaXMgcG9kLlxuICogQSByZXF1ZXN0IHRoYXQgd2FpdGVkIG9uIHNvbWVvbmUgZWxzZSdzIHJlYWQgdGhlbiBnb2VzIGJhY2sgdGhyb3VnaCB0aGVcbiAqIGNhY2hlLCBzbyBpdCBpcyBjb3VudGVkIGFnYWluc3QgdGhlIHJlYWRpbmcncyBoZWFkcm9vbSBsaWtlIGFueSBvdGhlciBwYXNzXG4gKiAoYGpvaW5lZGAgc3RvcHMgaXQgZnJvbSB3YWl0aW5nIGEgc2Vjb25kIHRpbWUpLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWFkQ2hlY2socXVvdGFTZXJ2aWNlOiBRdW90YVNlcnZpY2UsIG9yZ0lkOiBzdHJpbmcsIHF1b3RhVHlwZTogUXVvdGFUeXBlLCBqb2luZWQgPSBmYWxzZSk6IFByb21pc2U8UXVvdGFDaGVja1Jlc3VsdD4ge1xuICBjb25zdCBrZXkgPSBgJHtvcmdJZH1cXHUwMDAwJHtxdW90YVR5cGV9YDtcbiAgY29uc3QgY2FjaGVkID0gY2FjaGVkQ2hlY2soa2V5LCBxdW90YVR5cGUpO1xuICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuICBjb25zdCBwZW5kaW5nID0gaW5GbGlnaHRDaGVja3MuZ2V0KGtleSk7XG4gIGlmIChwZW5kaW5nKSB7XG4gICAgaWYgKGpvaW5lZCkgcmV0dXJuIHBlbmRpbmc7XG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgcGVuZGluZztcbiAgICAvLyBBIGZhaWwtb3BlbiAob3IgdW5jYWNoZWFibGUpIHJlYWRpbmcgaGFzIG5vdGhpbmcgdG8gYWNjb3VudCBhZ2FpbnN0LlxuICAgIHJldHVybiBjaGVja0NhY2hlLmhhcyhrZXkpID8gcmVhZENoZWNrKHF1b3RhU2VydmljZSwgb3JnSWQsIHF1b3RhVHlwZSwgdHJ1ZSkgOiBzdGF0dXM7XG4gIH1cbiAgLy8gQXV0aGVudGljYXRlIGFzIFRISVMgc2VydmljZSwgbm90IGJ5IGZvcndhcmRpbmcgdGhlIHVzZXIncyB0b2tlbjogdGhlIHVzZXJcbiAgLy8gdG9rZW4gNDAzcyBhdCB0aGUgcXVvdGEgcmVhZCByb3V0ZSBmb3IgY3VzdG9tIHJvbGVzIHdpdGhvdXQgYHF1b3RhczpyZWFkYCxcbiAgLy8gYW5kIChiZWluZyBub24tc2VydmljZSkgY291bnRzIGFnYWluc3QgdGhlIHF1b3RhIHNlcnZpY2UncyBwZXItSVAgbGltaXRlclxuICAvLyBrZXllZCBvbiBUSElTIHBvZCdzIElQIOKAlCBib3RoIG9mIHdoaWNoIHNpbGVudGx5IGZhaWwgdGhlIGdhdGUgb3BlbiB1bmRlciBsb2FkLlxuICBjb25zdCByZWFkID0gcXVvdGFTZXJ2aWNlLmNoZWNrKG9yZ0lkLCBxdW90YVR5cGUsIGdldFF1b3RhU2VydmljZUF1dGhIZWFkZXIob3JnSWQpKVxuICAgIC50aGVuKChzdGF0dXMpID0+IHtcbiAgICAgIHJlbWVtYmVyQ2hlY2soa2V5LCBzdGF0dXMpO1xuICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9KVxuICAgIC5maW5hbGx5KCgpID0+IGluRmxpZ2h0Q2hlY2tzLmRlbGV0ZShrZXkpKTtcbiAgaW5GbGlnaHRDaGVja3Muc2V0KGtleSwgcmVhZCk7XG4gIHJldHVybiByZWFkO1xufVxuXG4vKipcbiAqIENyZWF0ZSBtaWRkbGV3YXJlIHRoYXQgY2hlY2tzIGEgc3BlY2lmaWMgcXVvdGEgdHlwZSBiZWZvcmUgcHJvY2VlZGluZy5cbiAqXG4gKiBPbiBxdW90YSBleGNlZWRlZCwgcmV0dXJucyBhIDQyOSByZXNwb25zZSB3aXRoIHF1b3RhIGRldGFpbHMgKHF1b3RhVHlwZSxcbiAqIGxpbWl0LCB1c2VkLCByZXNldEF0LCB1cGdyYWRlVXJsIOKAlCBzZWUgYXBpLWNvcmUgYHNlbmRRdW90YUV4Y2VlZGVkYCkuXG4gKiBPbiBxdW90YSBzZXJ2aWNlIGZhaWx1cmUsIGZhaWxzIG9wZW4gKGFsbG93cyB0aGUgcmVxdWVzdCkuXG4gKlxuICogYGFwaUNhbGxzYCBpcyBzcGxpdCBwZXIgcmVxdWVzdCBieSBwcmluY2lwYWw6IGFuIG9yZyBzZXJ2aWNlIGFjY291bnQgb3IgYVxuICogcGVyc29uYWwgYWNjZXNzIGtleSBpcyBjaGVja2VkIGFnYWluc3QgYGF1dG9tYXRpb25DYWxsc2AgaW5zdGVhZFxuICogKHtAbGluayBtZXRlcmVkUXVvdGFUeXBlRm9yfSksIHRoZVxuICogc2FtZSB0eXBlIGBtZXRlclF1b3RhT25TdWNjZXNzYCBpbmNyZW1lbnRzIOKAlCBzbyBtb3VudCBib3RoIHdpdGggYCdhcGlDYWxscydgLlxuICpcbiAqIFNraXBwZWQgKHBhc3NlcyB0aHJvdWdoKSBleGFjdGx5IHdoZXJlIHRoZSBtZXRlciBza2lwcywgc28gdGhlIGdhdGUgbmV2ZXJcbiAqIHJlZnVzZXMgYSBjYWxsIHRoZSBtZXRlciB3b3VsZCBub3QgYmlsbCAoYGNhbGxRdW90YUV4ZW1wdGlvbmApOlxuICogLSBhIFNFUlZJQ0UgUFJJTkNJUEFMIChwZWVyLXNlcnZpY2UgdHJhZmZpYyBpcyBuZXZlciBtZXRlcmVkLCBzbyBhIHRlbmFudCBhdFxuICogICBpdHMgbGltaXQgbXVzdCBub3QgYnJlYWsgdGhlIGludGVybmFsIGNhbGxzIGl0cyBvd24gZWFybGllciBhY3Rpb25zIGNhdXNlZCk7XG4gKiAtIGZvciBgYXBpQ2FsbHNgOiBhbiBJTVBFUlNPTkFUSU9OIHNlc3Npb24gKHZlbmRvciBzdGFmZiBkaWFnbm9zaW5nIGFuXG4gKiAgIGV4aGF1c3RlZCBvcmcgbXVzdCBub3QgYmUgbG9ja2VkIG91dCBieSBpdCkgYW5kIGFuIE9OLUJFSEFMRiBob3AgKGEgdXNlclxuICogICB0b2tlbiBmb3J3YXJkZWQgYnkgYXNrL3BpcGVsaW5lIHdpdGggYSBzaWduZWQgbWFya2VyIOKAlCB0aGUgb3JpZ2luYXRpbmdcbiAqICAgcmVxdWVzdCB3YXMgYWxyZWFkeSBnYXRlZCBhbmQgbWV0ZXJlZCk7XG4gKiAtIGFuIGBhcGlDYWxsc2AgcmVxdWVzdCBvbiB0aGUgZmxlZXQtd2lkZSBgUVVPVEFfRVhFTVBUX1JPVVRFU2AgKGNvbnNvbGVcbiAqICAgcG9sbGluZyDigJQgYW4gZXhoYXVzdGVkIG9yZyBtdXN0IHN0aWxsIHJlbmRlciB0aGUgYmFubmVyIHNheWluZyBzbyk7XG4gKiAtIGFuIGlkZW1wb3RlbnQgUkVUUlkgd2hvc2Ugb3JpZ2luYWwgYWxyZWFkeSBjb21wbGV0ZWQgKHRoZSByZXBsYXkgaXMgc2VydmVkXG4gKiAgIGZyb20gdGhlIGlkZW1wb3RlbmN5IGNhY2hlLCBkb2VzIG5vIHdvcmsgYW5kIGlzIG5ldmVyIG1ldGVyZWQ7IHJlZnVzaW5nIGl0XG4gKiAgIHdvdWxkIDQyOSBhIGNsaWVudCBmb3IgYXNraW5nIHdoYXQgaXRzIG93biBlYXJsaWVyIHJlcXVlc3QgcmV0dXJuZWQpLlxuICpcbiAqIFJlYWRpbmdzIGFyZSBjYWNoZWQgcGVyIHBvZCAoc2VlIHRoZSBjYWNoZSBub3RlcyBhYm92ZSksIGFuZCB0aGUgcmVhZCBpdHNlbGZcbiAqIGhhcyBhIHNob3J0IGJ1ZGdldCAoYXBpLWNvcmUgYFFVT1RBX0NIRUNLX1RJTUVPVVRfTVNgLCBubyByZXRyeSkg4oCUIGEgc2xvd1xuICogcXVvdGEgc2VydmljZSBmYWlscyBvcGVuIHF1aWNrbHkgaW5zdGVhZCBvZiBzdGFsbGluZyBldmVyeSByZXF1ZXN0LlxuICpcbiAqIE1vdW50YWJsZSBhdCB0aGUgYXBwLXJvdXRlcyBsZXZlbCAoYGFwcC51c2UocHJlZml4LCDigKZhdXRoLCBjaGVja1F1b3RhKC4uLikpYCk6XG4gKiB0aGUgb3JnIGNvbWVzIGZyb20gdGhlIHJlcXVlc3QgY29udGV4dCB3aGVuIG9uZSBpcyBhdHRhY2hlZCwgZWxzZSBmcm9tIHRoZVxuICogdmVyaWZpZWQgYHJlcS51c2VyLm9yZ2FuaXphdGlvbklkYCDigJQgdGhlIHNhbWUgZmFsbGJhY2sgdGhlIG1ldGVyIHVzZXMuXG4gKlxuICogQHBhcmFtIHF1b3RhU2VydmljZSAtIFF1b3RhIHNlcnZpY2UgY2xpZW50XG4gKiBAcGFyYW0gcXVvdGFUeXBlIC0gV2hpY2ggcXVvdGEgdG8gY2hlY2sgKGUuZy4gJ2FwaUNhbGxzJywgJ3BpcGVsaW5lcycsICdwbHVnaW5zJylcbiAqIEByZXR1cm5zIEV4cHJlc3MgbWlkZGxld2FyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tRdW90YShcbiAgcXVvdGFTZXJ2aWNlOiBRdW90YVNlcnZpY2UsXG4gIGJhc2VRdW90YVR5cGU6IFF1b3RhVHlwZSxcbikge1xuICByZXR1cm4gdGFnUm91dGVHYXRlKGFzeW5jIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8vIFRoZSBjaGVjayBpcyBzZW50IHdpdGggVEhJUyBzZXJ2aWNlJ3MgY3JlZGVudGlhbHMsIHNvIGl0IG11c3Qgb25seSBydW4gZm9yXG4gICAgLy8gYSBWRVJJRklFRCBjYWxsZXIg4oCUIG90aGVyd2lzZSB0aGUgb3JnIHdvdWxkIGNvbWUgZnJvbSB0aGUgc3Bvb2ZhYmxlXG4gICAgLy8gaGVhZGVyLWRlcml2ZWQgaWRlbnRpdHkuIE1vdW50ZWQgYWZ0ZXIgcmVxdWlyZUF1dGggZXZlcnl3aGVyZTsgYW5cbiAgICAvLyB1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdCBoZXJlIGlzIGEgd2lyaW5nIGJ1Zywgc28gc2tpcCAoZmFpbCBvcGVuKSBsb3VkbHkuXG4gICAgaWYgKCFyZXEudXNlcikge1xuICAgICAgbG9nZ2VyLndhcm4oJ1F1b3RhIGNoZWNrIHNraXBwZWQ6IHJlcXVlc3QgaXMgbm90IGF1dGhlbnRpY2F0ZWQnKTtcbiAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhlbXB0aW9uID0gY2FsbFF1b3RhRXhlbXB0aW9uKHJlcSk7XG4gICAgaWYgKGV4ZW1wdGlvbiA9PT0gJ3NlcnZpY2UnIHx8IChleGVtcHRpb24gJiYgYmFzZVF1b3RhVHlwZSA9PT0gJ2FwaUNhbGxzJykpIHJldHVybiBuZXh0KCk7XG4gICAgaWYgKGJhc2VRdW90YVR5cGUgPT09ICdhcGlDYWxscycgJiYgaXNRdW90YUV4ZW1wdFJvdXRlKHJlcS5tZXRob2QsIHJlcXVlc3RQYXRoKHJlcSkpKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgY29uc3QgcXVvdGFUeXBlID0gbWV0ZXJlZFF1b3RhVHlwZUZvcihyZXEsIGJhc2VRdW90YVR5cGUpO1xuICAgIGxldCBvcmdJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIG9yZ0lkID0gZ2V0Q29udGV4dChyZXEpLmlkZW50aXR5Lm9yZ0lkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTm8gcmVxdWVzdCBjb250ZXh0IChwbGF0Zm9ybSBhdHRhY2hlcyBub25lKTogdGhlIHZlcmlmaWVkIGF1dGggb3JnIOKAlCB0aGVcbiAgICAgIC8vIHNhbWUgZmFsbGJhY2sgYG1ldGVyUXVvdGFPblN1Y2Nlc3NgIHVzZXMsIHNvIGJvdGggcmVhZCBvbmUgY291bnRlci5cbiAgICAgIG9yZ0lkID0gcmVxLnVzZXIub3JnYW5pemF0aW9uSWQ7XG4gICAgfVxuXG4gICAgLy8gTm8gb3JnLCBub3RoaW5nIHRvIGJpbGwgKHRoZSBtZXRlciBza2lwcyBpdCB0b28pLiBOb3QgYSA0MDA6IHJ1biBkZWZlcnJlZFxuICAgIC8vIGZyb20gYHJlcXVpcmVBdXRoYCB0aGlzIHByZWNlZGVzIHRoZSByb3V0ZSdzIG93biBgcmVxdWlyZU9yZ0lkYCwgYW5kIGFcbiAgICAvLyByb3V0ZSB0aGF0IG5lZWRzIG5vIG9yZyAoYSBwZXJzb24gYmV0d2VlbiBvcmdzIHN3aXRjaGluZyBpbnRvIG9uZSkgbXVzdFxuICAgIC8vIG5vdCBiZSByZWZ1c2VkIGJ5IGEgcXVvdGEgZ2F0ZS5cbiAgICBpZiAoIW9yZ0lkKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgLy8gQSByZXRyeSBvZiBhIGNvbXBsZXRlZCBpZGVtcG90ZW50IG11dGF0aW9uIGlzIGFuc3dlcmVkIGZyb20gdGhlIHJlcGxheVxuICAgIC8vIGNhY2hlIHdpdGhvdXQgcnVubmluZyB0aGUgaGFuZGxlciDigJQgbm90aGluZyB0byBnYXRlIChvbmUgc3RvcmUgcmVhZCwgb25seVxuICAgIC8vIGZvciByZXF1ZXN0cyB0aGF0IGNhcnJ5IGFuIElkZW1wb3RlbmN5LUtleSkuXG4gICAgaWYgKGF3YWl0IGhhc0NvbXBsZXRlZElkZW1wb3RlbnRSZXNwb25zZShyZXEpKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgbGV0IHF1b3RhU3RhdHVzOiBRdW90YUNoZWNrUmVzdWx0O1xuICAgIHRyeSB7XG4gICAgICBxdW90YVN0YXR1cyA9IGF3YWl0IHJlYWRDaGVjayhxdW90YVNlcnZpY2UsIG9yZ0lkLCBxdW90YVR5cGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBGYWlsIG9wZW4g4oCUIGFsbG93IHRoZSByZXF1ZXN0IGlmIHF1b3RhIHNlcnZpY2UgaXMgdW5hdmFpbGFibGVcbiAgICAgIGxvZ2dlci53YXJuKCdRVU9UQV9GQUlMX09QRU46IFF1b3RhIGNoZWNrIGV4Y2VwdGlvbiwgYWxsb3dpbmcgcmVxdWVzdCcsIHtcbiAgICAgICAgb3JnSWQsXG4gICAgICAgIHF1b3RhVHlwZSxcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnJvciksXG4gICAgICB9KTtcbiAgICAgIC8vIFNhbWUgY291bnRlciB0aGUgYXBpLWNvcmUgcXVvdGEgY2xpZW50IGVtaXRzLCBzbyBhIHF1b3RhLXNlcnZpY2Ugb3V0YWdlXG4gICAgICAvLyBpcyBBTEVSVEFCTEUgZnJvbSBvbmUgc2VyaWVzIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggbGF5ZXIgZmVsbCBvcGVuLiBPbmx5XG4gICAgICAvLyBhIGxvZyBsaW5lIGhlcmUgbWVhbnQgZXZlcnkgb3JnIHdhcyBzaWxlbnRseSB1bi1iaWxsZWQgZm9yIHRoZSBkdXJhdGlvbi5cbiAgICAgIGVtaXRDb3VudGVyKCdxdW90YV9mYWlsX29wZW5fdG90YWwnLCB7IG9wZXJhdGlvbjogJ2NoZWNrJywgcmVhc29uOiAnZXhjZXB0aW9uJywgcXVvdGFUeXBlIH0pO1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG5cbiAgICBpZiAoIXF1b3RhU3RhdHVzLmFsbG93ZWQpIHtcbiAgICAgIGxvZ2dlci53YXJuKGAke3F1b3RhVHlwZX0gcXVvdGEgZXhjZWVkZWRgLCB7XG4gICAgICAgIG9yZ0lkLFxuICAgICAgICBsaW1pdDogcXVvdGFTdGF0dXMubGltaXQsXG4gICAgICAgIHVzZWQ6IHF1b3RhU3RhdHVzLnVzZWQsXG4gICAgICB9KTtcblxuICAgICAgLy8gUm91dGUgdGhyb3VnaCB0aGUgc2hhcmVkIGhlbHBlciBzbyB0aGUgY2hlY2stZ2F0ZSA0MjkgZW1pdHMgdGhlIHNhbWVcbiAgICAgIC8vIFJldHJ5LUFmdGVyICsgWC1RdW90YS0qIGhlYWRlcnMgYW5kIHRoZSBzYW1lIGJvZHkgKHdoaWNoIHF1b3RhLCB0aGVcbiAgICAgIC8vIHJlc2V0IGRhdGUsIHRoZSB1cGdyYWRlIHBhZ2UpIGFzIHRoZSByZXNlcnZlLXBhdGggNDI5LlxuICAgICAgc2VuZFF1b3RhRXhjZWVkZWQoXG4gICAgICAgIHJlcyxcbiAgICAgICAgcXVvdGFUeXBlLFxuICAgICAgICB7IHR5cGU6IHF1b3RhVHlwZSwgbGltaXQ6IHF1b3RhU3RhdHVzLmxpbWl0LCB1c2VkOiBxdW90YVN0YXR1cy51c2VkLCByZW1haW5pbmc6IHF1b3RhU3RhdHVzLnJlbWFpbmluZyB9LFxuICAgICAgICBxdW90YVN0YXR1cy5yZXNldEF0LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPdXRzaWRlIHRoZSB0cnk6IGEgc3luY2hyb25vdXMgdGhyb3cgZG93bnN0cmVhbSBtdXN0IHJlYWNoIEV4cHJlc3MncyBlcnJvclxuICAgIC8vIGhhbmRsaW5nLCBub3QgYmUgbWlzdGFrZW4gZm9yIGEgcXVvdGEtc2VydmljZSBmYWlsdXJlIGFuZCBydW4gbmV4dCgpIHR3aWNlLlxuICAgIG5leHQoKTtcbiAgfSwgeyBraW5kOiAncXVvdGEnLCBtb2RlOiAnY2hlY2snLCBxdW90YVR5cGU6IGJhc2VRdW90YVR5cGUgfSk7XG59XG5cbi8qKiBUaGUgc2VydmljZS1sb2NhbCByZXF1ZXN0IHBhdGgsIHdpdGhvdXQgdGhlIHF1ZXJ5IHN0cmluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0UGF0aChyZXE6IFJlcXVlc3QpOiBzdHJpbmcge1xuICByZXR1cm4gKHJlcS5vcmlnaW5hbFVybCA/PyByZXEudXJsID8/ICcnKS5zcGxpdCgnPycpWzBdID8/ICcnO1xufVxuXG4vKipcbiAqIFRoZSBERUZFUlJFRCBmb3JtIG9mIHtAbGluayBjaGVja1F1b3RhfTogYXJtcyB0aGUgY2hlY2sgYXQgbW91bnQgdGltZSBhbmQgbGV0c1xuICogYHJlcXVpcmVBdXRoYCBydW4gaXQgb25jZSB0aGUgY2FsbGVyIGlzIHZlcmlmaWVkIChhcGktY29yZVxuICogYGFybURlZmVycmVkUXVvdGFDaGVja2ApLiBGb3IgYSBwcmVmaXggbW91bnQgYWhlYWQgb2Ygcm91dGVycyB0aGF0XG4gKiBhdXRoZW50aWNhdGUgcGVyIHJvdXRlIOKAlCB1c2Uge0BsaW5rIGFwaUNhbGxzUXVvdGF9LCB3aGljaCBwYWlycyBpdCB3aXRoIHRoZVxuICogbWV0ZXIuIFRhZ2dlZCBhcyB0aGUgY2hlY2sgZ2F0ZSwgc28gdGhlIHJvdXRlIHRhYmxlIHJlY29yZHMgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZlcnJlZENoZWNrUXVvdGEocXVvdGFTZXJ2aWNlOiBRdW90YVNlcnZpY2UsIHF1b3RhVHlwZTogUXVvdGFUeXBlKTogUmVxdWVzdEhhbmRsZXIge1xuICBjb25zdCBjaGVjayA9IGNoZWNrUXVvdGEocXVvdGFTZXJ2aWNlLCBxdW90YVR5cGUpIGFzIFJlcXVlc3RIYW5kbGVyO1xuICByZXR1cm4gdGFnUm91dGVHYXRlKChfcmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICBhcm1EZWZlcnJlZFF1b3RhQ2hlY2socmVzLCBjaGVjayk7XG4gICAgbmV4dCgpO1xuICB9LCB7IGtpbmQ6ICdxdW90YScsIG1vZGU6ICdjaGVjaycsIHF1b3RhVHlwZSB9KTtcbn1cbiJdfQ==
@@ -39,4 +39,4 @@ export function attachRequestContext(sseManager) {
39
39
  next();
40
40
  };
41
41
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jb250ZXh0LW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQXNCO0lBQ3pELE9BQU8sQ0FBQyxHQUFZLEVBQUUsSUFBYyxFQUFFLElBQWtCLEVBQVEsRUFBRTtRQUNoRSx1Q0FBdUM7UUFDdkMsR0FBRyxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEQsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiwgUmVxdWVzdEhhbmRsZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGNyZWF0ZVJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi9yZXF1ZXN0LXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU1NFTWFuYWdlciB9IGZyb20gJy4uL2h0dHAvc3NlLWNvbm5lY3Rpb24tbWFuYWdlci5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBtaWRkbGV3YXJlIHRoYXQgYXR0YWNoZXMgUmVxdWVzdENvbnRleHQgdG8gcmVxLmNvbnRleHRcbiAqXG4gKiBUaGUgY29udGV4dCBpbmNsdWRlczpcbiAqIC0gcmVxdWVzdElkOiBVbmlxdWUgcmVxdWVzdCBpZGVudGlmaWVyXG4gKiAtIGlkZW50aXR5OiBVc2VyIGlkZW50aXR5IGZyb20gSldUIChvcmdJZCwgdXNlcklkLCByb2xlKVxuICogLSBsb2c6IExvZ2dlciBmdW5jdGlvbiB0aGF0IHNlbmRzIHRvIGJvdGggV2luc3RvbiBhbmQgU1NFXG4gKlxuICogQHBhcmFtIHNzZU1hbmFnZXIgLSBTU0UgbWFuYWdlciBmb3IgcmVhbC10aW1lIGxvZ2dpbmdcbiAqIEByZXR1cm5zIEV4cHJlc3MgbWlkZGxld2FyZSB0aGF0IGF0dGFjaGVzIGNvbnRleHQgdG8gcmVxLmNvbnRleHRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgeyBhcHAsIHNzZU1hbmFnZXIgfSA9IGNyZWF0ZUFwcCgpO1xuICpcbiAqIC8vIEFwcGx5IGNvbnRleHQgbWlkZGxld2FyZSBnbG9iYWxseVxuICogYXBwLnVzZShhdHRhY2hSZXF1ZXN0Q29udGV4dChzc2VNYW5hZ2VyKSk7XG4gKlxuICogLy8gVXNlIGNvbnRleHQgaW4gcm91dGUgaGFuZGxlcnNcbiAqIGFwcC5nZXQoJy9waXBlbGluZXMnLCByZXF1aXJlQXV0aCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gKiAgIGNvbnN0IGN0eCA9IGdldENvbnRleHQocmVxKTtcbiAqICAgY3R4LmxvZygnSU5GTycsICdGZXRjaGluZyBwaXBlbGluZXMnKTtcbiAqXG4gKiAgIGlmICghY3R4LmlkZW50aXR5Lm9yZ0lkKSB7XG4gKiAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDQwMCwgJ09yZ2FuaXphdGlvbiBJRCByZXF1aXJlZCcpO1xuICogICB9XG4gKlxuICogICAvLyAuLi4gcmVzdCBvZiBoYW5kbGVyXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoUmVxdWVzdENvbnRleHQoc3NlTWFuYWdlcjogU1NFTWFuYWdlcik6IFJlcXVlc3RIYW5kbGVyIHtcbiAgcmV0dXJuIChyZXE6IFJlcXVlc3QsIF9yZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICAvLyBDcmVhdGUgYW5kIGF0dGFjaCBjb250ZXh0IHRvIHJlcXVlc3RcbiAgICByZXEuY29udGV4dCA9IGNyZWF0ZVJlcXVlc3RDb250ZXh0KHJlcSwgc3NlTWFuYWdlcik7XG4gICAgbmV4dCgpO1xuICB9O1xufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1taWRkbGV3YXJlLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NvbnRleHQtbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsVUFBc0I7SUFDekQsT0FBTyxDQUFDLEdBQVksRUFBRSxJQUFjLEVBQUUsSUFBa0IsRUFBUSxFQUFFO1FBQ2hFLHVDQUF1QztRQUN2QyxHQUFHLENBQUMsT0FBTyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwRCxJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uLCBSZXF1ZXN0SGFuZGxlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWVzdENvbnRleHQgfSBmcm9tICcuL3JlcXVlc3QtdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTU0VNYW5hZ2VyIH0gZnJvbSAnLi4vaHR0cC9zc2UtY29ubmVjdGlvbi1tYW5hZ2VyLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIG1pZGRsZXdhcmUgdGhhdCBhdHRhY2hlcyBSZXF1ZXN0Q29udGV4dCB0byByZXEuY29udGV4dFxuICpcbiAqIFRoZSBjb250ZXh0IGluY2x1ZGVzOlxuICogLSByZXF1ZXN0SWQ6IFVuaXF1ZSByZXF1ZXN0IGlkZW50aWZpZXJcbiAqIC0gaWRlbnRpdHk6IFVzZXIgaWRlbnRpdHkgZnJvbSBKV1QgKG9yZ0lkLCB1c2VySWQsIHJvbGUpXG4gKiAtIGxvZzogTG9nZ2VyIGZ1bmN0aW9uIHRoYXQgc2VuZHMgdG8gYm90aCBXaW5zdG9uIGFuZCBTU0VcbiAqXG4gKiBAcGFyYW0gc3NlTWFuYWdlciAtIFNTRSBtYW5hZ2VyIGZvciByZWFsLXRpbWUgbG9nZ2luZ1xuICogQHJldHVybnMgRXhwcmVzcyBtaWRkbGV3YXJlIHRoYXQgYXR0YWNoZXMgY29udGV4dCB0byByZXEuY29udGV4dFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB7IGFwcCwgc3NlTWFuYWdlciB9ID0gY3JlYXRlQXBwKCk7XG4gKlxuICogLy8gQXBwbHkgY29udGV4dCBtaWRkbGV3YXJlIGdsb2JhbGx5XG4gKiBhcHAudXNlKGF0dGFjaFJlcXVlc3RDb250ZXh0KHNzZU1hbmFnZXIpKTtcbiAqXG4gKiAvLyBVc2UgY29udGV4dCBpbiByb3V0ZSBoYW5kbGVyc1xuICogYXBwLmdldCgnL3BpcGVsaW5lcycsIHJlcXVpcmVBdXRoLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAqICAgY29uc3QgY3R4ID0gZ2V0Q29udGV4dChyZXEpO1xuICogICBjdHgubG9nKCdJTkZPJywgJ0ZldGNoaW5nIHBpcGVsaW5lcycpO1xuICpcbiAqICAgaWYgKCFjdHguaWRlbnRpdHkub3JnSWQpIHtcbiAqICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgNDAwLCAnT3JnYW5pemF0aW9uIElEIHJlcXVpcmVkJyk7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIC4uLiByZXN0IG9mIGhhbmRsZXJcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hSZXF1ZXN0Q29udGV4dChzc2VNYW5hZ2VyOiBTU0VNYW5hZ2VyKTogUmVxdWVzdEhhbmRsZXIge1xuICByZXR1cm4gKHJlcTogUmVxdWVzdCwgX3JlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIC8vIENyZWF0ZSBhbmQgYXR0YWNoIGNvbnRleHQgdG8gcmVxdWVzdFxuICAgIHJlcS5jb250ZXh0ID0gY3JlYXRlUmVxdWVzdENvbnRleHQocmVxLCBzc2VNYW5hZ2VyKTtcbiAgICBuZXh0KCk7XG4gIH07XG59XG4iXX0=
@@ -41,4 +41,4 @@ export function etagMiddleware() {
41
41
  next();
42
42
  };
43
43
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRhZy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9ldGFnLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR3BDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1QixPQUFPLENBQUMsR0FBWSxFQUFFLEdBQWEsRUFBRSxJQUFrQixFQUFFLEVBQUU7UUFDekQsNkJBQTZCO1FBQzdCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLO1lBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUV4QyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBYSxFQUFFLEVBQUU7WUFDM0IsZ0VBQWdFO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEMscUVBQXFFO1lBQ3JFLHNFQUFzRTtZQUN0RSwwRUFBMEU7WUFDMUUsMEVBQTBFO1lBQzFFLHFDQUFxQztZQUNyQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2xELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQztZQUUzQixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU1Qiw2QkFBNkI7WUFDN0IsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNqRCxJQUFJLFdBQVcsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUVELDBEQUEwRDtZQUMxRCxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUM7UUFFRixJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcblxuLyoqXG4gKiBNaWRkbGV3YXJlIHRoYXQgYWRkcyBFVGFnIHN1cHBvcnQgZm9yIGNvbmRpdGlvbmFsIEdFVCByZXF1ZXN0cy5cbiAqIEdlbmVyYXRlcyBhIHdlYWsgRVRhZyBmcm9tIHRoZSByZXNwb25zZSBib2R5IGhhc2guXG4gKiBSZXR1cm5zIDMwNCBOb3QgTW9kaWZpZWQgd2hlbiB0aGUgY2xpZW50J3MgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV0YWdNaWRkbGV3YXJlKCkge1xuICByZXR1cm4gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgLy8gT25seSBhcHBseSB0byBHRVQgcmVxdWVzdHNcbiAgICBpZiAocmVxLm1ldGhvZCAhPT0gJ0dFVCcpIHJldHVybiBuZXh0KCk7XG5cbiAgICByZXMuanNvbiA9IChib2R5OiB1bmtub3duKSA9PiB7XG4gICAgICAvLyBTZXJpYWxpemUgb25jZSwgaGFzaCwgYW5kIHNlbmQg4oCUIGF2b2lkcyBkb3VibGUgSlNPTi5zdHJpbmdpZnlcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcblxuICAgICAgLy8gT25seSBFVGFnLzMwNCBTVUNDRVNTRlVMIHJlc3BvbnNlcy4gRm9yIG5vbi0yeHggKGVycm9ycyksIHNraXAgdGhlXG4gICAgICAvLyBjb25kaXRpb25hbCBsb2dpYyBlbnRpcmVseSDigJQgb3RoZXJ3aXNlIGFuIGVycm9yIHJlc3BvbnNlIHdob3NlIGJvZHlcbiAgICAgIC8vIGhhcHBlbnMgdG8gaGFzaC1tYXRjaCB0aGUgY2xpZW50J3MgSWYtTm9uZS1NYXRjaCB3b3VsZCBiZSB0dXJuZWQgaW50byBhXG4gICAgICAvLyAzMDQgTm90IE1vZGlmaWVkLCBtYWtpbmcgdGhlIGNsaWVudCBzZXJ2ZSBhIHN0YWxlIChwb3NzaWJseSBzdWNjZXNzZnVsKVxuICAgICAgLy8gY2FjaGVkIGJvZHkgaW4gcGxhY2Ugb2YgdGhlIGVycm9yLlxuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlIDwgMjAwIHx8IHJlcy5zdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgICByZXMuZW5kKHNlcmlhbGl6ZWQpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKHNlcmlhbGl6ZWQpLmRpZ2VzdCgnaGV4Jykuc2xpY2UoMCwgMTYpO1xuICAgICAgY29uc3QgZXRhZyA9IGBXL1wiJHtoYXNofVwiYDtcblxuICAgICAgcmVzLnNldEhlYWRlcignRVRhZycsIGV0YWcpO1xuXG4gICAgICAvLyBDaGVjayBJZi1Ob25lLU1hdGNoIGhlYWRlclxuICAgICAgY29uc3QgaWZOb25lTWF0Y2ggPSByZXEuaGVhZGVyc1snaWYtbm9uZS1tYXRjaCddO1xuICAgICAgaWYgKGlmTm9uZU1hdGNoICYmIGlmTm9uZU1hdGNoID09PSBldGFnKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoMzA0KS5lbmQoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cblxuICAgICAgLy8gU2VuZCBwcmUtc2VyaWFsaXplZCBib2R5IHRvIGF2b2lkIGRvdWJsZSBKU09OLnN0cmluZ2lmeVxuICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgIHJlcy5lbmQoc2VyaWFsaXplZCk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBuZXh0KCk7XG4gIH07XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRhZy1taWRkbGV3YXJlLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2V0YWctbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHcEM7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sQ0FBQyxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQUUsRUFBRTtRQUN6RCw2QkFBNkI7UUFDN0IsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUs7WUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1FBRXhDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRTtZQUMzQixnRUFBZ0U7WUFDaEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV4QyxxRUFBcUU7WUFDckUsc0VBQXNFO1lBQ3RFLDBFQUEwRTtZQUMxRSwwRUFBMEU7WUFDMUUscUNBQXFDO1lBQ3JDLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDbEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDbEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksR0FBRyxDQUFDO1lBRTNCLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTVCLDZCQUE2QjtZQUM3QixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pELElBQUksV0FBVyxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDeEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBRUQsMERBQTBEO1lBQzFELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDbEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQztRQUVGLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuXG4vKipcbiAqIE1pZGRsZXdhcmUgdGhhdCBhZGRzIEVUYWcgc3VwcG9ydCBmb3IgY29uZGl0aW9uYWwgR0VUIHJlcXVlc3RzLlxuICogR2VuZXJhdGVzIGEgd2VhayBFVGFnIGZyb20gdGhlIHJlc3BvbnNlIGJvZHkgaGFzaC5cbiAqIFJldHVybnMgMzA0IE5vdCBNb2RpZmllZCB3aGVuIHRoZSBjbGllbnQncyBJZi1Ob25lLU1hdGNoIGhlYWRlciBtYXRjaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXRhZ01pZGRsZXdhcmUoKSB7XG4gIHJldHVybiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pID0+IHtcbiAgICAvLyBPbmx5IGFwcGx5IHRvIEdFVCByZXF1ZXN0c1xuICAgIGlmIChyZXEubWV0aG9kICE9PSAnR0VUJykgcmV0dXJuIG5leHQoKTtcblxuICAgIHJlcy5qc29uID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgICAgIC8vIFNlcmlhbGl6ZSBvbmNlLCBoYXNoLCBhbmQgc2VuZCDigJQgYXZvaWRzIGRvdWJsZSBKU09OLnN0cmluZ2lmeVxuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuXG4gICAgICAvLyBPbmx5IEVUYWcvMzA0IFNVQ0NFU1NGVUwgcmVzcG9uc2VzLiBGb3Igbm9uLTJ4eCAoZXJyb3JzKSwgc2tpcCB0aGVcbiAgICAgIC8vIGNvbmRpdGlvbmFsIGxvZ2ljIGVudGlyZWx5IOKAlCBvdGhlcndpc2UgYW4gZXJyb3IgcmVzcG9uc2Ugd2hvc2UgYm9keVxuICAgICAgLy8gaGFwcGVucyB0byBoYXNoLW1hdGNoIHRoZSBjbGllbnQncyBJZi1Ob25lLU1hdGNoIHdvdWxkIGJlIHR1cm5lZCBpbnRvIGFcbiAgICAgIC8vIDMwNCBOb3QgTW9kaWZpZWQsIG1ha2luZyB0aGUgY2xpZW50IHNlcnZlIGEgc3RhbGUgKHBvc3NpYmx5IHN1Y2Nlc3NmdWwpXG4gICAgICAvLyBjYWNoZWQgYm9keSBpbiBwbGFjZSBvZiB0aGUgZXJyb3IuXG4gICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPCAyMDAgfHwgcmVzLnN0YXR1c0NvZGUgPj0gMzAwKSB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICAgIHJlcy5lbmQoc2VyaWFsaXplZCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUoc2VyaWFsaXplZCkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxNik7XG4gICAgICBjb25zdCBldGFnID0gYFcvXCIke2hhc2h9XCJgO1xuXG4gICAgICByZXMuc2V0SGVhZGVyKCdFVGFnJywgZXRhZyk7XG5cbiAgICAgIC8vIENoZWNrIElmLU5vbmUtTWF0Y2ggaGVhZGVyXG4gICAgICBjb25zdCBpZk5vbmVNYXRjaCA9IHJlcS5oZWFkZXJzWydpZi1ub25lLW1hdGNoJ107XG4gICAgICBpZiAoaWZOb25lTWF0Y2ggJiYgaWZOb25lTWF0Y2ggPT09IGV0YWcpIHtcbiAgICAgICAgcmVzLnN0YXR1cygzMDQpLmVuZCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuXG4gICAgICAvLyBTZW5kIHByZS1zZXJpYWxpemVkIGJvZHkgdG8gYXZvaWQgZG91YmxlIEpTT04uc3RyaW5naWZ5XG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgcmVzLmVuZChzZXJpYWxpemVkKTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIG5leHQoKTtcbiAgfTtcbn1cbiJdfQ==
@@ -25,4 +25,4 @@ export function getContext(req) {
25
25
  }
26
26
  return req.context;
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2dldC1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFLdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBWTtJQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGLENBQ3RGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi9yZXF1ZXN0LXR5cGVzLmpzJztcblxuLyoqXG4gKiBTYWZlbHkgcmV0cmlldmUgdGhlIFJlcXVlc3RDb250ZXh0IGZyb20gYW4gRXhwcmVzcyByZXF1ZXN0LlxuICpcbiAqIFRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yIGlmIHRoZSBjb250ZXh0IG1pZGRsZXdhcmUgaGFzIG5vdCBiZWVuIGFwcGxpZWQsXG4gKiBpbnN0ZWFkIG9mIHNpbGVudGx5IHJldHVybmluZyB1bmRlZmluZWQgb3IgY3Jhc2hpbmcgd2l0aCBhIGNyeXB0aWMgZXJyb3IuXG4gKlxuICogQHBhcmFtIHJlcSAtIEV4cHJlc3MgcmVxdWVzdCBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBhdHRhY2hlZCBSZXF1ZXN0Q29udGV4dFxuICogQHRocm93cyBFcnJvciBpZiByZXEuY29udGV4dCBpcyBub3QgaW5pdGlhbGl6ZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXBwLmdldCgnL3BpcGVsaW5lcycsIHJlcXVpcmVBdXRoLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAqICAgY29uc3QgY3R4ID0gZ2V0Q29udGV4dChyZXEpO1xuICogICBjdHgubG9nKCdJTkZPJywgJ0ZldGNoaW5nIHBpcGVsaW5lcycpO1xuICogICAvLyAuLi5cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250ZXh0KHJlcTogUmVxdWVzdCk6IFJlcXVlc3RDb250ZXh0IHtcbiAgaWYgKCFyZXEuY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdSZXF1ZXN0IGNvbnRleHQgbm90IGluaXRpYWxpemVkLiBFbnN1cmUgYXR0YWNoUmVxdWVzdENvbnRleHQgbWlkZGxld2FyZSBpcyBhcHBsaWVkLicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVxLmNvbnRleHQ7XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNvbnRleHQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvZ2V0LWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUt0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFZO0lBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FDYixxRkFBcUYsQ0FDdEYsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuL3JlcXVlc3QtdHlwZXMuanMnO1xuXG4vKipcbiAqIFNhZmVseSByZXRyaWV2ZSB0aGUgUmVxdWVzdENvbnRleHQgZnJvbSBhbiBFeHByZXNzIHJlcXVlc3QuXG4gKlxuICogVGhyb3dzIGEgZGVzY3JpcHRpdmUgZXJyb3IgaWYgdGhlIGNvbnRleHQgbWlkZGxld2FyZSBoYXMgbm90IGJlZW4gYXBwbGllZCxcbiAqIGluc3RlYWQgb2Ygc2lsZW50bHkgcmV0dXJuaW5nIHVuZGVmaW5lZCBvciBjcmFzaGluZyB3aXRoIGEgY3J5cHRpYyBlcnJvci5cbiAqXG4gKiBAcGFyYW0gcmVxIC0gRXhwcmVzcyByZXF1ZXN0IG9iamVjdFxuICogQHJldHVybnMgVGhlIGF0dGFjaGVkIFJlcXVlc3RDb250ZXh0XG4gKiBAdGhyb3dzIEVycm9yIGlmIHJlcS5jb250ZXh0IGlzIG5vdCBpbml0aWFsaXplZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhcHAuZ2V0KCcvcGlwZWxpbmVzJywgcmVxdWlyZUF1dGgsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICogICBjb25zdCBjdHggPSBnZXRDb250ZXh0KHJlcSk7XG4gKiAgIGN0eC5sb2coJ0lORk8nLCAnRmV0Y2hpbmcgcGlwZWxpbmVzJyk7XG4gKiAgIC8vIC4uLlxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRleHQocmVxOiBSZXF1ZXN0KTogUmVxdWVzdENvbnRleHQge1xuICBpZiAoIXJlcS5jb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1JlcXVlc3QgY29udGV4dCBub3QgaW5pdGlhbGl6ZWQuIEVuc3VyZSBhdHRhY2hSZXF1ZXN0Q29udGV4dCBtaWRkbGV3YXJlIGlzIGFwcGxpZWQuJyxcbiAgICApO1xuICB9XG4gIHJldHVybiByZXEuY29udGV4dDtcbn1cbiJdfQ==
@@ -84,4 +84,4 @@ export function mongoHealthCheck(connection) {
84
84
  : 'disconnected',
85
85
  });
86
86
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLWNoZWNrcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvaGVhbHRoLWNoZWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUtoRTs7Ozs7R0FLRztBQUNILFNBQVMsV0FBVyxDQUFJLE9BQW1CLEVBQUUsRUFBVSxFQUFFLEtBQWE7SUFDcEUsT0FBTyxJQUFJLE9BQU8sQ0FBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN4QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbkQsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0MsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsU0FBUyxHQUFHLElBQUk7SUFDeEQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0FBQ0gsQ0FBQztBQWVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBeUIsRUFBRSxTQUFTLEdBQUcsSUFBSTtJQUMxRSxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBRyxNQUEwQztJQUU3QyxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFtQixDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBaUIsQ0FBQztJQUN2RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBV0Q7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxVQUFrQztJQUNqRSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsQixPQUFPLEVBQUUsVUFBVSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDaEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsaUNBQWlDO2dCQUN6RSxDQUFDLENBQUMsY0FBYztLQUNyQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGdldENvbm5lY3Rpb24gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcblxudHlwZSBIZWFsdGhTdGF0dXMgPSAnY29ubmVjdGVkJyB8ICdkaXNjb25uZWN0ZWQnIHwgJ3Vua25vd24nO1xudHlwZSBIZWFsdGhSZXN1bHQgPSBSZWNvcmQ8c3RyaW5nLCBIZWFsdGhTdGF0dXM+O1xuXG4vKipcbiAqIFJlamVjdCBpZiBgcHJvbWlzZWAgaGFzbid0IHNldHRsZWQgd2l0aGluIGBtc2AuIEEgaGVhbHRoL3JlYWRpbmVzcyBwcm9iZVxuICogbXVzdCBuZXZlciBoYW5nIHRoZSBgL3JlYWR5YCByZXNwb25zZSDigJQgYSBkb3duIGRhdGFzdG9yZSAob3IgYSBCdWxsTVFcbiAqIGlvcmVkaXMgY2xpZW50IHdpdGggYG1heFJldHJpZXNQZXJSZXF1ZXN0OiBudWxsYCArIGFuIG9mZmxpbmUgcXVldWUpIGNhblxuICogbGVhdmUgYSBgcGluZygpYC9xdWVyeSBwZW5kaW5nIGluZGVmaW5pdGVseSwgc28gZXZlcnkgcHJvYmUgaXMgdGltZS1ib3hlZC5cbiAqL1xuZnVuY3Rpb24gd2l0aFRpbWVvdXQ8VD4ocHJvbWlzZTogUHJvbWlzZTxUPiwgbXM6IG51bWJlciwgbGFiZWw6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGAke2xhYmVsfSB0aW1lZCBvdXQgYWZ0ZXIgJHttc31tc2ApKSwgbXMpO1xuICAgIHRpbWVyLnVucmVmPy4oKTtcbiAgICBwcm9taXNlLnRoZW4oXG4gICAgICAodmFsdWUpID0+IHsgY2xlYXJUaW1lb3V0KHRpbWVyKTsgcmVzb2x2ZSh2YWx1ZSk7IH0sXG4gICAgICAoZXJyKSA9PiB7IGNsZWFyVGltZW91dCh0aW1lcik7IHJlamVjdChlcnIpOyB9LFxuICAgICk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFBvc3RncmVzIGhlYWx0aCBwcm9iZTogcmV0dXJucyBgeyBwb3N0Z3JlczogJ2Nvbm5lY3RlZCcgfWAgd2hlbiB0aGUgcG9vbCdzXG4gKiBjb25uZWN0aW9uIHRlc3Qgc3VjY2VlZHMsIGB7IHBvc3RncmVzOiAnZGlzY29ubmVjdGVkJyB9YCBvbiBhbnkgZXJyb3Igb3JcbiAqIHRpbWVvdXQgKHNvIGAvcmVhZHlgIGNvcnJlY3RseSByZXBvcnRzIDUwMykuIFVzZSBhcyAocGFydCBvZikgdGhlXG4gKiBgY2hlY2tEZXBlbmRlbmNpZXNgIG9wdGlvbiBvZiBgY3JlYXRlQXBwKClgIGZvciBhbnkgc2VydmljZSBiYWNrZWQgYnkgdGhlXG4gKiBzaGFyZWQgcGlwZWxpbmUtZGF0YSBEcml6emxlIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwb3N0Z3Jlc0hlYWx0aENoZWNrKHRpbWVvdXRNcyA9IDMwMDApOiBQcm9taXNlPEhlYWx0aFJlc3VsdD4ge1xuICB0cnkge1xuICAgIGF3YWl0IHdpdGhUaW1lb3V0KGdldENvbm5lY3Rpb24oKS50ZXN0Q29ubmVjdGlvbigpLCB0aW1lb3V0TXMsICdwb3N0Z3JlcyB0ZXN0Q29ubmVjdGlvbicpO1xuICAgIHJldHVybiB7IHBvc3RncmVzOiAnY29ubmVjdGVkJyB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyBwb3N0Z3JlczogJ2Rpc2Nvbm5lY3RlZCcgfTtcbiAgfVxufVxuXG4vKiogTWluaW1hbCBzaGFwZSBvZiBhbiBpb3JlZGlzIGNsaWVudCBuZWVkZWQgZm9yIGEgaGVhbHRoIFBJTkcuICovXG5pbnRlcmZhY2UgUmVkaXNMaWtlIHtcbiAgcGluZygpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKlxuICogU291cmNlIG9mIGEgcmVkaXMgY2xpZW50OiBlaXRoZXIgdGhlIGNsaWVudCBpdHNlbGYsIG9yIGEgKHN5bmMvYXN5bmMpIGdldHRlci5cbiAqIFRoZSBnZXR0ZXIgZm9ybSBzdXBwb3J0cyBCdWxsTVEncyBgcXVldWUuY2xpZW50YCAoYSBgUHJvbWlzZTxSZWRpc0NsaWVudD5gKVxuICogc28gYSBzZXJ2aWNlIGNhbiBwcm9iZSB0aGUgZXhhY3QgY29ubmVjdGlvbiBpdHMgcXVldWUgdXNlcyB3aXRob3V0IG9wZW5pbmdcbiAqIGEgc2Vjb25kIG9uZS5cbiAqL1xudHlwZSBSZWRpc0NsaWVudFNvdXJjZSA9IFJlZGlzTGlrZSB8ICgoKSA9PiBSZWRpc0xpa2UgfCBQcm9taXNlPFJlZGlzTGlrZT4pO1xuXG4vKipcbiAqIFJlZGlzIGhlYWx0aCBwcm9iZSBmYWN0b3J5OiBwYXNzIHRoZSBzZXJ2aWNlJ3MgRVhJU1RJTkcgaW9yZWRpcyBjb25uZWN0aW9uXG4gKiAob3IgYSBnZXR0ZXIgZm9yIGl0IOKAlCBlLmcuIGAoKSA9PiBxdWV1ZS5jbGllbnRgKSBhbmQgZ2V0IGJhY2sgYVxuICogYGNoZWNrRGVwZW5kZW5jaWVzYCBjYWxsYmFjayB0aGF0IGBQSU5HYHMgaXQuIE1pcnJvcnMgYG1vbmdvSGVhbHRoQ2hlY2tgIOKAlFxuICogaXQgcHJvYmVzIHRoZSByZWFsIGNvbm5lY3Rpb24gcmF0aGVyIHRoYW4gb3BlbmluZyBhIHRocm93YXdheSBvbmUgcGVyIGNhbGwuXG4gKiBUaGUgUElORyBpcyB0aW1lLWJveGVkIHNvIGEgZG93biByZWRpcyAod2hvc2Ugb2ZmbGluZSBxdWV1ZSB3b3VsZCBvdGhlcndpc2VcbiAqIGJ1ZmZlciB0aGUgY29tbWFuZCkgcmVwb3J0cyBgZGlzY29ubmVjdGVkYCBxdWlja2x5IGluc3RlYWQgb2YgaGFuZ2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGlzSGVhbHRoQ2hlY2soc291cmNlOiBSZWRpc0NsaWVudFNvdXJjZSwgdGltZW91dE1zID0gMjAwMCk6ICgpID0+IFByb21pc2U8SGVhbHRoUmVzdWx0PiB7XG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicgPyBhd2FpdCBzb3VyY2UoKSA6IHNvdXJjZTtcbiAgICAgIGF3YWl0IHdpdGhUaW1lb3V0KGNsaWVudC5waW5nKCksIHRpbWVvdXRNcywgJ3JlZGlzIHBpbmcnKTtcbiAgICAgIHJldHVybiB7IHJlZGlzOiAnY29ubmVjdGVkJyB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHsgcmVkaXM6ICdkaXNjb25uZWN0ZWQnIH07XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENvbWJpbmUgc2V2ZXJhbCBkZXBlbmRlbmN5IHByb2JlcyBpbnRvIG9uZSBgY2hlY2tEZXBlbmRlbmNpZXNgIGNhbGxiYWNrIHRoYXRcbiAqIHJ1bnMgdGhlbSBJTiBQQVJBTExFTCBhbmQgbWVyZ2VzIHRoZWlyIHJlc3VsdHMuIEEgc2xvdy9mYWlsZWQgcHJvYmUgY2FuJ3RcbiAqIGRlbGF5IHRoZSBvdGhlcnMgb3IgdGltZSBvdXQgdGhlIHdob2xlIGAvcmVhZHlgIHJlc3BvbnNlLlxuICpcbiAqIENPTlRSQUNUOiBlYWNoIHByb2JlIG11c3QgQ0FUQ0ggaW50ZXJuYWxseSBhbmQgUkVUVVJOIGl0cyBgeyBuYW1lOiBzdGF0dXMgfWBcbiAqIChhcyB0aGUgYnVpbHQtaW4gcG9zdGdyZXMvcmVkaXMvbW9uZ28gcHJvYmVzIGRvKS4gQSBwcm9iZSB0aGF0IFRIUk9XUyBpc1xuICogbWVyZ2VkIGFzIGB7fWAg4oCUIGl0cyBkZXBlbmRlbmN5IHRoZW4gdmFuaXNoZXMgZnJvbSB0aGUgbWFwIGFuZCBgL3JlYWR5YFxuICogcmVwb3J0cyAyMDAgd2l0aCB0aGUgZGVwIHNpbXBseSBhYnNlbnQgKGEgc2lsZW50IGZhbHNlLWhlYWx0aHkpLCByYXRoZXIgdGhhblxuICogc3VyZmFjaW5nIGl0IGFzIGBkaXNjb25uZWN0ZWRgLiBUaGUgYC5jYXRjaCgoKSA9PiAoe30pKWAgYmVsb3cgb25seSBleGlzdHMgc29cbiAqIG9uZSBtaXNiZWhhdmluZyBwcm9iZSBjYW4ndCB0YWtlIGRvd24gdGhlIG90aGVycywgTk9UIGFzIGEgc3Vic3RpdHV0ZSBmb3IgYVxuICogcHJvYmUgcmV0dXJuaW5nIGl0cyBvd24gZGlzY29ubmVjdGVkIHN0YXR1cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVIZWFsdGhDaGVja3MoXG4gIC4uLmNoZWNrczogQXJyYXk8KCkgPT4gUHJvbWlzZTxIZWFsdGhSZXN1bHQ+PlxuKTogKCkgPT4gUHJvbWlzZTxIZWFsdGhSZXN1bHQ+IHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoY2hlY2tzLm1hcCgoY2hlY2spID0+IGNoZWNrKCkuY2F0Y2goKCkgPT4gKHt9IGFzIEhlYWx0aFJlc3VsdCkpKSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIC4uLnJlc3VsdHMpIGFzIEhlYWx0aFJlc3VsdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBNaW5pbWFsIHNoYXBlIGV4cGVjdGVkIG9mIGEgbW9uZ29vc2UgY29ubmVjdGlvbiBmb3IgdGhlIGhlYWx0aCBwcm9iZS5cbiAqIEFjY2VwdHMgYG1vbmdvb3NlLmNvbm5lY3Rpb25gIGRpcmVjdGx5IHdpdGhvdXQgcmVxdWlyaW5nIG1vbmdvb3NlIGFzIGFcbiAqIGRlcGVuZGVuY3kgb2YgYXBpLXNlcnZlci5cbiAqL1xuaW50ZXJmYWNlIE1vbmdvb3NlQ29ubmVjdGlvbkxpa2Uge1xuICByZWFkeVN0YXRlOiBudW1iZXI7XG59XG5cbi8qKlxuICogTW9uZ29EQiBoZWFsdGggcHJvYmUgZmFjdG9yeTogcGFzcyBgbW9uZ29vc2UuY29ubmVjdGlvbmAgYW5kIGdldCBiYWNrIGFcbiAqIGBjaGVja0RlcGVuZGVuY2llc2AgY2FsbGJhY2sgdGhhdCByZXBvcnRzIGJhc2VkIG9uIG1vbmdvb3NlJ3MgcmVhZHlTdGF0ZS5cbiAqXG4gKiBNYXBwaW5nIChwZXIgbW9uZ29vc2UgZG9jcyk6IDE9Y29ubmVjdGVkLCAyPWNvbm5lY3RpbmcsIDM9ZGlzY29ubmVjdGluZyxcbiAqIGFueSBvdGhlciB2YWx1ZSAoMD1kaXNjb25uZWN0ZWQsIDk5PXVuaW5pdGlhbGl6ZWQpIGlzIHRyZWF0ZWQgYXNcbiAqICdkaXNjb25uZWN0ZWQnIHNvIGAvaGVhbHRoYCByZXR1cm5zIDUwMy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbmdvSGVhbHRoQ2hlY2soY29ubmVjdGlvbjogTW9uZ29vc2VDb25uZWN0aW9uTGlrZSk6ICgpID0+IFByb21pc2U8SGVhbHRoUmVzdWx0PiB7XG4gIHJldHVybiBhc3luYyAoKSA9PiAoe1xuICAgIG1vbmdvZGI6IGNvbm5lY3Rpb24ucmVhZHlTdGF0ZSA9PT0gMSA/ICdjb25uZWN0ZWQnXG4gICAgICA6IGNvbm5lY3Rpb24ucmVhZHlTdGF0ZSA9PT0gMiA/ICd1bmtub3duJyAvLyBjb25uZWN0aW5nOyB0cmVhdCBhcyB0cmFuc2llbnRcbiAgICAgICAgOiAnZGlzY29ubmVjdGVkJyxcbiAgfSk7XG59XG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLWNoZWNrcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9oZWFsdGgtY2hlY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBS2hFOzs7OztHQUtHO0FBQ0gsU0FBUyxXQUFXLENBQUksT0FBbUIsRUFBRSxFQUFVLEVBQUUsS0FBYTtJQUNwRSxPQUFPLElBQUksT0FBTyxDQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FDVixDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRCxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxTQUFTLEdBQUcsSUFBSTtJQUN4RCxJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUMxRixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBZUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUF5QixFQUFFLFNBQVMsR0FBRyxJQUFJO0lBQzFFLE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFDaEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEUsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxHQUFHLE1BQTBDO0lBRTdDLE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFDaEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQW1CLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFpQixDQUFDO0lBQ3ZELENBQUMsQ0FBQztBQUNKLENBQUM7QUFXRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFVBQWtDO0lBQ2pFLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sRUFBRSxVQUFVLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVztZQUNoRCxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQ0FBaUM7Z0JBQ3pFLENBQUMsQ0FBQyxjQUFjO0tBQ3JCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZ2V0Q29ubmVjdGlvbiB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGEnO1xuXG50eXBlIEhlYWx0aFN0YXR1cyA9ICdjb25uZWN0ZWQnIHwgJ2Rpc2Nvbm5lY3RlZCcgfCAndW5rbm93bic7XG50eXBlIEhlYWx0aFJlc3VsdCA9IFJlY29yZDxzdHJpbmcsIEhlYWx0aFN0YXR1cz47XG5cbi8qKlxuICogUmVqZWN0IGlmIGBwcm9taXNlYCBoYXNuJ3Qgc2V0dGxlZCB3aXRoaW4gYG1zYC4gQSBoZWFsdGgvcmVhZGluZXNzIHByb2JlXG4gKiBtdXN0IG5ldmVyIGhhbmcgdGhlIGAvcmVhZHlgIHJlc3BvbnNlIOKAlCBhIGRvd24gZGF0YXN0b3JlIChvciBhIEJ1bGxNUVxuICogaW9yZWRpcyBjbGllbnQgd2l0aCBgbWF4UmV0cmllc1BlclJlcXVlc3Q6IG51bGxgICsgYW4gb2ZmbGluZSBxdWV1ZSkgY2FuXG4gKiBsZWF2ZSBhIGBwaW5nKClgL3F1ZXJ5IHBlbmRpbmcgaW5kZWZpbml0ZWx5LCBzbyBldmVyeSBwcm9iZSBpcyB0aW1lLWJveGVkLlxuICovXG5mdW5jdGlvbiB3aXRoVGltZW91dDxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBtczogbnVtYmVyLCBsYWJlbDogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYCR7bGFiZWx9IHRpbWVkIG91dCBhZnRlciAke21zfW1zYCkpLCBtcyk7XG4gICAgdGltZXIudW5yZWY/LigpO1xuICAgIHByb21pc2UudGhlbihcbiAgICAgICh2YWx1ZSkgPT4geyBjbGVhclRpbWVvdXQodGltZXIpOyByZXNvbHZlKHZhbHVlKTsgfSxcbiAgICAgIChlcnIpID0+IHsgY2xlYXJUaW1lb3V0KHRpbWVyKTsgcmVqZWN0KGVycik7IH0sXG4gICAgKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUG9zdGdyZXMgaGVhbHRoIHByb2JlOiByZXR1cm5zIGB7IHBvc3RncmVzOiAnY29ubmVjdGVkJyB9YCB3aGVuIHRoZSBwb29sJ3NcbiAqIGNvbm5lY3Rpb24gdGVzdCBzdWNjZWVkcywgYHsgcG9zdGdyZXM6ICdkaXNjb25uZWN0ZWQnIH1gIG9uIGFueSBlcnJvciBvclxuICogdGltZW91dCAoc28gYC9yZWFkeWAgY29ycmVjdGx5IHJlcG9ydHMgNTAzKS4gVXNlIGFzIChwYXJ0IG9mKSB0aGVcbiAqIGBjaGVja0RlcGVuZGVuY2llc2Agb3B0aW9uIG9mIGBjcmVhdGVBcHAoKWAgZm9yIGFueSBzZXJ2aWNlIGJhY2tlZCBieSB0aGVcbiAqIHNoYXJlZCBwaXBlbGluZS1kYXRhIERyaXp6bGUgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBvc3RncmVzSGVhbHRoQ2hlY2sodGltZW91dE1zID0gMzAwMCk6IFByb21pc2U8SGVhbHRoUmVzdWx0PiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgd2l0aFRpbWVvdXQoZ2V0Q29ubmVjdGlvbigpLnRlc3RDb25uZWN0aW9uKCksIHRpbWVvdXRNcywgJ3Bvc3RncmVzIHRlc3RDb25uZWN0aW9uJyk7XG4gICAgcmV0dXJuIHsgcG9zdGdyZXM6ICdjb25uZWN0ZWQnIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHBvc3RncmVzOiAnZGlzY29ubmVjdGVkJyB9O1xuICB9XG59XG5cbi8qKiBNaW5pbWFsIHNoYXBlIG9mIGFuIGlvcmVkaXMgY2xpZW50IG5lZWRlZCBmb3IgYSBoZWFsdGggUElORy4gKi9cbmludGVyZmFjZSBSZWRpc0xpa2Uge1xuICBwaW5nKCk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBTb3VyY2Ugb2YgYSByZWRpcyBjbGllbnQ6IGVpdGhlciB0aGUgY2xpZW50IGl0c2VsZiwgb3IgYSAoc3luYy9hc3luYykgZ2V0dGVyLlxuICogVGhlIGdldHRlciBmb3JtIHN1cHBvcnRzIEJ1bGxNUSdzIGBxdWV1ZS5jbGllbnRgIChhIGBQcm9taXNlPFJlZGlzQ2xpZW50PmApXG4gKiBzbyBhIHNlcnZpY2UgY2FuIHByb2JlIHRoZSBleGFjdCBjb25uZWN0aW9uIGl0cyBxdWV1ZSB1c2VzIHdpdGhvdXQgb3BlbmluZ1xuICogYSBzZWNvbmQgb25lLlxuICovXG50eXBlIFJlZGlzQ2xpZW50U291cmNlID0gUmVkaXNMaWtlIHwgKCgpID0+IFJlZGlzTGlrZSB8IFByb21pc2U8UmVkaXNMaWtlPik7XG5cbi8qKlxuICogUmVkaXMgaGVhbHRoIHByb2JlIGZhY3Rvcnk6IHBhc3MgdGhlIHNlcnZpY2UncyBFWElTVElORyBpb3JlZGlzIGNvbm5lY3Rpb25cbiAqIChvciBhIGdldHRlciBmb3IgaXQg4oCUIGUuZy4gYCgpID0+IHF1ZXVlLmNsaWVudGApIGFuZCBnZXQgYmFjayBhXG4gKiBgY2hlY2tEZXBlbmRlbmNpZXNgIGNhbGxiYWNrIHRoYXQgYFBJTkdgcyBpdC4gTWlycm9ycyBgbW9uZ29IZWFsdGhDaGVja2Ag4oCUXG4gKiBpdCBwcm9iZXMgdGhlIHJlYWwgY29ubmVjdGlvbiByYXRoZXIgdGhhbiBvcGVuaW5nIGEgdGhyb3dhd2F5IG9uZSBwZXIgY2FsbC5cbiAqIFRoZSBQSU5HIGlzIHRpbWUtYm94ZWQgc28gYSBkb3duIHJlZGlzICh3aG9zZSBvZmZsaW5lIHF1ZXVlIHdvdWxkIG90aGVyd2lzZVxuICogYnVmZmVyIHRoZSBjb21tYW5kKSByZXBvcnRzIGBkaXNjb25uZWN0ZWRgIHF1aWNrbHkgaW5zdGVhZCBvZiBoYW5naW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkaXNIZWFsdGhDaGVjayhzb3VyY2U6IFJlZGlzQ2xpZW50U291cmNlLCB0aW1lb3V0TXMgPSAyMDAwKTogKCkgPT4gUHJvbWlzZTxIZWFsdGhSZXN1bHQ+IHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2xpZW50ID0gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHNvdXJjZSgpIDogc291cmNlO1xuICAgICAgYXdhaXQgd2l0aFRpbWVvdXQoY2xpZW50LnBpbmcoKSwgdGltZW91dE1zLCAncmVkaXMgcGluZycpO1xuICAgICAgcmV0dXJuIHsgcmVkaXM6ICdjb25uZWN0ZWQnIH07XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4geyByZWRpczogJ2Rpc2Nvbm5lY3RlZCcgfTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQ29tYmluZSBzZXZlcmFsIGRlcGVuZGVuY3kgcHJvYmVzIGludG8gb25lIGBjaGVja0RlcGVuZGVuY2llc2AgY2FsbGJhY2sgdGhhdFxuICogcnVucyB0aGVtIElOIFBBUkFMTEVMIGFuZCBtZXJnZXMgdGhlaXIgcmVzdWx0cy4gQSBzbG93L2ZhaWxlZCBwcm9iZSBjYW4ndFxuICogZGVsYXkgdGhlIG90aGVycyBvciB0aW1lIG91dCB0aGUgd2hvbGUgYC9yZWFkeWAgcmVzcG9uc2UuXG4gKlxuICogQ09OVFJBQ1Q6IGVhY2ggcHJvYmUgbXVzdCBDQVRDSCBpbnRlcm5hbGx5IGFuZCBSRVRVUk4gaXRzIGB7IG5hbWU6IHN0YXR1cyB9YFxuICogKGFzIHRoZSBidWlsdC1pbiBwb3N0Z3Jlcy9yZWRpcy9tb25nbyBwcm9iZXMgZG8pLiBBIHByb2JlIHRoYXQgVEhST1dTIGlzXG4gKiBtZXJnZWQgYXMgYHt9YCDigJQgaXRzIGRlcGVuZGVuY3kgdGhlbiB2YW5pc2hlcyBmcm9tIHRoZSBtYXAgYW5kIGAvcmVhZHlgXG4gKiByZXBvcnRzIDIwMCB3aXRoIHRoZSBkZXAgc2ltcGx5IGFic2VudCAoYSBzaWxlbnQgZmFsc2UtaGVhbHRoeSksIHJhdGhlciB0aGFuXG4gKiBzdXJmYWNpbmcgaXQgYXMgYGRpc2Nvbm5lY3RlZGAuIFRoZSBgLmNhdGNoKCgpID0+ICh7fSkpYCBiZWxvdyBvbmx5IGV4aXN0cyBzb1xuICogb25lIG1pc2JlaGF2aW5nIHByb2JlIGNhbid0IHRha2UgZG93biB0aGUgb3RoZXJzLCBOT1QgYXMgYSBzdWJzdGl0dXRlIGZvciBhXG4gKiBwcm9iZSByZXR1cm5pbmcgaXRzIG93biBkaXNjb25uZWN0ZWQgc3RhdHVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUhlYWx0aENoZWNrcyhcbiAgLi4uY2hlY2tzOiBBcnJheTwoKSA9PiBQcm9taXNlPEhlYWx0aFJlc3VsdD4+XG4pOiAoKSA9PiBQcm9taXNlPEhlYWx0aFJlc3VsdD4ge1xuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChjaGVja3MubWFwKChjaGVjaykgPT4gY2hlY2soKS5jYXRjaCgoKSA9PiAoe30gYXMgSGVhbHRoUmVzdWx0KSkpKTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgLi4ucmVzdWx0cykgYXMgSGVhbHRoUmVzdWx0O1xuICB9O1xufVxuXG4vKipcbiAqIE1pbmltYWwgc2hhcGUgZXhwZWN0ZWQgb2YgYSBtb25nb29zZSBjb25uZWN0aW9uIGZvciB0aGUgaGVhbHRoIHByb2JlLlxuICogQWNjZXB0cyBgbW9uZ29vc2UuY29ubmVjdGlvbmAgZGlyZWN0bHkgd2l0aG91dCByZXF1aXJpbmcgbW9uZ29vc2UgYXMgYVxuICogZGVwZW5kZW5jeSBvZiBhcGktc2VydmVyLlxuICovXG5pbnRlcmZhY2UgTW9uZ29vc2VDb25uZWN0aW9uTGlrZSB7XG4gIHJlYWR5U3RhdGU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBNb25nb0RCIGhlYWx0aCBwcm9iZSBmYWN0b3J5OiBwYXNzIGBtb25nb29zZS5jb25uZWN0aW9uYCBhbmQgZ2V0IGJhY2sgYVxuICogYGNoZWNrRGVwZW5kZW5jaWVzYCBjYWxsYmFjayB0aGF0IHJlcG9ydHMgYmFzZWQgb24gbW9uZ29vc2UncyByZWFkeVN0YXRlLlxuICpcbiAqIE1hcHBpbmcgKHBlciBtb25nb29zZSBkb2NzKTogMT1jb25uZWN0ZWQsIDI9Y29ubmVjdGluZywgMz1kaXNjb25uZWN0aW5nLFxuICogYW55IG90aGVyIHZhbHVlICgwPWRpc2Nvbm5lY3RlZCwgOTk9dW5pbml0aWFsaXplZCkgaXMgdHJlYXRlZCBhc1xuICogJ2Rpc2Nvbm5lY3RlZCcgc28gYC9oZWFsdGhgIHJldHVybnMgNTAzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9uZ29IZWFsdGhDaGVjayhjb25uZWN0aW9uOiBNb25nb29zZUNvbm5lY3Rpb25MaWtlKTogKCkgPT4gUHJvbWlzZTxIZWFsdGhSZXN1bHQ+IHtcbiAgcmV0dXJuIGFzeW5jICgpID0+ICh7XG4gICAgbW9uZ29kYjogY29ubmVjdGlvbi5yZWFkeVN0YXRlID09PSAxID8gJ2Nvbm5lY3RlZCdcbiAgICAgIDogY29ubmVjdGlvbi5yZWFkeVN0YXRlID09PSAyID8gJ3Vua25vd24nIC8vIGNvbm5lY3Rpbmc7IHRyZWF0IGFzIHRyYW5zaWVudFxuICAgICAgICA6ICdkaXNjb25uZWN0ZWQnLFxuICB9KTtcbn1cbiJdfQ==