@dbx-tools/appkit-mastra 0.6.217 → 0.6.219

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/src/config.js CHANGED
@@ -229,4 +229,4 @@ export const MASTRA_CONFIG_SCHEMA = {
229
229
  },
230
230
  },
231
231
  };
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQUtuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUl4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0FBRXpEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbUJBQW1CLENBQUM7QUFFekQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQzNELHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFB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VCxxSEFBcUg7U0FDeEg7UUFDRCxhQUFhLEVBQUU7WUFDYixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxxSkFBcUo7U0FDeEo7UUFDRCxRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxxTEFBcUw7U0FDeEw7UUFDRCxHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQzNCLFdBQVcsRUFDVCw0SkFBNEo7U0FDL0o7UUFDRCxhQUFhLEVBQUU7WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLDJFQUEyRTtZQUMzRSwwRUFBMEU7WUFDMUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDekIsV0FBVyxFQUNULDZmQUE2ZjtTQUNoZ0I7UUFDRCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDeEIsV0FBVyxFQUNULHFPQUFxTztTQUN4TztRQUNELEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULDBJQUEwSTtTQUM3STtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGx1Z2luIGNvbmZpZ3VyYXRpb24gdHlwZXMgYW5kIHNoYXJlZCBgUmVxdWVzdENvbnRleHRgIGtleXMuXG4gKlxuICogT3ducyB0aGUgdHlwZWQge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZ30gKHRoZSBwbHVnaW4ncyBzbGljZSBvZiBBcHBLaXRcbiAqIGNvbmZpZykgYW5kIHtAbGluayBNQVNUUkFfQ09ORklHX1NDSEVNQX0sIHRoZSBKU09OIFNjaGVtYSB0aGUgbWFuaWZlc3RcbiAqIHB1Ymxpc2hlcyBmb3IgaXQgc28gc2NhZmZvbGRpbmcgdG9vbHMgYW5kIGFnZW50cyBjYW4gcmVhZCB0aGUgb3B0aW9uIHNldC5cbiAqXG4gKiBQcmVjZWRlbmNlIHBlciBmaWVsZCBpcyBleHBsaWNpdCBwbHVnaW4gY29uZmlnLCB0aGVuIHRoZSBlbnZpcm9ubWVudFxuICogdmFyaWFibGUgbmFtZWQgb24gdGhlIGZpZWxkLCB0aGVuIGEgYnVpbHQtaW4gZGVmYXVsdC5cbiAqXG4gKiBLZXB0IGluIGEgbGVhZiBtb2R1bGUgc28gYHBsdWdpbi50c2AsIGBzZXJ2ZXIudHNgLCBgbW9kZWwudHNgLCBhbmRcbiAqIGBtZW1vcnkudHNgIGNhbiBpbXBvcnQgdGhlbSB3aXRob3V0IGNyZWF0aW5nIGEgY3ljbGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGdldEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUgQmFzZVBsdWdpbkNvbmZpZywgdHlwZSBDb25maWdTY2hlbWEgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBhcHBraXQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRDb250ZXh0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL2FnZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB7IE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksIE1BU1RSQV9USFJFQURfSURfS0VZIH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgUGdWZWN0b3JDb25maWcsIFBvc3RncmVzU3RvcmVDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9wZ1wiO1xuXG5pbXBvcnQgdHlwZSB7IE1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhVG9vbHMgfSBmcm9tIFwiLi9hZ2VudHMudHNcIjtcbmltcG9ydCB0eXBlIHsgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9nZW5pZS50c1wiO1xuaW1wb3J0IHsgSURFTlRJVFlfTU9ERVMsIHR5cGUgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vaWRlbnRpdHkudHNcIjtcbmltcG9ydCB0eXBlIHsgUmVtb3RlU2tpbGxzT3B0aW9uIH0gZnJvbSBcIi4vcmVtb3RlLXNraWxscy50c1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhYnJpY2tzV29ya3NwYWNlU2FuZGJveE9wdGlvbnMgfSBmcm9tIFwiLi9zYW5kYm94LnRzXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgdW5kZXIgd2hpY2gge0BsaW5rIE1hc3RyYVNlcnZlcn0gc3RvcmVzIHRoZVxuICogcmVzb2x2ZWQgQXBwS2l0IHVzZXIuIGBtb2RlbC50c2AgcmVhZHMgaXQgdG8gbWludCB1c2VyLXNjb3BlZFxuICogRGF0YWJyaWNrcyB0b2tlbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9LRVkgPSBcIm1hc3RyYV9fdXNlclwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyBmb3IgQXBwS2l0IHVzZXIgbWV0YWRhdGEgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFN1cmZhY2VkIGFzIHRyYWNlIG1ldGFkYXRhIHZpYVxuICoge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSBzbyB0cmFjZXMgYXJlIGZpbHRlcmFibGUgYnkgd2hvXG4gKiBpc3N1ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBsZWFraW5nIHRoZSBmdWxsIHVzZXIgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfTkFNRV9LRVkgPSBcIm1hc3RyYV9fdXNlck5hbWVcIjtcbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9FTUFJTF9LRVkgPSBcIm1hc3RyYV9fdXNlckVtYWlsXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgZm9yIHRoZSBwZXItSFRUUC1yZXF1ZXN0IGlkIHN0YW1wZWQgYnlcbiAqIHtAbGluayBNYXN0cmFTZXJ2ZXJ9LiBSZWFkcyBgWC1SZXF1ZXN0LUlkYCBmcm9tIHRoZSBpbmNvbWluZ1xuICogaGVhZGVycyB3aGVuIHByZXNlbnQgKHNvIGFuIHVwc3RyZWFtIGxvYWQgYmFsYW5jZXIgLyBBUEkgZ2F0ZXdheVxuICogY2FuIGtlZXAgaXRzIHRyYWNlIGNvcnJlbGF0aW9uKSwgZmFsbHMgYmFjayB0byBhIGZyZXNobHkgbWludGVkXG4gKiBVVUlELiBFY2hvZWQgYmFjayBvbiB0aGUgcmVzcG9uc2UgYW5kIHN1cmZhY2VkIG9uIGV2ZXJ5IHNwYW4gdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIGxvZ3MgYW5kIHRyYWNlcyBzaGFyZSBhXG4gKiBqb2luIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9SRVFVRVNUX0lEX0tFWSA9IFwibWFzdHJhX19yZXF1ZXN0SWRcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgT0F1dGggc2NvcGVzIHBhcnNlZCBmcm9tIHRoZSBmb3J3YXJkZWRcbiAqIGFjY2VzcyB0b2tlbiBieSB7QGxpbmsgTWFzdHJhU2VydmVyLmNvbmZpZ3VyZVJlcXVlc3RDb250ZXh0U2NvcGVzfS5cbiAqIFdvcmtzcGFjZSBtb3VudHMgdGhhdCB0b3VjaCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBmaWxlcyByZXF1aXJlXG4gKiBgd29ya3NwYWNlYCBvciBgYWxsLWFwaXNgIGluIHRoaXMgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9TQ09QRVNfS0VZID0gXCJtYXN0cmFfX3Njb3Blc1wiO1xuXG4vKipcbiAqIENhbm9uaWNhbCBsaXN0IG9mIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB3ZSB3YW50IE1hc3RyYSB0byBleHRyYWN0XG4gKiBhcyBtZXRhZGF0YSBvbiBldmVyeSBvYnNlcnZhYmlsaXR5IHNwYW4gKGFnZW50IHJ1bnMsIG1vZGVsIGNhbGxzLFxuICogdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIGh0dHBzOi8vbWFzdHJhLmFpL2RvY3Mvb2JzZXJ2YWJpbGl0eS90cmFjaW5nL292ZXJ2aWV3I2F1dG9tYXRpYy1tZXRhZGF0YS1mcm9tLXJlcXVlc3Rjb250ZXh0fTpcbiAqIHBhc3NlZCB2ZXJiYXRpbSBpbnRvIGBPYnNlcnZhYmlsaXR5LmNvbmZpZ3NbKl0ucmVxdWVzdENvbnRleHRLZXlzYCxcbiAqIHNvIGFueSBrZXkgbGlzdGVkIGhlcmUgaXMgcmVhZCBmcm9tIGBSZXF1ZXN0Q29udGV4dGAgYXQgdHJhY2VcbiAqIHN0YXJ0IGFuZCBhdHRhY2hlZCBhcyBzY2FsYXIgc3BhbiBtZXRhZGF0YS4gS2VlcCB0aGUgc2V0IHRvIHBsYWluXG4gKiBzY2FsYXJzIC0gbmV2ZXIgaW5jbHVkZSB7QGxpbmsgTUFTVFJBX1VTRVJfS0VZfSAoaXQgY2FycmllcyB0aGVcbiAqIGZ1bGwgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggYSBgV29ya3NwYWNlQ2xpZW50YCByZWZlcmVuY2UpLlxuICpcbiAqIE9yZGVyIGlzIHB1cmVseSBjb3NtZXRpYzsgTWFzdHJhIGRlLWR1cGVzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksXG4gIE1BU1RSQV9USFJFQURfSURfS0VZLFxuICBNQVNUUkFfUkVRVUVTVF9JRF9LRVksXG4gIE1BU1RSQV9VU0VSX05BTUVfS0VZLFxuICBNQVNUUkFfVVNFUl9FTUFJTF9LRVksXG4gIC8vIE1vZGVsIG92ZXJyaWRlIGtleSBpcyBvd25lZCBieSBgc2VydmluZy50c2A7IHNwZWxsZWQgaW5saW5lIGhlcmVcbiAgLy8gc28gdGhpcyBtb2R1bGUgc3RheXMgbGVhZi1sZXZlbCAobm8gY3ljbGVzIHdpdGggYHNlcnZpbmcudHNgKS5cbiAgXCJtYXN0cmFfX21vZGVsX292ZXJyaWRlXCIsXG5dO1xuXG4vKiogQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHBsdXMgdGhlIGNhbm9uaWNhbCB1c2VyIGlkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgaWQ6IHN0cmluZztcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBpZGVudGl0eSBmb3IgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0OiB0aGUgT0JPIHVzZXIgaWQgb24gYVxuICogdXNlci1zY29wZWQgY2FsbCwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoY29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFwidXNlcklkXCIgaW4gY29udGV4dCA/IGNvbnRleHQudXNlcklkIDogY29udGV4dC5zZXJ2aWNlVXNlcklkO1xufVxuXG4vKipcbiAqIFdobyBhIHR1cm4gaXMgQVRUUklCVVRFRCB0bywgd2hpY2ggaXMgbm90IGFsd2F5cyB3aG9zZSBEYXRhYnJpY2tzIGNyZWRlbnRpYWxcbiAqIHJ1bnMgaXQuIEFuIE9CTyBjb250ZXh0J3Mgb3duIHVzZXIgaWQgaXMgYXV0aG9yaXRhdGl2ZS4gVW5kZXIgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCwgZXZlcnkgY2FsbGVyIHNoYXJlcyBvbmUgY3JlZGVudGlhbCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlkIGlzXG4gKiB3aGF0IGtlZXBzIG1lbW9yeSB0aHJlYWRzIGFuZCBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2VzIGRpc3RpbmN0OyB0aGUgc2VydmljZVxuICogcHJpbmNpcGFsIGlkIGlzIHRoZSBmbG9vciB3aGVuIG5vIHVzZXIgd2FzIGZvcndhcmRlZC5cbiAqXG4gKiBUaGlzIHJ1bGUgaGFzIHRvIGJlIGlkZW50aWNhbCBldmVyeXdoZXJlIGEgY2FjaGUga2V5IGlzIGJ1aWx0LCBzbyBib3RoIHRoZVxuICogd3JpdGUgc2lkZSAodGhlIGBSZXF1ZXN0Q29udGV4dGAgdXNlciBzdGFtcGVkIGJ5IGBzdGFtcFJlcXVlc3RDb250ZXh0VXNlcmApXG4gKiBhbmQgdGhlIHJlYWQgc2lkZSAodGhlIHBsdWdpbidzIG93biBBcHBLaXQgcm91dGVzLCB3aGljaCBoYXZlIGEgcmVxdWVzdCBidXRcbiAqIG5vIGBSZXF1ZXN0Q29udGV4dGApIGRlcml2ZSB0aGVpciBrZXkgZnJvbSB0aGlzIG9uZSBmdW5jdGlvbi4gV2hlbiB0aGUgdHdvXG4gKiBkaXNhZ3JlZWQsIGEgY2hhcnQgd3JpdHRlbiB1bmRlciB0aGUgZm9yd2FyZGVkIHVzZXIgaWQgd2FzIHJlYWQgYmFjayB1bmRlclxuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIGFuZCB0aGUgZW1iZWQgcm91dGUgYW5zd2VyZWQgNDA0LCB3aGljaCB0aGUgY2hhdCBVSVxuICogcmVuZGVycyBhcyBhbiBleHBpcmVkIGNoYXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlZFVzZXJJZChcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlLFxuICBmb3J3YXJkZWRVc2VySWQ/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBpZiAoXCJpc1VzZXJDb250ZXh0XCIgaW4gZXhlY3V0aW9uQ29udGV4dCkgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG4gIHJldHVybiBmb3J3YXJkZWRVc2VySWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChleGVjdXRpb25Db250ZXh0KTtcbn1cblxuLyoqXG4gKiBJZGVudGl0eSBldmVyeSBwZXItdXNlciBjYWNoZSBlbnRyeSBpcyBuYW1lc3BhY2VkIHVuZGVyLCBzbyBhbiBPQk8gcmVzdWx0XG4gKiBjYW5ub3QgYmUgcmVhZCBiYWNrIGJ5IGFub3RoZXIgY2FsbGVyLlxuICpcbiAqIFByZWZlcnMgdGhlIHtAbGluayBVc2VyfSB0aGF0IHtAbGluayBNYXN0cmFTZXJ2ZXJ9IHN0YW1wcyBvbiB0aGUgcmVxdWVzdFxuICogY29udGV4dCwgd2hvc2UgaWQgYWxyZWFkeSBmb2xsb3dzIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfS4gVGhlIE1DUCB0cmFuc3BvcnRcbiAqIHJvdXRlcyBkbyBub3QgdGhyZWFkIHRoYXQgY29udGV4dCBpbnRvIHRvb2wgZXhlY3V0aW9uLCBzbyB0aG9zZSBmYWxsIGJhY2sgdG9cbiAqIHRoZSBhbWJpZW50IGV4ZWN1dGlvbiBjb250ZXh0ICh0aGUgYWN0aXZlIE9CTyBzY29wZSwgb3IgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCkuIEEgY2FsbGVyIGhvbGRpbmcgYW4gZXhwcmVzcyByZXF1ZXN0IHNob3VsZCBidWlsZCBpdHMga2V5IGZyb21cbiAqIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfSBpbnN0ZWFkLCBzbyB0aGUgZm9yd2FyZGVkIHVzZXIgaXMgbm90IGxvc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXNlcktleShyZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgdXNlciA9IHJlcXVlc3RDb250ZXh0Py5nZXQoTUFTVFJBX1VTRVJfS0VZKSBhcyBVc2VyIHwgdW5kZWZpbmVkO1xuICByZXR1cm4gdXNlcj8uaWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChnZXRFeGVjdXRpb25Db250ZXh0KCkpO1xufVxuXG4vKiogUGdWZWN0b3IgY29uZmlnIHdpdGggYW4gb3B0aW9uYWwgTWFzdHJhIHN0b3JlIGlkLiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhTWVtb3J5Q29uZmlnID0gUGdWZWN0b3JDb25maWcgJiB7XG4gIGlkPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBGaW5lLWdyYWluZWQgY29udHJvbCBmb3IgdGhlIG9wdGlvbmFsIE1DUCBzZXJ2ZXIgZXhwb3N1cmVcbiAqICh7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLm1jcH0pLiBFdmVyeSBmaWVsZCBpcyBvcHRpb25hbDsgdGhlIG9iamVjdFxuICogZm9ybSBvbmx5IG5lZWRzIHRvIHNldCB3aGF0IGRpZmZlcnMgZnJvbSB0aGUgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhTWNwQ29uZmlnIHtcbiAgLyoqXG4gICAqIFNlcnZlciBpZCB1c2VkIGluIHRoZSByb3V0ZSBwYXRoIChgL21jcC88c2VydmVySWQ+Ly4uLmApIGFuZCBhcyB0aGVcbiAgICogTUNQIHJlZ2lzdHJ5IGlkLiBEZWZhdWx0cyB0byB0aGUgcGx1Z2luJ3MgcmVnaXN0ZXJlZCBuYW1lLlxuICAgKi9cbiAgc2VydmVySWQ/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYFwiPGRpc3BsYXlOYW1lPiBNQ1BcImAuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBTZW1hbnRpYyB2ZXJzaW9uIGFkdmVydGlzZWQgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGBcIjEuMC4wXCJgLiAqL1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBvc2UgZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCBhcyBhbiBgYXNrXzxhZ2VudElkPmAgTUNQIHRvb2wuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYCAtIHRoaXMgaXMgdGhlIFwibGV2ZXJhZ2UgdGhlIE1hc3RyYSBhZ2VudHMgb3ZlclxuICAgKiBNQ1BcIiBiZWhhdmlvciBtb3N0IGNhbGxlcnMgd2FudC5cbiAgICovXG4gIGFnZW50cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbHNvIGV4cG9zZSB0aGUgcGx1Z2luJ3MgYW1iaWVudCB0b29scyAodGhlIGJ1aWx0LWluIGByZW5kZXJfZGF0YWBcbiAgICogcGx1cyBhbnl0aGluZyBpbiBgY29uZmlnLnRvb2xzYCkgYXMgTUNQIHRvb2xzLiBEZWZhdWx0cyB0byBgZmFsc2VgOlxuICAgKiB0aGUgYW1iaWVudCB0b29scyBhc3N1bWUgYW4gaW4tcHJvY2VzcyBjaGF0IHR1cm4gKHRoZXkgcHVibGlzaFxuICAgKiB3cml0ZXIgZXZlbnRzIHRoZSBjaGF0IFVJIGNvbnN1bWVzKSwgc28gdGhleSBhcmVuJ3QgdXNlZnVsIHRvIGFcbiAgICogc3RhbmRhbG9uZSBNQ1AgY2xpZW50LiBUdXJuIHRoaXMgb24gb25seSB3aGVuIHRob3NlIHRvb2xzIGFyZSBzYWZlXG4gICAqIHRvIGNhbGwgb3V0LW9mLWJhbmQuXG4gICAqL1xuICB0b29scz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeHRyYSB0b29scyB0byBleHBvc2Ugb3ZlciBNQ1AgYmV5b25kIHRoZSBhZ2VudCAvIGFtYmllbnQgc2V0cy5cbiAgICogVXNlIHRoaXMgZm9yIHRvb2xzIHdyaXR0ZW4gc3BlY2lmaWNhbGx5IGZvciBNQ1AgY29uc3VtZXJzLlxuICAgKi9cbiAgZXh0cmFUb29scz86IE1hc3RyYVRvb2xzO1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBhY2NlcHRlZCBieSB0aGUgTWFzdHJhIEFwcEtpdCBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RyYVBsdWdpbkNvbmZpZyBleHRlbmRzIEJhc2VQbHVnaW5Db25maWcge1xuICAvKiogTWFzdHJhIE9wZW5BSS1jb21wYXRpYmxlIHByb3ZpZGVyIGlkLiBEZWZhdWx0cyB0byBgXCJkYXRhYnJpY2tzXCJgOyBubyBlbnYgZmFsbGJhY2suICovXG4gIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcy9tZXNzYWdlcy4gYHRydWVgIHJldXNlcyB0aGVcbiAgICogYGxha2ViYXNlYCBwbHVnaW4ncyBwb29sOyBhbiBvYmplY3Qgb3BlbnMgYSBkZWRpY2F0ZWQgc3RvcmUuXG4gICAqL1xuICBzdG9yYWdlPzogYm9vbGVhbiB8IFBvc3RncmVzU3RvcmVDb25maWc7XG4gIC8qKlxuICAgKiBQZ1ZlY3RvciBzdG9yZSBmb3IgTWFzdHJhIG1lbW9yeSByZWNhbGwuIGB0cnVlYCByZXVzZXMgdGhlXG4gICAqIGBsYWtlYmFzZWAgcGx1Z2luJ3MgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgZGVkaWNhdGVkIHN0b3JlLlxuICAgKi9cbiAgbWVtb3J5PzogYm9vbGVhbiB8IE1hc3RyYU1lbW9yeUNvbmZpZztcbiAgLyoqXG4gICAqIFNhbmRib3ggZm9yIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzLiBEZWZhdWx0cyB0byBEYXRhYnJpY2tzIFNhbmRib3guXG4gICAqIGB0cnVlYCBzZWxlY3RzIERhdGFicmlja3Mgd2l0aCBkZWZhdWx0cywgYW4gb2JqZWN0IGNvbmZpZ3VyZXMgaXRzIGxpZmVjeWNsZSxcbiAgICogYW5kIGBmYWxzZWAgZGlzYWJsZXMgd29ya3NwYWNlIGNvbW1hbmQgZXhlY3V0aW9uLiBBbiBhZ2VudCB3aXRoIGFuIGV4cGxpY2l0XG4gICAqIGN1c3RvbSBgd29ya3NwYWNlYCBrZWVwcyB0aGF0IHdvcmtzcGFjZSBhbmQgaXRzIHNhbmRib3guXG4gICAqL1xuICBzYW5kYm94PzogYm9vbGVhbiB8IFwiZGF0YWJyaWNrc1wiIHwgXCJtb250eVwiIHwgRGF0YWJyaWNrc1dvcmtzcGFjZVNhbmRib3hPcHRpb25zO1xuICAvKipcbiAgICogQ29kZS1kZWZpbmVkIGFnZW50cy4gQWNjZXB0cyB0aHJlZSBzaGFwZXMgZm9yIGNvbnZlbmllbmNlOlxuICAgKlxuICAgKiAtICoqUmVjb3JkKio6IGB7IGFuYWx5c3Q6IGRlZiwgaGVscGVyOiBkZWYgfWAgLSBrZXlzIGJlY29tZSB0aGVcbiAgICogICByZWdpc3RlcmVkIGlkcyBhbmQgdGhlIGZpcnN0IGtleSBpcyB0aGUgZGVmYXVsdC5cbiAgICogLSAqKlNpbmdsZSBkZWZpbml0aW9uKio6IGBkZWZgIC0gcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBcImRlZmF1bHRcImAgd2hlbiBgbmFtZWAgaXMgb21pdHRlZCkgYW5kXG4gICAqICAgYXV0b21hdGljYWxseSBtYXJrZWQgYXMgdGhlIGRlZmF1bHQgYWdlbnQuXG4gICAqIC0gKipBcnJheSoqOiBgW2RlZjEsIGRlZjJdYCAtIGVhY2ggcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBhZ2VudF8ke2l9YCB3aGVuIGBuYW1lYCBpcyBvbWl0dGVkKTtcbiAgICogICB0aGUgZmlyc3QgZW50cnkgaXMgdGhlIGRlZmF1bHQuXG4gICAqXG4gICAqIEVhY2ggZW50cnkgYmVjb21lcyBhIE1hc3RyYSBgQWdlbnRgIHJlYWNoYWJsZSBhdFxuICAgKiBgL2FwaS88cGx1Z2luPi9yb3V0ZS9jaGF0LzxpZD5gICh0aGUgY2hhdCByb3V0ZSBhbHNvIG1hdGNoZXNcbiAgICogYDphZ2VudElkYCkuIFdoZW4gYGFnZW50c2AgaXMgb21pdHRlZCBlbnRpcmVseSwgdGhlIHBsdWdpblxuICAgKiByZWdpc3RlcnMgYSBzaW5nbGUgYnVpbHQtaW4gYGRlZmF1bHRgIGFuYWx5c3Qgc28gdGhlIGJhcmVcbiAgICogYG1hc3RyYSgpYCBjYWxsIHN0aWxsIG1vdW50cyBhIHdvcmtpbmcgY2hhdCBlbmRwb2ludC5cbiAgICpcbiAgICogQGV4YW1wbGUgU2luZ2xlLWFnZW50IHNob3J0aGFuZFxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgQXJyYXlcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IFtcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJhbmFseXN0XCIsIGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJoZWxwZXJcIiwgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgIF0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgUmVjb3JkIChleHBsaWNpdCBpZHMpXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiB7XG4gICAqICAgICBhbmFseXN0OiBjcmVhdGVBZ2VudCh7IGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGhlbHBlcjogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgfSxcbiAgICogICBkZWZhdWx0QWdlbnQ6IFwiYW5hbHlzdFwiLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhZ2VudHM/OiBSZWNvcmQ8c3RyaW5nLCBNYXN0cmFBZ2VudERlZmluaXRpb24+IHwgTWFzdHJhQWdlbnREZWZpbml0aW9uIHwgTWFzdHJhQWdlbnREZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBBbWJpZW50IHRvb2xzIHNwcmVhZCBpbnRvIGV2ZXJ5IHJlZ2lzdGVyZWQgYWdlbnQncyB0b29scyByZWNvcmQ7XG4gICAqIHBlci1hZ2VudCB0b29scyB3aW4gb24ga2V5IGNvbGxpc2lvbi4gVXNlIGZvciBhIHNtYWxsIHNoYXJlZFxuICAgKiBsaWJyYXJ5OyBmb3IgcGVyLWFnZW50IHRvb2xzIHNldCBgYWdlbnRzW2lkXS50b29sc2AgaW5zdGVhZC5cbiAgICovXG4gIHRvb2xzPzogTWFzdHJhVG9vbHM7XG4gIC8qKlxuICAgKiBBZ2VudCBpZCB1c2VkIHdoZW4gdGhlIGNsaWVudCBkb2Vzbid0IHNwZWNpZnkgb25lICh0aGUgYmFyZSxcbiAgICogdW4tc3VmZml4ZWQgaGlzdG9yeSAvIHN1Z2dlc3Rpb25zIHJvdXRlcyByZXNvbHZlIHRvIGl0KS5cbiAgICogRGVmYXVsdHMgdG8gdGhlIGZpcnN0IGtleSBpbiBgYWdlbnRzYCAob3IgYFwiZGVmYXVsdFwiYCB3aGVuXG4gICAqIGBhZ2VudHNgIGlzIG9taXR0ZWQpLiBNdXN0IG1hdGNoIGFuIGlkIGluIGBhZ2VudHNgIHdoZW4gYm90aCBhcmVcbiAgICogc2V0OyBhIG1pc21hdGNoIHRocm93cyBhdCBzZXR1cCB3aXRoIHRoZSBhdmFpbGFibGUgY2FuZGlkYXRlcy5cbiAgICovXG4gIGRlZmF1bHRBZ2VudD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBsdWdpbi1sZXZlbCBkZWZhdWx0IG1vZGVsIGFwcGxpZWQgdG8gZXZlcnkgYWdlbnQgdGhhdCBvbWl0cyBpdHNcbiAgICogb3duIGBtb2RlbGAuIE1pcnJvcnMgQXBwS2l0J3MgYGFnZW50cyh7IGRlZmF1bHRNb2RlbCB9KWAuXG4gICAqXG4gICAqIC0gYHN0cmluZ2A6IHNob3J0aGFuZCBmb3IgXCJ1c2UgdGhlIE9CTyBhdXRvLXJlc29sdmVyIGJ1dCBzd2FwIHRoZVxuICAgKiAgIGBtb2RlbElkYFwiIChlLmcuIGBcImRhdGFicmlja3MtY2xhdWRlLXNvbm5ldC00LTZcImApLlxuICAgKiAtIEFueSBvdGhlciBNYXN0cmEgYER5bmFtaWNBcmd1bWVudDxNYXN0cmFNb2RlbENvbmZpZz5gOiBwYXNzZWRcbiAgICogICB0aHJvdWdoIHZlcmJhdGltLiBVc2UgdGhpcyB3aGVuIHlvdSBuZWVkIGZ1bGwgY29udHJvbCBvdmVyIGF1dGhcbiAgICogICBvciBgcHJvdmlkZXJJZGAuXG4gICAqXG4gICAqIFJlc29sdXRpb24gb3JkZXIgcGVyIGFnZW50OiBgZGVmLm1vZGVsYCDihpIgYGRlZmF1bHRNb2RlbGAg4oaSXG4gICAqIGBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRWAg4oaSIGJ1aWx0LWluIGAvc2VydmluZy1lbmRwb2ludHNgXG4gICAqIHJlc29sdmVyLlxuICAgKi9cbiAgZGVmYXVsdE1vZGVsPzogQWdlbnRDb25maWdbXCJtb2RlbFwiXSB8IHN0cmluZztcbiAgLyoqXG4gICAqIEZ1enp5LW1hdGNoIGxvb3NlIG1vZGVsIG5hbWVzIChgXCJjbGF1ZGUgc29ubmV0XCJgKSBhZ2FpbnN0IHRoZSB3b3Jrc3BhY2Unc1xuICAgKiBNb2RlbCBTZXJ2aW5nIGVuZHBvaW50cy4gRGVmYXVsdHMgdG8gYHRydWVgOyBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIFNldCBgZmFsc2VgIHRvIHJlcXVpcmUgZXhhY3QgZW5kcG9pbnQgbmFtZXMgZXZlcnl3aGVyZS5cbiAgICovXG4gIG1vZGVsRnV6enlNYXRjaD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGdXNlLmpzIHNjb3JlIHRocmVzaG9sZCBmb3IgdGhlIGZ1enp5IG1hdGNoZXIsIDAgKGV4YWN0KSB0byAxIChhbnl0aGluZykuXG4gICAqIERlZmF1bHRzIHRvIGAwLjRgOyBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIExvd2VyIHZhbHVlcyByZWplY3QgbG9vc2UgbWF0Y2hlczsgcmFpc2UgaXQgaWYgeW91IGhhdmUgYSBzcHJhd2xpbmdcbiAgICogZW5kcG9pbnQgY2F0YWxvZ3VlIHdpdGggc2ltaWxhci1sb29raW5nIG5hbWVzLlxuICAgKi9cbiAgbW9kZWxGdXp6eVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRUTCBmb3IgdGhlIGluLW1lbW9yeSBzZXJ2aW5nLWVuZHBvaW50cyBsaXN0IGNhY2hlLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIERlZmF1bHRzIHRvIDUgbWludXRlczsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBUaGUgY2FjaGUgaXMgcGVyIHdvcmtzcGFjZSBob3N0IGFuZCBzaGFyZWQgYWNyb3NzIHVzZXJzOyBjb25jdXJyZW50XG4gICAqIGNhbGxlcnMgY29hbGVzY2Ugb24gYSBzaW5nbGUgaW4tZmxpZ2h0IGZldGNoLlxuICAgKi9cbiAgbW9kZWxDYWNoZVR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTGV0IGNsaWVudHMgcGljayB0aGUgYmFja2luZyBlbmRwb2ludCBwZXIgcmVxdWVzdC4gRGVmYXVsdHMgdG8gYHRydWVgO1xuICAgKiBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIFJlYWRzIHRoZSBgWC1NYXN0cmEtTW9kZWxgIGhlYWRlciwgdGhlIGA/bW9kZWw9YCBxdWVyeSBzdHJpbmcsIG9yIGFcbiAgICogYG1vZGVsYCBib2R5IGZpZWxkLCBpbiB0aGF0IG9yZGVyLiBEaXNhYmxlIHdoZW4gcnVubmluZyBtdWx0aS10ZW5hbnRcbiAgICogd2hlcmUgdW50cnVzdGVkIGNsaWVudHMgc2hvdWxkbid0IGNob29zZSB0aGUgZW5kcG9pbnQuXG4gICAqL1xuICBtb2RlbE92ZXJyaWRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByaW9yaXR5LW9yZGVyZWQgbGlzdCBvZiBlbmRwb2ludCBuYW1lcyB0cmllZCAqZmlyc3QqIHdoZW4gbm9cbiAgICogYWdlbnQgLyBwbHVnaW4gLyBlbnYgLyByZXF1ZXN0LW92ZXJyaWRlIG1vZGVsIGlkIGlzIHNldCwgYWhlYWQgb2ZcbiAgICogdGhlIGR5bmFtaWMgc2NvcmUtY2xhc3NpZmllZCBjYXRhbG9ndWUuIFRoZSByZXNvbHZlciBwaWNrcyB0aGVcbiAgICogZmlyc3QgaWQgdGhhdCBpcyBhY3R1YWxseSBwcmVzZW50IGluIHRoZSB3b3Jrc3BhY2Unc1xuICAgKiBgL3NlcnZpbmctZW5kcG9pbnRzYCBsaXN0aW5nLlxuICAgKlxuICAgKiBXaGVuIHVuc2V0LCByZXNvbHV0aW9uIGlzIGRyaXZlbiBieSB0aGUgbGl2ZSBGb3VuZGF0aW9uIE1vZGVsIEFQSVxuICAgKiBgcXVhbGl0eWAgLyBgc3BlZWRgIC8gYGNvc3RgIHNjb3JlczogZW5kcG9pbnRzIGFyZSBjbGFzc2lmaWVkIGludG9cbiAgICogY2hhdCBjbGFzc2VzIChgY2xhc3NpZnlFbmRwb2ludHNgKSBhbmQgd2Fsa2VkIGJlc3QtZmlyc3RcbiAgICogKENoYXRUaGlua2luZyAtPiBDaGF0QmFsYW5jZWQgLT4gQ2hhdEZhc3QpLCB3aXRoIHRoZSBzbWFsbCBidWlsdC1pblxuICAgKiBgRkFMTEJBQ0tfTU9ERUxfSURTYCBsaXN0IGFzIHRoZSBmbG9vciB3aGVuIHRoZSBjYXRhbG9ndWUgY2FuJ3QgYmVcbiAgICogcmVhZC4gU2V0IHRoaXMgdG9cbiAgICogcGluIGEgcmVndWxhdGVkIHdvcmtzcGFjZSB0byBhbiBhcHByb3ZlZCBzdWJzZXQsIG9yIHRvIHB1dCBjdXN0b21cbiAgICogZW5kcG9pbnRzIGluIGZyb250IG9mIHRoZSBhdXRvLWNsYXNzaWZpZWQgY2F0YWxvZ3VlLlxuICAgKi9cbiAgZGVmYXVsdE1vZGVsRmFsbGJhY2tzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCAoZGVmYXVsdCksIGV2ZXJ5IGFnZW50IGdldHMgYSBidWlsdC1pbiBpbnB1dFxuICAgKiBwcm9jZXNzb3IgdGhhdCBzdHJpcHMgYGNoYXJ0SWRgIGZpZWxkcyBmcm9tIHByaW9yIGFzc2lzdGFudFxuICAgKiB0b29sLWludm9jYXRpb24gcmVzdWx0cyBiZWZvcmUgdGhleSByZWFjaCB0aGUgbW9kZWwuIFRoaXNcbiAgICogcHJldmVudHMgdGhlIG1vZGVsIGZyb20gcmV1c2luZyB0dXJuLXNjb3BlZCBjaGFydElkcyBpdCBzZWVzXG4gICAqIGluIG1lbW9yeSByZWNhbGwgKHdoaWNoIHdvdWxkIGxlYXZlIGBbY2hhcnQ6PGlkPl1gIG1hcmtlcnNcbiAgICogcG9pbnRpbmcgYXQgd3JpdGVyIGV2ZW50cyB0aGF0IG5vIGxvbmdlciBleGlzdCkuXG4gICAqXG4gICAqIFNldCB0byBgZmFsc2VgIHRvIG9wdCBvdXQgLSB1c2VmdWwgaWYgYSBub24tZGVmYXVsdCBhZ2VudFxuICAgKiBuZWVkcyBmdWxsIHZpc2liaWxpdHkgaW50byBwcmlvciBjaGFydElkcyAoZS5nLiBhbiBhdWRpdFxuICAgKiBhZ2VudCByZWFzb25pbmcgYWJvdXQgY2hhcnQgbGluZWFnZSkuXG4gICAqL1xuICBzdHJpcFN0YWxlQ2hhcnRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFN0eWxlIGd1YXJkcmFpbHMgYXBwZW5kZWQgdG8gZXZlcnkgYWdlbnQncyBgaW5zdHJ1Y3Rpb25zYCB0byBjdXJiXG4gICAqIGNvbW1vbiBMTE0taXNtcyAoZW0gZGFzaGVzLCBlbW9qaXMsIHN5Y29waGFudGljIG9wZW5lcnMsIHRocm93YXdheVxuICAgKiBjbG9zZXJzLCBleGNlc3NpdmUgaGVkZ2luZykuXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpOiB1c2UgdGhlIGJ1aWx0LWluXG4gICAqICAgYERFRkFVTFRfU1RZTEVfSU5TVFJVQ1RJT05TYCBmcm9tIGBhZ2VudHMudHNgLlxuICAgKiAtIGBzdHJpbmdgOiByZXBsYWNlIHRoZSBkZWZhdWx0IHdpdGggdGhlIHN1cHBsaWVkIGJsb2NrLlxuICAgKiAtIGBmYWxzZWA6IGRpc2FibGUgZW50aXJlbHkgKGFnZW50cyBzZWUgb25seSB0aGVpciBiZXNwb2tlXG4gICAqICAgYGluc3RydWN0aW9uc2ApLlxuICAgKlxuICAgKiBBcHBlbmRlZCAobm90IHByZXBlbmRlZCkgc28gdGhlIGFnZW50J3Mgcm9sZSBhbmQgcnVsZXMgY29tZSBmaXJzdFxuICAgKiBhbmQgdGhlIHN0eWxlIGJsb2NrIGxlYW5zIG9uIHRoZSBtb2RlbCdzIHJlY2VuY3kgYmlhcy5cbiAgICovXG4gIHN0eWxlSW5zdHJ1Y3Rpb25zPzogc3RyaW5nIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBHZW5pZSBzcGFjZXMgdGhpcyBwbHVnaW4ncyBhZ2VudHMgY2FuIGRlbGVnYXRlIHRvLiBPbmUgTWFzdHJhXG4gICAqIHRvb2wgaXMgcmVnaXN0ZXJlZCBwZXIgYWxpYXMgKGBnZW5pZWAgZm9yIHRoZSB3ZWxsLWtub3duXG4gICAqIGBkZWZhdWx0YCBhbGlhcywgYGdlbmllXzxhbGlhcz5gIG90aGVyd2lzZSkuIEVhY2ggdG9vbCBzcGluc1xuICAgKiB1cCBhIHBlci1xdWVzdGlvbiBHZW5pZSBzdWItYWdlbnQgdGhhdCBydW5zIERhdGFicmlja3NcbiAgICogXCJhZ2VudCBtb2RlXCIgYWdhaW5zdCB0aGUgc3BhY2UsIGJyb2FkY2FzdHMgd2lyZSBldmVudHMgdG8gdGhlXG4gICAqIFVJLCBmZXRjaGVzIHN0YXRlbWVudCByb3dzIGZvciBub24tZW1wdHkgcmVzdWx0cywgYW5kIHJldHVybnNcbiAgICogYSBgKHN0cmluZyB8IGRhdGEgfCBjaGFydClbXWAgc3VtbWFyeSB0aGUgaG9zdCBVSSByZW5kZXJzXG4gICAqIGlubGluZS5cbiAgICpcbiAgICogRW50cmllcyBhY2NlcHQgZWl0aGVyIGEgZnVsbCB7QGxpbmsgR2VuaWVTcGFjZUNvbmZpZ30gb2JqZWN0XG4gICAqIG9yIGEgYmFyZSBgc3BhY2VfaWRgIHN0cmluZyB3aGVuIG5vIGV4dHJhcyBhcmUgbmVlZGVkOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGdlbmllU3BhY2VzOiB7XG4gICAqICAgICBkZWZhdWx0OiBcIjAxZWYwZDNjMGUxYjFmNGE4ZDJjM2U0ZjVhNmI3YzhkXCIsXG4gICAqICAgICBmb3JlY2FzdHM6IHsgc3BhY2VJZDogXCIwMWVmLi4uXCIsIGhpbnQ6IFwid2Vla2x5IGRlbWFuZCBmb3JlY2FzdHNcIiB9LFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogUmVhY2ggdGhlIHNwYWNlcyBmcm9tIGFuIGFnZW50J3MgYHRvb2xzKHBsdWdpbnMpYCBjYWxsYmFjayB2aWFcbiAgICogYHBsdWdpbnMuZ2VuaWU/LnRvb2xraXQoKWA7IHRoZSByZXN1bHRpbmcgdG9vbHMgYWNjZXB0XG4gICAqIGB7IGNvbnRlbnQsIGNvbnZlcnNhdGlvbklkPyB9YCBhbmQgcmV0dXJuIGEgaHlkcmF0ZWQgc3VtbWFyeS5cbiAgICpcbiAgICogKipGYWxsYmFjayBkaXNjb3ZlcnkqKiAoaGlnaGVzdCBwcmVjZWRlbmNlIGZpcnN0KTogaWYgdGhpc1xuICAgKiBmaWVsZCBpcyBvbWl0dGVkLCB0aGUgR2VuaWUgYWdlbnQgYWxzbyBwaWNrcyB1cCBzcGFjZXMgZnJvbVxuICAgKiAoMSkgdGhlIEFwcEtpdCBgZ2VuaWUoeyBzcGFjZXM6IHsgLi4uIH0gfSlgIHBsdWdpbiBpbnN0YW5jZVxuICAgKiB3aGVuIHJlZ2lzdGVyZWQsIGFuZCAoMikgdGhlIGBEQVRBQlJJQ0tTX0dFTklFX1NQQUNFX0lEYFxuICAgKiBlbnYgdmFyIChyZWdpc3RlcmVkIHVuZGVyIHRoZSBgZGVmYXVsdGAgYWxpYXMpLiBUaGlzIGtlZXBzXG4gICAqIGV4aXN0aW5nIEFwcEtpdCBkZXBsb3ltZW50cyB3b3JraW5nIHdpdGhvdXQgcmVzdGF0aW5nIHRoZVxuICAgKiBzcGFjZXMgY29uZmlnIGluIHR3byBwbGFjZXMuXG4gICAqL1xuICBnZW5pZVNwYWNlcz86IEdlbmllU3BhY2VzQ29uZmlnO1xuICAvKipcbiAgICogVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkgZm9yIGBhc2tfZ2VuaWVgLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqIFNldCBgZmFsc2VgIHRvIGZvcmNlIHRoZSBsZWdhY3kgQ29udmVyc2F0aW9uIEFQSSBwb2xsaW5nIGRyaXZlci4gQVxuICAgKiBwcmUtc3RyZWFtIGZlYXR1cmUtZGlzYWJsZWQgb3IgcHJldmlldy10b2dnbGUgcmVzcG9uc2UgZmFsbHMgYmFja1xuICAgKiBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgZ2VuaWVBZ2VudE1vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVFRMIGZvciB0aGUgaW4tbWVtb3J5IEdlbmllIHNwYWNlIG1ldGFkYXRhIGNhY2hlLCBpblxuICAgKiBtaWxsaXNlY29uZHMuIERlZmF1bHRzIHRvIDUgbWludXRlcy4gVGhlIEdlbmllIGFnZW50IGNhbGxzXG4gICAqIGBjbGllbnQuZ2VuaWUuZ2V0U3BhY2UoLi4uKWAgb24gZXZlcnkgY29sZC1zdGFydCB0byBnZXQgdGhlXG4gICAqIHRpdGxlIC8gZGVzY3JpcHRpb24gLyB3YXJlaG91c2UgaWQ7IGNhY2hlZCByZXNwb25zZXMgc2tpcCB0aGVcbiAgICogcm91bmQtdHJpcCBhbmQgY29uY3VycmVudCBjYWxsZXJzIGNvYWxlc2NlIG9uIGEgc2luZ2xlXG4gICAqIGluLWZsaWdodCBmZXRjaC4gRHJvcCB0byBhIHNtYWxsZXIgdmFsdWUgd2hlbiBhbmFseXN0cyBhcmVcbiAgICogYWN0aXZlbHkgZWRpdGluZyBzcGFjZSBtZXRhZGF0YSBhbmQgeW91IHdhbnQgY2hhbmdlcyB2aXNpYmxlXG4gICAqIHdpdGhpbiBzZWNvbmRzOyByYWlzZSBpdCB0byBhbW9ydGlzZSB0aGUgcm91bmQtdHJpcCB3aGVuXG4gICAqIHNwYWNlIG1ldGFkYXRhIGlzIGVmZmVjdGl2ZWx5IGZyb3plbi5cbiAgICpcbiAgICogQmFja2VkIGJ5IEFwcEtpdCdzIGBDYWNoZU1hbmFnZXJgLCBzbyB0aGUgY2FjaGUgcGFydGljaXBhdGVzXG4gICAqIGluIHRlbGVtZXRyeSBzcGFucyAoYGNhY2hlLmdldE9yRXhlY3V0ZWApIGFuZCBiZW5lZml0cyBmcm9tXG4gICAqIExha2ViYXNlIHBlcnNpc3RlbmNlIHdoZW4gdGhlIGBsYWtlYmFzZWAgcGx1Z2luIGlzIHdpcmVkIHVwLlxuICAgKi9cbiAgZ2VuaWVTcGFjZUNhY2hlVHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNYXhpbXVtIExMTSBzdGVwcyBlYWNoIGFnZW50IGdldHMgcGVyIHR1cm4uIE9uZSBzdGVwID0gb25lXG4gICAqIHJvdW5kLXRyaXAgdG8gdGhlIHVuZGVybHlpbmcgbW9kZWwgKGEgdG9vbCBjYWxsIGNvbnN1bWVzIGFcbiAgICogc3RlcCwgdGhlIGZpbmFsLXRleHQgcmVwbHkgY29uc3VtZXMgb25lIHRvbykuIEFwcGxpZXMgdG9cbiAgICogZXZlcnkgYWdlbnQgcmVnaXN0ZXJlZCB0aHJvdWdoIHtAbGluayBNYXN0cmFQbHVnaW5Db25maWcuYWdlbnRzfVxuICAgKiAtIHBlci1hZ2VudCBvdmVycmlkZXMgYXJlbid0IHN1cmZhY2VkIHlldCBiZWNhdXNlIHRoZSBzYW1lXG4gICAqIGNlaWxpbmcgaGFzIGJlZW4gc3VmZmljaWVudCBhY3Jvc3MgZXZlcnkgd29ya2xvYWQgd2UndmUgcnVuLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9BR0VOVF9NQVhfU1RFUFN9ICgyNSksIHNpemVkIHRvIGZpdFxuICAgKiBhIGRlY29tcG9zZWQgR2VuaWUgdHVybiAoZ3JvdW5kaW5nICsgc2V2ZXJhbCBgYXNrX2dlbmllYCBjYWxsc1xuICAgKiArIGBwcmVwYXJlX2NoYXJ0YCBwZXIgZGF0YXNldCArIHRoZSBmaW5hbC10ZXh0IHJlcGx5KSB3aXRoXG4gICAqIGhlYWRyb29tIGZvciB0aGUgbW9kZWwgdG8gY2hhaW4gYSBjb3VwbGUgb2YgZm9sbG93LXVwcyBiZWZvcmVcbiAgICogYW5zd2VyaW5nLiBNYXN0cmEncyBvd24gYGFnZW50LmdlbmVyYXRlYCBkZWZhdWx0IG9mIDUgd291bGRcbiAgICogY3V0IG11bHRpLXN0ZXAgb3JjaGVzdHJhdGlvbiBvZmYgYWZ0ZXIgMi0zIHRvb2wgY2FsbHMsIHNvXG4gICAqIGV4cGxpY2l0bHkgcmFpc2luZyB0aGUgY2VpbGluZyBoZXJlIGlzIHdoYXQgbGV0cyB0aGVcbiAgICogYWdlbnQtbW9kZSBsb29wIHBsYXkgb3V0LlxuICAgKlxuICAgKiBMb3dlciB3aGVuIGFuIHVudXN1YWxseSBzbG93IG9yIGV4cGVuc2l2ZSBtb2RlbCBtYWtlcyBsb25nXG4gICAqIHR1cm5zIHVuYWZmb3JkYWJsZTsgcmFpc2UgZm9yIGV4cGxvcmF0b3J5IHdvcmtsb2FkcyB0aGF0IG5lZWRcbiAgICogdG8gZHJpbGwgZGVlcCBpbnRvIGEgZGF0YXNldCB3aXRoaW4gYSBzaW5nbGUgdHVybi5cbiAgICovXG4gIGFnZW50TWF4U3RlcHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaXJlIE1hc3RyYSBzcGFucyBpbnRvIEFwcEtpdCdzIGdsb2JhbCBPVGVsIHBpcGVsaW5lIHZpYVxuICAgKiBgQG1hc3RyYS9vdGVsLWJyaWRnZWAuXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQsIGF1dG8pOiBvbiBvbmx5IHdoZW5cbiAgICogICBgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UYCBvclxuICAgKiAgIGBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UYCBpcyBzZXQuIFdoZW4gdW5zZXQsIHRoZVxuICAgKiAgIGJyaWRnZSBpcyBza2lwcGVkIHNvIE1hc3RyYSBkb2VzIG5vdCBsb2dcbiAgICogICBgW090ZWxCcmlkZ2VdIE5vIE9URUwgc3BhbiBmb3VuZGAgb24gdGhlIG5vb3AgdHJhY2VyLlxuICAgKiAtIGB0cnVlYDogZm9yY2Ugb24gZXZlbiB3aXRob3V0IGFuIE9UTFAgZW5kcG9pbnQuXG4gICAqIC0gYGZhbHNlYDogZm9yY2Ugb2ZmLlxuICAgKi9cbiAgb2JzZXJ2YWJpbGl0eT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMb2cgdXNlciBmZWVkYmFjayAodGh1bWJzIHVwL2Rvd24gKyBmcmVlZm9ybSBjb21tZW50cykgdG8gTUxmbG93IGFzXG4gICAqIHRyYWNlIGFzc2Vzc21lbnRzLCBhbmQgc3VyZmFjZSB0aGUgZmVlZGJhY2sgY29udHJvbHMgaW4gdGhlIGNoYXQgVUkuXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQsIGF1dG8pOiBlbmFibGVkIG9ubHkgd2hlbiBNTGZsb3cgdHJhY2luZyBpc1xuICAgKiAgIHdpcmVkIC0gYW4gT1RMUCBleHBvcnRlciBlbmRwb2ludCBpcyBzZXQgYW5kIGFuIE1MZmxvdyBleHBlcmltZW50XG4gICAqICAgaXMgbmFtZWQgKHRoZSBzYW1lIHNpZ25hbHMgdGhlIG9ic2VydmFiaWxpdHkgcGlwZWxpbmUgbmVlZHMgdG9cbiAgICogICBzaGlwIHRyYWNlcyB0byBNTGZsb3cpLiBPdGhlcndpc2Ugb2ZmLCBzaW5jZSB0aGVyZSdkIGJlIG5vIHRyYWNlXG4gICAqICAgdG8gYXR0YWNoIGZlZWRiYWNrIHRvLlxuICAgKiAtIGB0cnVlYDogZm9yY2Ugb24uIEZlZWRiYWNrIGNvbnRyb2xzIHNob3cgYW5kIHdyaXRlcyBhcmUgYXR0ZW1wdGVkXG4gICAqICAgcmVnYXJkbGVzcyBvZiBlbnYgZGV0ZWN0aW9uICh1c2Ugd2hlbiB0aGUgZW52IGlzIGNvbmZpZ3VyZWQgaW4gYVxuICAgKiAgIHdheSB0aGUgYXV0by1wcm9iZSBkb2Vzbid0IHJlY29nbml6ZSkuXG4gICAqIC0gYGZhbHNlYDogZm9yY2Ugb2ZmLiBObyB0cmFjZS1pZCBoZWFkZXIsIG5vIGZlZWRiYWNrIHJvdXRlLCBubyBVSS5cbiAgICpcbiAgICogRmVlZGJhY2sgYXR0YWNoZXMgdG8gYSB0dXJuJ3MgTUxmbG93IHRyYWNlIHZpYSB0aGUgT3BlblRlbGVtZXRyeVxuICAgKiB0cmFjZSBpZCB0aGUgc2VydmVyIHN0YW1wcyBvbiBlYWNoIHJlc3BvbnNlOyBzZWUgYG1sZmxvdy50c2AuXG4gICAqL1xuICBmZWVkYmFjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeHBvc2UgdGhlIHBsdWdpbidzIGFnZW50cyAoYW5kIG9wdGlvbmFsbHkgdG9vbHMpIGFzIGEgTWFzdHJhIE1DUFxuICAgKiBzZXJ2ZXIgc28gZXh0ZXJuYWwgTUNQIGNsaWVudHMgLSBDbGF1ZGUgRGVza3RvcCwgQ3Vyc29yLCB0aGUgTWFzdHJhXG4gICAqIHBsYXlncm91bmQsIG9yIGFub3RoZXIgYWdlbnQgLSBjYW4gY2FsbCB0aGVtIG92ZXIgdGhlIHN0YW5kYXJkIE1DUFxuICAgKiB0cmFuc3BvcnRzLiBFbmFibGVkIGJ5IGRlZmF1bHQgKGFnZW50cyBvbmx5KTogd3JhcHBpbmcgdGhlXG4gICAqIGFscmVhZHktcmVnaXN0ZXJlZCBhZ2VudHMgY29zdHMgbm90aGluZyBleHRyYSwgc28gdGhlIGVuZHBvaW50IGlzIG9uXG4gICAqIG91dCBvZiB0aGUgYm94OyBvbmx5IHRoZSBhbWJpZW50IHRvb2xzICh3aGljaCBhc3N1bWUgYW4gaW4tcHJvY2Vzc1xuICAgKiBjaGF0IHR1cm4pIHN0YXkgb2ZmIHVubGVzcyBleHBsaWNpdGx5IG9wdGVkIGluLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KSAvIGB0cnVlYDogZXhwb3NlIGV2ZXJ5IHJlZ2lzdGVyZWQgYWdlbnQgYXNcbiAgICogICBhbiBgYXNrXzxhZ2VudElkPmAgTUNQIHRvb2wgdW5kZXIgYSBzZXJ2ZXIgd2hvc2UgaWQgaXMgdGhlIHBsdWdpblxuICAgKiAgIG5hbWUuXG4gICAqIC0gYGZhbHNlYDogbm8gTUNQIGVuZHBvaW50cy5cbiAgICogLSB7QGxpbmsgTWFzdHJhTWNwQ29uZmlnfTogZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgc2VydmVyIGlkLFxuICAgKiAgIGFkdmVydGlzZWQgbWV0YWRhdGEsIGFuZCB3aGljaCBhZ2VudHMgLyB0b29scyBhcmUgZXhwb3NlZC5cbiAgICpcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgc3RvY2sgTWFzdHJhIE1DUCByb3V0ZXMgbW91bnQgdW5kZXIgdGhlIHBsdWdpbidzXG4gICAqIGJhc2UgcGF0aCAobm8gYmVzcG9rZSByb3V0ZSBpcyBhZGRlZCAtIHRoZSBzZXJ2ZXIgaXMgaGFuZGVkIHRvIHRoZVxuICAgKiBgTWFzdHJhYCBpbnN0YW5jZSB2aWEgYG1jcFNlcnZlcnNgLCB3aGljaCBgQG1hc3RyYS9leHByZXNzYCBzZXJ2ZXMpOlxuICAgKlxuICAgKiAtIFN0cmVhbWFibGUgSFRUUDogYFBPU1QgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9tY3BgXG4gICAqIC0gU1NFIChsZWdhY3kpOiAgICBgR0VUICAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L3NzZWBcbiAgICogICAgICAgICAgICAgICAgICAgIGBQT1NUIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vbWVzc2FnZXNgXG4gICAqXG4gICAqIFJlcXVlc3RzIHJ1biB1bmRlciB0aGUgc2FtZSBBcHBLaXQgT0JPIHNjb3BlIGFzIHRoZSBjaGF0IHJvdXRlcywgc29cbiAgICogYW4gYWdlbnQgaW52b2tlZCBvdmVyIE1DUCByZXNvbHZlcyBpdHMgbW9kZWwgYW5kIHRvb2xzIGFzIHRoZVxuICAgKiBjYWxsaW5nIHVzZXIuXG4gICAqL1xuICBtY3A/OiBib29sZWFuIHwgTWFzdHJhTWNwQ29uZmlnO1xuICAvKipcbiAgICogSG93IG11Y2ggb2YgdGhlIHN0b2NrIGBAbWFzdHJhL2V4cHJlc3NgIG1hbmFnZW1lbnQgQVBJIGlzIHJlYWNoYWJsZVxuICAgKiB0aHJvdWdoIHRoZSBwbHVnaW4gbW91bnQuIGBAbWFzdHJhL2V4cHJlc3NgIHJlZ2lzdGVycyBpdHMgZnVsbCByb3V0ZVxuICAgKiB0YWJsZSAoYWdlbnQgaW5mZXJlbmNlIHBsdXMgYWRtaW4gLyBtdXRhdGluZyByb3V0ZXM6IGRpcmVjdCB0b29sXG4gICAqIGV4ZWN1dGlvbiwgd29ya2Zsb3cgY29udHJvbCwgcmF3IG1lbW9yeSByZWFkL3dyaXRlLCB0ZWxlbWV0cnksIGxvZ3MsXG4gICAqIHNjb3JlcykuIEFwcEtpdCBhbHJlYWR5IGF1dGhlbnRpY2F0ZXMgZXZlcnkgcmVxdWVzdCBhcyB0aGUgT0JPIHVzZXIsXG4gICAqIGJ1dCBub3RoaW5nIHRoZXJlIHJlc3RyaWN0cyAqd2hpY2gqIG9mIHRob3NlIG9wZXJhdGlvbnMgdGhlIGJyb3dzZXJcbiAgICogY2xpZW50IG1heSBpbnZva2UuXG4gICAqXG4gICAqIC0gYFwic2NvcGVkXCJgIChkZWZhdWx0KTogb25seSB0aGUgcm91dGVzIHRoZSBjaGF0IGNsaWVudCBsZWdpdGltYXRlbHlcbiAgICogICBuZWVkcyBhcmUgZGlzcGF0Y2hlZCB0byBNYXN0cmEgLSBhZ2VudCBpbmZlcmVuY2VcbiAgICogICAoYHN0cmVhbWAgLyBgZ2VuZXJhdGVgIC8gYG5ldHdvcmtgKSwgcmVhZC1vbmx5IGFnZW50IG1ldGFkYXRhLCB0aGlzXG4gICAqICAgcGx1Z2luJ3Mgb3duIE9CTy0gYW5kIHJlc291cmNlLXNjb3BlZCBgL3JvdXRlLypgIHJvdXRlcyAoaGlzdG9yeSAvXG4gICAqICAgdGhyZWFkcyksIGFuZCwgd2hlbiB7QGxpbmsgbWNwfSBpcyBlbmFibGVkLCB0aGUgTUNQIHRyYW5zcG9ydC5cbiAgICogICBFdmVyeXRoaW5nIGVsc2UgKHRvb2wgZXhlY3V0aW9uLCB3b3JrZmxvdyBjb250cm9sLCByYXcgbWVtb3J5LFxuICAgKiAgIHRlbGVtZXRyeSwgbG9ncywgc2NvcmVzLCBhbmQgb3RoZXIgbXV0YXRpb25zKSBpcyByZWplY3RlZCB3aXRoXG4gICAqICAgYDQwM2AgYmVmb3JlIGl0IHJlYWNoZXMgTWFzdHJhLlxuICAgKiAtIGBcImZ1bGxcImA6IGRpc3BhdGNoIHRoZSBlbnRpcmUgc3RvY2sgTWFzdHJhIEFQSS4gVXNlIG9ubHkgZm9yIGFcbiAgICogICB0cnVzdGVkIGZpcnN0LXBhcnR5IGNvbnNvbGUgdGhhdCBnZW51aW5lbHkgbmVlZHMgdGhlIG1hbmFnZW1lbnRcbiAgICogICBzdXJmYWNlLlxuICAgKi9cbiAgYXBpQWNjZXNzPzogXCJzY29wZWRcIiB8IFwiZnVsbFwiO1xuICAvKipcbiAgICogV2hpY2ggRGF0YWJyaWNrcyBpZGVudGl0eSB0aGUgYWdlbnRzJyB3b3Jrc3BhY2UgY2FsbHMgcnVuIGFzOiB0aGVcbiAgICogc2VydmluZy1lbmRwb2ludCBjYXRhbG9ndWUgYmVoaW5kIHRoZSBtb2RlbCBwaWNrZXIsIEdlbmllIHN1Z2dlc3Rpb25zLFxuICAgKiBgYXNrX2dlbmllYCwgYW5kIHRoZSBTdGF0ZW1lbnQgRXhlY3V0aW9uIGZldGNoIGJlaGluZCBhIGBbZGF0YTo8aWQ+XWBcbiAgICogZW1iZWQuIEZhbGxzIGJhY2sgdG8gYE1BU1RSQV9HRU5JRV9JREVOVElUWWAsIHRoZW4gYFwidXNlclwiYC5cbiAgICpcbiAgICogT24tYmVoYWxmLW9mIChPQk8pIGF1dGggcmVxdWlyZXMgdGhlIGNhbGxlciB0byBiZSBhIG1lbWJlciBvZiB0aGVcbiAgICogV09SS1NQQUNFLCBub3QganVzdCBvZiB0aGUgRGF0YWJyaWNrcyBhY2NvdW50LiBBbiBhcHAgc2hhcmVkIHdpdGggYW5cbiAgICogYWNjb3VudC1sZXZlbCBncm91cCBjYW4gYmUgb3BlbmVkIGJ5IHNvbWVvbmUgd2hvc2UgdG9rZW4gaXMgdmFsaWQgYnV0IHdob3NlXG4gICAqIGV2ZXJ5IHdvcmtzcGFjZSBjYWxsIGZhaWxzIHdpdGggYFVuYXV0aG9yaXplZCBhY2Nlc3MgdG8gT3JnOiA8aWQ+YCAtIGFuZFxuICAgKiBncmFudGluZyB3b3Jrc3BhY2UgbWVtYmVyc2hpcCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlLCBzaW5jZSBhIHdvcmtzcGFjZVxuICAgKiBjYXBzIG1lbWJlcnNoaXAgd2VsbCBiZWxvdyB0aGUgc2l6ZSBvZiBhIGxhcmdlIGFjY291bnQncyB1c2VyIGdyb3VwLiBUaGVcbiAgICogYXBwJ3Mgc2VydmljZSBwcmluY2lwYWwgYWxyZWFkeSBob2xkcyB0aGUgZ3JhbnRzIHRoZSBhcHAgd2FzIGRlcGxveWVkIHdpdGguXG4gICAqXG4gICAqIC0gYFwidXNlclwiYCAoZGVmYXVsdCk6IGFsd2F5cyBPQk8uIFBlci11c2VyIGF0dHJpYnV0aW9uLCBhbmQgR2VuaWUgLyBVbml0eVxuICAgKiAgIENhdGFsb2cgcm93IGZpbHRlcnMgYXBwbHkgcGVyIHVzZXIuIENvcnJlY3Qgd2hlbiBldmVyeSBjYWxsZXIgaXMgYVxuICAgKiAgIHdvcmtzcGFjZSBtZW1iZXIuXG4gICAqIC0gYFwic2VydmljZS1wcmluY2lwYWxcImA6IGFsd2F5cyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLiBOZWVkcyBubyBPQk9cbiAgICogICBzY29wZXMgYW5kIHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBhdCB0aGUgY29zdCBvZlxuICAgKiAgIHBlci11c2VyIGF0dHJpYnV0aW9uIGluIEdlbmllIC8gVW5pdHkgQ2F0YWxvZy5cbiAgICogLSBgXCJhdXRvXCJgOiBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsXG4gICAqICAgd2hlbiBpdCBkb2VzIG5vdC4gRm9yIGFuIGFwcCBzZXJ2aW5nIEJPVEggdGhlIHBsYXRmb3JtIGZyb250IGRvb3IgYW5kIGFcbiAgICogICBkb29yIHRoYXQgaGFzIG5vIHRva2VuIHRvIGZvcndhcmQgLSBhIGBAZGJ4LXRvb2xzL3R1bm5lbGAgZ2F0ZSwgYVxuICAgKiAgIFRlYW1zIGNoYW5uZWwgLSB3aGVyZSBBcHBLaXQncyBgYXNVc2VyYCB3b3VsZCBvdGhlcndpc2UgdGhyb3dcbiAgICogICBgQXV0aGVudGljYXRpb25FcnJvcmAgb3V0c2lkZSBgTk9ERV9FTlY9ZGV2ZWxvcG1lbnRgLlxuICAgKlxuICAgKiBUaGUgc2VydmljZS1wcmluY2lwYWwgcGF0aCBjaGFuZ2VzIG9ubHkgdGhlIERhdGFicmlja3MgQ1JFREVOVElBTC4gTWVtb3J5XG4gICAqIHRocmVhZHMsIHRoZSBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2UsIGFuZCB0cmFjZSBtZXRhZGF0YSBzdGlsbCBrZXkgb2ZmIHRoZVxuICAgKiBmb3J3YXJkZWQgdXNlciwgc28gY2FsbGVycyBzaGFyaW5nIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCdzIGRhdGEgYWNjZXNzIGtlZXBcbiAgICogc2VwYXJhdGUgY29udmVyc2F0aW9ucyBhbmQgY2Fubm90IHJlYWQgZWFjaCBvdGhlcidzIHRocmVhZHMgb3IgY2hhcnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBBbiBhcHAgYW55IGFjY291bnQgdXNlciBjYW4gb3BlblxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyBnZW5pZUlkZW50aXR5OiBcInNlcnZpY2UtcHJpbmNpcGFsXCIsIGdlbmllU3BhY2VzOiB7IGRlZmF1bHQ6IHNwYWNlSWQgfSB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIE9uZSBhcHAgYmVoaW5kIGJvdGggdGhlIGZyb250IGRvb3IgYW5kIGEgcHVibGljIHR1bm5lbFxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyBnZW5pZUlkZW50aXR5OiBcImF1dG9cIiwgZ2VuaWVTcGFjZXM6IHsgZGVmYXVsdDogc3BhY2VJZCB9IH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmllSWRlbnRpdHk/OiBNYXN0cmFJZGVudGl0eU1vZGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBicmFuZCBjb250ZXh0IGFwcGxpZWQgdG8gY2hhcnRzIHByb2R1Y2VkIGJ5IHRoZSBidWlsdC1pblxuICAgKiBgcmVuZGVyX2RhdGFgIC8gYHByZXBhcmVfY2hhcnRgIHRvb2xzLiBXaGVuIHNldCwgdGhlIGNoYXJ0IHBsYW5uZXInc1xuICAgKiBFY2hhcnRzIG91dHB1dCBpcyB0aGVtZWQgd2l0aCB0aGUgYnJhbmQncyBwYWxldHRlIChzZXJpZXMgY29sb3JzIGRlcml2ZWRcbiAgICogZnJvbSBgY29sb3JzLnByaW1hcnlgIC8gYGNvbG9ycy5hY2NlbnRgKSBhbmQgc2FucyBmb250XG4gICAqIChgdHlwb2dyYXBoeS5zYW5zYCkgaW5zdGVhZCBvZiBFY2hhcnRzJyBkZWZhdWx0cy4gT21pdCBmb3IgdGhlIGRlZmF1bHRcbiAgICogRWNoYXJ0cyBsb29rLlxuICAgKlxuICAgKiBQYXNzIHRoZSBwb3J0YWJsZSB7QGxpbmsgQnJhbmRDb250ZXh0fSBzaGFyZWQgYWNyb3NzIHRoZSBVSSBhbmRcbiAgICogbGlicmFyaWVzIChlLmcuIGBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0YCBmcm9tIGBAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlYCxcbiAgICogb3IgYSBjdXN0b21lciBicmFuZCkgLSB0aGUgc2FtZSBvYmplY3QgdGhlIGVtYWlsIGFkZC1vbiBhbmQgdGhlIFVJXG4gICAqIGBCcmFuZFByb3ZpZGVyYCBjb25zdW1lLCBzbyBhIGhvc3QgdGhlbWVzIGNoYXJ0cywgZW1haWwsIGFuZCBVSSBmcm9tIG9uZVxuICAgKiBzb3VyY2UuXG4gICAqL1xuICBicmFuZD86IEJyYW5kQ29udGV4dDtcbiAgLyoqXG4gICAqIFJlbW90ZSBBZ2VudC1Ta2lsbCBzb3VyY2VzIG1hdGVyaWFsaXplZCBvbmNlIGF0IGFwcCBzdGFydHVwLiBBIHNpbmdsZVxuICAgKiBzb3VyY2UsIGEgbGlzdCwgb3IgYSBgeyBzb3VyY2VzLCBmYWlsT25FcnJvcj8sIC4uLiB9YCBiYWcuXG4gICAqXG4gICAqIEVhY2ggc291cmNlIGlzIGEgR2l0SHViIGBvd25lci9yZXBvYCwgYSBnaXQgLyBHaXRMYWIgVVJMLCBvciBhIGRpcmVjdFxuICAgKiBgU0tJTEwubWRgIC8gYXJjaGl2ZSBkb3dubG9hZCBVUkwuIFJlc29sdXRpb24gcHJlZmVycyB0aGUgT1BUSU9OQUwgYHNraWxsc2BcbiAgICogbnBtIENMSSAoYSBwZWVyIGRlcCkgd2hpY2ggaXMgY29waWVkIGludG8gYSB0ZW1wIGRpciBhbmQgdGhlbiBwZXJzaXN0ZWQ7XG4gICAqIHdpdGhvdXQgaXQsIGEgVVJMIHNvdXJjZSBpcyBmZXRjaGVkIGRpcmVjdGx5LiBBIHNvdXJjZSB0aGF0IHJlc29sdmVzXG4gICAqIHRocm91Z2ggbmVpdGhlciBmYWlscyBzdGFydHVwIHVubGVzcyBgZmFpbE9uRXJyb3I6IGZhbHNlYC5cbiAgICpcbiAgICogUHJvdmlzaW9uZWQgc2tpbGxzIGFyZSB3cml0dGVuIHRvIHRoZSBEYXRhYnJpY2tzIHVzZXIncyBBc3Npc3RhbnQgc2tpbGxzXG4gICAqIGZvbGRlciAoYC9Vc2Vycy88ZW1haWw+Ly5hc3Npc3RhbnQvc2tpbGxzYCwgdGhlIFwic2F2ZSB0aGlzIGFzIGEgc2tpbGxcIlxuICAgKiB0YXJnZXQpIHNvIHRoZXkgcGVyc2lzdCBhbmQgYXJlIHBpY2tlZCB1cCBieSB0aGUgYnVpbHQtaW4gQXNzaXN0YW50LXNraWxsc1xuICAgKiBtb3VudC4gV2l0aCBubyB3cml0YWJsZSB3b3Jrc3BhY2UsIHRoZXkgZ28gdG8gYSBsb2NhbCB0ZW1wIGRpciBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyByZW1vdGVTa2lsbHM6IFwidmVyY2VsLWxhYnMvYWdlbnQtc2tpbGxzXCIgfSk7XG4gICAqIG1hc3RyYSh7XG4gICAqICAgcmVtb3RlU2tpbGxzOiB7XG4gICAqICAgICBzb3VyY2VzOiBbXCJ2ZXJjZWwtbGFicy9hZ2VudC1za2lsbHNcIiwgXCJodHRwczovL2V4YW1wbGUuY29tL3NraWxsLm1kXCJdLFxuICAgKiAgICAgZmFpbE9uRXJyb3I6IGZhbHNlLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHJlbW90ZVNraWxscz86IFJlbW90ZVNraWxsc09wdGlvbjtcbn1cblxuLyoqXG4gKiBKU09OIFNjaGVtYSBwdWJsaXNoZWQgb24gdGhlIG1hbmlmZXN0J3MgYGNvbmZpZy5zY2hlbWFgLCBtaXJyb3JpbmcgdGhlXG4gKiBkb2N1bWVudGVkIGRlZmF1bHRzIGFuZCBlbnZpcm9ubWVudCBmYWxsYmFja3Mgb2Yge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZ30uXG4gKlxuICogQ292ZXJzIHRoZSBKU09OLWV4cHJlc3NpYmxlIG9wdGlvbnMgb25seS4gYGFnZW50c2AsIGB0b29sc2AsIGFuZCBhXG4gKiBgZGVmYXVsdE1vZGVsYCBwYXNzZWQgYXMgYSBNYXN0cmEgYER5bmFtaWNBcmd1bWVudGAgYXJlIGNvZGUtZGVmaW5lZFxuICogKGZ1bmN0aW9ucyAvIGNsYXNzIGluc3RhbmNlcyksIHNvIHRoZXkgY2Fycnkgbm8gc2NoZW1hIGVudHJ5OyB0aGVcbiAqIGBkZWZhdWx0TW9kZWxgIHByb3BlcnR5IGJlbG93IGRlc2NyaWJlcyBpdHMgc3RyaW5nIGZvcm0uXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfQ09ORklHX1NDSEVNQTogQ29uZmlnU2NoZW1hID0ge1xuICB0eXBlOiBcIm9iamVjdFwiLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgcHJvdmlkZXJJZDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTWFzdHJhIE9wZW5BSS1jb21wYXRpYmxlIHByb3ZpZGVyIGlkLiBEZWZhdWx0cyB0byBcImRhdGFicmlja3NcIi4nLFxuICAgIH0sXG4gICAgcmVtb3RlU2tpbGxzOiB7XG4gICAgICB0eXBlOiBbXCJzdHJpbmdcIiwgXCJhcnJheVwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnUmVtb3RlIEFnZW50LVNraWxsIHNvdXJjZXMgcHJvdmlzaW9uZWQgYXQgc3RhcnR1cDogXCJhaXRvb2xzXCIgZm9yIERhdGFicmlja3NcXCcgb3duIHNraWxsIHNldCAocmVhZCBmcm9tIHRoZSBwdWJsaWMgZGF0YWJyaWNrcy9kYXRhYnJpY2tzLWFnZW50LXNraWxscyByZXBvLCBubyBDTEkgbmVlZGVkKSwgYSBHaXRIdWIgb3duZXIvcmVwbywgYSBnaXQvR2l0TGFiIFVSTCwgb3IgYSBkaXJlY3QgU0tJTEwubWQvYXJjaGl2ZSBVUkwuIE5vbi1haXRvb2xzIHNvdXJjZXMgcHJlZmVyIHRoZSBvcHRpb25hbCBgc2tpbGxzYCBucG0gQ0xJLCBlbHNlIGEgZGlyZWN0IGZldGNoOyBmYWlscyBzdGFydHVwIG9uIGVycm9yIHVubGVzcyBmYWlsT25FcnJvcjpmYWxzZS4gV3JpdHRlbiB0byB0aGUgRGF0YWJyaWNrcyB1c2VyIEFzc2lzdGFudCBza2lsbHMgZm9sZGVyLCBvciBhIGxvY2FsIHRlbXAgZGlyIHdoZW4gbm8gd29ya3NwYWNlIGlzIHdyaXRhYmxlLicsXG4gICAgfSxcbiAgICBzdG9yYWdlOiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9zdGdyZXNTdG9yZSBmb3IgTWFzdHJhIHRocmVhZHMgLyBtZXNzYWdlcy4gYHRydWVgIHJldXNlcyB0aGUgYGxha2ViYXNlYCBwbHVnaW4ncyBwb29sLCBhbiBvYmplY3Qgb3BlbnMgYSBkZWRpY2F0ZWQgc3RvcmUuIEF1dG8tZW5hYmxlZCB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyByZWdpc3RlcmVkLlwiLFxuICAgIH0sXG4gICAgbWVtb3J5OiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUGdWZWN0b3Igc3RvcmUgZm9yIE1hc3RyYSBzZW1hbnRpYyByZWNhbGwuIGB0cnVlYCByZXVzZXMgdGhlIGBsYWtlYmFzZWAgcGx1Z2luJ3MgcG9vbCwgYW4gb2JqZWN0IG9wZW5zIGEgZGVkaWNhdGVkIHN0b3JlLiBBdXRvLWVuYWJsZWQgd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgcmVnaXN0ZXJlZC5cIixcbiAgICB9LFxuICAgIHNhbmRib3g6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJzdHJpbmdcIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0NvbW1hbmQgc2FuZGJveCBmb3IgYXV0by1jcmVhdGVkIGFnZW50IHdvcmtzcGFjZXMuIERlZmF1bHRzIHRvIERhdGFicmlja3MgU2FuZGJveCB3aXRoIE1vbnR5IGZhbGxiYWNrOyBmYWxzZSBkaXNhYmxlcyBjb21tYW5kIGV4ZWN1dGlvbiwgXCJtb250eVwiIHNlbGVjdHMgTW9udHkgZGlyZWN0bHksIGFuZCBhbiBvYmplY3QgY29uZmlndXJlcyBEYXRhYnJpY2tzIGxpZmVjeWNsZS9mYWxsYmFjayBzZXR0aW5ncy4nLFxuICAgIH0sXG4gICAgZGVmYXVsdEFnZW50OiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQWdlbnQgaWQgdXNlZCB3aGVuIHRoZSBjbGllbnQgbmFtZXMgbm9uZS4gRGVmYXVsdHMgdG8gdGhlIGZpcnN0IHJlZ2lzdGVyZWQgYWdlbnQsIGVsc2UgdGhlIGJ1aWx0LWluIGBkZWZhdWx0YC5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRNb2RlbDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlNlcnZpbmcgZW5kcG9pbnQgYXBwbGllZCB0byBldmVyeSBhZ2VudCB0aGF0IG9taXRzIGl0cyBvd24gbW9kZWwuIEZhbGxzIGJhY2sgdG8gREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUUsIHRoZW4gdGhlIGF1dG8tcmVzb2x2ZWQgY2F0YWxvZ3VlLlwiLFxuICAgIH0sXG4gICAgZGVmYXVsdE1vZGVsRmFsbGJhY2tzOiB7XG4gICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQcmlvcml0eS1vcmRlcmVkIGVuZHBvaW50IG5hbWVzIHRyaWVkIGJlZm9yZSB0aGUgc2NvcmUtY2xhc3NpZmllZCBjYXRhbG9ndWUgd2hlbiBub3RoaW5nIGVsc2UgcGlucyBhIG1vZGVsLlwiLFxuICAgIH0sXG4gICAgbW9kZWxGdXp6eU1hdGNoOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkZ1enp5LW1hdGNoIGxvb3NlIG1vZGVsIG5hbWVzIGFnYWluc3QgdGhlIHdvcmtzcGFjZSBjYXRhbG9ndWUuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBtb2RlbEZ1enp5VGhyZXNob2xkOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRnVzZS5qcyBzY29yZSB0aHJlc2hvbGQgZm9yIHRoZSBmdXp6eSBtYXRjaGVyLCAwIChleGFjdCkgdG8gMSAoYW55dGhpbmcpLiBEZWZhdWx0cyB0byAwLjQuXCIsXG4gICAgfSxcbiAgICBtb2RlbENhY2hlVHRsTXM6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJUVEwgaW4gbXMgZm9yIHRoZSBzZXJ2aW5nLWVuZHBvaW50cyBsaXN0IGNhY2hlLCBwZXIgd29ya3NwYWNlIGhvc3QuIERlZmF1bHRzIHRvIDUgbWludXRlcy5cIixcbiAgICB9LFxuICAgIG1vZGVsT3ZlcnJpZGU6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiSG9ub3IgYSBwZXItcmVxdWVzdCBtb2RlbCBvdmVycmlkZSBmcm9tIHRoZSBYLU1hc3RyYS1Nb2RlbCBoZWFkZXIsID9tb2RlbD0gcXVlcnksIG9yIGEgYG1vZGVsYCBib2R5IGZpZWxkLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgZ2VuaWVTcGFjZXM6IHtcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogeyB0eXBlOiBbXCJzdHJpbmdcIiwgXCJvYmplY3RcIl0gfSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkdlbmllIHNwYWNlcyB0aGUgYWdlbnRzIGNhbiBkZWxlZ2F0ZSB0bywga2V5ZWQgYnkgYWxpYXMgKHRoZSB0b29sLW5hbWUgc3VmZml4KS4gRWFjaCB2YWx1ZSBpcyBhIHNwYWNlIGlkIG9yIGB7IHNwYWNlSWQsIGhpbnQgfWAuIEZhbGxzIGJhY2sgdG8gdGhlIGBnZW5pZWAgcGx1Z2luJ3Mgb3duIGBzcGFjZXNgIGNvbmZpZywgdGhlbiBEQVRBQlJJQ0tTX0dFTklFX1NQQUNFX0lEIHVuZGVyIHRoZSBgZGVmYXVsdGAgYWxpYXMuXCIsXG4gICAgfSxcbiAgICBnZW5pZUFnZW50TW9kZToge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJVc2UgdGhlIHN0cmVhbWluZyBHZW5pZSBBZ2VudCBNb2RlIEFQSSBmb3IgYXNrX2dlbmllLiBEZWZhdWx0cyB0byB0cnVlOyBmYWxzZSBmb3JjZXMgbGVnYWN5IHBvbGxpbmcuIEZlYXR1cmUtZGlzYWJsZWQgb3IgcHJldmlldy10b2dnbGUgcmVzcG9uc2VzIGZhbGwgYmFjayBhdXRvbWF0aWNhbGx5IGJlZm9yZSBzdHJlYW1pbmcuXCIsXG4gICAgfSxcbiAgICBnZW5pZVNwYWNlQ2FjaGVUdGxNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRUTCBpbiBtcyBmb3IgdGhlIEdlbmllIHNwYWNlIG1ldGFkYXRhIGNhY2hlLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBhZ2VudE1heFN0ZXBzOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuIChhIHRvb2wgY2FsbCBhbmQgdGhlIGZpbmFsIHJlcGx5IGVhY2ggY29uc3VtZSBvbmUpLiBEZWZhdWx0cyB0byAyNS5cIixcbiAgICB9LFxuICAgIHN0cmlwU3RhbGVDaGFydHM6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU3RyaXAgY2hhcnRJZHMgZnJvbSByZWNhbGxlZCBhc3Npc3RhbnQgdG9vbCByZXN1bHRzIHNvIHRoZSBtb2RlbCBjYW5ub3QgcmV1c2UgYSB0dXJuLXNjb3BlZCBjaGFydCBtYXJrZXIuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBzdHlsZUluc3RydWN0aW9uczoge1xuICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwiYm9vbGVhblwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0eWxlIGd1YXJkcmFpbHMgYXBwZW5kZWQgdG8gZXZlcnkgYWdlbnQncyBpbnN0cnVjdGlvbnMuIEEgc3RyaW5nIHJlcGxhY2VzIHRoZSBidWlsdC1pbiBibG9jaywgYGZhbHNlYCBkaXNhYmxlcyBpdC5cIixcbiAgICB9LFxuICAgIG9ic2VydmFiaWxpdHk6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQnJpZGdlIE1hc3RyYSBzcGFucyBpbnRvIEFwcEtpdCdzIE9UZWwgcGlwZWxpbmUuIERlZmF1bHRzIHRvIG9uIG9ubHkgd2hlbiBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgb3IgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVCBpcyBzZXQuXCIsXG4gICAgfSxcbiAgICBmZWVkYmFjazoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJMb2cgdGh1bWJzIC8gY29tbWVudCBhc3Nlc3NtZW50cyB0byBNTGZsb3cgYW5kIHN1cmZhY2UgdGhlIGZlZWRiYWNrIGNvbnRyb2xzLiBEZWZhdWx0cyB0byBvbiBvbmx5IHdoZW4gYW4gT1RMUCBlbmRwb2ludCBhbmQgTUxGTE9XX0VYUEVSSU1FTlRfSUQgb3IgTUxGTE9XX0VYUEVSSU1FTlRfTkFNRSBhcmUgc2V0LlwiLFxuICAgIH0sXG4gICAgbWNwOiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRXhwb3NlIHRoZSByZWdpc3RlcmVkIGFnZW50cyBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYWdlbnRzLW9ubHk7IGFuIG9iamVjdCB0dW5lcyB0aGUgc2VydmVyIGlkLCBhZHZlcnRpc2VkIG1ldGFkYXRhLCBhbmQgd2hldGhlciBhbWJpZW50IHRvb2xzIGFyZSBleHBvc2VkLlwiLFxuICAgIH0sXG4gICAgZ2VuaWVJZGVudGl0eToge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIC8vIERlcml2ZWQgZnJvbSB0aGUgcmVzb2x2ZXIncyBvd24gbGlzdCwgc28gYSBtb2RlIGNhbiBuZXZlciBiZSBhY2NlcHRlZCBhdFxuICAgICAgLy8gcnVudGltZSB3aGlsZSB0aGUgcHVibGlzaGVkIHNjaGVtYSAoYW5kIHRoZSBVSSBidWlsdCBmcm9tIGl0KSBvbWl0cyBpdC5cbiAgICAgIGVudW06IFsuLi5JREVOVElUWV9NT0RFU10sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1doaWNoIERhdGFicmlja3MgaWRlbnRpdHkgdGhlIGFnZW50c1xcJyB3b3Jrc3BhY2UgY2FsbHMgKHNlcnZpbmcgY2F0YWxvZ3VlLCBHZW5pZSwgc3RhdGVtZW50IGV4ZWN1dGlvbikgcnVuIGFzLiBcInVzZXJcIiAoZGVmYXVsdCkgaXMgYWx3YXlzIE9CTywgc28gY2FsbGVycyBtdXN0IGJlIHdvcmtzcGFjZSBtZW1iZXJzOyBcInNlcnZpY2UtcHJpbmNpcGFsXCIgYWx3YXlzIHVzZXMgdGhlIGFwcCBzZXJ2aWNlIHByaW5jaXBhbCwgc28gYW55IGNhbGxlciB3aG8gY2FuIG9wZW4gdGhlIGFwcCB3b3JrcywgYXQgdGhlIGNvc3Qgb2YgcGVyLXVzZXIgYXR0cmlidXRpb247IFwiYXV0b1wiIHVzZXMgT0JPIHdoZW4gdGhlIHJlcXVlc3QgY2FycmllcyBhbiBPQk8gdG9rZW4gYW5kIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCB3aGVuIGl0IGRvZXMgbm90LCBmb3IgYW4gYXBwIHRoYXQgYWxzbyBzZXJ2ZXMgYSB0dW5uZWwgb3Igd2ViaG9vayBkb29yLiBGYWxscyBiYWNrIHRvIE1BU1RSQV9HRU5JRV9JREVOVElUWS4nLFxuICAgIH0sXG4gICAgYXBpQWNjZXNzOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZW51bTogW1wic2NvcGVkXCIsIFwiZnVsbFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnSG93IG11Y2ggb2YgdGhlIHN0b2NrIEBtYXN0cmEvZXhwcmVzcyBBUEkgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIG1vdW50LiBcInNjb3BlZFwiIChkZWZhdWx0KSBhbGxvd3MgYWdlbnQgaW5mZXJlbmNlLCByZWFkLW9ubHkgYWdlbnQgbWV0YWRhdGEsIHRoaXMgcGx1Z2luXFwncyBvd24gcm91dGVzLCBhbmQgTUNQOyBcImZ1bGxcIiBkaXNwYXRjaGVzIHRoZSBlbnRpcmUgbWFuYWdlbWVudCBzdXJmYWNlLicsXG4gICAgfSxcbiAgICBicmFuZDoge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlBvcnRhYmxlIGJyYW5kIGNvbnRleHQgYXBwbGllZCB0byBnZW5lcmF0ZWQgY2hhcnRzIChzZXJpZXMgcGFsZXR0ZSBmcm9tIGNvbG9ycy5wcmltYXJ5IC8gY29sb3JzLmFjY2VudCwgYmFzZSBmb250IGZyb20gdHlwb2dyYXBoeS5zYW5zKS5cIixcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQUtuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUl4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0FBRXpEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbUJBQW1CLENBQUM7QUFFekQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQzNELHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFB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VCxxSEFBcUg7U0FDeEg7UUFDRCxhQUFhLEVBQUU7WUFDYixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxxSkFBcUo7U0FDeEo7UUFDRCxRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxxTEFBcUw7U0FDeEw7UUFDRCxHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQzNCLFdBQVcsRUFDVCw0SkFBNEo7U0FDL0o7UUFDRCxhQUFhLEVBQUU7WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLDJFQUEyRTtZQUMzRSwwRUFBMEU7WUFDMUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDekIsV0FBVyxFQUNULDZmQUE2ZjtTQUNoZ0I7UUFDRCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDeEIsV0FBVyxFQUNULHFPQUFxTztTQUN4TztRQUNELEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULDBJQUEwSTtTQUM3STtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGx1Z2luIGNvbmZpZ3VyYXRpb24gdHlwZXMgYW5kIHNoYXJlZCBgUmVxdWVzdENvbnRleHRgIGtleXMuXG4gKlxuICogT3ducyB0aGUgdHlwZWQge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZ30gKHRoZSBwbHVnaW4ncyBzbGljZSBvZiBBcHBLaXRcbiAqIGNvbmZpZykgYW5kIHtAbGluayBNQVNUUkFfQ09ORklHX1NDSEVNQX0sIHRoZSBKU09OIFNjaGVtYSB0aGUgbWFuaWZlc3RcbiAqIHB1Ymxpc2hlcyBmb3IgaXQgc28gc2NhZmZvbGRpbmcgdG9vbHMgYW5kIGFnZW50cyBjYW4gcmVhZCB0aGUgb3B0aW9uIHNldC5cbiAqXG4gKiBQcmVjZWRlbmNlIHBlciBmaWVsZCBpcyBleHBsaWNpdCBwbHVnaW4gY29uZmlnLCB0aGVuIHRoZSBlbnZpcm9ubWVudFxuICogdmFyaWFibGUgbmFtZWQgb24gdGhlIGZpZWxkLCB0aGVuIGEgYnVpbHQtaW4gZGVmYXVsdC5cbiAqXG4gKiBLZXB0IGluIGEgbGVhZiBtb2R1bGUgc28gYHBsdWdpbi50c2AsIGBzZXJ2ZXIudHNgLCBgbW9kZWwudHNgLCBhbmRcbiAqIGBtZW1vcnkudHNgIGNhbiBpbXBvcnQgdGhlbSB3aXRob3V0IGNyZWF0aW5nIGEgY3ljbGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGdldEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUgQmFzZVBsdWdpbkNvbmZpZywgdHlwZSBDb25maWdTY2hlbWEgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBhcHBraXQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRDb250ZXh0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL2FnZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB7IE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksIE1BU1RSQV9USFJFQURfSURfS0VZIH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgUGdWZWN0b3JDb25maWcsIFBvc3RncmVzU3RvcmVDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9wZ1wiO1xuXG5pbXBvcnQgdHlwZSB7IEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhVG9vbHMgfSBmcm9tIFwiLi9hZ2VudHMudHNcIjtcbmltcG9ydCB0eXBlIHsgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9nZW5pZS50c1wiO1xuaW1wb3J0IHsgSURFTlRJVFlfTU9ERVMsIHR5cGUgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vaWRlbnRpdHkudHNcIjtcbmltcG9ydCB0eXBlIHsgUmVtb3RlU2tpbGxzT3B0aW9uIH0gZnJvbSBcIi4vcmVtb3RlLXNraWxscy50c1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhYnJpY2tzV29ya3NwYWNlU2FuZGJveE9wdGlvbnMgfSBmcm9tIFwiLi9zYW5kYm94LnRzXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgdW5kZXIgd2hpY2gge0BsaW5rIE1hc3RyYVNlcnZlcn0gc3RvcmVzIHRoZVxuICogcmVzb2x2ZWQgQXBwS2l0IHVzZXIuIGBtb2RlbC50c2AgcmVhZHMgaXQgdG8gbWludCB1c2VyLXNjb3BlZFxuICogRGF0YWJyaWNrcyB0b2tlbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9LRVkgPSBcIm1hc3RyYV9fdXNlclwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyBmb3IgQXBwS2l0IHVzZXIgbWV0YWRhdGEgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFN1cmZhY2VkIGFzIHRyYWNlIG1ldGFkYXRhIHZpYVxuICoge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSBzbyB0cmFjZXMgYXJlIGZpbHRlcmFibGUgYnkgd2hvXG4gKiBpc3N1ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBsZWFraW5nIHRoZSBmdWxsIHVzZXIgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfTkFNRV9LRVkgPSBcIm1hc3RyYV9fdXNlck5hbWVcIjtcbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9FTUFJTF9LRVkgPSBcIm1hc3RyYV9fdXNlckVtYWlsXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgZm9yIHRoZSBwZXItSFRUUC1yZXF1ZXN0IGlkIHN0YW1wZWQgYnlcbiAqIHtAbGluayBNYXN0cmFTZXJ2ZXJ9LiBSZWFkcyBgWC1SZXF1ZXN0LUlkYCBmcm9tIHRoZSBpbmNvbWluZ1xuICogaGVhZGVycyB3aGVuIHByZXNlbnQgKHNvIGFuIHVwc3RyZWFtIGxvYWQgYmFsYW5jZXIgLyBBUEkgZ2F0ZXdheVxuICogY2FuIGtlZXAgaXRzIHRyYWNlIGNvcnJlbGF0aW9uKSwgZmFsbHMgYmFjayB0byBhIGZyZXNobHkgbWludGVkXG4gKiBVVUlELiBFY2hvZWQgYmFjayBvbiB0aGUgcmVzcG9uc2UgYW5kIHN1cmZhY2VkIG9uIGV2ZXJ5IHNwYW4gdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIGxvZ3MgYW5kIHRyYWNlcyBzaGFyZSBhXG4gKiBqb2luIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9SRVFVRVNUX0lEX0tFWSA9IFwibWFzdHJhX19yZXF1ZXN0SWRcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgT0F1dGggc2NvcGVzIHBhcnNlZCBmcm9tIHRoZSBmb3J3YXJkZWRcbiAqIGFjY2VzcyB0b2tlbiBieSB7QGxpbmsgTWFzdHJhU2VydmVyLmNvbmZpZ3VyZVJlcXVlc3RDb250ZXh0U2NvcGVzfS5cbiAqIFdvcmtzcGFjZSBtb3VudHMgdGhhdCB0b3VjaCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBmaWxlcyByZXF1aXJlXG4gKiBgd29ya3NwYWNlYCBvciBgYWxsLWFwaXNgIGluIHRoaXMgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9TQ09QRVNfS0VZID0gXCJtYXN0cmFfX3Njb3Blc1wiO1xuXG4vKipcbiAqIENhbm9uaWNhbCBsaXN0IG9mIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB3ZSB3YW50IE1hc3RyYSB0byBleHRyYWN0XG4gKiBhcyBtZXRhZGF0YSBvbiBldmVyeSBvYnNlcnZhYmlsaXR5IHNwYW4gKGFnZW50IHJ1bnMsIG1vZGVsIGNhbGxzLFxuICogdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIGh0dHBzOi8vbWFzdHJhLmFpL2RvY3Mvb2JzZXJ2YWJpbGl0eS90cmFjaW5nL292ZXJ2aWV3I2F1dG9tYXRpYy1tZXRhZGF0YS1mcm9tLXJlcXVlc3Rjb250ZXh0fTpcbiAqIHBhc3NlZCB2ZXJiYXRpbSBpbnRvIGBPYnNlcnZhYmlsaXR5LmNvbmZpZ3NbKl0ucmVxdWVzdENvbnRleHRLZXlzYCxcbiAqIHNvIGFueSBrZXkgbGlzdGVkIGhlcmUgaXMgcmVhZCBmcm9tIGBSZXF1ZXN0Q29udGV4dGAgYXQgdHJhY2VcbiAqIHN0YXJ0IGFuZCBhdHRhY2hlZCBhcyBzY2FsYXIgc3BhbiBtZXRhZGF0YS4gS2VlcCB0aGUgc2V0IHRvIHBsYWluXG4gKiBzY2FsYXJzIC0gbmV2ZXIgaW5jbHVkZSB7QGxpbmsgTUFTVFJBX1VTRVJfS0VZfSAoaXQgY2FycmllcyB0aGVcbiAqIGZ1bGwgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggYSBgV29ya3NwYWNlQ2xpZW50YCByZWZlcmVuY2UpLlxuICpcbiAqIE9yZGVyIGlzIHB1cmVseSBjb3NtZXRpYzsgTWFzdHJhIGRlLWR1cGVzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksXG4gIE1BU1RSQV9USFJFQURfSURfS0VZLFxuICBNQVNUUkFfUkVRVUVTVF9JRF9LRVksXG4gIE1BU1RSQV9VU0VSX05BTUVfS0VZLFxuICBNQVNUUkFfVVNFUl9FTUFJTF9LRVksXG4gIC8vIE1vZGVsIG92ZXJyaWRlIGtleSBpcyBvd25lZCBieSBgc2VydmluZy50c2A7IHNwZWxsZWQgaW5saW5lIGhlcmVcbiAgLy8gc28gdGhpcyBtb2R1bGUgc3RheXMgbGVhZi1sZXZlbCAobm8gY3ljbGVzIHdpdGggYHNlcnZpbmcudHNgKS5cbiAgXCJtYXN0cmFfX21vZGVsX292ZXJyaWRlXCIsXG5dO1xuXG4vKiogQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHBsdXMgdGhlIGNhbm9uaWNhbCB1c2VyIGlkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgaWQ6IHN0cmluZztcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBpZGVudGl0eSBmb3IgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0OiB0aGUgT0JPIHVzZXIgaWQgb24gYVxuICogdXNlci1zY29wZWQgY2FsbCwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoY29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFwidXNlcklkXCIgaW4gY29udGV4dCA/IGNvbnRleHQudXNlcklkIDogY29udGV4dC5zZXJ2aWNlVXNlcklkO1xufVxuXG4vKipcbiAqIFdobyBhIHR1cm4gaXMgQVRUUklCVVRFRCB0bywgd2hpY2ggaXMgbm90IGFsd2F5cyB3aG9zZSBEYXRhYnJpY2tzIGNyZWRlbnRpYWxcbiAqIHJ1bnMgaXQuIEFuIE9CTyBjb250ZXh0J3Mgb3duIHVzZXIgaWQgaXMgYXV0aG9yaXRhdGl2ZS4gVW5kZXIgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCwgZXZlcnkgY2FsbGVyIHNoYXJlcyBvbmUgY3JlZGVudGlhbCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlkIGlzXG4gKiB3aGF0IGtlZXBzIG1lbW9yeSB0aHJlYWRzIGFuZCBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2VzIGRpc3RpbmN0OyB0aGUgc2VydmljZVxuICogcHJpbmNpcGFsIGlkIGlzIHRoZSBmbG9vciB3aGVuIG5vIHVzZXIgd2FzIGZvcndhcmRlZC5cbiAqXG4gKiBUaGlzIHJ1bGUgaGFzIHRvIGJlIGlkZW50aWNhbCBldmVyeXdoZXJlIGEgY2FjaGUga2V5IGlzIGJ1aWx0LCBzbyBib3RoIHRoZVxuICogd3JpdGUgc2lkZSAodGhlIGBSZXF1ZXN0Q29udGV4dGAgdXNlciBzdGFtcGVkIGJ5IGBzdGFtcFJlcXVlc3RDb250ZXh0VXNlcmApXG4gKiBhbmQgdGhlIHJlYWQgc2lkZSAodGhlIHBsdWdpbidzIG93biBBcHBLaXQgcm91dGVzLCB3aGljaCBoYXZlIGEgcmVxdWVzdCBidXRcbiAqIG5vIGBSZXF1ZXN0Q29udGV4dGApIGRlcml2ZSB0aGVpciBrZXkgZnJvbSB0aGlzIG9uZSBmdW5jdGlvbi4gV2hlbiB0aGUgdHdvXG4gKiBkaXNhZ3JlZWQsIGEgY2hhcnQgd3JpdHRlbiB1bmRlciB0aGUgZm9yd2FyZGVkIHVzZXIgaWQgd2FzIHJlYWQgYmFjayB1bmRlclxuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIGFuZCB0aGUgZW1iZWQgcm91dGUgYW5zd2VyZWQgNDA0LCB3aGljaCB0aGUgY2hhdCBVSVxuICogcmVuZGVycyBhcyBhbiBleHBpcmVkIGNoYXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlZFVzZXJJZChcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlLFxuICBmb3J3YXJkZWRVc2VySWQ/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBpZiAoXCJpc1VzZXJDb250ZXh0XCIgaW4gZXhlY3V0aW9uQ29udGV4dCkgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG4gIHJldHVybiBmb3J3YXJkZWRVc2VySWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChleGVjdXRpb25Db250ZXh0KTtcbn1cblxuLyoqXG4gKiBJZGVudGl0eSBldmVyeSBwZXItdXNlciBjYWNoZSBlbnRyeSBpcyBuYW1lc3BhY2VkIHVuZGVyLCBzbyBhbiBPQk8gcmVzdWx0XG4gKiBjYW5ub3QgYmUgcmVhZCBiYWNrIGJ5IGFub3RoZXIgY2FsbGVyLlxuICpcbiAqIFByZWZlcnMgdGhlIHtAbGluayBVc2VyfSB0aGF0IHtAbGluayBNYXN0cmFTZXJ2ZXJ9IHN0YW1wcyBvbiB0aGUgcmVxdWVzdFxuICogY29udGV4dCwgd2hvc2UgaWQgYWxyZWFkeSBmb2xsb3dzIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfS4gVGhlIE1DUCB0cmFuc3BvcnRcbiAqIHJvdXRlcyBkbyBub3QgdGhyZWFkIHRoYXQgY29udGV4dCBpbnRvIHRvb2wgZXhlY3V0aW9uLCBzbyB0aG9zZSBmYWxsIGJhY2sgdG9cbiAqIHRoZSBhbWJpZW50IGV4ZWN1dGlvbiBjb250ZXh0ICh0aGUgYWN0aXZlIE9CTyBzY29wZSwgb3IgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCkuIEEgY2FsbGVyIGhvbGRpbmcgYW4gZXhwcmVzcyByZXF1ZXN0IHNob3VsZCBidWlsZCBpdHMga2V5IGZyb21cbiAqIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfSBpbnN0ZWFkLCBzbyB0aGUgZm9yd2FyZGVkIHVzZXIgaXMgbm90IGxvc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXNlcktleShyZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgdXNlciA9IHJlcXVlc3RDb250ZXh0Py5nZXQoTUFTVFJBX1VTRVJfS0VZKSBhcyBVc2VyIHwgdW5kZWZpbmVkO1xuICByZXR1cm4gdXNlcj8uaWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChnZXRFeGVjdXRpb25Db250ZXh0KCkpO1xufVxuXG4vKiogUGdWZWN0b3IgY29uZmlnIHdpdGggYW4gb3B0aW9uYWwgTWFzdHJhIHN0b3JlIGlkLiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhTWVtb3J5Q29uZmlnID0gUGdWZWN0b3JDb25maWcgJiB7XG4gIGlkPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBGaW5lLWdyYWluZWQgY29udHJvbCBmb3IgdGhlIG9wdGlvbmFsIE1DUCBzZXJ2ZXIgZXhwb3N1cmVcbiAqICh7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLm1jcH0pLiBFdmVyeSBmaWVsZCBpcyBvcHRpb25hbDsgdGhlIG9iamVjdFxuICogZm9ybSBvbmx5IG5lZWRzIHRvIHNldCB3aGF0IGRpZmZlcnMgZnJvbSB0aGUgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhTWNwQ29uZmlnIHtcbiAgLyoqXG4gICAqIFNlcnZlciBpZCB1c2VkIGluIHRoZSByb3V0ZSBwYXRoIChgL21jcC88c2VydmVySWQ+Ly4uLmApIGFuZCBhcyB0aGVcbiAgICogTUNQIHJlZ2lzdHJ5IGlkLiBEZWZhdWx0cyB0byB0aGUgcGx1Z2luJ3MgcmVnaXN0ZXJlZCBuYW1lLlxuICAgKi9cbiAgc2VydmVySWQ/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYFwiPGRpc3BsYXlOYW1lPiBNQ1BcImAuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBTZW1hbnRpYyB2ZXJzaW9uIGFkdmVydGlzZWQgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGBcIjEuMC4wXCJgLiAqL1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBvc2UgZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCBhcyBhbiBgYXNrXzxhZ2VudElkPmAgTUNQIHRvb2wuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYCAtIHRoaXMgaXMgdGhlIFwibGV2ZXJhZ2UgdGhlIE1hc3RyYSBhZ2VudHMgb3ZlclxuICAgKiBNQ1BcIiBiZWhhdmlvciBtb3N0IGNhbGxlcnMgd2FudC5cbiAgICovXG4gIGFnZW50cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbHNvIGV4cG9zZSB0aGUgcGx1Z2luJ3MgYW1iaWVudCB0b29scyAodGhlIGJ1aWx0LWluIGByZW5kZXJfZGF0YWBcbiAgICogcGx1cyBhbnl0aGluZyBpbiBgY29uZmlnLnRvb2xzYCkgYXMgTUNQIHRvb2xzLiBEZWZhdWx0cyB0byBgZmFsc2VgOlxuICAgKiB0aGUgYW1iaWVudCB0b29scyBhc3N1bWUgYW4gaW4tcHJvY2VzcyBjaGF0IHR1cm4gKHRoZXkgcHVibGlzaFxuICAgKiB3cml0ZXIgZXZlbnRzIHRoZSBjaGF0IFVJIGNvbnN1bWVzKSwgc28gdGhleSBhcmVuJ3QgdXNlZnVsIHRvIGFcbiAgICogc3RhbmRhbG9uZSBNQ1AgY2xpZW50LiBUdXJuIHRoaXMgb24gb25seSB3aGVuIHRob3NlIHRvb2xzIGFyZSBzYWZlXG4gICAqIHRvIGNhbGwgb3V0LW9mLWJhbmQuXG4gICAqL1xuICB0b29scz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeHRyYSB0b29scyB0byBleHBvc2Ugb3ZlciBNQ1AgYmV5b25kIHRoZSBhZ2VudCAvIGFtYmllbnQgc2V0cy5cbiAgICogVXNlIHRoaXMgZm9yIHRvb2xzIHdyaXR0ZW4gc3BlY2lmaWNhbGx5IGZvciBNQ1AgY29uc3VtZXJzLlxuICAgKi9cbiAgZXh0cmFUb29scz86IE1hc3RyYVRvb2xzO1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBhY2NlcHRlZCBieSB0aGUgTWFzdHJhIEFwcEtpdCBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RyYVBsdWdpbkNvbmZpZyBleHRlbmRzIEJhc2VQbHVnaW5Db25maWcge1xuICAvKiogTWFzdHJhIE9wZW5BSS1jb21wYXRpYmxlIHByb3ZpZGVyIGlkLiBEZWZhdWx0cyB0byBgXCJkYXRhYnJpY2tzXCJgOyBubyBlbnYgZmFsbGJhY2suICovXG4gIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcy9tZXNzYWdlcy4gYHRydWVgIHJldXNlcyB0aGVcbiAgICogYGxha2ViYXNlYCBwbHVnaW4ncyBwb29sOyBhbiBvYmplY3Qgb3BlbnMgYSBkZWRpY2F0ZWQgc3RvcmUuXG4gICAqL1xuICBzdG9yYWdlPzogYm9vbGVhbiB8IFBvc3RncmVzU3RvcmVDb25maWc7XG4gIC8qKlxuICAgKiBQZ1ZlY3RvciBzdG9yZSBmb3IgTWFzdHJhIG1lbW9yeSByZWNhbGwuIGB0cnVlYCByZXVzZXMgdGhlXG4gICAqIGBsYWtlYmFzZWAgcGx1Z2luJ3MgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgZGVkaWNhdGVkIHN0b3JlLlxuICAgKi9cbiAgbWVtb3J5PzogYm9vbGVhbiB8IE1hc3RyYU1lbW9yeUNvbmZpZztcbiAgLyoqXG4gICAqIFNhbmRib3ggZm9yIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzLiBEZWZhdWx0cyB0byBEYXRhYnJpY2tzIFNhbmRib3guXG4gICAqIGB0cnVlYCBzZWxlY3RzIERhdGFicmlja3Mgd2l0aCBkZWZhdWx0cywgYW4gb2JqZWN0IGNvbmZpZ3VyZXMgaXRzIGxpZmVjeWNsZSxcbiAgICogYW5kIGBmYWxzZWAgZGlzYWJsZXMgd29ya3NwYWNlIGNvbW1hbmQgZXhlY3V0aW9uLiBBbiBhZ2VudCB3aXRoIGFuIGV4cGxpY2l0XG4gICAqIGN1c3RvbSBgd29ya3NwYWNlYCBrZWVwcyB0aGF0IHdvcmtzcGFjZSBhbmQgaXRzIHNhbmRib3guXG4gICAqL1xuICBzYW5kYm94PzogYm9vbGVhbiB8IFwiZGF0YWJyaWNrc1wiIHwgXCJtb250eVwiIHwgRGF0YWJyaWNrc1dvcmtzcGFjZVNhbmRib3hPcHRpb25zO1xuICAvKipcbiAgICogQ29kZS1kZWZpbmVkIGFnZW50cy4gQWNjZXB0cyB0aHJlZSBzaGFwZXMgZm9yIGNvbnZlbmllbmNlOlxuICAgKlxuICAgKiAtICoqUmVjb3JkKio6IGB7IGFuYWx5c3Q6IGRlZiwgaGVscGVyOiBkZWYgfWAgLSBrZXlzIGJlY29tZSB0aGVcbiAgICogICByZWdpc3RlcmVkIGlkcyBhbmQgdGhlIGZpcnN0IGtleSBpcyB0aGUgZGVmYXVsdC5cbiAgICogLSAqKlNpbmdsZSBkZWZpbml0aW9uKio6IGBkZWZgIC0gcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBcImRlZmF1bHRcImAgd2hlbiBgbmFtZWAgaXMgb21pdHRlZCkgYW5kXG4gICAqICAgYXV0b21hdGljYWxseSBtYXJrZWQgYXMgdGhlIGRlZmF1bHQgYWdlbnQuXG4gICAqIC0gKipBcnJheSoqOiBgW2RlZjEsIGRlZjJdYCAtIGVhY2ggcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBhZ2VudF8ke2l9YCB3aGVuIGBuYW1lYCBpcyBvbWl0dGVkKTtcbiAgICogICB0aGUgZmlyc3QgZW50cnkgaXMgdGhlIGRlZmF1bHQuXG4gICAqXG4gICAqIEVhY2ggZW50cnkgYmVjb21lcyBhIE1hc3RyYSBgQWdlbnRgIHJlYWNoYWJsZSBhdFxuICAgKiBgL2FwaS88cGx1Z2luPi9yb3V0ZS9jaGF0LzxpZD5gICh0aGUgY2hhdCByb3V0ZSBhbHNvIG1hdGNoZXNcbiAgICogYDphZ2VudElkYCkuIFdoZW4gYGFnZW50c2AgaXMgb21pdHRlZCBlbnRpcmVseSwgdGhlIHBsdWdpblxuICAgKiByZWdpc3RlcnMgYSBzaW5nbGUgYnVpbHQtaW4gYGRlZmF1bHRgIGFuYWx5c3Qgc28gdGhlIGJhcmVcbiAgICogYG1hc3RyYSgpYCBjYWxsIHN0aWxsIG1vdW50cyBhIHdvcmtpbmcgY2hhdCBlbmRwb2ludC5cbiAgICpcbiAgICogQGV4YW1wbGUgU2luZ2xlLWFnZW50IHNob3J0aGFuZFxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgQXJyYXlcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IFtcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJhbmFseXN0XCIsIGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJoZWxwZXJcIiwgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgIF0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgUmVjb3JkIChleHBsaWNpdCBpZHMpXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiB7XG4gICAqICAgICBhbmFseXN0OiBjcmVhdGVBZ2VudCh7IGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGhlbHBlcjogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgfSxcbiAgICogICBkZWZhdWx0QWdlbnQ6IFwiYW5hbHlzdFwiLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhZ2VudHM/OlxuICAgIHwgUmVjb3JkPHN0cmluZywgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uPlxuICAgIHwgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uXG4gICAgfCBBbnlNYXN0cmFBZ2VudERlZmluaXRpb25bXTtcbiAgLyoqXG4gICAqIEFtYmllbnQgdG9vbHMgc3ByZWFkIGludG8gZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCdzIHRvb2xzIHJlY29yZDtcbiAgICogcGVyLWFnZW50IHRvb2xzIHdpbiBvbiBrZXkgY29sbGlzaW9uLiBVc2UgZm9yIGEgc21hbGwgc2hhcmVkXG4gICAqIGxpYnJhcnk7IGZvciBwZXItYWdlbnQgdG9vbHMgc2V0IGBhZ2VudHNbaWRdLnRvb2xzYCBpbnN0ZWFkLlxuICAgKi9cbiAgdG9vbHM/OiBNYXN0cmFUb29scztcbiAgLyoqXG4gICAqIEFnZW50IGlkIHVzZWQgd2hlbiB0aGUgY2xpZW50IGRvZXNuJ3Qgc3BlY2lmeSBvbmUgKHRoZSBiYXJlLFxuICAgKiB1bi1zdWZmaXhlZCBoaXN0b3J5IC8gc3VnZ2VzdGlvbnMgcm91dGVzIHJlc29sdmUgdG8gaXQpLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgZmlyc3Qga2V5IGluIGBhZ2VudHNgIChvciBgXCJkZWZhdWx0XCJgIHdoZW5cbiAgICogYGFnZW50c2AgaXMgb21pdHRlZCkuIE11c3QgbWF0Y2ggYW4gaWQgaW4gYGFnZW50c2Agd2hlbiBib3RoIGFyZVxuICAgKiBzZXQ7IGEgbWlzbWF0Y2ggdGhyb3dzIGF0IHNldHVwIHdpdGggdGhlIGF2YWlsYWJsZSBjYW5kaWRhdGVzLlxuICAgKi9cbiAgZGVmYXVsdEFnZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogUGx1Z2luLWxldmVsIGRlZmF1bHQgbW9kZWwgYXBwbGllZCB0byBldmVyeSBhZ2VudCB0aGF0IG9taXRzIGl0c1xuICAgKiBvd24gYG1vZGVsYC4gTWlycm9ycyBBcHBLaXQncyBgYWdlbnRzKHsgZGVmYXVsdE1vZGVsIH0pYC5cbiAgICpcbiAgICogLSBgc3RyaW5nYDogc2hvcnRoYW5kIGZvciBcInVzZSB0aGUgT0JPIGF1dG8tcmVzb2x2ZXIgYnV0IHN3YXAgdGhlXG4gICAqICAgYG1vZGVsSWRgXCIgKGUuZy4gYFwiZGF0YWJyaWNrcy1jbGF1ZGUtc29ubmV0LTQtNlwiYCkuXG4gICAqIC0gQW55IG90aGVyIE1hc3RyYSBgRHluYW1pY0FyZ3VtZW50PE1hc3RyYU1vZGVsQ29uZmlnPmA6IHBhc3NlZFxuICAgKiAgIHRocm91Z2ggdmVyYmF0aW0uIFVzZSB0aGlzIHdoZW4geW91IG5lZWQgZnVsbCBjb250cm9sIG92ZXIgYXV0aFxuICAgKiAgIG9yIGBwcm92aWRlcklkYC5cbiAgICpcbiAgICogUmVzb2x1dGlvbiBvcmRlciBwZXIgYWdlbnQ6IGBkZWYubW9kZWxgIOKGkiBgZGVmYXVsdE1vZGVsYCDihpJcbiAgICogYERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FYCDihpIgYnVpbHQtaW4gYC9zZXJ2aW5nLWVuZHBvaW50c2BcbiAgICogcmVzb2x2ZXIuXG4gICAqL1xuICBkZWZhdWx0TW9kZWw/OiBBZ2VudENvbmZpZ1tcIm1vZGVsXCJdIHwgc3RyaW5nO1xuICAvKipcbiAgICogRnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMgKGBcImNsYXVkZSBzb25uZXRcImApIGFnYWluc3QgdGhlIHdvcmtzcGFjZSdzXG4gICAqIE1vZGVsIFNlcnZpbmcgZW5kcG9pbnRzLiBEZWZhdWx0cyB0byBgdHJ1ZWA7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogU2V0IGBmYWxzZWAgdG8gcmVxdWlyZSBleGFjdCBlbmRwb2ludCBuYW1lcyBldmVyeXdoZXJlLlxuICAgKi9cbiAgbW9kZWxGdXp6eU1hdGNoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGZvciB0aGUgZnV6enkgbWF0Y2hlciwgMCAoZXhhY3QpIHRvIDEgKGFueXRoaW5nKS5cbiAgICogRGVmYXVsdHMgdG8gYDAuNGA7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogTG93ZXIgdmFsdWVzIHJlamVjdCBsb29zZSBtYXRjaGVzOyByYWlzZSBpdCBpZiB5b3UgaGF2ZSBhIHNwcmF3bGluZ1xuICAgKiBlbmRwb2ludCBjYXRhbG9ndWUgd2l0aCBzaW1pbGFyLWxvb2tpbmcgbmFtZXMuXG4gICAqL1xuICBtb2RlbEZ1enp5VGhyZXNob2xkPzogbnVtYmVyO1xuICAvKipcbiAgICogVFRMIGZvciB0aGUgaW4tbWVtb3J5IHNlcnZpbmctZW5kcG9pbnRzIGxpc3QgY2FjaGUsIGluIG1pbGxpc2Vjb25kcy5cbiAgICogRGVmYXVsdHMgdG8gNSBtaW51dGVzOyBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIFRoZSBjYWNoZSBpcyBwZXIgd29ya3NwYWNlIGhvc3QgYW5kIHNoYXJlZCBhY3Jvc3MgdXNlcnM7IGNvbmN1cnJlbnRcbiAgICogY2FsbGVycyBjb2FsZXNjZSBvbiBhIHNpbmdsZSBpbi1mbGlnaHQgZmV0Y2guXG4gICAqL1xuICBtb2RlbENhY2hlVHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBMZXQgY2xpZW50cyBwaWNrIHRoZSBiYWNraW5nIGVuZHBvaW50IHBlciByZXF1ZXN0LiBEZWZhdWx0cyB0byBgdHJ1ZWA7XG4gICAqIG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogUmVhZHMgdGhlIGBYLU1hc3RyYS1Nb2RlbGAgaGVhZGVyLCB0aGUgYD9tb2RlbD1gIHF1ZXJ5IHN0cmluZywgb3IgYVxuICAgKiBgbW9kZWxgIGJvZHkgZmllbGQsIGluIHRoYXQgb3JkZXIuIERpc2FibGUgd2hlbiBydW5uaW5nIG11bHRpLXRlbmFudFxuICAgKiB3aGVyZSB1bnRydXN0ZWQgY2xpZW50cyBzaG91bGRuJ3QgY2hvb3NlIHRoZSBlbmRwb2ludC5cbiAgICovXG4gIG1vZGVsT3ZlcnJpZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJpb3JpdHktb3JkZXJlZCBsaXN0IG9mIGVuZHBvaW50IG5hbWVzIHRyaWVkICpmaXJzdCogd2hlbiBub1xuICAgKiBhZ2VudCAvIHBsdWdpbiAvIGVudiAvIHJlcXVlc3Qtb3ZlcnJpZGUgbW9kZWwgaWQgaXMgc2V0LCBhaGVhZCBvZlxuICAgKiB0aGUgZHluYW1pYyBzY29yZS1jbGFzc2lmaWVkIGNhdGFsb2d1ZS4gVGhlIHJlc29sdmVyIHBpY2tzIHRoZVxuICAgKiBmaXJzdCBpZCB0aGF0IGlzIGFjdHVhbGx5IHByZXNlbnQgaW4gdGhlIHdvcmtzcGFjZSdzXG4gICAqIGAvc2VydmluZy1lbmRwb2ludHNgIGxpc3RpbmcuXG4gICAqXG4gICAqIFdoZW4gdW5zZXQsIHJlc29sdXRpb24gaXMgZHJpdmVuIGJ5IHRoZSBsaXZlIEZvdW5kYXRpb24gTW9kZWwgQVBJXG4gICAqIGBxdWFsaXR5YCAvIGBzcGVlZGAgLyBgY29zdGAgc2NvcmVzOiBlbmRwb2ludHMgYXJlIGNsYXNzaWZpZWQgaW50b1xuICAgKiBjaGF0IGNsYXNzZXMgKGBjbGFzc2lmeUVuZHBvaW50c2ApIGFuZCB3YWxrZWQgYmVzdC1maXJzdFxuICAgKiAoQ2hhdFRoaW5raW5nIC0+IENoYXRCYWxhbmNlZCAtPiBDaGF0RmFzdCksIHdpdGggdGhlIHNtYWxsIGJ1aWx0LWluXG4gICAqIGBGQUxMQkFDS19NT0RFTF9JRFNgIGxpc3QgYXMgdGhlIGZsb29yIHdoZW4gdGhlIGNhdGFsb2d1ZSBjYW4ndCBiZVxuICAgKiByZWFkLiBTZXQgdGhpcyB0b1xuICAgKiBwaW4gYSByZWd1bGF0ZWQgd29ya3NwYWNlIHRvIGFuIGFwcHJvdmVkIHN1YnNldCwgb3IgdG8gcHV0IGN1c3RvbVxuICAgKiBlbmRwb2ludHMgaW4gZnJvbnQgb2YgdGhlIGF1dG8tY2xhc3NpZmllZCBjYXRhbG9ndWUuXG4gICAqL1xuICBkZWZhdWx0TW9kZWxGYWxsYmFja3M/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgIChkZWZhdWx0KSwgZXZlcnkgYWdlbnQgZ2V0cyBhIGJ1aWx0LWluIGlucHV0XG4gICAqIHByb2Nlc3NvciB0aGF0IHN0cmlwcyBgY2hhcnRJZGAgZmllbGRzIGZyb20gcHJpb3IgYXNzaXN0YW50XG4gICAqIHRvb2wtaW52b2NhdGlvbiByZXN1bHRzIGJlZm9yZSB0aGV5IHJlYWNoIHRoZSBtb2RlbC4gVGhpc1xuICAgKiBwcmV2ZW50cyB0aGUgbW9kZWwgZnJvbSByZXVzaW5nIHR1cm4tc2NvcGVkIGNoYXJ0SWRzIGl0IHNlZXNcbiAgICogaW4gbWVtb3J5IHJlY2FsbCAod2hpY2ggd291bGQgbGVhdmUgYFtjaGFydDo8aWQ+XWAgbWFya2Vyc1xuICAgKiBwb2ludGluZyBhdCB3cml0ZXIgZXZlbnRzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0KS5cbiAgICpcbiAgICogU2V0IHRvIGBmYWxzZWAgdG8gb3B0IG91dCAtIHVzZWZ1bCBpZiBhIG5vbi1kZWZhdWx0IGFnZW50XG4gICAqIG5lZWRzIGZ1bGwgdmlzaWJpbGl0eSBpbnRvIHByaW9yIGNoYXJ0SWRzIChlLmcuIGFuIGF1ZGl0XG4gICAqIGFnZW50IHJlYXNvbmluZyBhYm91dCBjaGFydCBsaW5lYWdlKS5cbiAgICovXG4gIHN0cmlwU3RhbGVDaGFydHM/OiBib29sZWFuO1xuICAvKipcbiAgICogU3R5bGUgZ3VhcmRyYWlscyBhcHBlbmRlZCB0byBldmVyeSBhZ2VudCdzIGBpbnN0cnVjdGlvbnNgIHRvIGN1cmJcbiAgICogY29tbW9uIExMTS1pc21zIChlbSBkYXNoZXMsIGVtb2ppcywgc3ljb3BoYW50aWMgb3BlbmVycywgdGhyb3dhd2F5XG4gICAqIGNsb3NlcnMsIGV4Y2Vzc2l2ZSBoZWRnaW5nKS5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCk6IHVzZSB0aGUgYnVpbHQtaW5cbiAgICogICBgREVGQVVMVF9TVFlMRV9JTlNUUlVDVElPTlNgIGZyb20gYGFnZW50cy50c2AuXG4gICAqIC0gYHN0cmluZ2A6IHJlcGxhY2UgdGhlIGRlZmF1bHQgd2l0aCB0aGUgc3VwcGxpZWQgYmxvY2suXG4gICAqIC0gYGZhbHNlYDogZGlzYWJsZSBlbnRpcmVseSAoYWdlbnRzIHNlZSBvbmx5IHRoZWlyIGJlc3Bva2VcbiAgICogICBgaW5zdHJ1Y3Rpb25zYCkuXG4gICAqXG4gICAqIEFwcGVuZGVkIChub3QgcHJlcGVuZGVkKSBzbyB0aGUgYWdlbnQncyByb2xlIGFuZCBydWxlcyBjb21lIGZpcnN0XG4gICAqIGFuZCB0aGUgc3R5bGUgYmxvY2sgbGVhbnMgb24gdGhlIG1vZGVsJ3MgcmVjZW5jeSBiaWFzLlxuICAgKi9cbiAgc3R5bGVJbnN0cnVjdGlvbnM/OiBzdHJpbmcgfCBmYWxzZTtcbiAgLyoqXG4gICAqIEdlbmllIHNwYWNlcyB0aGlzIHBsdWdpbidzIGFnZW50cyBjYW4gZGVsZWdhdGUgdG8uIE9uZSBNYXN0cmFcbiAgICogdG9vbCBpcyByZWdpc3RlcmVkIHBlciBhbGlhcyAoYGdlbmllYCBmb3IgdGhlIHdlbGwta25vd25cbiAgICogYGRlZmF1bHRgIGFsaWFzLCBgZ2VuaWVfPGFsaWFzPmAgb3RoZXJ3aXNlKS4gRWFjaCB0b29sIHNwaW5zXG4gICAqIHVwIGEgcGVyLXF1ZXN0aW9uIEdlbmllIHN1Yi1hZ2VudCB0aGF0IHJ1bnMgRGF0YWJyaWNrc1xuICAgKiBcImFnZW50IG1vZGVcIiBhZ2FpbnN0IHRoZSBzcGFjZSwgYnJvYWRjYXN0cyB3aXJlIGV2ZW50cyB0byB0aGVcbiAgICogVUksIGZldGNoZXMgc3RhdGVtZW50IHJvd3MgZm9yIG5vbi1lbXB0eSByZXN1bHRzLCBhbmQgcmV0dXJuc1xuICAgKiBhIGAoc3RyaW5nIHwgZGF0YSB8IGNoYXJ0KVtdYCBzdW1tYXJ5IHRoZSBob3N0IFVJIHJlbmRlcnNcbiAgICogaW5saW5lLlxuICAgKlxuICAgKiBFbnRyaWVzIGFjY2VwdCBlaXRoZXIgYSBmdWxsIHtAbGluayBHZW5pZVNwYWNlQ29uZmlnfSBvYmplY3RcbiAgICogb3IgYSBiYXJlIGBzcGFjZV9pZGAgc3RyaW5nIHdoZW4gbm8gZXh0cmFzIGFyZSBuZWVkZWQ6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgZ2VuaWVTcGFjZXM6IHtcbiAgICogICAgIGRlZmF1bHQ6IFwiMDFlZjBkM2MwZTFiMWY0YThkMmMzZTRmNWE2YjdjOGRcIixcbiAgICogICAgIGZvcmVjYXN0czogeyBzcGFjZUlkOiBcIjAxZWYuLi5cIiwgaGludDogXCJ3ZWVrbHkgZGVtYW5kIGZvcmVjYXN0c1wiIH0sXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBSZWFjaCB0aGUgc3BhY2VzIGZyb20gYW4gYWdlbnQncyBgdG9vbHMocGx1Z2lucylgIGNhbGxiYWNrIHZpYVxuICAgKiBgcGx1Z2lucy5nZW5pZT8udG9vbGtpdCgpYDsgdGhlIHJlc3VsdGluZyB0b29scyBhY2NlcHRcbiAgICogYHsgY29udGVudCwgY29udmVyc2F0aW9uSWQ/IH1gIGFuZCByZXR1cm4gYSBoeWRyYXRlZCBzdW1tYXJ5LlxuICAgKlxuICAgKiAqKkZhbGxiYWNrIGRpc2NvdmVyeSoqIChoaWdoZXN0IHByZWNlZGVuY2UgZmlyc3QpOiBpZiB0aGlzXG4gICAqIGZpZWxkIGlzIG9taXR0ZWQsIHRoZSBHZW5pZSBhZ2VudCBhbHNvIHBpY2tzIHVwIHNwYWNlcyBmcm9tXG4gICAqICgxKSB0aGUgQXBwS2l0IGBnZW5pZSh7IHNwYWNlczogeyAuLi4gfSB9KWAgcGx1Z2luIGluc3RhbmNlXG4gICAqIHdoZW4gcmVnaXN0ZXJlZCwgYW5kICgyKSB0aGUgYERBVEFCUklDS1NfR0VOSUVfU1BBQ0VfSURgXG4gICAqIGVudiB2YXIgKHJlZ2lzdGVyZWQgdW5kZXIgdGhlIGBkZWZhdWx0YCBhbGlhcykuIFRoaXMga2VlcHNcbiAgICogZXhpc3RpbmcgQXBwS2l0IGRlcGxveW1lbnRzIHdvcmtpbmcgd2l0aG91dCByZXN0YXRpbmcgdGhlXG4gICAqIHNwYWNlcyBjb25maWcgaW4gdHdvIHBsYWNlcy5cbiAgICovXG4gIGdlbmllU3BhY2VzPzogR2VuaWVTcGFjZXNDb25maWc7XG4gIC8qKlxuICAgKiBVc2UgdGhlIHN0cmVhbWluZyBHZW5pZSBBZ2VudCBNb2RlIEFQSSBmb3IgYGFza19nZW5pZWAuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICogU2V0IGBmYWxzZWAgdG8gZm9yY2UgdGhlIGxlZ2FjeSBDb252ZXJzYXRpb24gQVBJIHBvbGxpbmcgZHJpdmVyLiBBXG4gICAqIHByZS1zdHJlYW0gZmVhdHVyZS1kaXNhYmxlZCBvciBwcmV2aWV3LXRvZ2dsZSByZXNwb25zZSBmYWxscyBiYWNrXG4gICAqIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBnZW5pZUFnZW50TW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUVEwgZm9yIHRoZSBpbi1tZW1vcnkgR2VuaWUgc3BhY2UgbWV0YWRhdGEgY2FjaGUsIGluXG4gICAqIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gNSBtaW51dGVzLiBUaGUgR2VuaWUgYWdlbnQgY2FsbHNcbiAgICogYGNsaWVudC5nZW5pZS5nZXRTcGFjZSguLi4pYCBvbiBldmVyeSBjb2xkLXN0YXJ0IHRvIGdldCB0aGVcbiAgICogdGl0bGUgLyBkZXNjcmlwdGlvbiAvIHdhcmVob3VzZSBpZDsgY2FjaGVkIHJlc3BvbnNlcyBza2lwIHRoZVxuICAgKiByb3VuZC10cmlwIGFuZCBjb25jdXJyZW50IGNhbGxlcnMgY29hbGVzY2Ugb24gYSBzaW5nbGVcbiAgICogaW4tZmxpZ2h0IGZldGNoLiBEcm9wIHRvIGEgc21hbGxlciB2YWx1ZSB3aGVuIGFuYWx5c3RzIGFyZVxuICAgKiBhY3RpdmVseSBlZGl0aW5nIHNwYWNlIG1ldGFkYXRhIGFuZCB5b3Ugd2FudCBjaGFuZ2VzIHZpc2libGVcbiAgICogd2l0aGluIHNlY29uZHM7IHJhaXNlIGl0IHRvIGFtb3J0aXNlIHRoZSByb3VuZC10cmlwIHdoZW5cbiAgICogc3BhY2UgbWV0YWRhdGEgaXMgZWZmZWN0aXZlbHkgZnJvemVuLlxuICAgKlxuICAgKiBCYWNrZWQgYnkgQXBwS2l0J3MgYENhY2hlTWFuYWdlcmAsIHNvIHRoZSBjYWNoZSBwYXJ0aWNpcGF0ZXNcbiAgICogaW4gdGVsZW1ldHJ5IHNwYW5zIChgY2FjaGUuZ2V0T3JFeGVjdXRlYCkgYW5kIGJlbmVmaXRzIGZyb21cbiAgICogTGFrZWJhc2UgcGVyc2lzdGVuY2Ugd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgd2lyZWQgdXAuXG4gICAqL1xuICBnZW5pZVNwYWNlQ2FjaGVUdGxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1heGltdW0gTExNIHN0ZXBzIGVhY2ggYWdlbnQgZ2V0cyBwZXIgdHVybi4gT25lIHN0ZXAgPSBvbmVcbiAgICogcm91bmQtdHJpcCB0byB0aGUgdW5kZXJseWluZyBtb2RlbCAoYSB0b29sIGNhbGwgY29uc3VtZXMgYVxuICAgKiBzdGVwLCB0aGUgZmluYWwtdGV4dCByZXBseSBjb25zdW1lcyBvbmUgdG9vKS4gQXBwbGllcyB0b1xuICAgKiBldmVyeSBhZ2VudCByZWdpc3RlcmVkIHRocm91Z2gge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZy5hZ2VudHN9XG4gICAqIC0gcGVyLWFnZW50IG92ZXJyaWRlcyBhcmVuJ3Qgc3VyZmFjZWQgeWV0IGJlY2F1c2UgdGhlIHNhbWVcbiAgICogY2VpbGluZyBoYXMgYmVlbiBzdWZmaWNpZW50IGFjcm9zcyBldmVyeSB3b3JrbG9hZCB3ZSd2ZSBydW4uXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0FHRU5UX01BWF9TVEVQU30gKDI1KSwgc2l6ZWQgdG8gZml0XG4gICAqIGEgZGVjb21wb3NlZCBHZW5pZSB0dXJuIChncm91bmRpbmcgKyBzZXZlcmFsIGBhc2tfZ2VuaWVgIGNhbGxzXG4gICAqICsgYHByZXBhcmVfY2hhcnRgIHBlciBkYXRhc2V0ICsgdGhlIGZpbmFsLXRleHQgcmVwbHkpIHdpdGhcbiAgICogaGVhZHJvb20gZm9yIHRoZSBtb2RlbCB0byBjaGFpbiBhIGNvdXBsZSBvZiBmb2xsb3ctdXBzIGJlZm9yZVxuICAgKiBhbnN3ZXJpbmcuIE1hc3RyYSdzIG93biBgYWdlbnQuZ2VuZXJhdGVgIGRlZmF1bHQgb2YgNSB3b3VsZFxuICAgKiBjdXQgbXVsdGktc3RlcCBvcmNoZXN0cmF0aW9uIG9mZiBhZnRlciAyLTMgdG9vbCBjYWxscywgc29cbiAgICogZXhwbGljaXRseSByYWlzaW5nIHRoZSBjZWlsaW5nIGhlcmUgaXMgd2hhdCBsZXRzIHRoZVxuICAgKiBhZ2VudC1tb2RlIGxvb3AgcGxheSBvdXQuXG4gICAqXG4gICAqIExvd2VyIHdoZW4gYW4gdW51c3VhbGx5IHNsb3cgb3IgZXhwZW5zaXZlIG1vZGVsIG1ha2VzIGxvbmdcbiAgICogdHVybnMgdW5hZmZvcmRhYmxlOyByYWlzZSBmb3IgZXhwbG9yYXRvcnkgd29ya2xvYWRzIHRoYXQgbmVlZFxuICAgKiB0byBkcmlsbCBkZWVwIGludG8gYSBkYXRhc2V0IHdpdGhpbiBhIHNpbmdsZSB0dXJuLlxuICAgKi9cbiAgYWdlbnRNYXhTdGVwcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdpcmUgTWFzdHJhIHNwYW5zIGludG8gQXBwS2l0J3MgZ2xvYmFsIE9UZWwgcGlwZWxpbmUgdmlhXG4gICAqIGBAbWFzdHJhL290ZWwtYnJpZGdlYC5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCwgYXV0byk6IG9uIG9ubHkgd2hlblxuICAgKiAgIGBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlRgIG9yXG4gICAqICAgYE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlRgIGlzIHNldC4gV2hlbiB1bnNldCwgdGhlXG4gICAqICAgYnJpZGdlIGlzIHNraXBwZWQgc28gTWFzdHJhIGRvZXMgbm90IGxvZ1xuICAgKiAgIGBbT3RlbEJyaWRnZV0gTm8gT1RFTCBzcGFuIGZvdW5kYCBvbiB0aGUgbm9vcCB0cmFjZXIuXG4gICAqIC0gYHRydWVgOiBmb3JjZSBvbiBldmVuIHdpdGhvdXQgYW4gT1RMUCBlbmRwb2ludC5cbiAgICogLSBgZmFsc2VgOiBmb3JjZSBvZmYuXG4gICAqL1xuICBvYnNlcnZhYmlsaXR5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExvZyB1c2VyIGZlZWRiYWNrICh0aHVtYnMgdXAvZG93biArIGZyZWVmb3JtIGNvbW1lbnRzKSB0byBNTGZsb3cgYXNcbiAgICogdHJhY2UgYXNzZXNzbWVudHMsIGFuZCBzdXJmYWNlIHRoZSBmZWVkYmFjayBjb250cm9scyBpbiB0aGUgY2hhdCBVSS5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCwgYXV0byk6IGVuYWJsZWQgb25seSB3aGVuIE1MZmxvdyB0cmFjaW5nIGlzXG4gICAqICAgd2lyZWQgLSBhbiBPVExQIGV4cG9ydGVyIGVuZHBvaW50IGlzIHNldCBhbmQgYW4gTUxmbG93IGV4cGVyaW1lbnRcbiAgICogICBpcyBuYW1lZCAodGhlIHNhbWUgc2lnbmFscyB0aGUgb2JzZXJ2YWJpbGl0eSBwaXBlbGluZSBuZWVkcyB0b1xuICAgKiAgIHNoaXAgdHJhY2VzIHRvIE1MZmxvdykuIE90aGVyd2lzZSBvZmYsIHNpbmNlIHRoZXJlJ2QgYmUgbm8gdHJhY2VcbiAgICogICB0byBhdHRhY2ggZmVlZGJhY2sgdG8uXG4gICAqIC0gYHRydWVgOiBmb3JjZSBvbi4gRmVlZGJhY2sgY29udHJvbHMgc2hvdyBhbmQgd3JpdGVzIGFyZSBhdHRlbXB0ZWRcbiAgICogICByZWdhcmRsZXNzIG9mIGVudiBkZXRlY3Rpb24gKHVzZSB3aGVuIHRoZSBlbnYgaXMgY29uZmlndXJlZCBpbiBhXG4gICAqICAgd2F5IHRoZSBhdXRvLXByb2JlIGRvZXNuJ3QgcmVjb2duaXplKS5cbiAgICogLSBgZmFsc2VgOiBmb3JjZSBvZmYuIE5vIHRyYWNlLWlkIGhlYWRlciwgbm8gZmVlZGJhY2sgcm91dGUsIG5vIFVJLlxuICAgKlxuICAgKiBGZWVkYmFjayBhdHRhY2hlcyB0byBhIHR1cm4ncyBNTGZsb3cgdHJhY2UgdmlhIHRoZSBPcGVuVGVsZW1ldHJ5XG4gICAqIHRyYWNlIGlkIHRoZSBzZXJ2ZXIgc3RhbXBzIG9uIGVhY2ggcmVzcG9uc2U7IHNlZSBgbWxmbG93LnRzYC5cbiAgICovXG4gIGZlZWRiYWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEV4cG9zZSB0aGUgcGx1Z2luJ3MgYWdlbnRzIChhbmQgb3B0aW9uYWxseSB0b29scykgYXMgYSBNYXN0cmEgTUNQXG4gICAqIHNlcnZlciBzbyBleHRlcm5hbCBNQ1AgY2xpZW50cyAtIENsYXVkZSBEZXNrdG9wLCBDdXJzb3IsIHRoZSBNYXN0cmFcbiAgICogcGxheWdyb3VuZCwgb3IgYW5vdGhlciBhZ2VudCAtIGNhbiBjYWxsIHRoZW0gb3ZlciB0aGUgc3RhbmRhcmQgTUNQXG4gICAqIHRyYW5zcG9ydHMuIEVuYWJsZWQgYnkgZGVmYXVsdCAoYWdlbnRzIG9ubHkpOiB3cmFwcGluZyB0aGVcbiAgICogYWxyZWFkeS1yZWdpc3RlcmVkIGFnZW50cyBjb3N0cyBub3RoaW5nIGV4dHJhLCBzbyB0aGUgZW5kcG9pbnQgaXMgb25cbiAgICogb3V0IG9mIHRoZSBib3g7IG9ubHkgdGhlIGFtYmllbnQgdG9vbHMgKHdoaWNoIGFzc3VtZSBhbiBpbi1wcm9jZXNzXG4gICAqIGNoYXQgdHVybikgc3RheSBvZmYgdW5sZXNzIGV4cGxpY2l0bHkgb3B0ZWQgaW4uXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIC8gYHRydWVgOiBleHBvc2UgZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCBhc1xuICAgKiAgIGFuIGBhc2tfPGFnZW50SWQ+YCBNQ1AgdG9vbCB1bmRlciBhIHNlcnZlciB3aG9zZSBpZCBpcyB0aGUgcGx1Z2luXG4gICAqICAgbmFtZS5cbiAgICogLSBgZmFsc2VgOiBubyBNQ1AgZW5kcG9pbnRzLlxuICAgKiAtIHtAbGluayBNYXN0cmFNY3BDb25maWd9OiBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIHRoZSBzZXJ2ZXIgaWQsXG4gICAqICAgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoaWNoIGFnZW50cyAvIHRvb2xzIGFyZSBleHBvc2VkLlxuICAgKlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBzdG9jayBNYXN0cmEgTUNQIHJvdXRlcyBtb3VudCB1bmRlciB0aGUgcGx1Z2luJ3NcbiAgICogYmFzZSBwYXRoIChubyBiZXNwb2tlIHJvdXRlIGlzIGFkZGVkIC0gdGhlIHNlcnZlciBpcyBoYW5kZWQgdG8gdGhlXG4gICAqIGBNYXN0cmFgIGluc3RhbmNlIHZpYSBgbWNwU2VydmVyc2AsIHdoaWNoIGBAbWFzdHJhL2V4cHJlc3NgIHNlcnZlcyk6XG4gICAqXG4gICAqIC0gU3RyZWFtYWJsZSBIVFRQOiBgUE9TVCAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L21jcGBcbiAgICogLSBTU0UgKGxlZ2FjeSk6ICAgIGBHRVQgIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vc3NlYFxuICAgKiAgICAgICAgICAgICAgICAgICAgYFBPU1QgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9tZXNzYWdlc2BcbiAgICpcbiAgICogUmVxdWVzdHMgcnVuIHVuZGVyIHRoZSBzYW1lIEFwcEtpdCBPQk8gc2NvcGUgYXMgdGhlIGNoYXQgcm91dGVzLCBzb1xuICAgKiBhbiBhZ2VudCBpbnZva2VkIG92ZXIgTUNQIHJlc29sdmVzIGl0cyBtb2RlbCBhbmQgdG9vbHMgYXMgdGhlXG4gICAqIGNhbGxpbmcgdXNlci5cbiAgICovXG4gIG1jcD86IGJvb2xlYW4gfCBNYXN0cmFNY3BDb25maWc7XG4gIC8qKlxuICAgKiBIb3cgbXVjaCBvZiB0aGUgc3RvY2sgYEBtYXN0cmEvZXhwcmVzc2AgbWFuYWdlbWVudCBBUEkgaXMgcmVhY2hhYmxlXG4gICAqIHRocm91Z2ggdGhlIHBsdWdpbiBtb3VudC4gYEBtYXN0cmEvZXhwcmVzc2AgcmVnaXN0ZXJzIGl0cyBmdWxsIHJvdXRlXG4gICAqIHRhYmxlIChhZ2VudCBpbmZlcmVuY2UgcGx1cyBhZG1pbiAvIG11dGF0aW5nIHJvdXRlczogZGlyZWN0IHRvb2xcbiAgICogZXhlY3V0aW9uLCB3b3JrZmxvdyBjb250cm9sLCByYXcgbWVtb3J5IHJlYWQvd3JpdGUsIHRlbGVtZXRyeSwgbG9ncyxcbiAgICogc2NvcmVzKS4gQXBwS2l0IGFscmVhZHkgYXV0aGVudGljYXRlcyBldmVyeSByZXF1ZXN0IGFzIHRoZSBPQk8gdXNlcixcbiAgICogYnV0IG5vdGhpbmcgdGhlcmUgcmVzdHJpY3RzICp3aGljaCogb2YgdGhvc2Ugb3BlcmF0aW9ucyB0aGUgYnJvd3NlclxuICAgKiBjbGllbnQgbWF5IGludm9rZS5cbiAgICpcbiAgICogLSBgXCJzY29wZWRcImAgKGRlZmF1bHQpOiBvbmx5IHRoZSByb3V0ZXMgdGhlIGNoYXQgY2xpZW50IGxlZ2l0aW1hdGVseVxuICAgKiAgIG5lZWRzIGFyZSBkaXNwYXRjaGVkIHRvIE1hc3RyYSAtIGFnZW50IGluZmVyZW5jZVxuICAgKiAgIChgc3RyZWFtYCAvIGBnZW5lcmF0ZWAgLyBgbmV0d29ya2ApLCByZWFkLW9ubHkgYWdlbnQgbWV0YWRhdGEsIHRoaXNcbiAgICogICBwbHVnaW4ncyBvd24gT0JPLSBhbmQgcmVzb3VyY2Utc2NvcGVkIGAvcm91dGUvKmAgcm91dGVzIChoaXN0b3J5IC9cbiAgICogICB0aHJlYWRzKSwgYW5kLCB3aGVuIHtAbGluayBtY3B9IGlzIGVuYWJsZWQsIHRoZSBNQ1AgdHJhbnNwb3J0LlxuICAgKiAgIEV2ZXJ5dGhpbmcgZWxzZSAodG9vbCBleGVjdXRpb24sIHdvcmtmbG93IGNvbnRyb2wsIHJhdyBtZW1vcnksXG4gICAqICAgdGVsZW1ldHJ5LCBsb2dzLCBzY29yZXMsIGFuZCBvdGhlciBtdXRhdGlvbnMpIGlzIHJlamVjdGVkIHdpdGhcbiAgICogICBgNDAzYCBiZWZvcmUgaXQgcmVhY2hlcyBNYXN0cmEuXG4gICAqIC0gYFwiZnVsbFwiYDogZGlzcGF0Y2ggdGhlIGVudGlyZSBzdG9jayBNYXN0cmEgQVBJLiBVc2Ugb25seSBmb3IgYVxuICAgKiAgIHRydXN0ZWQgZmlyc3QtcGFydHkgY29uc29sZSB0aGF0IGdlbnVpbmVseSBuZWVkcyB0aGUgbWFuYWdlbWVudFxuICAgKiAgIHN1cmZhY2UuXG4gICAqL1xuICBhcGlBY2Nlc3M/OiBcInNjb3BlZFwiIHwgXCJmdWxsXCI7XG4gIC8qKlxuICAgKiBXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IHRoZSBhZ2VudHMnIHdvcmtzcGFjZSBjYWxscyBydW4gYXM6IHRoZVxuICAgKiBzZXJ2aW5nLWVuZHBvaW50IGNhdGFsb2d1ZSBiZWhpbmQgdGhlIG1vZGVsIHBpY2tlciwgR2VuaWUgc3VnZ2VzdGlvbnMsXG4gICAqIGBhc2tfZ2VuaWVgLCBhbmQgdGhlIFN0YXRlbWVudCBFeGVjdXRpb24gZmV0Y2ggYmVoaW5kIGEgYFtkYXRhOjxpZD5dYFxuICAgKiBlbWJlZC4gRmFsbHMgYmFjayB0byBgTUFTVFJBX0dFTklFX0lERU5USVRZYCwgdGhlbiBgXCJ1c2VyXCJgLlxuICAgKlxuICAgKiBPbi1iZWhhbGYtb2YgKE9CTykgYXV0aCByZXF1aXJlcyB0aGUgY2FsbGVyIHRvIGJlIGEgbWVtYmVyIG9mIHRoZVxuICAgKiBXT1JLU1BBQ0UsIG5vdCBqdXN0IG9mIHRoZSBEYXRhYnJpY2tzIGFjY291bnQuIEFuIGFwcCBzaGFyZWQgd2l0aCBhblxuICAgKiBhY2NvdW50LWxldmVsIGdyb3VwIGNhbiBiZSBvcGVuZWQgYnkgc29tZW9uZSB3aG9zZSB0b2tlbiBpcyB2YWxpZCBidXQgd2hvc2VcbiAgICogZXZlcnkgd29ya3NwYWNlIGNhbGwgZmFpbHMgd2l0aCBgVW5hdXRob3JpemVkIGFjY2VzcyB0byBPcmc6IDxpZD5gIC0gYW5kXG4gICAqIGdyYW50aW5nIHdvcmtzcGFjZSBtZW1iZXJzaGlwIGlzIG5vdCBhbHdheXMgcG9zc2libGUsIHNpbmNlIGEgd29ya3NwYWNlXG4gICAqIGNhcHMgbWVtYmVyc2hpcCB3ZWxsIGJlbG93IHRoZSBzaXplIG9mIGEgbGFyZ2UgYWNjb3VudCdzIHVzZXIgZ3JvdXAuIFRoZVxuICAgKiBhcHAncyBzZXJ2aWNlIHByaW5jaXBhbCBhbHJlYWR5IGhvbGRzIHRoZSBncmFudHMgdGhlIGFwcCB3YXMgZGVwbG95ZWQgd2l0aC5cbiAgICpcbiAgICogLSBgXCJ1c2VyXCJgIChkZWZhdWx0KTogYWx3YXlzIE9CTy4gUGVyLXVzZXIgYXR0cmlidXRpb24sIGFuZCBHZW5pZSAvIFVuaXR5XG4gICAqICAgQ2F0YWxvZyByb3cgZmlsdGVycyBhcHBseSBwZXIgdXNlci4gQ29ycmVjdCB3aGVuIGV2ZXJ5IGNhbGxlciBpcyBhXG4gICAqICAgd29ya3NwYWNlIG1lbWJlci5cbiAgICogLSBgXCJzZXJ2aWNlLXByaW5jaXBhbFwiYDogYWx3YXlzIHRoZSBhcHAgc2VydmljZSBwcmluY2lwYWwuIE5lZWRzIG5vIE9CT1xuICAgKiAgIHNjb3BlcyBhbmQgd29ya3MgZm9yIGFueSBjYWxsZXIgd2hvIGNhbiBvcGVuIHRoZSBhcHAsIGF0IHRoZSBjb3N0IG9mXG4gICAqICAgcGVyLXVzZXIgYXR0cmlidXRpb24gaW4gR2VuaWUgLyBVbml0eSBDYXRhbG9nLlxuICAgKiAtIGBcImF1dG9cImA6IE9CTyB3aGVuIHRoZSByZXF1ZXN0IGNhcnJpZXMgYW4gT0JPIHRva2VuLCB0aGUgc2VydmljZSBwcmluY2lwYWxcbiAgICogICB3aGVuIGl0IGRvZXMgbm90LiBGb3IgYW4gYXBwIHNlcnZpbmcgQk9USCB0aGUgcGxhdGZvcm0gZnJvbnQgZG9vciBhbmQgYVxuICAgKiAgIGRvb3IgdGhhdCBoYXMgbm8gdG9rZW4gdG8gZm9yd2FyZCAtIGEgYEBkYngtdG9vbHMvdHVubmVsYCBnYXRlLCBhXG4gICAqICAgVGVhbXMgY2hhbm5lbCAtIHdoZXJlIEFwcEtpdCdzIGBhc1VzZXJgIHdvdWxkIG90aGVyd2lzZSB0aHJvd1xuICAgKiAgIGBBdXRoZW50aWNhdGlvbkVycm9yYCBvdXRzaWRlIGBOT0RFX0VOVj1kZXZlbG9wbWVudGAuXG4gICAqXG4gICAqIFRoZSBzZXJ2aWNlLXByaW5jaXBhbCBwYXRoIGNoYW5nZXMgb25seSB0aGUgRGF0YWJyaWNrcyBDUkVERU5USUFMLiBNZW1vcnlcbiAgICogdGhyZWFkcywgdGhlIHBlci11c2VyIGNhY2hlIG5hbWVzcGFjZSwgYW5kIHRyYWNlIG1ldGFkYXRhIHN0aWxsIGtleSBvZmYgdGhlXG4gICAqIGZvcndhcmRlZCB1c2VyLCBzbyBjYWxsZXJzIHNoYXJpbmcgdGhlIHNlcnZpY2UgcHJpbmNpcGFsJ3MgZGF0YSBhY2Nlc3Mga2VlcFxuICAgKiBzZXBhcmF0ZSBjb252ZXJzYXRpb25zIGFuZCBjYW5ub3QgcmVhZCBlYWNoIG90aGVyJ3MgdGhyZWFkcyBvciBjaGFydHMuXG4gICAqXG4gICAqIEBleGFtcGxlIEFuIGFwcCBhbnkgYWNjb3VudCB1c2VyIGNhbiBvcGVuXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7IGdlbmllSWRlbnRpdHk6IFwic2VydmljZS1wcmluY2lwYWxcIiwgZ2VuaWVTcGFjZXM6IHsgZGVmYXVsdDogc3BhY2VJZCB9IH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgT25lIGFwcCBiZWhpbmQgYm90aCB0aGUgZnJvbnQgZG9vciBhbmQgYSBwdWJsaWMgdHVubmVsXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7IGdlbmllSWRlbnRpdHk6IFwiYXV0b1wiLCBnZW5pZVNwYWNlczogeyBkZWZhdWx0OiBzcGFjZUlkIH0gfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuaWVJZGVudGl0eT86IE1hc3RyYUlkZW50aXR5TW9kZTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGJyYW5kIGNvbnRleHQgYXBwbGllZCB0byBjaGFydHMgcHJvZHVjZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAqIGByZW5kZXJfZGF0YWAgLyBgcHJlcGFyZV9jaGFydGAgdG9vbHMuIFdoZW4gc2V0LCB0aGUgY2hhcnQgcGxhbm5lcidzXG4gICAqIEVjaGFydHMgb3V0cHV0IGlzIHRoZW1lZCB3aXRoIHRoZSBicmFuZCdzIHBhbGV0dGUgKHNlcmllcyBjb2xvcnMgZGVyaXZlZFxuICAgKiBmcm9tIGBjb2xvcnMucHJpbWFyeWAgLyBgY29sb3JzLmFjY2VudGApIGFuZCBzYW5zIGZvbnRcbiAgICogKGB0eXBvZ3JhcGh5LnNhbnNgKSBpbnN0ZWFkIG9mIEVjaGFydHMnIGRlZmF1bHRzLiBPbWl0IGZvciB0aGUgZGVmYXVsdFxuICAgKiBFY2hhcnRzIGxvb2suXG4gICAqXG4gICAqIFBhc3MgdGhlIHBvcnRhYmxlIHtAbGluayBCcmFuZENvbnRleHR9IHNoYXJlZCBhY3Jvc3MgdGhlIFVJIGFuZFxuICAgKiBsaWJyYXJpZXMgKGUuZy4gYGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHRgIGZyb20gYEBkYngtdG9vbHMvc2hhcmVkLWNvcmVgLFxuICAgKiBvciBhIGN1c3RvbWVyIGJyYW5kKSAtIHRoZSBzYW1lIG9iamVjdCB0aGUgZW1haWwgYWRkLW9uIGFuZCB0aGUgVUlcbiAgICogYEJyYW5kUHJvdmlkZXJgIGNvbnN1bWUsIHNvIGEgaG9zdCB0aGVtZXMgY2hhcnRzLCBlbWFpbCwgYW5kIFVJIGZyb20gb25lXG4gICAqIHNvdXJjZS5cbiAgICovXG4gIGJyYW5kPzogQnJhbmRDb250ZXh0O1xuICAvKipcbiAgICogUmVtb3RlIEFnZW50LVNraWxsIHNvdXJjZXMgbWF0ZXJpYWxpemVkIG9uY2UgYXQgYXBwIHN0YXJ0dXAuIEEgc2luZ2xlXG4gICAqIHNvdXJjZSwgYSBsaXN0LCBvciBhIGB7IHNvdXJjZXMsIGZhaWxPbkVycm9yPywgLi4uIH1gIGJhZy5cbiAgICpcbiAgICogRWFjaCBzb3VyY2UgaXMgYSBHaXRIdWIgYG93bmVyL3JlcG9gLCBhIGdpdCAvIEdpdExhYiBVUkwsIG9yIGEgZGlyZWN0XG4gICAqIGBTS0lMTC5tZGAgLyBhcmNoaXZlIGRvd25sb2FkIFVSTC4gUmVzb2x1dGlvbiBwcmVmZXJzIHRoZSBPUFRJT05BTCBgc2tpbGxzYFxuICAgKiBucG0gQ0xJIChhIHBlZXIgZGVwKSB3aGljaCBpcyBjb3BpZWQgaW50byBhIHRlbXAgZGlyIGFuZCB0aGVuIHBlcnNpc3RlZDtcbiAgICogd2l0aG91dCBpdCwgYSBVUkwgc291cmNlIGlzIGZldGNoZWQgZGlyZWN0bHkuIEEgc291cmNlIHRoYXQgcmVzb2x2ZXNcbiAgICogdGhyb3VnaCBuZWl0aGVyIGZhaWxzIHN0YXJ0dXAgdW5sZXNzIGBmYWlsT25FcnJvcjogZmFsc2VgLlxuICAgKlxuICAgKiBQcm92aXNpb25lZCBza2lsbHMgYXJlIHdyaXR0ZW4gdG8gdGhlIERhdGFicmlja3MgdXNlcidzIEFzc2lzdGFudCBza2lsbHNcbiAgICogZm9sZGVyIChgL1VzZXJzLzxlbWFpbD4vLmFzc2lzdGFudC9za2lsbHNgLCB0aGUgXCJzYXZlIHRoaXMgYXMgYSBza2lsbFwiXG4gICAqIHRhcmdldCkgc28gdGhleSBwZXJzaXN0IGFuZCBhcmUgcGlja2VkIHVwIGJ5IHRoZSBidWlsdC1pbiBBc3Npc3RhbnQtc2tpbGxzXG4gICAqIG1vdW50LiBXaXRoIG5vIHdyaXRhYmxlIHdvcmtzcGFjZSwgdGhleSBnbyB0byBhIGxvY2FsIHRlbXAgZGlyIGluc3RlYWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7IHJlbW90ZVNraWxsczogXCJ2ZXJjZWwtbGFicy9hZ2VudC1za2lsbHNcIiB9KTtcbiAgICogbWFzdHJhKHtcbiAgICogICByZW1vdGVTa2lsbHM6IHtcbiAgICogICAgIHNvdXJjZXM6IFtcInZlcmNlbC1sYWJzL2FnZW50LXNraWxsc1wiLCBcImh0dHBzOi8vZXhhbXBsZS5jb20vc2tpbGwubWRcIl0sXG4gICAqICAgICBmYWlsT25FcnJvcjogZmFsc2UsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcmVtb3RlU2tpbGxzPzogUmVtb3RlU2tpbGxzT3B0aW9uO1xufVxuXG4vKipcbiAqIEpTT04gU2NoZW1hIHB1Ymxpc2hlZCBvbiB0aGUgbWFuaWZlc3QncyBgY29uZmlnLnNjaGVtYWAsIG1pcnJvcmluZyB0aGVcbiAqIGRvY3VtZW50ZWQgZGVmYXVsdHMgYW5kIGVudmlyb25tZW50IGZhbGxiYWNrcyBvZiB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnfS5cbiAqXG4gKiBDb3ZlcnMgdGhlIEpTT04tZXhwcmVzc2libGUgb3B0aW9ucyBvbmx5LiBgYWdlbnRzYCwgYHRvb2xzYCwgYW5kIGFcbiAqIGBkZWZhdWx0TW9kZWxgIHBhc3NlZCBhcyBhIE1hc3RyYSBgRHluYW1pY0FyZ3VtZW50YCBhcmUgY29kZS1kZWZpbmVkXG4gKiAoZnVuY3Rpb25zIC8gY2xhc3MgaW5zdGFuY2VzKSwgc28gdGhleSBjYXJyeSBubyBzY2hlbWEgZW50cnk7IHRoZVxuICogYGRlZmF1bHRNb2RlbGAgcHJvcGVydHkgYmVsb3cgZGVzY3JpYmVzIGl0cyBzdHJpbmcgZm9ybS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9DT05GSUdfU0NIRU1BOiBDb25maWdTY2hlbWEgPSB7XG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBwcm92aWRlcklkOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246ICdNYXN0cmEgT3BlbkFJLWNvbXBhdGlibGUgcHJvdmlkZXIgaWQuIERlZmF1bHRzIHRvIFwiZGF0YWJyaWNrc1wiLicsXG4gICAgfSxcbiAgICByZW1vdGVTa2lsbHM6IHtcbiAgICAgIHR5cGU6IFtcInN0cmluZ1wiLCBcImFycmF5XCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdSZW1vdGUgQWdlbnQtU2tpbGwgc291cmNlcyBwcm92aXNpb25lZCBhdCBzdGFydHVwOiBcImFpdG9vbHNcIiBmb3IgRGF0YWJyaWNrc1xcJyBvd24gc2tpbGwgc2V0IChyZWFkIGZyb20gdGhlIHB1YmxpYyBkYXRhYnJpY2tzL2RhdGFicmlja3MtYWdlbnQtc2tpbGxzIHJlcG8sIG5vIENMSSBuZWVkZWQpLCBhIEdpdEh1YiBvd25lci9yZXBvLCBhIGdpdC9HaXRMYWIgVVJMLCBvciBhIGRpcmVjdCBTS0lMTC5tZC9hcmNoaXZlIFVSTC4gTm9uLWFpdG9vbHMgc291cmNlcyBwcmVmZXIgdGhlIG9wdGlvbmFsIGBza2lsbHNgIG5wbSBDTEksIGVsc2UgYSBkaXJlY3QgZmV0Y2g7IGZhaWxzIHN0YXJ0dXAgb24gZXJyb3IgdW5sZXNzIGZhaWxPbkVycm9yOmZhbHNlLiBXcml0dGVuIHRvIHRoZSBEYXRhYnJpY2tzIHVzZXIgQXNzaXN0YW50IHNraWxscyBmb2xkZXIsIG9yIGEgbG9jYWwgdGVtcCBkaXIgd2hlbiBubyB3b3Jrc3BhY2UgaXMgd3JpdGFibGUuJyxcbiAgICB9LFxuICAgIHN0b3JhZ2U6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcyAvIG1lc3NhZ2VzLiBgdHJ1ZWAgcmV1c2VzIHRoZSBgbGFrZWJhc2VgIHBsdWdpbidzIHBvb2wsIGFuIG9iamVjdCBvcGVucyBhIGRlZGljYXRlZCBzdG9yZS4gQXV0by1lbmFibGVkIHdoZW4gdGhlIGBsYWtlYmFzZWAgcGx1Z2luIGlzIHJlZ2lzdGVyZWQuXCIsXG4gICAgfSxcbiAgICBtZW1vcnk6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQZ1ZlY3RvciBzdG9yZSBmb3IgTWFzdHJhIHNlbWFudGljIHJlY2FsbC4gYHRydWVgIHJldXNlcyB0aGUgYGxha2ViYXNlYCBwbHVnaW4ncyBwb29sLCBhbiBvYmplY3Qgb3BlbnMgYSBkZWRpY2F0ZWQgc3RvcmUuIEF1dG8tZW5hYmxlZCB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyByZWdpc3RlcmVkLlwiLFxuICAgIH0sXG4gICAgc2FuZGJveDoge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcInN0cmluZ1wiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQ29tbWFuZCBzYW5kYm94IGZvciBhdXRvLWNyZWF0ZWQgYWdlbnQgd29ya3NwYWNlcy4gRGVmYXVsdHMgdG8gRGF0YWJyaWNrcyBTYW5kYm94IHdpdGggTW9udHkgZmFsbGJhY2s7IGZhbHNlIGRpc2FibGVzIGNvbW1hbmQgZXhlY3V0aW9uLCBcIm1vbnR5XCIgc2VsZWN0cyBNb250eSBkaXJlY3RseSwgYW5kIGFuIG9iamVjdCBjb25maWd1cmVzIERhdGFicmlja3MgbGlmZWN5Y2xlL2ZhbGxiYWNrIHNldHRpbmdzLicsXG4gICAgfSxcbiAgICBkZWZhdWx0QWdlbnQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJBZ2VudCBpZCB1c2VkIHdoZW4gdGhlIGNsaWVudCBuYW1lcyBub25lLiBEZWZhdWx0cyB0byB0aGUgZmlyc3QgcmVnaXN0ZXJlZCBhZ2VudCwgZWxzZSB0aGUgYnVpbHQtaW4gYGRlZmF1bHRgLlwiLFxuICAgIH0sXG4gICAgZGVmYXVsdE1vZGVsOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU2VydmluZyBlbmRwb2ludCBhcHBsaWVkIHRvIGV2ZXJ5IGFnZW50IHRoYXQgb21pdHMgaXRzIG93biBtb2RlbC4gRmFsbHMgYmFjayB0byBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRSwgdGhlbiB0aGUgYXV0by1yZXNvbHZlZCBjYXRhbG9ndWUuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0TW9kZWxGYWxsYmFja3M6IHtcbiAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlByaW9yaXR5LW9yZGVyZWQgZW5kcG9pbnQgbmFtZXMgdHJpZWQgYmVmb3JlIHRoZSBzY29yZS1jbGFzc2lmaWVkIGNhdGFsb2d1ZSB3aGVuIG5vdGhpbmcgZWxzZSBwaW5zIGEgbW9kZWwuXCIsXG4gICAgfSxcbiAgICBtb2RlbEZ1enp5TWF0Y2g6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMgYWdhaW5zdCB0aGUgd29ya3NwYWNlIGNhdGFsb2d1ZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlUaHJlc2hvbGQ6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXNlLmpzIHNjb3JlIHRocmVzaG9sZCBmb3IgdGhlIGZ1enp5IG1hdGNoZXIsIDAgKGV4YWN0KSB0byAxIChhbnl0aGluZykuIERlZmF1bHRzIHRvIDAuNC5cIixcbiAgICB9LFxuICAgIG1vZGVsQ2FjaGVUdGxNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlRUTCBpbiBtcyBmb3IgdGhlIHNlcnZpbmctZW5kcG9pbnRzIGxpc3QgY2FjaGUsIHBlciB3b3Jrc3BhY2UgaG9zdC4gRGVmYXVsdHMgdG8gNSBtaW51dGVzLlwiLFxuICAgIH0sXG4gICAgbW9kZWxPdmVycmlkZToge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJIb25vciBhIHBlci1yZXF1ZXN0IG1vZGVsIG92ZXJyaWRlIGZyb20gdGhlIFgtTWFzdHJhLU1vZGVsIGhlYWRlciwgP21vZGVsPSBxdWVyeSwgb3IgYSBgbW9kZWxgIGJvZHkgZmllbGQuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBnZW5pZVNwYWNlczoge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IHR5cGU6IFtcInN0cmluZ1wiLCBcIm9iamVjdFwiXSB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiR2VuaWUgc3BhY2VzIHRoZSBhZ2VudHMgY2FuIGRlbGVnYXRlIHRvLCBrZXllZCBieSBhbGlhcyAodGhlIHRvb2wtbmFtZSBzdWZmaXgpLiBFYWNoIHZhbHVlIGlzIGEgc3BhY2UgaWQgb3IgYHsgc3BhY2VJZCwgaGludCB9YC4gRmFsbHMgYmFjayB0byB0aGUgYGdlbmllYCBwbHVnaW4ncyBvd24gYHNwYWNlc2AgY29uZmlnLCB0aGVuIERBVEFCUklDS1NfR0VOSUVfU1BBQ0VfSUQgdW5kZXIgdGhlIGBkZWZhdWx0YCBhbGlhcy5cIixcbiAgICB9LFxuICAgIGdlbmllQWdlbnRNb2RlOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlVzZSB0aGUgc3RyZWFtaW5nIEdlbmllIEFnZW50IE1vZGUgQVBJIGZvciBhc2tfZ2VuaWUuIERlZmF1bHRzIHRvIHRydWU7IGZhbHNlIGZvcmNlcyBsZWdhY3kgcG9sbGluZy4gRmVhdHVyZS1kaXNhYmxlZCBvciBwcmV2aWV3LXRvZ2dsZSByZXNwb25zZXMgZmFsbCBiYWNrIGF1dG9tYXRpY2FsbHkgYmVmb3JlIHN0cmVhbWluZy5cIixcbiAgICB9LFxuICAgIGdlbmllU3BhY2VDYWNoZVR0bE1zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVFRMIGluIG1zIGZvciB0aGUgR2VuaWUgc3BhY2UgbWV0YWRhdGEgY2FjaGUuIERlZmF1bHRzIHRvIDUgbWludXRlcy5cIixcbiAgICB9LFxuICAgIGFnZW50TWF4U3RlcHM6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNYXhpbXVtIExMTSBzdGVwcyBlYWNoIGFnZW50IGdldHMgcGVyIHR1cm4gKGEgdG9vbCBjYWxsIGFuZCB0aGUgZmluYWwgcmVwbHkgZWFjaCBjb25zdW1lIG9uZSkuIERlZmF1bHRzIHRvIDI1LlwiLFxuICAgIH0sXG4gICAgc3RyaXBTdGFsZUNoYXJ0czoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTdHJpcCBjaGFydElkcyBmcm9tIHJlY2FsbGVkIGFzc2lzdGFudCB0b29sIHJlc3VsdHMgc28gdGhlIG1vZGVsIGNhbm5vdCByZXVzZSBhIHR1cm4tc2NvcGVkIGNoYXJ0IG1hcmtlci4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIHN0eWxlSW5zdHJ1Y3Rpb25zOiB7XG4gICAgICB0eXBlOiBbXCJzdHJpbmdcIiwgXCJib29sZWFuXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU3R5bGUgZ3VhcmRyYWlscyBhcHBlbmRlZCB0byBldmVyeSBhZ2VudCdzIGluc3RydWN0aW9ucy4gQSBzdHJpbmcgcmVwbGFjZXMgdGhlIGJ1aWx0LWluIGJsb2NrLCBgZmFsc2VgIGRpc2FibGVzIGl0LlwiLFxuICAgIH0sXG4gICAgb2JzZXJ2YWJpbGl0eToge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJCcmlkZ2UgTWFzdHJhIHNwYW5zIGludG8gQXBwS2l0J3MgT1RlbCBwaXBlbGluZS4gRGVmYXVsdHMgdG8gb24gb25seSB3aGVuIE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVCBvciBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UIGlzIHNldC5cIixcbiAgICB9LFxuICAgIGZlZWRiYWNrOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkxvZyB0aHVtYnMgLyBjb21tZW50IGFzc2Vzc21lbnRzIHRvIE1MZmxvdyBhbmQgc3VyZmFjZSB0aGUgZmVlZGJhY2sgY29udHJvbHMuIERlZmF1bHRzIHRvIG9uIG9ubHkgd2hlbiBhbiBPVExQIGVuZHBvaW50IGFuZCBNTEZMT1dfRVhQRVJJTUVOVF9JRCBvciBNTEZMT1dfRVhQRVJJTUVOVF9OQU1FIGFyZSBzZXQuXCIsXG4gICAgfSxcbiAgICBtY3A6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJFeHBvc2UgdGhlIHJlZ2lzdGVyZWQgYWdlbnRzIG92ZXIgTUNQLiBEZWZhdWx0cyB0byBhZ2VudHMtb25seTsgYW4gb2JqZWN0IHR1bmVzIHRoZSBzZXJ2ZXIgaWQsIGFkdmVydGlzZWQgbWV0YWRhdGEsIGFuZCB3aGV0aGVyIGFtYmllbnQgdG9vbHMgYXJlIGV4cG9zZWQuXCIsXG4gICAgfSxcbiAgICBnZW5pZUlkZW50aXR5OiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgLy8gRGVyaXZlZCBmcm9tIHRoZSByZXNvbHZlcidzIG93biBsaXN0LCBzbyBhIG1vZGUgY2FuIG5ldmVyIGJlIGFjY2VwdGVkIGF0XG4gICAgICAvLyBydW50aW1lIHdoaWxlIHRoZSBwdWJsaXNoZWQgc2NoZW1hIChhbmQgdGhlIFVJIGJ1aWx0IGZyb20gaXQpIG9taXRzIGl0LlxuICAgICAgZW51bTogWy4uLklERU5USVRZX01PREVTXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnV2hpY2ggRGF0YWJyaWNrcyBpZGVudGl0eSB0aGUgYWdlbnRzXFwnIHdvcmtzcGFjZSBjYWxscyAoc2VydmluZyBjYXRhbG9ndWUsIEdlbmllLCBzdGF0ZW1lbnQgZXhlY3V0aW9uKSBydW4gYXMuIFwidXNlclwiIChkZWZhdWx0KSBpcyBhbHdheXMgT0JPLCBzbyBjYWxsZXJzIG11c3QgYmUgd29ya3NwYWNlIG1lbWJlcnM7IFwic2VydmljZS1wcmluY2lwYWxcIiBhbHdheXMgdXNlcyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLCBzbyBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwIHdvcmtzLCBhdCB0aGUgY29zdCBvZiBwZXItdXNlciBhdHRyaWJ1dGlvbjsgXCJhdXRvXCIgdXNlcyBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiBhbmQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIHdoZW4gaXQgZG9lcyBub3QsIGZvciBhbiBhcHAgdGhhdCBhbHNvIHNlcnZlcyBhIHR1bm5lbCBvciB3ZWJob29rIGRvb3IuIEZhbGxzIGJhY2sgdG8gTUFTVFJBX0dFTklFX0lERU5USVRZLicsXG4gICAgfSxcbiAgICBhcGlBY2Nlc3M6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJzY29wZWRcIiwgXCJmdWxsXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdIb3cgbXVjaCBvZiB0aGUgc3RvY2sgQG1hc3RyYS9leHByZXNzIEFQSSBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgbW91bnQuIFwic2NvcGVkXCIgKGRlZmF1bHQpIGFsbG93cyBhZ2VudCBpbmZlcmVuY2UsIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpcyBwbHVnaW5cXCdzIG93biByb3V0ZXMsIGFuZCBNQ1A7IFwiZnVsbFwiIGRpc3BhdGNoZXMgdGhlIGVudGlyZSBtYW5hZ2VtZW50IHN1cmZhY2UuJyxcbiAgICB9LFxuICAgIGJyYW5kOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9ydGFibGUgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGdlbmVyYXRlZCBjaGFydHMgKHNlcmllcyBwYWxldHRlIGZyb20gY29sb3JzLnByaW1hcnkgLyBjb2xvcnMuYWNjZW50LCBiYXNlIGZvbnQgZnJvbSB0eXBvZ3JhcGh5LnNhbnMpLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuIl19