@flogeez/angular-tiptap-editor 3.6.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +6 -2
- package/esm2022/lib/components/bubble-menus/base/ate-base-bubble-menu.mjs +3 -3
- package/esm2022/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.mjs +3 -3
- package/esm2022/lib/components/color-picker/ate-color-picker.component.mjs +3 -3
- package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +52 -13
- package/esm2022/lib/components/editor/ate-block-controls.component.mjs +3 -3
- package/esm2022/lib/components/slash-commands/ate-slash-commands.component.mjs +3 -3
- package/esm2022/lib/components/table-of-contents/ate-table-of-contents.component.mjs +3 -3
- package/esm2022/lib/components/toolbar/ate-toolbar.component.mjs +3 -3
- package/esm2022/lib/config/ate-editor.config.mjs +7 -1
- package/esm2022/lib/config/ate-slash-commands.config.mjs +1 -1
- package/esm2022/lib/directives/ate-tooltip.directive.mjs +37 -2
- package/esm2022/lib/extensions/ate-paste.extension.mjs +125 -0
- package/esm2022/lib/extensions/ate-resizable-image.extension.mjs +44 -3
- package/esm2022/lib/models/ate-editor-config.model.mjs +1 -1
- package/esm2022/lib/models/ate-image.model.mjs +1 -1
- package/esm2022/lib/models/ate-paste.model.mjs +2 -0
- package/esm2022/lib/services/ate-editor-commands.service.mjs +7 -1
- package/esm2022/lib/services/ate-editor-i18n.service.mjs +36 -0
- package/esm2022/lib/services/ate-image.service.mjs +12 -5
- package/esm2022/lib/utils/ate-extensions.utils.mjs +3 -1
- package/esm2022/lib/utils/ate-image-src-resolver.utils.mjs +21 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +333 -28
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/lib/components/bubble-menus/base/ate-base-bubble-menu.d.ts +2 -2
- package/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.d.ts +2 -2
- package/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.d.ts +1 -1
- package/lib/components/editor/angular-tiptap-editor.component.d.ts +18 -2
- package/lib/components/editor/ate-block-controls.component.d.ts +2 -2
- package/lib/components/slash-commands/ate-slash-commands.component.d.ts +2 -2
- package/lib/config/ate-editor.config.d.ts +3 -0
- package/lib/config/ate-slash-commands.config.d.ts +2 -2
- package/lib/extensions/ate-paste.extension.d.ts +24 -0
- package/lib/extensions/ate-resizable-image.extension.d.ts +10 -1
- package/lib/models/ate-editor-config.model.d.ts +6 -1
- package/lib/models/ate-image.model.d.ts +12 -0
- package/lib/models/ate-paste.model.d.ts +36 -0
- package/lib/services/ate-editor-commands.service.d.ts +3 -1
- package/lib/services/ate-editor-i18n.service.d.ts +208 -0
- package/lib/services/ate-image.service.d.ts +3 -1
- package/lib/utils/ate-image-src-resolver.utils.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, input, viewChild, effect, signal, inject, ChangeDetectionStrategy, } from "@angular/core";
|
|
2
2
|
import tippy, { sticky } from "tippy.js";
|
|
3
|
-
import {
|
|
3
|
+
import { AteEditorI18n } from "../../services/ate-editor-i18n.service";
|
|
4
4
|
import { AteTooltipDirective } from "../../directives/ate-tooltip.directive";
|
|
5
5
|
import { AteIconComponent } from "../ui/ate-icon.component";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -9,7 +9,7 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
*/
|
|
10
10
|
export class AteBlockControlsComponent {
|
|
11
11
|
constructor() {
|
|
12
|
-
this.i18n = inject(
|
|
12
|
+
this.i18n = inject(AteEditorI18n);
|
|
13
13
|
this.editor = input.required();
|
|
14
14
|
this.hoveredData = input(null);
|
|
15
15
|
this.menuRef = viewChild.required("menuRef");
|
|
@@ -254,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
254
254
|
</div>
|
|
255
255
|
`, styles: [".ate-block-controls{display:flex;align-items:center;gap:2px;padding:4px;pointer-events:auto;will-change:transform}.ate-control-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:none;background:transparent;color:var(--ate-text-secondary);cursor:pointer;transition:all .15s ease}.ate-control-btn:hover{background:var(--ate-surface-tertiary);color:var(--ate-text)}.ate-control-btn .ate-icon{font-size:18px}@media (max-width: 768px){:host{display:none!important}}\n"] }]
|
|
256
256
|
}], ctorParameters: () => [] });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWJsb2NrLWNvbnRyb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL2F0ZS1ibG9jay1jb250cm9scy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxFQUE2QixNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUU1RDs7R0FFRztBQTJFSCxNQUFNLE9BQU8seUJBQXlCO0lBY3BDO1FBYm1CLFNBQUksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFakQsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLEtBQUssQ0FBNkQsSUFBSSxDQUFDLENBQUM7UUFFdEYsWUFBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQTZCLFNBQVMsQ0FBQyxDQUFDO1FBRTFELGtCQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQStELElBQUksQ0FBQztRQUNqRixrQkFBYSxHQUFtQixJQUFJLENBQUM7UUFDckMsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGtCQUFhLEdBQXlDLElBQUksQ0FBQztRQUdqRSxNQUFNLENBQUMsR0FBRyxFQUFF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WUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLGlGQUFpRjtRQUNoRixJQUF5QyxDQUFDLFFBQVEsR0FBRztZQUNwRCxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUVGLGdDQUFnQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDekMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvQixnQkFBZ0I7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBdk5VLHlCQUF5QjttR0FBekIseUJBQXlCLGtkQXJFMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJULGdsQkE1QlMsbUJBQW1CLGlKQUFFLGdCQUFnQjs7NEZBdUVwQyx5QkFBeUI7a0JBMUVyQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFDL0IsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgZWZmZWN0LFxuICBzaWduYWwsXG4gIGluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdGlwcHksIHsgSW5zdGFuY2UgYXMgVGlwcHlJbnN0YW5jZSwgc3RpY2t5IH0gZnJvbSBcInRpcHB5LmpzXCI7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBOb2RlIGFzIFBNTm9kZSB9IGZyb20gXCJAdGlwdGFwL3BtL21vZGVsXCI7XG5pbXBvcnQgeyBBdGVJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdGUtaTE4bi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvYXRlLXRvb2x0aXAuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBBdGVJY29uQ29tcG9uZW50IH0gZnJvbSBcIi4uL3VpL2F0ZS1pY29uLmNvbXBvbmVudFwiO1xuXG4vKipcbiAqIENvbXBvbmVudCBwcm92aWRpbmcgTm90aW9uLWxpa2UgYmxvY2sgY29udHJvbHMgKFBsdXMgYnV0dG9uIGFuZCBEcmFnIEhhbmRsZSkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdGUtYmxvY2stY29udHJvbHNcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0F0ZVRvb2x0aXBEaXJlY3RpdmUsIEF0ZUljb25Db21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICAjbWVudVJlZlxuICAgICAgY2xhc3M9XCJhdGUtYmxvY2stY29udHJvbHNcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIlxuICAgICAgKG1vdXNlZG93bik9XCJvbkNvbnRhaW5lck1vdXNlRG93bigkZXZlbnQpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYXRlLWNvbnRyb2wtYnRuIGF0ZS1ibG9jay1hZGRcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwiYWRkQmxvY2soJGV2ZW50KVwiXG4gICAgICAgIFthdGVUb29sdGlwXT1cImkxOG4uZWRpdG9yKCkuYmxvY2tBZGRcIlxuICAgICAgICBhdGVUb29sdGlwUGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgIDxhdGUtaWNvbiBuYW1lPVwiYmxvY2tBZGRcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXRlLWNvbnRyb2wtYnRuIGF0ZS1ibG9jay1kcmFnXCJcbiAgICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25EcmFnSGFuZGxlTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgICAgICAoZHJhZ2VuZCk9XCJvbkRyYWdFbmQoKVwiXG4gICAgICAgIFthdGVUb29sdGlwXT1cImkxOG4uZWRpdG9yKCkuYmxvY2tEcmFnXCJcbiAgICAgICAgYXRlVG9vbHRpcFBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICA8YXRlLWljb24gbmFtZT1cImJsb2NrRHJhZ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmF0ZS1ibG9jay1jb250cm9scyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWNvbnRyb2wtYnRuIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtY29udHJvbC1idG46aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtc3VyZmFjZS10ZXJ0aWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtY29udHJvbC1idG4gLmF0ZS1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZUJsb2NrQ29udHJvbHNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaTE4biA9IGluamVjdChBdGVJMThuU2VydmljZSk7XG5cbiAgZWRpdG9yID0gaW5wdXQucmVxdWlyZWQ8RWRpdG9yPigpO1xuICBob3ZlcmVkRGF0YSA9IGlucHV0PHsgbm9kZTogUE1Ob2RlOyBlbGVtZW50OiBIVE1MRWxlbWVudDsgcG9zOiBudW1iZXIgfSB8IG51bGw+KG51bGwpO1xuXG4gIG1lbnVSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KFwibWVudVJlZlwiKTtcblxuICBwcm90ZWN0ZWQgaXNJbnRlcmFjdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgbGFzdFZhbGlkRGF0YTogeyBub2RlOiBQTU5vZGU7IGVsZW1lbnQ6IEhUTUxFbGVtZW50OyBwb3M6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGFzdFZhbGlkUmVjdDogRE9NUmVjdCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHRpcHB5SW5zdGFuY2U6IFRpcHB5SW5zdGFuY2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB1cGRhdGVUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5ob3ZlcmVkRGF0YSgpO1xuICAgICAgY29uc3QgaW50ZXJhY3RpbmcgPSB0aGlzLmlzSW50ZXJhY3RpbmcoKTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5sYXN0VmFsaWREYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5sYXN0VmFsaWRSZWN0ID0gZGF0YS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZU1lbnUoISFkYXRhIHx8IGludGVyYWN0aW5nKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRUaXBweSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMudXBkYXRlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlVGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRpcHB5KCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLm1lbnVSZWYoKS5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghbmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGlwcHlJbnN0YW5jZSA9IHRpcHB5KGRvY3VtZW50LmJvZHksIHtcbiAgICAgIGNvbnRlbnQ6IG5hdGl2ZUVsZW1lbnQsXG4gICAgICB0cmlnZ2VyOiBcIm1hbnVhbFwiLFxuICAgICAgcGxhY2VtZW50OiBcImxlZnRcIixcbiAgICAgIHRoZW1lOiBcImF0ZS1ibG9jay1jb250cm9sc1wiLFxuICAgICAgYXBwZW5kVG86ICgpID0+ICh0aGlzLmVkaXRvcigpPy5vcHRpb25zPy5lbGVtZW50IGFzIEhUTUxFbGVtZW50KSB8fCBkb2N1bWVudC5ib2R5LFxuICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICBoaWRlT25DbGljazogZmFsc2UsXG4gICAgICBhcnJvdzogZmFsc2UsXG4gICAgICBvZmZzZXQ6IFswLCA4XSxcbiAgICAgIHpJbmRleDogOTksXG4gICAgICBwbHVnaW5zOiBbc3RpY2t5XSxcbiAgICAgIHN0aWNreTogXCJyZWZlcmVuY2VcIixcbiAgICAgIG1vdmVUcmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjJzIGVhc2Utb3V0XCIsXG4gICAgICBnZXRSZWZlcmVuY2VDbGllbnRSZWN0OiAoKSA9PiB0aGlzLmdldFNlbGVjdGlvblJlY3QoKSxcbiAgICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJwcmV2ZW50T3ZlcmZsb3dcIixcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgYm91bmRhcnk6ICh0aGlzLmVkaXRvcigpPy5vcHRpb25zPy5lbGVtZW50IGFzIEhUTUxFbGVtZW50KSB8fCBkb2N1bWVudC5ib2R5LFxuICAgICAgICAgICAgICBwYWRkaW5nOiA4LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWVudShzaG93OiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudXBkYXRlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlVGltZW91dCk7XG4gICAgfVxuICAgIGNvbnN0IGRlbGF5ID0gc2hvdyA/IDAgOiA0MDA7XG4gICAgdGhpcy51cGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2hvdykge1xuICAgICAgICB0aGlzLnNob3dUaXBweSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dUaXBweSgpIHtcbiAgICBpZiAodGhpcy50aXBweUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2V0UHJvcHMoe1xuICAgICAgICBnZXRSZWZlcmVuY2VDbGllbnRSZWN0OiAoKSA9PiB0aGlzLmdldFNlbGVjdGlvblJlY3QoKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVUaXBweSgpIHtcbiAgICBpZiAodGhpcy50aXBweUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0aW9uUmVjdCgpOiBET01SZWN0IHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ob3ZlcmVkRGF0YSgpO1xuICAgIGlmIChkYXRhICYmIGRhdGEuZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGRhdGEuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGFzdFZhbGlkUmVjdCB8fCBuZXcgRE9NUmVjdCgtOTk5OSwgLTk5OTksIDAsIDApO1xuICB9XG5cbiAgb25Nb3VzZUVudGVyKCkge1xuICAgIHRoaXMuaXNJbnRlcmFjdGluZy5zZXQodHJ1ZSk7XG4gIH1cblxuICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5pc0ludGVyYWN0aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBvbkNvbnRhaW5lck1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgb25CdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdGlvbiBzdHJhdGVneSB0byBhdm9pZCBwYXJ0aWFsIG5vZGUgZHJhZ2dpbmcgKGdob3N0IHRhYmxlIGlzc3VlKS5cbiAgICovXG4gIG9uRHJhZ0hhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ob3ZlcmVkRGF0YSgpIHx8IHRoaXMubGFzdFZhbGlkRGF0YTtcbiAgICBpZiAoZWQgJiYgZGF0YSkge1xuICAgICAgLy8gRm9yY2Ugd2hvbGUtbm9kZSBzZWxlY3Rpb24uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgYXRvbWljIG5vZGVzIGxpa2UgdGFibGVzIGFuZCBpbWFnZXMuXG4gICAgICBlZC5jb21tYW5kcy5zZXROb2RlU2VsZWN0aW9uKGRhdGEucG9zKTtcbiAgICB9XG4gIH1cblxuICBhZGRCbG9jayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ob3ZlcmVkRGF0YSgpIHx8IHRoaXMubGFzdFZhbGlkRGF0YTtcbiAgICBpZiAoIWVkIHx8ICFkYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBwb3MsIG5vZGUgfSA9IGRhdGE7XG4gICAgaWYgKG5vZGUuY29udGVudC5zaXplID09PSAwKSB7XG4gICAgICBlZC5jaGFpbigpXG4gICAgICAgIC5mb2N1cygpXG4gICAgICAgIC5zZXRUZXh0U2VsZWN0aW9uKHBvcyArIDEpXG4gICAgICAgIC5pbnNlcnRDb250ZW50KFwiL1wiKVxuICAgICAgICAucnVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5leHRQb3MgPSBwb3MgKyBub2RlLm5vZGVTaXplO1xuICAgICAgZWQuY2hhaW4oKVxuICAgICAgICAuZm9jdXMoKVxuICAgICAgICAuaW5zZXJ0Q29udGVudEF0KG5leHRQb3MsIHsgdHlwZTogXCJwYXJhZ3JhcGhcIiwgY29udGVudDogW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IFwiL1wiIH1dIH0pXG4gICAgICAgIC5zZXRUZXh0U2VsZWN0aW9uKG5leHRQb3MgKyAyKVxuICAgICAgICAucnVuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0ludGVyYWN0aW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgfVxuXG4gIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuaG92ZXJlZERhdGEoKSB8fCB0aGlzLmxhc3RWYWxpZERhdGE7XG4gICAgaWYgKCFlZCB8fCAhZGF0YSB8fCAhZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBlbGVtZW50LCBwb3MgfSA9IGRhdGE7XG4gICAgY29uc3QgdmlldyA9IGVkLnZpZXc7XG5cbiAgICAvLyAxLiBGb3JjZSB0aGUgZWRpdG9yIHRvIGZvY3VzIGFuZCBzZWxlY3QgdGhlIEVOVElSRSBub2RlXG4gICAgdmlldy5mb2N1cygpO1xuICAgIGVkLmNvbW1hbmRzLnNldE5vZGVTZWxlY3Rpb24ocG9zKTtcblxuICAgIC8vIDIuIEJyb3dzZXIgRHJhZyBJbWFnZSAmIG1ldGFkYXRhXG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShlbGVtZW50LCAwLCAxMCk7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcIm1vdmVcIjtcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcInRleHQvcGxhaW5cIiwgXCJcIik7XG5cbiAgICAvLyAzLiBQUk8tSEFDSzogSW5kaWNhdGUgdGhpcyBpcyBhIG1vdmUgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uICh0aGUgd2hvbGUgbm9kZSlcbiAgICAodmlldyBhcyB1bmtub3duIGFzIHsgZHJhZ2dpbmc6IHVua25vd24gfSkuZHJhZ2dpbmcgPSB7XG4gICAgICBzbGljZTogZWQuc3RhdGUuc2VsZWN0aW9uLmNvbnRlbnQoKSxcbiAgICAgIG1vdmU6IHRydWUsXG4gICAgfTtcblxuICAgIC8vIDQuIERpc3BhdGNoIHZpcnR1YWwgZHJhZ3N0YXJ0XG4gICAgY29uc3QgcG1FdmVudCA9IG5ldyBEcmFnRXZlbnQoXCJkcmFnc3RhcnRcIiwge1xuICAgICAgZGF0YVRyYW5zZmVyOiBldmVudC5kYXRhVHJhbnNmZXIsXG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQocG1FdmVudCk7XG5cbiAgICAvLyA1LiBDbGVhbnVwIFVJXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhpZGVUaXBweSgpO1xuICAgICAgdGhpcy5pc0ludGVyYWN0aW5nLnNldChmYWxzZSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBvbkRyYWdFbmQoKSB7XG4gICAgdGhpcy5pc0ludGVyYWN0aW5nLnNldChmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWJsb2NrLWNvbnRyb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL2F0ZS1ibG9jay1jb250cm9scy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxFQUE2QixNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUU1RDs7R0FFRztBQTJFSCxNQUFNLE9BQU8seUJBQXlCO0lBY3BDO1FBYm1CLFNBQUksR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFaEQsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLEtBQUssQ0FBNkQsSUFBSSxDQUFDLENBQUM7UUFFdEYsWUFBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQTZCLFNBQVMsQ0FBQyxDQUFDO1FBRTFELGtCQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQStELElBQUksQ0FBQztRQUNqRixrQkFBYSxHQUFtQixJQUFJLENBQUM7UUFDckMsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGtCQUFhLEdBQXlDLElBQUksQ0FBQztRQUdqRSxNQUFNLENBQUMsR0FBRyxFQUFF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WUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLGlGQUFpRjtRQUNoRixJQUF5QyxDQUFDLFFBQVEsR0FBRztZQUNwRCxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUVGLGdDQUFnQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDekMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvQixnQkFBZ0I7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBdk5VLHlCQUF5QjttR0FBekIseUJBQXlCLGtkQXJFMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJULGdsQkE1QlMsbUJBQW1CLGlKQUFFLGdCQUFnQjs7NEZBdUVwQyx5QkFBeUI7a0JBMUVyQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFDL0IsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgZWZmZWN0LFxuICBzaWduYWwsXG4gIGluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdGlwcHksIHsgSW5zdGFuY2UgYXMgVGlwcHlJbnN0YW5jZSwgc3RpY2t5IH0gZnJvbSBcInRpcHB5LmpzXCI7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBOb2RlIGFzIFBNTm9kZSB9IGZyb20gXCJAdGlwdGFwL3BtL21vZGVsXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JJMThuIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItaTE4bi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvYXRlLXRvb2x0aXAuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBBdGVJY29uQ29tcG9uZW50IH0gZnJvbSBcIi4uL3VpL2F0ZS1pY29uLmNvbXBvbmVudFwiO1xuXG4vKipcbiAqIENvbXBvbmVudCBwcm92aWRpbmcgTm90aW9uLWxpa2UgYmxvY2sgY29udHJvbHMgKFBsdXMgYnV0dG9uIGFuZCBEcmFnIEhhbmRsZSkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdGUtYmxvY2stY29udHJvbHNcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0F0ZVRvb2x0aXBEaXJlY3RpdmUsIEF0ZUljb25Db21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICAjbWVudVJlZlxuICAgICAgY2xhc3M9XCJhdGUtYmxvY2stY29udHJvbHNcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIlxuICAgICAgKG1vdXNlZG93bik9XCJvbkNvbnRhaW5lck1vdXNlRG93bigkZXZlbnQpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYXRlLWNvbnRyb2wtYnRuIGF0ZS1ibG9jay1hZGRcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwiYWRkQmxvY2soJGV2ZW50KVwiXG4gICAgICAgIFthdGVUb29sdGlwXT1cImkxOG4uZWRpdG9yKCkuYmxvY2tBZGRcIlxuICAgICAgICBhdGVUb29sdGlwUGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgIDxhdGUtaWNvbiBuYW1lPVwiYmxvY2tBZGRcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXRlLWNvbnRyb2wtYnRuIGF0ZS1ibG9jay1kcmFnXCJcbiAgICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25EcmFnSGFuZGxlTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgICAgICAoZHJhZ2VuZCk9XCJvbkRyYWdFbmQoKVwiXG4gICAgICAgIFthdGVUb29sdGlwXT1cImkxOG4uZWRpdG9yKCkuYmxvY2tEcmFnXCJcbiAgICAgICAgYXRlVG9vbHRpcFBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICA8YXRlLWljb24gbmFtZT1cImJsb2NrRHJhZ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmF0ZS1ibG9jay1jb250cm9scyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWNvbnRyb2wtYnRuIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtY29udHJvbC1idG46aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtc3VyZmFjZS10ZXJ0aWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtY29udHJvbC1idG4gLmF0ZS1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZUJsb2NrQ29udHJvbHNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaTE4biA9IGluamVjdChBdGVFZGl0b3JJMThuKTtcblxuICBlZGl0b3IgPSBpbnB1dC5yZXF1aXJlZDxFZGl0b3I+KCk7XG4gIGhvdmVyZWREYXRhID0gaW5wdXQ8eyBub2RlOiBQTU5vZGU7IGVsZW1lbnQ6IEhUTUxFbGVtZW50OyBwb3M6IG51bWJlciB9IHwgbnVsbD4obnVsbCk7XG5cbiAgbWVudVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oXCJtZW51UmVmXCIpO1xuXG4gIHByb3RlY3RlZCBpc0ludGVyYWN0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBsYXN0VmFsaWREYXRhOiB7IG5vZGU6IFBNTm9kZTsgZWxlbWVudDogSFRNTEVsZW1lbnQ7IHBvczogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0VmFsaWRSZWN0OiBET01SZWN0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGlwcHlJbnN0YW5jZTogVGlwcHlJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHVwZGF0ZVRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmhvdmVyZWREYXRhKCk7XG4gICAgICBjb25zdCBpbnRlcmFjdGluZyA9IHRoaXMuaXNJbnRlcmFjdGluZygpO1xuXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLmxhc3RWYWxpZERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLmxhc3RWYWxpZFJlY3QgPSBkYXRhLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlTWVudSghIWRhdGEgfHwgaW50ZXJhY3RpbmcpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdFRpcHB5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy51cGRhdGVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy51cGRhdGVUaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGlwcHlJbnN0YW5jZSkge1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGlwcHkoKSB7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMubWVudVJlZigpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFuYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50aXBweUluc3RhbmNlID0gdGlwcHkoZG9jdW1lbnQuYm9keSwge1xuICAgICAgY29udGVudDogbmF0aXZlRWxlbWVudCxcbiAgICAgIHRyaWdnZXI6IFwibWFudWFsXCIsXG4gICAgICBwbGFjZW1lbnQ6IFwibGVmdFwiLFxuICAgICAgdGhlbWU6IFwiYXRlLWJsb2NrLWNvbnRyb2xzXCIsXG4gICAgICBhcHBlbmRUbzogKCkgPT4gKHRoaXMuZWRpdG9yKCk/Lm9wdGlvbnM/LmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IGRvY3VtZW50LmJvZHksXG4gICAgICBpbnRlcmFjdGl2ZTogdHJ1ZSxcbiAgICAgIGhpZGVPbkNsaWNrOiBmYWxzZSxcbiAgICAgIGFycm93OiBmYWxzZSxcbiAgICAgIG9mZnNldDogWzAsIDhdLFxuICAgICAgekluZGV4OiA5OSxcbiAgICAgIHBsdWdpbnM6IFtzdGlja3ldLFxuICAgICAgc3RpY2t5OiBcInJlZmVyZW5jZVwiLFxuICAgICAgbW92ZVRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuMnMgZWFzZS1vdXRcIixcbiAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6ICgpID0+IHRoaXMuZ2V0U2VsZWN0aW9uUmVjdCgpLFxuICAgICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInByZXZlbnRPdmVyZmxvd1wiLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBib3VuZGFyeTogKHRoaXMuZWRpdG9yKCk/Lm9wdGlvbnM/LmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IGRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNZW51KHNob3c6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy51cGRhdGVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy51cGRhdGVUaW1lb3V0KTtcbiAgICB9XG4gICAgY29uc3QgZGVsYXkgPSBzaG93ID8gMCA6IDQwMDtcbiAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHRoaXMuc2hvd1RpcHB5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZGVUaXBweSgpO1xuICAgICAgfVxuICAgIH0sIGRlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1RpcHB5KCkge1xuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5zZXRQcm9wcyh7XG4gICAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6ICgpID0+IHRoaXMuZ2V0U2VsZWN0aW9uUmVjdCgpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRpcHB5KCkge1xuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3Rpb25SZWN0KCk6IERPTVJlY3Qge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmhvdmVyZWREYXRhKCk7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5lbGVtZW50KSB7XG4gICAgICByZXR1cm4gZGF0YS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYXN0VmFsaWRSZWN0IHx8IG5ldyBET01SZWN0KC05OTk5LCAtOTk5OSwgMCwgMCk7XG4gIH1cblxuICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgdGhpcy5pc0ludGVyYWN0aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmlzSW50ZXJhY3Rpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBvbkJ1dHRvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0aW9uIHN0cmF0ZWd5IHRvIGF2b2lkIHBhcnRpYWwgbm9kZSBkcmFnZ2luZyAoZ2hvc3QgdGFibGUgaXNzdWUpLlxuICAgKi9cbiAgb25EcmFnSGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZWQgPSB0aGlzLmVkaXRvcigpO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmhvdmVyZWREYXRhKCkgfHwgdGhpcy5sYXN0VmFsaWREYXRhO1xuICAgIGlmIChlZCAmJiBkYXRhKSB7XG4gICAgICAvLyBGb3JjZSB3aG9sZS1ub2RlIHNlbGVjdGlvbi4gVGhpcyBpcyBjcnVjaWFsIGZvciBhdG9taWMgbm9kZXMgbGlrZSB0YWJsZXMgYW5kIGltYWdlcy5cbiAgICAgIGVkLmNvbW1hbmRzLnNldE5vZGVTZWxlY3Rpb24oZGF0YS5wb3MpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEJsb2NrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZWQgPSB0aGlzLmVkaXRvcigpO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmhvdmVyZWREYXRhKCkgfHwgdGhpcy5sYXN0VmFsaWREYXRhO1xuICAgIGlmICghZWQgfHwgIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBvcywgbm9kZSB9ID0gZGF0YTtcbiAgICBpZiAobm9kZS5jb250ZW50LnNpemUgPT09IDApIHtcbiAgICAgIGVkLmNoYWluKClcbiAgICAgICAgLmZvY3VzKClcbiAgICAgICAgLnNldFRleHRTZWxlY3Rpb24ocG9zICsgMSlcbiAgICAgICAgLmluc2VydENvbnRlbnQoXCIvXCIpXG4gICAgICAgIC5ydW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV4dFBvcyA9IHBvcyArIG5vZGUubm9kZVNpemU7XG4gICAgICBlZC5jaGFpbigpXG4gICAgICAgIC5mb2N1cygpXG4gICAgICAgIC5pbnNlcnRDb250ZW50QXQobmV4dFBvcywgeyB0eXBlOiBcInBhcmFncmFwaFwiLCBjb250ZW50OiBbeyB0eXBlOiBcInRleHRcIiwgdGV4dDogXCIvXCIgfV0gfSlcbiAgICAgICAgLnNldFRleHRTZWxlY3Rpb24obmV4dFBvcyArIDIpXG4gICAgICAgIC5ydW4oKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzSW50ZXJhY3Rpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmhpZGVUaXBweSgpO1xuICB9XG5cbiAgb25EcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ob3ZlcmVkRGF0YSgpIHx8IHRoaXMubGFzdFZhbGlkRGF0YTtcbiAgICBpZiAoIWVkIHx8ICFkYXRhIHx8ICFldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGVsZW1lbnQsIHBvcyB9ID0gZGF0YTtcbiAgICBjb25zdCB2aWV3ID0gZWQudmlldztcblxuICAgIC8vIDEuIEZvcmNlIHRoZSBlZGl0b3IgdG8gZm9jdXMgYW5kIHNlbGVjdCB0aGUgRU5USVJFIG5vZGVcbiAgICB2aWV3LmZvY3VzKCk7XG4gICAgZWQuY29tbWFuZHMuc2V0Tm9kZVNlbGVjdGlvbihwb3MpO1xuXG4gICAgLy8gMi4gQnJvd3NlciBEcmFnIEltYWdlICYgbWV0YWRhdGFcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGVsZW1lbnQsIDAsIDEwKTtcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IFwibW92ZVwiO1xuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBcIlwiKTtcblxuICAgIC8vIDMuIFBSTy1IQUNLOiBJbmRpY2F0ZSB0aGlzIGlzIGEgbW92ZSBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gKHRoZSB3aG9sZSBub2RlKVxuICAgICh2aWV3IGFzIHVua25vd24gYXMgeyBkcmFnZ2luZzogdW5rbm93biB9KS5kcmFnZ2luZyA9IHtcbiAgICAgIHNsaWNlOiBlZC5zdGF0ZS5zZWxlY3Rpb24uY29udGVudCgpLFxuICAgICAgbW92ZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgLy8gNC4gRGlzcGF0Y2ggdmlydHVhbCBkcmFnc3RhcnRcbiAgICBjb25zdCBwbUV2ZW50ID0gbmV3IERyYWdFdmVudChcImRyYWdzdGFydFwiLCB7XG4gICAgICBkYXRhVHJhbnNmZXI6IGV2ZW50LmRhdGFUcmFuc2ZlcixcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChwbUV2ZW50KTtcblxuICAgIC8vIDUuIENsZWFudXAgVUlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGlkZVRpcHB5KCk7XG4gICAgICB0aGlzLmlzSW50ZXJhY3Rpbmcuc2V0KGZhbHNlKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIG9uRHJhZ0VuZCgpIHtcbiAgICB0aGlzLmlzSW50ZXJhY3Rpbmcuc2V0KGZhbHNlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, input, viewChild, effect, computed, inject, signal, ChangeDetectionStrategy, } from "@angular/core";
|
|
2
2
|
import tippy, { sticky } from "tippy.js";
|
|
3
|
-
import {
|
|
3
|
+
import { AteEditorI18n } from "../../services/ate-editor-i18n.service";
|
|
4
4
|
import { AteEditorCommandsService } from "../../services/ate-editor-commands.service";
|
|
5
5
|
import { createDefaultSlashCommands } from "../../config/ate-slash-commands.config";
|
|
6
6
|
import { Plugin, PluginKey } from "@tiptap/pm/state";
|
|
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
|
|
|
10
10
|
// Default command definitions are now centralized in src/lib/config/slash-commands.config.ts
|
|
11
11
|
export class AteSlashCommandsComponent {
|
|
12
12
|
constructor() {
|
|
13
|
-
this.i18nService = inject(
|
|
13
|
+
this.i18nService = inject(AteEditorI18n);
|
|
14
14
|
this.editor = input.required();
|
|
15
15
|
this.config = input(undefined);
|
|
16
16
|
this.menuRef = viewChild.required("menuRef");
|
|
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
350
350
|
</div>
|
|
351
351
|
`, styles: [".slash-commands-menu{background:var(--ate-menu-bg);border:1px solid var(--ate-menu-border);border-radius:var(--ate-menu-border-radius, 12px);box-shadow:var(--ate-menu-shadow);padding:var(--ate-menu-padding);max-height:320px;overflow-y:auto;min-width:280px;outline:none;animation:slashMenuFadeIn .2s cubic-bezier(0,0,.2,1);scrollbar-width:thin;scrollbar-color:var(--ate-scrollbar-thumb) var(--ate-scrollbar-track)}.slash-commands-menu::-webkit-scrollbar{width:var(--ate-scrollbar-width)}.slash-commands-menu::-webkit-scrollbar-track{background:var(--ate-scrollbar-track)}.slash-commands-menu::-webkit-scrollbar-thumb{background:var(--ate-scrollbar-thumb);border:3px solid transparent;background-clip:content-box;border-radius:10px}.slash-commands-menu::-webkit-scrollbar-thumb:hover{background:var(--ate-scrollbar-thumb-hover);background-clip:content-box}@keyframes slashMenuFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.slash-command-item{display:flex;align-items:center;gap:12px;padding:var(--ate-menu-padding);border-radius:var(--ate-menu-border-radius, 8px);cursor:pointer;transition:all .15s ease;border:var(--ate-border-width, 1px) solid transparent;outline:none;margin-bottom:2px}.slash-command-item:last-child{margin-bottom:0}.slash-command-item:hover{background:var(--ate-surface-secondary)}.slash-command-item.selected{background:var(--ate-primary-light);border-color:var(--ate-primary-light-alpha)}.slash-command-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--ate-surface-tertiary);border-radius:var(--ate-sub-border-radius, 8px);color:var(--ate-primary);flex-shrink:0;transition:all .15s ease}.slash-command-item.selected .slash-command-icon{background:var(--ate-primary);color:var(--ate-primary-contrast, #ffffff)}.slash-command-icon .ate-icon{font-size:18px}.slash-command-content{flex:1;min-width:0}.slash-command-title{font-weight:500;color:var(--ate-text);font-size:14px;margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slash-command-description{color:var(--ate-text-secondary);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
|
|
352
352
|
}], ctorParameters: () => [] });
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvc2xhc2gtY29tbWFuZHMvYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxFQUE2QixNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFjLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFNUQsNkZBQTZGO0FBbUo3RixNQUFNLE9BQU8seUJBQXlCO0lBbURwQztRQWxEUyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxLQUFLLENBQXFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlELFlBQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUE2QixTQUFTLENBQUMsQ0FBQztRQUU1RCxr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Q0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3BELENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0FsV1UseUJBQXlCO21HQUF6Qix5QkFBeUIsbWNBNUkxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULHV0RUFyQlMsZ0JBQWdCOzs0RkErSWYseUJBQXlCO2tCQWpKckMsU0FBUzsrQkFDRSxvQkFBb0IsV0FDckIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUNmLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgdmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIGVmZmVjdCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB0aXBweSwgeyBJbnN0YW5jZSBhcyBUaXBweUluc3RhbmNlLCBzdGlja3kgfSBmcm9tIFwidGlwcHkuanNcIjtcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IEF0ZUkxOG5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F0ZS1pMThuLnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdGUtZWRpdG9yLWNvbW1hbmRzLnNlcnZpY2VcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRTbGFzaENvbW1hbmRzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hdGUtc2xhc2gtY29tbWFuZHMuY29uZmlnXCI7XG5pbXBvcnQgeyBBdGVTbGFzaENvbW1hbmRJdGVtLCBBdGVDdXN0b21TbGFzaENvbW1hbmRzIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdGUtc2xhc2gtY29tbWFuZC5tb2RlbFwiO1xuaW1wb3J0IHsgUGx1Z2luLCBQbHVnaW5LZXkgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCB9IGZyb20gXCJAdGlwdGFwL3BtL3ZpZXdcIjtcbmltcG9ydCB7IEF0ZUljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vdWkvYXRlLWljb24uY29tcG9uZW50XCI7XG5cbi8vIERlZmF1bHQgY29tbWFuZCBkZWZpbml0aW9ucyBhcmUgbm93IGNlbnRyYWxpemVkIGluIHNyYy9saWIvY29uZmlnL3NsYXNoLWNvbW1hbmRzLmNvbmZpZy50c1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXRlLXNsYXNoLWNvbW1hbmRzXCIsXG4gIGltcG9ydHM6IFtBdGVJY29uQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjbWVudVJlZiBjbGFzcz1cInNsYXNoLWNvbW1hbmRzLW1lbnVcIj5cbiAgICAgIEBmb3IgKGNvbW1hbmQgb2YgZmlsdGVyZWRDb21tYW5kcygpOyB0cmFjayBjb21tYW5kLnRpdGxlKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNsYXNoLWNvbW1hbmQtaXRlbVwiXG4gICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIiRpbmRleCA9PT0gc2VsZWN0ZWRJbmRleCgpXCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cImV4ZWN1dGVDb21tYW5kKGNvbW1hbmQpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJzZWxlY3RlZEluZGV4LnNldCgkaW5kZXgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtaWNvblwiPlxuICAgICAgICAgICAgPGF0ZS1pY29uIFtuYW1lXT1cImNvbW1hbmQuaWNvblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtdGl0bGVcIj57eyBjb21tYW5kLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xhc2gtY29tbWFuZC1kZXNjcmlwdGlvblwiPnt7IGNvbW1hbmQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLW1lbnUtYmcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hdGUtbWVudS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtbWVudS1ib3JkZXItcmFkaXVzLCAxMnB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLW1lbnUtc2hhZG93KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IDI4MHB4O1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBhbmltYXRpb246IHNsYXNoTWVudUZhZGVJbiAwLjJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYikgdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtc2Nyb2xsYmFyLXdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1zY3JvbGxiYXItdGh1bWIpO1xuICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7XG4gICAgICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgc2xhc2hNZW51RmFkZUluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KTtcbiAgICAgICAgfVxuICAgICAgICB0byB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1tZW51LWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgICAgIGJvcmRlcjogdmFyKC0tYXRlLWJvcmRlci13aWR0aCwgMXB4KSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2Utc2Vjb25kYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeS1saWdodC1hbHBoYSk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2UtdGVydGlhcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCAuc2xhc2gtY29tbWFuZC1pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXByaW1hcnktY29udHJhc3QsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pY29uIC5hdGUtaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtY29udGVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXRlU2xhc2hDb21tYW5kc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGkxOG5TZXJ2aWNlID0gaW5qZWN0KEF0ZUkxOG5TZXJ2aWNlKTtcbiAgZWRpdG9yID0gaW5wdXQucmVxdWlyZWQ8RWRpdG9yPigpO1xuICBjb25maWcgPSBpbnB1dDxBdGVDdXN0b21TbGFzaENvbW1hbmRzIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIG1lbnVSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KFwibWVudVJlZlwiKTtcblxuICBwcml2YXRlIHRpcHB5SW5zdGFuY2U6IFRpcHB5SW5zdGFuY2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBlZGl0b3JDb21tYW5kcyA9IGluamVjdChBdGVFZGl0b3JDb21tYW5kc1NlcnZpY2UpO1xuXG4gIC8vIExvY2FsIHN0YXRlXG4gIHByaXZhdGUgaXNBY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjdXJyZW50UXVlcnkgPSBzaWduYWwoXCJcIik7XG4gIHByaXZhdGUgc2xhc2hSYW5nZTogeyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFNpZ25hbCBmb3Igc2VsZWN0ZWQgaW5kZXhcbiAgc2VsZWN0ZWRJbmRleCA9IHNpZ25hbCgwKTtcblxuICAvLyBUb29sYmFyIGludGVyYWN0aW9uIHN0YXRlIChmcm9tIGNlbnRyYWxpemVkIHNlcnZpY2UpXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNUb29sYmFySW50ZXJhY3RpbmcgPSB0aGlzLmVkaXRvckNvbW1hbmRzLmlzVG9vbGJhckludGVyYWN0aW5nO1xuXG4gIGZpbHRlclBsYWNlaG9sZGVyVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pMThuU2VydmljZS5zbGFzaENvbW1hbmRzKCkuZmlsdGVyUGxhY2Vob2xkZXIgfHwgXCJGaWx0ZXIuLi5cIjtcbiAgfSk7XG5cbiAgY29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5jb21tYW5kcykge1xuICAgICAgcmV0dXJuIGNvbmZpZy5jb21tYW5kcztcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byBkZWZhdWx0IG5hdGl2ZSBjb21tYW5kc1xuICAgIHJldHVybiBjcmVhdGVEZWZhdWx0U2xhc2hDb21tYW5kcyh0aGlzLmkxOG5TZXJ2aWNlLCB0aGlzLmVkaXRvckNvbW1hbmRzKTtcbiAgfSk7XG5cbiAgZmlsdGVyZWRDb21tYW5kcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuY3VycmVudFF1ZXJ5KCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMuY29tbWFuZHMoKTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiBjb21tYW5kcztcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWFuZHMuZmlsdGVyKFxuICAgICAgY29tbWFuZCA9PlxuICAgICAgICBjb21tYW5kLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8XG4gICAgICAgIGNvbW1hbmQuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcbiAgICAgICAgY29tbWFuZC5rZXl3b3Jkcy5zb21lKGtleXdvcmQgPT4ga2V5d29yZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSlcbiAgICApO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICAgICAgaWYgKCFlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFuIHVwIG9sZCBsaXN0ZW5lcnNcbiAgICAgICAgZWQub2ZmKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9mZihcInRyYW5zYWN0aW9uXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9mZihcImZvY3VzXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9mZihcImJsdXJcIiwgdGhpcy5oYW5kbGVCbHVyKTtcblxuICAgICAgICAvLyBBZGQgbmV3IGxpc3RlbmVyc1xuICAgICAgICBlZC5vbihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgICBlZC5vbihcInRyYW5zYWN0aW9uXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9uKFwiZm9jdXNcIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgICAgZWQub24oXCJibHVyXCIsIHRoaXMuaGFuZGxlQmx1cik7XG5cbiAgICAgICAgLy8gVXNlIFByb3NlTWlycm9yIHBsdWdpbiBzeXN0ZW0gdG8gaW50ZXJjZXB0IGtleXNcbiAgICAgICAgdGhpcy5hZGRLZXlib2FyZFBsdWdpbihlZCk7XG5cbiAgICAgICAgLy8gdXBkYXRlTWVudSgpIHdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBlZGl0b3IgaXMgcmVhZHlcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdFRpcHB5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKGVkKSB7XG4gICAgICBlZC5vZmYoXCJzZWxlY3Rpb25VcGRhdGVcIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgIGVkLm9mZihcInRyYW5zYWN0aW9uXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICBlZC5vZmYoXCJmb2N1c1wiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub2ZmKFwiYmx1clwiLCB0aGlzLmhhbmRsZUJsdXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRpcHB5KCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLm1lbnVSZWYoKS5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghbmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy50aXBweUluc3RhbmNlID0gdGlwcHkoZG9jdW1lbnQuYm9keSwge1xuICAgICAgY29udGVudDogbmF0aXZlRWxlbWVudCxcbiAgICAgIHRyaWdnZXI6IFwibWFudWFsXCIsXG4gICAgICBwbGFjZW1lbnQ6IFwiYm90dG9tLXN0YXJ0XCIsXG4gICAgICB0aGVtZTogXCJzbGFzaC1tZW51XCIsXG4gICAgICBhcHBlbmRUbzogX3JlZiA9PiB7XG4gICAgICAgIC8vIEFsd2F5cyB0cnkgdG8gY2xpbWIgdXAgdG8gZWRpdG9yIGhvc3QgdG8gaW5oZXJpdCBDU1MgdmFyaWFibGVzXG4gICAgICAgIGNvbnN0IGhvc3QgPSAodGhpcy5lZGl0b3IoKS5vcHRpb25zLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXG4gICAgICAgICAgXCJhbmd1bGFyLXRpcHRhcC1lZGl0b3JcIlxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaG9zdCB8fCBkb2N1bWVudC5ib2R5O1xuICAgICAgfSxcbiAgICAgIGludGVyYWN0aXZlOiB0cnVlLFxuICAgICAgYXJyb3c6IGZhbHNlLFxuICAgICAgb2Zmc2V0OiBbMCwgOF0sXG4gICAgICBoaWRlT25DbGljazogdHJ1ZSxcbiAgICAgIHBsdWdpbnM6IFtzdGlja3ldLFxuICAgICAgc3RpY2t5OiBmYWxzZSxcbiAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6ICgpID0+IHRoaXMuZ2V0U2xhc2hSZWN0KCksXG4gICAgICAvLyBJbXByb3ZlIHBvc2l0aW9uaW5nIHdpdGggc2Nyb2xsXG4gICAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwicHJldmVudE92ZXJmbG93XCIsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGJvdW5kYXJ5OiAodGhpcy5lZGl0b3IoKS5vcHRpb25zLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IGRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJmbGlwXCIsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogW1widG9wLXN0YXJ0XCIsIFwiYm90dG9tLWVuZFwiLCBcInRvcC1lbmRcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJoaWRlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsIGNoZWNrIGFmdGVyIFRpcHB5IGlzIGluaXRpYWxpemVkXG4gICAgdGhpcy51cGRhdGVNZW51KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFNsYXNoUmVjdCgpOiBET01SZWN0IHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCFlZCB8fCAhdGhpcy5zbGFzaFJhbmdlKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVJlY3QoLTk5OTksIC05OTk5LCAwLCAwKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVXNlIFByb3NlTWlycm9yIGNvb3JkaW5hdGVzIGZvciBiZXR0ZXIgcHJlY2lzaW9uXG4gICAgICBjb25zdCBjb29yZHMgPSBlZC52aWV3LmNvb3Jkc0F0UG9zKHRoaXMuc2xhc2hSYW5nZS5mcm9tKTtcbiAgICAgIHJldHVybiBuZXcgRE9NUmVjdChjb29yZHMubGVmdCwgY29vcmRzLnRvcCwgMCwgY29vcmRzLmJvdHRvbSAtIGNvb3Jkcy50b3ApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJFcnJvciBjYWxjdWxhdGluZyBjb29yZGluYXRlczpcIiwgZXJyb3IpO1xuICAgICAgLy8gRmFsbGJhY2sgdG8gd2luZG93LmdldFNlbGVjdGlvblxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSA6IG51bGw7XG4gICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbmV3IERPTVJlY3QoLTk5OTksIC05OTk5LCAwLCAwKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgICByZXR1cm4gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlTWVudSA9ICgpID0+IHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCFlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZnJvbSB9ID0gZWQuc3RhdGUuc2VsZWN0aW9uO1xuXG4gICAgLy8gQ2hlY2sgaWYgJy8nIHdhcyB0eXBlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBvciBhZnRlciBhIHNwYWNlXG4gICAgY29uc3QgdGV4dEJlZm9yZSA9IGVkLnN0YXRlLmRvYy50ZXh0QmV0d2VlbihNYXRoLm1heCgwLCBmcm9tIC0gMjApLCBmcm9tLCBcIlxcblwiKTtcbiAgICBjb25zdCBzbGFzaE1hdGNoID0gdGV4dEJlZm9yZS5tYXRjaCgvKD86XnxcXHMpXFwvKFteL1xcc10qKSQvKTtcblxuICAgIGlmIChzbGFzaE1hdGNoKSB7XG4gICAgICBjb25zdCBxdWVyeSA9IHNsYXNoTWF0Y2hbMV0gfHwgXCJcIjtcbiAgICAgIGNvbnN0IHdhc0FjdGl2ZSA9IHRoaXMuaXNBY3RpdmU7XG5cbiAgICAgIHRoaXMuY3VycmVudFF1ZXJ5LnNldChxdWVyeSk7XG4gICAgICB0aGlzLnNsYXNoUmFuZ2UgPSB7XG4gICAgICAgIGZyb206IGZyb20gLSBzbGFzaE1hdGNoWzBdLmxlbmd0aCArIHNsYXNoTWF0Y2hbMF0uaW5kZXhPZihcIi9cIiksXG4gICAgICAgIHRvOiBmcm9tLFxuICAgICAgfTtcblxuICAgICAgLy8gUmVzZXQgaW5kZXggaWYgbWVudSBqdXN0IGJlY2FtZSBhY3RpdmVcbiAgICAgIGlmICghd2FzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoMCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICBpZiAodGhpcy5pc1Rvb2xiYXJJbnRlcmFjdGluZygpKSB7XG4gICAgICAgIHRoaXMuaGlkZVRpcHB5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dUaXBweSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLmhpZGVUaXBweSgpO1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5oaWRlVGlwcHkoKSwgMTAwKTtcbiAgfTtcblxuICBwcml2YXRlIHNjcm9sbFRvU2VsZWN0ZWQoKSB7XG4gICAgLy8gU2Nyb2xsIHRvIHRoZSBzZWxlY3RlZCBlbGVtZW50XG4gICAgY29uc3QgbWVudUVsID0gdGhpcy5tZW51UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKG1lbnVFbCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gbWVudUVsLnF1ZXJ5U2VsZWN0b3IoXCIuc2xhc2gtY29tbWFuZC1pdGVtLnNlbGVjdGVkXCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHNlbGVjdGVkSXRlbSkge1xuICAgICAgICBzZWxlY3RlZEl0ZW0uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogXCJuZWFyZXN0XCIsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd1RpcHB5KCkge1xuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UgJiYgdGhpcy5maWx0ZXJlZENvbW1hbmRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLnNldFByb3BzKHsgc3RpY2t5OiBcInJlZmVyZW5jZVwiIH0pO1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVUaXBweSgpIHtcbiAgICBpZiAodGhpcy50aXBweUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2V0UHJvcHMoeyBzdGlja3k6IGZhbHNlIH0pO1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBleGVjdXRlQ29tbWFuZChjb21tYW5kOiBBdGVTbGFzaENvbW1hbmRJdGVtKSB7XG4gICAgY29uc3QgZWQgPSB0aGlzLmVkaXRvcigpO1xuICAgIGlmICghZWQgfHwgIXRoaXMuc2xhc2hSYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBzbGFzaCB0ZXh0IChcIi9cIilcbiAgICBjb25zdCB7IHRyIH0gPSBlZC5zdGF0ZTtcbiAgICB0ci5kZWxldGUodGhpcy5zbGFzaFJhbmdlLmZyb20sIHRoaXMuc2xhc2hSYW5nZS50byk7XG4gICAgZWQudmlldy5kaXNwYXRjaCh0cik7XG5cbiAgICAvLyBIaWRlIG1lbnUgaW1tZWRpYXRlbHlcbiAgICB0aGlzLmhpZGVUaXBweSgpO1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgIC8vIEdpdmUgZm9jdXMgYmFjayB0byBlZGl0b3IgYW5kIGV4ZWN1dGUgY29tbWFuZFxuICAgIC8vIFVzZSBhIG1pY3JvLWRlbGF5IHRvIGVuc3VyZSBQcm9zZU1pcnJvciBET00gaXMgc3RhYmxlIGFmdGVyIHJlbW92aW5nIFwiL1wiXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBlZC5jb21tYW5kcy5mb2N1cygpO1xuICAgICAgY29tbWFuZC5jb21tYW5kKGVkKTtcbiAgICB9LCAxMCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEtleWJvYXJkUGx1Z2luKGVkOiBFZGl0b3IpIHtcbiAgICAvLyBBZGQgYSBQcm9zZU1pcnJvciBwbHVnaW4gdG8gaW50ZXJjZXB0IGtleWJvYXJkIGV2ZW50c1xuICAgIGNvbnN0IGtleWJvYXJkUGx1Z2luID0gbmV3IFBsdWdpbih7XG4gICAgICBrZXk6IG5ldyBQbHVnaW5LZXkoXCJzbGFzaC1jb21tYW5kcy1rZXlib2FyZFwiKSxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGRlY29yYXRpb25zOiBzdGF0ZSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBmcm9tIH0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgICAgICAgY29uc3QgdGV4dEJlZm9yZSA9IHN0YXRlLmRvYy50ZXh0QmV0d2VlbihNYXRoLm1heCgwLCBmcm9tIC0gMjApLCBmcm9tLCBcIlxcblwiKTtcbiAgICAgICAgICBjb25zdCBzbGFzaE1hdGNoID0gdGV4dEJlZm9yZS5tYXRjaCgvKD86XnxcXHMpXFwvKFteL1xcc10qKSQvKTtcblxuICAgICAgICAgIGlmICghc2xhc2hNYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIERlY29yYXRpb25TZXQuZW1wdHk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2xhc2hQb3MgPSBmcm9tIC0gc2xhc2hNYXRjaFswXS5sZW5ndGggKyBzbGFzaE1hdGNoWzBdLmluZGV4T2YoXCIvXCIpO1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gc2xhc2hNYXRjaFsxXSB8fCBcIlwiO1xuICAgICAgICAgIGNvbnN0IGlzRW1wdHkgPSAhcXVlcnk7XG4gICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLmZpbHRlclBsYWNlaG9sZGVyVGV4dCgpO1xuICAgICAgICAgIGNvbnN0IGRlY29yYXRpb25JZCA9IGBpZF8ke3NsYXNoUG9zfV8ke2Zyb219YDtcblxuICAgICAgICAgIHJldHVybiBEZWNvcmF0aW9uU2V0LmNyZWF0ZShzdGF0ZS5kb2MsIFtcbiAgICAgICAgICAgIERlY29yYXRpb24uaW5saW5lKHNsYXNoUG9zLCBmcm9tLCB7XG4gICAgICAgICAgICAgIFwiZGF0YS1kZWNvcmF0aW9uLWlkXCI6IGRlY29yYXRpb25JZCxcbiAgICAgICAgICAgICAgXCJkYXRhLWRlY29yYXRpb24tY29udGVudFwiOiBwbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgY2xhc3M6IGBhdGUtc2xhc2gtZGVjb3JhdGlvbiAke2lzRW1wdHkgPyBcImlzLWVtcHR5XCIgOiBcIlwifWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFuZGxlS2V5RG93bjogKHZpZXc6IEVkaXRvclZpZXcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gT25seSBoYW5kbGUgaWYgbWVudSBpcyBhY3RpdmVcbiAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUgfHwgdGhpcy5maWx0ZXJlZENvbW1hbmRzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIjoge1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAodGhpcy5zZWxlY3RlZEluZGV4KCkgKyAxKSAlIHRoaXMuZmlsdGVyZWRDb21tYW5kcygpLmxlbmd0aDtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldChuZXh0SW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOiB7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZJbmRleCA9XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4KCkgPT09IDBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5maWx0ZXJlZENvbW1hbmRzKCkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkSW5kZXgoKSAtIDE7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQocHJldkluZGV4KTtcbiAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkKCk7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkVudGVyXCI6IHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb21tYW5kID0gdGhpcy5maWx0ZXJlZENvbW1hbmRzKClbdGhpcy5zZWxlY3RlZEluZGV4KCldO1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDb21tYW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlQ29tbWFuZChzZWxlY3RlZENvbW1hbmQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkVzY2FwZVwiOiB7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgICAgICAgICAgICAgLy8gUmVtb3ZlIHR5cGVkIFwiL1wiXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNsYXNoUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRyIH0gPSB2aWV3LnN0YXRlO1xuICAgICAgICAgICAgICAgIHRyLmRlbGV0ZSh0aGlzLnNsYXNoUmFuZ2UuZnJvbSwgdGhpcy5zbGFzaFJhbmdlLnRvKTtcbiAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKHRyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHBsdWdpbiB0byBlZGl0b3JcbiAgICBlZC52aWV3LnVwZGF0ZVN0YXRlKFxuICAgICAgZWQudmlldy5zdGF0ZS5yZWNvbmZpZ3VyZSh7XG4gICAgICAgIHBsdWdpbnM6IFtrZXlib2FyZFBsdWdpbiwgLi4uZWQudmlldy5zdGF0ZS5wbHVnaW5zXSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvc2xhc2gtY29tbWFuZHMvYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxFQUE2QixNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFjLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFNUQsNkZBQTZGO0FBbUo3RixNQUFNLE9BQU8seUJBQXlCO0lBbURwQztRQWxEUyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxLQUFLLENBQXFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlELFlBQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUE2QixTQUFTLENBQUMsQ0FBQztRQUU1RCxr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Q0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3BELENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0FsV1UseUJBQXlCO21HQUF6Qix5QkFBeUIsbWNBNUkxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULHV0RUFyQlMsZ0JBQWdCOzs0RkErSWYseUJBQXlCO2tCQWpKckMsU0FBUzsrQkFDRSxvQkFBb0IsV0FDckIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUNmLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgdmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIGVmZmVjdCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB0aXBweSwgeyBJbnN0YW5jZSBhcyBUaXBweUluc3RhbmNlLCBzdGlja3kgfSBmcm9tIFwidGlwcHkuanNcIjtcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IEF0ZUVkaXRvckkxOG4gfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWVkaXRvci1pMThuLnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdGUtZWRpdG9yLWNvbW1hbmRzLnNlcnZpY2VcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRTbGFzaENvbW1hbmRzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hdGUtc2xhc2gtY29tbWFuZHMuY29uZmlnXCI7XG5pbXBvcnQgeyBBdGVTbGFzaENvbW1hbmRJdGVtLCBBdGVDdXN0b21TbGFzaENvbW1hbmRzIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdGUtc2xhc2gtY29tbWFuZC5tb2RlbFwiO1xuaW1wb3J0IHsgUGx1Z2luLCBQbHVnaW5LZXkgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCB9IGZyb20gXCJAdGlwdGFwL3BtL3ZpZXdcIjtcbmltcG9ydCB7IEF0ZUljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vdWkvYXRlLWljb24uY29tcG9uZW50XCI7XG5cbi8vIERlZmF1bHQgY29tbWFuZCBkZWZpbml0aW9ucyBhcmUgbm93IGNlbnRyYWxpemVkIGluIHNyYy9saWIvY29uZmlnL3NsYXNoLWNvbW1hbmRzLmNvbmZpZy50c1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXRlLXNsYXNoLWNvbW1hbmRzXCIsXG4gIGltcG9ydHM6IFtBdGVJY29uQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjbWVudVJlZiBjbGFzcz1cInNsYXNoLWNvbW1hbmRzLW1lbnVcIj5cbiAgICAgIEBmb3IgKGNvbW1hbmQgb2YgZmlsdGVyZWRDb21tYW5kcygpOyB0cmFjayBjb21tYW5kLnRpdGxlKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNsYXNoLWNvbW1hbmQtaXRlbVwiXG4gICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIiRpbmRleCA9PT0gc2VsZWN0ZWRJbmRleCgpXCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cImV4ZWN1dGVDb21tYW5kKGNvbW1hbmQpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJzZWxlY3RlZEluZGV4LnNldCgkaW5kZXgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtaWNvblwiPlxuICAgICAgICAgICAgPGF0ZS1pY29uIFtuYW1lXT1cImNvbW1hbmQuaWNvblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtdGl0bGVcIj57eyBjb21tYW5kLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xhc2gtY29tbWFuZC1kZXNjcmlwdGlvblwiPnt7IGNvbW1hbmQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLW1lbnUtYmcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hdGUtbWVudS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtbWVudS1ib3JkZXItcmFkaXVzLCAxMnB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLW1lbnUtc2hhZG93KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IDI4MHB4O1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBhbmltYXRpb246IHNsYXNoTWVudUZhZGVJbiAwLjJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYikgdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtc2Nyb2xsYmFyLXdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1zY3JvbGxiYXItdGh1bWIpO1xuICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7XG4gICAgICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgc2xhc2hNZW51RmFkZUluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KTtcbiAgICAgICAgfVxuICAgICAgICB0byB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1tZW51LWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgICAgIGJvcmRlcjogdmFyKC0tYXRlLWJvcmRlci13aWR0aCwgMXB4KSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2Utc2Vjb25kYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeS1saWdodC1hbHBoYSk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2UtdGVydGlhcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCAuc2xhc2gtY29tbWFuZC1pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXByaW1hcnktY29udHJhc3QsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pY29uIC5hdGUtaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtY29udGVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXRlU2xhc2hDb21tYW5kc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGkxOG5TZXJ2aWNlID0gaW5qZWN0KEF0ZUVkaXRvckkxOG4pO1xuICBlZGl0b3IgPSBpbnB1dC5yZXF1aXJlZDxFZGl0b3I+KCk7XG4gIGNvbmZpZyA9IGlucHV0PEF0ZUN1c3RvbVNsYXNoQ29tbWFuZHMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgbWVudVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oXCJtZW51UmVmXCIpO1xuXG4gIHByaXZhdGUgdGlwcHlJbnN0YW5jZTogVGlwcHlJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVkaXRvckNvbW1hbmRzID0gaW5qZWN0KEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZSk7XG5cbiAgLy8gTG9jYWwgc3RhdGVcbiAgcHJpdmF0ZSBpc0FjdGl2ZSA9IGZhbHNlO1xuICBwcml2YXRlIGN1cnJlbnRRdWVyeSA9IHNpZ25hbChcIlwiKTtcbiAgcHJpdmF0ZSBzbGFzaFJhbmdlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gU2lnbmFsIGZvciBzZWxlY3RlZCBpbmRleFxuICBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKDApO1xuXG4gIC8vIFRvb2xiYXIgaW50ZXJhY3Rpb24gc3RhdGUgKGZyb20gY2VudHJhbGl6ZWQgc2VydmljZSlcbiAgcHJpdmF0ZSByZWFkb25seSBpc1Rvb2xiYXJJbnRlcmFjdGluZyA9IHRoaXMuZWRpdG9yQ29tbWFuZHMuaXNUb29sYmFySW50ZXJhY3Rpbmc7XG5cbiAgZmlsdGVyUGxhY2Vob2xkZXJUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmkxOG5TZXJ2aWNlLnNsYXNoQ29tbWFuZHMoKS5maWx0ZXJQbGFjZWhvbGRlciB8fCBcIkZpbHRlci4uLlwiO1xuICB9KTtcblxuICBjb21tYW5kcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmNvbW1hbmRzKSB7XG4gICAgICByZXR1cm4gY29uZmlnLmNvbW1hbmRzO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIGRlZmF1bHQgbmF0aXZlIGNvbW1hbmRzXG4gICAgcmV0dXJuIGNyZWF0ZURlZmF1bHRTbGFzaENvbW1hbmRzKHRoaXMuaTE4blNlcnZpY2UsIHRoaXMuZWRpdG9yQ29tbWFuZHMpO1xuICB9KTtcblxuICBmaWx0ZXJlZENvbW1hbmRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5jdXJyZW50UXVlcnkoKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGNvbW1hbmRzID0gdGhpcy5jb21tYW5kcygpO1xuXG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIGNvbW1hbmRzO1xuICAgIH1cblxuICAgIHJldHVybiBjb21tYW5kcy5maWx0ZXIoXG4gICAgICBjb21tYW5kID0+XG4gICAgICAgIGNvbW1hbmQudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcbiAgICAgICAgY29tbWFuZC5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSB8fFxuICAgICAgICBjb21tYW5kLmtleXdvcmRzLnNvbWUoa2V5d29yZCA9PiBrZXl3b3JkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpKVxuICAgICk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgZWQgPSB0aGlzLmVkaXRvcigpO1xuICAgICAgICBpZiAoIWVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgb2xkIGxpc3RlbmVyc1xuICAgICAgICBlZC5vZmYoXCJzZWxlY3Rpb25VcGRhdGVcIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgICAgZWQub2ZmKFwidHJhbnNhY3Rpb25cIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgICAgZWQub2ZmKFwiZm9jdXNcIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgICAgZWQub2ZmKFwiYmx1clwiLCB0aGlzLmhhbmRsZUJsdXIpO1xuXG4gICAgICAgIC8vIEFkZCBuZXcgbGlzdGVuZXJzXG4gICAgICAgIGVkLm9uKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9uKFwidHJhbnNhY3Rpb25cIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgICAgZWQub24oXCJmb2N1c1wiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgICBlZC5vbihcImJsdXJcIiwgdGhpcy5oYW5kbGVCbHVyKTtcblxuICAgICAgICAvLyBVc2UgUHJvc2VNaXJyb3IgcGx1Z2luIHN5c3RlbSB0byBpbnRlcmNlcHQga2V5c1xuICAgICAgICB0aGlzLmFkZEtleWJvYXJkUGx1Z2luKGVkKTtcblxuICAgICAgICAvLyB1cGRhdGVNZW51KCkgd2lsbCBiZSBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIGVkaXRvciBpcyByZWFkeVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0VGlwcHkoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBpZiAoZWQpIHtcbiAgICAgIGVkLm9mZihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub2ZmKFwidHJhbnNhY3Rpb25cIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgIGVkLm9mZihcImZvY3VzXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICBlZC5vZmYoXCJibHVyXCIsIHRoaXMuaGFuZGxlQmx1cik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGlwcHlJbnN0YW5jZSkge1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGlwcHkoKSB7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMubWVudVJlZigpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFuYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGlwcHlJbnN0YW5jZSkge1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLnRpcHB5SW5zdGFuY2UgPSB0aXBweShkb2N1bWVudC5ib2R5LCB7XG4gICAgICBjb250ZW50OiBuYXRpdmVFbGVtZW50LFxuICAgICAgdHJpZ2dlcjogXCJtYW51YWxcIixcbiAgICAgIHBsYWNlbWVudDogXCJib3R0b20tc3RhcnRcIixcbiAgICAgIHRoZW1lOiBcInNsYXNoLW1lbnVcIixcbiAgICAgIGFwcGVuZFRvOiBfcmVmID0+IHtcbiAgICAgICAgLy8gQWx3YXlzIHRyeSB0byBjbGltYiB1cCB0byBlZGl0b3IgaG9zdCB0byBpbmhlcml0IENTUyB2YXJpYWJsZXNcbiAgICAgICAgY29uc3QgaG9zdCA9ICh0aGlzLmVkaXRvcigpLm9wdGlvbnMuZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcbiAgICAgICAgICBcImFuZ3VsYXItdGlwdGFwLWVkaXRvclwiXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBob3N0IHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICB9LFxuICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICBhcnJvdzogZmFsc2UsXG4gICAgICBvZmZzZXQ6IFswLCA4XSxcbiAgICAgIGhpZGVPbkNsaWNrOiB0cnVlLFxuICAgICAgcGx1Z2luczogW3N0aWNreV0sXG4gICAgICBzdGlja3k6IGZhbHNlLFxuICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdDogKCkgPT4gdGhpcy5nZXRTbGFzaFJlY3QoKSxcbiAgICAgIC8vIEltcHJvdmUgcG9zaXRpb25pbmcgd2l0aCBzY3JvbGxcbiAgICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJwcmV2ZW50T3ZlcmZsb3dcIixcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgYm91bmRhcnk6ICh0aGlzLmVkaXRvcigpLm9wdGlvbnMuZWxlbWVudCBhcyBIVE1MRWxlbWVudCkgfHwgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICAgICAgcGFkZGluZzogOCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImZsaXBcIixcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBbXCJ0b3Atc3RhcnRcIiwgXCJib3R0b20tZW5kXCIsIFwidG9wLWVuZFwiXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImhpZGVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWwgY2hlY2sgYWZ0ZXIgVGlwcHkgaXMgaW5pdGlhbGl6ZWRcbiAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2xhc2hSZWN0KCk6IERPTVJlY3Qge1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBpZiAoIWVkIHx8ICF0aGlzLnNsYXNoUmFuZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUmVjdCgtOTk5OSwgLTk5OTksIDAsIDApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgUHJvc2VNaXJyb3IgY29vcmRpbmF0ZXMgZm9yIGJldHRlciBwcmVjaXNpb25cbiAgICAgIGNvbnN0IGNvb3JkcyA9IGVkLnZpZXcuY29vcmRzQXRQb3ModGhpcy5zbGFzaFJhbmdlLmZyb20pO1xuICAgICAgcmV0dXJuIG5ldyBET01SZWN0KGNvb3Jkcy5sZWZ0LCBjb29yZHMudG9wLCAwLCBjb29yZHMuYm90dG9tIC0gY29vcmRzLnRvcCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkVycm9yIGNhbGN1bGF0aW5nIGNvb3JkaW5hdGVzOlwiLCBlcnJvcik7XG4gICAgICAvLyBGYWxsYmFjayB0byB3aW5kb3cuZ2V0U2VsZWN0aW9uXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93LmdldFNlbGVjdGlvbigpIDogbnVsbDtcbiAgICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NUmVjdCgtOTk5OSwgLTk5OTksIDAsIDApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgICAgIHJldHVybiByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVNZW51ID0gKCkgPT4ge1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBpZiAoIWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBmcm9tIH0gPSBlZC5zdGF0ZS5zZWxlY3Rpb247XG5cbiAgICAvLyBDaGVjayBpZiAnLycgd2FzIHR5cGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIG9yIGFmdGVyIGEgc3BhY2VcbiAgICBjb25zdCB0ZXh0QmVmb3JlID0gZWQuc3RhdGUuZG9jLnRleHRCZXR3ZWVuKE1hdGgubWF4KDAsIGZyb20gLSAyMCksIGZyb20sIFwiXFxuXCIpO1xuICAgIGNvbnN0IHNsYXNoTWF0Y2ggPSB0ZXh0QmVmb3JlLm1hdGNoKC8oPzpefFxccylcXC8oW14vXFxzXSopJC8pO1xuXG4gICAgaWYgKHNsYXNoTWF0Y2gpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gc2xhc2hNYXRjaFsxXSB8fCBcIlwiO1xuICAgICAgY29uc3Qgd2FzQWN0aXZlID0gdGhpcy5pc0FjdGl2ZTtcblxuICAgICAgdGhpcy5jdXJyZW50UXVlcnkuc2V0KHF1ZXJ5KTtcbiAgICAgIHRoaXMuc2xhc2hSYW5nZSA9IHtcbiAgICAgICAgZnJvbTogZnJvbSAtIHNsYXNoTWF0Y2hbMF0ubGVuZ3RoICsgc2xhc2hNYXRjaFswXS5pbmRleE9mKFwiL1wiKSxcbiAgICAgICAgdG86IGZyb20sXG4gICAgICB9O1xuXG4gICAgICAvLyBSZXNldCBpbmRleCBpZiBtZW51IGp1c3QgYmVjYW1lIGFjdGl2ZVxuICAgICAgaWYgKCF3YXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgwKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG5cbiAgICAgIGlmICh0aGlzLmlzVG9vbGJhckludGVyYWN0aW5nKCkpIHtcbiAgICAgICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd1RpcHB5KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuaGlkZVRpcHB5KCk7XG4gICAgfVxuICB9O1xuXG4gIGhhbmRsZUJsdXIgPSAoKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhpZGVUaXBweSgpLCAxMDApO1xuICB9O1xuXG4gIHByaXZhdGUgc2Nyb2xsVG9TZWxlY3RlZCgpIHtcbiAgICAvLyBTY3JvbGwgdG8gdGhlIHNlbGVjdGVkIGVsZW1lbnRcbiAgICBjb25zdCBtZW51RWwgPSB0aGlzLm1lbnVSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAobWVudUVsKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBtZW51RWwucXVlcnlTZWxlY3RvcihcIi5zbGFzaC1jb21tYW5kLWl0ZW0uc2VsZWN0ZWRcIikgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcIm5lYXJlc3RcIiwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93VGlwcHkoKSB7XG4gICAgaWYgKHRoaXMudGlwcHlJbnN0YW5jZSAmJiB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2V0UHJvcHMoeyBzdGlja3k6IFwicmVmZXJlbmNlXCIgfSk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRpcHB5KCkge1xuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5zZXRQcm9wcyh7IHN0aWNreTogZmFsc2UgfSk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IEF0ZVNsYXNoQ29tbWFuZEl0ZW0pIHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCFlZCB8fCAhdGhpcy5zbGFzaFJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHNsYXNoIHRleHQgKFwiL1wiKVxuICAgIGNvbnN0IHsgdHIgfSA9IGVkLnN0YXRlO1xuICAgIHRyLmRlbGV0ZSh0aGlzLnNsYXNoUmFuZ2UuZnJvbSwgdGhpcy5zbGFzaFJhbmdlLnRvKTtcbiAgICBlZC52aWV3LmRpc3BhdGNoKHRyKTtcblxuICAgIC8vIEhpZGUgbWVudSBpbW1lZGlhdGVseVxuICAgIHRoaXMuaGlkZVRpcHB5KCk7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLy8gR2l2ZSBmb2N1cyBiYWNrIHRvIGVkaXRvciBhbmQgZXhlY3V0ZSBjb21tYW5kXG4gICAgLy8gVXNlIGEgbWljcm8tZGVsYXkgdG8gZW5zdXJlIFByb3NlTWlycm9yIERPTSBpcyBzdGFibGUgYWZ0ZXIgcmVtb3ZpbmcgXCIvXCJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGVkLmNvbW1hbmRzLmZvY3VzKCk7XG4gICAgICBjb21tYW5kLmNvbW1hbmQoZWQpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkS2V5Ym9hcmRQbHVnaW4oZWQ6IEVkaXRvcikge1xuICAgIC8vIEFkZCBhIFByb3NlTWlycm9yIHBsdWdpbiB0byBpbnRlcmNlcHQga2V5Ym9hcmQgZXZlbnRzXG4gICAgY29uc3Qga2V5Ym9hcmRQbHVnaW4gPSBuZXcgUGx1Z2luKHtcbiAgICAgIGtleTogbmV3IFBsdWdpbktleShcInNsYXNoLWNvbW1hbmRzLWtleWJvYXJkXCIpLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZGVjb3JhdGlvbnM6IHN0YXRlID0+IHtcbiAgICAgICAgICBjb25zdCB7IGZyb20gfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgICAgICAgICBjb25zdCB0ZXh0QmVmb3JlID0gc3RhdGUuZG9jLnRleHRCZXR3ZWVuKE1hdGgubWF4KDAsIGZyb20gLSAyMCksIGZyb20sIFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnN0IHNsYXNoTWF0Y2ggPSB0ZXh0QmVmb3JlLm1hdGNoKC8oPzpefFxccylcXC8oW14vXFxzXSopJC8pO1xuXG4gICAgICAgICAgaWYgKCFzbGFzaE1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gRGVjb3JhdGlvblNldC5lbXB0eTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzbGFzaFBvcyA9IGZyb20gLSBzbGFzaE1hdGNoWzBdLmxlbmd0aCArIHNsYXNoTWF0Y2hbMF0uaW5kZXhPZihcIi9cIik7XG4gICAgICAgICAgY29uc3QgcXVlcnkgPSBzbGFzaE1hdGNoWzFdIHx8IFwiXCI7XG4gICAgICAgICAgY29uc3QgaXNFbXB0eSA9ICFxdWVyeTtcbiAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMuZmlsdGVyUGxhY2Vob2xkZXJUZXh0KCk7XG4gICAgICAgICAgY29uc3QgZGVjb3JhdGlvbklkID0gYGlkXyR7c2xhc2hQb3N9XyR7ZnJvbX1gO1xuXG4gICAgICAgICAgcmV0dXJuIERlY29yYXRpb25TZXQuY3JlYXRlKHN0YXRlLmRvYywgW1xuICAgICAgICAgICAgRGVjb3JhdGlvbi5pbmxpbmUoc2xhc2hQb3MsIGZyb20sIHtcbiAgICAgICAgICAgICAgXCJkYXRhLWRlY29yYXRpb24taWRcIjogZGVjb3JhdGlvbklkLFxuICAgICAgICAgICAgICBcImRhdGEtZGVjb3JhdGlvbi1jb250ZW50XCI6IHBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICBjbGFzczogYGF0ZS1zbGFzaC1kZWNvcmF0aW9uICR7aXNFbXB0eSA/IFwiaXMtZW1wdHlcIiA6IFwiXCJ9YCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuICAgICAgICBoYW5kbGVLZXlEb3duOiAodmlldzogRWRpdG9yVmlldywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBPbmx5IGhhbmRsZSBpZiBtZW51IGlzIGFjdGl2ZVxuICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSB8fCB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOiB7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICh0aGlzLnNlbGVjdGVkSW5kZXgoKSArIDEpICUgdGhpcy5maWx0ZXJlZENvbW1hbmRzKCkubGVuZ3RoO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJBcnJvd1VwXCI6IHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY29uc3QgcHJldkluZGV4ID1cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXgoKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKS5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRJbmRleCgpIC0gMTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldChwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiRW50ZXJcIjoge1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENvbW1hbmQgPSB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKVt0aGlzLnNlbGVjdGVkSW5kZXgoKV07XG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZENvbW1hbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVDb21tYW5kKHNlbGVjdGVkQ29tbWFuZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6IHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmhpZGVUaXBweSgpO1xuICAgICAgICAgICAgICAvLyBSZW1vdmUgdHlwZWQgXCIvXCJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2xhc2hSYW5nZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdHIgfSA9IHZpZXcuc3RhdGU7XG4gICAgICAgICAgICAgICAgdHIuZGVsZXRlKHRoaXMuc2xhc2hSYW5nZS5mcm9tLCB0aGlzLnNsYXNoUmFuZ2UudG8pO1xuICAgICAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgcGx1Z2luIHRvIGVkaXRvclxuICAgIGVkLnZpZXcudXBkYXRlU3RhdGUoXG4gICAgICBlZC52aWV3LnN0YXRlLnJlY29uZmlndXJlKHtcbiAgICAgICAgcGx1Z2luczogW2tleWJvYXJkUGx1Z2luLCAuLi5lZC52aWV3LnN0YXRlLnBsdWdpbnNdLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, input, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, HostListener, booleanAttribute, } from "@angular/core";
|
|
2
2
|
import { AteEditorRef } from "../../models/ate-editor-ref";
|
|
3
3
|
import { AteEditorRegistry } from "../../services/ate-editor-registry.service";
|
|
4
|
-
import {
|
|
4
|
+
import { AteEditorI18n } from "../../services/ate-editor-i18n.service";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
/**
|
|
7
7
|
* Table of Contents Component (Notion-style)
|
|
@@ -54,7 +54,7 @@ export class AteTableOfContentsComponent {
|
|
|
54
54
|
},
|
|
55
55
|
});
|
|
56
56
|
this.registry = inject(AteEditorRegistry);
|
|
57
|
-
this.i18n = inject(
|
|
57
|
+
this.i18n = inject(AteEditorI18n);
|
|
58
58
|
// Computed header title with fallback to i18n
|
|
59
59
|
this.headerTitle = computed(() => {
|
|
60
60
|
const custom = this.title();
|
|
@@ -382,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
382
382
|
type: HostListener,
|
|
383
383
|
args: ["window:resize", []]
|
|
384
384
|
}] } });
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULHVCQUF1QixFQUV2QixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBSWpFOzs7O0dBSUc7QUE0WEgsTUFBTSxPQUFPLDJCQUEyQjtJQXVDdEMsa0VBQWtFO0lBQ2xFLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWDtnQkFDRSxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBa0NEO1FBeEZBLHFFQUFxRTtRQUNyRSxXQUFNLEdBQUcsS0FBSyxDQUFvRCxJQUFJLENBQUMsQ0FBQztRQUV4RSxpRUFBaUU7UUFD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QyxDQUFDO29CQUN4QyxHQUFHLElBQUk7b0JBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVyxDQUFDLEVBQUU7aUJBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUVKLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdRVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw2bERBaFg1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RFQ7OzRGQWtUVSwyQkFBMkI7a0JBM1h2QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsRUFBRSxtQkFDTSx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLCtCQUErQixFQUFFLFlBQVk7d0JBQzdDLGlDQUFpQyxFQUFFLG9DQUFvQzt3QkFDdkUsK0JBQStCLEVBQUUsNkNBQTZDO3dCQUM5RSw0QkFBNEIsRUFBRSwwQ0FBMEM7cUJBQ3pFLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOERUO3dEQW1hRCxRQUFRO3NCQUZQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUU7O3NCQUNoQyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIHVudHJhY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uRGVzdHJveSxcbiAgSG9zdExpc3RlbmVyLFxuICBib29sZWFuQXR0cmlidXRlLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVmIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdGUtZWRpdG9yLXJlZlwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVnaXN0cnkgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdGUtaTE4bi5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IEF0ZVRvY0l0ZW0sIEF0ZVRvY1ZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2F0ZS10b2MubW9kZWxcIjtcblxuLyoqXG4gKiBUYWJsZSBvZiBDb250ZW50cyBDb21wb25lbnQgKE5vdGlvbi1zdHlsZSlcbiAqIER5bmFtaWNhbGx5IGV4dHJhY3RzIGhlYWRpbmdzIGZyb20gdGhlIGFjdGl2ZSBlZGl0b3IgYW5kIGRpc3BsYXlzIHRoZW0uXG4gKiBDb25maWd1cmFibGUgdmlhIGlucHV0cyAoZmxvYXRpbmcsIHBvc2l0aW9uLCB2YXJpYW50cywgaG92ZXIgZXhwYW5zaW9uKSBhbmQgQ1NTIHZhcmlhYmxlcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF0ZS10YWJsZS1vZi1jb250ZW50c1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBcIltjbGFzcy5hdGUtdG9jLWhvc3QtZmxvYXRpbmddXCI6IFwiZmxvYXRpbmcoKVwiLFxuICAgIFwiW3N0eWxlLi0tYXRlLXRvYy1wb3NpdGlvbi1tb2RlXVwiOiBcImZsb2F0aW5nKCkgPyBwb3NpdGlvbk1vZGUoKSA6IG51bGxcIixcbiAgICBcIltjbGFzcy5hdGUtdG9jLWhvc3QtYWJzb2x1dGVdXCI6IFwiZmxvYXRpbmcoKSAmJiBwb3NpdGlvbk1vZGUoKSA9PT0gJ2Fic29sdXRlJ1wiLFxuICAgIFwiW2NsYXNzLmF0ZS10b2MtaG9zdC1maXhlZF1cIjogXCJmbG9hdGluZygpICYmIHBvc2l0aW9uTW9kZSgpID09PSAnZml4ZWQnXCIsXG4gIH0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhdGUtdG9jLXdyYXBwZXJcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtZmxvYXRpbmddPVwiZmxvYXRpbmcoKVwiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1hYnNvbHV0ZV09XCJmbG9hdGluZygpICYmIHBvc2l0aW9uTW9kZSgpID09PSAnYWJzb2x1dGUnXCJcbiAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLWZpeGVkXT1cImZsb2F0aW5nKCkgJiYgcG9zaXRpb25Nb2RlKCkgPT09ICdmaXhlZCdcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tbGVmdF09XCJwb3NpdGlvbigpID09PSAnbGVmdCdcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1wiXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRNb3VzZUhvdmVyKHRydWUpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cInNldE1vdXNlSG92ZXIoZmFsc2UpXCJcbiAgICAgIChmb2N1c2luKT1cInNldEZvY3VzZWQodHJ1ZSlcIlxuICAgICAgKGZvY3Vzb3V0KT1cInNldEZvY3VzZWQoZmFsc2UpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXRlLXRvY1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWZsb2F0aW5nXT1cImZsb2F0aW5nKClcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uKCkgPT09ICdsZWZ0J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0XT1cInBvc2l0aW9uKCkgPT09ICdyaWdodCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy12YXJpYW50LWNhcmRdPVwidmFyaWFudCgpID09PSAnY2FyZCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy12YXJpYW50LXRyYW5zcGFyZW50XT1cInZhcmlhbnQoKSA9PT0gJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXZhcmlhbnQtbWluaW1hbF09XCJ2YXJpYW50KCkgPT09ICdtaW5pbWFsJ1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWhvdmVyLWV4cGFuZF09XCJmbG9hdGluZygpICYmIGhvdmVyRXhwYW5kKClcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1ob3ZlcmVkXT1cImZsb2F0aW5nKCkgJiYgaG92ZXJFeHBhbmQoKSAmJiBpc0V4cGFuZGVkKClcIlxuICAgICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJUYWJsZSBvZiBDb250ZW50c1wiPlxuICAgICAgICBAaWYgKGl0ZW1zKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIEBpZiAoc2hvd1RpdGxlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdGUtdG9jLWhlYWRlclwiPnt7IGhlYWRlclRpdGxlKCkgfX08L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF0ZS10b2MtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF0ZS10b2MtaXRlbVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF0ZS10b2MtYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXRlbS5hY3RpdmUgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxldmVsXT1cIml0ZW0ubGV2ZWxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb0hlYWRpbmcoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGV4dFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gUGVyZmVjdCBuYXRpdmUgdmVjdG9yIFNWRyBkYXNoIHdpdGggbGV2ZWwtYWRhcHRlZCB2aWV3Qm94ICYgd2lkdGggLS0+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGFzaFdpZHRoKGl0ZW0ubGV2ZWwpXCJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjJcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIudmlld0JveF09XCInMCAwICcgKyBkYXNoV2lkdGgoaXRlbS5sZXZlbCkgKyAnIDInXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdGUtdG9jLWRhc2hcIj5cbiAgICAgICAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhc2hXaWR0aChpdGVtLmxldmVsKVwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICByeD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICByeT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGdWxsIGhlYWRpbmcgdGV4dCAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF0ZS10b2MtdGV4dFwiPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAvKiBPdXRlciBIaXRib3ggQ29udGFpbmVyIFBvc2l0aW9uaW5nICovXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcge1xuICAgICAgICBwb3NpdGlvbjogdmFyKC0tYXRlLXRvYy1wb3NpdGlvbi1tb2RlLCBmaXhlZCk7XG4gICAgICAgIHRvcDogdmFyKC0tYXRlLXRvYy10b3AsIDUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgei1pbmRleDogdmFyKC0tYXRlLXRvYy16LWluZGV4LCA5NSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLXBvc2l0aW9uLWFic29sdXRlLFxuICAgICAgOmhvc3QoLmF0ZS10b2MtaG9zdC1hYnNvbHV0ZSkgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1wb3NpdGlvbi1maXhlZCxcbiAgICAgIDpob3N0KC5hdGUtdG9jLWhvc3QtZml4ZWQpIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQge1xuICAgICAgICByaWdodDogdmFyKC0tYXRlLXRvYy1yaWdodCwgMnJlbSk7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZywgMTZweCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tbGVmdCB7XG4gICAgICAgIGxlZnQ6IHZhcigtLWF0ZS10b2MtbGVmdCwgMnJlbSk7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLCAxNnB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmctdmVydGljYWwsIDhweCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBNb2RlIENvbnRhaW5lciBQb3NpdGlvbmluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IHZhcigtLWF0ZS10b2MtbWF4LWhlaWdodCwgNDAwcHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBtb2RlIHdpZHRoICYgcGFkZGluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZzpub3QoLmF0ZS10b2MtaG92ZXItZXhwYW5kKSxcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1ob3Zlci1leHBhbmQ6aG92ZXIsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtaG92ZXJlZCB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtdG9jLXdpZHRoLCAyNDBweCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDE2cHgpKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLXRvYy1wYWRkaW5nKTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCk6bm90KDpob3Zlcikge1xuICAgICAgICB3aWR0aDogdmFyKC0tYXRlLXRvYy1jb2xsYXBzZWQtd2lkdGgsIDMycHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWNvbGxhcHNlZC1yYWRpdXMsIDE2cHgpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1hdGUtdG9jLXBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiBjYXJkICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b2MtYmcsIHZhcigtLWF0ZS1zdXJmYWNlLCAjZmZmZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWF0ZS10b2MtYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDEycHgpKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLXRvYy1zaGFkb3csIDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWF0ZS10b2MtcGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IG1pbmltYWwgKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtdmFyaWFudC1taW5pbWFsIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWJvcmRlci1yYWRpdXMsIHZhcigtLWF0ZS1ib3JkZXItcmFkaXVzLCAxMnB4KSk7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LW1pbmltYWw6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtdG9jLWhvdmVyLWJnLCB2YXIoLS1hdGUtc3VyZmFjZSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWF0ZS10b2MtaG92ZXItYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLWF0ZS10b2MtaG92ZXItc2hhZG93LCAwIDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiB0cmFuc3BhcmVudCAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LXRyYW5zcGFyZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLyogSGVhZGVyIHN0eWxpbmcgKi9cbiAgICAgIC5hdGUtdG9jLWhlYWRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LW11dGVkLCAjOWNhM2FmKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLyogTGlzdCBjb250YWluZXIgKi9cbiAgICAgIC5hdGUtdG9jLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLWF0ZS10b2MtdGV4dC1nYXAsIHZhcigtLWF0ZS10b2MtZ2FwLCAycHgpKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0cmFuc2l0aW9uOiBnYXAgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBCYXNlIEl0ZW0gKEV4cGFuZGVkIC8gVGV4dCBtb2RlIGRlZmF1bHQpICovXG4gICAgICAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taG92ZXItaGVpZ2h0LCAyMnB4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1jb2xvciwgdmFyKC0tYXRlLXRleHQtc2Vjb25kYXJ5LCAjNjQ3NDhiKSk7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbTpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAgIH1cblxuICAgICAgLyogTGV2ZWwgSW5kZW50YXRpb25zIGluIFRleHQgbW9kZSAqL1xuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMlwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjNcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCI0XCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiNVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjZcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQ4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEl0ZW0gaG92ZXIgb3ZlcmxheSAmIGFjdGl2ZSBzdGF0ZSAoRXhwYW5kZWQgLyBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1pdGVtOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLCB0cmFuc3BhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWNvbG9yLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYikpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoXG4gICAgICAgICAgLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tYXRlLXByaW1hcnktbGlnaHQsIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYiksIHRyYW5zcGFyZW50IDkwJSkpXG4gICAgICAgICk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICB9XG5cbiAgICAgIC8qIEhlYWRpbmcgVGV4dCBzdHlsaW5nICovXG4gICAgICAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1heC13aWR0aCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1hcmdpbiAwLjI1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBTVkcgUmVjdCBEYXNoIHN0eWxpbmcgKEhpZGRlbiBpbiBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9jLWRhc2gtY29sb3IsIHZhcigtLWF0ZS1ib3JkZXIsICNjYmQ1ZTEpKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgICB9XG5cbiAgICAgIC8qIC0tLSBDT0xMQVBTRUQgTk9USU9OIE1PREUgKERhc2hlcyBvbmx5LCB3aGVuIGhvdmVyLWV4cGFuZCBpcyBhY3RpdmUgJiBub3QgaG92ZXJlZCkgLS0tICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taGVpZ2h0LCAxOHB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW06OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtOmhvdmVyIC5hdGUtdG9jLWRhc2gsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZClcbiAgICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZVxuICAgICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLyogRGlyZWN0aW9uICYgdGV4dCBjb2xsYXBzZSBmb3IgQ29sbGFwc2VkIFJJR0hUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC8qIERpcmVjdGlvbiAmIHRleHQgY29sbGFwc2UgZm9yIENvbGxhcHNlZCBMRUZUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy1pdGVtLFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy10ZXh0LFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZVRhYmxlT2ZDb250ZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vIElucHV0IGFjY2VwdHMgcmF3IEVkaXRvciwgQXRlRWRpdG9yUmVmLCBvciBJRCBvZiByZWdpc3RlcmVkIGVkaXRvclxuICBlZGl0b3IgPSBpbnB1dDxFZGl0b3IgfCBBdGVFZGl0b3JSZWYgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihudWxsKTtcblxuICAvLyBPcHRpb25hbCBjdXN0b20gdGl0bGUgKGlmIG5vdCBwcm92aWRlZCwgdXNlcyBpMThuIHRyYW5zbGF0aW9uKVxuICB0aXRsZSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFdoZXRoZXIgdG8gc2hvdyB0aGUgaGVhZGVyIHRpdGxlXG4gIHNob3dUaXRsZSA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8vIExheW91dCBtb2RlOiBmbG9hdGluZyBvbiBmaXhlZCBwb3NpdGlvbiBvciBpbmxpbmUgaW5zaWRlIHBhcmVudCBjb250YWluZXJcbiAgZmxvYXRpbmcgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvLyBQb3NpdGlvbmluZyBtb2RlIHdoZW4gZmxvYXRpbmc6ICdmaXhlZCcgKHJlbGF0aXZlIHRvIHZpZXdwb3J0LCBkZWZhdWx0KSBvciAnYWJzb2x1dGUnIChyZWxhdGl2ZSB0byBwYXJlbnQgY29udGFpbmVyKVxuICBwb3NpdGlvbk1vZGUgPSBpbnB1dDxcImFic29sdXRlXCIgfCBcImZpeGVkXCI+KFwiZml4ZWRcIik7XG5cbiAgLy8gRmxvYXRpbmcgcG9zaXRpb246ICdyaWdodCcgfCAnbGVmdCdcbiAgcG9zaXRpb24gPSBpbnB1dDxcImxlZnRcIiB8IFwicmlnaHRcIj4oXCJyaWdodFwiKTtcblxuICAvLyBWaXN1YWwgdmFyaWFudDogJ21pbmltYWwnIHwgJ2NhcmQnIHwgJ3RyYW5zcGFyZW50J1xuICB2YXJpYW50ID0gaW5wdXQ8QXRlVG9jVmFyaWFudD4oXCJtaW5pbWFsXCIpO1xuXG4gIC8vIE5vdGlvbi1zdHlsZSBob3ZlciBleHBhbnNpb24gKGNvbGxhcHNlcyB0ZXh0IGludG8gZGFzaGVzIHVudGlsIGhvdmVyZWQpXG4gIGhvdmVyRXhwYW5kID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLy8gTWF4aW11bSBoZWFkaW5nIGxldmVsIGRlcHRoIHRvIGluY2x1ZGUgKDEtNiwgZGVmYXVsdDogNilcbiAgbWF4RGVwdGggPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHN0cmluZz4oNiwge1xuICAgIHRyYW5zZm9ybTogKHY6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkID0gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIgPyBwYXJzZUludCh2LCAxMCkgOiB2O1xuICAgICAgaWYgKGlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgcmV0dXJuIDY7XG4gICAgICB9XG4gICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoMSwgcGFyc2VkKSwgNik7XG4gICAgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeSA9IGluamVjdChBdGVFZGl0b3JSZWdpc3RyeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChBdGVJMThuU2VydmljZSk7XG5cbiAgLy8gSGVscGVyIG1ldGhvZCBmb3IgZXhhY3QgbmF0aXZlIFNWRyBkYXNoIHdpZHRoIHBlciBoZWFkaW5nIGxldmVsXG4gIGRhc2hXaWR0aChsZXZlbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiAxNjtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gODtcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuIDY7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHJldHVybiA0O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDM7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29tcHV0ZWQgaGVhZGVyIHRpdGxlIHdpdGggZmFsbGJhY2sgdG8gaTE4blxuICByZWFkb25seSBoZWFkZXJUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXN0b20gPSB0aGlzLnRpdGxlKCk7XG4gICAgaWYgKGN1c3RvbSAhPT0gbnVsbCAmJiBjdXN0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGN1c3RvbTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaTE4bi5lZGl0b3IoKS50YWJsZU9mQ29udGVudHM7XG4gIH0pO1xuXG4gIC8vIFJlc29sdmVkIGVkaXRvciBpbnN0YW5jZVxuICByZWFkb25seSByZXNvbHZlZEVkaXRvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmVkaXRvcigpO1xuICAgIGlmICghdmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5hY3RpdmVFZGl0b3IoKT8uZWRpdG9yIHx8IG51bGw7XG4gICAgfVxuICAgIGlmICh2YWwgaW5zdGFuY2VvZiBBdGVFZGl0b3JSZWYpIHtcbiAgICAgIHJldHVybiB2YWwuZWRpdG9yO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KHZhbCk/LmVkaXRvciB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9KTtcblxuICAvLyBUYWJsZSBvZiBDb250ZW50cyBpdGVtc1xuICByZWFkb25seSBpdGVtcyA9IHNpZ25hbDxBdGVUb2NJdGVtW10+KFtdKTtcblxuICAvLyBEaXN0aW5jdCBtb3VzZSBob3ZlciBhbmQga2V5Ym9hcmQgZm9jdXMgc3RhdGUgdHJhY2tpbmdcbiAgaXNNb3VzZUhvdmVyZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0ZvY3VzZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpc0V4cGFuZGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc01vdXNlSG92ZXJlZCgpIHx8IHRoaXMuaXNGb2N1c2VkKCkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFJlYWN0IHN0cmljdGx5IHRvIGVkaXRvciBpbnN0YW5jZSBjaGFuZ2VzIHdpdGhvdXQgdHJhY2tpbmcgaW50ZXJuYWwgc2lnbmFsIHVwZGF0ZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgaWYgKGVkaXRvcikge1xuICAgICAgICAgIHRoaXMuYmluZEVkaXRvckV2ZW50cyhlZGl0b3IpO1xuICAgICAgICAgIHRoaXMudXBkYXRlSGVhZGluZ3MoZWRpdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMudW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpzY3JvbGxcIiwgW10pXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtdKVxuICBvblNjcm9sbCgpIHtcbiAgICB0aGlzLmNoZWNrQWN0aXZlSGVhZGluZygpO1xuICB9XG5cbiAgLy8gSGFuZGxlIG1vdXNlIGhvdmVyIHN0YXRlIGluZGVwZW5kZW50bHlcbiAgc2V0TW91c2VIb3Zlcihob3ZlcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc01vdXNlSG92ZXJlZC5zZXQoaG92ZXJlZCk7XG4gIH1cblxuICAvLyBIYW5kbGUga2V5Ym9hcmQgZm9jdXMgc3RhdGUgaW5kZXBlbmRlbnRseVxuICBzZXRGb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRm9jdXNlZC5zZXQoZm9jdXNlZCk7XG4gIH1cblxuICAvLyBOYXZpZ2F0ZSB0byBoZWFkaW5nIG9uIGNsaWNrXG4gIHNjcm9sbFRvSGVhZGluZyhpdGVtOiBBdGVUb2NJdGVtLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRvci52aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIDEuIFBvc2l0aW9uIGN1cnNvciBpbnNpZGUgdGhlIGhlYWRpbmcgdGV4dCAoaXRlbS5wb3MgKyAxIHBvaW50cyB0byBpbmxpbmUgdGV4dClcbiAgICAgIGNvbnN0IHRhcmdldFBvcyA9IE1hdGgubWluKGl0ZW0ucG9zICsgMSwgZWRpdG9yLnN0YXRlLmRvYy5jb250ZW50LnNpemUpO1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLnNldFRleHRTZWxlY3Rpb24odGFyZ2V0UG9zKTtcbiAgICAgIGVkaXRvci5jb21tYW5kcy5mb2N1cygpO1xuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAvLyBTYWZlLWd1YXJkIGFnYWluc3QgcG9zaXRpb24gc2VsZWN0aW9uIGVycm9yc1xuICAgIH1cblxuICAgIC8vIDIuIFNtb290aGx5IHNjcm9sbCBET00gbm9kZSBpbnRvIHZpZXdcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRvbU5vZGUgPSBlZGl0b3Iudmlldy5ub2RlRE9NKGl0ZW0ucG9zKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGRvbU5vZGUpIHtcbiAgICAgICAgICBkb21Ob2RlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6IFwic21vb3RoXCIsIGJsb2NrOiBcInN0YXJ0XCIgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAgIC8vIFNhZmUtZ3VhcmRcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRFZGl0b3JFdmVudHMoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICB0aGlzLnVuYmluZEVkaXRvckV2ZW50cyhlZGl0b3IpO1xuICAgIGVkaXRvci5vbihcInVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgICBlZGl0b3Iub24oXCJzZWxlY3Rpb25VcGRhdGVcIiwgdGhpcy5vbkVkaXRvclVwZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHVuYmluZEVkaXRvckV2ZW50cyhlZGl0b3I6IEVkaXRvcikge1xuICAgIGVkaXRvci5vZmYoXCJ1cGRhdGVcIiwgdGhpcy5vbkVkaXRvclVwZGF0ZSk7XG4gICAgZWRpdG9yLm9mZihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgb25FZGl0b3JVcGRhdGUgPSAoKSA9PiB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMudXBkYXRlSGVhZGluZ3MoZWRpdG9yKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSB1cGRhdGVIZWFkaW5ncyhlZGl0b3I6IEVkaXRvcikge1xuICAgIGNvbnN0IG5leHRJdGVtczogQXRlVG9jSXRlbVtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgZWRpdG9yLnN0YXRlLmRvYy5kZXNjZW5kYW50cygobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUubmFtZSA9PT0gXCJoZWFkaW5nXCIpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gbm9kZS50ZXh0Q29udGVudC50cmltKCk7XG4gICAgICAgICAgY29uc3QgbGV2ZWwgPSBub2RlLmF0dHJzW1wibGV2ZWxcIl0gfHwgMTtcblxuICAgICAgICAgIGNvbnN0IG1heERlcHRoTGV2ZWwgPSB0aGlzLm1heERlcHRoKCk7XG4gICAgICAgICAgaWYgKHRleHQgJiYgbGV2ZWwgPD0gbWF4RGVwdGhMZXZlbCkge1xuICAgICAgICAgICAgbmV4dEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgcG9zLFxuICAgICAgICAgICAgICBpZDogYGhlYWRpbmctJHtwb3N9YCxcbiAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vIFNhZmUgZ3VhcmQgYWdhaW5zdCBkb2N1bWVudCBhY2Nlc3MgaXNzdWVzXG4gICAgfVxuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KG5leHRJdGVtcyk7XG4gICAgICB0aGlzLmNoZWNrQWN0aXZlSGVhZGluZygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FjdGl2ZUhlYWRpbmcoKSB7XG4gICAgLy8gQWN0aXZlIGhlYWRpbmcgc2Nyb2xsIHRyYWNraW5nIG9ubHkgYXBwbGllcyB0byBmbG9hdGluZyBUT0MgbW9kZVxuICAgIGlmICghdGhpcy5mbG9hdGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmICghZWRpdG9yIHx8ICFlZGl0b3Iudmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSB0aGlzLml0ZW1zKCk7XG4gICAgICBpZiAoY3VycmVudEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhlYWRpbmdzV2l0aERvbSA9IGN1cnJlbnRJdGVtc1xuICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkb20gPSBlZGl0b3Iudmlldy5ub2RlRE9NKGl0ZW0ucG9zKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIHJldHVybiB7IGl0ZW0sIGRvbSB9O1xuICAgICAgICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtLCBkb206IG51bGwgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKGVudHJ5KTogZW50cnkgaXMgeyBpdGVtOiBBdGVUb2NJdGVtOyBkb206IEhUTUxFbGVtZW50IH0gPT4gZW50cnkuZG9tICE9PSBudWxsKTtcblxuICAgICAgaWYgKGhlYWRpbmdzV2l0aERvbS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93LmlubmVySGVpZ2h0IDogODAwO1xuICAgICAgbGV0IGFjdGl2ZUl0ZW06IEF0ZVRvY0l0ZW0gfCBudWxsID0gbnVsbDtcblxuICAgICAgZm9yIChsZXQgaSA9IGhlYWRpbmdzV2l0aERvbS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCB7IGl0ZW0sIGRvbSB9ID0gaGVhZGluZ3NXaXRoRG9tW2ldO1xuICAgICAgICBjb25zdCByZWN0ID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChyZWN0LnRvcCA8PSB3aW5kb3dIZWlnaHQgKiAwLjM1KSB7XG4gICAgICAgICAgYWN0aXZlSXRlbSA9IGl0ZW07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhY3RpdmVJdGVtICYmIGhlYWRpbmdzV2l0aERvbS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFjdGl2ZUl0ZW0gPSBoZWFkaW5nc1dpdGhEb21bMF0uaXRlbTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGN1cnJlbnRJdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgYWN0aXZlOiBpdGVtLmlkID09PSBhY3RpdmVJdGVtIS5pZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGlzRGlmZmVyZW50ID0gdXBkYXRlZC5zb21lKChpdGVtLCBpZHgpID0+IGl0ZW0uYWN0aXZlICE9PSBjdXJyZW50SXRlbXNbaWR4XS5hY3RpdmUpO1xuICAgICAgICBpZiAoaXNEaWZmZXJlbnQpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldCh1cGRhdGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULHVCQUF1QixFQUV2QixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBSXZFOzs7O0dBSUc7QUE0WEgsTUFBTSxPQUFPLDJCQUEyQjtJQXVDdEMsa0VBQWtFO0lBQ2xFLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWDtnQkFDRSxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBa0NEO1FBeEZBLHFFQUFxRTtRQUNyRSxXQUFNLEdBQUcsS0FBSyxDQUFvRCxJQUFJLENBQUMsQ0FBQztRQUV4RSxpRUFBaUU7UUFD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QyxDQUFDO29CQUN4QyxHQUFHLElBQUk7b0JBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVyxDQUFDLEVBQUU7aUJBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUVKLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdRVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw2bERBaFg1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RFQ7OzRGQWtUVSwyQkFBMkI7a0JBM1h2QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsRUFBRSxtQkFDTSx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLCtCQUErQixFQUFFLFlBQVk7d0JBQzdDLGlDQUFpQyxFQUFFLG9DQUFvQzt3QkFDdkUsK0JBQStCLEVBQUUsNkNBQTZDO3dCQUM5RSw0QkFBNEIsRUFBRSwwQ0FBMEM7cUJBQ3pFLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOERUO3dEQW1hRCxRQUFRO3NCQUZQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUU7O3NCQUNoQyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIHVudHJhY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uRGVzdHJveSxcbiAgSG9zdExpc3RlbmVyLFxuICBib29sZWFuQXR0cmlidXRlLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVmIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdGUtZWRpdG9yLXJlZlwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVnaXN0cnkgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JJMThuIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItaTE4bi5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IEF0ZVRvY0l0ZW0sIEF0ZVRvY1ZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2F0ZS10b2MubW9kZWxcIjtcblxuLyoqXG4gKiBUYWJsZSBvZiBDb250ZW50cyBDb21wb25lbnQgKE5vdGlvbi1zdHlsZSlcbiAqIER5bmFtaWNhbGx5IGV4dHJhY3RzIGhlYWRpbmdzIGZyb20gdGhlIGFjdGl2ZSBlZGl0b3IgYW5kIGRpc3BsYXlzIHRoZW0uXG4gKiBDb25maWd1cmFibGUgdmlhIGlucHV0cyAoZmxvYXRpbmcsIHBvc2l0aW9uLCB2YXJpYW50cywgaG92ZXIgZXhwYW5zaW9uKSBhbmQgQ1NTIHZhcmlhYmxlcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF0ZS10YWJsZS1vZi1jb250ZW50c1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBcIltjbGFzcy5hdGUtdG9jLWhvc3QtZmxvYXRpbmddXCI6IFwiZmxvYXRpbmcoKVwiLFxuICAgIFwiW3N0eWxlLi0tYXRlLXRvYy1wb3NpdGlvbi1tb2RlXVwiOiBcImZsb2F0aW5nKCkgPyBwb3NpdGlvbk1vZGUoKSA6IG51bGxcIixcbiAgICBcIltjbGFzcy5hdGUtdG9jLWhvc3QtYWJzb2x1dGVdXCI6IFwiZmxvYXRpbmcoKSAmJiBwb3NpdGlvbk1vZGUoKSA9PT0gJ2Fic29sdXRlJ1wiLFxuICAgIFwiW2NsYXNzLmF0ZS10b2MtaG9zdC1maXhlZF1cIjogXCJmbG9hdGluZygpICYmIHBvc2l0aW9uTW9kZSgpID09PSAnZml4ZWQnXCIsXG4gIH0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhdGUtdG9jLXdyYXBwZXJcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtZmxvYXRpbmddPVwiZmxvYXRpbmcoKVwiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1hYnNvbHV0ZV09XCJmbG9hdGluZygpICYmIHBvc2l0aW9uTW9kZSgpID09PSAnYWJzb2x1dGUnXCJcbiAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLWZpeGVkXT1cImZsb2F0aW5nKCkgJiYgcG9zaXRpb25Nb2RlKCkgPT09ICdmaXhlZCdcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tbGVmdF09XCJwb3NpdGlvbigpID09PSAnbGVmdCdcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1wiXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRNb3VzZUhvdmVyKHRydWUpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cInNldE1vdXNlSG92ZXIoZmFsc2UpXCJcbiAgICAgIChmb2N1c2luKT1cInNldEZvY3VzZWQodHJ1ZSlcIlxuICAgICAgKGZvY3Vzb3V0KT1cInNldEZvY3VzZWQoZmFsc2UpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXRlLXRvY1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWZsb2F0aW5nXT1cImZsb2F0aW5nKClcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uKCkgPT09ICdsZWZ0J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0XT1cInBvc2l0aW9uKCkgPT09ICdyaWdodCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy12YXJpYW50LWNhcmRdPVwidmFyaWFudCgpID09PSAnY2FyZCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy12YXJpYW50LXRyYW5zcGFyZW50XT1cInZhcmlhbnQoKSA9PT0gJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXZhcmlhbnQtbWluaW1hbF09XCJ2YXJpYW50KCkgPT09ICdtaW5pbWFsJ1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWhvdmVyLWV4cGFuZF09XCJmbG9hdGluZygpICYmIGhvdmVyRXhwYW5kKClcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1ob3ZlcmVkXT1cImZsb2F0aW5nKCkgJiYgaG92ZXJFeHBhbmQoKSAmJiBpc0V4cGFuZGVkKClcIlxuICAgICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJUYWJsZSBvZiBDb250ZW50c1wiPlxuICAgICAgICBAaWYgKGl0ZW1zKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIEBpZiAoc2hvd1RpdGxlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdGUtdG9jLWhlYWRlclwiPnt7IGhlYWRlclRpdGxlKCkgfX08L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF0ZS10b2MtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF0ZS10b2MtaXRlbVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF0ZS10b2MtYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXRlbS5hY3RpdmUgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxldmVsXT1cIml0ZW0ubGV2ZWxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb0hlYWRpbmcoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGV4dFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gUGVyZmVjdCBuYXRpdmUgdmVjdG9yIFNWRyBkYXNoIHdpdGggbGV2ZWwtYWRhcHRlZCB2aWV3Qm94ICYgd2lkdGggLS0+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGFzaFdpZHRoKGl0ZW0ubGV2ZWwpXCJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjJcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIudmlld0JveF09XCInMCAwICcgKyBkYXNoV2lkdGgoaXRlbS5sZXZlbCkgKyAnIDInXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdGUtdG9jLWRhc2hcIj5cbiAgICAgICAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhc2hXaWR0aChpdGVtLmxldmVsKVwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICByeD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICByeT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGdWxsIGhlYWRpbmcgdGV4dCAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF0ZS10b2MtdGV4dFwiPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAvKiBPdXRlciBIaXRib3ggQ29udGFpbmVyIFBvc2l0aW9uaW5nICovXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcge1xuICAgICAgICBwb3NpdGlvbjogdmFyKC0tYXRlLXRvYy1wb3NpdGlvbi1tb2RlLCBmaXhlZCk7XG4gICAgICAgIHRvcDogdmFyKC0tYXRlLXRvYy10b3AsIDUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgei1pbmRleDogdmFyKC0tYXRlLXRvYy16LWluZGV4LCA5NSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLXBvc2l0aW9uLWFic29sdXRlLFxuICAgICAgOmhvc3QoLmF0ZS10b2MtaG9zdC1hYnNvbHV0ZSkgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1wb3NpdGlvbi1maXhlZCxcbiAgICAgIDpob3N0KC5hdGUtdG9jLWhvc3QtZml4ZWQpIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQge1xuICAgICAgICByaWdodDogdmFyKC0tYXRlLXRvYy1yaWdodCwgMnJlbSk7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZywgMTZweCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tbGVmdCB7XG4gICAgICAgIGxlZnQ6IHZhcigtLWF0ZS10b2MtbGVmdCwgMnJlbSk7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLCAxNnB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmctdmVydGljYWwsIDhweCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBNb2RlIENvbnRhaW5lciBQb3NpdGlvbmluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IHZhcigtLWF0ZS10b2MtbWF4LWhlaWdodCwgNDAwcHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBtb2RlIHdpZHRoICYgcGFkZGluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZzpub3QoLmF0ZS10b2MtaG92ZXItZXhwYW5kKSxcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1ob3Zlci1leHBhbmQ6aG92ZXIsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtaG92ZXJlZCB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtdG9jLXdpZHRoLCAyNDBweCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDE2cHgpKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLXRvYy1wYWRkaW5nKTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCk6bm90KDpob3Zlcikge1xuICAgICAgICB3aWR0aDogdmFyKC0tYXRlLXRvYy1jb2xsYXBzZWQtd2lkdGgsIDMycHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWNvbGxhcHNlZC1yYWRpdXMsIDE2cHgpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1hdGUtdG9jLXBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiBjYXJkICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b2MtYmcsIHZhcigtLWF0ZS1zdXJmYWNlLCAjZmZmZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWF0ZS10b2MtYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDEycHgpKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLXRvYy1zaGFkb3csIDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWF0ZS10b2MtcGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IG1pbmltYWwgKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtdmFyaWFudC1taW5pbWFsIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWJvcmRlci1yYWRpdXMsIHZhcigtLWF0ZS1ib3JkZXItcmFkaXVzLCAxMnB4KSk7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LW1pbmltYWw6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtdG9jLWhvdmVyLWJnLCB2YXIoLS1hdGUtc3VyZmFjZSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWF0ZS10b2MtaG92ZXItYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLWF0ZS10b2MtaG92ZXItc2hhZG93LCAwIDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiB0cmFuc3BhcmVudCAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LXRyYW5zcGFyZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLyogSGVhZGVyIHN0eWxpbmcgKi9cbiAgICAgIC5hdGUtdG9jLWhlYWRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LW11dGVkLCAjOWNhM2FmKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLyogTGlzdCBjb250YWluZXIgKi9cbiAgICAgIC5hdGUtdG9jLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLWF0ZS10b2MtdGV4dC1nYXAsIHZhcigtLWF0ZS10b2MtZ2FwLCAycHgpKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0cmFuc2l0aW9uOiBnYXAgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBCYXNlIEl0ZW0gKEV4cGFuZGVkIC8gVGV4dCBtb2RlIGRlZmF1bHQpICovXG4gICAgICAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taG92ZXItaGVpZ2h0LCAyMnB4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1jb2xvciwgdmFyKC0tYXRlLXRleHQtc2Vjb25kYXJ5LCAjNjQ3NDhiKSk7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbTpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAgIH1cblxuICAgICAgLyogTGV2ZWwgSW5kZW50YXRpb25zIGluIFRleHQgbW9kZSAqL1xuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMlwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjNcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCI0XCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiNVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjZcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQ4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEl0ZW0gaG92ZXIgb3ZlcmxheSAmIGFjdGl2ZSBzdGF0ZSAoRXhwYW5kZWQgLyBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1pdGVtOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLCB0cmFuc3BhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWNvbG9yLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYikpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoXG4gICAgICAgICAgLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tYXRlLXByaW1hcnktbGlnaHQsIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYiksIHRyYW5zcGFyZW50IDkwJSkpXG4gICAgICAgICk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICB9XG5cbiAgICAgIC8qIEhlYWRpbmcgVGV4dCBzdHlsaW5nICovXG4gICAgICAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1heC13aWR0aCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1hcmdpbiAwLjI1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBTVkcgUmVjdCBEYXNoIHN0eWxpbmcgKEhpZGRlbiBpbiBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9jLWRhc2gtY29sb3IsIHZhcigtLWF0ZS1ib3JkZXIsICNjYmQ1ZTEpKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgICB9XG5cbiAgICAgIC8qIC0tLSBDT0xMQVBTRUQgTk9USU9OIE1PREUgKERhc2hlcyBvbmx5LCB3aGVuIGhvdmVyLWV4cGFuZCBpcyBhY3RpdmUgJiBub3QgaG92ZXJlZCkgLS0tICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taGVpZ2h0LCAxOHB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW06OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtOmhvdmVyIC5hdGUtdG9jLWRhc2gsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZClcbiAgICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZVxuICAgICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLyogRGlyZWN0aW9uICYgdGV4dCBjb2xsYXBzZSBmb3IgQ29sbGFwc2VkIFJJR0hUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC8qIERpcmVjdGlvbiAmIHRleHQgY29sbGFwc2UgZm9yIENvbGxhcHNlZCBMRUZUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy1pdGVtLFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy10ZXh0LFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZVRhYmxlT2ZDb250ZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vIElucHV0IGFjY2VwdHMgcmF3IEVkaXRvciwgQXRlRWRpdG9yUmVmLCBvciBJRCBvZiByZWdpc3RlcmVkIGVkaXRvclxuICBlZGl0b3IgPSBpbnB1dDxFZGl0b3IgfCBBdGVFZGl0b3JSZWYgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihudWxsKTtcblxuICAvLyBPcHRpb25hbCBjdXN0b20gdGl0bGUgKGlmIG5vdCBwcm92aWRlZCwgdXNlcyBpMThuIHRyYW5zbGF0aW9uKVxuICB0aXRsZSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFdoZXRoZXIgdG8gc2hvdyB0aGUgaGVhZGVyIHRpdGxlXG4gIHNob3dUaXRsZSA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8vIExheW91dCBtb2RlOiBmbG9hdGluZyBvbiBmaXhlZCBwb3NpdGlvbiBvciBpbmxpbmUgaW5zaWRlIHBhcmVudCBjb250YWluZXJcbiAgZmxvYXRpbmcgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvLyBQb3NpdGlvbmluZyBtb2RlIHdoZW4gZmxvYXRpbmc6ICdmaXhlZCcgKHJlbGF0aXZlIHRvIHZpZXdwb3J0LCBkZWZhdWx0KSBvciAnYWJzb2x1dGUnIChyZWxhdGl2ZSB0byBwYXJlbnQgY29udGFpbmVyKVxuICBwb3NpdGlvbk1vZGUgPSBpbnB1dDxcImFic29sdXRlXCIgfCBcImZpeGVkXCI+KFwiZml4ZWRcIik7XG5cbiAgLy8gRmxvYXRpbmcgcG9zaXRpb246ICdyaWdodCcgfCAnbGVmdCdcbiAgcG9zaXRpb24gPSBpbnB1dDxcImxlZnRcIiB8IFwicmlnaHRcIj4oXCJyaWdodFwiKTtcblxuICAvLyBWaXN1YWwgdmFyaWFudDogJ21pbmltYWwnIHwgJ2NhcmQnIHwgJ3RyYW5zcGFyZW50J1xuICB2YXJpYW50ID0gaW5wdXQ8QXRlVG9jVmFyaWFudD4oXCJtaW5pbWFsXCIpO1xuXG4gIC8vIE5vdGlvbi1zdHlsZSBob3ZlciBleHBhbnNpb24gKGNvbGxhcHNlcyB0ZXh0IGludG8gZGFzaGVzIHVudGlsIGhvdmVyZWQpXG4gIGhvdmVyRXhwYW5kID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLy8gTWF4aW11bSBoZWFkaW5nIGxldmVsIGRlcHRoIHRvIGluY2x1ZGUgKDEtNiwgZGVmYXVsdDogNilcbiAgbWF4RGVwdGggPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHN0cmluZz4oNiwge1xuICAgIHRyYW5zZm9ybTogKHY6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkID0gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIgPyBwYXJzZUludCh2LCAxMCkgOiB2O1xuICAgICAgaWYgKGlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgcmV0dXJuIDY7XG4gICAgICB9XG4gICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoMSwgcGFyc2VkKSwgNik7XG4gICAgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeSA9IGluamVjdChBdGVFZGl0b3JSZWdpc3RyeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChBdGVFZGl0b3JJMThuKTtcblxuICAvLyBIZWxwZXIgbWV0aG9kIGZvciBleGFjdCBuYXRpdmUgU1ZHIGRhc2ggd2lkdGggcGVyIGhlYWRpbmcgbGV2ZWxcbiAgZGFzaFdpZHRoKGxldmVsOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gMTI7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiA4O1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gNjtcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgcmV0dXJuIDQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMztcbiAgICB9XG4gIH1cblxuICAvLyBDb21wdXRlZCBoZWFkZXIgdGl0bGUgd2l0aCBmYWxsYmFjayB0byBpMThuXG4gIHJlYWRvbmx5IGhlYWRlclRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMudGl0bGUoKTtcbiAgICBpZiAoY3VzdG9tICE9PSBudWxsICYmIGN1c3RvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY3VzdG9tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pMThuLmVkaXRvcigpLnRhYmxlT2ZDb250ZW50cztcbiAgfSk7XG5cbiAgLy8gUmVzb2x2ZWQgZWRpdG9yIGluc3RhbmNlXG4gIHJlYWRvbmx5IHJlc29sdmVkRWRpdG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmFjdGl2ZUVkaXRvcigpPy5lZGl0b3IgfHwgbnVsbDtcbiAgICB9XG4gICAgaWYgKHZhbCBpbnN0YW5jZW9mIEF0ZUVkaXRvclJlZikge1xuICAgICAgcmV0dXJuIHZhbC5lZGl0b3I7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQodmFsKT8uZWRpdG9yIHx8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH0pO1xuXG4gIC8vIFRhYmxlIG9mIENvbnRlbnRzIGl0ZW1zXG4gIHJlYWRvbmx5IGl0ZW1zID0gc2lnbmFsPEF0ZVRvY0l0ZW1bXT4oW10pO1xuXG4gIC8vIERpc3RpbmN0IG1vdXNlIGhvdmVyIGFuZCBrZXlib2FyZCBmb2N1cyBzdGF0ZSB0cmFja2luZ1xuICBpc01vdXNlSG92ZXJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGlzRm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTW91c2VIb3ZlcmVkKCkgfHwgdGhpcy5pc0ZvY3VzZWQoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVhY3Qgc3RyaWN0bHkgdG8gZWRpdG9yIGluc3RhbmNlIGNoYW5nZXMgd2l0aG91dCB0cmFja2luZyBpbnRlcm5hbCBzaWduYWwgdXBkYXRlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgICAgdGhpcy5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgICAgICAgdGhpcy51cGRhdGVIZWFkaW5ncyhlZGl0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy51bmJpbmRFZGl0b3JFdmVudHMoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnNjcm9sbFwiLCBbXSlcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW10pXG4gIG9uU2Nyb2xsKCkge1xuICAgIHRoaXMuY2hlY2tBY3RpdmVIZWFkaW5nKCk7XG4gIH1cblxuICAvLyBIYW5kbGUgbW91c2UgaG92ZXIgc3RhdGUgaW5kZXBlbmRlbnRseVxuICBzZXRNb3VzZUhvdmVyKGhvdmVyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTW91c2VIb3ZlcmVkLnNldChob3ZlcmVkKTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBrZXlib2FyZCBmb2N1cyBzdGF0ZSBpbmRlcGVuZGVudGx5XG4gIHNldEZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNGb2N1c2VkLnNldChmb2N1c2VkKTtcbiAgfVxuXG4gIC8vIE5hdmlnYXRlIHRvIGhlYWRpbmcgb24gY2xpY2tcbiAgc2Nyb2xsVG9IZWFkaW5nKGl0ZW06IEF0ZVRvY0l0ZW0sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMucmVzb2x2ZWRFZGl0b3IoKTtcbiAgICBpZiAoIWVkaXRvciB8fCAhZWRpdG9yLnZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gMS4gUG9zaXRpb24gY3Vyc29yIGluc2lkZSB0aGUgaGVhZGluZyB0ZXh0IChpdGVtLnBvcyArIDEgcG9pbnRzIHRvIGlubGluZSB0ZXh0KVxuICAgICAgY29uc3QgdGFyZ2V0UG9zID0gTWF0aC5taW4oaXRlbS5wb3MgKyAxLCBlZGl0b3Iuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSk7XG4gICAgICBlZGl0b3IuY29tbWFuZHMuc2V0VGV4dFNlbGVjdGlvbih0YXJnZXRQb3MpO1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLmZvY3VzKCk7XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vIFNhZmUtZ3VhcmQgYWdhaW5zdCBwb3NpdGlvbiBzZWxlY3Rpb24gZXJyb3JzXG4gICAgfVxuXG4gICAgLy8gMi4gU21vb3RobHkgc2Nyb2xsIERPTSBub2RlIGludG8gdmlld1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZG9tTm9kZSA9IGVkaXRvci52aWV3Lm5vZGVET00oaXRlbS5wb3MpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoZG9tTm9kZSkge1xuICAgICAgICAgIGRvbU5vZGUuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwic3RhcnRcIiB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgLy8gU2FmZS1ndWFyZFxuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZEVkaXRvckV2ZW50cyhlZGl0b3I6IEVkaXRvcikge1xuICAgIHRoaXMudW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgZWRpdG9yLm9uKFwidXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICAgIGVkaXRvci5vbihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgZWRpdG9yLm9mZihcInVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgICBlZGl0b3Iub2ZmKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvbkVkaXRvclVwZGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy51cGRhdGVIZWFkaW5ncyhlZGl0b3IpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHVwZGF0ZUhlYWRpbmdzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgY29uc3QgbmV4dEl0ZW1zOiBBdGVUb2NJdGVtW10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBlZGl0b3Iuc3RhdGUuZG9jLmRlc2NlbmRhbnRzKChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgaWYgKG5vZGUudHlwZS5uYW1lID09PSBcImhlYWRpbmdcIikge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBub2RlLnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgICBjb25zdCBsZXZlbCA9IG5vZGUuYXR0cnNbXCJsZXZlbFwiXSB8fCAxO1xuXG4gICAgICAgICAgY29uc3QgbWF4RGVwdGhMZXZlbCA9IHRoaXMubWF4RGVwdGgoKTtcbiAgICAgICAgICBpZiAodGV4dCAmJiBsZXZlbCA8PSBtYXhEZXB0aExldmVsKSB7XG4gICAgICAgICAgICBuZXh0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICBwb3MsXG4gICAgICAgICAgICAgIGlkOiBgaGVhZGluZy0ke3Bvc31gLFxuICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgLy8gU2FmZSBndWFyZCBhZ2FpbnN0IGRvY3VtZW50IGFjY2VzcyBpc3N1ZXNcbiAgICB9XG5cbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5pdGVtcy5zZXQobmV4dEl0ZW1zKTtcbiAgICAgIHRoaXMuY2hlY2tBY3RpdmVIZWFkaW5nKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQWN0aXZlSGVhZGluZygpIHtcbiAgICAvLyBBY3RpdmUgaGVhZGluZyBzY3JvbGwgdHJhY2tpbmcgb25seSBhcHBsaWVzIHRvIGZsb2F0aW5nIFRPQyBtb2RlXG4gICAgaWYgKCF0aGlzLmZsb2F0aW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRvci52aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHRoaXMuaXRlbXMoKTtcbiAgICAgIGlmIChjdXJyZW50SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGVhZGluZ3NXaXRoRG9tID0gY3VycmVudEl0ZW1zXG4gICAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRvbSA9IGVkaXRvci52aWV3Lm5vZGVET00oaXRlbS5wb3MpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgcmV0dXJuIHsgaXRlbSwgZG9tIH07XG4gICAgICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGl0ZW0sIGRvbTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoZW50cnkpOiBlbnRyeSBpcyB7IGl0ZW06IEF0ZVRvY0l0ZW07IGRvbTogSFRNTEVsZW1lbnQgfSA9PiBlbnRyeS5kb20gIT09IG51bGwpO1xuXG4gICAgICBpZiAoaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiA4MDA7XG4gICAgICBsZXQgYWN0aXZlSXRlbTogQXRlVG9jSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gICAgICBmb3IgKGxldCBpID0gaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHsgaXRlbSwgZG9tIH0gPSBoZWFkaW5nc1dpdGhEb21baV07XG4gICAgICAgIGNvbnN0IHJlY3QgPSBkb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKHJlY3QudG9wIDw9IHdpbmRvd0hlaWdodCAqIDAuMzUpIHtcbiAgICAgICAgICBhY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFjdGl2ZUl0ZW0gJiYgaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWN0aXZlSXRlbSA9IGhlYWRpbmdzV2l0aERvbVswXS5pdGVtO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gY3VycmVudEl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBhY3RpdmU6IGl0ZW0uaWQgPT09IGFjdGl2ZUl0ZW0hLmlkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgaXNEaWZmZXJlbnQgPSB1cGRhdGVkLnNvbWUoKGl0ZW0sIGlkeCkgPT4gaXRlbS5hY3RpdmUgIT09IGN1cnJlbnRJdGVtc1tpZHhdLmFjdGl2ZSk7XG4gICAgICAgIGlmIChpc0RpZmZlcmVudCkge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KHVwZGF0ZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|