@skyux/tabs 7.0.0 → 7.1.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/documentation.json
CHANGED
|
@@ -6441,7 +6441,7 @@
|
|
|
6441
6441
|
{
|
|
6442
6442
|
"fileName": "sectioned-form-modal-demo.component.ts",
|
|
6443
6443
|
"filePath": "/projects/tabs/documentation/code-examples/sectioned-form/modal/sectioned-form-modal-demo.component.ts",
|
|
6444
|
-
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewChild,\n} from '@angular/core';\nimport { SkyModalInstance } from '@skyux/modals';\nimport { SkySectionedFormComponent } from '@skyux/tabs';\n\n@Component({\n selector: 'app-sectioned-form-modal-demo',\n templateUrl: './sectioned-form-modal-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionedFormModalDemoComponent {\n public activeIndexDisplay: number | undefined;\n\n public activeTab = true;\n\n @ViewChild(SkySectionedFormComponent)\n public sectionedFormComponent: SkySectionedFormComponent | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(\n public modalInstance: SkyModalInstance,\n changeDetector: ChangeDetectorRef\n ) {\n this.#changeDetector = changeDetector;\n }\n\n public onIndexChanged(newIndex: number): void {\n this.activeIndexDisplay = newIndex;\n this.#changeDetector.markForCheck();\n }\n\n public tabsHidden(): boolean {\n return !this.sectionedFormComponent?.tabsVisible();\n }\n\n public showTabs(): void {\n this.sectionedFormComponent
|
|
6444
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewChild,\n} from '@angular/core';\nimport { SkyModalInstance } from '@skyux/modals';\nimport { SkySectionedFormComponent } from '@skyux/tabs';\n\n@Component({\n selector: 'app-sectioned-form-modal-demo',\n templateUrl: './sectioned-form-modal-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionedFormModalDemoComponent {\n public activeIndexDisplay: number | undefined;\n\n public activeTab = true;\n\n @ViewChild(SkySectionedFormComponent)\n public sectionedFormComponent: SkySectionedFormComponent | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(\n public modalInstance: SkyModalInstance,\n changeDetector: ChangeDetectorRef\n ) {\n this.#changeDetector = changeDetector;\n }\n\n public onIndexChanged(newIndex: number): void {\n this.activeIndexDisplay = newIndex;\n this.#changeDetector.markForCheck();\n }\n\n public tabsHidden(): boolean {\n return !this.sectionedFormComponent?.tabsVisible();\n }\n\n public showTabs(): void {\n this.sectionedFormComponent?.showTabs();\n }\n}\n"
|
|
6445
6445
|
},
|
|
6446
6446
|
{
|
|
6447
6447
|
"fileName": "tabs-demo.component.html",
|
|
@@ -6518,6 +6518,16 @@
|
|
|
6518
6518
|
"filePath": "/projects/tabs/documentation/code-examples/vertical-tabs/basic/vertical-tabs-demo.module.ts",
|
|
6519
6519
|
"rawContents": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyVerticalTabsetModule } from '@skyux/tabs';\n\nimport { VerticalTabDemoComponent } from './vertical-tabs-demo.component';\n\n@NgModule({\n imports: [CommonModule, SkyVerticalTabsetModule],\n declarations: [VerticalTabDemoComponent],\n exports: [VerticalTabDemoComponent],\n})\nexport class SkyVerticalTabDemoModule {}\n"
|
|
6520
6520
|
},
|
|
6521
|
+
{
|
|
6522
|
+
"fileName": "vertical-tabs-demo-group.ts",
|
|
6523
|
+
"filePath": "/projects/tabs/documentation/code-examples/vertical-tabs/grouped/vertical-tabs-demo-group.ts",
|
|
6524
|
+
"rawContents": "import { VerticalTabsDemoSubTab } from './vertical-tabs-demo-sub-tab';\n\nexport interface VerticalTabsDemoGroup {\n heading: string;\n isOpen: boolean;\n isDisabled: boolean;\n subTabs: VerticalTabsDemoSubTab[];\n}\n"
|
|
6525
|
+
},
|
|
6526
|
+
{
|
|
6527
|
+
"fileName": "vertical-tabs-demo-sub-tab.ts",
|
|
6528
|
+
"filePath": "/projects/tabs/documentation/code-examples/vertical-tabs/grouped/vertical-tabs-demo-sub-tab.ts",
|
|
6529
|
+
"rawContents": "export interface VerticalTabsDemoSubTab {\n tabHeading: string;\n content: string;\n tabHeaderCount?: number;\n active?: boolean;\n disabled?: boolean;\n}\n"
|
|
6530
|
+
},
|
|
6521
6531
|
{
|
|
6522
6532
|
"fileName": "vertical-tabs-demo.component.html",
|
|
6523
6533
|
"filePath": "/projects/tabs/documentation/code-examples/vertical-tabs/grouped/vertical-tabs-demo.component.html",
|
|
@@ -6526,7 +6536,7 @@
|
|
|
6526
6536
|
{
|
|
6527
6537
|
"fileName": "vertical-tabs-demo.component.ts",
|
|
6528
6538
|
"filePath": "/projects/tabs/documentation/code-examples/vertical-tabs/grouped/vertical-tabs-demo.component.ts",
|
|
6529
|
-
"rawContents": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-vertical-tab-demo',\n templateUrl: './vertical-tabs-demo.component.html',\n})\nexport class SkyVerticalTabsDemoComponent {\n public groups:
|
|
6539
|
+
"rawContents": "import { Component } from '@angular/core';\n\nimport { VerticalTabsDemoGroup } from './vertical-tabs-demo-group';\n\n@Component({\n selector: 'app-vertical-tab-demo',\n templateUrl: './vertical-tabs-demo.component.html',\n})\nexport class SkyVerticalTabsDemoComponent {\n public groups: VerticalTabsDemoGroup[];\n\n constructor() {\n this.groups = [\n {\n heading: 'Group 1',\n isOpen: false,\n isDisabled: false,\n subTabs: [\n { tabHeading: 'Group 1 — Tab 1', content: 'Group 1 — Tab 1 Content' },\n {\n tabHeading: 'Group 1 — Tab 2',\n content: 'Group 1 — Tab 2 Content',\n tabHeaderCount: 7,\n },\n ],\n },\n {\n heading: 'Group 2',\n isOpen: true,\n isDisabled: false,\n subTabs: [\n {\n tabHeading: 'Group 2 — Tab 1',\n content: 'Group 2 — Tab 1 Content',\n active: true,\n },\n {\n tabHeading: 'Group 2 — Tab 2 — Disabled',\n content: 'Group 2 — Tab 2 Content',\n disabled: true,\n },\n ],\n },\n {\n heading: 'Disabled',\n isOpen: false,\n isDisabled: true,\n subTabs: [],\n },\n ];\n }\n}\n"
|
|
6530
6540
|
},
|
|
6531
6541
|
{
|
|
6532
6542
|
"fileName": "vertical-tabs-demo.module.ts",
|
|
@@ -6536,12 +6546,12 @@
|
|
|
6536
6546
|
{
|
|
6537
6547
|
"fileName": "wizard-demo-modal.component.html",
|
|
6538
6548
|
"filePath": "/projects/tabs/documentation/code-examples/wizard/basic/wizard-demo-modal.component.html",
|
|
6539
|
-
"rawContents": "<form [formGroup]=\"newMemberForm\" (ngSubmit)=\"onSave()\">\n <sky-modal>\n <sky-modal-header>\n {{ title }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-tabset\n ariaLabel=\"Sign-up steps\"\n [(active)]=\"activeIndex\"\n tabStyle=\"wizard\"\n #wizardDemo\n >\n <sky-tab tabHeading=\"1. Biographical Details\">\n <sky-fluid-grid [disableMargin]=\"true\" gutterSize=\"small\">\n <sky-row>\n <sky-column [screenSmall]=\"12\" [screenMedium]=\"4\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"firstNameInput.id\"\n >First Name</label\n >\n <input\n type=\"text\"\n class=\"sky-form-control\"\n formControlName=\"firstName\"\n [attr.aria-describedby]=\"firstNameError.id\"\n skyId\n #firstNameInput=\"skyId\"\n />\n <span\n class=\"sky-error-indicator\"\n skyId\n #firstNameError=\"skyId\"\n >\n <sky-status-indicator\n *ngIf=\"\n (firstName
|
|
6549
|
+
"rawContents": "<form [formGroup]=\"newMemberForm\" (ngSubmit)=\"onSave()\">\n <sky-modal>\n <sky-modal-header>\n {{ title }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-tabset\n ariaLabel=\"Sign-up steps\"\n [(active)]=\"activeIndex\"\n tabStyle=\"wizard\"\n #wizardDemo\n >\n <sky-tab tabHeading=\"1. Biographical Details\">\n <sky-fluid-grid [disableMargin]=\"true\" gutterSize=\"small\">\n <sky-row>\n <sky-column [screenSmall]=\"12\" [screenMedium]=\"4\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"firstNameInput.id\"\n >First Name</label\n >\n <input\n type=\"text\"\n class=\"sky-form-control\"\n formControlName=\"firstName\"\n [attr.aria-describedby]=\"firstNameError.id\"\n skyId\n #firstNameInput=\"skyId\"\n />\n <span\n class=\"sky-error-indicator\"\n skyId\n #firstNameError=\"skyId\"\n >\n <sky-status-indicator\n *ngIf=\"\n (firstName?.touched || firstName?.dirty) &&\n !firstName?.valid\n \"\n indicatorType=\"danger\"\n descriptionType=\"error\"\n >\n First name is required.\n </sky-status-indicator>\n </span>\n </sky-input-box>\n </sky-column>\n <sky-column [screenSmall]=\"12\" [screenMedium]=\"4\">\n <sky-input-box>\n <label class=\"sky-control-label\" [for]=\"middleNameInput.id\"\n >Middle Name</label\n >\n <input\n type=\"text\"\n class=\"sky-form-control\"\n formControlName=\"middleName\"\n skyId\n #middleNameInput=\"skyId\"\n />\n </sky-input-box>\n </sky-column>\n <sky-column [screenSmall]=\"12\" [screenMedium]=\"4\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"lastNameInput.id\"\n >Last Name</label\n >\n <input\n type=\"text\"\n class=\"sky-form-control\"\n formControlName=\"lastName\"\n [attr.aria-describedby]=\"lastNameError.id\"\n skyId\n #lastNameInput=\"skyId\"\n />\n <span\n class=\"sky-error-indicator\"\n skyId\n #lastNameError=\"skyId\"\n >\n <sky-status-indicator\n *ngIf=\"\n (lastName?.touched || lastName?.dirty) &&\n !lastName?.valid\n \"\n indicatorType=\"danger\"\n descriptionType=\"error\"\n >\n Last name is required.\n </sky-status-indicator>\n </span>\n </sky-input-box>\n </sky-column>\n </sky-row>\n </sky-fluid-grid>\n </sky-tab>\n <sky-tab tabHeading=\"2. Contact Information\" [disabled]=\"step2Disabled\">\n <sky-fluid-grid [disableMargin]=\"true\" gutterSize=\"small\">\n <sky-row>\n <sky-column [screenSmall]=\"12\" [screenMedium]=\"6\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"phoneNumberInput.id\"\n >Phone Number</label\n >\n <sky-phone-field defaultCountry=\"us\">\n <input\n formControlName=\"phoneNumber\"\n [attr.aria-describedby]=\"phoneNumberError.id\"\n skyId\n #phoneNumberInput=\"skyId\"\n skyPhoneFieldInput\n />\n </sky-phone-field>\n <span\n class=\"sky-error-indicator\"\n skyId\n #phoneNumberError=\"skyId\"\n >\n <sky-status-indicator\n *ngIf=\"\n (phoneNumber?.touched || phoneNumber?.dirty) &&\n !phoneNumber?.valid\n \"\n indicatorType=\"danger\"\n descriptionType=\"error\"\n >\n A valid phone number is required.\n </sky-status-indicator>\n </span>\n </sky-input-box>\n </sky-column>\n <sky-column [screenSmall]=\"12\" [screenMedium]=\"6\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"emailInput.id\"\n >Email</label\n >\n <input\n type=\"email\"\n class=\"sky-form-control\"\n formControlName=\"email\"\n [attr.aria-describedby]=\"emailError.id\"\n skyId\n #emailInput=\"skyId\"\n />\n <span class=\"sky-error-indicator\" skyId #emailError=\"skyId\">\n <sky-status-indicator\n *ngIf=\"(email?.touched || email?.dirty) && !email?.valid\"\n indicatorType=\"danger\"\n descriptionType=\"error\"\n >\n A valid email address is required.\n </sky-status-indicator>\n </span>\n </sky-input-box>\n </sky-column>\n </sky-row>\n </sky-fluid-grid>\n </sky-tab>\n <sky-tab tabHeading=\"3. More Information\" [disabled]=\"step3Disabled\">\n <sky-fluid-grid [disableMargin]=\"true\" gutterSize=\"small\">\n <sky-row>\n <sky-column [screenSmall]=\"12\">\n <sky-checkbox formControlName=\"termsAccepted\" [required]=\"true\">\n <sky-checkbox-label>\n Accept terms and conditions\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-column>\n <sky-column [screenSmall]=\"12\">\n <sky-checkbox formControlName=\"mailingList\">\n <sky-checkbox-label>\n Sign up for our email newsletter\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-column>\n </sky-row>\n </sky-fluid-grid>\n </sky-tab>\n </sky-tabset>\n </sky-modal-content>\n <sky-modal-footer>\n <sky-tabset-nav-button\n buttonType=\"previous\"\n [tabset]=\"wizardDemo\"\n ></sky-tabset-nav-button>\n <sky-tabset-nav-button\n buttonType=\"next\"\n [tabset]=\"wizardDemo\"\n ></sky-tabset-nav-button>\n <sky-tabset-nav-button\n buttonType=\"finish\"\n [tabset]=\"wizardDemo\"\n [disabled]=\"saveDisabled\"\n ></sky-tabset-nav-button>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n (click)=\"onCancelClick()\"\n >\n Cancel\n </button>\n </sky-modal-footer>\n </sky-modal>\n</form>\n"
|
|
6540
6550
|
},
|
|
6541
6551
|
{
|
|
6542
6552
|
"fileName": "wizard-demo-modal.component.ts",
|
|
6543
6553
|
"filePath": "/projects/tabs/documentation/code-examples/wizard/basic/wizard-demo-modal.component.ts",
|
|
6544
|
-
"rawContents": "import { Component, OnInit } from '@angular/core';\nimport {\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { SkyModalInstance } from '@skyux/modals';\nimport { SkyTabIndex } from '@skyux/tabs';\n\n@Component({\n selector: 'app-wizard-demo-modal',\n templateUrl: './wizard-demo-modal.component.html',\n})\nexport class WizardDemoModalComponent implements OnInit {\n
|
|
6554
|
+
"rawContents": "import { Component, OnInit } from '@angular/core';\nimport {\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { SkyModalInstance } from '@skyux/modals';\nimport { SkyTabIndex } from '@skyux/tabs';\n\n@Component({\n selector: 'app-wizard-demo-modal',\n templateUrl: './wizard-demo-modal.component.html',\n})\nexport class WizardDemoModalComponent implements OnInit {\n constructor(\n public instance: SkyModalInstance,\n formBuilder: UntypedFormBuilder\n ) {\n this.firstName = new UntypedFormControl('', Validators.required);\n this.middleName = new UntypedFormControl();\n this.lastName = new UntypedFormControl('', Validators.required);\n this.phoneNumber = new UntypedFormControl('', Validators.required);\n this.email = new UntypedFormControl('', Validators.required);\n this.termsAccepted = new UntypedFormControl(false);\n this.mailingList = new UntypedFormControl(false);\n\n this.newMemberForm = formBuilder.group({\n firstName: this.firstName,\n middleName: this.middleName,\n lastName: this.lastName,\n phoneNumber: this.phoneNumber,\n email: this.email,\n termsAccepted: this.termsAccepted,\n mailingList: this.mailingList,\n });\n }\n\n public newMemberForm: UntypedFormGroup;\n public title = 'New Member Sign-up';\n public activeIndex: SkyTabIndex = 0;\n public step2Disabled = true;\n public step3Disabled = true;\n public saveDisabled = true;\n\n public firstName: UntypedFormControl | undefined;\n public middleName: UntypedFormControl | undefined;\n public lastName: UntypedFormControl | undefined;\n public phoneNumber: UntypedFormControl | undefined;\n public email: UntypedFormControl | undefined;\n public termsAccepted: UntypedFormControl | undefined;\n public mailingList: UntypedFormControl | undefined;\n\n public ngOnInit(): void {\n this.newMemberForm.valueChanges.subscribe(() => {\n this.checkRequirementsMet();\n });\n }\n\n public checkRequirementsMet(): void {\n this.step2Disabled = !(\n this.newMemberForm?.get('firstName')?.value &&\n this.newMemberForm?.get('lastName')?.value\n );\n this.step3Disabled = !(\n this.newMemberForm?.get('phoneNumber')?.value &&\n this.newMemberForm?.get('phoneNumber')?.valid &&\n this.newMemberForm?.get('email')?.value\n );\n this.saveDisabled = !this.newMemberForm?.get('termsAccepted')?.value;\n }\n\n public onCancelClick(): void {\n this.instance.cancel();\n }\n\n public onSave(): void {\n this.instance.save();\n }\n}\n"
|
|
6545
6555
|
},
|
|
6546
6556
|
{
|
|
6547
6557
|
"fileName": "wizard-demo.component.html",
|
|
@@ -164,4 +164,4 @@ SkyVerticalTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
|
|
|
164
164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
|
|
165
165
|
type: Injectable
|
|
166
166
|
}], ctorParameters: function () { return [{ type: i1.SkyMediaQueryService }]; } });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQXdCLE1BQU0sYUFBYSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSS9ELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUVuQzs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFpQ25DLFlBQW1CLGlCQUF1Qzs7UUFoQ25ELGdCQUFXLEdBQXVCLFNBQVMsQ0FBQztRQVE1QyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsaUJBQVksR0FBMEIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0QsdUJBQWtCLEdBQXdCLEtBQUssQ0FBQztRQUVoRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbEQsU0FBSSxHQUFtQyxFQUFFLENBQUM7UUFFMUMsYUFBUSxHQUFxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTNELGVBQVUsR0FBMkIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsaURBQWdCLEtBQUssRUFBQztRQUV0QixnREFBZSxLQUFLLEVBQUM7UUFFckIsNkNBQVksS0FBSyxFQUFDO1FBRWxCLDhEQUF5QztRQUd2Qyx1QkFBQSxJQUFJLCtDQUFzQixpQkFBaUIsTUFBQSxDQUFDO1FBQzVDLHVCQUFBLElBQUksbURBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDL0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUV4RCxJQUFJLFNBQVMsSUFBSSxDQUFDLHVCQUFBLElBQUksMENBQVUsRUFBRTtnQkFDaEMsc0JBQXNCO2dCQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFaEMsSUFBSSxDQUFDLHVCQUFBLElBQUksNkNBQWEsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzVCO2FBQ0Y7aUJBQU0sSUFBSSxDQUFDLFNBQVMsSUFBSSx1QkFBQSxJQUFJLDBDQUFVLEVBQUU7Z0JBQ3ZDLDBCQUEwQjtnQkFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWpDLElBQUksQ0FBQyx1QkFBQSxJQUFJLDZDQUFhLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM3QjthQUNGO1lBRUQsdUJBQUEsSUFBSSxzQ0FBYSxTQUFTLE1BQUEsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBNEI7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0IsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEIsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBNEI7UUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkIsT0FBTztTQUNSO1FBRUQsSUFDRSxJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLEdBQUcsQ0FBQyxlQUFlO1lBQ25CLDBCQUEwQjtZQUMxQixJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFDbkU7WUFDQSxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUN4RTtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUvRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUM1Qix1QkFBQSxJQUFJLHFGQUFnQixNQUFwQixJQUFJLENBQWtCLENBQUM7YUFDeEI7WUFDRCxvRUFBb0U7WUFDcEUsa0NBQWtDO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEUseUJBQXlCO1lBQ3pCLElBQUksWUFBWSxFQUFFO2dCQUNoQixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDNUI7U0FDRjtJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsR0FBNEI7UUFDN0Msd0JBQXdCO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDOUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDekIsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLHVCQUFBLElBQUksdUZBQWtCLE1BQXRCLElBQUksQ0FBb0IsQ0FBQztJQUMzQixDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyx1QkFBQSxJQUFJLDBDQUFVLENBQUM7SUFDeEIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsdUJBQUEsSUFBSSw4Q0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDaEQsNEJBQTRCO2dCQUM1Qix1QkFBQSxJQUFJLGtGQUFhLE1BQWpCLElBQUksQ0FBZSxDQUFDO2FBQ3JCO2lCQUFNLElBQUksdUJBQUEsSUFBSSw4Q0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUN2RCxpQkFBaUI7Z0JBQ2pCLHVCQUFBLElBQUksMENBQWlCLEtBQUssTUFBQSxDQUFDO2FBQzVCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFO29CQUN4QixJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQ3JDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUM5QixDQUFDO29CQUNGLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2lCQUM1QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLHVCQUFBLElBQUksNkNBQWEsQ0FBQztJQUMvQyxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsdUJBQUEsSUFBSSw2Q0FBYSxDQUFDO0lBQ2hELENBQUM7SUFFTSxRQUFRO1FBQ2IsdUJBQUEsSUFBSSx5Q0FBZ0IsSUFBSSxNQUFBLENBQUM7UUFDekIsdUJBQUEsSUFBSSwwQ0FBaUIsS0FBSyxNQUFBLENBQUM7UUFDM0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLGFBQWEsQ0FBQztRQUMvQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsWUFBWSxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7OztJQUdDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0tBQzNDO0lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDM0IsQ0FBQztJQUdDLDBCQUEwQjtJQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyx1QkFBQSxJQUFJLDhDQUFjLEVBQUU7UUFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRW5FLElBQUksYUFBYSxJQUFJLFNBQVMsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFO1lBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEUsU0FBUyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDakMsdUJBQUEsSUFBSSwwQ0FBaUIsSUFBSSxNQUFBLENBQUM7U0FDM0I7S0FDRjtBQUNILENBQUM7SUFHQyx1QkFBQSxJQUFJLDBDQUFpQixLQUFLLE1BQUEsQ0FBQztJQUUzQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNuQix1QkFBQSxJQUFJLHlDQUFnQixLQUFLLE1BQUEsQ0FBQztRQUMxQixJQUFJLENBQUMsNEJBQTRCLEdBQUcsYUFBYSxDQUFDO1FBQ2xELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDNUI7SUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0MsQ0FBQztzSEFsTVUsd0JBQXdCOzBIQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreU1lZGlhQnJlYWtwb2ludHMsIFNreU1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJDb21wb25lbnQgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYi5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgVklTSUJMRV9TVEFURSA9ICdzaG93bic7XG5leHBvcnQgY29uc3QgSElEREVOX1NUQVRFID0gJ3ZvaWQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlIHtcbiAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoaWRpbmdUYWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGluZGV4Q2hhbmdlZDogUmVwbGF5U3ViamVjdDxudW1iZXI+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG5cbiAgcHVibGljIG1haW50YWluVGFiQ29udGVudDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93aW5nVGFicyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBzd2l0Y2hpbmdNb2JpbGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyB0YWJzOiBBcnJheTxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gPSBbXTtcblxuICBwdWJsaWMgdGFiQWRkZWQ6IFN1YmplY3Q8U2t5VmVydGljYWxUYWJDb21wb25lbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwdWJsaWMgdGFiQ2xpY2tlZDogUmVwbGF5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICNjb250ZW50QWRkZWQgPSBmYWxzZTtcblxuICAjdGFic1Zpc2libGUgPSBmYWxzZTtcblxuICAjaXNNb2JpbGUgPSBmYWxzZTtcblxuICAjbWVkaWFRdWVyeVNlcnZpY2U6IFNreU1lZGlhUXVlcnlTZXJ2aWNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZWRpYVF1ZXJ5U2VydmljZTogU2t5TWVkaWFRdWVyeVNlcnZpY2UpIHtcbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZSA9IG1lZGlhUXVlcnlTZXJ2aWNlO1xuICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlLnN1YnNjcmliZSgoYnJlYWtwb2ludCkgPT4ge1xuICAgICAgY29uc3Qgbm93TW9iaWxlID0gYnJlYWtwb2ludCA9PT0gU2t5TWVkaWFCcmVha3BvaW50cy54cztcblxuICAgICAgaWYgKG5vd01vYmlsZSAmJiAhdGhpcy4jaXNNb2JpbGUpIHtcbiAgICAgICAgLy8gc3dpdGNoaW5nIHRvIG1vYmlsZVxuICAgICAgICB0aGlzLnN3aXRjaGluZ01vYmlsZS5uZXh0KHRydWUpO1xuXG4gICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLmhpZGluZ1RhYnMubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghbm93TW9iaWxlICYmIHRoaXMuI2lzTW9iaWxlKSB7XG4gICAgICAgIC8vIHN3aXRjaGluZyB0byB3aWRlc2NyZWVuXG4gICAgICAgIHRoaXMuc3dpdGNoaW5nTW9iaWxlLm5leHQoZmFsc2UpO1xuXG4gICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLnNob3dpbmdUYWJzLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jaXNNb2JpbGUgPSBub3dNb2JpbGU7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFicy5sZW5ndGg7XG4gICAgdGFiLmluZGV4ID0gaW5kZXg7XG5cbiAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xuXG4gICAgaWYgKHRhYi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVUYWIodGFiKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYkFkZGVkLm5leHQodGFiKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95VGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMudGFicy5pbmRleE9mKHRhYik7XG4gICAgaWYgKHRhYkluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMubWFpbnRhaW5UYWJDb250ZW50ICYmXG4gICAgICB0YWIuY29udGVudFJlbmRlcmVkICYmXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgdGhpcy5jb250ZW50Py5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50KVxuICAgICkge1xuICAgICAgdGhpcy5jb250ZW50Py5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYnMuc3BsaWNlKHRhYkluZGV4LCAxKTtcbiAgICAvLyB1cGRhdGUgdGFiIGluZGljZXNcbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiSXRlbSwgaW5kZXgpID0+ICh0YWJJdGVtLmluZGV4ID0gaW5kZXgpKTtcblxuICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICAgIHRoaXMuI2Rlc3Ryb3lDb250ZW50KCk7XG4gICAgICB9XG4gICAgICAvLyBUcnkgc2VsZWN0aW5nIHRoZSBuZXh0IHRhYiBmaXJzdCwgYW5kIGlmIHRoZXJlJ3Mgbm8gbmV4dCB0YWIgdGhlblxuICAgICAgLy8gdHJ5IHNlbGVjdGluZyB0aGUgcHJldmlvdXMgb25lLlxuICAgICAgY29uc3QgbmV3QWN0aXZlVGFiID0gdGhpcy50YWJzW3RhYkluZGV4XSB8fCB0aGlzLnRhYnNbdGFiSW5kZXggLSAxXTtcbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdBY3RpdmVUYWIpIHtcbiAgICAgICAgbmV3QWN0aXZlVGFiLmFjdGl2YXRlVGFiKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlVGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpIHtcbiAgICAvLyB1bmFjdGl2YXRlIGFjdGl2ZSB0YWJcbiAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZCgodCkgPT4gdC5pbmRleCA9PT0gdGhpcy5hY3RpdmVJbmRleCk7XG4gICAgaWYgKGFjdGl2ZVRhYiAmJiBhY3RpdmVUYWIuaW5kZXggIT09IHRhYi5pbmRleCkge1xuICAgICAgYWN0aXZlVGFiLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgYWN0aXZlVGFiLnRhYkRlYWN0aXZhdGVkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IHRhYi5pbmRleDtcbiAgICB0aGlzLnRhYkNsaWNrZWQubmV4dCh0cnVlKTtcbiAgICB0aGlzLiN1cGRhdGVUYWJDbGlja2VkKCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZlVGFiKCk6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLmZpbmQoKHQpID0+IHQuaW5kZXggPT09IHRoaXMuYWN0aXZlSW5kZXgpO1xuICB9XG5cbiAgcHVibGljIGlzTW9iaWxlKCkge1xuICAgIHJldHVybiB0aGlzLiNpc01vYmlsZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb250ZW50KCkge1xuICAgIGlmICghdGhpcy5tYWludGFpblRhYkNvbnRlbnQpIHtcbiAgICAgIGlmICghdGhpcy4jY29udGVudEFkZGVkICYmIHRoaXMuY29udGVudFZpc2libGUoKSkge1xuICAgICAgICAvLyBjb250ZW50IG5lZWRzIHRvIGJlIG1vdmVkXG4gICAgICAgIHRoaXMuI21vdmVDb250ZW50KCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuI2NvbnRlbnRBZGRlZCAmJiAhdGhpcy5jb250ZW50VmlzaWJsZSgpKSB7XG4gICAgICAgIC8vIGNvbnRlbnQgaGlkZGVuXG4gICAgICAgIHRoaXMuI2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmICghdGFiLmNvbnRlbnRSZW5kZXJlZCkge1xuICAgICAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChcbiAgICAgICAgICAgIHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YWIuY29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRhYnNWaXNpYmxlKCkge1xuICAgIHJldHVybiAhdGhpcy5pc01vYmlsZSgpIHx8IHRoaXMuI3RhYnNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGNvbnRlbnRWaXNpYmxlKCkge1xuICAgIHJldHVybiAhdGhpcy5pc01vYmlsZSgpIHx8ICF0aGlzLiN0YWJzVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VGFicygpIHtcbiAgICB0aGlzLiN0YWJzVmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy4jY29udGVudEFkZGVkID0gZmFsc2U7XG4gICAgdGhpcy5hbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlID0gVklTSUJMRV9TVEFURTtcbiAgICB0aGlzLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBISURERU5fU1RBVEU7XG4gICAgdGhpcy5zaG93aW5nVGFicy5uZXh0KHRydWUpO1xuICB9XG5cbiAgI2Rlc3Ryb3lDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmNvbnRlbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAjbW92ZUNvbnRlbnQoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5jb250ZW50ICYmICF0aGlzLiNjb250ZW50QWRkZWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuYWN0aXZlVGFiKCk7XG4gICAgICBjb25zdCBhY3RpdmVDb250ZW50ID0gYWN0aXZlVGFiID8gYWN0aXZlVGFiLnRhYkNvbnRlbnQgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChhY3RpdmVDb250ZW50ICYmIGFjdGl2ZVRhYiAmJiBhY3RpdmVDb250ZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYWN0aXZlQ29udGVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgYWN0aXZlVGFiLmNvbnRlbnRSZW5kZXJlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuI2NvbnRlbnRBZGRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVRhYkNsaWNrZWQoKSB7XG4gICAgdGhpcy4jY29udGVudEFkZGVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc01vYmlsZSgpKSB7XG4gICAgICB0aGlzLiN0YWJzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5hbmltYXRpb25Db250ZW50VmlzaWJsZVN0YXRlID0gVklTSUJMRV9TVEFURTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZSA9IEhJRERFTl9TVEFURTtcbiAgICAgIHRoaXMuaGlkaW5nVGFicy5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHRoaXMuaW5kZXhDaGFuZ2VkLm5leHQodGhpcy5hY3RpdmVJbmRleCk7XG4gIH1cbn1cbiJdfQ==
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQXdCLE1BQU0sYUFBYSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSS9ELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUVuQzs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFpQ25DLFlBQW1CLGlCQUF1Qzs7UUFoQ25ELGdCQUFXLEdBQXVCLFNBQVMsQ0FBQztRQVE1QyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsaUJBQVksR0FBc0MsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkUsdUJBQWtCLEdBQXdCLEtBQUssQ0FBQztRQUVoRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbEQsU0FBSSxHQUFtQyxFQUFFLENBQUM7UUFFMUMsYUFBUSxHQUFxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTNELGVBQVUsR0FBMkIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsaURBQWdCLEtBQUssRUFBQztRQUV0QixnREFBZSxLQUFLLEVBQUM7UUFFckIsNkNBQVksS0FB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QjtJQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyx1QkFBQSxJQUFJLDhDQUFjLEVBQUU7UUFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRW5FLElBQUksYUFBYSxJQUFJLFNBQVMsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFO1lBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEUsU0FBUyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDakMsdUJBQUEsSUFBSSwwQ0FBaUIsSUFBSSxNQUFBLENBQUM7U0FDM0I7S0FDRjtBQUNILENBQUM7SUFHQyx1QkFBQSxJQUFJLDBDQUFpQixLQUFLLE1BQUEsQ0FBQztJQUUzQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNuQix1QkFBQSxJQUFJLHlDQUFnQixLQUFLLE1BQUEsQ0FBQztRQUMxQixJQUFJLENBQUMsNEJBQTRCLEdBQUcsYUFBYSxDQUFDO1FBQ2xELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDNUI7SUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0MsQ0FBQztzSEFsTVUsd0JBQXdCOzBIQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreU1lZGlhQnJlYWtwb2ludHMsIFNreU1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJDb21wb25lbnQgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYi5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgVklTSUJMRV9TVEFURSA9ICdzaG93bic7XG5leHBvcnQgY29uc3QgSElEREVOX1NUQVRFID0gJ3ZvaWQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlIHtcbiAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoaWRpbmdUYWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGluZGV4Q2hhbmdlZDogUmVwbGF5U3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG5cbiAgcHVibGljIG1haW50YWluVGFiQ29udGVudDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93aW5nVGFicyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBzd2l0Y2hpbmdNb2JpbGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyB0YWJzOiBBcnJheTxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gPSBbXTtcblxuICBwdWJsaWMgdGFiQWRkZWQ6IFN1YmplY3Q8U2t5VmVydGljYWxUYWJDb21wb25lbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwdWJsaWMgdGFiQ2xpY2tlZDogUmVwbGF5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICNjb250ZW50QWRkZWQgPSBmYWxzZTtcblxuICAjdGFic1Zpc2libGUgPSBmYWxzZTtcblxuICAjaXNNb2JpbGUgPSBmYWxzZTtcblxuICAjbWVkaWFRdWVyeVNlcnZpY2U6IFNreU1lZGlhUXVlcnlTZXJ2aWNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZWRpYVF1ZXJ5U2VydmljZTogU2t5TWVkaWFRdWVyeVNlcnZpY2UpIHtcbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZSA9IG1lZGlhUXVlcnlTZXJ2aWNlO1xuICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlLnN1YnNjcmliZSgoYnJlYWtwb2ludCkgPT4ge1xuICAgICAgY29uc3Qgbm93TW9iaWxlID0gYnJlYWtwb2ludCA9PT0gU2t5TWVkaWFCcmVha3BvaW50cy54cztcblxuICAgICAgaWYgKG5vd01vYmlsZSAmJiAhdGhpcy4jaXNNb2JpbGUpIHtcbiAgICAgICAgLy8gc3dpdGNoaW5nIHRvIG1vYmlsZVxuICAgICAgICB0aGlzLnN3aXRjaGluZ01vYmlsZS5uZXh0KHRydWUpO1xuXG4gICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLmhpZGluZ1RhYnMubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghbm93TW9iaWxlICYmIHRoaXMuI2lzTW9iaWxlKSB7XG4gICAgICAgIC8vIHN3aXRjaGluZyB0byB3aWRlc2NyZWVuXG4gICAgICAgIHRoaXMuc3dpdGNoaW5nTW9iaWxlLm5leHQoZmFsc2UpO1xuXG4gICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLnNob3dpbmdUYWJzLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jaXNNb2JpbGUgPSBub3dNb2JpbGU7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFicy5sZW5ndGg7XG4gICAgdGFiLmluZGV4ID0gaW5kZXg7XG5cbiAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xuXG4gICAgaWYgKHRhYi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVUYWIodGFiKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYkFkZGVkLm5leHQodGFiKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95VGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMudGFicy5pbmRleE9mKHRhYik7XG4gICAgaWYgKHRhYkluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMubWFpbnRhaW5UYWJDb250ZW50ICYmXG4gICAgICB0YWIuY29udGVudFJlbmRlcmVkICYmXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgdGhpcy5jb250ZW50Py5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50KVxuICAgICkge1xuICAgICAgdGhpcy5jb250ZW50Py5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYnMuc3BsaWNlKHRhYkluZGV4LCAxKTtcbiAgICAvLyB1cGRhdGUgdGFiIGluZGljZXNcbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiSXRlbSwgaW5kZXgpID0+ICh0YWJJdGVtLmluZGV4ID0gaW5kZXgpKTtcblxuICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICAgIHRoaXMuI2Rlc3Ryb3lDb250ZW50KCk7XG4gICAgICB9XG4gICAgICAvLyBUcnkgc2VsZWN0aW5nIHRoZSBuZXh0IHRhYiBmaXJzdCwgYW5kIGlmIHRoZXJlJ3Mgbm8gbmV4dCB0YWIgdGhlblxuICAgICAgLy8gdHJ5IHNlbGVjdGluZyB0aGUgcHJldmlvdXMgb25lLlxuICAgICAgY29uc3QgbmV3QWN0aXZlVGFiID0gdGhpcy50YWJzW3RhYkluZGV4XSB8fCB0aGlzLnRhYnNbdGFiSW5kZXggLSAxXTtcbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdBY3RpdmVUYWIpIHtcbiAgICAgICAgbmV3QWN0aXZlVGFiLmFjdGl2YXRlVGFiKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlVGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAvLyB1bmFjdGl2YXRlIGFjdGl2ZSB0YWJcbiAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZCgodCkgPT4gdC5pbmRleCA9PT0gdGhpcy5hY3RpdmVJbmRleCk7XG4gICAgaWYgKGFjdGl2ZVRhYiAmJiBhY3RpdmVUYWIuaW5kZXggIT09IHRhYi5pbmRleCkge1xuICAgICAgYWN0aXZlVGFiLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgYWN0aXZlVGFiLnRhYkRlYWN0aXZhdGVkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IHRhYi5pbmRleDtcbiAgICB0aGlzLnRhYkNsaWNrZWQubmV4dCh0cnVlKTtcbiAgICB0aGlzLiN1cGRhdGVUYWJDbGlja2VkKCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZlVGFiKCk6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLmZpbmQoKHQpID0+IHQuaW5kZXggPT09IHRoaXMuYWN0aXZlSW5kZXgpO1xuICB9XG5cbiAgcHVibGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNpc01vYmlsZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tYWludGFpblRhYkNvbnRlbnQpIHtcbiAgICAgIGlmICghdGhpcy4jY29udGVudEFkZGVkICYmIHRoaXMuY29udGVudFZpc2libGUoKSkge1xuICAgICAgICAvLyBjb250ZW50IG5lZWRzIHRvIGJlIG1vdmVkXG4gICAgICAgIHRoaXMuI21vdmVDb250ZW50KCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuI2NvbnRlbnRBZGRlZCAmJiAhdGhpcy5jb250ZW50VmlzaWJsZSgpKSB7XG4gICAgICAgIC8vIGNvbnRlbnQgaGlkZGVuXG4gICAgICAgIHRoaXMuI2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmICghdGFiLmNvbnRlbnRSZW5kZXJlZCkge1xuICAgICAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChcbiAgICAgICAgICAgIHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YWIuY29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRhYnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc01vYmlsZSgpIHx8IHRoaXMuI3RhYnNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGNvbnRlbnRWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc01vYmlsZSgpIHx8ICF0aGlzLiN0YWJzVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VGFicygpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzVmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy4jY29udGVudEFkZGVkID0gZmFsc2U7XG4gICAgdGhpcy5hbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlID0gVklTSUJMRV9TVEFURTtcbiAgICB0aGlzLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBISURERU5fU1RBVEU7XG4gICAgdGhpcy5zaG93aW5nVGFicy5uZXh0KHRydWUpO1xuICB9XG5cbiAgI2Rlc3Ryb3lDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmNvbnRlbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAjbW92ZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5jb250ZW50ICYmICF0aGlzLiNjb250ZW50QWRkZWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuYWN0aXZlVGFiKCk7XG4gICAgICBjb25zdCBhY3RpdmVDb250ZW50ID0gYWN0aXZlVGFiID8gYWN0aXZlVGFiLnRhYkNvbnRlbnQgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChhY3RpdmVDb250ZW50ICYmIGFjdGl2ZVRhYiAmJiBhY3RpdmVDb250ZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYWN0aXZlQ29udGVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgYWN0aXZlVGFiLmNvbnRlbnRSZW5kZXJlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuI2NvbnRlbnRBZGRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVRhYkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy4jY29udGVudEFkZGVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc01vYmlsZSgpKSB7XG4gICAgICB0aGlzLiN0YWJzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5hbmltYXRpb25Db250ZW50VmlzaWJsZVN0YXRlID0gVklTSUJMRV9TVEFURTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZSA9IEhJRERFTl9TVEFURTtcbiAgICAgIHRoaXMuaGlkaW5nVGFicy5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHRoaXMuaW5kZXhDaGFuZ2VkLm5leHQodGhpcy5hY3RpdmVJbmRleCk7XG4gIH1cbn1cbiJdfQ==
|