@coolon/angular-ui-powerups 0.0.108 → 0.0.110
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/bundles/coolon-angular-ui-powerups.umd.js +71 -76
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +2 -2
- package/esm2015/index.js +2 -2
- package/esm2015/lib/animations/index.js +2 -2
- package/esm2015/lib/animations/slide-animations.js +31 -0
- package/esm2015/lib/place/guards/navigation-state.js +9 -45
- package/esm2015/lib/place/place-router.js +3 -8
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +2 -2
- package/esm5/index.js +2 -2
- package/esm5/lib/animations/index.js +2 -2
- package/esm5/lib/animations/slide-animations.js +31 -0
- package/esm5/lib/place/guards/navigation-state.js +47 -54
- package/esm5/lib/place/place-router.js +7 -9
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +30 -68
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +72 -78
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/animations/index.d.ts +1 -1
- package/lib/animations/slide-animations.d.ts +2 -0
- package/package.json +1 -1
- package/esm2015/lib/animations/slideDownAndUpAnimation.js +0 -30
- package/esm5/lib/animations/slideDownAndUpAnimation.js +0 -30
- package/lib/animations/slideDownAndUpAnimation.d.ts +0 -5
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
|
-
import {
|
|
7
|
-
import { Dsl, GarbageCollector, lang, Logger, Trace } from '@coolon/pectin';
|
|
6
|
+
import { Dsl, GarbageCollector, lang, Logger } from '@coolon/pectin';
|
|
8
7
|
import { PlaceComponentDeactivationHandler } from './place-component-deactivation-handler';
|
|
9
8
|
/**
|
|
10
9
|
* @abstract
|
|
@@ -676,23 +675,21 @@ if (false) {
|
|
|
676
675
|
function (event) {
|
|
677
676
|
return new InteractionTransition(this.context, event.url);
|
|
678
677
|
};
|
|
678
|
+
// @Trace()
|
|
679
|
+
// @Trace()
|
|
679
680
|
/**
|
|
680
681
|
* @param {?} event
|
|
681
682
|
* @return {?}
|
|
682
683
|
*/
|
|
683
|
-
IdleDuringInteraction.prototype.onPopState =
|
|
684
|
+
IdleDuringInteraction.prototype.onPopState =
|
|
685
|
+
// @Trace()
|
|
686
|
+
/**
|
|
684
687
|
* @param {?} event
|
|
685
688
|
* @return {?}
|
|
686
689
|
*/
|
|
687
690
|
function (event) {
|
|
688
691
|
return new InteractionPopStateTransition(this.context, event.url);
|
|
689
692
|
};
|
|
690
|
-
tslib_1.__decorate([
|
|
691
|
-
Trace(),
|
|
692
|
-
tslib_1.__metadata("design:type", Function),
|
|
693
|
-
tslib_1.__metadata("design:paramtypes", [NavigationStart]),
|
|
694
|
-
tslib_1.__metadata("design:returntype", NavigationState)
|
|
695
|
-
], IdleDuringInteraction.prototype, "onPopState", null);
|
|
696
693
|
return IdleDuringInteraction;
|
|
697
694
|
}(NavigationState));
|
|
698
695
|
NavigationState.IdleDuringInteraction = IdleDuringInteraction;
|
|
@@ -731,18 +728,26 @@ if (false) {
|
|
|
731
728
|
* This state exists to handle all events while any kind of navigation is in progress. That way all other states can
|
|
732
729
|
* happily ignore interaction contexts.
|
|
733
730
|
*/
|
|
734
|
-
var
|
|
731
|
+
var /**
|
|
732
|
+
* This state exists to handle all events while any kind of navigation is in progress. That way all other states can
|
|
733
|
+
* happily ignore interaction contexts.
|
|
734
|
+
*/
|
|
735
|
+
InteractionTransition = /** @class */ (function (_super) {
|
|
735
736
|
tslib_1.__extends(InteractionTransition, _super);
|
|
736
737
|
function InteractionTransition() {
|
|
737
738
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
738
739
|
_this.isPopState = false;
|
|
739
740
|
return _this;
|
|
740
741
|
}
|
|
742
|
+
// @Trace()
|
|
743
|
+
// @Trace()
|
|
741
744
|
/**
|
|
742
745
|
* @param {?} event
|
|
743
746
|
* @return {?}
|
|
744
747
|
*/
|
|
745
|
-
InteractionTransition.prototype.onRouterCancelled =
|
|
748
|
+
InteractionTransition.prototype.onRouterCancelled =
|
|
749
|
+
// @Trace()
|
|
750
|
+
/**
|
|
746
751
|
* @param {?} event
|
|
747
752
|
* @return {?}
|
|
748
753
|
*/
|
|
@@ -757,11 +762,15 @@ if (false) {
|
|
|
757
762
|
return new Idle(this.context);
|
|
758
763
|
}
|
|
759
764
|
};
|
|
765
|
+
// @Trace()
|
|
766
|
+
// @Trace()
|
|
760
767
|
/**
|
|
761
768
|
* @param {?} event
|
|
762
769
|
* @return {?}
|
|
763
770
|
*/
|
|
764
|
-
InteractionTransition.prototype.onRouterError =
|
|
771
|
+
InteractionTransition.prototype.onRouterError =
|
|
772
|
+
// @Trace()
|
|
773
|
+
/**
|
|
765
774
|
* @param {?} event
|
|
766
775
|
* @return {?}
|
|
767
776
|
*/
|
|
@@ -769,11 +778,15 @@ if (false) {
|
|
|
769
778
|
// navigation was aborted.
|
|
770
779
|
return new IdleDuringInteraction(this.context, this.startingUrl);
|
|
771
780
|
};
|
|
781
|
+
// @Trace()
|
|
782
|
+
// @Trace()
|
|
772
783
|
/**
|
|
773
784
|
* @param {?} event
|
|
774
785
|
* @return {?}
|
|
775
786
|
*/
|
|
776
|
-
InteractionTransition.prototype.onRouterEnd =
|
|
787
|
+
InteractionTransition.prototype.onRouterEnd =
|
|
788
|
+
// @Trace()
|
|
789
|
+
/**
|
|
777
790
|
* @param {?} event
|
|
778
791
|
* @return {?}
|
|
779
792
|
*/
|
|
@@ -785,24 +798,6 @@ if (false) {
|
|
|
785
798
|
return new Idle(this.context);
|
|
786
799
|
}
|
|
787
800
|
};
|
|
788
|
-
tslib_1.__decorate([
|
|
789
|
-
Trace(),
|
|
790
|
-
tslib_1.__metadata("design:type", Function),
|
|
791
|
-
tslib_1.__metadata("design:paramtypes", [NavigationCancel]),
|
|
792
|
-
tslib_1.__metadata("design:returntype", NavigationState)
|
|
793
|
-
], InteractionTransition.prototype, "onRouterCancelled", null);
|
|
794
|
-
tslib_1.__decorate([
|
|
795
|
-
Trace(),
|
|
796
|
-
tslib_1.__metadata("design:type", Function),
|
|
797
|
-
tslib_1.__metadata("design:paramtypes", [NavigationError]),
|
|
798
|
-
tslib_1.__metadata("design:returntype", NavigationState)
|
|
799
|
-
], InteractionTransition.prototype, "onRouterError", null);
|
|
800
|
-
tslib_1.__decorate([
|
|
801
|
-
Trace(),
|
|
802
|
-
tslib_1.__metadata("design:type", Function),
|
|
803
|
-
tslib_1.__metadata("design:paramtypes", [NavigationEnd]),
|
|
804
|
-
tslib_1.__metadata("design:returntype", NavigationState)
|
|
805
|
-
], InteractionTransition.prototype, "onRouterEnd", null);
|
|
806
801
|
return InteractionTransition;
|
|
807
802
|
}(AbstractInteractionTransition));
|
|
808
803
|
NavigationState.InteractionTransition = InteractionTransition;
|
|
@@ -814,18 +809,26 @@ if (false) {
|
|
|
814
809
|
* This state exists to handle all events while any kind of navigation is in progress. That way all other states can
|
|
815
810
|
* happily ignore interaction contexts.
|
|
816
811
|
*/
|
|
817
|
-
var
|
|
812
|
+
var /**
|
|
813
|
+
* This state exists to handle all events while any kind of navigation is in progress. That way all other states can
|
|
814
|
+
* happily ignore interaction contexts.
|
|
815
|
+
*/
|
|
816
|
+
InteractionPopStateTransition = /** @class */ (function (_super) {
|
|
818
817
|
tslib_1.__extends(InteractionPopStateTransition, _super);
|
|
819
818
|
function InteractionPopStateTransition() {
|
|
820
819
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
821
820
|
_this.isPopState = true;
|
|
822
821
|
return _this;
|
|
823
822
|
}
|
|
823
|
+
// @Trace()
|
|
824
|
+
// @Trace()
|
|
824
825
|
/**
|
|
825
826
|
* @param {?} event
|
|
826
827
|
* @return {?}
|
|
827
828
|
*/
|
|
828
|
-
InteractionPopStateTransition.prototype.onRouterCancelled =
|
|
829
|
+
InteractionPopStateTransition.prototype.onRouterCancelled =
|
|
830
|
+
// @Trace()
|
|
831
|
+
/**
|
|
829
832
|
* @param {?} event
|
|
830
833
|
* @return {?}
|
|
831
834
|
*/
|
|
@@ -840,11 +843,15 @@ if (false) {
|
|
|
840
843
|
return new Idle(this.context);
|
|
841
844
|
}
|
|
842
845
|
};
|
|
846
|
+
// @Trace()
|
|
847
|
+
// @Trace()
|
|
843
848
|
/**
|
|
844
849
|
* @param {?} event
|
|
845
850
|
* @return {?}
|
|
846
851
|
*/
|
|
847
|
-
InteractionPopStateTransition.prototype.onRouterEnd =
|
|
852
|
+
InteractionPopStateTransition.prototype.onRouterEnd =
|
|
853
|
+
// @Trace()
|
|
854
|
+
/**
|
|
848
855
|
* @param {?} event
|
|
849
856
|
* @return {?}
|
|
850
857
|
*/
|
|
@@ -856,18 +863,6 @@ if (false) {
|
|
|
856
863
|
return new Idle(this.context);
|
|
857
864
|
}
|
|
858
865
|
};
|
|
859
|
-
tslib_1.__decorate([
|
|
860
|
-
Trace(),
|
|
861
|
-
tslib_1.__metadata("design:type", Function),
|
|
862
|
-
tslib_1.__metadata("design:paramtypes", [NavigationCancel]),
|
|
863
|
-
tslib_1.__metadata("design:returntype", NavigationState)
|
|
864
|
-
], InteractionPopStateTransition.prototype, "onRouterCancelled", null);
|
|
865
|
-
tslib_1.__decorate([
|
|
866
|
-
Trace(),
|
|
867
|
-
tslib_1.__metadata("design:type", Function),
|
|
868
|
-
tslib_1.__metadata("design:paramtypes", [NavigationEnd]),
|
|
869
|
-
tslib_1.__metadata("design:returntype", NavigationState)
|
|
870
|
-
], InteractionPopStateTransition.prototype, "onRouterEnd", null);
|
|
871
866
|
return InteractionPopStateTransition;
|
|
872
867
|
}(AbstractInteractionTransition));
|
|
873
868
|
NavigationState.InteractionPopStateTransition = InteractionPopStateTransition;
|
|
@@ -907,11 +902,15 @@ if (false) {
|
|
|
907
902
|
function (event) {
|
|
908
903
|
return this.ignore(event);
|
|
909
904
|
};
|
|
905
|
+
// @Trace()
|
|
906
|
+
// @Trace()
|
|
910
907
|
/**
|
|
911
908
|
* @param {?} event
|
|
912
909
|
* @return {?}
|
|
913
910
|
*/
|
|
914
|
-
CancelledDuringNavigationInteraction.prototype.onRouterCancelled =
|
|
911
|
+
CancelledDuringNavigationInteraction.prototype.onRouterCancelled =
|
|
912
|
+
// @Trace()
|
|
913
|
+
/**
|
|
915
914
|
* @param {?} event
|
|
916
915
|
* @return {?}
|
|
917
916
|
*/
|
|
@@ -1008,12 +1007,6 @@ if (false) {
|
|
|
1008
1007
|
function () {
|
|
1009
1008
|
return this.constructor.name + "(isIdl: " + this.idle + ", startingUrl: " + this.startingUrl + ", locationChangeTriggerUrl:" + this.locationChangeTriggerUrl + ")";
|
|
1010
1009
|
};
|
|
1011
|
-
tslib_1.__decorate([
|
|
1012
|
-
Trace(),
|
|
1013
|
-
tslib_1.__metadata("design:type", Function),
|
|
1014
|
-
tslib_1.__metadata("design:paramtypes", [NavigationCancel]),
|
|
1015
|
-
tslib_1.__metadata("design:returntype", NavigationState)
|
|
1016
|
-
], CancelledDuringNavigationInteraction.prototype, "onRouterCancelled", null);
|
|
1017
1010
|
return CancelledDuringNavigationInteraction;
|
|
1018
1011
|
}(NavigationState));
|
|
1019
1012
|
NavigationState.CancelledDuringNavigationInteraction = CancelledDuringNavigationInteraction;
|
|
@@ -1033,4 +1026,4 @@ if (false) {
|
|
|
1033
1026
|
CancelledDuringNavigationInteraction.prototype.locationChangeTriggerUrl;
|
|
1034
1027
|
}
|
|
1035
1028
|
})(NavigationState || (NavigationState = {}));
|
|
1036
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9ndWFyZHMvbmF2aWdhdGlvbi1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVE1RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQUUzRjs7OztJQUE4QywyQ0FBZ0I7SUFRNUQseUJBQStCLE9BQWdDO1FBQS9ELFlBQ0UsaUJBQU8sU0FDUjtRQUY4QixhQUFPLEdBQVAsT0FBTyxDQUF5QjtRQU52RCxhQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7O0lBUXBELENBQUM7SUFFRCxzQkFBSSxpQ0FBSTs7OztRQUFSO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUMvQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGlDQUFJOzs7O1FBQVI7WUFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM5QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHdDQUFXOzs7O1FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ2xDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0NBQWtCOzs7O1FBQXRCO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1FBQ3pDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0NBQWtCOzs7O1FBQXRCO1lBQ0UsT0FBTyxJQUFJLENBQUM7UUFDZCxD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LENBQUMsSUFBSSx1QkFBa0IsSUFBSSxDQUFDLFdBQVcsbUNBQThCLElBQUksQ0FBQyx3QkFBd0IsTUFBRyxDQUFDO1FBQ3RKLENBQUM7UUF0Q0Q7WUFEQyxLQUFLLEVBQUU7O3FEQUNpQixnQkFBZ0I7b0RBQUcsZUFBZTtxRkFVMUQ7UUE4QkgsMkNBQUM7S0FBQSxBQTdERCxDQUEwRCxlQUFlLEdBNkR4RTtJQTdEWSxvREFBb0MsdUNBNkRoRCxDQUFBOzs7UUEzREMsMERBQTRCOzs7OztRQUM1Qix5RUFBMEM7O1FBRzlCLDJEQUE0Qjs7UUFDNUIseUVBQTJDOztRQUMzQyx3RUFBeUM7O0FBc0R6RCxDQUFDLEVBN1RnQixlQUFlLEtBQWYsZUFBZSxRQTZUL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXJyb3IsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyRXZlbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRHNsLCBHYXJiYWdlQ29sbGVjdG9yLCBsYW5nLCBMb2dnZXIsIFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi9wbGFjZS1yb3V0ZXInO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tICcuLi91cmwtc25hcHNob3QnO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuLi92aXNpdCc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXIgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudC1kZWFjdGl2YXRpb24taGFuZGxlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYXZpZ2F0aW9uU3RhdGUgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIF92aXNpdHMgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXQ+KCk7XG5cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaXNUcmFuc2l0aW9uYWw6IGJvb2xlYW47XG4gIGFic3RyYWN0IHJlYWRvbmx5IHN0YXJ0aW5nVXJsOiBzdHJpbmc7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzUG9wU3RhdGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQ6IE5hdmlnYXRpb25TdGF0ZS5Db250ZXh0KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIGdldCBpZGxlKCkge1xuICAgIHJldHVybiAhdGhpcy5pc1RyYW5zaXRpb25hbDtcbiAgfVxuXG4gIGdldCBwbGFjZVJvdXRlcigpOiBQbGFjZVJvdXRlciB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5wbGFjZVJvdXRlcjtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGlvblNlcnZpY2UoKTogSW50ZXJhY3Rpb25TZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmludGVyYWN0aW9uU2VydmljZTtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGlvbkNvbnRleHQoKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0b3JlVmlzaXQodmlzaXQ6IFZpc2l0KSB7XG4gICAgdGhpcy5fdmlzaXRzLnNldCh2aXNpdC5wbGFjZURlZmluaXRpb24sIHZpc2l0KTtcbiAgfVxuXG4gIGdldFZpc2l0Rm9yKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaXRzLmdldChwbGFjZURlZik7XG4gIH1cblxuICBvblBsYWNlTmF2aWdhdGlvblN0YXJ0KHZpc2l0OiBWaXNpdCwgaW5pdGlhbFVybDogc3RyaW5nKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbignb25QbGFjZU5hdmlnYXRpb25TdGFydCcpO1xuICB9XG5cbiAgb25Qb3BTdGF0ZShldmVudDogTmF2aWdhdGlvblN0YXJ0KTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbihldmVudCk7XG4gIH1cblxuICBvblJvdXRlclN0YXJ0ZWQoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmlsbGVnYWxUcmFuc2l0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcik6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmlsbGVnYWxUcmFuc2l0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIG9uQmFja0NsaWNrZWREdXJpbmdOYXZpZ2F0aW9uSW50ZXJhY3Rpb24obmV3VXJsOiBzdHJpbmcpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmlsbGVnYWxUcmFuc2l0aW9uKCdvbkJhY2tDbGlja2VkRHVyaW5nTmF2aWdhdGlvbkludGVyYWN0aW9uJyk7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlUGxhY2UoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRVcmw6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+IHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbignY2FuRGVhY3RpdmF0ZVBsYWNlJyk7XG4gIH1cblxuICBnZXRWaXNpdHMoKTogVmlzaXRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fdmlzaXRzLnZhbHVlcygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbGxlZ2FsVHJhbnNpdGlvbjxSPihtZXNzYWdlOiBzdHJpbmcgfCBSb3V0ZXJFdmVudCk6IFIge1xuICAgIHJldHVybiBsYW5nLmlsbGVnYWxTdGF0ZShgJHttZXNzYWdlLnRvU3RyaW5nKCl9IG5vdCBzdXBwb3J0ZWQgYnkgJHt0aGlzLnRvU3RyaW5nKCl9YCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VycmVudFJvdXRlclVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlUm91dGVyLmdldEN1cnJlbnRSb3V0ZXJVcmwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVUcmFuc2l0aW9uU3RhdGVGb3IoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkge1xuICAgIGNvbnN0IHBvcHN0YXRlID0gZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09ICdwb3BzdGF0ZSc7XG4gICAgcmV0dXJuIHBvcHN0YXRlID9cbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkgP1xuICAgICAgICBuZXcgTmF2aWdhdGlvblN0YXRlLkludGVyYWN0aW9uUG9wU3RhdGVUcmFuc2l0aW9uKHRoaXMuY29udGV4dCwgdGhpcy5jdXJyZW50Um91dGVyVXJsKCkpIDpcbiAgICAgICAgbmV3IE5hdmlnYXRpb25TdGF0ZS5Qb3BTdGF0ZVRyYW5zaXRpb24odGhpcy5jb250ZXh0LCB0aGlzLmN1cnJlbnRSb3V0ZXJVcmwoKSlcbiAgICAgIDpcbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkgP1xuICAgICAgICBuZXcgTmF2aWdhdGlvblN0YXRlLkludGVyYWN0aW9uVHJhbnNpdGlvbih0aGlzLmNvbnRleHQsIHRoaXMuY3VycmVudFJvdXRlclVybCgpKSA6XG4gICAgICAgIG5ldyBOYXZpZ2F0aW9uU3RhdGUuTmF2aWdhdGlvblRyYW5zaXRpb24odGhpcy5jb250ZXh0LCB0aGlzLmN1cnJlbnRSb3V0ZXJVcmwoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlSWRsZVN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpID9cbiAgICAgIG5ldyBOYXZpZ2F0aW9uU3RhdGUuSWRsZUR1cmluZ0ludGVyYWN0aW9uKHRoaXMuY29udGV4dCwgdGhpcy5jdXJyZW50Um91dGVyVXJsKCkpIDpcbiAgICAgIG5ldyBOYXZpZ2F0aW9uU3RhdGUuSWRsZSh0aGlzLmNvbnRleHQpO1xuICB9XG5cbiAgcmVzZXRCcm93c2VyTG9jYXRpb24odXJsKSB7XG4gICAgdGhpcy5wbGFjZVJvdXRlci5yZXNldEJyb3dzZXJMb2NhdGlvbih1cmwpO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgTmF2aWdhdGlvblN0YXRlIHtcblxuICBleHBvcnQgY2xhc3MgQ29udGV4dCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsXG4gICAgICByZWFkb25seSBpbnRlcmFjdGlvblNlcnZpY2U6IEludGVyYWN0aW9uU2VydmljZSxcbiAgICAgIHJlYWRvbmx5IG5vdGlmeVN1Y2Nlc3M6IChzdWNjZXNzOiBOYXZpZ2F0aW9uU3RhdGUpID0+IHZvaWQpIHtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSWRsZSBleHRlbmRzIE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmVhZG9ubHkgaXNUcmFuc2l0aW9uYWwgPSBmYWxzZTtcbiAgICByZWFkb25seSBzdGFydGluZ1VybCA9IG51bGw7XG4gICAgcmVhZG9ubHkgaXNQb3BTdGF0ZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDogQ29udGV4dCkge1xuICAgICAgc3VwZXIoY29udGV4dCk7XG4gICAgfVxuXG4gICAgb25QbGFjZU5hdmlnYXRpb25TdGFydCh2aXNpdDogVmlzaXQsIGluaXRpYWxVcmw6IHN0cmluZyk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICBjb25zdCBuYXZpZ2F0aW9uVHJhbnNpdGlvbiA9IG5ldyBOYXZpZ2F0aW9uVHJhbnNpdGlvbih0aGlzLmNvbnRleHQsIGluaXRpYWxVcmwpO1xuICAgICAgbmF2aWdhdGlvblRyYW5zaXRpb24uc3RvcmVWaXNpdCh2aXNpdCk7XG4gICAgICByZXR1cm4gbmF2aWdhdGlvblRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgb25Sb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuXG4gICAgICAvLyBjYWxsaW5nIGFuZ3VsYXJMb2NhdGlvbi5nbygpIHRvIGNsZWFyIGJhY2sgc3RhdGUgY2FuIHRyaWdnZXIgcm91dGVyIGN5Y2xlcyB0byB0aGUgY3VycmVudCB1cmwgaWYgd2UgZG9uJ3QgaWdub3JlIHRoZW1cbiAgICAgIGlmIChldmVudC51cmwgPT09IHRoaXMuY3VycmVudFJvdXRlclVybCgpKSB7XG4gICAgICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhgbmF2aWdhdGlvbiBzdGFydGVkIHRvIHNhbWUgdXJsIC0+ICR7ZXZlbnQudXJsfWApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucGxhY2VSb3V0ZXIuaGFzQWN0aXZlSW50ZXJhY3Rpb25JZHMoZXZlbnQudXJsKSkge1xuICAgICAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oYG5hdmlnYXRpb24gc3RhcnRlZCB3aXRoIGludGVyYWN0aW9uIG91dGxldCAtPiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcmFjdGlvblRyYW5zaXRpb24odGhpcy5jb250ZXh0LCBldmVudC51cmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVHJhbnNpdGlvblN0YXRlRm9yKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvblBvcFN0YXRlKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVHJhbnNpdGlvblN0YXRlRm9yKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3ROYXZpZ2F0aW9uVHJhbnNpdGlvbiBleHRlbmRzIE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmVhZG9ubHkgaXNUcmFuc2l0aW9uYWwgPSB0cnVlO1xuICAgIHByaXZhdGUgY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMgPSBuZXcgTWFwPFBsYWNlQ29tcG9uZW50LCBQbGFjZUNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXI+KCk7XG4gICAgcHJpdmF0ZSBfaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBDb250ZXh0LCByZWFkb25seSBzdGFydGluZ1VybDogc3RyaW5nKSB7XG4gICAgICBzdXBlcihjb250ZXh0KTtcbiAgICAgIHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dCA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLl9jcmVhdGVFeGNsdXNpdmVNb2RhbEludGVyYWN0aW9uQ29udGV4dCgpO1xuICAgICAgdGhpcy5vbkRpc3Bvc2UoKCkgPT4ge1xuICAgICAgICAvLyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBjYW4gYmUgZGV0YWNoZWQgZHVyaW5nIHRoZSBiYWNrIGJ1dHRvbiBjYW5jZWxsYXRpb24gc3RhdGUgdHJhbnNpdGlvblxuICAgICAgICAvLyBhcyB0aGUgdHJhbnNpdGlvbiBpcyBzeW5jaHJvbm91cyBhbmQgYWN0aXZpdHlDYW5jZWxsYXRpb24gaXNuJ3QuICBPdGhlcndpc2UgZGlzcG9zZSB3aWxsIGJlXG4gICAgICAgIC8vIGNhbGxlZCBiZWZvcmUgdGhlIGNvbnRleHQgaGFzIGJlZW4gY2FuY2VsbGVkLiAgSXQgbWlnaHQgYmUgd29yayBoYXZpbmcgdGhlIGludGVyYWN0aW9uIGNvbnRleHRcbiAgICAgICAgLy8gYXV0b21hdGljYWxseSBjYW5jZWwgaWYgdGhlIGNvbnRleHQgaXMgZGlzcG9zZWQgc28gd2UgZG9uJ3QgaGF2ZSB3b3JyeSBhYm91dCBkZXRhY2hpbmcgZXRjLlxuICAgICAgICBpZiAodGhpcy5faW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgICAgICAgdGhpcy5faW50ZXJhY3Rpb25Db250ZXh0LmRpc3Bvc2UoKTsgLy8gb3IgZG8gc29tZXRoaW5nIGxpa2UgY2FuY2VsQW5kRGlzcG9zZT9cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGludGVyYWN0aW9uQ29udGV4dCgpOiBJbnRlcmFjdGlvbkNvbnRleHQge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dDtcbiAgICB9XG5cbiAgICBvblJvdXRlclN0YXJ0ZWQoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICAvLyBhY3RpdmUgc2Vzc2lvbnMgY2FuIGhhdmUgbWFueSBjYW5jZWwgc3RhcnQgY3ljbGVzIGR1ZVxuICAgICAgLy8gdG8gcGxhY2UgZ3VhcmQgcmVkaXJlY3RzXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBvblJvdXRlckVuZChldmVudDogTmF2aWdhdGlvbkVuZCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICAvLyBuYXZpZ2F0aW9uIHN1Y2NlZWRlZFxuICAgICAgdGhpcy5jb250ZXh0Lm5vdGlmeVN1Y2Nlc3ModGhpcyk7XG4gICAgICByZXR1cm4gbmV3IElkbGUodGhpcy5jb250ZXh0KTtcbiAgICB9XG5cbiAgICBvbkJhY2tDbGlja2VkRHVyaW5nTmF2aWdhdGlvbkludGVyYWN0aW9uKGxvY2F0aW9uVHJpZ2dlclVybDogc3RyaW5nKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhgYmFjayBidXR0b24gcHJlc3NlZCBkdXJpbmcgbmF2aWdhdGlvbiBzZXNzaW9uIGludGVyYWN0aW9uIHByb21pc2VgKTtcbiAgICAgIC8vIGRldGFjaCB0aGUgaW50ZXJhY3Rpb24gZnJvbSB0aGUgc2Vzc2lvbiBzbyBpdCBkb2Vzbid0IGdldCBkaXNwb3NlZCB1bnRpbCB0aGUgYWN0aXZpdHkgaGFzIGNvbXBsZXRlZC5cbiAgICAgIGNvbnN0IG5hdmlnYXRpb25JbnRlcmFjdGlvbiA9IHRoaXMuZGV0YWNoSW50ZXJhY3Rpb25Db250ZXh0KCk7XG4gICAgICBjb25zdCB7IHdoZW4gfSA9IERzbC5kaXNwb3NlV2l0aChuYXZpZ2F0aW9uSW50ZXJhY3Rpb24pO1xuICAgICAgLy8gVE9ETzogSSBuZWVkIHRvIG1ha2UgdGhlIGV4Y2x1c2l2ZSBpbnRlcmFjdGlvbiBjb250ZXh0IGRpc2FsbG93IG5lc3RlZCBhY3Rpdml0aWVzIG9yXG4gICAgICAvLyAgICAgICB0aGF0IHdvdWxkIG1lc3MgdGhpbmdzIHVwIGVudGlyZWx5LiBPciwgY2FuIEkgZG8gYSBjb250ZXh0LmFib3J0QWxsKCkudGhlbiguLilcbiAgICAgIG5hdmlnYXRpb25JbnRlcmFjdGlvbi5jYW5jZWxBY3RpdmVBY3Rpdml0eSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBuYXZpZ2F0aW9uSW50ZXJhY3Rpb24uZGlzcG9zZSgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IENhbmNlbGxlZER1cmluZ05hdmlnYXRpb25JbnRlcmFjdGlvbih0aGlzLmNvbnRleHQsXG4gICAgICAgIHRoaXMuc3RhcnRpbmdVcmwsXG4gICAgICAgIHRoaXMuaXNQb3BTdGF0ZSxcbiAgICAgICAgbG9jYXRpb25UcmlnZ2VyVXJsKTtcbiAgICB9XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIGFzeW5jIGNhbkRlYWN0aXZhdGVQbGFjZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBjdXJyZW50VXJsOiBVcmxTbmFwc2hvdCwgbmV4dFVybDogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgICAgLy8gbG9va3VwIHRoZSBoYW5kbGVyIGFuZCBjcmVhdGUgaXQgaWYgd2UndmUgbm90IHNlZW4gaXQgeWV0XG4gICAgICBsZXQgaGFuZGxlciA9IHRoaXMuY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMuZ2V0KGNvbXBvbmVudCk7XG4gICAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgICAgY29uc3QgaXNQcmltYXJ5SGFuZGxlciA9IHRoaXMuY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMuc2l6ZSA9PT0gMDsgLy8gb25seSBwcmltYXJ5IGhhbmRsZXIgY2FuY2VscyB0aGUgYXBwIG1vZGVsIGludGVyYXRpb25zXG4gICAgICAgIGhhbmRsZXIgPSBuZXcgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyKGNvbXBvbmVudCwgdGhpcywgaXNQcmltYXJ5SGFuZGxlcik7XG4gICAgICAgIHRoaXMuY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KGNvbXBvbmVudCwgaGFuZGxlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFuZGxlci5jYW5EZWFjdGl2YXRlKGN1cnJlbnRVcmwsIG5leHRVcmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGV0YWNoSW50ZXJhY3Rpb25Db250ZXh0KCk6IEludGVyYWN0aW9uQ29udGV4dCB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5faW50ZXJhY3Rpb25Db250ZXh0O1xuICAgICAgdGhpcy5faW50ZXJhY3Rpb25Db250ZXh0ID0gbnVsbDtcbiAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uVHJhbnNpdGlvbiBleHRlbmRzIEFic3RyYWN0TmF2aWdhdGlvblRyYW5zaXRpb24ge1xuICAgIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSBmYWxzZTtcblxuICAgIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcik6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICAvLyBuYXZpZ2F0aW9uIHdhcyBhYm9ydGVkLlxuICAgICAgcmV0dXJuIG5ldyBJZGxlKHRoaXMuY29udGV4dCk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9KHN0YXJ0aW5nVXJsOiAke3RoaXMuc3RhcnRpbmdVcmx9KWA7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIFBvcFN0YXRlVHJhbnNpdGlvbiBleHRlbmRzIEFic3RyYWN0TmF2aWdhdGlvblRyYW5zaXRpb24ge1xuICAgIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSB0cnVlO1xuXG4gICAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHByZXNlcnZlIHRoZSB1cmwgd2hlbiBhIGd1YXJkIGNhbmNlbHMgdGhlIGJhY2sgYnV0dG9uLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNTg2I2lzc3VlY29tbWVudC00MzI3OTU3MjBcbiAgICAgIExvZ2dlci5nZXQodGhpcykuaW5mbygnV09SSy1BUk9VTkQ6IFVwZGF0aW5nIGJyb3dzZXIgbG9jYXRpb24gYWZ0ZXIgcG9wIHN0YXRlIC0gc2VlIGFuZ3VsYXIgaXNzdWUgIzEzNTg2Jyk7XG4gICAgICB0aGlzLnJlc2V0QnJvd3NlckxvY2F0aW9uKHRoaXMuc3RhcnRpbmdVcmwpO1xuICAgICAgcmV0dXJuIG5ldyBJZGxlKHRoaXMuY29udGV4dCk7XG4gICAgfVxuXG4gICAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIC8vIG5hdmlnYXRpb24gd2FzIGFib3J0ZWQuXG4gICAgICBpZiAodGhpcy5jdXJyZW50Um91dGVyVXJsKCkgIT09IHRoaXMuc3RhcnRpbmdVcmwpIHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHByZXNlcnZlIHRoZSB1cmwgd2hlbiBhIGd1YXJkIGNhbmNlbHMgdGhlIGJhY2sgYnV0dG9uLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM1ODYjaXNzdWVjb21tZW50LTQzMjc5NTcyMFxuICAgICAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oJ1dPUkstQVJPVU5EOiBVcGRhdGluZyBicm93c2VyIGxvY2F0aW9uIGFmdGVyIHBvcCBzdGF0ZSAtIHNlZSBhbmd1bGFyIGlzc3VlICMxMzU4NicpO1xuICAgICAgICB0aGlzLnJlc2V0QnJvd3NlckxvY2F0aW9uKHRoaXMuc3RhcnRpbmdVcmwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBJZGxlKHRoaXMuY29udGV4dCk7XG4gICAgfVxuXG4gIH1cblxuICBleHBvcnQgY2xhc3MgSWRsZUR1cmluZ0ludGVyYWN0aW9uIGV4dGVuZHMgTmF2aWdhdGlvblN0YXRlIHtcbiAgICByZWFkb25seSBpc1RyYW5zaXRpb25hbCA9IGZhbHNlO1xuICAgIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGNvbnRleHQ6IENvbnRleHQsIHJlYWRvbmx5IHN0YXJ0aW5nVXJsOiBzdHJpbmcpIHtcbiAgICAgIHN1cGVyKGNvbnRleHQpO1xuICAgIH1cblxuICAgIG9uUGxhY2VOYXZpZ2F0aW9uU3RhcnQodmlzaXQ6IFZpc2l0LCBpbml0aWFsVXJsOiBzdHJpbmcpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgY29uc3QgbmF2aWdhdGlvblRyYW5zaXRpb24gPSBuZXcgSW50ZXJhY3Rpb25UcmFuc2l0aW9uKHRoaXMuY29udGV4dCwgaW5pdGlhbFVybCk7XG4gICAgICBuYXZpZ2F0aW9uVHJhbnNpdGlvbi5zdG9yZVZpc2l0KHZpc2l0KTtcbiAgICAgIHJldHVybiBuYXZpZ2F0aW9uVHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJhY3Rpb25UcmFuc2l0aW9uKHRoaXMuY29udGV4dCwgZXZlbnQudXJsKTtcbiAgICB9XG5cbiAgICBAVHJhY2UoKVxuICAgIG9uUG9wU3RhdGUoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICByZXR1cm4gbmV3IEludGVyYWN0aW9uUG9wU3RhdGVUcmFuc2l0aW9uKHRoaXMuY29udGV4dCwgZXZlbnQudXJsKTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJbnRlcmFjdGlvblRyYW5zaXRpb24gZXh0ZW5kcyBBYnN0cmFjdE5hdmlnYXRpb25UcmFuc2l0aW9uIHtcbiAgICByZWFkb25seSBpc1RyYW5zaXRpb25hbCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBDb250ZXh0LCByZWFkb25seSBzdGFydGluZ1VybDogc3RyaW5nKSB7XG4gICAgICBzdXBlcihjb250ZXh0LCBzdGFydGluZ1VybCk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBzdGF0ZSBleGlzdHMgdG8gaGFuZGxlIGFsbCBldmVudHMgd2hpbGUgYW55IGtpbmQgb2YgbmF2aWdhdGlvbiBpcyBpbiBwcm9ncmVzcy4gIFRoYXQgd2F5IGFsbCBvdGhlciBzdGF0ZXMgY2FuXG4gICAqIGhhcHBpbHkgaWdub3JlIGludGVyYWN0aW9uIGNvbnRleHRzLlxuICAgKi9cbiAgZXhwb3J0IGNsYXNzIEludGVyYWN0aW9uVHJhbnNpdGlvbiBleHRlbmRzIEFic3RyYWN0SW50ZXJhY3Rpb25UcmFuc2l0aW9uIHtcbiAgICByZWFkb25seSBpc1BvcFN0YXRlID0gZmFsc2U7XG5cbiAgICBAVHJhY2UoKVxuICAgIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIGlmICh0aGlzLmNvbnRleHQuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25JZHMgPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMudmFsdWU7XG4gICAgICAgIHRoaXMucmVzZXRCcm93c2VyTG9jYXRpb24odGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybCh0aGlzLnN0YXJ0aW5nVXJsKS51cGRhdGVJbnRlcmFjdGlvbklkcyhpbnRlcmFjdGlvbklkcykudXJsKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGxlRHVyaW5nSW50ZXJhY3Rpb24odGhpcy5jb250ZXh0LCB0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgSWRsZSh0aGlzLmNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBUcmFjZSgpXG4gICAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIC8vIG5hdmlnYXRpb24gd2FzIGFib3J0ZWQuXG4gICAgICByZXR1cm4gbmV3IElkbGVEdXJpbmdJbnRlcmFjdGlvbih0aGlzLmNvbnRleHQsIHRoaXMuc3RhcnRpbmdVcmwpO1xuICAgIH1cblxuICAgIEBUcmFjZSgpXG4gICAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgaWYgKHRoaXMuY29udGV4dC5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKSkge1xuICAgICAgICByZXR1cm4gbmV3IElkbGVEdXJpbmdJbnRlcmFjdGlvbih0aGlzLmNvbnRleHQsIHRoaXMuc3RhcnRpbmdVcmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGxlKHRoaXMuY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgc3RhdGUgZXhpc3RzIHRvIGhhbmRsZSBhbGwgZXZlbnRzIHdoaWxlIGFueSBraW5kIG9mIG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3MuICBUaGF0IHdheSBhbGwgb3RoZXIgc3RhdGVzIGNhblxuICAgKiBoYXBwaWx5IGlnbm9yZSBpbnRlcmFjdGlvbiBjb250ZXh0cy5cbiAgICovXG4gIGV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvblBvcFN0YXRlVHJhbnNpdGlvbiBleHRlbmRzIEFic3RyYWN0SW50ZXJhY3Rpb25UcmFuc2l0aW9uIHtcbiAgICByZWFkb25seSBpc1BvcFN0YXRlID0gdHJ1ZTtcblxuICAgIEBUcmFjZSgpXG4gICAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgaWYgKHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25JZHMgPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMudmFsdWU7XG4gICAgICAgIHRoaXMucmVzZXRCcm93c2VyTG9jYXRpb24odGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybCh0aGlzLnN0YXJ0aW5nVXJsKS51cGRhdGVJbnRlcmFjdGlvbklkcyhpbnRlcmFjdGlvbklkcykudXJsKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGxlRHVyaW5nSW50ZXJhY3Rpb24odGhpcy5jb250ZXh0LCB0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgSWRsZSh0aGlzLmNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBUcmFjZSgpXG4gICAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgaWYgKHRoaXMuY29udGV4dC5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKSkge1xuICAgICAgICByZXR1cm4gbmV3IElkbGVEdXJpbmdJbnRlcmFjdGlvbih0aGlzLmNvbnRleHQsIHRoaXMuc3RhcnRpbmdVcmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGxlKHRoaXMuY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuXG4gIGV4cG9ydCBjbGFzcyBDYW5jZWxsZWREdXJpbmdOYXZpZ2F0aW9uSW50ZXJhY3Rpb24gZXh0ZW5kcyBOYXZpZ2F0aW9uU3RhdGUge1xuXG4gICAgcmVhZG9ubHkgaXNQb3BTdGF0ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgZ290UG9wU3RhdGVXaXRoTGVhdmluZ1VybCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDogQ29udGV4dCxcbiAgICAgICAgICAgICAgICByZWFkb25seSBzdGFydGluZ1VybDogc3RyaW5nLFxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IHN0YXJ0aW5nRXZlbnRXYXNBUG9wU3RhdGU6IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgbG9jYXRpb25DaGFuZ2VUcmlnZ2VyVXJsOiBzdHJpbmcpIHtcbiAgICAgIHN1cGVyKGNvbnRleHQpO1xuICAgIH1cblxuICAgIGdldCBpc1RyYW5zaXRpb25hbCgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIHJldHVybiB0aGlzLmlnbm9yZShldmVudCk7XG4gICAgfVxuXG4gICAgQFRyYWNlKClcbiAgICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICAvLyBEZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSByb3V0ZXIgYW5kIHdoYXQgd2FzIGRvbmUgd2UgZ2V0IGEgZGlmZmVyZW50XG4gICAgICAvLyBzZXF1ZW5jZSBvZiBldmVudHMuXG4gICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBjaGFuZ2Ugd2FzIHRyaWdnZXJlZCBieSBjbGlja2luZyBhIGxpbmsgd2UnbGwgZ2V0IGEgY2FuY2VsIHdpdGggdGhlIGxvY2F0aW9uQ2hhbmdlVHJpZ2dlclVybCBhcyB0aGUgZmluYWwgZXZlbnQuXG4gICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBjaGFuZ2Ugd2FzIHRyaWdnZXJlZCB3aXRoIGEgcG9wIHN0YXRlIHRoZW4gd2UnbGwgZ2V0IGFuIG9uUG9wU3RhdGUgd2l0aCB0aGUgbG9jYXRpb25DaGFuZ2VUcmlnZ2VyVXJsIGJ1dCBubyBjYW5jZWwgZXZlbnQgd2l0aCBpdC5cbiAgICAgIGlmICh0aGlzLmdvdFBvcFN0YXRlV2l0aExlYXZpbmdVcmwgJiYgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKSkge1xuICAgICAgICBjb25zdCBpbnRlcmFjdGlvbklkcyA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkcy52YWx1ZTtcbiAgICAgICAgdGhpcy5yZXNldEJyb3dzZXJMb2NhdGlvbih0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKHRoaXMuc3RhcnRpbmdVcmwpLnVwZGF0ZUludGVyYWN0aW9uSWRzKGludGVyYWN0aW9uSWRzKS51cmwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ290UG9wU3RhdGVXaXRoTGVhdmluZ1VybCB8fCB0aGlzLmxvY2F0aW9uQ2hhbmdlVHJpZ2dlclVybCA9PT0gZXZlbnQudXJsID8gdGhpcy5jcmVhdGVJZGxlU3RhdGUoKSA6IHRoaXMuaWdub3JlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblJvdXRlckVuZChldmVudDogTmF2aWdhdGlvbkVuZCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pZ25vcmUoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcik6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pZ25vcmUoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uUG9wU3RhdGUoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICB0aGlzLmdvdFBvcFN0YXRlV2l0aExlYXZpbmdVcmwgPSB0aGlzLmdvdFBvcFN0YXRlV2l0aExlYXZpbmdVcmwgfHwgZXZlbnQudXJsID09PSB0aGlzLmxvY2F0aW9uQ2hhbmdlVHJpZ2dlclVybDtcbiAgICAgIHJldHVybiB0aGlzLmlnbm9yZShldmVudCk7XG4gICAgfVxuXG4gICAgLy8gQFRyYWNlKClcbiAgICBhc3luYyBjYW5EZWFjdGl2YXRlUGxhY2UoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRVcmw6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+IHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZ25vcmUoZXZlbnQ6IFJvdXRlckV2ZW50LCByZWFzb24/OiBzdHJpbmcpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgcmVhc29uID0gcmVhc29uID8gYCAtPiAke3JlYXNvbn1gIDogJyc7XG4gICAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oYGlnbm9yaW5nIHJvdXRlciBldmVudCR7cmVhc29ufTogJHtldmVudC5jb25zdHJ1Y3Rvci5uYW1lfSAtPiAke2V2ZW50LnVybH1gKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfShpc0lkbDogJHt0aGlzLmlkbGV9LCBzdGFydGluZ1VybDogJHt0aGlzLnN0YXJ0aW5nVXJsfSwgbG9jYXRpb25DaGFuZ2VUcmlnZ2VyVXJsOiR7dGhpcy5sb2NhdGlvbkNoYW5nZVRyaWdnZXJVcmx9KWA7XG4gICAgfVxuXG4gIH1cbn1cbiJdfQ==
|
|
1029
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9ndWFyZHMvbmF2aWdhdGlvbi1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBUTVFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7O0FBRTNGOzs7O0lBQThDLDJDQUFnQjtJQVE1RCx5QkFBK0IsT0FBZ0M7UUFBL0QsWUFDRSxpQkFBTyxTQUNSO1FBRjhCLGFBQU8sR0FBUCxPQUFPLENBQXlCO1FBTnZELGFBQU8sR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQzs7SUFRcEQsQ0FBQztJQUVELHNCQUFJLGlDQUFJOzs7O1FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQy9CLENBQUM7OztPQUFBO0lBRUQsc0JBQUksaUNBQUk7Ozs7UUFBUjtZQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzlCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksd0NBQVc7Ozs7UUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQ0FBa0I7Ozs7UUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7UUFDekMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQ0FBa0I7Ozs7UUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7OztPQUFBOzs7OztJQUVELG9DQUFVOzs7O0lBQVYsVUFBVyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUss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bnQiOlsiaW1wb3J0IHsgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERzbCwgR2FyYmFnZUNvbGxlY3RvciwgbGFuZywgTG9nZ2VyLCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL2ludGVyYWN0aW9uL2ludGVyYWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IFVybFNuYXBzaG90IH0gZnJvbSAnLi4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyIH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcHJpdmF0ZSBfdmlzaXRzID0gbmV3IE1hcDxQbGFjZURlZmluaXRpb24sIFZpc2l0PigpO1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzVHJhbnNpdGlvbmFsOiBib29sZWFuO1xuICBhYnN0cmFjdCByZWFkb25seSBzdGFydGluZ1VybDogc3RyaW5nO1xuICBhYnN0cmFjdCByZWFkb25seSBpc1BvcFN0YXRlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0OiBOYXZpZ2F0aW9uU3RhdGUuQ29udGV4dCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBnZXQgaWRsZSgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNUcmFuc2l0aW9uYWw7XG4gIH1cblxuICBnZXQgcGxhY2VSb3V0ZXIoKTogUGxhY2VSb3V0ZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucGxhY2VSb3V0ZXI7XG4gIH1cblxuICBnZXQgaW50ZXJhY3Rpb25TZXJ2aWNlKCk6IEludGVyYWN0aW9uU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5pbnRlcmFjdGlvblNlcnZpY2U7XG4gIH1cblxuICBnZXQgaW50ZXJhY3Rpb25Db250ZXh0KCk6IEludGVyYWN0aW9uQ29udGV4dCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdG9yZVZpc2l0KHZpc2l0OiBWaXNpdCkge1xuICAgIHRoaXMuX3Zpc2l0cy5zZXQodmlzaXQucGxhY2VEZWZpbml0aW9uLCB2aXNpdCk7XG4gIH1cblxuICBnZXRWaXNpdEZvcihwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2l0cy5nZXQocGxhY2VEZWYpO1xuICB9XG5cbiAgb25QbGFjZU5hdmlnYXRpb25TdGFydCh2aXNpdDogVmlzaXQsIGluaXRpYWxVcmw6IHN0cmluZyk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oJ29uUGxhY2VOYXZpZ2F0aW9uU3RhcnQnKTtcbiAgfVxuXG4gIG9uUG9wU3RhdGUoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgb25Sb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmlsbGVnYWxUcmFuc2l0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbihldmVudCk7XG4gIH1cblxuICBvblJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmlsbGVnYWxUcmFuc2l0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbihldmVudCk7XG4gIH1cblxuICBvbkJhY2tDbGlja2VkRHVyaW5nTmF2aWdhdGlvbkludGVyYWN0aW9uKG5ld1VybDogc3RyaW5nKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbignb25CYWNrQ2xpY2tlZER1cmluZ05hdmlnYXRpb25JbnRlcmFjdGlvbicpO1xuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZVBsYWNlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0VXJsOiBVcmxTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFNuYXBzaG90PiB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oJ2NhbkRlYWN0aXZhdGVQbGFjZScpO1xuICB9XG5cbiAgZ2V0VmlzaXRzKCk6IFZpc2l0W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Zpc2l0cy52YWx1ZXMoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaWxsZWdhbFRyYW5zaXRpb248Uj4obWVzc2FnZTogc3RyaW5nIHwgUm91dGVyRXZlbnQpOiBSIHtcbiAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYCR7bWVzc2FnZS50b1N0cmluZygpfSBub3Qgc3VwcG9ydGVkIGJ5ICR7dGhpcy50b1N0cmluZygpfWApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGN1cnJlbnRSb3V0ZXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZVJvdXRlci5nZXRDdXJyZW50Um91dGVyVXJsKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlVHJhbnNpdGlvblN0YXRlRm9yKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBjb25zdCBwb3BzdGF0ZSA9IGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnO1xuICAgIHJldHVybiBwb3BzdGF0ZSA/XG4gICAgICB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpID9cbiAgICAgICAgbmV3IE5hdmlnYXRpb25TdGF0ZS5JbnRlcmFjdGlvblBvcFN0YXRlVHJhbnNpdGlvbih0aGlzLmNvbnRleHQsIHRoaXMuY3VycmVudFJvdXRlclVybCgpKSA6XG4gICAgICAgIG5ldyBOYXZpZ2F0aW9uU3RhdGUuUG9wU3RhdGVUcmFuc2l0aW9uKHRoaXMuY29udGV4dCwgdGhpcy5jdXJyZW50Um91dGVyVXJsKCkpXG4gICAgICA6XG4gICAgICB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpID9cbiAgICAgICAgbmV3IE5hdmlnYXRpb25TdGF0ZS5JbnRlcmFjdGlvblRyYW5zaXRpb24odGhpcy5jb250ZXh0LCB0aGlzLmN1cnJlbnRSb3V0ZXJVcmwoKSkgOlxuICAgICAgICBuZXcgTmF2aWdhdGlvblN0YXRlLk5hdmlnYXRpb25UcmFuc2l0aW9uKHRoaXMuY29udGV4dCwgdGhpcy5jdXJyZW50Um91dGVyVXJsKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUlkbGVTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKSA/XG4gICAgICBuZXcgTmF2aWdhdGlvblN0YXRlLklkbGVEdXJpbmdJbnRlcmFjdGlvbih0aGlzLmNvbnRleHQsIHRoaXMuY3VycmVudFJvdXRlclVybCgpKSA6XG4gICAgICBuZXcgTmF2aWdhdGlvblN0YXRlLklkbGUodGhpcy5jb250ZXh0KTtcbiAgfVxuXG4gIHJlc2V0QnJvd3NlckxvY2F0aW9uKHVybCkge1xuICAgIHRoaXMucGxhY2VSb3V0ZXIucmVzZXRCcm93c2VyTG9jYXRpb24odXJsKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIE5hdmlnYXRpb25TdGF0ZSB7XG5cbiAgZXhwb3J0IGNsYXNzIENvbnRleHQge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcmVhZG9ubHkgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgcmVhZG9ubHkgaW50ZXJhY3Rpb25TZXJ2aWNlOiBJbnRlcmFjdGlvblNlcnZpY2UsXG4gICAgICByZWFkb25seSBub3RpZnlTdWNjZXNzOiAoc3VjY2VzczogTmF2aWdhdGlvblN0YXRlKSA9PiB2b2lkKSB7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIElkbGUgZXh0ZW5kcyBOYXZpZ2F0aW9uU3RhdGUge1xuICAgIHJlYWRvbmx5IGlzVHJhbnNpdGlvbmFsID0gZmFsc2U7XG4gICAgcmVhZG9ubHkgc3RhcnRpbmdVcmwgPSBudWxsO1xuICAgIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICAgIHN1cGVyKGNvbnRleHQpO1xuICAgIH1cblxuICAgIG9uUGxhY2VOYXZpZ2F0aW9uU3RhcnQodmlzaXQ6IFZpc2l0LCBpbml0aWFsVXJsOiBzdHJpbmcpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgY29uc3QgbmF2aWdhdGlvblRyYW5zaXRpb24gPSBuZXcgTmF2aWdhdGlvblRyYW5zaXRpb24odGhpcy5jb250ZXh0LCBpbml0aWFsVXJsKTtcbiAgICAgIG5hdmlnYXRpb25UcmFuc2l0aW9uLnN0b3JlVmlzaXQodmlzaXQpO1xuICAgICAgcmV0dXJuIG5hdmlnYXRpb25UcmFuc2l0aW9uO1xuICAgIH1cblxuICAgIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KTogTmF2aWdhdGlvblN0YXRlIHtcblxuICAgICAgLy8gY2FsbGluZyBhbmd1bGFyTG9jYXRpb24uZ28oKSB0byBjbGVhciBiYWNrIHN0YXRlIGNhbiB0cmlnZ2VyIHJvdXRlciBjeWNsZXMgdG8gdGhlIGN1cnJlbnQgdXJsIGlmIHdlIGRvbid0IGlnbm9yZSB0aGVtXG4gICAgICBpZiAoZXZlbnQudXJsID09PSB0aGlzLmN1cnJlbnRSb3V0ZXJVcmwoKSkge1xuICAgICAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oYG5hdmlnYXRpb24gc3RhcnRlZCB0byBzYW1lIHVybCAtPiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnBsYWNlUm91dGVyLmhhc0FjdGl2ZUludGVyYWN0aW9uSWRzKGV2ZW50LnVybCkpIHtcbiAgICAgICAgTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGBuYXZpZ2F0aW9uIHN0YXJ0ZWQgd2l0aCBpbnRlcmFjdGlvbiBvdXRsZXQgLT4gJHtldmVudC51cmx9YCk7XG4gICAgICAgIHJldHVybiBuZXcgSW50ZXJhY3Rpb25UcmFuc2l0aW9uKHRoaXMuY29udGV4dCwgZXZlbnQudXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRyYW5zaXRpb25TdGF0ZUZvcihldmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgb25Qb3BTdGF0ZShldmVudDogTmF2aWdhdGlvblN0YXJ0KTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRyYW5zaXRpb25TdGF0ZUZvcihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TmF2aWdhdGlvblRyYW5zaXRpb24gZXh0ZW5kcyBOYXZpZ2F0aW9uU3RhdGUge1xuICAgIHJlYWRvbmx5IGlzVHJhbnNpdGlvbmFsID0gdHJ1ZTtcbiAgICBwcml2YXRlIGNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzID0gbmV3IE1hcDxQbGFjZUNvbXBvbmVudCwgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyPigpO1xuICAgIHByaXZhdGUgX2ludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0O1xuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDogQ29udGV4dCwgcmVhZG9ubHkgc3RhcnRpbmdVcmw6IHN0cmluZykge1xuICAgICAgc3VwZXIoY29udGV4dCk7XG4gICAgICB0aGlzLl9pbnRlcmFjdGlvbkNvbnRleHQgPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5fY3JlYXRlRXhjbHVzaXZlTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQoKTtcbiAgICAgIHRoaXMub25EaXNwb3NlKCgpID0+IHtcbiAgICAgICAgLy8gdGhlIGludGVyYWN0aW9uIGNvbnRleHQgY2FuIGJlIGRldGFjaGVkIGR1cmluZyB0aGUgYmFjayBidXR0b24gY2FuY2VsbGF0aW9uIHN0YXRlIHRyYW5zaXRpb25cbiAgICAgICAgLy8gYXMgdGhlIHRyYW5zaXRpb24gaXMgc3luY2hyb25vdXMgYW5kIGFjdGl2aXR5Q2FuY2VsbGF0aW9uIGlzbid0LiAgT3RoZXJ3aXNlIGRpc3Bvc2Ugd2lsbCBiZVxuICAgICAgICAvLyBjYWxsZWQgYmVmb3JlIHRoZSBjb250ZXh0IGhhcyBiZWVuIGNhbmNlbGxlZC4gIEl0IG1pZ2h0IGJlIHdvcmsgaGF2aW5nIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0XG4gICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgY2FuY2VsIGlmIHRoZSBjb250ZXh0IGlzIGRpc3Bvc2VkIHNvIHdlIGRvbid0IGhhdmUgd29ycnkgYWJvdXQgZGV0YWNoaW5nIGV0Yy5cbiAgICAgICAgaWYgKHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dCkge1xuICAgICAgICAgIHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dC5kaXNwb3NlKCk7IC8vIG9yIGRvIHNvbWV0aGluZyBsaWtlIGNhbmNlbEFuZERpc3Bvc2U/XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBpbnRlcmFjdGlvbkNvbnRleHQoKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGlvbkNvbnRleHQ7XG4gICAgfVxuXG4gICAgb25Sb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgLy8gYWN0aXZlIHNlc3Npb25zIGNhbiBoYXZlIG1hbnkgY2FuY2VsIHN0YXJ0IGN5Y2xlcyBkdWVcbiAgICAgIC8vIHRvIHBsYWNlIGd1YXJkIHJlZGlyZWN0c1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgLy8gbmF2aWdhdGlvbiBzdWNjZWVkZWRcbiAgICAgIHRoaXMuY29udGV4dC5ub3RpZnlTdWNjZXNzKHRoaXMpO1xuICAgICAgcmV0dXJuIG5ldyBJZGxlKHRoaXMuY29udGV4dCk7XG4gICAgfVxuXG4gICAgb25CYWNrQ2xpY2tlZER1cmluZ05hdmlnYXRpb25JbnRlcmFjdGlvbihsb2NhdGlvblRyaWdnZXJVcmw6IHN0cmluZyk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oYGJhY2sgYnV0dG9uIHByZXNzZWQgZHVyaW5nIG5hdmlnYXRpb24gc2Vzc2lvbiBpbnRlcmFjdGlvbiBwcm9taXNlYCk7XG4gICAgICAvLyBkZXRhY2ggdGhlIGludGVyYWN0aW9uIGZyb20gdGhlIHNlc3Npb24gc28gaXQgZG9lc24ndCBnZXQgZGlzcG9zZWQgdW50aWwgdGhlIGFjdGl2aXR5IGhhcyBjb21wbGV0ZWQuXG4gICAgICBjb25zdCBuYXZpZ2F0aW9uSW50ZXJhY3Rpb24gPSB0aGlzLmRldGFjaEludGVyYWN0aW9uQ29udGV4dCgpO1xuICAgICAgY29uc3QgeyB3aGVuIH0gPSBEc2wuZGlzcG9zZVdpdGgobmF2aWdhdGlvbkludGVyYWN0aW9uKTtcbiAgICAgIC8vIFRPRE86IEkgbmVlZCB0byBtYWtlIHRoZSBleGNsdXNpdmUgaW50ZXJhY3Rpb24gY29udGV4dCBkaXNhbGxvdyBuZXN0ZWQgYWN0aXZpdGllcyBvclxuICAgICAgLy8gICAgICAgdGhhdCB3b3VsZCBtZXNzIHRoaW5ncyB1cCBlbnRpcmVseS4gT3IsIGNhbiBJIGRvIGEgY29udGV4dC5hYm9ydEFsbCgpLnRoZW4oLi4pXG4gICAgICBuYXZpZ2F0aW9uSW50ZXJhY3Rpb24uY2FuY2VsQWN0aXZlQWN0aXZpdHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgbmF2aWdhdGlvbkludGVyYWN0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsZWREdXJpbmdOYXZpZ2F0aW9uSW50ZXJhY3Rpb24odGhpcy5jb250ZXh0LFxuICAgICAgICB0aGlzLnN0YXJ0aW5nVXJsLFxuICAgICAgICB0aGlzLmlzUG9wU3RhdGUsXG4gICAgICAgIGxvY2F0aW9uVHJpZ2dlclVybCk7XG4gICAgfVxuXG4gICAgLy8gQFRyYWNlKClcbiAgICBhc3luYyBjYW5EZWFjdGl2YXRlUGxhY2UoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRVcmw6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+IHtcbiAgICAgIC8vIGxvb2t1cCB0aGUgaGFuZGxlciBhbmQgY3JlYXRlIGl0IGlmIHdlJ3ZlIG5vdCBzZWVuIGl0IHlldFxuICAgICAgbGV0IGhhbmRsZXIgPSB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLmdldChjb21wb25lbnQpO1xuICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIGNvbnN0IGlzUHJpbWFyeUhhbmRsZXIgPSB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNpemUgPT09IDA7IC8vIG9ubHkgcHJpbWFyeSBoYW5kbGVyIGNhbmNlbHMgdGhlIGFwcCBtb2RlbCBpbnRlcmF0aW9uc1xuICAgICAgICBoYW5kbGVyID0gbmV3IFBsYWNlQ29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcihjb21wb25lbnQsIHRoaXMsIGlzUHJpbWFyeUhhbmRsZXIpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChjb21wb25lbnQsIGhhbmRsZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhbmRsZXIuY2FuRGVhY3RpdmF0ZShjdXJyZW50VXJsLCBuZXh0VXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGFjaEludGVyYWN0aW9uQ29udGV4dCgpOiBJbnRlcmFjdGlvbkNvbnRleHQge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dDtcbiAgICAgIHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dCA9IG51bGw7XG4gICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgTmF2aWdhdGlvblRyYW5zaXRpb24gZXh0ZW5kcyBBYnN0cmFjdE5hdmlnYXRpb25UcmFuc2l0aW9uIHtcbiAgICByZWFkb25seSBpc1BvcFN0YXRlID0gZmFsc2U7XG5cbiAgICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBvblJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgLy8gbmF2aWdhdGlvbiB3YXMgYWJvcnRlZC5cbiAgICAgIHJldHVybiBuZXcgSWRsZSh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfShzdGFydGluZ1VybDogJHt0aGlzLnN0YXJ0aW5nVXJsfSlgO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBQb3BTdGF0ZVRyYW5zaXRpb24gZXh0ZW5kcyBBYnN0cmFjdE5hdmlnYXRpb25UcmFuc2l0aW9uIHtcbiAgICByZWFkb25seSBpc1BvcFN0YXRlID0gdHJ1ZTtcblxuICAgIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBwcmVzZXJ2ZSB0aGUgdXJsIHdoZW4gYSBndWFyZCBjYW5jZWxzIHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMzU4NiNpc3N1ZWNvbW1lbnQtNDMyNzk1NzIwXG4gICAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oJ1dPUkstQVJPVU5EOiBVcGRhdGluZyBicm93c2VyIGxvY2F0aW9uIGFmdGVyIHBvcCBzdGF0ZSAtIHNlZSBhbmd1bGFyIGlzc3VlICMxMzU4NicpO1xuICAgICAgdGhpcy5yZXNldEJyb3dzZXJMb2NhdGlvbih0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICAgIHJldHVybiBuZXcgSWRsZSh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICAgIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcik6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICAvLyBuYXZpZ2F0aW9uIHdhcyBhYm9ydGVkLlxuICAgICAgaWYgKHRoaXMuY3VycmVudFJvdXRlclVybCgpICE9PSB0aGlzLnN0YXJ0aW5nVXJsKSB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBwcmVzZXJ2ZSB0aGUgdXJsIHdoZW4gYSBndWFyZCBjYW5jZWxzIHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNTg2I2lzc3VlY29tbWVudC00MzI3OTU3MjBcbiAgICAgICAgTG9nZ2VyLmdldCh0aGlzKS5pbmZvKCdXT1JLLUFST1VORDogVXBkYXRpbmcgYnJvd3NlciBsb2NhdGlvbiBhZnRlciBwb3Agc3RhdGUgLSBzZWUgYW5ndWxhciBpc3N1ZSAjMTM1ODYnKTtcbiAgICAgICAgdGhpcy5yZXNldEJyb3dzZXJMb2NhdGlvbih0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgSWRsZSh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIElkbGVEdXJpbmdJbnRlcmFjdGlvbiBleHRlbmRzIE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmVhZG9ubHkgaXNUcmFuc2l0aW9uYWwgPSBmYWxzZTtcbiAgICByZWFkb25seSBpc1BvcFN0YXRlID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBDb250ZXh0LCByZWFkb25seSBzdGFydGluZ1VybDogc3RyaW5nKSB7XG4gICAgICBzdXBlcihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBvblBsYWNlTmF2aWdhdGlvblN0YXJ0KHZpc2l0OiBWaXNpdCwgaW5pdGlhbFVybDogc3RyaW5nKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25UcmFuc2l0aW9uID0gbmV3IEludGVyYWN0aW9uVHJhbnNpdGlvbih0aGlzLmNvbnRleHQsIGluaXRpYWxVcmwpO1xuICAgICAgbmF2aWdhdGlvblRyYW5zaXRpb24uc3RvcmVWaXNpdCh2aXNpdCk7XG4gICAgICByZXR1cm4gbmF2aWdhdGlvblRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgLy8gQFRyYWNlKClcbiAgICBvblJvdXRlclN0YXJ0ZWQoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICByZXR1cm4gbmV3IEludGVyYWN0aW9uVHJhbnNpdGlvbih0aGlzLmNvbnRleHQsIGV2ZW50LnVybCk7XG4gICAgfVxuXG4gICAgLy8gQFRyYWNlKClcbiAgICBvblBvcFN0YXRlKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcmFjdGlvblBvcFN0YXRlVHJhbnNpdGlvbih0aGlzLmNvbnRleHQsIGV2ZW50LnVybCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SW50ZXJhY3Rpb25UcmFuc2l0aW9uIGV4dGVuZHMgQWJzdHJhY3ROYXZpZ2F0aW9uVHJhbnNpdGlvbiB7XG4gICAgcmVhZG9ubHkgaXNUcmFuc2l0aW9uYWwgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDogQ29udGV4dCwgcmVhZG9ubHkgc3RhcnRpbmdVcmw6IHN0cmluZykge1xuICAgICAgc3VwZXIoY29udGV4dCwgc3RhcnRpbmdVcmwpO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgc3RhdGUgZXhpc3RzIHRvIGhhbmRsZSBhbGwgZXZlbnRzIHdoaWxlIGFueSBraW5kIG9mIG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3MuICBUaGF0IHdheSBhbGwgb3RoZXIgc3RhdGVzIGNhblxuICAgKiBoYXBwaWx5IGlnbm9yZSBpbnRlcmFjdGlvbiBjb250ZXh0cy5cbiAgICovXG4gIGV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvblRyYW5zaXRpb24gZXh0ZW5kcyBBYnN0cmFjdEludGVyYWN0aW9uVHJhbnNpdGlvbiB7XG4gICAgcmVhZG9ubHkgaXNQb3BTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLy8gQFRyYWNlKClcbiAgICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICBpZiAodGhpcy5jb250ZXh0LmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpKSB7XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uSWRzID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzLnZhbHVlO1xuICAgICAgICB0aGlzLnJlc2V0QnJvd3NlckxvY2F0aW9uKHRoaXMucGxhY2VSb3V0ZXIucGFyc2VVcmwodGhpcy5zdGFydGluZ1VybCkudXBkYXRlSW50ZXJhY3Rpb25JZHMoaW50ZXJhY3Rpb25JZHMpLnVybCk7XG4gICAgICAgIHJldHVybiBuZXcgSWRsZUR1cmluZ0ludGVyYWN0aW9uKHRoaXMuY29udGV4dCwgdGhpcy5zdGFydGluZ1VybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IElkbGUodGhpcy5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcik6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICAvLyBuYXZpZ2F0aW9uIHdhcyBhYm9ydGVkLlxuICAgICAgcmV0dXJuIG5ldyBJZGxlRHVyaW5nSW50ZXJhY3Rpb24odGhpcy5jb250ZXh0LCB0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICB9XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIGlmICh0aGlzLmNvbnRleHQuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGxlRHVyaW5nSW50ZXJhY3Rpb24odGhpcy5jb250ZXh0LCB0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgSWRsZSh0aGlzLmNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHN0YXRlIGV4aXN0cyB0byBoYW5kbGUgYWxsIGV2ZW50cyB3aGlsZSBhbnkga2luZCBvZiBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzLiAgVGhhdCB3YXkgYWxsIG90aGVyIHN0YXRlcyBjYW5cbiAgICogaGFwcGlseSBpZ25vcmUgaW50ZXJhY3Rpb24gY29udGV4dHMuXG4gICAqL1xuICBleHBvcnQgY2xhc3MgSW50ZXJhY3Rpb25Qb3BTdGF0ZVRyYW5zaXRpb24gZXh0ZW5kcyBBYnN0cmFjdEludGVyYWN0aW9uVHJhbnNpdGlvbiB7XG4gICAgcmVhZG9ubHkgaXNQb3BTdGF0ZSA9IHRydWU7XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIGlmICh0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpKSB7XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uSWRzID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzLnZhbHVlO1xuICAgICAgICB0aGlzLnJlc2V0QnJvd3NlckxvY2F0aW9uKHRoaXMucGxhY2VSb3V0ZXIucGFyc2VVcmwodGhpcy5zdGFydGluZ1VybCkudXBkYXRlSW50ZXJhY3Rpb25JZHMoaW50ZXJhY3Rpb25JZHMpLnVybCk7XG4gICAgICAgIHJldHVybiBuZXcgSWRsZUR1cmluZ0ludGVyYWN0aW9uKHRoaXMuY29udGV4dCwgdGhpcy5zdGFydGluZ1VybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IElkbGUodGhpcy5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIGlmICh0aGlzLmNvbnRleHQuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGxlRHVyaW5nSW50ZXJhY3Rpb24odGhpcy5jb250ZXh0LCB0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgSWRsZSh0aGlzLmNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cblxuICBleHBvcnQgY2xhc3MgQ2FuY2VsbGVkRHVyaW5nTmF2aWdhdGlvbkludGVyYWN0aW9uIGV4dGVuZHMgTmF2aWdhdGlvblN0YXRlIHtcblxuICAgIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGdvdFBvcFN0YXRlV2l0aExlYXZpbmdVcmwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGNvbnRleHQ6IENvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgc3RhcnRpbmdVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICByZWFkb25seSBzdGFydGluZ0V2ZW50V2FzQVBvcFN0YXRlOiBib29sZWFuLFxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGxvY2F0aW9uQ2hhbmdlVHJpZ2dlclVybDogc3RyaW5nKSB7XG4gICAgICBzdXBlcihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBnZXQgaXNUcmFuc2l0aW9uYWwoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBvblJvdXRlclN0YXJ0ZWQoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pZ25vcmUoZXZlbnQpO1xuICAgIH1cblxuICAgIC8vIEBUcmFjZSgpXG4gICAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgLy8gRGVwZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiB0aGUgcm91dGVyIGFuZCB3aGF0IHdhcyBkb25lIHdlIGdldCBhIGRpZmZlcmVudFxuICAgICAgLy8gc2VxdWVuY2Ugb2YgZXZlbnRzLlxuICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gY2hhbmdlIHdhcyB0cmlnZ2VyZWQgYnkgY2xpY2tpbmcgYSBsaW5rIHdlJ2xsIGdldCBhIGNhbmNlbCB3aXRoIHRoZSBsb2NhdGlvbkNoYW5nZVRyaWdnZXJVcmwgYXMgdGhlIGZpbmFsIGV2ZW50LlxuICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gY2hhbmdlIHdhcyB0cmlnZ2VyZWQgd2l0aCBhIHBvcCBzdGF0ZSB0aGVuIHdlJ2xsIGdldCBhbiBvblBvcFN0YXRlIHdpdGggdGhlIGxvY2F0aW9uQ2hhbmdlVHJpZ2dlclVybCBidXQgbm8gY2FuY2VsIGV2ZW50IHdpdGggaXQuXG4gICAgICBpZiAodGhpcy5nb3RQb3BTdGF0ZVdpdGhMZWF2aW5nVXJsICYmIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25JZHMgPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMudmFsdWU7XG4gICAgICAgIHRoaXMucmVzZXRCcm93c2VyTG9jYXRpb24odGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybCh0aGlzLnN0YXJ0aW5nVXJsKS51cGRhdGVJbnRlcmFjdGlvbklkcyhpbnRlcmFjdGlvbklkcykudXJsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdvdFBvcFN0YXRlV2l0aExlYXZpbmdVcmwgfHwgdGhpcy5sb2NhdGlvbkNoYW5nZVRyaWdnZXJVcmwgPT09IGV2ZW50LnVybCA/IHRoaXMuY3JlYXRlSWRsZVN0YXRlKCkgOiB0aGlzLmlnbm9yZShldmVudCk7XG4gICAgfVxuXG4gICAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgcmV0dXJuIHRoaXMuaWdub3JlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgcmV0dXJuIHRoaXMuaWdub3JlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblBvcFN0YXRlKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiBOYXZpZ2F0aW9uU3RhdGUge1xuICAgICAgdGhpcy5nb3RQb3BTdGF0ZVdpdGhMZWF2aW5nVXJsID0gdGhpcy5nb3RQb3BTdGF0ZVdpdGhMZWF2aW5nVXJsIHx8IGV2ZW50LnVybCA9PT0gdGhpcy5sb2NhdGlvbkNoYW5nZVRyaWdnZXJVcmw7XG4gICAgICByZXR1cm4gdGhpcy5pZ25vcmUoZXZlbnQpO1xuICAgIH1cblxuICAgIC8vIEBUcmFjZSgpXG4gICAgYXN5bmMgY2FuRGVhY3RpdmF0ZVBsYWNlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0VXJsOiBVcmxTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFNuYXBzaG90PiB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWdub3JlKGV2ZW50OiBSb3V0ZXJFdmVudCwgcmVhc29uPzogc3RyaW5nKTogTmF2aWdhdGlvblN0YXRlIHtcbiAgICAgIHJlYXNvbiA9IHJlYXNvbiA/IGAgLT4gJHtyZWFzb259YCA6ICcnO1xuICAgICAgTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGBpZ25vcmluZyByb3V0ZXIgZXZlbnQke3JlYXNvbn06ICR7ZXZlbnQuY29uc3RydWN0b3IubmFtZX0gLT4gJHtldmVudC51cmx9YCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0oaXNJZGw6ICR7dGhpcy5pZGxlfSwgc3RhcnRpbmdVcmw6ICR7dGhpcy5zdGFydGluZ1VybH0sIGxvY2F0aW9uQ2hhbmdlVHJpZ2dlclVybDoke3RoaXMubG9jYXRpb25DaGFuZ2VUcmlnZ2VyVXJsfSlgO1xuICAgIH1cblxuICB9XG59XG4iXX0=
|
|
@@ -6,7 +6,7 @@ import * as tslib_1 from "tslib";
|
|
|
6
6
|
import { Location } from '@angular/common';
|
|
7
7
|
import { Injectable } from '@angular/core';
|
|
8
8
|
import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router, UrlSerializer } from '@angular/router';
|
|
9
|
-
import { assert, Dsl, GarbageCollector, lang, Logger, MutableListModel, MutableStream, MutableValueModel
|
|
9
|
+
import { assert, Dsl, GarbageCollector, lang, Logger, MutableListModel, MutableStream, MutableValueModel } from '@coolon/pectin';
|
|
10
10
|
import _ from 'lodash';
|
|
11
11
|
import { InteractionService } from '../interaction/services/interaction.service';
|
|
12
12
|
import { NavigationState } from './guards/navigation-state';
|
|
@@ -477,12 +477,16 @@ var PlaceRouter = /** @class */ (function (_super) {
|
|
|
477
477
|
function (url) {
|
|
478
478
|
return this.getActiveInteractionIdsFromUrl(url).length > 0;
|
|
479
479
|
};
|
|
480
|
+
// @Trace()
|
|
481
|
+
// @Trace()
|
|
480
482
|
/**
|
|
481
483
|
* @param {?} urlSnapshot
|
|
482
484
|
* @param {?=} navigationExtras
|
|
483
485
|
* @return {?}
|
|
484
486
|
*/
|
|
485
|
-
PlaceRouter.prototype.navigateByUrl =
|
|
487
|
+
PlaceRouter.prototype.navigateByUrl =
|
|
488
|
+
// @Trace()
|
|
489
|
+
/**
|
|
486
490
|
* @param {?} urlSnapshot
|
|
487
491
|
* @param {?=} navigationExtras
|
|
488
492
|
* @return {?}
|
|
@@ -565,12 +569,6 @@ var PlaceRouter = /** @class */ (function (_super) {
|
|
|
565
569
|
{ type: InteractionService }
|
|
566
570
|
]; };
|
|
567
571
|
/** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i1.UrlSerializer), i0.ɵɵinject(i2.Location), i0.ɵɵinject(i3.PlaceHistory), i0.ɵɵinject(i4.InteractionService)); }, token: PlaceRouter, providedIn: "root" });
|
|
568
|
-
tslib_1.__decorate([
|
|
569
|
-
Trace(),
|
|
570
|
-
tslib_1.__metadata("design:type", Function),
|
|
571
|
-
tslib_1.__metadata("design:paramtypes", [UrlSnapshot, Object]),
|
|
572
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
573
|
-
], PlaceRouter.prototype, "navigateByUrl", null);
|
|
574
572
|
return PlaceRouter;
|
|
575
573
|
}(GarbageCollector));
|
|
576
574
|
export { PlaceRouter };
|
|
@@ -625,4 +623,4 @@ if (false) {
|
|
|
625
623
|
*/
|
|
626
624
|
PlaceRouter.prototype.interactionService;
|
|
627
625
|
}
|
|
628
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFHTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsTUFBTSxFQUNOLGFBQWEsRUFDZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxNQUFNLEVBRU4sR0FBRyxFQUNILGdCQUFnQixFQUVoQixJQUFJLEVBRUosTUFBTSxFQUNOLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLEtBQUssRUFHTixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBSTdDO0lBR2lDLHVDQUFnQjtJQVUvQyxxQkFBNkIsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLGVBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLGtCQUFzQztRQUpuRSxZQUtFLGlCQUFPLFNBZ0VSO1FBckU0QixZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWUsR0FBZixlQUFlLENBQVU7UUFDekIsa0JBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsd0JB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LENBQUM7aUJBQ0o7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7Z0JBL1BGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBN0JDLE1BQU07Z0JBQ04sYUFBYTtnQkFYTixRQUFRO2dCQWdDUixZQUFZO2dCQUZaLGtCQUFrQjs7O0lBNk56QjtRQURDLEtBQUssRUFBRTs7aURBQ21CLFdBQVc7O29EQUVyQztzQkE3UEg7Q0FxU0MsQUFoUUQsQ0FHaUMsZ0JBQWdCLEdBNlBoRDtTQTdQWSxXQUFXOzs7Ozs7SUFFdEIsNENBQWtGOzs7OztJQUNsRixvQ0FBK0Q7O0lBRS9ELDJDQUFtRDs7SUFDbkQsdUNBQXNFOzs7OztJQUN0RSxnREFBMkQ7Ozs7O0lBQzNELGdEQUFtRjs7Ozs7SUFFdkUsNkJBQStCOzs7OztJQUMvQixvQ0FBNkM7Ozs7O0lBQzdDLHNDQUEwQzs7Ozs7SUFDMUMsbUNBQTJDOzs7OztJQUMzQyx5Q0FBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uRXh0cmFzLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgVXJsU2VyaWFsaXplclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIEhhc09uZUluZGV4Q2hhaW4sXG4gIGxhbmcsXG4gIExpc3RNb2RlbCxcbiAgTG9nZ2VyLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBNdXRhYmxlU3RyZWFtLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVHJhY2UsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhdGUgfSBmcm9tICcuL2d1YXJkcy9uYXZpZ2F0aW9uLXN0YXRlJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4vcGxhY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uU3RhdGVNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU3RhdGU+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVZpc2l0cyA9IG5ldyBNdXRhYmxlTGlzdE1vZGVsPFZpc2l0PigpO1xuXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25JblByb2dyZXNzOiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuICByZWFkb25seSBhY3RpdmVWaXNpdEluZGV4OiBIYXNPbmVJbmRleENoYWluPCdwbGFjZURlZmluaXRpb24nLCBWaXNpdD47XG4gIHByaXZhdGUgX25hdmlnYXRpb25TZXNzaW9uQ29udGV4dDogTmF2aWdhdGlvblN0YXRlLkNvbnRleHQ7XG4gIHByaXZhdGUgX25hdmlnYXRpb25TdGF0ZVR5cGVNb2RlbDogVmFsdWVNb2RlbENoYWluPENvbnN0cnVjdGFibGU8TmF2aWdhdGlvblN0YXRlPj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJMb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJhY3Rpb25TZXJ2aWNlOiBJbnRlcmFjdGlvblNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5hY3RpdmVWaXNpdEluZGV4ID0gY2hhaW4odGhpcy5fYWN0aXZlVmlzaXRzKS5pbmRleEJ5KCdwbGFjZURlZmluaXRpb24nKTtcbiAgICB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU3RhdGVNb2RlbCkucGx1Y2soJ2lzVHJhbnNpdGlvbmFsJyk7XG4gICAgdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Db250ZXh0ID0gbmV3IE5hdmlnYXRpb25TdGF0ZS5Db250ZXh0KHRoaXMsIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLCBzZXNzaW9uID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc05hdmlnYXRpb25TdWNjZXNzKHNlc3Npb24pO1xuICAgIH0pO1xuICAgIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnZhbHVlID0gbmV3IE5hdmlnYXRpb25TdGF0ZS5JZGxlKHRoaXMuX25hdmlnYXRpb25TZXNzaW9uQ29udGV4dCk7XG4gICAgdGhpcy5fbmF2aWdhdGlvblN0YXRlVHlwZU1vZGVsID0gY2hhaW4odGhpcy5fbmF2aWdhdGlvblN0YXRlTW9kZWwpLm1hcChzdGF0ZSA9PiBzdGF0ZS5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RhYmxlPE5hdmlnYXRpb25TdGF0ZT4pO1xuXG4gICAgLy8gVE9ETzogbWFrZSBzZXR1cCB0aGUgY2FsbGJhY2tzIGluIGR1cmluZyBtb2R1bGUgaW5pdGlhdGlvbiB0byBtYWtlIHRoaXMgdGVzdGFibGUuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAvLyBSb3V0aW5nIGV2ZW50IHNlcXVlbmNlXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIC0tPiByZWRpcmVjdCwgZ28gYXJvdW5kIGFnYWluIGluIHRoZSBzYW1lIHNlc3Npb25cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgLS0+IG5hdmlnYXRpb24gY29tcGxldGUsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVycm9yIC0tPiBuYXZpZ2F0aW9uIGFib3J0ZWQsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICBpZiAoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09ICdwb3BzdGF0ZScpIHtcbiAgICAgICAgICB0aGlzLnJ1blN0YXRlVHJhbnNpdGlvbihzdGF0ZSA9PiBzdGF0ZS5vblBvcFN0YXRlKGV2ZW50KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ydW5TdGF0ZVRyYW5zaXRpb24oc3RhdGUgPT4gc3RhdGUub25Sb3V0ZXJTdGFydGVkKGV2ZW50KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgICAgICB0aGlzLnJ1blN0YXRlVHJhbnNpdGlvbihzdGF0ZSA9PiBzdGF0ZS5vblJvdXRlckVuZChldmVudCkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgdGhpcy5ydW5TdGF0ZVRyYW5zaXRpb24oc3RhdGUgPT4gc3RhdGUub25Sb3V0ZXJFcnJvcihldmVudCkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgIHRoaXMucnVuU3RhdGVUcmFuc2l0aW9uKHN0YXRlID0+IHN0YXRlLm9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBQdXNoIGRpYWxvZyBzdGF0ZSB0byB0aGUgdXJsIHNvIHdlIGNhbiBjYXB0dXJlIHRoZSBiYWNrIGJ1dHRvbi5cbiAgICB3aGVuLmxpc3RPZih0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMpLmNoYW5nZXMoKGlkcywgcHJldmlvdXMpID0+IHtcbiAgICAgIHRoaXMuc3luY0ludGVyYWN0aW9uSWRzV2l0aFJvdXRlcihpZHMsIHByZXZpb3VzKTtcbiAgICB9LCB7IHVubGVzczogdGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyB9KTsgLy8gVE9ETzogSSB0aGluayB0aGUgZXhjbHVzaXZlIGludGVyYWN0aW9uIHByZXZlbnRzIGludGVyYWN0aW9ucyBzdGFydGluZyB3aGlsZSBpdCdzIGFjdGl2ZSBzbyB3ZSBtaWdodCBub3QgbmVlZCB0aGlzLlxuXG4gICAgY29uc3QgdXJsQ2hhbmdlcyA9IG5ldyBNdXRhYmxlU3RyZWFtPHsgdXJsOiBzdHJpbmcsIHN0YXRlOiBOYXZpZ2F0aW9uU3RhdGUgfT4oKTtcblxuICAgIC8vIFRoZSBhbmd1bGFyIHJvdXRlciBkb2Vzbid0IGFsd2F5cyBmaXJlIHJvdXRlciBldmVudHMgd2hlbiB0aGUgYmFjayBidXR0b24gaXMgcHVzaGVkIHdoaWxlIGEgbmF2aWdhdGlvblxuICAgIC8vIHNlc3Npb24gaXMgaW4gcHJvZ3Jlc3MuICBTb21ldGltZXMgd2Ugb25seSBrbm93IGFib3V0IGl0IGZyb20gdGhlIHVybCBjaGFuZ2UuXG4gICAgLy8gSU1QT1JUQU5UIE9SREVSIERFUEVOREVOQ1lcbiAgICAvLyBUaGlzIG9ubHkgd29ya3MgYmVjYXVzZSB3ZSdyZSBub3RpZmllZCBvZiB0aGUgY2hhbmdlIGFmdGVyIHRoZSByb3V0ZXIgaGFzIHN0YXJ0ZWQgcmVhY3RpbmcgdG8gaXQuICBUaGlzXG4gICAgLy8gd2UgY2FuIGNhbiB1c2Ugb3VyIG5hdmlnYXRpb25TdGF0ZSB0byBkZXRlcm1pbmUgdGhpbmdzLlxuICAgIGFuZ3VsYXJMb2NhdGlvbi5vblVybENoYW5nZSh1cmwgPT4ge1xuICAgICAgY29uc3QgbmF2aWdhdGlvblN0YXRlID0gdGhpcy5fbmF2aWdhdGlvblN0YXRlTW9kZWwudmFsdWU7XG4gICAgICBjb25zb2xlLmxvZyhgVVJMQ2hhbmdlIC0+ICR7dXJsfWAsIHsgc3RhdGU6IG5hdmlnYXRpb25TdGF0ZSB9KTtcbiAgICAgIHVybENoYW5nZXMucHVibGlzaCh7IHVybCwgc3RhdGU6IG5hdmlnYXRpb25TdGF0ZSB9KTtcblxuICAgICAgLy8gVGhlIHVybCBoYXMgY2hhbmdlZCB3aGlsZSB3ZSdyZSBpbiBhIHRyYW5zaXRpb25hbCBzdGF0ZVxuICAgICAgaWYgKG5hdmlnYXRpb25TdGF0ZS5pc1RyYW5zaXRpb25hbCkge1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uSW50ZXJhY3Rpb24gPSB0aGlzLm5hdmlnYXRpb25TdGF0ZS5pbnRlcmFjdGlvbkNvbnRleHQ7XG4gICAgICAgIGlmIChuYXZpZ2F0aW9uSW50ZXJhY3Rpb24gJiYgbmF2aWdhdGlvbkludGVyYWN0aW9uLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICB0aGlzLnJ1blN0YXRlVHJhbnNpdGlvbihzdGF0ZSA9PiBzdGF0ZS5vbkJhY2tDbGlja2VkRHVyaW5nTmF2aWdhdGlvbkludGVyYWN0aW9uKHVybCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NOYXZpZ2F0aW9uU3VjY2VzcyhzZXNzaW9uOiBOYXZpZ2F0aW9uU3RhdGUpIHtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgdmlzaXRzIGJlZm9yZSB0aGUgc2Vzc2lvbiBmaW5pc2hlcy4gIFRoaXMgYWxsb3dzIHRoZSBwbGFjZU91dGV0cyB0byBpZ25vcmUgdmlzaXRcbiAgICAvLyBjaGFuZ2VzIHRoYXQgb2NjdXIgd2hpbGUgcm91dGVyTmF2aWdhdGlvbkFjdGl2ZSBpcyB0cnVlLlxuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzLnZhbHVlKTtcbiAgICBjb25zdCB2aXNpdHMgPSBzZXNzaW9uLmdldFZpc2l0cygpO1xuICAgIHZpc2l0cy5mb3JFYWNoKHYgPT4gdGhpcy5wbGFjZUhpc3RvcnkuYWRkKHYpKTtcbiAgICB0aGlzLl9hY3RpdmVWaXNpdHMudmFsdWUgPSB2aXNpdHM7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblN0YXRlKCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnZhbHVlO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TdGF0ZU1vZGVsKCk6IFZhbHVlTW9kZWw8TmF2aWdhdGlvblN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0cygpOiBMaXN0TW9kZWw8VmlzaXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmlzaXRzLnJlYWRvbmx5O1xuICB9XG5cbiAgLyoqXG4gICAqICBwbGFjZVJvdXRlci5uYXZpZ2F0ZShwbGFjZURlc3RpbmF0aW9ucy5zb21lUGxhY2UuY3JlYXRlVmlzaXQocm91dGVJZCwgLi4udmlzaXRQYXJhbXMpKTtcbiAgICogQHBhcmFtIHZpc2l0XG4gICAqL1xuICBhc3luYyBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQsIG9wdGlvbnM/OiB7IHJlbGF0aXZlVG86IEFjdGl2YXRlZFJvdXRlIH0pIHtcbiAgICB0aGlzLmRvTmF2aWdhdGlvbih2aXNpdCwgYXN5bmMgcm91dGVyID0+IHtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgICAgICB2aXNpdC5wbGFjZURlZmluaXRpb24ucGF0aCxcbiAgICAgICAgLi4udGhpcy5jcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQpXG4gICAgICBdO1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogb3B0aW9ucyA/IG9wdGlvbnMucmVsYXRpdmVUbyA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcmV2aW91czogVmlzaXQsIG5leHQ6IFZpc2l0KSB7XG4gICAgLy8gd2UgaGF2ZSB0byBwdXNoIHRvIGhpc3Rvcnkgc28gb3VyIHJlbWVtYmVyIHNhbml0aXNlcnMgZG9uJ3QgcGljayB1cCB0aGUgcHJldmlvdXMgdmFsdWVcbiAgICAvLyB3aGVuIGl0J3MgYmVlbiBjbGVhcmVkIGJ5IHRoZSB1c2VyLlxuICAgIHRoaXMucGxhY2VIaXN0b3J5LmFkZChuZXh0KTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBpZiAobmV4dC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20ocHJldmlvdXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24obmV4dCwgcm91dGVyID0+IHtcbiAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnBhcnNlVXJsKHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkudXBkYXRlVmlzaXRTZWdtZW50cyhuZXh0KTtcbiAgICAgICAgY29uc29sZS5sb2coJyMjIyBQdXNoIENoYW5nZXMgdG8gcm91dGUgUmVkaXJlY3QnLCB7IGNvbW1hbmRzOiB1cmxTbmFwc2hvdC51cmwgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZG9OYXZpZ2F0aW9uKHZpc2l0OiBWaXNpdCwgcnVuTmF2aWdhdGlvbkNvbW1hbmRzOiAocm91dGVyOiBSb3V0ZXIpID0+IGFueSkge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzLnZhbHVlKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZSgnTmF2aWdhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzJyk7XG4gICAgfVxuICAgIHRoaXMucnVuU3RhdGVUcmFuc2l0aW9uKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMubmF2aWdhdGlvblN0YXRlLm9uUGxhY2VOYXZpZ2F0aW9uU3RhcnQodmlzaXQsIHRoaXMuZ2V0Q3VycmVudFJvdXRlclVybCgpKTtcbiAgICAgIHNlc3Npb24uc3RvcmVWaXNpdCh2aXNpdCk7XG4gICAgICByZXR1cm4gc2Vzc2lvbjtcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuTmF2aWdhdGlvbkNvbW1hbmRzKHRoaXMucm91dGVyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gUm91dGVyIGhhcyBmaW5pc2hlZCAoc2luY2UgdGhlcmUgd2FzIG5vIHJvdXRlciBjaGFuZ2UgcmVxdWlyZWQpIHNvIHdlXG4gICAgICAvLyBuZWVkIHRvIGVuZCB0aGUgbmF2aWdhdGlvbiBzZXNzaW9uLlxuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblN0YXRlLmlzVHJhbnNpdGlvbmFsICYmICF0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpKSB7XG4gICAgICAgIHRoaXMucnVuU3RhdGVUcmFuc2l0aW9uKHNlc3Npb24gPT4gc2Vzc2lvbi5vblJvdXRlckVuZChuZXcgTmF2aWdhdGlvbkVuZCgtMSwgJycsICcnKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCBydW5TdGF0ZVRyYW5zaXRpb24odHJhbnNpdGlvbjogKG5hdmlnYXRpb25TZXNzaW9uOiBOYXZpZ2F0aW9uU3RhdGUpID0+IE5hdmlnYXRpb25TdGF0ZSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5fbmF2aWdhdGlvblN0YXRlTW9kZWwudmFsdWU7XG4gICAgY29uc3QgbmV4dCA9IHRyYW5zaXRpb24odGhpcy5uYXZpZ2F0aW9uU3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnZhbHVlID0gbmV4dDtcbiAgICBpZiAobmV4dCAhPT0gcHJldmlvdXMpIHtcbiAgICAgIHByZXZpb3VzLmRpc3Bvc2UoKTtcbiAgICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhgUm91dGVyIFN0YXRlIFRyYW5zaXRpb246ICR7cHJldmlvdXMudG9TdHJpbmcoKX0gLT4gJHtuZXh0LnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQ6IFZpc2l0KSB7XG4gICAgY29uc3QgZGVmID0gdmlzaXQucGxhY2VEZWZpbml0aW9uO1xuICAgIHJldHVybiB2aXNpdC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZUlkKHZpc2l0KSwgZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldIDpcbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KV07XG4gIH1cblxuICBleHRyYWN0Q2hpbGRQYXRoKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYW55W10ge1xuICAgIHJldHVybiBfLmZsYXR0ZW4oYWN0aXZhdGVkUm91dGUuY2hpbGRyZW4ubWFwKGNoaWxkID0+IGNoaWxkLnVybCkpO1xuICB9XG5cbiAgcGFyc2VVcmwodXJsOiBzdHJpbmcpOiBVcmxTbmFwc2hvdCB7XG4gICAgcmV0dXJuIG5ldyBVcmxTbmFwc2hvdCh0aGlzLnVybFNlcmlhbGl6ZXIsIHVybCk7XG4gIH1cblxuICByZXNldEJyb3dzZXJMb2NhdGlvbih1cmw6IHN0cmluZykge1xuICAgIHRoaXMuYW5ndWxhckxvY2F0aW9uLmdvKHVybCk7XG4gIH1cblxuICBjcmVhdGVVcmxTbmFwc2hvdCguLi52aXNpdHM6IFZpc2l0W10pOiBVcmxTbmFwc2hvdCB7XG4gICAgY29uc3QgYml0cyA9IFtdO1xuICAgIHZpc2l0cy5mb3JFYWNoKHYgPT4ge1xuICAgICAgYml0cy5wdXNoKHRoaXMucGFyc2VVcmwoYCR7di5wbGFjZURlZmluaXRpb24ucGF0aH1gKS51cGRhdGVWaXNpdFNlZ21lbnRzKHYpLnVybCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwoYml0cy5qb2luKCcnKSk7XG4gIH1cblxuICBnZXRDdXJyZW50Um91dGVyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnJvdXRlclN0YXRlID8gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsIDogbnVsbDtcbiAgfVxuXG4gIGdldEN1cnJlbnRSb3V0ZVNuYXBzaG90KCk6IFVybFNuYXBzaG90IHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVVybCh0aGlzLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSk7XG4gIH1cblxuICBnZXRBY3RpdmVJbnRlcmFjdGlvbklkc0Zyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwodXJsKS5nZXRJbnRlcmFjdGlvbklkcygpO1xuICB9XG5cblxuICAvLyBAVHJhY2UoKVxuICBoYXNBY3RpdmVJbnRlcmFjdGlvbklkcyh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUludGVyYWN0aW9uSWRzRnJvbVVybCh1cmwpLmxlbmd0aCA+IDA7XG4gIH1cblxuICBAVHJhY2UoKVxuICBuYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90OiBVcmxTbmFwc2hvdCwgbmF2aWdhdGlvbkV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdC51cmxUcmVlLCBuYXZpZ2F0aW9uRXh0cmFzKTtcbiAgfVxuXG4gIC8vIFRPRE86IFNob3VsZCB0aGlzIGJlIG1vdmVkIHRvIHRoZSBuYXZpZ2F0aW9uIHN0YXRlcz9cbiAgc3luY0ludGVyYWN0aW9uSWRzV2l0aFJvdXRlcihjdXJyZW50SWRzOiBzdHJpbmdbXSwgcHJldmlvdXM6IHN0cmluZ1tdKSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MudmFsdWUpOyAvLyBVcGRhdGluZyBpbnRlcmFjdGlvbiByb3V0ZXMgZHVyaW5nIGFuIGV4aXN0aW5nIG5hdmlnYXRpb24gYnJlYWtzIGFsbCB0aGUgdGhpbmdzLlxuICAgIGNvbnNvbGUubG9nKHtcbiAgICAgIHN0YXJ0aW5nQWN0aXZpdHk6IGN1cnJlbnRJZHMubGVuZ3RoID4gcHJldmlvdXMubGVuZ3RoLFxuICAgICAgd2FzQmFja0J1dHRvbjogdGhpcy5uYXZpZ2F0aW9uU3RhdGUuaXNQb3BTdGF0ZVxuICAgIH0pO1xuXG4gICAgaWYgKF8uaXNFcXVhbChjdXJyZW50SWRzLCBwcmV2aW91cykpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdhY3Rpdml0eSBpZHMgd2VyZSB0aGUgc2FtZSwgc2tpcHBpbmcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT01HLCB0aGlzIGlzIG51dHMuXG4gICAgICBjb25zdCBhZGRpbmdBY3Rpdml0eSA9IGN1cnJlbnRJZHMubGVuZ3RoID4gcHJldmlvdXMubGVuZ3RoO1xuICAgICAgY29uc3QgaXNGaXJzdEFjdGl2aXR5ID0gYWRkaW5nQWN0aXZpdHkgJiYgcHJldmlvdXMubGVuZ3RoIDwgMTtcbiAgICAgIGNvbnN0IHJlbW92aW5nTGFzdEFjdGl2aXR5ID0gY3VycmVudElkcy5sZW5ndGggPCAxO1xuICAgICAgaWYgKGFkZGluZ0FjdGl2aXR5KSB7Ly8gd2UncmUgc3RhcnRpbmcgYSBuZXcgYWN0aXZpdHksIHB1c2ggdGhlIGNoYW5nZSB0byB0aGUgaGlzdG9yeSBhbmQgdXBkYXRlIHRoZSB1cmxcbiAgICAgICAgY29uc29sZS5sb2coJ2FkZGluZyBhY3Rpdml0eScpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRDdXJyZW50Um91dGVTbmFwc2hvdCgpLnVwZGF0ZUludGVyYWN0aW9uSWRzKGN1cnJlbnRJZHMpLCB7XG4gICAgICAgICAgcmVwbGFjZVVybDogIWlzRmlyc3RBY3Rpdml0eSAvLyB3ZSBkb24ndCBsZXQgdGhlIGhpc3RvcnkgcGlsZSB1cFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy5nZXRDdXJyZW50Um91dGVTbmFwc2hvdCgpLnVwZGF0ZUludGVyYWN0aW9uSWRzKGN1cnJlbnRJZHMpO1xuICAgICAgICBpZiAocmVtb3ZpbmdMYXN0QWN0aXZpdHkpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QsIHtcbiAgICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIGZvciBzb21lIHJlYXNvbiB3ZSBuZWVkIHRvIHBvcCB0aGUgbGFzdCBoaXN0b3J5IG9mZiB0aGUgc3RhY2sgd2hlbiBsZWF2aW5nIHRoZVxuICAgICAgICAgICAgLy8gYWN0aXZlIGFjdGl2aXR5IHN0YXRlLlxuICAgICAgICAgICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uYmFjaygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCwge1xuICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
626
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFHTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsTUFBTSxFQUNOLGFBQWEsRUFDZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxNQUFNLEVBRU4sR0FBRyxFQUNILGdCQUFnQixFQUVoQixJQUFJLEVBRUosTUFBTSxFQUNOLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsaUJBQWlCLEVBSWxCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFJN0M7SUFHaUMsdUNBQWdCO0lBVS9DLHFCQUE2QixNQUFjLEVBQ2QsYUFBNEIsRUFDNUIsZUFBeUIsRUFDekIsWUFBMEIsRUFDMUIsa0JBQXNDO1FBSm5FLFlBS0UsaUJBQU8sU0FnRVI7UUFyRTRCLFlBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZSxHQUFmLGVBQWUsQ0FBVTtRQUN6QixrQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix3QkFBa0IsR0FBbEIs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QUFDLENBQUM7aUJBQ0o7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7Z0JBL1BGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBN0JDLE1BQU07Z0JBQ04sYUFBYTtnQkFYTixRQUFRO2dCQWdDUixZQUFZO2dCQUZaLGtCQUFrQjs7O3NCQTlCM0I7Q0FxU0MsQUFoUUQsQ0FHaUMsZ0JBQWdCLEdBNlBoRDtTQTdQWSxXQUFXOzs7Ozs7SUFFdEIsNENBQWtGOzs7OztJQUNsRixvQ0FBK0Q7O0lBRS9ELDJDQUFtRDs7SUFDbkQsdUNBQXNFOzs7OztJQUN0RSxnREFBMkQ7Ozs7O0lBQzNELGdEQUFtRjs7Ozs7SUFFdkUsNkJBQStCOzs7OztJQUMvQixvQ0FBNkM7Ozs7O0lBQzdDLHNDQUEwQzs7Ozs7SUFDMUMsbUNBQTJDOzs7OztJQUMzQyx5Q0FBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uRXh0cmFzLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgVXJsU2VyaWFsaXplclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIEhhc09uZUluZGV4Q2hhaW4sXG4gIGxhbmcsXG4gIExpc3RNb2RlbCxcbiAgTG9nZ2VyLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBNdXRhYmxlU3RyZWFtLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVHJhY2UsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhdGUgfSBmcm9tICcuL2d1YXJkcy9uYXZpZ2F0aW9uLXN0YXRlJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4vcGxhY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uU3RhdGVNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU3RhdGU+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVZpc2l0cyA9IG5ldyBNdXRhYmxlTGlzdE1vZGVsPFZpc2l0PigpO1xuXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25JblByb2dyZXNzOiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuICByZWFkb25seSBhY3RpdmVWaXNpdEluZGV4OiBIYXNPbmVJbmRleENoYWluPCdwbGFjZURlZmluaXRpb24nLCBWaXNpdD47XG4gIHByaXZhdGUgX25hdmlnYXRpb25TZXNzaW9uQ29udGV4dDogTmF2aWdhdGlvblN0YXRlLkNvbnRleHQ7XG4gIHByaXZhdGUgX25hdmlnYXRpb25TdGF0ZVR5cGVNb2RlbDogVmFsdWVNb2RlbENoYWluPENvbnN0cnVjdGFibGU8TmF2aWdhdGlvblN0YXRlPj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJMb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJhY3Rpb25TZXJ2aWNlOiBJbnRlcmFjdGlvblNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5hY3RpdmVWaXNpdEluZGV4ID0gY2hhaW4odGhpcy5fYWN0aXZlVmlzaXRzKS5pbmRleEJ5KCdwbGFjZURlZmluaXRpb24nKTtcbiAgICB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU3RhdGVNb2RlbCkucGx1Y2soJ2lzVHJhbnNpdGlvbmFsJyk7XG4gICAgdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Db250ZXh0ID0gbmV3IE5hdmlnYXRpb25TdGF0ZS5Db250ZXh0KHRoaXMsIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLCBzZXNzaW9uID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc05hdmlnYXRpb25TdWNjZXNzKHNlc3Npb24pO1xuICAgIH0pO1xuICAgIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnZhbHVlID0gbmV3IE5hdmlnYXRpb25TdGF0ZS5JZGxlKHRoaXMuX25hdmlnYXRpb25TZXNzaW9uQ29udGV4dCk7XG4gICAgdGhpcy5fbmF2aWdhdGlvblN0YXRlVHlwZU1vZGVsID0gY2hhaW4odGhpcy5fbmF2aWdhdGlvblN0YXRlTW9kZWwpLm1hcChzdGF0ZSA9PiBzdGF0ZS5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RhYmxlPE5hdmlnYXRpb25TdGF0ZT4pO1xuXG4gICAgLy8gVE9ETzogbWFrZSBzZXR1cCB0aGUgY2FsbGJhY2tzIGluIGR1cmluZyBtb2R1bGUgaW5pdGlhdGlvbiB0byBtYWtlIHRoaXMgdGVzdGFibGUuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAvLyBSb3V0aW5nIGV2ZW50IHNlcXVlbmNlXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIC0tPiByZWRpcmVjdCwgZ28gYXJvdW5kIGFnYWluIGluIHRoZSBzYW1lIHNlc3Npb25cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgLS0+IG5hdmlnYXRpb24gY29tcGxldGUsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVycm9yIC0tPiBuYXZpZ2F0aW9uIGFib3J0ZWQsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICBpZiAoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09ICdwb3BzdGF0ZScpIHtcbiAgICAgICAgICB0aGlzLnJ1blN0YXRlVHJhbnNpdGlvbihzdGF0ZSA9PiBzdGF0ZS5vblBvcFN0YXRlKGV2ZW50KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ydW5TdGF0ZVRyYW5zaXRpb24oc3RhdGUgPT4gc3RhdGUub25Sb3V0ZXJTdGFydGVkKGV2ZW50KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgICAgICB0aGlzLnJ1blN0YXRlVHJhbnNpdGlvbihzdGF0ZSA9PiBzdGF0ZS5vblJvdXRlckVuZChldmVudCkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgdGhpcy5ydW5TdGF0ZVRyYW5zaXRpb24oc3RhdGUgPT4gc3RhdGUub25Sb3V0ZXJFcnJvcihldmVudCkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgIHRoaXMucnVuU3RhdGVUcmFuc2l0aW9uKHN0YXRlID0+IHN0YXRlLm9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBQdXNoIGRpYWxvZyBzdGF0ZSB0byB0aGUgdXJsIHNvIHdlIGNhbiBjYXB0dXJlIHRoZSBiYWNrIGJ1dHRvbi5cbiAgICB3aGVuLmxpc3RPZih0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMpLmNoYW5nZXMoKGlkcywgcHJldmlvdXMpID0+IHtcbiAgICAgIHRoaXMuc3luY0ludGVyYWN0aW9uSWRzV2l0aFJvdXRlcihpZHMsIHByZXZpb3VzKTtcbiAgICB9LCB7IHVubGVzczogdGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyB9KTsgLy8gVE9ETzogSSB0aGluayB0aGUgZXhjbHVzaXZlIGludGVyYWN0aW9uIHByZXZlbnRzIGludGVyYWN0aW9ucyBzdGFydGluZyB3aGlsZSBpdCdzIGFjdGl2ZSBzbyB3ZSBtaWdodCBub3QgbmVlZCB0aGlzLlxuXG4gICAgY29uc3QgdXJsQ2hhbmdlcyA9IG5ldyBNdXRhYmxlU3RyZWFtPHsgdXJsOiBzdHJpbmcsIHN0YXRlOiBOYXZpZ2F0aW9uU3RhdGUgfT4oKTtcblxuICAgIC8vIFRoZSBhbmd1bGFyIHJvdXRlciBkb2Vzbid0IGFsd2F5cyBmaXJlIHJvdXRlciBldmVudHMgd2hlbiB0aGUgYmFjayBidXR0b24gaXMgcHVzaGVkIHdoaWxlIGEgbmF2aWdhdGlvblxuICAgIC8vIHNlc3Npb24gaXMgaW4gcHJvZ3Jlc3MuICBTb21ldGltZXMgd2Ugb25seSBrbm93IGFib3V0IGl0IGZyb20gdGhlIHVybCBjaGFuZ2UuXG4gICAgLy8gSU1QT1JUQU5UIE9SREVSIERFUEVOREVOQ1lcbiAgICAvLyBUaGlzIG9ubHkgd29ya3MgYmVjYXVzZSB3ZSdyZSBub3RpZmllZCBvZiB0aGUgY2hhbmdlIGFmdGVyIHRoZSByb3V0ZXIgaGFzIHN0YXJ0ZWQgcmVhY3RpbmcgdG8gaXQuICBUaGlzXG4gICAgLy8gd2UgY2FuIGNhbiB1c2Ugb3VyIG5hdmlnYXRpb25TdGF0ZSB0byBkZXRlcm1pbmUgdGhpbmdzLlxuICAgIGFuZ3VsYXJMb2NhdGlvbi5vblVybENoYW5nZSh1cmwgPT4ge1xuICAgICAgY29uc3QgbmF2aWdhdGlvblN0YXRlID0gdGhpcy5fbmF2aWdhdGlvblN0YXRlTW9kZWwudmFsdWU7XG4gICAgICBjb25zb2xlLmxvZyhgVVJMQ2hhbmdlIC0+ICR7dXJsfWAsIHsgc3RhdGU6IG5hdmlnYXRpb25TdGF0ZSB9KTtcbiAgICAgIHVybENoYW5nZXMucHVibGlzaCh7IHVybCwgc3RhdGU6IG5hdmlnYXRpb25TdGF0ZSB9KTtcblxuICAgICAgLy8gVGhlIHVybCBoYXMgY2hhbmdlZCB3aGlsZSB3ZSdyZSBpbiBhIHRyYW5zaXRpb25hbCBzdGF0ZVxuICAgICAgaWYgKG5hdmlnYXRpb25TdGF0ZS5pc1RyYW5zaXRpb25hbCkge1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uSW50ZXJhY3Rpb24gPSB0aGlzLm5hdmlnYXRpb25TdGF0ZS5pbnRlcmFjdGlvbkNvbnRleHQ7XG4gICAgICAgIGlmIChuYXZpZ2F0aW9uSW50ZXJhY3Rpb24gJiYgbmF2aWdhdGlvbkludGVyYWN0aW9uLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICB0aGlzLnJ1blN0YXRlVHJhbnNpdGlvbihzdGF0ZSA9PiBzdGF0ZS5vbkJhY2tDbGlja2VkRHVyaW5nTmF2aWdhdGlvbkludGVyYWN0aW9uKHVybCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NOYXZpZ2F0aW9uU3VjY2VzcyhzZXNzaW9uOiBOYXZpZ2F0aW9uU3RhdGUpIHtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgdmlzaXRzIGJlZm9yZSB0aGUgc2Vzc2lvbiBmaW5pc2hlcy4gIFRoaXMgYWxsb3dzIHRoZSBwbGFjZU91dGV0cyB0byBpZ25vcmUgdmlzaXRcbiAgICAvLyBjaGFuZ2VzIHRoYXQgb2NjdXIgd2hpbGUgcm91dGVyTmF2aWdhdGlvbkFjdGl2ZSBpcyB0cnVlLlxuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzLnZhbHVlKTtcbiAgICBjb25zdCB2aXNpdHMgPSBzZXNzaW9uLmdldFZpc2l0cygpO1xuICAgIHZpc2l0cy5mb3JFYWNoKHYgPT4gdGhpcy5wbGFjZUhpc3RvcnkuYWRkKHYpKTtcbiAgICB0aGlzLl9hY3RpdmVWaXNpdHMudmFsdWUgPSB2aXNpdHM7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblN0YXRlKCk6IE5hdmlnYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnZhbHVlO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TdGF0ZU1vZGVsKCk6IFZhbHVlTW9kZWw8TmF2aWdhdGlvblN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0cygpOiBMaXN0TW9kZWw8VmlzaXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmlzaXRzLnJlYWRvbmx5O1xuICB9XG5cbiAgLyoqXG4gICAqICBwbGFjZVJvdXRlci5uYXZpZ2F0ZShwbGFjZURlc3RpbmF0aW9ucy5zb21lUGxhY2UuY3JlYXRlVmlzaXQocm91dGVJZCwgLi4udmlzaXRQYXJhbXMpKTtcbiAgICogQHBhcmFtIHZpc2l0XG4gICAqL1xuICBhc3luYyBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQsIG9wdGlvbnM/OiB7IHJlbGF0aXZlVG86IEFjdGl2YXRlZFJvdXRlIH0pIHtcbiAgICB0aGlzLmRvTmF2aWdhdGlvbih2aXNpdCwgYXN5bmMgcm91dGVyID0+IHtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgICAgICB2aXNpdC5wbGFjZURlZmluaXRpb24ucGF0aCxcbiAgICAgICAgLi4udGhpcy5jcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQpXG4gICAgICBdO1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogb3B0aW9ucyA/IG9wdGlvbnMucmVsYXRpdmVUbyA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcmV2aW91czogVmlzaXQsIG5leHQ6IFZpc2l0KSB7XG4gICAgLy8gd2UgaGF2ZSB0byBwdXNoIHRvIGhpc3Rvcnkgc28gb3VyIHJlbWVtYmVyIHNhbml0aXNlcnMgZG9uJ3QgcGljayB1cCB0aGUgcHJldmlvdXMgdmFsdWVcbiAgICAvLyB3aGVuIGl0J3MgYmVlbiBjbGVhcmVkIGJ5IHRoZSB1c2VyLlxuICAgIHRoaXMucGxhY2VIaXN0b3J5LmFkZChuZXh0KTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBpZiAobmV4dC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20ocHJldmlvdXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24obmV4dCwgcm91dGVyID0+IHtcbiAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnBhcnNlVXJsKHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkudXBkYXRlVmlzaXRTZWdtZW50cyhuZXh0KTtcbiAgICAgICAgY29uc29sZS5sb2coJyMjIyBQdXNoIENoYW5nZXMgdG8gcm91dGUgUmVkaXJlY3QnLCB7IGNvbW1hbmRzOiB1cmxTbmFwc2hvdC51cmwgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZG9OYXZpZ2F0aW9uKHZpc2l0OiBWaXNpdCwgcnVuTmF2aWdhdGlvbkNvbW1hbmRzOiAocm91dGVyOiBSb3V0ZXIpID0+IGFueSkge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzLnZhbHVlKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZSgnTmF2aWdhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzJyk7XG4gICAgfVxuICAgIHRoaXMucnVuU3RhdGVUcmFuc2l0aW9uKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMubmF2aWdhdGlvblN0YXRlLm9uUGxhY2VOYXZpZ2F0aW9uU3RhcnQodmlzaXQsIHRoaXMuZ2V0Q3VycmVudFJvdXRlclVybCgpKTtcbiAgICAgIHNlc3Npb24uc3RvcmVWaXNpdCh2aXNpdCk7XG4gICAgICByZXR1cm4gc2Vzc2lvbjtcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuTmF2aWdhdGlvbkNvbW1hbmRzKHRoaXMucm91dGVyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gUm91dGVyIGhhcyBmaW5pc2hlZCAoc2luY2UgdGhlcmUgd2FzIG5vIHJvdXRlciBjaGFuZ2UgcmVxdWlyZWQpIHNvIHdlXG4gICAgICAvLyBuZWVkIHRvIGVuZCB0aGUgbmF2aWdhdGlvbiBzZXNzaW9uLlxuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblN0YXRlLmlzVHJhbnNpdGlvbmFsICYmICF0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpKSB7XG4gICAgICAgIHRoaXMucnVuU3RhdGVUcmFuc2l0aW9uKHNlc3Npb24gPT4gc2Vzc2lvbi5vblJvdXRlckVuZChuZXcgTmF2aWdhdGlvbkVuZCgtMSwgJycsICcnKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCBydW5TdGF0ZVRyYW5zaXRpb24odHJhbnNpdGlvbjogKG5hdmlnYXRpb25TZXNzaW9uOiBOYXZpZ2F0aW9uU3RhdGUpID0+IE5hdmlnYXRpb25TdGF0ZSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5fbmF2aWdhdGlvblN0YXRlTW9kZWwudmFsdWU7XG4gICAgY29uc3QgbmV4dCA9IHRyYW5zaXRpb24odGhpcy5uYXZpZ2F0aW9uU3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25TdGF0ZU1vZGVsLnZhbHVlID0gbmV4dDtcbiAgICBpZiAobmV4dCAhPT0gcHJldmlvdXMpIHtcbiAgICAgIHByZXZpb3VzLmRpc3Bvc2UoKTtcbiAgICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhgUm91dGVyIFN0YXRlIFRyYW5zaXRpb246ICR7cHJldmlvdXMudG9TdHJpbmcoKX0gLT4gJHtuZXh0LnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQ6IFZpc2l0KSB7XG4gICAgY29uc3QgZGVmID0gdmlzaXQucGxhY2VEZWZpbml0aW9uO1xuICAgIHJldHVybiB2aXNpdC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZUlkKHZpc2l0KSwgZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldIDpcbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KV07XG4gIH1cblxuICBleHRyYWN0Q2hpbGRQYXRoKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYW55W10ge1xuICAgIHJldHVybiBfLmZsYXR0ZW4oYWN0aXZhdGVkUm91dGUuY2hpbGRyZW4ubWFwKGNoaWxkID0+IGNoaWxkLnVybCkpO1xuICB9XG5cbiAgcGFyc2VVcmwodXJsOiBzdHJpbmcpOiBVcmxTbmFwc2hvdCB7XG4gICAgcmV0dXJuIG5ldyBVcmxTbmFwc2hvdCh0aGlzLnVybFNlcmlhbGl6ZXIsIHVybCk7XG4gIH1cblxuICByZXNldEJyb3dzZXJMb2NhdGlvbih1cmw6IHN0cmluZykge1xuICAgIHRoaXMuYW5ndWxhckxvY2F0aW9uLmdvKHVybCk7XG4gIH1cblxuICBjcmVhdGVVcmxTbmFwc2hvdCguLi52aXNpdHM6IFZpc2l0W10pOiBVcmxTbmFwc2hvdCB7XG4gICAgY29uc3QgYml0cyA9IFtdO1xuICAgIHZpc2l0cy5mb3JFYWNoKHYgPT4ge1xuICAgICAgYml0cy5wdXNoKHRoaXMucGFyc2VVcmwoYCR7di5wbGFjZURlZmluaXRpb24ucGF0aH1gKS51cGRhdGVWaXNpdFNlZ21lbnRzKHYpLnVybCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwoYml0cy5qb2luKCcnKSk7XG4gIH1cblxuICBnZXRDdXJyZW50Um91dGVyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnJvdXRlclN0YXRlID8gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsIDogbnVsbDtcbiAgfVxuXG4gIGdldEN1cnJlbnRSb3V0ZVNuYXBzaG90KCk6IFVybFNuYXBzaG90IHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVVybCh0aGlzLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSk7XG4gIH1cblxuICBnZXRBY3RpdmVJbnRlcmFjdGlvbklkc0Zyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwodXJsKS5nZXRJbnRlcmFjdGlvbklkcygpO1xuICB9XG5cblxuICAvLyBAVHJhY2UoKVxuICBoYXNBY3RpdmVJbnRlcmFjdGlvbklkcyh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUludGVyYWN0aW9uSWRzRnJvbVVybCh1cmwpLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBuYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90OiBVcmxTbmFwc2hvdCwgbmF2aWdhdGlvbkV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdC51cmxUcmVlLCBuYXZpZ2F0aW9uRXh0cmFzKTtcbiAgfVxuXG4gIC8vIFRPRE86IFNob3VsZCB0aGlzIGJlIG1vdmVkIHRvIHRoZSBuYXZpZ2F0aW9uIHN0YXRlcz9cbiAgc3luY0ludGVyYWN0aW9uSWRzV2l0aFJvdXRlcihjdXJyZW50SWRzOiBzdHJpbmdbXSwgcHJldmlvdXM6IHN0cmluZ1tdKSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MudmFsdWUpOyAvLyBVcGRhdGluZyBpbnRlcmFjdGlvbiByb3V0ZXMgZHVyaW5nIGFuIGV4aXN0aW5nIG5hdmlnYXRpb24gYnJlYWtzIGFsbCB0aGUgdGhpbmdzLlxuICAgIGNvbnNvbGUubG9nKHtcbiAgICAgIHN0YXJ0aW5nQWN0aXZpdHk6IGN1cnJlbnRJZHMubGVuZ3RoID4gcHJldmlvdXMubGVuZ3RoLFxuICAgICAgd2FzQmFja0J1dHRvbjogdGhpcy5uYXZpZ2F0aW9uU3RhdGUuaXNQb3BTdGF0ZVxuICAgIH0pO1xuXG4gICAgaWYgKF8uaXNFcXVhbChjdXJyZW50SWRzLCBwcmV2aW91cykpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdhY3Rpdml0eSBpZHMgd2VyZSB0aGUgc2FtZSwgc2tpcHBpbmcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT01HLCB0aGlzIGlzIG51dHMuXG4gICAgICBjb25zdCBhZGRpbmdBY3Rpdml0eSA9IGN1cnJlbnRJZHMubGVuZ3RoID4gcHJldmlvdXMubGVuZ3RoO1xuICAgICAgY29uc3QgaXNGaXJzdEFjdGl2aXR5ID0gYWRkaW5nQWN0aXZpdHkgJiYgcHJldmlvdXMubGVuZ3RoIDwgMTtcbiAgICAgIGNvbnN0IHJlbW92aW5nTGFzdEFjdGl2aXR5ID0gY3VycmVudElkcy5sZW5ndGggPCAxO1xuICAgICAgaWYgKGFkZGluZ0FjdGl2aXR5KSB7Ly8gd2UncmUgc3RhcnRpbmcgYSBuZXcgYWN0aXZpdHksIHB1c2ggdGhlIGNoYW5nZSB0byB0aGUgaGlzdG9yeSBhbmQgdXBkYXRlIHRoZSB1cmxcbiAgICAgICAgY29uc29sZS5sb2coJ2FkZGluZyBhY3Rpdml0eScpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRDdXJyZW50Um91dGVTbmFwc2hvdCgpLnVwZGF0ZUludGVyYWN0aW9uSWRzKGN1cnJlbnRJZHMpLCB7XG4gICAgICAgICAgcmVwbGFjZVVybDogIWlzRmlyc3RBY3Rpdml0eSAvLyB3ZSBkb24ndCBsZXQgdGhlIGhpc3RvcnkgcGlsZSB1cFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy5nZXRDdXJyZW50Um91dGVTbmFwc2hvdCgpLnVwZGF0ZUludGVyYWN0aW9uSWRzKGN1cnJlbnRJZHMpO1xuICAgICAgICBpZiAocmVtb3ZpbmdMYXN0QWN0aXZpdHkpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QsIHtcbiAgICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIGZvciBzb21lIHJlYXNvbiB3ZSBuZWVkIHRvIHBvcCB0aGUgbGFzdCBoaXN0b3J5IG9mZiB0aGUgc3RhY2sgd2hlbiBsZWF2aW5nIHRoZVxuICAgICAgICAgICAgLy8gYWN0aXZlIGFjdGl2aXR5IHN0YXRlLlxuICAgICAgICAgICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uYmFjaygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCwge1xuICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/esm5/public_api.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
5
|
export { AngularUiPowerupsModule } from './lib/angular-ui-powerups.module';
|
|
6
|
-
export {
|
|
6
|
+
export { slideDownOnEnterAnimation, slideRightOnEnterAnimation } from './lib/animations';
|
|
7
7
|
export { ComponentsModule, DisposableComponent, ResizeAwareComponent, AbstractInputComponent, NumberInputComponent, PasswordInputComponent, SelectInputComponent, StringInputComponent, NoopComponent, Bounds, Dimension, Point } from './lib/components';
|
|
8
8
|
export { CommandDirective, DirectivesModule, FocusBindingDirective } from './lib/directives';
|
|
9
9
|
export { AbstractActivity, ACTIVITY_DATA, Activity, InteractionContextBase, InteractionContext, InteractionModule, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, ConfirmThenDialogComponent, ConfirmationDialogComponent, InplaceInteractionContextComponent, InteractionService, ModalInteractionContextFactory, DIALOG_INTERACTION_SERVICE_DEFAULTS, DialogInteractionContextFactory, DialogInteractionContext } from './lib/interaction';
|
|
10
10
|
export { DEFINITION_META_DATA_KEY, ROUTE_PARAMETER_LIST_KEY, PlaceComponent, AUP_PLACE_CONFIG, PlaceDefinition, PlaceHistory, PlaceRouter, Place, PlaceModule, UrlSnapshot, Visit, AbstractPlaceNavigationComponent, BusyOverlayComponent, EmptyStateComponent, ListPlaceNavComponent, PlaceOutletComponent, leftRightPlaceAnimation, LEFT_RIGHT_PLACE_ANIMATION, TabbedPlaceNavigationComponent, ConsolidatedParameterMap, NavigationState, NoopAuthGuard, PlaceComponentDeactivationHandler, PlaceGuard, Formatter, RouteId, VisitParameter, VisitParameterList, ParameterDefinition, VisitSanitiser } from './lib/place';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbInB1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdDQUFjLGtDQUFrQyxDQUFDO0FBQ2pELHNFQUFjLGtCQUFrQixDQUFDO0FBQ2pDLHVPQUFjLGtCQUFrQixDQUFDO0FBQ2pDLDBFQUFjLGtCQUFrQixDQUFDO0FBQ2pDLHFiQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDhrQkFBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLXVpLXBvd2VydXBzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmltYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wbGFjZSc7XG4iXX0=
|