@skyux/core 8.10.4 → 8.10.6

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.
@@ -4603,7 +4603,7 @@
4603
4603
  ]
4604
4604
  },
4605
4605
  {
4606
- "id": 719,
4606
+ "id": 720,
4607
4607
  "name": "SkyResizeObserverMediaQueryService",
4608
4608
  "kind": 128,
4609
4609
  "kindString": "Class",
@@ -4624,48 +4624,6 @@
4624
4624
  }
4625
4625
  ],
4626
4626
  "children": [
4627
- {
4628
- "id": 720,
4629
- "name": "constructor",
4630
- "kind": 512,
4631
- "kindString": "Constructor",
4632
- "flags": {},
4633
- "sources": [
4634
- {
4635
- "fileName": "projects/core/src/modules/resize-observer/resize-observer-media-query.service.ts",
4636
- "line": 57,
4637
- "character": 2
4638
- }
4639
- ],
4640
- "signatures": [
4641
- {
4642
- "id": 721,
4643
- "name": "new SkyResizeObserverMediaQueryService",
4644
- "kind": 16384,
4645
- "kindString": "Constructor signature",
4646
- "flags": {},
4647
- "parameters": [
4648
- {
4649
- "id": 722,
4650
- "name": "resizeObserverSvc",
4651
- "kind": 32768,
4652
- "kindString": "Parameter",
4653
- "flags": {},
4654
- "type": {
4655
- "type": "reference",
4656
- "id": 701,
4657
- "name": "SkyResizeObserverService"
4658
- }
4659
- }
4660
- ],
4661
- "type": {
4662
- "type": "reference",
4663
- "id": 719,
4664
- "name": "SkyResizeObserverMediaQueryService"
4665
- }
4666
- }
4667
- ]
4668
- },
4669
4627
  {
4670
4628
  "id": 723,
4671
4629
  "name": "current",
@@ -4710,7 +4668,7 @@
4710
4668
  "sources": [
4711
4669
  {
4712
4670
  "fileName": "projects/core/src/modules/resize-observer/resize-observer-media-query.service.ts",
4713
- "line": 61,
4671
+ "line": 57,
4714
4672
  "character": 9
4715
4673
  }
4716
4674
  ],
@@ -4747,7 +4705,7 @@
4747
4705
  "sources": [
4748
4706
  {
4749
4707
  "fileName": "projects/core/src/modules/resize-observer/resize-observer-media-query.service.ts",
4750
- "line": 79,
4708
+ "line": 75,
4751
4709
  "character": 9
4752
4710
  }
4753
4711
  ],
@@ -4809,7 +4767,7 @@
4809
4767
  "sources": [
4810
4768
  {
4811
4769
  "fileName": "libs/components/core/src/lib/modules/resize-observer/resize-observer-media-query.service.ts",
4812
- "line": 82,
4770
+ "line": 78,
4813
4771
  "character": 6
4814
4772
  }
4815
4773
  ],
@@ -4834,7 +4792,7 @@
4834
4792
  ],
4835
4793
  "type": {
4836
4794
  "type": "reference",
4837
- "id": 719,
4795
+ "id": 720,
4838
4796
  "name": "SkyResizeObserverMediaQueryService"
4839
4797
  }
4840
4798
  }
@@ -4851,7 +4809,7 @@
4851
4809
  "sources": [
4852
4810
  {
4853
4811
  "fileName": "projects/core/src/modules/resize-observer/resize-observer-media-query.service.ts",
4854
- "line": 121,
4812
+ "line": 117,
4855
4813
  "character": 9
4856
4814
  }
4857
4815
  ],
@@ -4899,7 +4857,7 @@
4899
4857
  "sources": [
4900
4858
  {
4901
4859
  "fileName": "projects/core/src/modules/resize-observer/resize-observer-media-query.service.ts",
4902
- "line": 112,
4860
+ "line": 108,
4903
4861
  "character": 9
4904
4862
  }
4905
4863
  ],
@@ -4926,7 +4884,7 @@
4926
4884
  "title": "Constructors",
4927
4885
  "kind": 512,
4928
4886
  "children": [
4929
- 720
4887
+ 721
4930
4888
  ]
4931
4889
  },
4932
4890
  {
@@ -4982,56 +4940,13 @@
4982
4940
  "name": "Injectable"
4983
4941
  },
4984
4942
  "arguments": {
4985
- "options": "{\n providedIn: 'any',\n}"
4943
+ "options": "{\n providedIn: 'root',\n}"
4986
4944
  }
4987
4945
  }
4988
4946
  ],
4989
4947
  "children": [
4990
4948
  {
4991
- "id": 702,
4992
- "name": "constructor",
4993
- "kind": 512,
4994
- "kindString": "Constructor",
4995
- "flags": {},
4996
- "sources": [
4997
- {
4998
- "fileName": "projects/core/src/modules/resize-observer/resize-observer.service.ts",
4999
- "line": 24,
5000
- "character": 2
5001
- }
5002
- ],
5003
- "signatures": [
5004
- {
5005
- "id": 703,
5006
- "name": "new SkyResizeObserverService",
5007
- "kind": 16384,
5008
- "kindString": "Constructor signature",
5009
- "flags": {},
5010
- "parameters": [
5011
- {
5012
- "id": 704,
5013
- "name": "zone",
5014
- "kind": 32768,
5015
- "kindString": "Parameter",
5016
- "flags": {},
5017
- "type": {
5018
- "type": "reference",
5019
- "qualifiedName": "NgZone",
5020
- "package": "@angular/core",
5021
- "name": "NgZone"
5022
- }
5023
- }
5024
- ],
5025
- "type": {
5026
- "type": "reference",
5027
- "id": 701,
5028
- "name": "SkyResizeObserverService"
5029
- }
5030
- }
5031
- ]
5032
- },
5033
- {
5034
- "id": 708,
4949
+ "id": 709,
5035
4950
  "name": "ngOnDestroy",
5036
4951
  "kind": 2048,
5037
4952
  "kindString": "Method",
@@ -5041,13 +4956,13 @@
5041
4956
  "sources": [
5042
4957
  {
5043
4958
  "fileName": "projects/core/src/modules/resize-observer/resize-observer.service.ts",
5044
- "line": 31,
4959
+ "line": 35,
5045
4960
  "character": 9
5046
4961
  }
5047
4962
  ],
5048
4963
  "signatures": [
5049
4964
  {
5050
- "id": 709,
4965
+ "id": 710,
5051
4966
  "name": "ngOnDestroy",
5052
4967
  "kind": 4096,
5053
4968
  "kindString": "Call signature",
@@ -5068,7 +4983,7 @@
5068
4983
  }
5069
4984
  },
5070
4985
  {
5071
- "id": 710,
4986
+ "id": 711,
5072
4987
  "name": "observe",
5073
4988
  "kind": 2048,
5074
4989
  "kindString": "Method",
@@ -5078,13 +4993,13 @@
5078
4993
  "sources": [
5079
4994
  {
5080
4995
  "fileName": "projects/core/src/modules/resize-observer/resize-observer.service.ts",
5081
- "line": 38,
4996
+ "line": 49,
5082
4997
  "character": 9
5083
4998
  }
5084
4999
  ],
5085
5000
  "signatures": [
5086
5001
  {
5087
- "id": 711,
5002
+ "id": 712,
5088
5003
  "name": "observe",
5089
5004
  "kind": 4096,
5090
5005
  "kindString": "Call signature",
@@ -5094,7 +5009,7 @@
5094
5009
  },
5095
5010
  "parameters": [
5096
5011
  {
5097
- "id": 712,
5012
+ "id": 713,
5098
5013
  "name": "element",
5099
5014
  "kind": 32768,
5100
5015
  "kindString": "Parameter",
@@ -5143,15 +5058,15 @@
5143
5058
  "title": "Methods",
5144
5059
  "kind": 2048,
5145
5060
  "children": [
5146
- 708,
5147
- 710
5061
+ 709,
5062
+ 711
5148
5063
  ]
5149
5064
  }
5150
5065
  ],
5151
5066
  "sources": [
5152
5067
  {
5153
5068
  "fileName": "projects/core/src/modules/resize-observer/resize-observer.service.ts",
5154
- "line": 18,
5069
+ "line": 26,
5155
5070
  "character": 13
5156
5071
  }
5157
5072
  ],
@@ -322,9 +322,9 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
322
322
  }
323
323
  return offset;
324
324
  }, _SkyAffixer_getImmediateOverflowParent = function _SkyAffixer_getImmediateOverflowParent() {
325
- return __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[__classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f").length - 1];
325
+ return __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[0];
326
326
  }, _SkyAffixer_getAutoFitContextParent = function _SkyAffixer_getAutoFitContextParent() {
327
- const bodyElement = __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[0];
327
+ const bodyElement = __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[__classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f").length - 1];
328
328
  return __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitContext === SkyAffixAutoFitContext.OverflowParent
329
329
  ? __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getImmediateOverflowParent).call(this)
330
330
  : bodyElement;
@@ -386,4 +386,4 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
386
386
  });
387
387
  });
388
388
  };
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFPbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSxhQUFhLENBQUM7QUFrQnJCLE1BQU0sb0JBQW9CLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjO0lBQ3JELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLG1CQUFtQixFQUFFLFFBQVE7SUFDN0IsUUFBUSxFQUFFLEtBQUs7SUFDZixTQUFTLEVBQUUsT0FBTztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLFVBQVU7SUFDckI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyx1QkFBQSxJQUFJLG1DQUFpQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sdUJBQUEsSUFBSSxxQ0FBbUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sdUJBQUEsSUFBSSxzQ0FBb0IsQ0FBQztJQUNsQyxDQUFDO0lBMkRELFlBQ0UsY0FBMkIsRUFDM0IsUUFBbUIsRUFDbkIsYUFBNEIsRUFDNUIsSUFBWTs7UUF4Q2QsNkNBQTZCO1FBRTdCLDBDQUFzQztRQUV0Qyw0Q0FBMkM7UUFFM0MsK0NBQWlEO1FBRWpE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YUFBYSxFQUFFLEVBQUU7WUFDaEIsYUFBYSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSx1QkFBQSxJQUFJLHdDQUFzQixDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7SUFHQyx1QkFBQSxJQUFJLHFDQUFtQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBRXZDLHVCQUFBLElBQUksd0JBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLHVCQUFBLElBQUksbUNBQWlCLENBQUMsQ0FBQyxPQUFPLENBQy9ELENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUNoQyxRQUFRLEVBQ1IsdUJBQUEsSUFBSSx3Q0FBc0IsQ0FDM0IsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nWm9uZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lBZmZpeEF1dG9GaXRDb250ZXh0IH0gZnJvbSAnLi9hZmZpeC1hdXRvLWZpdC1jb250ZXh0JztcbmltcG9ydCB7IFNreUFmZml4Q29uZmlnIH0gZnJvbSAnLi9hZmZpeC1jb25maWcnO1xuaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXQgfSBmcm9tICcuL2FmZml4LW9mZnNldCc7XG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldENoYW5nZSB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0LWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lBZmZpeFBsYWNlbWVudCB9IGZyb20gJy4vYWZmaXgtcGxhY2VtZW50JztcbmltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50Q2hhbmdlIH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQtY2hhbmdlJztcbmltcG9ydCB7IEFmZml4UmVjdCB9IGZyb20gJy4vYWZmaXgtcmVjdCc7XG5pbXBvcnQgeyBnZXRJbnZlcnNlUGxhY2VtZW50LCBnZXROZXh0UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC11dGlscyc7XG5pbXBvcnQge1xuICBnZXRFbGVtZW50T2Zmc2V0LFxuICBnZXRPdmVyZmxvd1BhcmVudHMsXG4gIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50LFxuICBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQsXG59IGZyb20gJy4vZG9tLXV0aWxzJztcblxuLyoqXG4gKiBNYWtlIHNwZWNpZmljIHByb3BlcnRpZXMgcmVxdWlyZWQsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0b1xuICogZG8gbnVsbCBjaGVja3MgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cbnR5cGUgQWZmaXhDb25maWdPckRlZmF1bHRzID0gU2t5QWZmaXhDb25maWcgJlxuICBSZXF1aXJlZDxcbiAgICBQaWNrPFxuICAgICAgU2t5QWZmaXhDb25maWcsXG4gICAgICB8ICdhdXRvRml0Q29udGV4dCdcbiAgICAgIHwgJ2VuYWJsZUF1dG9GaXQnXG4gICAgICB8ICdob3Jpem9udGFsQWxpZ25tZW50J1xuICAgICAgfCAnaXNTdGlja3knXG4gICAgICB8ICdwbGFjZW1lbnQnXG4gICAgPlxuICA+O1xuXG5jb25zdCBERUZBVUxUX0FGRklYX0NPTkZJRzogQWZmaXhDb25maWdPckRlZmF1bHRzID0ge1xuICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5PdmVyZmxvd1BhcmVudCxcbiAgZW5hYmxlQXV0b0ZpdDogZmFsc2UsXG4gIGhvcml6b250YWxBbGlnbm1lbnQ6ICdjZW50ZXInLFxuICBpc1N0aWNreTogZmFsc2UsXG4gIHBsYWNlbWVudDogJ2Fib3ZlJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBTa3lBZmZpeGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFmZml4ZWQgZWxlbWVudCdzIG9mZnNldCBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBvZmZzZXRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNvZmZzZXRDaGFuZ2VPYnM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYmFzZSBlbGVtZW50J3MgbmVhcmVzdCBvdmVyZmxvdyBwYXJlbnQgaXMgc2Nyb2xsaW5nLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZFxuICAgKiB0byBwZXJmb3JtIGFuIGFkZGl0aW9uYWwgYWN0aW9uIGR1cmluZyB0aGUgc2Nyb2xsIGV2ZW50IGJ1dCBkb24ndCB3YW50IHRvIGdlbmVyYXRlIGFub3RoZXJcbiAgICogZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXJmbG93U2Nyb2xsKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNvdmVyZmxvd1Njcm9sbE9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwbGFjZW1lbnQgdmFsdWUgY2hhbmdlcy4gQSBgbnVsbGAgdmFsdWUgaW5kaWNhdGVzIHRoYXQgYSBzdWl0YWJsZVxuICAgKiBwbGFjZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGdldCBwbGFjZW1lbnRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnM7XG4gIH1cblxuICBnZXQgI2NvbmZpZygpOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMge1xuICAgIHJldHVybiB0aGlzLiNfY29uZmlnO1xuICB9XG5cbiAgc2V0ICNjb25maWcodmFsdWU6IFNreUFmZml4Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbWVyZ2VkOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSB7XG4gICAgICAuLi5ERUZBVUxUX0FGRklYX0NPTkZJRyxcbiAgICAgIC4uLnZhbHVlLFxuICAgIH07XG5cbiAgICAvLyBNYWtlIHN1cmUgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSB1bmRlZmluZWQuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG1lcmdlZDtcbiAgICBmb3IgKGtleSBpbiBtZXJnZWQpIHtcbiAgICAgIGlmIChtZXJnZWRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIChtZXJnZWQgYXMgYW55KVtrZXldID0gREVGQVVMVF9BRkZJWF9DT05GSUdba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNfY29uZmlnID0gbWVyZ2VkO1xuICB9XG5cbiAgI2FmZml4ZWRFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAjYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50T2Zmc2V0OiBTa3lBZmZpeE9mZnNldCB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudFBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI29mZnNldENoYW5nZTogU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT47XG5cbiAgI29mZnNldENoYW5nZU9iczogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT47XG5cbiAgI292ZXJmbG93UGFyZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICNvdmVyZmxvd1Njcm9sbDogU3ViamVjdDx2b2lkPjtcblxuICAjb3ZlcmZsb3dTY3JvbGxPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI3BsYWNlbWVudENoYW5nZTogU3ViamVjdDxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT47XG5cbiAgI3BsYWNlbWVudENoYW5nZU9iczogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT47XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3Njcm9sbENoYW5nZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3ZpZXdwb3J0TGlzdGVuZXJzOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXI7XG5cbiAgI3pvbmU6IE5nWm9uZTtcblxuICAjX2NvbmZpZzogQWZmaXhDb25maWdPckRlZmF1bHRzID0gREVGQVVMVF9BRkZJWF9DT05GSUc7XG5cbiAgI3Njcm9sbENoYW5nZUxpc3RlbmVyOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy4jc2Nyb2xsQ2hhbmdlLm5leHQoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZmZpeGVkRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICB0aGlzLiNhZmZpeGVkRWxlbWVudCA9IGFmZml4ZWRFbGVtZW50O1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jdmlld3BvcnRSdWxlciA9IHZpZXdwb3J0UnVsZXI7XG4gICAgdGhpcy4jem9uZSA9IHpvbmU7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2UgPSBuZXcgU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT4oKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlID0gbmV3IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+KCk7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2VPYnMgPSB0aGlzLiNvZmZzZXRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGxPYnMgPSB0aGlzLiNvdmVyZmxvd1Njcm9sbC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnMgPSB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWZmaXhlcyBhbiBlbGVtZW50IHRvIGEgYmFzZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gYmFzZUVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudC5cbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgYWZmaXggYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFmZml4VG8oYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc/OiBTa3lBZmZpeENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0KCk7XG5cbiAgICB0aGlzLiNjb25maWcgPSBjb25maWc7XG4gICAgdGhpcy4jYmFzZUVsZW1lbnQgPSBiYXNlRWxlbWVudDtcbiAgICB0aGlzLiNvdmVyZmxvd1BhcmVudHMgPSBnZXRPdmVyZmxvd1BhcmVudHMoYmFzZUVsZW1lbnQpO1xuXG4gICAgdGhpcy4jYWZmaXgoKTtcblxuICAgIGlmICh0aGlzLiNjb25maWcuaXNTdGlja3kpIHtcbiAgICAgIHRoaXMuI2FkZFZpZXdwb3J0TGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpOiBTa3lBZmZpeENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1ydW5zIHRoZSBhZmZpeCBjYWxjdWxhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFmZml4KCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IGN1cnJlbnQgcGxhY2VtZW50IHRvIHByZWZlcnJlZCBwbGFjZW1lbnQuXG4gICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9IHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQ7XG4gICAgdGhpcy4jYWZmaXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgYWZmaXhlci5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0KCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jb2Zmc2V0Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLiNzY3JvbGxDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gICNhZmZpeCgpOiB2b2lkIHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLiNnZXRPZmZzZXQoKTtcblxuICAgIGlmICh0aGlzLiNpc05ld09mZnNldChvZmZzZXQpKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZSh0aGlzLiNhZmZpeGVkRWxlbWVudCwgJ3RvcCcsIGAke29mZnNldC50b3B9cHhgKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuI2FmZml4ZWRFbGVtZW50LCAnbGVmdCcsIGAke29mZnNldC5sZWZ0fXB4YCk7XG5cbiAgICAgIHRoaXMuI29mZnNldENoYW5nZS5uZXh0KHsgb2Zmc2V0IH0pO1xuICAgIH1cbiAgfVxuXG4gICNnZXRPZmZzZXQoKTogU2t5QWZmaXhPZmZzZXQge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG5cbiAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDQ7XG4gICAgbGV0IGF0dGVtcHRzID0gMDtcblxuICAgIGxldCBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+O1xuICAgIGxldCBwbGFjZW1lbnQgPSB0aGlzLiNjb25maWcucGxhY2VtZW50O1xuXG4gICAgY29uc3QgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0ID0gdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldCB8fCB7XG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB0b3A6IDAsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLiNjb25maWcucG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgIGNvbnN0IHsgdG9wLCBsZWZ0IH0gPSB0aGlzLiN2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC50b3AgPSAoYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LnRvcCB8fCAwKSArIHRvcDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5sZWZ0ID0gKGF1dG9GaXRPdmVyZmxvd09mZnNldC5sZWZ0IHx8IDApICsgbGVmdDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5ib3R0b20gPSAoYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LmJvdHRvbSB8fCAwKSArIHRvcDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5yaWdodCA9IChhdXRvRml0T3ZlcmZsb3dPZmZzZXQucmlnaHQgfHwgMCkgKyBsZWZ0O1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIG9mZnNldCA9IHRoaXMuI2dldFByZWZlcnJlZE9mZnNldChwbGFjZW1lbnQpO1xuICAgICAgaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSA9IGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG9mZnNldCxcbiAgICAgICAgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgICApO1xuXG4gICAgICBpZiAoIXRoaXMuI2NvbmZpZy5lbmFibGVBdXRvRml0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUpIHtcbiAgICAgICAgcGxhY2VtZW50ID1cbiAgICAgICAgICBhdHRlbXB0cyAlIDIgPT09IDBcbiAgICAgICAgICAgID8gZ2V0SW52ZXJzZVBsYWNlbWVudChwbGFjZW1lbnQpXG4gICAgICAgICAgICA6IGdldE5leHRQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgIH1cblxuICAgICAgYXR0ZW1wdHMrKztcbiAgICB9IHdoaWxlICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSAmJiBhdHRlbXB0cyA8IG1heEF0dGVtcHRzKTtcblxuICAgIGlmIChpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlKSB7XG4gICAgICBpZiAodGhpcy4jaXNCYXNlRWxlbWVudFZpc2libGUoKSkge1xuICAgICAgICB0aGlzLiNub3RpZnlQbGFjZW1lbnRDaGFuZ2UocGxhY2VtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQpIHtcbiAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICB9XG5cbiAgICAvLyBObyBzdWl0YWJsZSBwbGFjZW1lbnQgd2FzIGZvdW5kLCBzbyByZXZlcnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICByZXR1cm4gdGhpcy4jZ2V0UHJlZmVycmVkT2Zmc2V0KHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQpO1xuICB9XG5cbiAgI2dldFJlY3QoYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogQWZmaXhSZWN0IHtcbiAgICBjb25zdCBiYXNlRG9tUmVjdCA9IGJhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgYmFzZVJlY3Q6IEFmZml4UmVjdCA9IHtcbiAgICAgIHRvcDogYmFzZURvbVJlY3QudG9wLFxuICAgICAgYm90dG9tOiBiYXNlRG9tUmVjdC5ib3R0b20sXG4gICAgICBsZWZ0OiBiYXNlRG9tUmVjdC5sZWZ0LFxuICAgICAgcmlnaHQ6IGJhc2VEb21SZWN0LnJpZ2h0LFxuICAgICAgd2lkdGg6IGJhc2VEb21SZWN0LndpZHRoLFxuICAgICAgaGVpZ2h0OiBiYXNlRG9tUmVjdC5oZWlnaHQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLiNjb25maWcucG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSB0aGlzLiN2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgIGJhc2VSZWN0LnRvcCArPSB0b3A7XG4gICAgICBiYXNlUmVjdC5sZWZ0ICs9IGxlZnQ7XG4gICAgICBiYXNlUmVjdC5ib3R0b20gKz0gdG9wO1xuICAgICAgYmFzZVJlY3QucmlnaHQgKz0gbGVmdDtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZVJlY3Q7XG4gIH1cblxuICAjZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQpOiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4ge1xuICAgIGlmICghdGhpcy4jYmFzZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gdGhpcy4jZ2V0UmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNnZXRSZWN0KHRoaXMuI2Jhc2VFbGVtZW50KTtcblxuICAgIGNvbnN0IGhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLiNjb25maWcuaG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICBjb25zdCB2ZXJ0aWNhbEFsaWdubWVudCA9IHRoaXMuI2NvbmZpZy52ZXJ0aWNhbEFsaWdubWVudDtcbiAgICBjb25zdCBlbmFibGVBdXRvRml0ID0gdGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQ7XG5cbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScgfHwgcGxhY2VtZW50ID09PSAnYmVsb3cnKSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnYWJvdmUnKSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodDtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LmJvdHRvbTtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChob3Jpem9udGFsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5sZWZ0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgKyBiYXNlUmVjdC53aWR0aCAvIDIgLSBhZmZpeGVkUmVjdC53aWR0aCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnbGVmdCcpIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgLSBhZmZpeGVkUmVjdC53aWR0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCArIGJhc2VSZWN0LmhlaWdodCAvIDIgLSBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+ID0geyB0b3AsIGxlZnQsIGJvdHRvbTogMCwgcmlnaHQ6IDAgfTtcblxuICAgIGlmIChlbmFibGVBdXRvRml0KSB7XG4gICAgICBjb25zdCBhZGp1c3RtZW50cyA9IHRoaXMuI2FkanVzdE9mZnNldFRvT3ZlcmZsb3dQYXJlbnQoXG4gICAgICAgIHsgdG9wLCBsZWZ0IH0sXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgdGhpcy4jYmFzZUVsZW1lbnRcbiAgICAgICk7XG4gICAgICBvZmZzZXQudG9wID0gYWRqdXN0bWVudHMudG9wO1xuICAgICAgb2Zmc2V0LmxlZnQgPSBhZGp1c3RtZW50cy5sZWZ0O1xuICAgIH1cblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNsaWdodGx5IGFkanVzdCB0aGUgb2Zmc2V0IHRvIGZpdCB3aXRoaW4gdGhlIHNjcm9sbCBwYXJlbnQncyBib3VuZGFyaWVzIGlmXG4gICAqIHRoZSBhZmZpeGVkIGVsZW1lbnQgd291bGQgb3RoZXJ3aXNlIGJlIGNsaXBwZWQuXG4gICAqL1xuICAjYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICBvZmZzZXQ6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9LFxuICAgIHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQsXG4gICAgYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICk6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpO1xuICAgIGNvbnN0IHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQoXG4gICAgICBwYXJlbnQsXG4gICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gdGhpcy4jZ2V0UmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNnZXRSZWN0KGJhc2VFbGVtZW50KTtcblxuICAgIC8vIEEgcGl4ZWwgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBsZWV3YXkgYmV0d2VlbiB0aGUgZWRnZSBvZiB0aGUgb3ZlcmZsb3cgcGFyZW50IGFuZCB0aGUgZWRnZVxuICAgIC8vIG9mIHRoZSBiYXNlIGVsZW1lbnQgYmVmb3JlIGl0IGRpc2FwcGVhcnMgZnJvbSB2aWV3LlxuICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJhc2UgZWxlbWVudCBpcyBsZXNzIHRoYW4gdGhpcyBwaXhlbCB2YWx1ZSwgdGhlIGF1dG8tZml0XG4gICAgLy8gZnVuY3Rpb25hbGl0eSBhdHRlbXB0cyB0byBmaW5kIGFub3RoZXIgcGxhY2VtZW50LlxuICAgIGNvbnN0IGRlZmF1bHRQaXhlbFRvbGVyYW5jZSA9IDQwO1xuICAgIGxldCBwaXhlbFRvbGVyYW5jZTogbnVtYmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxPZmZzZXRUb3AgPSBvZmZzZXQudG9wO1xuICAgIGNvbnN0IG9yaWdpbmFsT2Zmc2V0TGVmdCA9IG9mZnNldC5sZWZ0O1xuXG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ2Fib3ZlJzpcbiAgICAgIGNhc2UgJ2JlbG93JzpcbiAgICAgICAgLy8gS2VlcCB0aGUgYWZmaXhlZCBlbGVtZW50IHdpdGhpbiB0aGUgb3ZlcmZsb3cgcGFyZW50LlxuICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCBwYXJlbnRPZmZzZXQubGVmdCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LmxlZnQ7XG4gICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aCA+IHBhcmVudE9mZnNldC5yaWdodCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgcGl4ZWxUb2xlcmFuY2UgPSBNYXRoLm1pbihkZWZhdWx0UGl4ZWxUb2xlcmFuY2UsIGJhc2VSZWN0LndpZHRoKTtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFmZml4ZWQgZWxlbWVudCBuZXZlciBkZXRhY2hlcyBmcm9tIHRoZSBiYXNlIGVsZW1lbnQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvZmZzZXQubGVmdCArIHBpeGVsVG9sZXJhbmNlID4gYmFzZVJlY3QucmlnaHQgfHxcbiAgICAgICAgICBvZmZzZXQubGVmdCArIGFmZml4ZWRSZWN0LndpZHRoIC0gcGl4ZWxUb2xlcmFuY2UgPCBiYXNlUmVjdC5sZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gb3JpZ2luYWxPZmZzZXRMZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAvLyBLZWVwIHRoZSBhZmZpeGVkIGVsZW1lbnQgd2l0aGluIHRoZSBvdmVyZmxvdyBwYXJlbnQuXG4gICAgICAgIGlmIChvZmZzZXQudG9wIDwgcGFyZW50T2Zmc2V0LnRvcCkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgPiBwYXJlbnRPZmZzZXQuYm90dG9tKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IHBhcmVudE9mZnNldC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IGhlaWdodCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oZGVmYXVsdFBpeGVsVG9sZXJhbmNlLCBiYXNlUmVjdC5oZWlnaHQpO1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWZmaXhlZCBlbGVtZW50IG5ldmVyIGRldGFjaGVzIGZyb20gdGhlIGJhc2UgZWxlbWVudC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9mZnNldC50b3AgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LmJvdHRvbSB8fFxuICAgICAgICAgIG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLSBwaXhlbFRvbGVyYW5jZSA8IGJhc2VSZWN0LnRvcFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gb3JpZ2luYWxPZmZzZXRUb3A7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmZsb3dQYXJlbnRzW3RoaXMuI292ZXJmbG93UGFyZW50cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gICNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSB0aGlzLiNvdmVyZmxvd1BhcmVudHNbMF07XG5cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnLmF1dG9GaXRDb250ZXh0ID09PSBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50XG4gICAgICA/IHRoaXMuI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KClcbiAgICAgIDogYm9keUVsZW1lbnQ7XG4gIH1cblxuICAjbm90aWZ5UGxhY2VtZW50Q2hhbmdlKHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudCA/PyB1bmRlZmluZWQ7XG4gICAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UubmV4dCh7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNyZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVWaWV3cG9ydExpc3RlbmVycygpO1xuXG4gICAgdGhpcy4jb3ZlcmZsb3dQYXJlbnRzID0gW107XG5cbiAgICB0aGlzLiNjb25maWcgPVxuICAgICAgdGhpcy4jYmFzZUVsZW1lbnQgPVxuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID1cbiAgICAgICAgdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzTmV3T2Zmc2V0KG9mZnNldDogU2t5QWZmaXhPZmZzZXQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy4jY3VycmVudE9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldC50b3AgPT09IG9mZnNldC50b3AgJiZcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQubGVmdCA9PT0gb2Zmc2V0LmxlZnRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAjaXNCYXNlRWxlbWVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLiNiYXNlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VSZWN0ID0gdGhpcy4jYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICByZXR1cm4gaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgdGhpcy4jZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKSxcbiAgICAgIHtcbiAgICAgICAgdG9wOiBiYXNlUmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IGJhc2VSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBiYXNlUmVjdC5yaWdodCxcbiAgICAgICAgYm90dG9tOiBiYXNlUmVjdC5ib3R0b20sXG4gICAgICB9LFxuICAgICAgdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldFxuICAgICk7XG4gIH1cblxuICAjYWRkVmlld3BvcnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvLyBSZXNpemUgYW5kIG9yaWVudGF0aW9uIGNoYW5nZXMuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZmZpeCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jc2Nyb2xsQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2FmZml4KCk7XG4gICAgICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsLm5leHQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIExpc3RlbiBmb3Igc2Nyb2xsIGV2ZW50cyBvbiB0aGUgd2luZG93LCB2aXN1YWwgdmlld3BvcnQsIGFuZCBhbnkgb3ZlcmZsb3cgcGFyZW50cy5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2Jsb2cvdmlzdWFsLXZpZXdwb3J0LWFwaS8jZXZlbnRzLW9ubHktZmlyZS13aGVuLXRoZS12aXN1YWwtdmlld3BvcnQtY2hhbmdlc1xuICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgW3dpbmRvdywgd2luZG93LnZpc3VhbFZpZXdwb3J0LCAuLi50aGlzLiNvdmVyZmxvd1BhcmVudHNdLmZvckVhY2goXG4gICAgICAgIChwYXJlbnRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgcGFyZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc2Nyb2xsQ2hhbmdlTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVZpZXdwb3J0TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBbd2luZG93LCB3aW5kb3cudmlzdWFsVmlld3BvcnQsIC4uLnRoaXMuI292ZXJmbG93UGFyZW50c10uZm9yRWFjaChcbiAgICAgICAgKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBwYXJlbnRFbGVtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgICAgICB0aGlzLiNzY3JvbGxDaGFuZ2VMaXN0ZW5lclxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFPbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSxhQUFhLENBQUM7QUFrQnJCLE1BQU0sb0JBQW9CLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjO0lBQ3JELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLG1CQUFtQixFQUFFLFFBQVE7SUFDN0IsUUFBUSxFQUFFLEtBQUs7SUFDZixTQUFTLEVBQUUsT0FBTztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLFVBQVU7SUFDckI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyx1QkFBQSxJQUFJLG1DQUFpQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sdUJBQUEsSUFBSSxxQ0FBbUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sdUJBQUEsSUFBSSxzQ0FBb0IsQ0FBQztJQUNsQyxDQUFDO0lBMkRELFlBQ0UsY0FBMkIsRUFDM0IsUUFBbUIsRUFDbkIsYUFBNEIsRUFDNUIsSUFBWTs7UUF4Q2QsNkNBQTZCO1FBRTdCLDBDQUFzQztRQUV0Qyw0Q0FBMkM7UUFFM0MsK0NBQWlEO1FBRWpE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YUFBYSxFQUFFLEVBQUU7WUFDaEIsYUFBYSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSx1QkFBQSxJQUFJLHdDQUFzQixDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7SUFHQyx1QkFBQSxJQUFJLHFDQUFtQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBRXZDLHVCQUFBLElBQUksd0JBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLHVCQUFBLElBQUksbUNBQWlCLENBQUMsQ0FBQyxPQUFPLENBQy9ELENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUNoQyxRQUFRLEVBQ1IsdUJBQUEsSUFBSSx3Q0FBc0IsQ0FDM0IsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nWm9uZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lBZmZpeEF1dG9GaXRDb250ZXh0IH0gZnJvbSAnLi9hZmZpeC1hdXRvLWZpdC1jb250ZXh0JztcbmltcG9ydCB7IFNreUFmZml4Q29uZmlnIH0gZnJvbSAnLi9hZmZpeC1jb25maWcnO1xuaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXQgfSBmcm9tICcuL2FmZml4LW9mZnNldCc7XG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldENoYW5nZSB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0LWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lBZmZpeFBsYWNlbWVudCB9IGZyb20gJy4vYWZmaXgtcGxhY2VtZW50JztcbmltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50Q2hhbmdlIH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQtY2hhbmdlJztcbmltcG9ydCB7IEFmZml4UmVjdCB9IGZyb20gJy4vYWZmaXgtcmVjdCc7XG5pbXBvcnQgeyBnZXRJbnZlcnNlUGxhY2VtZW50LCBnZXROZXh0UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC11dGlscyc7XG5pbXBvcnQge1xuICBnZXRFbGVtZW50T2Zmc2V0LFxuICBnZXRPdmVyZmxvd1BhcmVudHMsXG4gIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50LFxuICBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQsXG59IGZyb20gJy4vZG9tLXV0aWxzJztcblxuLyoqXG4gKiBNYWtlIHNwZWNpZmljIHByb3BlcnRpZXMgcmVxdWlyZWQsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0b1xuICogZG8gbnVsbCBjaGVja3MgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cbnR5cGUgQWZmaXhDb25maWdPckRlZmF1bHRzID0gU2t5QWZmaXhDb25maWcgJlxuICBSZXF1aXJlZDxcbiAgICBQaWNrPFxuICAgICAgU2t5QWZmaXhDb25maWcsXG4gICAgICB8ICdhdXRvRml0Q29udGV4dCdcbiAgICAgIHwgJ2VuYWJsZUF1dG9GaXQnXG4gICAgICB8ICdob3Jpem9udGFsQWxpZ25tZW50J1xuICAgICAgfCAnaXNTdGlja3knXG4gICAgICB8ICdwbGFjZW1lbnQnXG4gICAgPlxuICA+O1xuXG5jb25zdCBERUZBVUxUX0FGRklYX0NPTkZJRzogQWZmaXhDb25maWdPckRlZmF1bHRzID0ge1xuICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5PdmVyZmxvd1BhcmVudCxcbiAgZW5hYmxlQXV0b0ZpdDogZmFsc2UsXG4gIGhvcml6b250YWxBbGlnbm1lbnQ6ICdjZW50ZXInLFxuICBpc1N0aWNreTogZmFsc2UsXG4gIHBsYWNlbWVudDogJ2Fib3ZlJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBTa3lBZmZpeGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFmZml4ZWQgZWxlbWVudCdzIG9mZnNldCBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBvZmZzZXRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNvZmZzZXRDaGFuZ2VPYnM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYmFzZSBlbGVtZW50J3MgbmVhcmVzdCBvdmVyZmxvdyBwYXJlbnQgaXMgc2Nyb2xsaW5nLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZFxuICAgKiB0byBwZXJmb3JtIGFuIGFkZGl0aW9uYWwgYWN0aW9uIGR1cmluZyB0aGUgc2Nyb2xsIGV2ZW50IGJ1dCBkb24ndCB3YW50IHRvIGdlbmVyYXRlIGFub3RoZXJcbiAgICogZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXJmbG93U2Nyb2xsKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNvdmVyZmxvd1Njcm9sbE9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwbGFjZW1lbnQgdmFsdWUgY2hhbmdlcy4gQSBgbnVsbGAgdmFsdWUgaW5kaWNhdGVzIHRoYXQgYSBzdWl0YWJsZVxuICAgKiBwbGFjZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGdldCBwbGFjZW1lbnRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnM7XG4gIH1cblxuICBnZXQgI2NvbmZpZygpOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMge1xuICAgIHJldHVybiB0aGlzLiNfY29uZmlnO1xuICB9XG5cbiAgc2V0ICNjb25maWcodmFsdWU6IFNreUFmZml4Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbWVyZ2VkOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSB7XG4gICAgICAuLi5ERUZBVUxUX0FGRklYX0NPTkZJRyxcbiAgICAgIC4uLnZhbHVlLFxuICAgIH07XG5cbiAgICAvLyBNYWtlIHN1cmUgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSB1bmRlZmluZWQuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG1lcmdlZDtcbiAgICBmb3IgKGtleSBpbiBtZXJnZWQpIHtcbiAgICAgIGlmIChtZXJnZWRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIChtZXJnZWQgYXMgYW55KVtrZXldID0gREVGQVVMVF9BRkZJWF9DT05GSUdba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNfY29uZmlnID0gbWVyZ2VkO1xuICB9XG5cbiAgI2FmZml4ZWRFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAjYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50T2Zmc2V0OiBTa3lBZmZpeE9mZnNldCB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudFBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI29mZnNldENoYW5nZTogU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT47XG5cbiAgI29mZnNldENoYW5nZU9iczogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT47XG5cbiAgI292ZXJmbG93UGFyZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICNvdmVyZmxvd1Njcm9sbDogU3ViamVjdDx2b2lkPjtcblxuICAjb3ZlcmZsb3dTY3JvbGxPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI3BsYWNlbWVudENoYW5nZTogU3ViamVjdDxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT47XG5cbiAgI3BsYWNlbWVudENoYW5nZU9iczogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT47XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3Njcm9sbENoYW5nZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3ZpZXdwb3J0TGlzdGVuZXJzOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXI7XG5cbiAgI3pvbmU6IE5nWm9uZTtcblxuICAjX2NvbmZpZzogQWZmaXhDb25maWdPckRlZmF1bHRzID0gREVGQVVMVF9BRkZJWF9DT05GSUc7XG5cbiAgI3Njcm9sbENoYW5nZUxpc3RlbmVyOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy4jc2Nyb2xsQ2hhbmdlLm5leHQoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZmZpeGVkRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICB0aGlzLiNhZmZpeGVkRWxlbWVudCA9IGFmZml4ZWRFbGVtZW50O1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jdmlld3BvcnRSdWxlciA9IHZpZXdwb3J0UnVsZXI7XG4gICAgdGhpcy4jem9uZSA9IHpvbmU7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2UgPSBuZXcgU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT4oKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlID0gbmV3IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+KCk7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2VPYnMgPSB0aGlzLiNvZmZzZXRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGxPYnMgPSB0aGlzLiNvdmVyZmxvd1Njcm9sbC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnMgPSB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWZmaXhlcyBhbiBlbGVtZW50IHRvIGEgYmFzZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gYmFzZUVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudC5cbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgYWZmaXggYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFmZml4VG8oYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc/OiBTa3lBZmZpeENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0KCk7XG5cbiAgICB0aGlzLiNjb25maWcgPSBjb25maWc7XG4gICAgdGhpcy4jYmFzZUVsZW1lbnQgPSBiYXNlRWxlbWVudDtcbiAgICB0aGlzLiNvdmVyZmxvd1BhcmVudHMgPSBnZXRPdmVyZmxvd1BhcmVudHMoYmFzZUVsZW1lbnQpO1xuXG4gICAgdGhpcy4jYWZmaXgoKTtcblxuICAgIGlmICh0aGlzLiNjb25maWcuaXNTdGlja3kpIHtcbiAgICAgIHRoaXMuI2FkZFZpZXdwb3J0TGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpOiBTa3lBZmZpeENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1ydW5zIHRoZSBhZmZpeCBjYWxjdWxhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFmZml4KCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IGN1cnJlbnQgcGxhY2VtZW50IHRvIHByZWZlcnJlZCBwbGFjZW1lbnQuXG4gICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9IHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQ7XG4gICAgdGhpcy4jYWZmaXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgYWZmaXhlci5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0KCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jb2Zmc2V0Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLiNzY3JvbGxDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gICNhZmZpeCgpOiB2b2lkIHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLiNnZXRPZmZzZXQoKTtcblxuICAgIGlmICh0aGlzLiNpc05ld09mZnNldChvZmZzZXQpKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZSh0aGlzLiNhZmZpeGVkRWxlbWVudCwgJ3RvcCcsIGAke29mZnNldC50b3B9cHhgKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuI2FmZml4ZWRFbGVtZW50LCAnbGVmdCcsIGAke29mZnNldC5sZWZ0fXB4YCk7XG5cbiAgICAgIHRoaXMuI29mZnNldENoYW5nZS5uZXh0KHsgb2Zmc2V0IH0pO1xuICAgIH1cbiAgfVxuXG4gICNnZXRPZmZzZXQoKTogU2t5QWZmaXhPZmZzZXQge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG5cbiAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDQ7XG4gICAgbGV0IGF0dGVtcHRzID0gMDtcblxuICAgIGxldCBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+O1xuICAgIGxldCBwbGFjZW1lbnQgPSB0aGlzLiNjb25maWcucGxhY2VtZW50O1xuXG4gICAgY29uc3QgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0ID0gdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldCB8fCB7XG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB0b3A6IDAsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLiNjb25maWcucG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgIGNvbnN0IHsgdG9wLCBsZWZ0IH0gPSB0aGlzLiN2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC50b3AgPSAoYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LnRvcCB8fCAwKSArIHRvcDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5sZWZ0ID0gKGF1dG9GaXRPdmVyZmxvd09mZnNldC5sZWZ0IHx8IDApICsgbGVmdDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5ib3R0b20gPSAoYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LmJvdHRvbSB8fCAwKSArIHRvcDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5yaWdodCA9IChhdXRvRml0T3ZlcmZsb3dPZmZzZXQucmlnaHQgfHwgMCkgKyBsZWZ0O1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIG9mZnNldCA9IHRoaXMuI2dldFByZWZlcnJlZE9mZnNldChwbGFjZW1lbnQpO1xuICAgICAgaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSA9IGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG9mZnNldCxcbiAgICAgICAgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgICApO1xuXG4gICAgICBpZiAoIXRoaXMuI2NvbmZpZy5lbmFibGVBdXRvRml0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUpIHtcbiAgICAgICAgcGxhY2VtZW50ID1cbiAgICAgICAgICBhdHRlbXB0cyAlIDIgPT09IDBcbiAgICAgICAgICAgID8gZ2V0SW52ZXJzZVBsYWNlbWVudChwbGFjZW1lbnQpXG4gICAgICAgICAgICA6IGdldE5leHRQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgIH1cblxuICAgICAgYXR0ZW1wdHMrKztcbiAgICB9IHdoaWxlICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSAmJiBhdHRlbXB0cyA8IG1heEF0dGVtcHRzKTtcblxuICAgIGlmIChpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlKSB7XG4gICAgICBpZiAodGhpcy4jaXNCYXNlRWxlbWVudFZpc2libGUoKSkge1xuICAgICAgICB0aGlzLiNub3RpZnlQbGFjZW1lbnRDaGFuZ2UocGxhY2VtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQpIHtcbiAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICB9XG5cbiAgICAvLyBObyBzdWl0YWJsZSBwbGFjZW1lbnQgd2FzIGZvdW5kLCBzbyByZXZlcnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICByZXR1cm4gdGhpcy4jZ2V0UHJlZmVycmVkT2Zmc2V0KHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQpO1xuICB9XG5cbiAgI2dldFJlY3QoYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogQWZmaXhSZWN0IHtcbiAgICBjb25zdCBiYXNlRG9tUmVjdCA9IGJhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgYmFzZVJlY3Q6IEFmZml4UmVjdCA9IHtcbiAgICAgIHRvcDogYmFzZURvbVJlY3QudG9wLFxuICAgICAgYm90dG9tOiBiYXNlRG9tUmVjdC5ib3R0b20sXG4gICAgICBsZWZ0OiBiYXNlRG9tUmVjdC5sZWZ0LFxuICAgICAgcmlnaHQ6IGJhc2VEb21SZWN0LnJpZ2h0LFxuICAgICAgd2lkdGg6IGJhc2VEb21SZWN0LndpZHRoLFxuICAgICAgaGVpZ2h0OiBiYXNlRG9tUmVjdC5oZWlnaHQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLiNjb25maWcucG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSB0aGlzLiN2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgIGJhc2VSZWN0LnRvcCArPSB0b3A7XG4gICAgICBiYXNlUmVjdC5sZWZ0ICs9IGxlZnQ7XG4gICAgICBiYXNlUmVjdC5ib3R0b20gKz0gdG9wO1xuICAgICAgYmFzZVJlY3QucmlnaHQgKz0gbGVmdDtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZVJlY3Q7XG4gIH1cblxuICAjZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQpOiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4ge1xuICAgIGlmICghdGhpcy4jYmFzZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gdGhpcy4jZ2V0UmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNnZXRSZWN0KHRoaXMuI2Jhc2VFbGVtZW50KTtcblxuICAgIGNvbnN0IGhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLiNjb25maWcuaG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICBjb25zdCB2ZXJ0aWNhbEFsaWdubWVudCA9IHRoaXMuI2NvbmZpZy52ZXJ0aWNhbEFsaWdubWVudDtcbiAgICBjb25zdCBlbmFibGVBdXRvRml0ID0gdGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQ7XG5cbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScgfHwgcGxhY2VtZW50ID09PSAnYmVsb3cnKSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnYWJvdmUnKSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodDtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LmJvdHRvbTtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChob3Jpem9udGFsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5sZWZ0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgKyBiYXNlUmVjdC53aWR0aCAvIDIgLSBhZmZpeGVkUmVjdC53aWR0aCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnbGVmdCcpIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgLSBhZmZpeGVkUmVjdC53aWR0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCArIGJhc2VSZWN0LmhlaWdodCAvIDIgLSBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+ID0geyB0b3AsIGxlZnQsIGJvdHRvbTogMCwgcmlnaHQ6IDAgfTtcblxuICAgIGlmIChlbmFibGVBdXRvRml0KSB7XG4gICAgICBjb25zdCBhZGp1c3RtZW50cyA9IHRoaXMuI2FkanVzdE9mZnNldFRvT3ZlcmZsb3dQYXJlbnQoXG4gICAgICAgIHsgdG9wLCBsZWZ0IH0sXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgdGhpcy4jYmFzZUVsZW1lbnRcbiAgICAgICk7XG4gICAgICBvZmZzZXQudG9wID0gYWRqdXN0bWVudHMudG9wO1xuICAgICAgb2Zmc2V0LmxlZnQgPSBhZGp1c3RtZW50cy5sZWZ0O1xuICAgIH1cblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNsaWdodGx5IGFkanVzdCB0aGUgb2Zmc2V0IHRvIGZpdCB3aXRoaW4gdGhlIHNjcm9sbCBwYXJlbnQncyBib3VuZGFyaWVzIGlmXG4gICAqIHRoZSBhZmZpeGVkIGVsZW1lbnQgd291bGQgb3RoZXJ3aXNlIGJlIGNsaXBwZWQuXG4gICAqL1xuICAjYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICBvZmZzZXQ6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9LFxuICAgIHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQsXG4gICAgYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICk6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpO1xuICAgIGNvbnN0IHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQoXG4gICAgICBwYXJlbnQsXG4gICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gdGhpcy4jZ2V0UmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNnZXRSZWN0KGJhc2VFbGVtZW50KTtcblxuICAgIC8vIEEgcGl4ZWwgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBsZWV3YXkgYmV0d2VlbiB0aGUgZWRnZSBvZiB0aGUgb3ZlcmZsb3cgcGFyZW50IGFuZCB0aGUgZWRnZVxuICAgIC8vIG9mIHRoZSBiYXNlIGVsZW1lbnQgYmVmb3JlIGl0IGRpc2FwcGVhcnMgZnJvbSB2aWV3LlxuICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJhc2UgZWxlbWVudCBpcyBsZXNzIHRoYW4gdGhpcyBwaXhlbCB2YWx1ZSwgdGhlIGF1dG8tZml0XG4gICAgLy8gZnVuY3Rpb25hbGl0eSBhdHRlbXB0cyB0byBmaW5kIGFub3RoZXIgcGxhY2VtZW50LlxuICAgIGNvbnN0IGRlZmF1bHRQaXhlbFRvbGVyYW5jZSA9IDQwO1xuICAgIGxldCBwaXhlbFRvbGVyYW5jZTogbnVtYmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxPZmZzZXRUb3AgPSBvZmZzZXQudG9wO1xuICAgIGNvbnN0IG9yaWdpbmFsT2Zmc2V0TGVmdCA9IG9mZnNldC5sZWZ0O1xuXG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ2Fib3ZlJzpcbiAgICAgIGNhc2UgJ2JlbG93JzpcbiAgICAgICAgLy8gS2VlcCB0aGUgYWZmaXhlZCBlbGVtZW50IHdpdGhpbiB0aGUgb3ZlcmZsb3cgcGFyZW50LlxuICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCBwYXJlbnRPZmZzZXQubGVmdCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LmxlZnQ7XG4gICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aCA+IHBhcmVudE9mZnNldC5yaWdodCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgcGl4ZWxUb2xlcmFuY2UgPSBNYXRoLm1pbihkZWZhdWx0UGl4ZWxUb2xlcmFuY2UsIGJhc2VSZWN0LndpZHRoKTtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFmZml4ZWQgZWxlbWVudCBuZXZlciBkZXRhY2hlcyBmcm9tIHRoZSBiYXNlIGVsZW1lbnQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvZmZzZXQubGVmdCArIHBpeGVsVG9sZXJhbmNlID4gYmFzZVJlY3QucmlnaHQgfHxcbiAgICAgICAgICBvZmZzZXQubGVmdCArIGFmZml4ZWRSZWN0LndpZHRoIC0gcGl4ZWxUb2xlcmFuY2UgPCBiYXNlUmVjdC5sZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gb3JpZ2luYWxPZmZzZXRMZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAvLyBLZWVwIHRoZSBhZmZpeGVkIGVsZW1lbnQgd2l0aGluIHRoZSBvdmVyZmxvdyBwYXJlbnQuXG4gICAgICAgIGlmIChvZmZzZXQudG9wIDwgcGFyZW50T2Zmc2V0LnRvcCkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgPiBwYXJlbnRPZmZzZXQuYm90dG9tKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IHBhcmVudE9mZnNldC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IGhlaWdodCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oZGVmYXVsdFBpeGVsVG9sZXJhbmNlLCBiYXNlUmVjdC5oZWlnaHQpO1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWZmaXhlZCBlbGVtZW50IG5ldmVyIGRldGFjaGVzIGZyb20gdGhlIGJhc2UgZWxlbWVudC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9mZnNldC50b3AgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LmJvdHRvbSB8fFxuICAgICAgICAgIG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLSBwaXhlbFRvbGVyYW5jZSA8IGJhc2VSZWN0LnRvcFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gb3JpZ2luYWxPZmZzZXRUb3A7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmZsb3dQYXJlbnRzWzBdO1xuICB9XG5cbiAgI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBib2R5RWxlbWVudCA9IHRoaXMuI292ZXJmbG93UGFyZW50c1t0aGlzLiNvdmVyZmxvd1BhcmVudHMubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnLmF1dG9GaXRDb250ZXh0ID09PSBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50XG4gICAgICA/IHRoaXMuI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KClcbiAgICAgIDogYm9keUVsZW1lbnQ7XG4gIH1cblxuICAjbm90aWZ5UGxhY2VtZW50Q2hhbmdlKHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudCA/PyB1bmRlZmluZWQ7XG4gICAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UubmV4dCh7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNyZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVWaWV3cG9ydExpc3RlbmVycygpO1xuXG4gICAgdGhpcy4jb3ZlcmZsb3dQYXJlbnRzID0gW107XG5cbiAgICB0aGlzLiNjb25maWcgPVxuICAgICAgdGhpcy4jYmFzZUVsZW1lbnQgPVxuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID1cbiAgICAgICAgdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzTmV3T2Zmc2V0KG9mZnNldDogU2t5QWZmaXhPZmZzZXQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy4jY3VycmVudE9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldC50b3AgPT09IG9mZnNldC50b3AgJiZcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQubGVmdCA9PT0gb2Zmc2V0LmxlZnRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAjaXNCYXNlRWxlbWVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLiNiYXNlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VSZWN0ID0gdGhpcy4jYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICByZXR1cm4gaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgdGhpcy4jZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKSxcbiAgICAgIHtcbiAgICAgICAgdG9wOiBiYXNlUmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IGJhc2VSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBiYXNlUmVjdC5yaWdodCxcbiAgICAgICAgYm90dG9tOiBiYXNlUmVjdC5ib3R0b20sXG4gICAgICB9LFxuICAgICAgdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldFxuICAgICk7XG4gIH1cblxuICAjYWRkVmlld3BvcnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvLyBSZXNpemUgYW5kIG9yaWVudGF0aW9uIGNoYW5nZXMuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZmZpeCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jc2Nyb2xsQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2FmZml4KCk7XG4gICAgICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsLm5leHQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIExpc3RlbiBmb3Igc2Nyb2xsIGV2ZW50cyBvbiB0aGUgd2luZG93LCB2aXN1YWwgdmlld3BvcnQsIGFuZCBhbnkgb3ZlcmZsb3cgcGFyZW50cy5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2Jsb2cvdmlzdWFsLXZpZXdwb3J0LWFwaS8jZXZlbnRzLW9ubHktZmlyZS13aGVuLXRoZS12aXN1YWwtdmlld3BvcnQtY2hhbmdlc1xuICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgW3dpbmRvdywgd2luZG93LnZpc3VhbFZpZXdwb3J0LCAuLi50aGlzLiNvdmVyZmxvd1BhcmVudHNdLmZvckVhY2goXG4gICAgICAgIChwYXJlbnRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgcGFyZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc2Nyb2xsQ2hhbmdlTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVZpZXdwb3J0TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBbd2luZG93LCB3aW5kb3cudmlzdWFsVmlld3BvcnQsIC4uLnRoaXMuI292ZXJmbG93UGFyZW50c10uZm9yRWFjaChcbiAgICAgICAgKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBwYXJlbnRFbGVtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgICAgICB0aGlzLiNzY3JvbGxDaGFuZ2VMaXN0ZW5lclxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -38,7 +38,7 @@ export function getElementOffset(element, bufferOffset) {
38
38
  }
39
39
  export function getOverflowParents(child) {
40
40
  const bodyElement = window.document.body;
41
- const results = [bodyElement];
41
+ const results = [];
42
42
  let parentElement = child?.parentNode;
43
43
  while (parentElement !== undefined &&
44
44
  parentElement !== bodyElement &&
@@ -53,6 +53,7 @@ export function getOverflowParents(child) {
53
53
  }
54
54
  parentElement = parentElement.parentNode;
55
55
  }
56
+ results.push(bodyElement);
56
57
  return results;
57
58
  }
58
59
  /**
@@ -74,4 +75,4 @@ export function isOffsetPartiallyVisibleWithinParent(parent, offset, bufferOffse
74
75
  parentOffset.bottom <= offset.top ||
75
76
  parentOffset.left >= offset.right);
76
77
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2RvbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixPQUFvQixFQUNwQixZQUE2QjtJQUU3QixNQUFNLGtCQUFrQixHQUFHLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakQsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUUvQyxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLE1BQWMsQ0FBQztJQUVuQixJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzdCLElBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztLQUNoRDtTQUFNO1FBQ0wsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkQsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDdkIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDckIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7S0FDNUI7SUFFRCxNQUFNLElBQUksa0JBQWtCLENBQUM7SUFDN0IsSUFBSSxJQUFJLGdCQUFnQixDQUFDO0lBQ3pCLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztJQUMzQixHQUFHLElBQUksZUFBZSxDQUFDO0lBRXZCLE9BQU87UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLEtBQUs7UUFDTCxHQUFHO0tBQ0osQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBa0I7SUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU5QixJQUFJLGFBQWEsR0FBRyxLQUFLLEVBQUUsVUFBVSxDQUFDO0lBRXRDLE9BQ0UsYUFBYSxLQUFLLFNBQVM7UUFDM0IsYUFBYSxLQUFLLFdBQVc7UUFDN0IsYUFBYSxZQUFZLFdBQVcsRUFDcEM7UUFDQSxNQUFNLFNBQVMsR0FBRyxNQUFNO2FBQ3JCLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUM7YUFDMUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNCLElBQ0UsU0FBUyxLQUFLLE1BQU07WUFDcEIsU0FBUyxLQUFLLFFBQVE7WUFDdEIsU0FBUyxLQUFLLFFBQVEsRUFDdEI7WUFDQSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsYUFBYSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7S0FDMUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsTUFBbUIsRUFDbkIsTUFBZ0MsRUFDaEMsWUFBNkI7SUFFN0IsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRTVELE9BQU8sQ0FBQyxDQUNOLFlBQVksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUc7UUFDN0IsWUFBWSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSztRQUNqQyxZQUFZLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNO1FBQ25DLFlBQVksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDaEMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsb0NBQW9DLENBQ2xELE1BQW1CLEVBQ25CLE1BQWdDLEVBQ2hDLFlBQTZCO0lBRTdCLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUU1RCxPQUFPLENBQUMsQ0FDTixZQUFZLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNO1FBQ2pDLFlBQVksQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLElBQUk7UUFDakMsWUFBWSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsR0FBRztRQUNqQyxZQUFZLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQ2xDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXQgfSBmcm9tICcuL2FmZml4LW9mZnNldCc7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb2Zmc2V0IHZhbHVlcyBvZiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgSFRNTCBlbGVtZW50LlxuICogQHBhcmFtIGJ1ZmZlck9mZnNldCBBbiBvcHRpb25hbCBvZmZzZXQgdG8gYWRkL3N1YnRyYWN0IHRvIHRoZSBlbGVtZW50J3MgYWN0dWFsIG9mZnNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRPZmZzZXQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldFxuKTogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+IHtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0Qm90dG9tID0gYnVmZmVyT2Zmc2V0Py5ib3R0b20gfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0TGVmdCA9IGJ1ZmZlck9mZnNldD8ubGVmdCB8fCAwO1xuICBjb25zdCBidWZmZXJPZmZzZXRSaWdodCA9IGJ1ZmZlck9mZnNldD8ucmlnaHQgfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0VG9wID0gYnVmZmVyT2Zmc2V0Py50b3AgfHwgMDtcblxuICBsZXQgdG9wOiBudW1iZXI7XG4gIGxldCBsZWZ0OiBudW1iZXI7XG4gIGxldCByaWdodDogbnVtYmVyO1xuICBsZXQgYm90dG9tOiBudW1iZXI7XG5cbiAgaWYgKGVsZW1lbnQgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICBsZWZ0ID0gMDtcbiAgICB0b3AgPSAwO1xuICAgIHJpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIGJvdHRvbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGVmdCA9IGNsaWVudFJlY3QubGVmdDtcbiAgICB0b3AgPSBjbGllbnRSZWN0LnRvcDtcbiAgICByaWdodCA9IGNsaWVudFJlY3QucmlnaHQ7XG4gICAgYm90dG9tID0gY2xpZW50UmVjdC5ib3R0b207XG4gIH1cblxuICBib3R0b20gLT0gYnVmZmVyT2Zmc2V0Qm90dG9tO1xuICBsZWZ0ICs9IGJ1ZmZlck9mZnNldExlZnQ7XG4gIHJpZ2h0IC09IGJ1ZmZlck9mZnNldFJpZ2h0O1xuICB0b3AgKz0gYnVmZmVyT2Zmc2V0VG9wO1xuXG4gIHJldHVybiB7XG4gICAgYm90dG9tLFxuICAgIGxlZnQsXG4gICAgcmlnaHQsXG4gICAgdG9wLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3ZlcmZsb3dQYXJlbnRzKGNoaWxkOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50W10ge1xuICBjb25zdCBib2R5RWxlbWVudCA9IHdpbmRvdy5kb2N1bWVudC5ib2R5O1xuICBjb25zdCByZXN1bHRzID0gW2JvZHlFbGVtZW50XTtcblxuICBsZXQgcGFyZW50RWxlbWVudCA9IGNoaWxkPy5wYXJlbnROb2RlO1xuXG4gIHdoaWxlIChcbiAgICBwYXJlbnRFbGVtZW50ICE9PSB1bmRlZmluZWQgJiZcbiAgICBwYXJlbnRFbGVtZW50ICE9PSBib2R5RWxlbWVudCAmJlxuICAgIHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudFxuICApIHtcbiAgICBjb25zdCBvdmVyZmxvd1kgPSB3aW5kb3dcbiAgICAgIC5nZXRDb21wdXRlZFN0eWxlKHBhcmVudEVsZW1lbnQsIHVuZGVmaW5lZClcbiAgICAgIC5vdmVyZmxvd1kudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChcbiAgICAgIG92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8XG4gICAgICBvdmVyZmxvd1kgPT09ICdoaWRkZW4nIHx8XG4gICAgICBvdmVyZmxvd1kgPT09ICdzY3JvbGwnXG4gICAgKSB7XG4gICAgICByZXN1bHRzLnB1c2gocGFyZW50RWxlbWVudCk7XG4gICAgfVxuXG4gICAgcGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQucGFyZW50Tm9kZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIENvbmZpcm1zIG9mZnNldCBpcyBmdWxseSB2aXNpYmxlIHdpdGhpbiBhIHBhcmVudCBlbGVtZW50LlxuICogQHBhcmFtIHBhcmVudFxuICogQHBhcmFtIG9mZnNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gIHBhcmVudDogSFRNTEVsZW1lbnQsXG4gIG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQocGFyZW50LCBidWZmZXJPZmZzZXQpO1xuXG4gIHJldHVybiAhKFxuICAgIHBhcmVudE9mZnNldC50b3AgPiBvZmZzZXQudG9wIHx8XG4gICAgcGFyZW50T2Zmc2V0LnJpZ2h0IDwgb2Zmc2V0LnJpZ2h0IHx8XG4gICAgcGFyZW50T2Zmc2V0LmJvdHRvbSA8IG9mZnNldC5ib3R0b20gfHxcbiAgICBwYXJlbnRPZmZzZXQubGVmdCA+IG9mZnNldC5sZWZ0XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gIHBhcmVudDogSFRNTEVsZW1lbnQsXG4gIG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQocGFyZW50LCBidWZmZXJPZmZzZXQpO1xuXG4gIHJldHVybiAhKFxuICAgIHBhcmVudE9mZnNldC50b3AgPj0gb2Zmc2V0LmJvdHRvbSB8fFxuICAgIHBhcmVudE9mZnNldC5yaWdodCA8PSBvZmZzZXQubGVmdCB8fFxuICAgIHBhcmVudE9mZnNldC5ib3R0b20gPD0gb2Zmc2V0LnRvcCB8fFxuICAgIHBhcmVudE9mZnNldC5sZWZ0ID49IG9mZnNldC5yaWdodFxuICApO1xufVxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2RvbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixPQUFvQixFQUNwQixZQUE2QjtJQUU3QixNQUFNLGtCQUFrQixHQUFHLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakQsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUUvQyxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLE1BQWMsQ0FBQztJQUVuQixJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzdCLElBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztLQUNoRDtTQUFNO1FBQ0wsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkQsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDdkIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDckIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7S0FDNUI7SUFFRCxNQUFNLElBQUksa0JBQWtCLENBQUM7SUFDN0IsSUFBSSxJQUFJLGdCQUFnQixDQUFDO0lBQ3pCLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztJQUMzQixHQUFHLElBQUksZUFBZSxDQUFDO0lBRXZCLE9BQU87UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLEtBQUs7UUFDTCxHQUFHO0tBQ0osQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBa0I7SUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBRW5CLElBQUksYUFBYSxHQUFHLEtBQUssRUFBRSxVQUFVLENBQUM7SUFFdEMsT0FDRSxhQUFhLEtBQUssU0FBUztRQUMzQixhQUFhLEtBQUssV0FBVztRQUM3QixhQUFhLFlBQVksV0FBVyxFQUNwQztRQUNBLE1BQU0sU0FBUyxHQUFHLE1BQU07YUFDckIsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQzthQUMxQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0IsSUFDRSxTQUFTLEtBQUssTUFBTTtZQUNwQixTQUFTLEtBQUssUUFBUTtZQUN0QixTQUFTLEtBQUssUUFBUSxFQUN0QjtZQUNBLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDN0I7UUFFRCxhQUFhLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztLQUMxQztJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUIsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLE1BQW1CLEVBQ25CLE1BQWdDLEVBQ2hDLFlBQTZCO0lBRTdCLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUU1RCxPQUFPLENBQUMsQ0FDTixZQUFZLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHO1FBQzdCLFlBQVksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUs7UUFDakMsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTTtRQUNuQyxZQUFZLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ2hDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG9DQUFvQyxDQUNsRCxNQUFtQixFQUNuQixNQUFnQyxFQUNoQyxZQUE2QjtJQUU3QixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFNUQsT0FBTyxDQUFDLENBQ04sWUFBWSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTTtRQUNqQyxZQUFZLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJO1FBQ2pDLFlBQVksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEdBQUc7UUFDakMsWUFBWSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUNsQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreUFmZml4T2Zmc2V0IH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9mZnNldCB2YWx1ZXMgb2YgYSBnaXZlbiBlbGVtZW50LlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIEhUTUwgZWxlbWVudC5cbiAqIEBwYXJhbSBidWZmZXJPZmZzZXQgQW4gb3B0aW9uYWwgb2Zmc2V0IHRvIGFkZC9zdWJ0cmFjdCB0byB0aGUgZWxlbWVudCdzIGFjdHVhbCBvZmZzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50T2Zmc2V0KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgYnVmZmVyT2Zmc2V0PzogU2t5QWZmaXhPZmZzZXRcbik6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PiB7XG4gIGNvbnN0IGJ1ZmZlck9mZnNldEJvdHRvbSA9IGJ1ZmZlck9mZnNldD8uYm90dG9tIHx8IDA7XG4gIGNvbnN0IGJ1ZmZlck9mZnNldExlZnQgPSBidWZmZXJPZmZzZXQ/LmxlZnQgfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0UmlnaHQgPSBidWZmZXJPZmZzZXQ/LnJpZ2h0IHx8IDA7XG4gIGNvbnN0IGJ1ZmZlck9mZnNldFRvcCA9IGJ1ZmZlck9mZnNldD8udG9wIHx8IDA7XG5cbiAgbGV0IHRvcDogbnVtYmVyO1xuICBsZXQgbGVmdDogbnVtYmVyO1xuICBsZXQgcmlnaHQ6IG51bWJlcjtcbiAgbGV0IGJvdHRvbTogbnVtYmVyO1xuXG4gIGlmIChlbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgbGVmdCA9IDA7XG4gICAgdG9wID0gMDtcbiAgICByaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBib3R0b20gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XG4gICAgdG9wID0gY2xpZW50UmVjdC50b3A7XG4gICAgcmlnaHQgPSBjbGllbnRSZWN0LnJpZ2h0O1xuICAgIGJvdHRvbSA9IGNsaWVudFJlY3QuYm90dG9tO1xuICB9XG5cbiAgYm90dG9tIC09IGJ1ZmZlck9mZnNldEJvdHRvbTtcbiAgbGVmdCArPSBidWZmZXJPZmZzZXRMZWZ0O1xuICByaWdodCAtPSBidWZmZXJPZmZzZXRSaWdodDtcbiAgdG9wICs9IGJ1ZmZlck9mZnNldFRvcDtcblxuICByZXR1cm4ge1xuICAgIGJvdHRvbSxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0LFxuICAgIHRvcCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE92ZXJmbG93UGFyZW50cyhjaGlsZDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgY29uc3QgYm9keUVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQuYm9keTtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gIGxldCBwYXJlbnRFbGVtZW50ID0gY2hpbGQ/LnBhcmVudE5vZGU7XG5cbiAgd2hpbGUgKFxuICAgIHBhcmVudEVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIHBhcmVudEVsZW1lbnQgIT09IGJvZHlFbGVtZW50ICYmXG4gICAgcGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50XG4gICkge1xuICAgIGNvbnN0IG92ZXJmbG93WSA9IHdpbmRvd1xuICAgICAgLmdldENvbXB1dGVkU3R5bGUocGFyZW50RWxlbWVudCwgdW5kZWZpbmVkKVxuICAgICAgLm92ZXJmbG93WS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKFxuICAgICAgb3ZlcmZsb3dZID09PSAnYXV0bycgfHxcbiAgICAgIG92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHxcbiAgICAgIG92ZXJmbG93WSA9PT0gJ3Njcm9sbCdcbiAgICApIHtcbiAgICAgIHJlc3VsdHMucHVzaChwYXJlbnRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwYXJlbnRFbGVtZW50ID0gcGFyZW50RWxlbWVudC5wYXJlbnROb2RlO1xuICB9XG5cbiAgcmVzdWx0cy5wdXNoKGJvZHlFbGVtZW50KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBDb25maXJtcyBvZmZzZXQgaXMgZnVsbHkgdmlzaWJsZSB3aXRoaW4gYSBwYXJlbnQgZWxlbWVudC5cbiAqIEBwYXJhbSBwYXJlbnRcbiAqIEBwYXJhbSBvZmZzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICBwYXJlbnQ6IEhUTUxFbGVtZW50LFxuICBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PixcbiAgYnVmZmVyT2Zmc2V0PzogU2t5QWZmaXhPZmZzZXRcbik6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnRPZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KHBhcmVudCwgYnVmZmVyT2Zmc2V0KTtcblxuICByZXR1cm4gIShcbiAgICBwYXJlbnRPZmZzZXQudG9wID4gb2Zmc2V0LnRvcCB8fFxuICAgIHBhcmVudE9mZnNldC5yaWdodCA8IG9mZnNldC5yaWdodCB8fFxuICAgIHBhcmVudE9mZnNldC5ib3R0b20gPCBvZmZzZXQuYm90dG9tIHx8XG4gICAgcGFyZW50T2Zmc2V0LmxlZnQgPiBvZmZzZXQubGVmdFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICBwYXJlbnQ6IEhUTUxFbGVtZW50LFxuICBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PixcbiAgYnVmZmVyT2Zmc2V0PzogU2t5QWZmaXhPZmZzZXRcbik6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnRPZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KHBhcmVudCwgYnVmZmVyT2Zmc2V0KTtcblxuICByZXR1cm4gIShcbiAgICBwYXJlbnRPZmZzZXQudG9wID49IG9mZnNldC5ib3R0b20gfHxcbiAgICBwYXJlbnRPZmZzZXQucmlnaHQgPD0gb2Zmc2V0LmxlZnQgfHxcbiAgICBwYXJlbnRPZmZzZXQuYm90dG9tIDw9IG9mZnNldC50b3AgfHxcbiAgICBwYXJlbnRPZmZzZXQubGVmdCA+PSBvZmZzZXQucmlnaHRcbiAgKTtcbn1cbiJdfQ==
@@ -40,6 +40,9 @@ export class SkyNumericPipe {
40
40
  * Formats a number based on the provided options.
41
41
  */
42
42
  transform(value, config) {
43
+ if (value === undefined || value === null || isNaN(value)) {
44
+ return '';
45
+ }
43
46
  const newCacheKey = (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +
44
47
  `${value}_${config?.locale || __classPrivateFieldGet(this, _SkyNumericPipe_providerLocale, "f")}`;
45
48
  /* If the value and locale are the same as the last transform then return the previous value
@@ -81,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
81
84
  pure: false,
82
85
  }]
83
86
  }], ctorParameters: function () { return [{ type: i1.SkyAppLocaleProvider }, { type: i2.SkyNumericService }, { type: i0.ChangeDetectorRef }]; } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUdMLElBQUksR0FFTCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFxQixNQUFNLG1CQUFtQixDQUFDOzs7O0FBR3RFOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLGNBQWM7SUFhekIsWUFDRSxjQUFvQyxFQUNwQyxVQUE2QixFQUM3QixjQUFpQztRQWZuQywyQ0FBOEI7UUFFOUIsaURBQW1DO1FBRW5DLGlEQUFvQztRQUVwQyx3Q0FBaUIsSUFBSSxPQUFPLEVBQVEsRUFBQztRQUVyQyw2Q0FBK0I7UUFFL0IsaURBQW9DO1FBT2xDLHVCQUFBLElBQUksOEJBQWUsVUFBVSxNQUFBLENBQUM7UUFDOUIsdUJBQUEsSUFBSSxrQ0FBbUIsY0FBYyxNQUFBLENBQUM7UUFFdEMsY0FBYzthQUNYLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQUEsSUFBSSxxQ0FBZSxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEIsdUJBQUEsSUFBSSxrQ0FBbUIsVUFBVSxDQUFDLE1BQU0sTUFBQSxDQUFDO1lBQ3pDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsdUJBQUEsSUFBSSxzQ0FBZ0IsQ0FBQztZQUNoRCx1QkFBQSxJQUFJLHNDQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsdUJBQUEsSUFBSSxxQ0FBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLHVCQUFBLElBQUkscUNBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsS0FBYSxFQUFFLE1BQTBCO1FBQ3hELE1BQU0sV0FBVyxHQUNmLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxHQUFHLEtBQUssSUFBSSxNQUFNLEVBQUUsTUFBTSxJQUFJLHVCQUFBLElBQUksc0NBQWdCLEVBQUUsQ0FBQztRQUV2RDttQ0FDMkI7UUFDM0IsSUFBSSx1QkFBQSxJQUFJLHNDQUFnQixJQUFJLHVCQUFBLElBQUksZ0NBQVUsS0FBSyxXQUFXLEVBQUU7WUFDMUQsT0FBTyx1QkFBQSxJQUFJLHNDQUFnQixDQUFDO1NBQzdCO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUVyQyw2RUFBNkU7UUFDN0UsdUZBQXVGO1FBQ3ZGLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3RFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsZ0ZBQWdGO1FBQ2hGLElBQ0UsTUFBTTtZQUNOLE1BQU0sQ0FBQyxTQUFTO1lBQ2hCLE1BQU0sQ0FBQyxNQUFNO1lBQ2IsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUNoQztZQUNBLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUZBQWlGLENBQ2xGLENBQUM7WUFFRiwrRkFBK0Y7U0FDaEc7YUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN2RCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDbkM7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQiwrQ0FBK0M7UUFDL0MsdUJBQUEsSUFBSSw0QkFBYSxXQUFXLE1BQUEsQ0FBQztRQUU3Qix1QkFBQSxJQUFJLGtDQUFtQix1QkFBQSxJQUFJLGtDQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBQSxDQUFDO1FBQ3JFLE9BQU8sdUJBQUEsSUFBSSxzQ0FBZ0IsQ0FBQztJQUM5QixDQUFDOzs7MkdBakZVLGNBQWM7eUdBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkRlc3Ryb3ksXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlUHJvdmlkZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnVtZXJpY09wdGlvbnMsIFNreU51bWVyaWNPcHRpb25zIH0gZnJvbSAnLi9udW1lcmljLm9wdGlvbnMnO1xuaW1wb3J0IHsgU2t5TnVtZXJpY1NlcnZpY2UgfSBmcm9tICcuL251bWVyaWMuc2VydmljZSc7XG5cbi8qKlxuICogU2hvcnRlbnMgbnVtYmVycyB0byByb3VuZGVkIG51bWJlcnMgYW5kIGFiYnJldmlhdGlvbiBjaGFyYWN0ZXJzIHN1Y2ggYXMgSyBmb3IgdGhvdXNhbmRzLFxuICogTSBmb3IgbWlsbGlvbnMsIEIgZm9yIGJpbGxpb25zLCBhbmQgVCBmb3IgdHJpbGxpb25zLiBUaGUgcGlwZSBhbHNvIGZvcm1hdHMgZm9yIGN1cnJlbmN5LlxuICogQmUgc3VyZSB5b3UgaGF2ZSBhIHNwYWNlIGFmdGVyIHRoZSB0d28gY3VybHkgYnJhY2tldHMgb3BlbmluZyB0aGUgcGlwZSBhbmRcbiAqIGEgc3BhY2UgYmVmb3JlIHRoZSB0d28gY3VybHkgYnJhY2tldHMgY2xvc2luZyB0aGUgcGlwZSBvciBpdCB3aWxsIG5vdCB3b3JrLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICdza3lOdW1lcmljJyxcbiAgcHVyZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreU51bWVyaWNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgI2NhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAjZm9ybWF0dGVkVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI251bWVyaWNTdmM6IFNreU51bWVyaWNTZXJ2aWNlO1xuXG4gICNwcm92aWRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICBudW1lcmljU3ZjOiBTa3lOdW1lcmljU2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy4jbnVtZXJpY1N2YyA9IG51bWVyaWNTdmM7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcblxuICAgIGxvY2FsZVByb3ZpZGVyXG4gICAgICAuZ2V0TG9jYWxlSW5mbygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChsb2NhbGVJbmZvKSA9PiB7XG4gICAgICAgIHRoaXMuI3Byb3ZpZGVyTG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICAgIG51bWVyaWNTdmMuY3VycmVudExvY2FsZSA9IHRoaXMuI3Byb3ZpZGVyTG9jYWxlO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgbnVtYmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCBjb25maWc/OiBTa3lOdW1lcmljT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgbmV3Q2FjaGVLZXkgPVxuICAgICAgKGNvbmZpZyA/IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgT2JqZWN0LmtleXMoY29uZmlnKS5zb3J0KCkpIDogJycpICtcbiAgICAgIGAke3ZhbHVlfV8ke2NvbmZpZz8ubG9jYWxlIHx8IHRoaXMuI3Byb3ZpZGVyTG9jYWxlfWA7XG5cbiAgICAvKiBJZiB0aGUgdmFsdWUgYW5kIGxvY2FsZSBhcmUgdGhlIHNhbWUgYXMgdGhlIGxhc3QgdHJhbnNmb3JtIHRoZW4gcmV0dXJuIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIGluc3RlYWQgb2YgcmVmb3JtYXR0aW5nLiAqL1xuICAgIGlmICh0aGlzLiNmb3JtYXR0ZWRWYWx1ZSAmJiB0aGlzLiNjYWNoZUtleSA9PT0gbmV3Q2FjaGVLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLiNmb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gbmV3IE51bWVyaWNPcHRpb25zKCk7XG5cbiAgICAvLyBUaGUgZGVmYXVsdCBudW1iZXIgb2YgZGlnaXRzIGlzIGAxYC4gV2hlbiB0cnVuY2F0ZSBpcyBkaXNhYmxlZCwgc2V0IGRpZ2l0c1xuICAgIC8vIHRvIGAwYCB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgYWRkaXRpb24gb2YgYC4wYCBhdCB0aGUgZW5kIG9mIHRoZSBmb3JtYXR0ZWQgbnVtYmVyLlxuICAgIGlmIChjb25maWcgJiYgY29uZmlnLnRydW5jYXRlID09PSBmYWxzZSAmJiBjb25maWcuZGlnaXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMuZGlnaXRzID0gMDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgbWluaW11bSBkaWdpdHMgaXMgbGVzcyB0aGFuIHRoZSBzZXQgbWF4aW11bSBkaWdpdHMgdGhlbiB0aHJvdyBhbiBlcnJvclxuICAgIGlmIChcbiAgICAgIGNvbmZpZyAmJlxuICAgICAgY29uZmlnLm1pbkRpZ2l0cyAmJlxuICAgICAgY29uZmlnLmRpZ2l0cyAmJlxuICAgICAgY29uZmlnLm1pbkRpZ2l0cyA+IGNvbmZpZy5kaWdpdHNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSBgZGlnaXRzYCBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgYG1pbkRpZ2l0c2AgcHJvcGVydHknXG4gICAgICApO1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIG1pbmltdW0gZGlnaXRzIGdpdmVuIGJ1dCBub3QgYSBtYXhpbXVtIHRoZW4gZGVmYXVsdCB0aGUgbWF4aW11bSB0byB0aGUgbWluaW11bVxuICAgIH0gZWxzZSBpZiAoY29uZmlnICYmIGNvbmZpZy5taW5EaWdpdHMgJiYgIWNvbmZpZy5kaWdpdHMpIHtcbiAgICAgIG9wdGlvbnMuZGlnaXRzID0gY29uZmlnLm1pbkRpZ2l0cztcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGNvbmZpZyk7XG5cbiAgICAvLyBBc3NpZ24gcHJvcGVydGllcyBmb3IgcHJvcGVyIHJlc3VsdCBjYWNoaW5nLlxuICAgIHRoaXMuI2NhY2hlS2V5ID0gbmV3Q2FjaGVLZXk7XG5cbiAgICB0aGlzLiNmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuI251bWVyaWNTdmMuZm9ybWF0TnVtYmVyKHZhbHVlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy4jZm9ybWF0dGVkVmFsdWU7XG4gIH1cbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUdMLElBQUksR0FFTCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFxQixNQUFNLG1CQUFtQixDQUFDOzs7O0FBR3RFOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLGNBQWM7SUFhekIsWUFDRSxjQUFvQyxFQUNwQyxVQUE2QixFQUM3QixjQUFpQztRQWZuQywyQ0FBOEI7UUFFOUIsaURBQW1DO1FBRW5DLGlEQUFvQztRQUVwQyx3Q0FBaUIsSUFBSSxPQUFPLEVBQVEsRUFBQztRQUVyQyw2Q0FBK0I7UUFFL0IsaURBQW9DO1FBT2xDLHVCQUFBLElBQUksOEJBQWUsVUFBVSxNQUFBLENBQUM7UUFDOUIsdUJBQUEsSUFBSSxrQ0FBbUIsY0FBYyxNQUFBLENBQUM7UUFFdEMsY0FBYzthQUNYLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQUEsSUFBSSxxQ0FBZSxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEIsdUJBQUEsSUFBSSxrQ0FBbUIsVUFBVSxDQUFDLE1BQU0sTUFBQSxDQUFDO1lBQ3pDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsdUJBQUEsSUFBSSxzQ0FBZ0IsQ0FBQztZQUNoRCx1QkFBQSxJQUFJLHNDQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsdUJBQUEsSUFBSSxxQ0FBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLHVCQUFBLElBQUkscUNBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQ2QsS0FBZ0MsRUFDaEMsTUFBMEI7UUFFMUIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLFdBQVcsR0FDZixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEUsR0FBRyxLQUFLLElBQUksTUFBTSxFQUFFLE1BQU0sSUFBSSx1QkFBQSxJQUFJLHNDQUFnQixFQUFFLENBQUM7UUFFdkQ7bUNBQzJCO1FBQzNCLElBQUksdUJBQUEsSUFBSSxzQ0FBZ0IsSUFBSSx1QkFBQSxJQUFJLGdDQUFVLEtBQUssV0FBVyxFQUFFO1lBQzFELE9BQU8sdUJBQUEsSUFBSSxzQ0FBZ0IsQ0FBQztTQUM3QjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFFckMsNkVBQTZFO1FBQzdFLHVGQUF1RjtRQUN2RixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN0RSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNwQjtRQUVELGdGQUFnRjtRQUNoRixJQUNFLE1BQU07WUFDTixNQUFNLENBQUMsU0FBUztZQUNoQixNQUFNLENBQUMsTUFBTTtZQUNiLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFDaEM7WUFDQSxNQUFNLElBQUksS0FBSyxDQUNiLGlGQUFpRixDQUNsRixDQUFDO1lBRUYsK0ZBQStGO1NBQ2hHO2FBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDdkQsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ25DO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0IsK0NBQStDO1FBQy9DLHVCQUFBLElBQUksNEJBQWEsV0FBVyxNQUFBLENBQUM7UUFFN0IsdUJBQUEsSUFBSSxrQ0FBbUIsdUJBQUEsSUFBSSxrQ0FBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQUEsQ0FBQztRQUNyRSxPQUFPLHVCQUFBLElBQUksc0NBQWdCLENBQUM7SUFDOUIsQ0FBQzs7OzJHQXhGVSxjQUFjO3lHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLEtBQUs7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bWVyaWNPcHRpb25zLCBTa3lOdW1lcmljT3B0aW9ucyB9IGZyb20gJy4vbnVtZXJpYy5vcHRpb25zJztcbmltcG9ydCB7IFNreU51bWVyaWNTZXJ2aWNlIH0gZnJvbSAnLi9udW1lcmljLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNob3J0ZW5zIG51bWJlcnMgdG8gcm91bmRlZCBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb24gY2hhcmFjdGVycyBzdWNoIGFzIEsgZm9yIHRob3VzYW5kcyxcbiAqIE0gZm9yIG1pbGxpb25zLCBCIGZvciBiaWxsaW9ucywgYW5kIFQgZm9yIHRyaWxsaW9ucy4gVGhlIHBpcGUgYWxzbyBmb3JtYXRzIGZvciBjdXJyZW5jeS5cbiAqIEJlIHN1cmUgeW91IGhhdmUgYSBzcGFjZSBhZnRlciB0aGUgdHdvIGN1cmx5IGJyYWNrZXRzIG9wZW5pbmcgdGhlIHBpcGUgYW5kXG4gKiBhIHNwYWNlIGJlZm9yZSB0aGUgdHdvIGN1cmx5IGJyYWNrZXRzIGNsb3NpbmcgdGhlIHBpcGUgb3IgaXQgd2lsbCBub3Qgd29yay5cbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5TnVtZXJpYycsXG4gIHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lOdW1lcmljUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gICNjYWNoZUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI2Zvcm1hdHRlZFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNudW1lcmljU3ZjOiBTa3lOdW1lcmljU2VydmljZTtcblxuICAjcHJvdmlkZXJMb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2NhbGVQcm92aWRlcjogU2t5QXBwTG9jYWxlUHJvdmlkZXIsXG4gICAgbnVtZXJpY1N2YzogU2t5TnVtZXJpY1NlcnZpY2UsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuI251bWVyaWNTdmMgPSBudW1lcmljU3ZjO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG5cbiAgICBsb2NhbGVQcm92aWRlclxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLiNwcm92aWRlckxvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgICBudW1lcmljU3ZjLmN1cnJlbnRMb2NhbGUgPSB0aGlzLiNwcm92aWRlckxvY2FsZTtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIG51bWJlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwsXG4gICAgY29uZmlnPzogU2t5TnVtZXJpY09wdGlvbnNcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDYWNoZUtleSA9XG4gICAgICAoY29uZmlnID8gSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBPYmplY3Qua2V5cyhjb25maWcpLnNvcnQoKSkgOiAnJykgK1xuICAgICAgYCR7dmFsdWV9XyR7Y29uZmlnPy5sb2NhbGUgfHwgdGhpcy4jcHJvdmlkZXJMb2NhbGV9YDtcblxuICAgIC8qIElmIHRoZSB2YWx1ZSBhbmQgbG9jYWxlIGFyZSB0aGUgc2FtZSBhcyB0aGUgbGFzdCB0cmFuc2Zvcm0gdGhlbiByZXR1cm4gdGhlIHByZXZpb3VzIHZhbHVlXG4gICAgaW5zdGVhZCBvZiByZWZvcm1hdHRpbmcuICovXG4gICAgaWYgKHRoaXMuI2Zvcm1hdHRlZFZhbHVlICYmIHRoaXMuI2NhY2hlS2V5ID09PSBuZXdDYWNoZUtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuI2Zvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgTnVtZXJpY09wdGlvbnMoKTtcblxuICAgIC8vIFRoZSBkZWZhdWx0IG51bWJlciBvZiBkaWdpdHMgaXMgYDFgLiBXaGVuIHRydW5jYXRlIGlzIGRpc2FibGVkLCBzZXQgZGlnaXRzXG4gICAgLy8gdG8gYDBgIHRvIGF2b2lkIHRoZSB1bm5lY2Vzc2FyeSBhZGRpdGlvbiBvZiBgLjBgIGF0IHRoZSBlbmQgb2YgdGhlIGZvcm1hdHRlZCBudW1iZXIuXG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcudHJ1bmNhdGUgPT09IGZhbHNlICYmIGNvbmZpZy5kaWdpdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9ucy5kaWdpdHMgPSAwO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBtaW5pbXVtIGRpZ2l0cyBpcyBsZXNzIHRoYW4gdGhlIHNldCBtYXhpbXVtIGRpZ2l0cyB0aGVuIHRocm93IGFuIGVycm9yXG4gICAgaWYgKFxuICAgICAgY29uZmlnICYmXG4gICAgICBjb25maWcubWluRGlnaXRzICYmXG4gICAgICBjb25maWcuZGlnaXRzICYmXG4gICAgICBjb25maWcubWluRGlnaXRzID4gY29uZmlnLmRpZ2l0c1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIGBkaWdpdHNgIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBgbWluRGlnaXRzYCBwcm9wZXJ0eSdcbiAgICAgICk7XG5cbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWluaW11bSBkaWdpdHMgZ2l2ZW4gYnV0IG5vdCBhIG1heGltdW0gdGhlbiBkZWZhdWx0IHRoZSBtYXhpbXVtIHRvIHRoZSBtaW5pbXVtXG4gICAgfSBlbHNlIGlmIChjb25maWcgJiYgY29uZmlnLm1pbkRpZ2l0cyAmJiAhY29uZmlnLmRpZ2l0cykge1xuICAgICAgb3B0aW9ucy5kaWdpdHMgPSBjb25maWcubWluRGlnaXRzO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24ob3B0aW9ucywgY29uZmlnKTtcblxuICAgIC8vIEFzc2lnbiBwcm9wZXJ0aWVzIGZvciBwcm9wZXIgcmVzdWx0IGNhY2hpbmcuXG4gICAgdGhpcy4jY2FjaGVLZXkgPSBuZXdDYWNoZUtleTtcblxuICAgIHRoaXMuI2Zvcm1hdHRlZFZhbHVlID0gdGhpcy4jbnVtZXJpY1N2Yy5mb3JtYXROdW1iZXIodmFsdWUsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLiNmb3JtYXR0ZWRWYWx1ZTtcbiAgfVxufVxuIl19