@firestartr/cli 1.26.2 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js
CHANGED
|
@@ -122733,7 +122733,7 @@ __export(dist_src_exports, {
|
|
|
122733
122733
|
});
|
|
122734
122734
|
module.exports = __toCommonJS(dist_src_exports);
|
|
122735
122735
|
var import_universal_user_agent = __nccwpck_require__(65212);
|
|
122736
|
-
var import_before_after_hook = __nccwpck_require__(
|
|
122736
|
+
var import_before_after_hook = __nccwpck_require__(13635);
|
|
122737
122737
|
var import_request = __nccwpck_require__(20385);
|
|
122738
122738
|
var import_graphql = __nccwpck_require__(46266);
|
|
122739
122739
|
var import_auth_token = __nccwpck_require__(70827);
|
|
@@ -124050,187 +124050,6 @@ var request = withDefaults(import_endpoint.endpoint, {
|
|
|
124050
124050
|
0 && (0);
|
|
124051
124051
|
|
|
124052
124052
|
|
|
124053
|
-
/***/ }),
|
|
124054
|
-
|
|
124055
|
-
/***/ 87740:
|
|
124056
|
-
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
|
124057
|
-
|
|
124058
|
-
var register = __nccwpck_require__(4618);
|
|
124059
|
-
var addHook = __nccwpck_require__(57516);
|
|
124060
|
-
var removeHook = __nccwpck_require__(96402);
|
|
124061
|
-
|
|
124062
|
-
// bind with array of arguments: https://stackoverflow.com/a/21792913
|
|
124063
|
-
var bind = Function.bind;
|
|
124064
|
-
var bindable = bind.bind(bind);
|
|
124065
|
-
|
|
124066
|
-
function bindApi(hook, state, name) {
|
|
124067
|
-
var removeHookRef = bindable(removeHook, null).apply(
|
|
124068
|
-
null,
|
|
124069
|
-
name ? [state, name] : [state]
|
|
124070
|
-
);
|
|
124071
|
-
hook.api = { remove: removeHookRef };
|
|
124072
|
-
hook.remove = removeHookRef;
|
|
124073
|
-
["before", "error", "after", "wrap"].forEach(function (kind) {
|
|
124074
|
-
var args = name ? [state, kind, name] : [state, kind];
|
|
124075
|
-
hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
|
|
124076
|
-
});
|
|
124077
|
-
}
|
|
124078
|
-
|
|
124079
|
-
function HookSingular() {
|
|
124080
|
-
var singularHookName = "h";
|
|
124081
|
-
var singularHookState = {
|
|
124082
|
-
registry: {},
|
|
124083
|
-
};
|
|
124084
|
-
var singularHook = register.bind(null, singularHookState, singularHookName);
|
|
124085
|
-
bindApi(singularHook, singularHookState, singularHookName);
|
|
124086
|
-
return singularHook;
|
|
124087
|
-
}
|
|
124088
|
-
|
|
124089
|
-
function HookCollection() {
|
|
124090
|
-
var state = {
|
|
124091
|
-
registry: {},
|
|
124092
|
-
};
|
|
124093
|
-
|
|
124094
|
-
var hook = register.bind(null, state);
|
|
124095
|
-
bindApi(hook, state);
|
|
124096
|
-
|
|
124097
|
-
return hook;
|
|
124098
|
-
}
|
|
124099
|
-
|
|
124100
|
-
var collectionHookDeprecationMessageDisplayed = false;
|
|
124101
|
-
function Hook() {
|
|
124102
|
-
if (!collectionHookDeprecationMessageDisplayed) {
|
|
124103
|
-
console.warn(
|
|
124104
|
-
'[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
|
|
124105
|
-
);
|
|
124106
|
-
collectionHookDeprecationMessageDisplayed = true;
|
|
124107
|
-
}
|
|
124108
|
-
return HookCollection();
|
|
124109
|
-
}
|
|
124110
|
-
|
|
124111
|
-
Hook.Singular = HookSingular.bind();
|
|
124112
|
-
Hook.Collection = HookCollection.bind();
|
|
124113
|
-
|
|
124114
|
-
module.exports = Hook;
|
|
124115
|
-
// expose constructors as a named property for TypeScript
|
|
124116
|
-
module.exports.Hook = Hook;
|
|
124117
|
-
module.exports.Singular = Hook.Singular;
|
|
124118
|
-
module.exports.Collection = Hook.Collection;
|
|
124119
|
-
|
|
124120
|
-
|
|
124121
|
-
/***/ }),
|
|
124122
|
-
|
|
124123
|
-
/***/ 57516:
|
|
124124
|
-
/***/ ((module) => {
|
|
124125
|
-
|
|
124126
|
-
module.exports = addHook;
|
|
124127
|
-
|
|
124128
|
-
function addHook(state, kind, name, hook) {
|
|
124129
|
-
var orig = hook;
|
|
124130
|
-
if (!state.registry[name]) {
|
|
124131
|
-
state.registry[name] = [];
|
|
124132
|
-
}
|
|
124133
|
-
|
|
124134
|
-
if (kind === "before") {
|
|
124135
|
-
hook = function (method, options) {
|
|
124136
|
-
return Promise.resolve()
|
|
124137
|
-
.then(orig.bind(null, options))
|
|
124138
|
-
.then(method.bind(null, options));
|
|
124139
|
-
};
|
|
124140
|
-
}
|
|
124141
|
-
|
|
124142
|
-
if (kind === "after") {
|
|
124143
|
-
hook = function (method, options) {
|
|
124144
|
-
var result;
|
|
124145
|
-
return Promise.resolve()
|
|
124146
|
-
.then(method.bind(null, options))
|
|
124147
|
-
.then(function (result_) {
|
|
124148
|
-
result = result_;
|
|
124149
|
-
return orig(result, options);
|
|
124150
|
-
})
|
|
124151
|
-
.then(function () {
|
|
124152
|
-
return result;
|
|
124153
|
-
});
|
|
124154
|
-
};
|
|
124155
|
-
}
|
|
124156
|
-
|
|
124157
|
-
if (kind === "error") {
|
|
124158
|
-
hook = function (method, options) {
|
|
124159
|
-
return Promise.resolve()
|
|
124160
|
-
.then(method.bind(null, options))
|
|
124161
|
-
.catch(function (error) {
|
|
124162
|
-
return orig(error, options);
|
|
124163
|
-
});
|
|
124164
|
-
};
|
|
124165
|
-
}
|
|
124166
|
-
|
|
124167
|
-
state.registry[name].push({
|
|
124168
|
-
hook: hook,
|
|
124169
|
-
orig: orig,
|
|
124170
|
-
});
|
|
124171
|
-
}
|
|
124172
|
-
|
|
124173
|
-
|
|
124174
|
-
/***/ }),
|
|
124175
|
-
|
|
124176
|
-
/***/ 4618:
|
|
124177
|
-
/***/ ((module) => {
|
|
124178
|
-
|
|
124179
|
-
module.exports = register;
|
|
124180
|
-
|
|
124181
|
-
function register(state, name, method, options) {
|
|
124182
|
-
if (typeof method !== "function") {
|
|
124183
|
-
throw new Error("method for before hook must be a function");
|
|
124184
|
-
}
|
|
124185
|
-
|
|
124186
|
-
if (!options) {
|
|
124187
|
-
options = {};
|
|
124188
|
-
}
|
|
124189
|
-
|
|
124190
|
-
if (Array.isArray(name)) {
|
|
124191
|
-
return name.reverse().reduce(function (callback, name) {
|
|
124192
|
-
return register.bind(null, state, name, callback, options);
|
|
124193
|
-
}, method)();
|
|
124194
|
-
}
|
|
124195
|
-
|
|
124196
|
-
return Promise.resolve().then(function () {
|
|
124197
|
-
if (!state.registry[name]) {
|
|
124198
|
-
return method(options);
|
|
124199
|
-
}
|
|
124200
|
-
|
|
124201
|
-
return state.registry[name].reduce(function (method, registered) {
|
|
124202
|
-
return registered.hook.bind(null, method, options);
|
|
124203
|
-
}, method)();
|
|
124204
|
-
});
|
|
124205
|
-
}
|
|
124206
|
-
|
|
124207
|
-
|
|
124208
|
-
/***/ }),
|
|
124209
|
-
|
|
124210
|
-
/***/ 96402:
|
|
124211
|
-
/***/ ((module) => {
|
|
124212
|
-
|
|
124213
|
-
module.exports = removeHook;
|
|
124214
|
-
|
|
124215
|
-
function removeHook(state, name, method) {
|
|
124216
|
-
if (!state.registry[name]) {
|
|
124217
|
-
return;
|
|
124218
|
-
}
|
|
124219
|
-
|
|
124220
|
-
var index = state.registry[name]
|
|
124221
|
-
.map(function (registered) {
|
|
124222
|
-
return registered.orig;
|
|
124223
|
-
})
|
|
124224
|
-
.indexOf(method);
|
|
124225
|
-
|
|
124226
|
-
if (index === -1) {
|
|
124227
|
-
return;
|
|
124228
|
-
}
|
|
124229
|
-
|
|
124230
|
-
state.registry[name].splice(index, 1);
|
|
124231
|
-
}
|
|
124232
|
-
|
|
124233
|
-
|
|
124234
124053
|
/***/ }),
|
|
124235
124054
|
|
|
124236
124055
|
/***/ 52455:
|
|
@@ -147847,6 +147666,187 @@ module.exports = {
|
|
|
147847
147666
|
};
|
|
147848
147667
|
|
|
147849
147668
|
|
|
147669
|
+
/***/ }),
|
|
147670
|
+
|
|
147671
|
+
/***/ 13635:
|
|
147672
|
+
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
|
147673
|
+
|
|
147674
|
+
var register = __nccwpck_require__(18195);
|
|
147675
|
+
var addHook = __nccwpck_require__(78491);
|
|
147676
|
+
var removeHook = __nccwpck_require__(90048);
|
|
147677
|
+
|
|
147678
|
+
// bind with array of arguments: https://stackoverflow.com/a/21792913
|
|
147679
|
+
var bind = Function.bind;
|
|
147680
|
+
var bindable = bind.bind(bind);
|
|
147681
|
+
|
|
147682
|
+
function bindApi(hook, state, name) {
|
|
147683
|
+
var removeHookRef = bindable(removeHook, null).apply(
|
|
147684
|
+
null,
|
|
147685
|
+
name ? [state, name] : [state]
|
|
147686
|
+
);
|
|
147687
|
+
hook.api = { remove: removeHookRef };
|
|
147688
|
+
hook.remove = removeHookRef;
|
|
147689
|
+
["before", "error", "after", "wrap"].forEach(function (kind) {
|
|
147690
|
+
var args = name ? [state, kind, name] : [state, kind];
|
|
147691
|
+
hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
|
|
147692
|
+
});
|
|
147693
|
+
}
|
|
147694
|
+
|
|
147695
|
+
function HookSingular() {
|
|
147696
|
+
var singularHookName = "h";
|
|
147697
|
+
var singularHookState = {
|
|
147698
|
+
registry: {},
|
|
147699
|
+
};
|
|
147700
|
+
var singularHook = register.bind(null, singularHookState, singularHookName);
|
|
147701
|
+
bindApi(singularHook, singularHookState, singularHookName);
|
|
147702
|
+
return singularHook;
|
|
147703
|
+
}
|
|
147704
|
+
|
|
147705
|
+
function HookCollection() {
|
|
147706
|
+
var state = {
|
|
147707
|
+
registry: {},
|
|
147708
|
+
};
|
|
147709
|
+
|
|
147710
|
+
var hook = register.bind(null, state);
|
|
147711
|
+
bindApi(hook, state);
|
|
147712
|
+
|
|
147713
|
+
return hook;
|
|
147714
|
+
}
|
|
147715
|
+
|
|
147716
|
+
var collectionHookDeprecationMessageDisplayed = false;
|
|
147717
|
+
function Hook() {
|
|
147718
|
+
if (!collectionHookDeprecationMessageDisplayed) {
|
|
147719
|
+
console.warn(
|
|
147720
|
+
'[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
|
|
147721
|
+
);
|
|
147722
|
+
collectionHookDeprecationMessageDisplayed = true;
|
|
147723
|
+
}
|
|
147724
|
+
return HookCollection();
|
|
147725
|
+
}
|
|
147726
|
+
|
|
147727
|
+
Hook.Singular = HookSingular.bind();
|
|
147728
|
+
Hook.Collection = HookCollection.bind();
|
|
147729
|
+
|
|
147730
|
+
module.exports = Hook;
|
|
147731
|
+
// expose constructors as a named property for TypeScript
|
|
147732
|
+
module.exports.Hook = Hook;
|
|
147733
|
+
module.exports.Singular = Hook.Singular;
|
|
147734
|
+
module.exports.Collection = Hook.Collection;
|
|
147735
|
+
|
|
147736
|
+
|
|
147737
|
+
/***/ }),
|
|
147738
|
+
|
|
147739
|
+
/***/ 78491:
|
|
147740
|
+
/***/ ((module) => {
|
|
147741
|
+
|
|
147742
|
+
module.exports = addHook;
|
|
147743
|
+
|
|
147744
|
+
function addHook(state, kind, name, hook) {
|
|
147745
|
+
var orig = hook;
|
|
147746
|
+
if (!state.registry[name]) {
|
|
147747
|
+
state.registry[name] = [];
|
|
147748
|
+
}
|
|
147749
|
+
|
|
147750
|
+
if (kind === "before") {
|
|
147751
|
+
hook = function (method, options) {
|
|
147752
|
+
return Promise.resolve()
|
|
147753
|
+
.then(orig.bind(null, options))
|
|
147754
|
+
.then(method.bind(null, options));
|
|
147755
|
+
};
|
|
147756
|
+
}
|
|
147757
|
+
|
|
147758
|
+
if (kind === "after") {
|
|
147759
|
+
hook = function (method, options) {
|
|
147760
|
+
var result;
|
|
147761
|
+
return Promise.resolve()
|
|
147762
|
+
.then(method.bind(null, options))
|
|
147763
|
+
.then(function (result_) {
|
|
147764
|
+
result = result_;
|
|
147765
|
+
return orig(result, options);
|
|
147766
|
+
})
|
|
147767
|
+
.then(function () {
|
|
147768
|
+
return result;
|
|
147769
|
+
});
|
|
147770
|
+
};
|
|
147771
|
+
}
|
|
147772
|
+
|
|
147773
|
+
if (kind === "error") {
|
|
147774
|
+
hook = function (method, options) {
|
|
147775
|
+
return Promise.resolve()
|
|
147776
|
+
.then(method.bind(null, options))
|
|
147777
|
+
.catch(function (error) {
|
|
147778
|
+
return orig(error, options);
|
|
147779
|
+
});
|
|
147780
|
+
};
|
|
147781
|
+
}
|
|
147782
|
+
|
|
147783
|
+
state.registry[name].push({
|
|
147784
|
+
hook: hook,
|
|
147785
|
+
orig: orig,
|
|
147786
|
+
});
|
|
147787
|
+
}
|
|
147788
|
+
|
|
147789
|
+
|
|
147790
|
+
/***/ }),
|
|
147791
|
+
|
|
147792
|
+
/***/ 18195:
|
|
147793
|
+
/***/ ((module) => {
|
|
147794
|
+
|
|
147795
|
+
module.exports = register;
|
|
147796
|
+
|
|
147797
|
+
function register(state, name, method, options) {
|
|
147798
|
+
if (typeof method !== "function") {
|
|
147799
|
+
throw new Error("method for before hook must be a function");
|
|
147800
|
+
}
|
|
147801
|
+
|
|
147802
|
+
if (!options) {
|
|
147803
|
+
options = {};
|
|
147804
|
+
}
|
|
147805
|
+
|
|
147806
|
+
if (Array.isArray(name)) {
|
|
147807
|
+
return name.reverse().reduce(function (callback, name) {
|
|
147808
|
+
return register.bind(null, state, name, callback, options);
|
|
147809
|
+
}, method)();
|
|
147810
|
+
}
|
|
147811
|
+
|
|
147812
|
+
return Promise.resolve().then(function () {
|
|
147813
|
+
if (!state.registry[name]) {
|
|
147814
|
+
return method(options);
|
|
147815
|
+
}
|
|
147816
|
+
|
|
147817
|
+
return state.registry[name].reduce(function (method, registered) {
|
|
147818
|
+
return registered.hook.bind(null, method, options);
|
|
147819
|
+
}, method)();
|
|
147820
|
+
});
|
|
147821
|
+
}
|
|
147822
|
+
|
|
147823
|
+
|
|
147824
|
+
/***/ }),
|
|
147825
|
+
|
|
147826
|
+
/***/ 90048:
|
|
147827
|
+
/***/ ((module) => {
|
|
147828
|
+
|
|
147829
|
+
module.exports = removeHook;
|
|
147830
|
+
|
|
147831
|
+
function removeHook(state, name, method) {
|
|
147832
|
+
if (!state.registry[name]) {
|
|
147833
|
+
return;
|
|
147834
|
+
}
|
|
147835
|
+
|
|
147836
|
+
var index = state.registry[name]
|
|
147837
|
+
.map(function (registered) {
|
|
147838
|
+
return registered.orig;
|
|
147839
|
+
})
|
|
147840
|
+
.indexOf(method);
|
|
147841
|
+
|
|
147842
|
+
if (index === -1) {
|
|
147843
|
+
return;
|
|
147844
|
+
}
|
|
147845
|
+
|
|
147846
|
+
state.registry[name].splice(index, 1);
|
|
147847
|
+
}
|
|
147848
|
+
|
|
147849
|
+
|
|
147850
147850
|
/***/ }),
|
|
147851
147851
|
|
|
147852
147852
|
/***/ 69846:
|
|
@@ -148344,7 +148344,7 @@ class ApiObject extends constructs_1.Construct {
|
|
|
148344
148344
|
}
|
|
148345
148345
|
}
|
|
148346
148346
|
exports.ApiObject = ApiObject;
|
|
148347
|
-
ApiObject[_a] = { fqn: "cdk8s.ApiObject", version: "2.69.
|
|
148347
|
+
ApiObject[_a] = { fqn: "cdk8s.ApiObject", version: "2.69.39" };
|
|
148348
148348
|
function parseApiGroup(apiVersion) {
|
|
148349
148349
|
const v = apiVersion.split('/');
|
|
148350
148350
|
// no group means "core"
|
|
@@ -148559,7 +148559,7 @@ class App extends constructs_1.Construct {
|
|
|
148559
148559
|
}
|
|
148560
148560
|
exports.App = App;
|
|
148561
148561
|
_a = JSII_RTTI_SYMBOL_1;
|
|
148562
|
-
App[_a] = { fqn: "cdk8s.App", version: "2.69.
|
|
148562
|
+
App[_a] = { fqn: "cdk8s.App", version: "2.69.39" };
|
|
148563
148563
|
function validate(app, cache) {
|
|
148564
148564
|
const errors = [];
|
|
148565
148565
|
for (const child of cache.findAll(app.node)) {
|
|
@@ -148773,7 +148773,7 @@ class Chart extends constructs_1.Construct {
|
|
|
148773
148773
|
}
|
|
148774
148774
|
}
|
|
148775
148775
|
exports.Chart = Chart;
|
|
148776
|
-
Chart[_a] = { fqn: "cdk8s.Chart", version: "2.69.
|
|
148776
|
+
Chart[_a] = { fqn: "cdk8s.Chart", version: "2.69.39" };
|
|
148777
148777
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBbUQ7QUFDbkQsNkNBQXlDO0FBQ3pDLCtCQUE0QjtBQUM1QixtQ0FBZ0M7QUFFaEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMvQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUE2QjFCLE1BQWEsS0FBTSxTQUFRLHNCQUFTO0lBQ2xDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQU07UUFDMUIsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsMkJBQUMsTUFBTSxDQUFDLFdBQVcsRUFBQyxDQUFDLENBQVU7UUFDcEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQWE7UUFDNUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFrQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFpQkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQixFQUFHO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxLQUFLLENBQUM7UUFFM0UsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUJHO0lBQ0ksa0JBQWtCLENBQUMsU0FBb0I7UUFDNUMsT0FBTyxhQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUNqQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCO1lBQzdDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ25ELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxHQUFHLFlBQTBCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU07UUFDWCxPQUFPLFNBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWtCLEVBQUUsQ0FBQyxDQUFDLFlBQVksc0JBQVMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7O0FBeEhILHNCQXlIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXBpT2JqZWN0IH0gZnJvbSAnLi9hcGktb2JqZWN0JztcbmltcG9ydCB7IEFwcCB9IGZyb20gJy4vYXBwJztcbmltcG9ydCB7IE5hbWVzIH0gZnJvbSAnLi9uYW1lcyc7XG5cbmNvbnN0IENIQVJUX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ2NkazhzLkNoYXJ0Jyk7XG5jb25zdCBDUk9OSk9CID0gJ0Nyb25Kb2InO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UHJvcHMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgbmFtZXNwYWNlIGZvciBhbGwgb2JqZWN0cyBkZWZpbmVkIGluIHRoaXMgY2hhcnQgKGRpcmVjdGx5IG9yXG4gICAqIGluZGlyZWN0bHkpLiBUaGlzIG5hbWVzcGFjZSB3aWxsIG9ubHkgYXBwbHkgdG8gb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgYVxuICAgKiBgbmFtZXNwYWNlYCBleHBsaWNpdGx5IGRlZmluZWQgZm9yIHRoZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZXNwYWNlIGlzIHN5bnRoZXNpemVkICh1c3VhbGx5IHRoaXMgaW1wbGllcyBcImRlZmF1bHRcIilcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogTGFiZWxzIHRvIGFwcGx5IHRvIGFsbCByZXNvdXJjZXMgaW4gdGhpcyBjaGFydC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb21tb24gbGFiZWxzXG4gICAqL1xuICByZWFkb25seSBsYWJlbHM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGF1dG9nZW5lcmF0ZWQgcmVzb3VyY2UgbmFtZSBieSBkZWZhdWx0IGlzIHN1ZmZpeGVkIHdpdGggYSBzdGFibGUgaGFzaFxuICAgKiBvZiB0aGUgY29uc3RydWN0IHBhdGguIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlIGRyb3BzIHRoZSBoYXNoIHN1ZmZpeC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVSZXNvdXJjZU5hbWVIYXNoZXM/OiBib29sZWFuO1xuXG59XG5cbmV4cG9ydCBjbGFzcyBDaGFydCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgQ2hhcnQuXG4gICAqXG4gICAqIFdlIGRvIGF0dHJpYnV0ZSBkZXRlY3Rpb24gc2luY2Ugd2UgY2FuJ3QgcmVsaWFibHkgdXNlICdpbnN0YW5jZW9mJy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDaGFydCh4OiBhbnkpOiB4IGlzIENoYXJ0IHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YoeCkgPT09ICdvYmplY3QnICYmIENIQVJUX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgYGluc3RhbmNlb2YgQ2hhcnRgIHVzaW5nIHRoZSBtb3JlIHJlbGlhYmxlIGBDaGFydC5pc0NoYXJ0YCBzdGF0aWMgbWV0aG9kXG4gICAqXG4gICAqIEBwYXJhbSBvIFRoZSBvYmplY3QgdG8gY2hlY2tcbiAgICogQGludGVybmFsXG4gICAqL1xuICBzdGF0aWMgW1N5bWJvbC5oYXNJbnN0YW5jZV0obzogdW5rbm93bikge1xuICAgIHJldHVybiBDaGFydC5pc0NoYXJ0KG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBjaGFydCBpbiB3aGljaCBhIG5vZGUgaXMgZGVmaW5lZC5cbiAgICogQHBhcmFtIGMgYSBjb25zdHJ1Y3Qgbm9kZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihjOiBJQ29uc3RydWN0KTogQ2hhcnQge1xuICAgIGlmIChDaGFydC5pc0NoYXJ0KGMpKSB7XG4gICAgICByZXR1cm4gYztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQgPSBjLm5vZGUuc2NvcGUgYXMgQ29uc3RydWN0O1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmaW5kIGEgcGFyZW50IGNoYXJ0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KScpO1xuICAgIH1cblxuICAgIHJldHVybiBDaGFydC5vZihwYXJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBmb3IgYWxsIG9iamVjdHMgaW4gdGhpcyBjaGFydC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENoYXJ0LWxldmVsIGxhYmVscy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhYmVscz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHJlc291cmNlIG5hbWVzIGluIHRoZSBjaGFydCBoYXZlIHRoZSBzdWZmaXhlZCBoYXNoLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZVJlc291cmNlTmFtZUhhc2hlcz86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENoYXJ0UHJvcHMgPSB7IH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMubmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgIHRoaXMuX2xhYmVscyA9IHByb3BzLmxhYmVscyA/PyB7fTtcbiAgICB0aGlzLl9kaXNhYmxlUmVzb3VyY2VOYW1lSGFzaGVzID0gcHJvcHMuZGlzYWJsZVJlc291cmNlTmFtZUhhc2hlcyA/PyBmYWxzZTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBDSEFSVF9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogTGFiZWxzIGFwcGxpZWQgdG8gYWxsIHJlc291cmNlcyBpbiB0aGlzIGNoYXJ0LlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGltbXV0YWJsZSBjb3B5LlxuICAgKi9cbiAgcHVibGljIGdldCBsYWJlbHMoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2xhYmVscyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGFwcC11bmlxdWUgbmFtZSBmb3IgYW4gb2JqZWN0IGdpdmVuIGl0J3MgY29uc3RydWN0IG5vZGUgcGF0aC5cbiAgICpcbiAgICogRGlmZmVyZW50IHJlc291cmNlIHR5cGVzIG1heSBoYXZlIGRpZmZlcmVudCBjb25zdHJhaW50cyBvbiBuYW1lc1xuICAgKiAoYG1ldGFkYXRhLm5hbWVgKS4gVGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIG5hbWUgZ2VuZXJhdG9yIHdhc1xuICAgKiBjb21wYXRpYmxlIHdpdGggRE5TX1NVQkRPTUFJTiBidXQgbm90IHdpdGggRE5TX0xBQkVMLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYERlcGxveW1lbnRgIG5hbWVzIG11c3QgY29tcGx5IHdpdGggRE5TX1NVQkRPTUFJTiB3aGlsZVxuICAgKiBgU2VydmljZWAgbmFtZXMgbXVzdCBjb21wbHkgd2l0aCBETlNfTEFCRUwuXG4gICAqXG4gICAqIFNpbmNlIHRoZXJlIGlzIG5vIGZvcm1hbCBzcGVjaWZpY2F0aW9uIGZvciB0aGlzLCB0aGUgZGVmYXVsdCBuYW1lXG4gICAqIGdlbmVyYXRpb24gc2NoZW1lIGZvciBrdWJlcm5ldGVzIG9iamVjdHMgaW4gY2RrOHMgd2FzIGNoYW5nZWQgdG8gRE5TX0xBQkVMLFxuICAgKiBzaW5jZSBpdOKAmXMgdGhlIGNvbW1vbiBkZW5vbWluYXRvciBmb3IgYWxsIGt1YmVybmV0ZXMgcmVzb3VyY2VzXG4gICAqIChzdXBwb3NlZGx5KS5cbiAgICpcbiAgICogWW91IGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCBpZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgb2JqZWN0IG5hbWVzIGF0IHRoZVxuICAgKiBjaGFydCBsZXZlbC5cbiAgICpcbiAgICogQHBhcmFtIGFwaU9iamVjdCBUaGUgQVBJIG9iamVjdCB0byBnZW5lcmF0ZSBhIG5hbWUgZm9yLlxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlT2JqZWN0TmFtZShhcGlPYmplY3Q6IEFwaU9iamVjdCkge1xuICAgIHJldHVybiBOYW1lcy50b0Ruc0xhYmVsKGFwaU9iamVjdCwge1xuICAgICAgaW5jbHVkZUhhc2g6ICF0aGlzLl9kaXNhYmxlUmVzb3VyY2VOYW1lSGFzaGVzLFxuICAgICAgbWF4TGVuOiBhcGlPYmplY3Qua2luZCA9PSBDUk9OSk9CID8gNTIgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoaXMgQ2hhcnQgYW5kIG90aGVyIGNvbnN0cnVjdHMuXG4gICAqIFRoZXNlIGNhbiBiZSBvdGhlciBBcGlPYmplY3RzLCBDaGFydHMsIG9yIGN1c3RvbS5cbiAgICpcbiAgICogQHBhcmFtIGRlcGVuZGVuY2llcyB0aGUgZGVwZW5kZW5jaWVzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGREZXBlbmRlbmN5KC4uLmRlcGVuZGVuY2llczogSUNvbnN0cnVjdFtdKSB7XG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3koLi4uZGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoaXMgY2hhcnQgdG8gYSBzZXQgb2YgS3ViZXJuZXRlcyBKU09OIHJlc291cmNlcy5cbiAgICogQHJldHVybnMgYXJyYXkgb2YgcmVzb3VyY2UgbWFuaWZlc3RzXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueVtdIHtcbiAgICByZXR1cm4gQXBwLl9zeW50aENoYXJ0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHRoZSBpbmNsdWRlZCBBUEkgb2JqZWN0cy5cbiAgICovXG4gIGdldCBhcGlPYmplY3RzKCk6IEFwaU9iamVjdFtdIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcigobyk6IG8gaXMgQXBpT2JqZWN0ID0+IG8gaW5zdGFuY2VvZiBBcGlPYmplY3QpO1xuICB9XG59XG4iXX0=
|
|
148778
148778
|
|
|
148779
148779
|
/***/ }),
|
|
@@ -148845,7 +148845,7 @@ class Cron {
|
|
|
148845
148845
|
}
|
|
148846
148846
|
exports.Cron = Cron;
|
|
148847
148847
|
_a = JSII_RTTI_SYMBOL_1;
|
|
148848
|
-
Cron[_a] = { fqn: "cdk8s.Cron", version: "2.69.
|
|
148848
|
+
Cron[_a] = { fqn: "cdk8s.Cron", version: "2.69.39" };
|
|
148849
148849
|
function fallback(x, def) {
|
|
148850
148850
|
return x ?? def;
|
|
148851
148851
|
}
|
|
@@ -148934,7 +148934,7 @@ class DependencyGraph {
|
|
|
148934
148934
|
}
|
|
148935
148935
|
exports.DependencyGraph = DependencyGraph;
|
|
148936
148936
|
_a = JSII_RTTI_SYMBOL_1;
|
|
148937
|
-
DependencyGraph[_a] = { fqn: "cdk8s.DependencyGraph", version: "2.69.
|
|
148937
|
+
DependencyGraph[_a] = { fqn: "cdk8s.DependencyGraph", version: "2.69.39" };
|
|
148938
148938
|
/**
|
|
148939
148939
|
* Represents a vertex in the graph.
|
|
148940
148940
|
*
|
|
@@ -149027,7 +149027,7 @@ class DependencyVertex {
|
|
|
149027
149027
|
}
|
|
149028
149028
|
exports.DependencyVertex = DependencyVertex;
|
|
149029
149029
|
_b = JSII_RTTI_SYMBOL_1;
|
|
149030
|
-
DependencyVertex[_b] = { fqn: "cdk8s.DependencyVertex", version: "2.69.
|
|
149030
|
+
DependencyVertex[_b] = { fqn: "cdk8s.DependencyVertex", version: "2.69.39" };
|
|
149031
149031
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBlbmRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSxlQUFlO0lBSTFCLFlBQVksSUFBVTtRQUVwQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUU1QyxNQUFNLEtBQUssR0FBcUMsRUFBRSxDQUFDO1FBRW5ELFNBQVMsU0FBUyxDQUFDLFNBQXFCO1lBQ3RDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELFNBQVMsU0FBUyxDQUFDLFNBQXFCO1lBQ3RDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFFdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxH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Q2QsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBRWYsQ0FBQztJQUVILENBQUM7O0FBeEdILDRDQXlHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGUsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGRlcGVuZGVuY3kgZ3JhcGggZm9yIGEgZ2l2ZW4gTm9kZS5cbiAqXG4gKiBUaGlzIGdyYXBoIGluY2x1ZGVzIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBhbGwgbm9kZXMgaW4gdGhlXG4gKiBub2RlIChjb25zdHJ1Y3QpIHN1Yi10cmVlIHdobydzIHJvb3QgaXMgdGhpcyBOb2RlLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoYXQgbG9uZWx5IG5vZGVzIChubyBkZXBlbmRlbmNpZXMgYW5kIG5vIGRlcGVuZGFudHMpIGFyZSBhbHNvIGluY2x1ZGVkIGluIHRoaXMgZ3JhcGggYXNcbiAqIGNoaWxkbGVzcyBjaGlsZHJlbiBvZiB0aGUgcm9vdCBub2RlIG9mIHRoZSBncmFwaC5cbiAqXG4gKiBUaGUgZ3JhcGggZG9lcyBub3QgaW5jbHVkZSBjcm9zcy1zY29wZSBkZXBlbmRlbmNpZXMuIFRoYXQgaXMsIGlmIGEgY2hpbGQgb24gdGhlIGN1cnJlbnQgc2NvcGUgZGVwZW5kcyBvbiBhIG5vZGVcbiAqIGZyb20gYSBkaWZmZXJlbnQgc2NvcGUsIHRoYXQgcmVsYXRpb25zaGlwIGlzIG5vdCByZXByZXNlbnRlZCBpbiB0aGlzIGdyYXBoLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIERlcGVuZGVuY3lHcmFwaCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9zdGVyUGFyZW50OiBEZXBlbmRlbmN5VmVydGV4O1xuXG4gIGNvbnN0cnVjdG9yKG5vZGU6IE5vZGUpIHtcblxuICAgIHRoaXMuX2Zvc3RlclBhcmVudCA9IG5ldyBEZXBlbmRlbmN5VmVydGV4KCk7XG5cbiAgICBjb25zdCBub2RlczogUmVjb3JkPHN0cmluZywgRGVwZW5kZW5jeVZlcnRleD4gPSB7fTtcblxuICAgIGZ1bmN0aW9uIHB1dFZlcnRleChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpIHtcbiAgICAgIG5vZGVzW2NvbnN0cnVjdC5ub2RlLnBhdGhdID0gbmV3IERlcGVuZGVuY3lWZXJ0ZXgoY29uc3RydWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWZXJ0ZXgoY29uc3RydWN0OiBJQ29uc3RydWN0KTogRGVwZW5kZW5jeVZlcnRleCB7XG4gICAgICByZXR1cm4gbm9kZXNbY29uc3RydWN0Lm5vZGUucGF0aF07XG4gICAgfVxuXG4gICAgLy8gY3JlYXRlIGFsbCB2ZXJ0aWNlcyBvZiB0aGUgZ3JhcGguXG4gICAgZm9yIChjb25zdCBuIG9mIG5vZGUuZmluZEFsbCgpKSB7XG4gICAgICBwdXRWZXJ0ZXgobik7XG4gICAgfVxuXG4gICAgY29uc3QgZGVwcyA9IFtdO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5maW5kQWxsKCkpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIGNoaWxkLm5vZGUuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGRlcHMucHVzaCh7IHNvdXJjZTogY2hpbGQsIHRhcmdldDogZGVwIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBhbGwgdGhlIGVkZ2VzIG9mIHRoZSBncmFwaC5cbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG5cbiAgICAgIGlmICghZ2V0VmVydGV4KGRlcC50YXJnZXQpKSB7XG4gICAgICAgIC8vIGRvbnQgY3Jvc3Mgc2NvcGUgYm91bmRhcmllcy5cbiAgICAgICAgLy8gc2luY2UgY2hhcnRzIG9ubHkgcmVuZGVycyBpdHMgb3duIGNoaWxkcmVuLCB0aGlzIGlzIG9rIGFuZFxuICAgICAgICAvLyBoYXMgdGhlIGJlbmVmaXQgb2Ygc2ltcGxpZnlpbmcgdGhlIGdyYXBoLiB3ZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGJlaGF2aW9yIHdoZW4gbW92aW5nXG4gICAgICAgIC8vIHRvIGEgbW9yZSBnZW5lcmFsIHB1cnBvc2UgdXNlLWNhc2UuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VyY2VEZXBOb2RlID0gZ2V0VmVydGV4KGRlcC5zb3VyY2UpO1xuICAgICAgY29uc3QgdGFyZ2V0RGVwTm9kZSA9IGdldFZlcnRleChkZXAudGFyZ2V0KTtcblxuICAgICAgc291cmNlRGVwTm9kZS5hZGRDaGlsZCh0YXJnZXREZXBOb2RlKTtcblxuICAgIH1cblxuICAgIC8vIGNyZWF0ZSB0aGUgcm9vdC5cbiAgICBmb3IgKGNvbnN0IG4gb2YgT2JqZWN0LnZhbHVlcyhub2RlcykpIHtcbiAgICAgIGlmIChuLmluYm91bmQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIG9ycGhhbnMgYXJlIGRlcGVuZGVuY3kgcm9vdHMuIGxldHMgYWRvcHQgdGhlbSFcbiAgICAgICAgdGhpcy5fZm9zdGVyUGFyZW50LmFkZENoaWxkKG4pO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJvb3Qgb2YgdGhlIGdyYXBoLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhpcyB2ZXJ0ZXggd2lsbCBhbHdheXMgaGF2ZSBgbnVsbGAgYXMgaXRzIGAudmFsdWVgIHNpbmNlIGl0IGlzIGFuIGFydGlmaWNhbCByb290XG4gICAqIHRoYXQgYmluZHMgYWxsIHRoZSBjb25uZWN0ZWQgc3BhY2VzIG9mIHRoZSBncmFwaC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcm9vdCgpOiBEZXBlbmRlbmN5VmVydGV4IHtcbiAgICByZXR1cm4gdGhpcy5fZm9zdGVyUGFyZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgVmVydGV4LnRvcG9sb2d5KClcbiAgICovXG4gIHB1YmxpYyB0b3BvbG9neSgpOiBJQ29uc3RydWN0W10ge1xuICAgIHJldHVybiB0aGlzLl9mb3N0ZXJQYXJlbnQudG9wb2xvZ3koKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIGdyYXBoLlxuICpcbiAqIFRoZSB2YWx1ZSBvZiBlYWNoIHZlcnRleCBpcyBhbiBgSUNvbnN0cnVjdGAgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgYC52YWx1ZWAgZ2V0dGVyLlxuICovXG5leHBvcnQgY2xhc3MgRGVwZW5kZW5jeVZlcnRleCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWU6IElDb25zdHJ1Y3QgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoaWxkcmVuOiBTZXQ8RGVwZW5kZW5jeVZlcnRleD4gPSBuZXcgU2V0PERlcGVuZGVuY3lWZXJ0ZXg+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudHM6IFNldDxEZXBlbmRlbmN5VmVydGV4PiA9IG5ldyBTZXQ8RGVwZW5kZW5jeVZlcnRleD4oKTtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogSUNvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgSUNvbnN0cnVjdCB0aGlzIGdyYXBoIHZlcnRleCByZXByZXNlbnRzLlxuICAgKlxuICAgKiBgbnVsbGAgaW4gY2FzZSB0aGlzIGlzIHRoZSByb290IG9mIHRoZSBncmFwaC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogSUNvbnN0cnVjdCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNoaWxkcmVuIG9mIHRoZSB2ZXJ0ZXggKGkuZSBkZXBlbmRlbmNpZXMpXG4gICAqL1xuICBwdWJsaWMgZ2V0IG91dGJvdW5kKCk6IEFycmF5PERlcGVuZGVuY3lWZXJ0ZXg+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9jaGlsZHJlbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGFyZW50cyBvZiB0aGUgdmVydGV4IChpLmUgZGVwZW5kYW50cylcbiAgICovXG4gIHB1YmxpYyBnZXQgaW5ib3VuZCgpOiBBcnJheTxEZXBlbmRlbmN5VmVydGV4PiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fcGFyZW50cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHRvcG9sb2dpY2FsbHkgc29ydGVkIGFycmF5IG9mIHRoZSBjb25zdHJ1Y3RzIGluIHRoZSBzdWItZ3JhcGguXG4gICAqL1xuICBwdWJsaWMgdG9wb2xvZ3koKTogSUNvbnN0cnVjdFtdIHtcblxuICAgIGNvbnN0IGZvdW5kID0gbmV3IFNldDxEZXBlbmRlbmN5VmVydGV4PigpO1xuICAgIGNvbnN0IHRvcG9sb2d5OiBEZXBlbmRlbmN5VmVydGV4W10gPSBbXTtcblxuICAgIGZ1bmN0aW9uIHZpc2l0KG46IERlcGVuZGVuY3lWZXJ0ZXgpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBuLm91dGJvdW5kKSB7XG4gICAgICAgIHZpc2l0KGMpO1xuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZC5oYXMobikpIHtcbiAgICAgICAgdG9wb2xvZ3kucHVzaChuKTtcbiAgICAgICAgZm91bmQuYWRkKG4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZpc2l0KHRoaXMpO1xuXG4gICAgcmV0dXJuIHRvcG9sb2d5LmZpbHRlcihkID0+IGQudmFsdWUpLm1hcChkID0+IGQudmFsdWUhKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB2ZXJ0ZXggYXMgYSBkZXBlbmRlbmN5IG9mIHRoZSBjdXJyZW50IG5vZGUuXG4gICAqIEFsc28gdXBkYXRlcyB0aGUgcGFyZW50cyBvZiBgZGVwYCwgc28gdGhhdCBpdCBjb250YWlucyB0aGlzIG5vZGUgYXMgYSBwYXJlbnQuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCBpbiBjYXNlIGl0IGNyZWF0ZXMgYSBjeWNsZSBpbiB0aGUgZ3JhcGguXG4gICAqXG4gICAqIEBwYXJhbSBkZXAgVGhlIGRlcGVuZGVuY3lcbiAgICovXG4gIHB1YmxpYyBhZGRDaGlsZChkZXA6IERlcGVuZGVuY3lWZXJ0ZXgpIHtcblxuICAgIGNvbnN0IGN5Y2xlOiBEZXBlbmRlbmN5VmVydGV4W10gPSBkZXAuZmluZFJvdXRlKHRoaXMpO1xuICAgIGlmIChjeWNsZS5sZW5ndGggIT09IDApIHtcbiAgICAgIGN5Y2xlLnB1c2goZGVwKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGVwZW5kZW5jeSBjeWNsZSBkZXRlY3RlZDogJHtjeWNsZS5maWx0ZXIoZCA9PiBkLnZhbHVlKS5tYXAoZCA9PiBkLnZhbHVlIS5ub2RlLnBhdGgpLmpvaW4oJyA9PiAnKX1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGlsZHJlbi5hZGQoZGVwKTtcbiAgICBkZXAuYWRkUGFyZW50KHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQYXJlbnQoZGVwOiBEZXBlbmRlbmN5VmVydGV4KSB7XG4gICAgdGhpcy5fcGFyZW50cy5hZGQoZGVwKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFJvdXRlKGRzdDogRGVwZW5kZW5jeVZlcnRleCk6IERlcGVuZGVuY3lWZXJ0ZXhbXSB7XG5cbiAgICBjb25zdCByb3V0ZTogRGVwZW5kZW5jeVZlcnRleFtdID0gW107XG4gICAgdmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIHJvdXRlO1xuXG4gICAgZnVuY3Rpb24gdmlzaXQobjogRGVwZW5kZW5jeVZlcnRleCk6IGJvb2xlYW4ge1xuICAgICAgcm91dGUucHVzaChuKTtcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgZm9yIChjb25zdCBjIG9mIG4ub3V0Ym91bmQpIHtcbiAgICAgICAgaWYgKGMgPT09IGRzdCkge1xuICAgICAgICAgIHJvdXRlLnB1c2goYyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZm91bmQgPSB2aXNpdChjKTtcbiAgICAgIH1cbiAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgcm91dGUucG9wKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm91bmQ7XG5cbiAgICB9XG5cbiAgfVxufVxuIl19
|
|
149032
149032
|
|
|
149033
149033
|
/***/ }),
|
|
@@ -149236,7 +149236,7 @@ class Duration {
|
|
|
149236
149236
|
}
|
|
149237
149237
|
exports.Duration = Duration;
|
|
149238
149238
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149239
|
-
Duration[_a] = { fqn: "cdk8s.Duration", version: "2.69.
|
|
149239
|
+
Duration[_a] = { fqn: "cdk8s.Duration", version: "2.69.39" };
|
|
149240
149240
|
class TimeUnit {
|
|
149241
149241
|
constructor(label, inMillis) {
|
|
149242
149242
|
this.label = label;
|
|
@@ -149332,7 +149332,7 @@ class Helm extends include_1.Include {
|
|
|
149332
149332
|
}
|
|
149333
149333
|
exports.Helm = Helm;
|
|
149334
149334
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149335
|
-
Helm[_a] = { fqn: "cdk8s.Helm", version: "2.69.
|
|
149335
|
+
Helm[_a] = { fqn: "cdk8s.Helm", version: "2.69.39" };
|
|
149336
149336
|
function renderTemplate(workdir, prog, args) {
|
|
149337
149337
|
const helm = _child_process_1._child_process.spawnSync(prog, args, {
|
|
149338
149338
|
maxBuffer: MAX_HELM_BUFFER,
|
|
@@ -149396,7 +149396,7 @@ class Include extends constructs_1.Construct {
|
|
|
149396
149396
|
}
|
|
149397
149397
|
exports.Include = Include;
|
|
149398
149398
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149399
|
-
Include[_a] = { fqn: "cdk8s.Include", version: "2.69.
|
|
149399
|
+
Include[_a] = { fqn: "cdk8s.Include", version: "2.69.39" };
|
|
149400
149400
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmNsdWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBOEI7QUFXOUI7Ozs7OztHQU1HO0FBQ0gsTUFBYSxPQUFRLFNBQVEsc0JBQVM7SUFDcEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHLFdBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksU0FBUyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBRXpELHdDQUF3QztZQUN4QyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25HLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWtCLEVBQUUsQ0FBQyxDQUFDLFlBQVksc0JBQVMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7O0FBckJILDBCQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXBpT2JqZWN0IH0gZnJvbSAnLi9hcGktb2JqZWN0JztcbmltcG9ydCB7IFlhbWwgfSBmcm9tICcuL3lhbWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY2x1ZGVQcm9wcyB7XG4gIC8qKlxuICAgKiBMb2NhbCBmaWxlIHBhdGggb3IgVVJMIHdoaWNoIGluY2x1ZGVzIGEgS3ViZXJuZXRlcyBZQU1MIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZXhhbXBsZSBteW1hbmlmZXN0LnlhbWxcbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlYWRzIGEgWUFNTCBtYW5pZmVzdCBmcm9tIGEgZmlsZSBvciBhIFVSTCBhbmQgZGVmaW5lcyBhbGwgcmVzb3VyY2VzIGFzIEFQSVxuICogb2JqZWN0cyB3aXRoaW4gdGhlIGRlZmluZWQgc2NvcGUuXG4gKlxuICogVGhlIG5hbWVzIChgbWV0YWRhdGEubmFtZWApIG9mIGltcG9ydGVkIHJlc291cmNlcyB3aWxsIGJlIHByZXNlcnZlZCBhcy1pc1xuICogZnJvbSB0aGUgbWFuaWZlc3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmNsdWRlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEluY2x1ZGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBvYmplY3RzID0gWWFtbC5sb2FkKHByb3BzLnVybCk7XG5cbiAgICBsZXQgb3JkZXIgPSAwO1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIG9iamVjdHMpIHtcbiAgICAgIGNvbnN0IG9iam5hbWUgPSBvYmoubWV0YWRhdGE/Lm5hbWUgPz8gYG9iamVjdCR7b3JkZXIrK31gO1xuXG4gICAgICAvLyByZW5kZXIgYW4gaWQ6IG5hbWVbLWtpbmRdWy1uYW1lc3BhY2VdXG4gICAgICBjb25zdCBvYmppZCA9IFtvYmpuYW1lLCBvYmoua2luZD8udG9Mb3dlckNhc2UoKSwgb2JqLm1ldGFkYXRhPy5uYW1lc3BhY2VdLmZpbHRlcih4ID0+IHgpLmpvaW4oJy0nKTtcbiAgICAgIG5ldyBBcGlPYmplY3QodGhpcywgb2JqaWQsIG9iaik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHRoZSBpbmNsdWRlZCBBUEkgb2JqZWN0cy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXBpT2JqZWN0cygpOiBBcGlPYmplY3RbXSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZS5jaGlsZHJlbi5maWx0ZXIoKG8pOiBvIGlzIEFwaU9iamVjdCA9PiBvIGluc3RhbmNlb2YgQXBpT2JqZWN0KTtcbiAgfVxufVxuIl19
|
|
149401
149401
|
|
|
149402
149402
|
/***/ }),
|
|
@@ -149534,7 +149534,7 @@ class JsonPatch {
|
|
|
149534
149534
|
}
|
|
149535
149535
|
exports.JsonPatch = JsonPatch;
|
|
149536
149536
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149537
|
-
JsonPatch[_a] = { fqn: "cdk8s.JsonPatch", version: "2.69.
|
|
149537
|
+
JsonPatch[_a] = { fqn: "cdk8s.JsonPatch", version: "2.69.39" };
|
|
149538
149538
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1wYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uLXBhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQW1FO0FBRW5FOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBYSxTQUFTO0lBQ3BCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFhLEVBQUUsR0FBRyxHQUFnQjtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDRCQUFVLEVBQUMsUUFBUSxFQUFFLElBQUEsMkJBQVMsRUFBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBVSxJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqRzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWSxJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBGOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVksRUFBRSxLQUFVLElBQUksT0FBTyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXpHOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsSUFBWSxJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwRzs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsSUFBWSxJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwRzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBWSxFQUFFLEtBQVUsSUFBSSxPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkcsWUFBcUMsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFHLENBQUM7SUFFN0Q7Ozs7T0FJRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7QUFwRUgsOEJBcUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBwbHlQYXRjaCwgZGVlcENsb25lLCBPcGVyYXRpb24gfSBmcm9tICdmYXN0LWpzb24tcGF0Y2gnO1xuXG4vKipcbiAqIFV0aWxpdHkgZm9yIGFwcGx5aW5nIFJGQy02OTAyIEpTT04tUGF0Y2ggdG8gYSBkb2N1bWVudC5cbiAqXG4gKiBVc2UgdGhlIHRoZSBgSnNvblBhdGNoLmFwcGx5KGRvYywgLi4ub3BzKWAgZnVuY3Rpb24gdG8gYXBwbHkgYSBzZXQgb2ZcbiAqIG9wZXJhdGlvbnMgdG8gYSBKU09OIGRvY3VtZW50IGFuZCByZXR1cm4gdGhlIHJlc3VsdC5cbiAqXG4gKiBPcGVyYXRpb25zIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHRoZSBmYWN0b3J5IG1ldGhvZHMgYEpzb25QYXRjaC5hZGQoKWAsXG4gKiBgSnNvblBhdGNoLnJlbW92ZSgpYCwgZXRjLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICpjb25zdCBvdXRwdXQgPSBKc29uUGF0Y2guYXBwbHkoaW5wdXQsXG4gKiAgSnNvblBhdGNoLnJlcGxhY2UoJy93b3JsZC9oaS90aGVyZScsICdnb29kYnllJyksXG4gKiAgSnNvblBhdGNoLmFkZCgnL3dvcmxkL2Zvby8nLCAnYm9vbScpLFxuICogIEpzb25QYXRjaC5yZW1vdmUoJy9oZWxsbycpKTtcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uUGF0Y2gge1xuICAvKipcbiAgICogQXBwbGllcyBhIHNldCBvZiBKU09OLVBhdGNoIChSRkMtNjkwMikgb3BlcmF0aW9ucyB0byBgZG9jdW1lbnRgIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gICAqIEBwYXJhbSBkb2N1bWVudCBUaGUgZG9jdW1lbnQgdG8gcGF0Y2hcbiAgICogQHBhcmFtIG9wcyBUaGUgb3BlcmF0aW9ucyB0byBhcHBseVxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IGRvY3VtZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFwcGx5KGRvY3VtZW50OiBhbnksIC4uLm9wczogSnNvblBhdGNoW10pOiBhbnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFwcGx5UGF0Y2goZG9jdW1lbnQsIGRlZXBDbG9uZShvcHMubWFwKG8gPT4gby5fdG9Kc29uKCkpKSk7XG4gICAgcmV0dXJuIHJlc3VsdC5uZXdEb2N1bWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgdmFsdWUgdG8gYW4gb2JqZWN0IG9yIGluc2VydHMgaXQgaW50byBhbiBhcnJheS4gSW4gdGhlIGNhc2Ugb2YgYW5cbiAgICogYXJyYXksIHRoZSB2YWx1ZSBpcyBpbnNlcnRlZCBiZWZvcmUgdGhlIGdpdmVuIGluZGV4LiBUaGUgLSBjaGFyYWN0ZXIgY2FuIGJlXG4gICAqIHVzZWQgaW5zdGVhZCBvZiBhbiBpbmRleCB0byBpbnNlcnQgYXQgdGhlIGVuZCBvZiBhbiBhcnJheS5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLmFkZCgnL2Jpc2N1aXRzLzEnLCB7IFwibmFtZVwiOiBcIkdpbmdlciBOdXRcIiB9KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZGQocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7IHJldHVybiBuZXcgSnNvblBhdGNoKHsgb3A6ICdhZGQnLCBwYXRoLCB2YWx1ZSB9KTsgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgdmFsdWUgZnJvbSBhbiBvYmplY3Qgb3IgYXJyYXkuXG4gICAqXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5yZW1vdmUoJy9iaXNjdWl0cycpXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5yZW1vdmUoJy9iaXNjdWl0cy8wJylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlKHBhdGg6IHN0cmluZykgeyByZXR1cm4gbmV3IEpzb25QYXRjaCh7IG9wOiAncmVtb3ZlJywgcGF0aCB9KTsgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIHZhbHVlLiBFcXVpdmFsZW50IHRvIGEg4oCccmVtb3Zl4oCdIGZvbGxvd2VkIGJ5IGFuIOKAnGFkZOKAnS5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLnJlcGxhY2UoJy9iaXNjdWl0cy8wL25hbWUnLCAnQ2hvY29sYXRlIERpZ2VzdGl2ZScpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlcGxhY2UocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7IHJldHVybiBuZXcgSnNvblBhdGNoKHsgb3A6ICdyZXBsYWNlJywgcGF0aCwgdmFsdWUgfSk7IH1cblxuICAvKipcbiAgICogQ29waWVzIGEgdmFsdWUgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlciB3aXRoaW4gdGhlIEpTT04gZG9jdW1lbnQuIEJvdGhcbiAgICogZnJvbSBhbmQgcGF0aCBhcmUgSlNPTiBQb2ludGVycy5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLmNvcHkoJy9iaXNjdWl0cy8wJywgJy9iZXN0X2Jpc2N1aXQnKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb3B5KGZyb206IHN0cmluZywgcGF0aDogc3RyaW5nKSB7IHJldHVybiBuZXcgSnNvblBhdGNoKHsgb3A6ICdjb3B5JywgZnJvbSwgcGF0aCB9KTsgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyBhIHZhbHVlIGZyb20gb25lIGxvY2F0aW9uIHRvIHRoZSBvdGhlci4gQm90aCBmcm9tIGFuZCBwYXRoIGFyZSBKU09OIFBvaW50ZXJzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBKc29uUGF0Y2gubW92ZSgnL2Jpc2N1aXRzJywgJy9jb29raWVzJylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbW92ZShmcm9tOiBzdHJpbmcsIHBhdGg6IHN0cmluZykgeyByZXR1cm4gbmV3IEpzb25QYXRjaCh7IG9wOiAnbW92ZScsIGZyb20sIHBhdGggfSk7IH1cblxuICAvKipcbiAgICogVGVzdHMgdGhhdCB0aGUgc3BlY2lmaWVkIHZhbHVlIGlzIHNldCBpbiB0aGUgZG9jdW1lbnQuIElmIHRoZSB0ZXN0IGZhaWxzLFxuICAgKiB0aGVuIHRoZSBwYXRjaCBhcyBhIHdob2xlIHNob3VsZCBub3QgYXBwbHkuXG4gICAqXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC50ZXN0KCcvYmVzdF9iaXNjdWl0L25hbWUnLCAnQ2hvY28gTGVpYm5peicpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRlc3QocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7IHJldHVybiBuZXcgSnNvblBhdGNoKHsgb3A6ICd0ZXN0JywgcGF0aCwgdmFsdWUgfSk7IH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3BlcmF0aW9uOiBPcGVyYXRpb24pIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhpcyBKU09OIHBhdGNoIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvSnNvbigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbjtcbiAgfVxufSJdfQ==
|
|
149539
149539
|
|
|
149540
149540
|
/***/ }),
|
|
@@ -149561,7 +149561,7 @@ class Lazy {
|
|
|
149561
149561
|
}
|
|
149562
149562
|
exports.Lazy = Lazy;
|
|
149563
149563
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149564
|
-
Lazy[_a] = { fqn: "cdk8s.Lazy", version: "2.69.
|
|
149564
|
+
Lazy[_a] = { fqn: "cdk8s.Lazy", version: "2.69.39" };
|
|
149565
149565
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXp5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsTUFBYSxJQUFJO0lBQ1IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFzQjtRQUN0QyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBbUIsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFBcUMsUUFBc0I7UUFBdEIsYUFBUSxHQUFSLFFBQVEsQ0FBYztJQUFHLENBQUM7SUFFeEQsT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDOztBQVRILG9CQVVDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIExhenkge1xuICBwdWJsaWMgc3RhdGljIGFueShwcm9kdWNlcjogSUFueVByb2R1Y2VyKTogYW55IHtcbiAgICByZXR1cm4gbmV3IExhenkocHJvZHVjZXIpIGFzIHVua25vd24gYXMgYW55O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb2R1Y2VyOiBJQW55UHJvZHVjZXIpIHt9XG5cbiAgcHVibGljIHByb2R1Y2UoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5wcm9kdWNlci5wcm9kdWNlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQW55UHJvZHVjZXIge1xuICBwcm9kdWNlKCk6IGFueTtcbn1cblxuXG4iXX0=
|
|
149566
149566
|
|
|
149567
149567
|
/***/ }),
|
|
@@ -149660,7 +149660,7 @@ class ApiObjectMetadataDefinition {
|
|
|
149660
149660
|
}
|
|
149661
149661
|
exports.ApiObjectMetadataDefinition = ApiObjectMetadataDefinition;
|
|
149662
149662
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149663
|
-
ApiObjectMetadataDefinition[_a] = { fqn: "cdk8s.ApiObjectMetadataDefinition", version: "2.69.
|
|
149663
|
+
ApiObjectMetadataDefinition[_a] = { fqn: "cdk8s.ApiObjectMetadataDefinition", version: "2.69.39" };
|
|
149664
149664
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBd0M7QUFFeEMsdUNBQW9DO0FBbUhwQzs7R0FFRztBQUNILE1BQWEsMkJBQTJCO0lBOEN0QyxZQUFZLE9BQTJDO1FBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkYsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUM7UUFFckMsK0VBQStFO1FBQy9FLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxHQUFXO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsR0FBRyxVQUFvQjtRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsS0FBcUI7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUEscUJBQWEsRUFBQyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRyxPQUFPLFFBQVEsQ0FBQyxJQUFBLGlCQUFPLEVBQUMsRUFBRSxFQUFFO1lBQzFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjtZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQzs7QUFqSUgsa0VBa0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2FuaXRpemVWYWx1ZSB9IGZyb20gJy4vX3V0aWwnO1xuaW1wb3J0IHsgQXBpT2JqZWN0IH0gZnJvbSAnLi9hcGktb2JqZWN0JztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICcuL3Jlc29sdmUnO1xuXG4vKipcbiAqIE1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlPYmplY3RNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlLCBuYW1lc3BhY2UtZ2xvYmFsLCBuYW1lIG9mIHRoaXMgb2JqZWN0IGluc2lkZSB0aGUgS3ViZXJuZXRlc1xuICAgKiBjbHVzdGVyLlxuICAgKlxuICAgKiBOb3JtYWxseSwgeW91IHNob3VsZG4ndCBzcGVjaWZ5IG5hbWVzIGZvciBvYmplY3RzIGFuZCBsZXQgdGhlIENESyBnZW5lcmF0ZVxuICAgKiBhIG5hbWUgZm9yIHlvdSB0aGF0IGlzIGFwcGxpY2F0aW9uLXVuaXF1ZS4gVGhlIG5hbWVzIENESyBnZW5lcmF0ZXMgYXJlXG4gICAqIGNvbXBvc2VkIGZyb20gdGhlIGNvbnN0cnVjdCBwYXRoIGNvbXBvbmVudHMsIHNlcGFyYXRlZCBieSBkb3RzIGFuZCBhIHN1ZmZpeFxuICAgKiB0aGF0IGlzIGJhc2VkIG9uIGEgaGFzaCBvZiB0aGUgZW50aXJlIHBhdGgsIHRvIGVuc3VyZSB1bmlxdWVuZXNzLlxuICAgKlxuICAgKiBZb3UgY2FuIHN1cHBseSBjdXN0b20gbmFtZSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IG92ZXJyaWRpbmcgdGhlXG4gICAqIGBjaGFydC5nZW5lcmF0ZU9iamVjdE5hbWVgIG1ldGhvZC5cbiAgICpcbiAgICogSWYgeW91IHVzZSBhbiBleHBsaWNpdCBuYW1lIGhlcmUsIGJlYXIgaW4gbWluZCB0aGF0IHRoaXMgcmVkdWNlcyB0aGVcbiAgICogY29tcG9zYWJpbGl0eSBvZiB5b3VyIGNvbnN0cnVjdCBiZWNhdXNlIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRvIGluY2x1ZGVcbiAgICogbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBpbiBhbnkgYXBwLiBUaGVyZWZvcmUgaXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvXG4gICAqIGxlYXZlIHRoaXMgdW5zcGVjaWZpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gYXBwLXVuaXF1ZSBuYW1lIGdlbmVyYXRlZCBieSB0aGUgY2hhcnRcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFubm90YXRpb25zIGlzIGFuIHVuc3RydWN0dXJlZCBrZXkgdmFsdWUgbWFwIHN0b3JlZCB3aXRoIGEgcmVzb3VyY2UgdGhhdCBtYXkgYmUgc2V0IGJ5IGV4dGVybmFsIHRvb2xzIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBhcmJpdHJhcnkgbWV0YWRhdGEuIFRoZXkgYXJlIG5vdCBxdWVyeWFibGUgYW5kIHNob3VsZCBiZVxuICAgKiBwcmVzZXJ2ZWQgd2hlbiBtb2RpZnlpbmcgb2JqZWN0cy5cbiAgICpcbiAgICogQHNlZSBodHRwOi8va3ViZXJuZXRlcy5pby9kb2NzL3VzZXItZ3VpZGUvYW5ub3RhdGlvbnNcbiAgICogQGRlZmF1bHQgLSBObyBhbm5vdGF0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFubm90YXRpb25zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogTWFwIG9mIHN0cmluZyBrZXlzIGFuZCB2YWx1ZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBvcmdhbml6ZSBhbmQgY2F0ZWdvcml6ZSAoc2NvcGUgYW5kIHNlbGVjdCkgb2JqZWN0cy5cbiAgICogTWF5IG1hdGNoIHNlbGVjdG9ycyBvZiByZXBsaWNhdGlvbiBjb250cm9sbGVycyBhbmQgc2VydmljZXMuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL2t1YmVybmV0ZXMuaW8vZG9jcy91c2VyLWd1aWRlL2xhYmVsc1xuICAgKiBAZGVmYXVsdCAtIE5vIGxhYmVscy5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVscz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZSBkZWZpbmVzIHRoZSBzcGFjZSB3aXRoaW4gZWFjaCBuYW1lIG11c3QgYmUgdW5pcXVlLiBBbiBlbXB0eSBuYW1lc3BhY2UgaXMgZXF1aXZhbGVudCB0byB0aGUgXCJkZWZhdWx0XCIgbmFtZXNwYWNlLCBidXQgXCJkZWZhdWx0XCIgaXMgdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbi5cbiAgICogTm90IGFsbCBvYmplY3RzIGFyZSByZXF1aXJlZCB0byBiZSBzY29wZWQgdG8gYSBuYW1lc3BhY2UgLSB0aGUgdmFsdWUgb2YgdGhpcyBmaWVsZCBmb3IgdGhvc2Ugb2JqZWN0cyB3aWxsIGJlIGVtcHR5LiBNdXN0IGJlIGEgRE5TX0xBQkVMLiBDYW5ub3QgYmUgdXBkYXRlZC4gTW9yZSBpbmZvOiBodHRwOi8va3ViZXJuZXRlcy5pby9kb2NzL3VzZXItZ3VpZGUvbmFtZXNwYWNlc1xuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgKHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlICdkZWZhdWx0JyBuYW1lc3BhY2UpXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZWQga2V5cyB0aGF0IHRlbGwgS3ViZXJuZXRlcyB0byB3YWl0IHVudGlsIHNwZWNpZmljIGNvbmRpdGlvbnMgYXJlXG4gICAqIG1ldCBiZWZvcmUgaXQgZnVsbHkgZGVsZXRlcyByZXNvdXJjZXMgbWFya2VkIGZvciBkZWxldGlvbi5cbiAgICpcbiAgICogTXVzdCBiZSBlbXB0eSBiZWZvcmUgdGhlIG9iamVjdCBpcyBkZWxldGVkIGZyb20gdGhlIHJlZ2lzdHJ5LiBFYWNoIGVudHJ5IGlzXG4gICAqIGFuIGlkZW50aWZpZXIgZm9yIHRoZSByZXNwb25zaWJsZSBjb21wb25lbnQgdGhhdCB3aWxsIHJlbW92ZSB0aGUgZW50cnkgZnJvbVxuICAgKiB0aGUgbGlzdC4gSWYgdGhlIGRlbGV0aW9uVGltZXN0YW1wIG9mIHRoZSBvYmplY3QgaXMgbm9uLW5pbCwgZW50cmllcyBpblxuICAgKiB0aGlzIGxpc3QgY2FuIG9ubHkgYmUgcmVtb3ZlZC4gRmluYWxpemVycyBtYXkgYmUgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGluXG4gICAqIGFueSBvcmRlci4gIE9yZGVyIGlzIE5PVCBlbmZvcmNlZCBiZWNhdXNlIGl0IGludHJvZHVjZXMgc2lnbmlmaWNhbnQgcmlzayBvZlxuICAgKiBzdHVjayBmaW5hbGl6ZXJzLiBmaW5hbGl6ZXJzIGlzIGEgc2hhcmVkIGZpZWxkLCBhbnkgYWN0b3Igd2l0aCBwZXJtaXNzaW9uXG4gICAqIGNhbiByZW9yZGVyIGl0LiBJZiB0aGUgZmluYWxpemVyIGxpc3QgaXMgcHJvY2Vzc2VkIGluIG9yZGVyLCB0aGVuIHRoaXMgY2FuXG4gICAqIGxlYWQgdG8gYSBzaXR1YXRpb24gaW4gd2hpY2ggdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgdGhlIGZpcnN0XG4gICAqIGZpbmFsaXplciBpbiB0aGUgbGlzdCBpcyB3YWl0aW5nIGZvciBhIHNpZ25hbCAoZmllbGQgdmFsdWUsIGV4dGVybmFsXG4gICAqIHN5c3RlbSwgb3Igb3RoZXIpIHByb2R1Y2VkIGJ5IGEgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBhIGZpbmFsaXplciBsYXRlclxuICAgKiBpbiB0aGUgbGlzdCwgcmVzdWx0aW5nIGluIGEgZGVhZGxvY2suIFdpdGhvdXQgZW5mb3JjZWQgb3JkZXJpbmcgZmluYWxpemVyc1xuICAgKiBhcmUgZnJlZSB0byBvcmRlciBhbW9uZ3N0IHRoZW1zZWx2ZXMgYW5kIGFyZSBub3QgdnVsbmVyYWJsZSB0byBvcmRlcmluZ1xuICAgKiBjaGFuZ2VzIGluIHRoZSBsaXN0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL292ZXJ2aWV3L3dvcmtpbmctd2l0aC1vYmplY3RzL2ZpbmFsaXplcnMvXG4gICAqIEBkZWZhdWx0IC0gTm8gZmluYWxpemVycy5cbiAgICovXG4gIHJlYWRvbmx5IGZpbmFsaXplcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBvYmplY3RzIGRlcGVuZGVkIGJ5IHRoaXMgb2JqZWN0LiBJZiBBTEwgb2JqZWN0cyBpbiB0aGUgbGlzdCBoYXZlXG4gICAqIGJlZW4gZGVsZXRlZCwgdGhpcyBvYmplY3Qgd2lsbCBiZSBnYXJiYWdlIGNvbGxlY3RlZC4gSWYgdGhpcyBvYmplY3QgaXNcbiAgICogbWFuYWdlZCBieSBhIGNvbnRyb2xsZXIsIHRoZW4gYW4gZW50cnkgaW4gdGhpcyBsaXN0IHdpbGwgcG9pbnQgdG8gdGhpc1xuICAgKiBjb250cm9sbGVyLCB3aXRoIHRoZSBjb250cm9sbGVyIGZpZWxkIHNldCB0byB0cnVlLiBUaGVyZSBjYW5ub3QgYmUgbW9yZVxuICAgKiB0aGFuIG9uZSBtYW5hZ2luZyBjb250cm9sbGVyLlxuICAgKlxuICAgKiBLdWJlcm5ldGVzIHNldHMgdGhlIHZhbHVlIG9mIHRoaXMgZmllbGQgYXV0b21hdGljYWxseSBmb3Igb2JqZWN0cyB0aGF0IGFyZVxuICAgKiBkZXBlbmRlbnRzIG9mIG90aGVyIG9iamVjdHMgbGlrZSBSZXBsaWNhU2V0cywgRGFlbW9uU2V0cywgRGVwbG95bWVudHMsIEpvYnNcbiAgICogYW5kIENyb25Kb2JzLCBhbmQgUmVwbGljYXRpb25Db250cm9sbGVycy4gWW91IGNhbiBhbHNvIGNvbmZpZ3VyZSB0aGVzZVxuICAgKiByZWxhdGlvbnNoaXBzIG1hbnVhbGx5IGJ5IGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkLiBIb3dldmVyLCB5b3VcbiAgICogdXN1YWxseSBkb24ndCBuZWVkIHRvIGFuZCBjYW4gYWxsb3cgS3ViZXJuZXRlcyB0byBhdXRvbWF0aWNhbGx5IG1hbmFnZSB0aGVcbiAgICogcmVsYXRpb25zaGlwcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9vdmVydmlldy93b3JraW5nLXdpdGgtb2JqZWN0cy9vd25lcnMtZGVwZW5kZW50cy9cbiAgICogQGRlZmF1bHQgLSBhdXRvbWF0aWNhbGx5IHNldCBieSBLdWJlcm5ldGVzXG4gICAqL1xuICByZWFkb25seSBvd25lclJlZmVyZW5jZXM/OiBPd25lclJlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhIGF0dHJpYnV0ZXMuXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jZGs4cy10ZWFtL2NkazhzLWNvcmUvaXNzdWVzLzEyOTdcbiAgICovXG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgQXBpT2JqZWN0TWV0YWRhdGFEZWZpbml0aW9uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlPYmplY3RNZXRhZGF0YURlZmluaXRpb25PcHRpb25zIGV4dGVuZHMgQXBpT2JqZWN0TWV0YWRhdGEge1xuXG4gIC8qKlxuICAgKiBXaGljaCBBcGlPYmplY3QgaW5zdGFuY2UgaXMgdGhlIG1ldGFkYXRhIGF0dGFjaGVkIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpT2JqZWN0OiBBcGlPYmplY3Q7XG5cbn1cblxuLyoqXG4gKiBPYmplY3QgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlPYmplY3RNZXRhZGF0YURlZmluaXRpb24ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFQSSBvYmplY3QuXG4gICAqXG4gICAqIElmIGEgbmFtZSBpcyBzcGVjaWZpZWQgaW4gYG1ldGFkYXRhLm5hbWVgIHRoaXMgd2lsbCBiZSB0aGUgbmFtZSByZXR1cm5lZC5cbiAgICogT3RoZXJ3aXNlLCBhIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgY2FsbGluZ1xuICAgKiBgQ2hhcnQub2YodGhpcykuZ2VuZXJhdGVkT2JqZWN0TmFtZSh0aGlzKWAsIHdoaWNoIGJ5IGRlZmF1bHQgdXNlcyB0aGVcbiAgICogY29uc3RydWN0IHBhdGggdG8gZ2VuZXJhdGUgYSBETlMtY29tcGF0aWJsZSBuYW1lIGZvciB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9iamVjdCdzIG5hbWVzcGFjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVscyBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxhYmVsczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQW5ub3RhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhbm5vdGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRmluYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbmFsaXplcnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPd25lciByZWZlcmVuY2VzIHNldCBmb3IgdGhpcyBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG93bmVyUmVmZXJlbmNlczogT3duZXJSZWZlcmVuY2VbXTtcblxuICAvKipcbiAgICogVGhlIEFwaU9iamVjdCB0aGlzIG1ldGFkYXRhIGlzIGF0dGFjaGVkIHRvLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhcGlPYmplY3Q6IEFwaU9iamVjdDtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBtZXRhZGF0YSBhdHRyaWJ1dGVzIHBhc3NlZCB0aHJvdWdoIGBvcHRpb25zYC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FkZGl0aW9uYWxBdHRyaWJ1dGVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFwaU9iamVjdE1ldGFkYXRhRGVmaW5pdGlvbk9wdGlvbnMpIHtcbiAgICB0aGlzLm5hbWUgPSBvcHRpb25zLm5hbWU7XG4gICAgdGhpcy5sYWJlbHMgPSB7IC4uLihvcHRpb25zLmxhYmVscyA/PyB7fSkgfTtcbiAgICB0aGlzLmFubm90YXRpb25zID0geyAuLi4ob3B0aW9ucy5hbm5vdGF0aW9ucyA/PyB7fSkgfTtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG9wdGlvbnMubmFtZXNwYWNlO1xuICAgIHRoaXMuZmluYWxpemVycyA9IG9wdGlvbnMuZmluYWxpemVycyA/IFsuLi5vcHRpb25zLmZpbmFsaXplcnNdIDogW107XG4gICAgdGhpcy5vd25lclJlZmVyZW5jZXMgPSBvcHRpb25zLm93bmVyUmVmZXJlbmNlcyA/IFsuLi5vcHRpb25zLm93bmVyUmVmZXJlbmNlc10gOiBbXTtcbiAgICB0aGlzLmFwaU9iamVjdCA9IG9wdGlvbnMuYXBpT2JqZWN0O1xuICAgIHRoaXMuX2FkZGl0aW9uYWxBdHRyaWJ1dGVzID0gb3B0aW9ucztcblxuICAgIC8vIG90aGVyd2lzZSBhcGlPYmplY3QgaXMgcGFzc2VkIHRvIHRoZSByZXNvbHZpbmcgbG9naWMsIHdoaWNoIGV4cGVjdGFkbHkgZmFpbHNcbiAgICBkZWxldGUgdGhpcy5fYWRkaXRpb25hbEF0dHJpYnV0ZXMuYXBpT2JqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxhYmVsLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleS5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFkZExhYmVsKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sYWJlbHNba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGEgdmFsdWUgb2YgYSBsYWJlbCBvciB1bmRlZmluZWRcbiAgICogQHBhcmFtIGtleSB0aGUgbGFiZWxcbiAgICovXG4gIHB1YmxpYyBnZXRMYWJlbChrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzW2tleV07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGFubm90YXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5LlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgYWRkQW5ub3RhdGlvbihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnNba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBmaW5hbGl6ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gZmluYWxpemVycyB0aGUgZmluYWxpemVyc1xuICAgKi9cbiAgcHVibGljIGFkZEZpbmFsaXplcnMoLi4uZmluYWxpemVyczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmZpbmFsaXplcnMucHVzaCguLi5maW5hbGl6ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gb3duZXIuXG4gICAqXG4gICAqIEBwYXJhbSBvd25lciB0aGUgb3duZXJcbiAgICovXG4gIHB1YmxpYyBhZGRPd25lclJlZmVyZW5jZShvd25lcjogT3duZXJSZWZlcmVuY2UpIHtcbiAgICB0aGlzLm93bmVyUmVmZXJlbmNlcy5wdXNoKG93bmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGFyYml0cmFyeSBrZXkvdmFsdWUgdG8gdGhlIG9iamVjdCBtZXRhZGF0YS5cbiAgICogQHBhcmFtIGtleSBNZXRhZGF0YSBrZXlcbiAgICogQHBhcmFtIHZhbHVlIE1ldGFkYXRhIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgYWRkKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fYWRkaXRpb25hbEF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bnRoZXNpemVzIGEgazhzIE9iamVjdE1ldGEgZm9yIHRoaXMgbWV0YWRhdGEgc2V0LlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpIHtcbiAgICBjb25zdCBzYW5pdGl6ZSA9ICh4OiBhbnkpID0+IHNhbml0aXplVmFsdWUoeCwgeyBmaWx0ZXJFbXB0eUFycmF5czogdHJ1ZSwgZmlsdGVyRW1wdHlPYmplY3RzOiB0cnVlIH0pO1xuICAgIHJldHVybiBzYW5pdGl6ZShyZXNvbHZlKFtdLCB7XG4gICAgICAuLi50aGlzLl9hZGRpdGlvbmFsQXR0cmlidXRlcyxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIG5hbWVzcGFjZTogdGhpcy5uYW1lc3BhY2UsXG4gICAgICBhbm5vdGF0aW9uczogdGhpcy5hbm5vdGF0aW9ucyxcbiAgICAgIGZpbmFsaXplcnM6IHRoaXMuZmluYWxpemVycyxcbiAgICAgIG93bmVyUmVmZXJlbmNlczogdGhpcy5vd25lclJlZmVyZW5jZXMsXG4gICAgICBsYWJlbHM6IHRoaXMubGFiZWxzLFxuICAgIH0sIHRoaXMuYXBpT2JqZWN0KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBPd25lclJlZmVyZW5jZSBjb250YWlucyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gbGV0IHlvdSBpZGVudGlmeSBhbiBvd25pbmdcbiAqIG9iamVjdC4gQW4gb3duaW5nIG9iamVjdCBtdXN0IGJlIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB0aGUgZGVwZW5kZW50LCBvclxuICogYmUgY2x1c3Rlci1zY29wZWQsIHNvIHRoZXJlIGlzIG5vIG5hbWVzcGFjZSBmaWVsZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lclJlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBBUEkgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbnQuXG4gICAqL1xuICByZWFkb25seSBhcGlWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIEFORCBpZiB0aGUgb3duZXIgaGFzIHRoZSBcImZvcmVncm91bmREZWxldGlvblwiIGZpbmFsaXplciwgdGhlbiB0aGVcbiAgICogb3duZXIgY2Fubm90IGJlIGRlbGV0ZWQgZnJvbSB0aGUga2V5LXZhbHVlIHN0b3JlIHVudGlsIHRoaXMgcmVmZXJlbmNlIGlzXG4gICAqIHJlbW92ZWQuIERlZmF1bHRzIHRvIGZhbHNlLiBUbyBzZXQgdGhpcyBmaWVsZCwgYSB1c2VyIG5lZWRzIFwiZGVsZXRlXCJcbiAgICogcGVybWlzc2lvbiBvZiB0aGUgb3duZXIsIG90aGVyd2lzZSA0MjIgKFVucHJvY2Vzc2FibGUgRW50aXR5KSB3aWxsIGJlXG4gICAqIHJldHVybmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZS4gVG8gc2V0IHRoaXMgZmllbGQsIGEgdXNlciBuZWVkcyBcImRlbGV0ZVwiIHBlcm1pc3Npb24gb2YgdGhlXG4gICAqIG93bmVyLCBvdGhlcndpc2UgNDIyIChVbnByb2Nlc3NhYmxlIEVudGl0eSkgd2lsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHJlYWRvbmx5IGJsb2NrT3duZXJEZWxldGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHRoaXMgcmVmZXJlbmNlIHBvaW50cyB0byB0aGUgbWFuYWdpbmcgY29udHJvbGxlci5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRyb2xsZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBLaW5kIG9mIHRoZSByZWZlcmVudC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdC5rOHMuaW8vY29tbXVuaXR5L2NvbnRyaWJ1dG9ycy9kZXZlbC9zaWctYXJjaGl0ZWN0dXJlL2FwaS1jb252ZW50aW9ucy5tZCN0eXBlcy1raW5kc1xuICAgKi9cbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSByZWZlcmVudC5cbiAgICpcbiAgICogQHNlZSBodHRwOi8va3ViZXJuZXRlcy5pby9kb2NzL3VzZXItZ3VpZGUvaWRlbnRpZmllcnMjbmFtZXNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVUlEIG9mIHRoZSByZWZlcmVudC5cbiAgICpcbiAgICogQHNlZSBodHRwOi8va3ViZXJuZXRlcy5pby9kb2NzL3VzZXItZ3VpZGUvaWRlbnRpZmllcnMjdWlkc1xuICAgKi9cbiAgcmVhZG9ubHkgdWlkOiBzdHJpbmc7XG5cbn1cbiJdfQ==
|
|
149665
149665
|
|
|
149666
149666
|
/***/ }),
|
|
@@ -149791,7 +149791,7 @@ class Names {
|
|
|
149791
149791
|
}
|
|
149792
149792
|
exports.Names = Names;
|
|
149793
149793
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149794
|
-
Names[_a] = { fqn: "cdk8s.Names", version: "2.69.
|
|
149794
|
+
Names[_a] = { fqn: "cdk8s.Names", version: "2.69.39" };
|
|
149795
149795
|
function omitDuplicates(value, index, components) {
|
|
149796
149796
|
return value !== components[index - 1];
|
|
149797
149797
|
}
|
|
@@ -149883,7 +149883,7 @@ class ResolutionContext {
|
|
|
149883
149883
|
}
|
|
149884
149884
|
exports.ResolutionContext = ResolutionContext;
|
|
149885
149885
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149886
|
-
ResolutionContext[_a] = { fqn: "cdk8s.ResolutionContext", version: "2.69.
|
|
149886
|
+
ResolutionContext[_a] = { fqn: "cdk8s.ResolutionContext", version: "2.69.39" };
|
|
149887
149887
|
/**
|
|
149888
149888
|
* Resolvers instanecs of `Lazy`.
|
|
149889
149889
|
*/
|
|
@@ -149897,7 +149897,7 @@ class LazyResolver {
|
|
|
149897
149897
|
}
|
|
149898
149898
|
exports.LazyResolver = LazyResolver;
|
|
149899
149899
|
_b = JSII_RTTI_SYMBOL_1;
|
|
149900
|
-
LazyResolver[_b] = { fqn: "cdk8s.LazyResolver", version: "2.69.
|
|
149900
|
+
LazyResolver[_b] = { fqn: "cdk8s.LazyResolver", version: "2.69.39" };
|
|
149901
149901
|
/**
|
|
149902
149902
|
* Resolves implicit tokens.
|
|
149903
149903
|
*/
|
|
@@ -149911,7 +149911,7 @@ class ImplicitTokenResolver {
|
|
|
149911
149911
|
}
|
|
149912
149912
|
exports.ImplicitTokenResolver = ImplicitTokenResolver;
|
|
149913
149913
|
_c = JSII_RTTI_SYMBOL_1;
|
|
149914
|
-
ImplicitTokenResolver[_c] = { fqn: "cdk8s.ImplicitTokenResolver", version: "2.69.
|
|
149914
|
+
ImplicitTokenResolver[_c] = { fqn: "cdk8s.ImplicitTokenResolver", version: "2.69.39" };
|
|
149915
149915
|
/**
|
|
149916
149916
|
* Resolves union types that allow using either number or string (as generated by the CLI).
|
|
149917
149917
|
*
|
|
@@ -149932,7 +149932,7 @@ class NumberStringUnionResolver {
|
|
|
149932
149932
|
}
|
|
149933
149933
|
exports.NumberStringUnionResolver = NumberStringUnionResolver;
|
|
149934
149934
|
_d = JSII_RTTI_SYMBOL_1;
|
|
149935
|
-
NumberStringUnionResolver[_d] = { fqn: "cdk8s.NumberStringUnionResolver", version: "2.69.
|
|
149935
|
+
NumberStringUnionResolver[_d] = { fqn: "cdk8s.NumberStringUnionResolver", version: "2.69.39" };
|
|
149936
149936
|
NumberStringUnionResolver.TYPES = ['number', 'string'];
|
|
149937
149937
|
/**
|
|
149938
149938
|
* Resolves any value attached to a specific ApiObject.
|
|
@@ -150068,7 +150068,7 @@ class Size {
|
|
|
150068
150068
|
}
|
|
150069
150069
|
exports.Size = Size;
|
|
150070
150070
|
_a = JSII_RTTI_SYMBOL_1;
|
|
150071
|
-
Size[_a] = { fqn: "cdk8s.Size", version: "2.69.
|
|
150071
|
+
Size[_a] = { fqn: "cdk8s.Size", version: "2.69.39" };
|
|
150072
150072
|
/**
|
|
150073
150073
|
* Rounding behaviour when converting between units of `Size`.
|
|
150074
150074
|
*/
|
|
@@ -150173,7 +150173,7 @@ class Testing {
|
|
|
150173
150173
|
}
|
|
150174
150174
|
exports.Testing = Testing;
|
|
150175
150175
|
_a = JSII_RTTI_SYMBOL_1;
|
|
150176
|
-
Testing[_a] = { fqn: "cdk8s.Testing", version: "2.69.
|
|
150176
|
+
Testing[_a] = { fqn: "cdk8s.Testing", version: "2.69.39" };
|
|
150177
150177
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsK0JBQXNDO0FBQ3RDLG1DQUFnQztBQUVoQzs7R0FFRztBQUNILE1BQWEsT0FBTztJQUNsQjs7O09BR0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQWdCO1FBQ2hDLElBQUksTUFBYyxDQUFDO1FBQ25CLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLElBQUksU0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsS0FBSztRQUNqQixPQUFPLElBQUksYUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQVk7UUFDOUIsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELDBCQUEwQjtJQUMxQjtRQUNFLE9BQU87SUFDVCxDQUFDOztBQWhDSCwwQkFpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQXBwLCBBcHBQcm9wcyB9IGZyb20gJy4vYXBwJztcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnLi9jaGFydCc7XG5cbi8qKlxuICogVGVzdGluZyB1dGlsaXRpZXMgZm9yIGNkazhzIGFwcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlc3Rpbmcge1xuICAvKipcbiAgICogUmV0dXJucyBhbiBhcHAgZm9yIHRlc3Rpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqIC0gT3V0cHV0IGRpcmVjdG9yeSBpcyBhIHRlbXAgZGlyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcHAocHJvcHM/OiBBcHBQcm9wcykge1xuICAgIGxldCBvdXRkaXI6IHN0cmluZztcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIG91dGRpciA9IHByb3BzLm91dGRpciA/PyBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGs4cy5vdXRkaXIuJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGs4cy5vdXRkaXIuJykpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFwcCh7IG91dGRpciwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYSBDaGFydCB0aGF0IGNhbiBiZSB1c2VkIGZvciB0ZXN0c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaGFydCgpIHtcbiAgICByZXR1cm4gbmV3IENoYXJ0KHRoaXMuYXBwKCksICd0ZXN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgS3ViZXJuZXRlcyBtYW5pZmVzdCBzeW50aGVzaXplZCBmcm9tIHRoaXMgY2hhcnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN5bnRoKGNoYXJ0OiBDaGFydCk6IGFueVtdIHtcbiAgICByZXR1cm4gY2hhcnQudG9Kc29uKCk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybjtcbiAgfVxufVxuIl19
|
|
150178
150178
|
|
|
150179
150179
|
/***/ }),
|
|
@@ -150282,7 +150282,7 @@ class Yaml {
|
|
|
150282
150282
|
}
|
|
150283
150283
|
exports.Yaml = Yaml;
|
|
150284
150284
|
_a = JSII_RTTI_SYMBOL_1;
|
|
150285
|
-
Yaml[_a] = { fqn: "cdk8s.Yaml", version: "2.69.
|
|
150285
|
+
Yaml[_a] = { fqn: "cdk8s.Yaml", version: "2.69.39" };
|
|
150286
150286
|
/**
|
|
150287
150287
|
* Loads a url (or file) and returns the contents.
|
|
150288
150288
|
* This method spawns a child process in order to perform an http call synchronously.
|
|
@@ -157198,6 +157198,487 @@ function createConnectionSSL (port, host, options) {
|
|
|
157198
157198
|
}
|
|
157199
157199
|
|
|
157200
157200
|
|
|
157201
|
+
/***/ }),
|
|
157202
|
+
|
|
157203
|
+
/***/ 66271:
|
|
157204
|
+
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
|
157205
|
+
|
|
157206
|
+
var CombinedStream = __nccwpck_require__(93463);
|
|
157207
|
+
var util = __nccwpck_require__(73837);
|
|
157208
|
+
var path = __nccwpck_require__(71017);
|
|
157209
|
+
var http = __nccwpck_require__(13685);
|
|
157210
|
+
var https = __nccwpck_require__(95687);
|
|
157211
|
+
var parseUrl = (__nccwpck_require__(57310).parse);
|
|
157212
|
+
var fs = __nccwpck_require__(57147);
|
|
157213
|
+
var mime = __nccwpck_require__(92027);
|
|
157214
|
+
var asynckit = __nccwpck_require__(87699);
|
|
157215
|
+
var populate = __nccwpck_require__(58607);
|
|
157216
|
+
|
|
157217
|
+
// Public API
|
|
157218
|
+
module.exports = FormData;
|
|
157219
|
+
|
|
157220
|
+
// make it a Stream
|
|
157221
|
+
util.inherits(FormData, CombinedStream);
|
|
157222
|
+
|
|
157223
|
+
/**
|
|
157224
|
+
* Create readable "multipart/form-data" streams.
|
|
157225
|
+
* Can be used to submit forms
|
|
157226
|
+
* and file uploads to other web applications.
|
|
157227
|
+
*
|
|
157228
|
+
* @constructor
|
|
157229
|
+
* @param {Object} options - Properties to be added/overriden for FormData and CombinedStream
|
|
157230
|
+
*/
|
|
157231
|
+
function FormData(options) {
|
|
157232
|
+
if (!(this instanceof FormData)) {
|
|
157233
|
+
return new FormData();
|
|
157234
|
+
}
|
|
157235
|
+
|
|
157236
|
+
this._overheadLength = 0;
|
|
157237
|
+
this._valueLength = 0;
|
|
157238
|
+
this._valuesToMeasure = [];
|
|
157239
|
+
|
|
157240
|
+
CombinedStream.call(this);
|
|
157241
|
+
|
|
157242
|
+
options = options || {};
|
|
157243
|
+
for (var option in options) {
|
|
157244
|
+
this[option] = options[option];
|
|
157245
|
+
}
|
|
157246
|
+
}
|
|
157247
|
+
|
|
157248
|
+
FormData.LINE_BREAK = '\r\n';
|
|
157249
|
+
FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
|
|
157250
|
+
|
|
157251
|
+
FormData.prototype.append = function(field, value, options) {
|
|
157252
|
+
|
|
157253
|
+
options = options || {};
|
|
157254
|
+
|
|
157255
|
+
// allow filename as single option
|
|
157256
|
+
if (typeof options == 'string') {
|
|
157257
|
+
options = {filename: options};
|
|
157258
|
+
}
|
|
157259
|
+
|
|
157260
|
+
var append = CombinedStream.prototype.append.bind(this);
|
|
157261
|
+
|
|
157262
|
+
// all that streamy business can't handle numbers
|
|
157263
|
+
if (typeof value == 'number') {
|
|
157264
|
+
value = '' + value;
|
|
157265
|
+
}
|
|
157266
|
+
|
|
157267
|
+
// https://github.com/felixge/node-form-data/issues/38
|
|
157268
|
+
if (util.isArray(value)) {
|
|
157269
|
+
// Please convert your array into string
|
|
157270
|
+
// the way web server expects it
|
|
157271
|
+
this._error(new Error('Arrays are not supported.'));
|
|
157272
|
+
return;
|
|
157273
|
+
}
|
|
157274
|
+
|
|
157275
|
+
var header = this._multiPartHeader(field, value, options);
|
|
157276
|
+
var footer = this._multiPartFooter();
|
|
157277
|
+
|
|
157278
|
+
append(header);
|
|
157279
|
+
append(value);
|
|
157280
|
+
append(footer);
|
|
157281
|
+
|
|
157282
|
+
// pass along options.knownLength
|
|
157283
|
+
this._trackLength(header, value, options);
|
|
157284
|
+
};
|
|
157285
|
+
|
|
157286
|
+
FormData.prototype._trackLength = function(header, value, options) {
|
|
157287
|
+
var valueLength = 0;
|
|
157288
|
+
|
|
157289
|
+
// used w/ getLengthSync(), when length is known.
|
|
157290
|
+
// e.g. for streaming directly from a remote server,
|
|
157291
|
+
// w/ a known file a size, and not wanting to wait for
|
|
157292
|
+
// incoming file to finish to get its size.
|
|
157293
|
+
if (options.knownLength != null) {
|
|
157294
|
+
valueLength += +options.knownLength;
|
|
157295
|
+
} else if (Buffer.isBuffer(value)) {
|
|
157296
|
+
valueLength = value.length;
|
|
157297
|
+
} else if (typeof value === 'string') {
|
|
157298
|
+
valueLength = Buffer.byteLength(value);
|
|
157299
|
+
}
|
|
157300
|
+
|
|
157301
|
+
this._valueLength += valueLength;
|
|
157302
|
+
|
|
157303
|
+
// @check why add CRLF? does this account for custom/multiple CRLFs?
|
|
157304
|
+
this._overheadLength +=
|
|
157305
|
+
Buffer.byteLength(header) +
|
|
157306
|
+
FormData.LINE_BREAK.length;
|
|
157307
|
+
|
|
157308
|
+
// empty or either doesn't have path or not an http response
|
|
157309
|
+
if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
|
|
157310
|
+
return;
|
|
157311
|
+
}
|
|
157312
|
+
|
|
157313
|
+
// no need to bother with the length
|
|
157314
|
+
if (!options.knownLength) {
|
|
157315
|
+
this._valuesToMeasure.push(value);
|
|
157316
|
+
}
|
|
157317
|
+
};
|
|
157318
|
+
|
|
157319
|
+
FormData.prototype._lengthRetriever = function(value, callback) {
|
|
157320
|
+
|
|
157321
|
+
if (value.hasOwnProperty('fd')) {
|
|
157322
|
+
|
|
157323
|
+
// take read range into a account
|
|
157324
|
+
// `end` = Infinity –> read file till the end
|
|
157325
|
+
//
|
|
157326
|
+
// TODO: Looks like there is bug in Node fs.createReadStream
|
|
157327
|
+
// it doesn't respect `end` options without `start` options
|
|
157328
|
+
// Fix it when node fixes it.
|
|
157329
|
+
// https://github.com/joyent/node/issues/7819
|
|
157330
|
+
if (value.end != undefined && value.end != Infinity && value.start != undefined) {
|
|
157331
|
+
|
|
157332
|
+
// when end specified
|
|
157333
|
+
// no need to calculate range
|
|
157334
|
+
// inclusive, starts with 0
|
|
157335
|
+
callback(null, value.end + 1 - (value.start ? value.start : 0));
|
|
157336
|
+
|
|
157337
|
+
// not that fast snoopy
|
|
157338
|
+
} else {
|
|
157339
|
+
// still need to fetch file size from fs
|
|
157340
|
+
fs.stat(value.path, function(err, stat) {
|
|
157341
|
+
|
|
157342
|
+
var fileSize;
|
|
157343
|
+
|
|
157344
|
+
if (err) {
|
|
157345
|
+
callback(err);
|
|
157346
|
+
return;
|
|
157347
|
+
}
|
|
157348
|
+
|
|
157349
|
+
// update final size based on the range options
|
|
157350
|
+
fileSize = stat.size - (value.start ? value.start : 0);
|
|
157351
|
+
callback(null, fileSize);
|
|
157352
|
+
});
|
|
157353
|
+
}
|
|
157354
|
+
|
|
157355
|
+
// or http response
|
|
157356
|
+
} else if (value.hasOwnProperty('httpVersion')) {
|
|
157357
|
+
callback(null, +value.headers['content-length']);
|
|
157358
|
+
|
|
157359
|
+
// or request stream http://github.com/mikeal/request
|
|
157360
|
+
} else if (value.hasOwnProperty('httpModule')) {
|
|
157361
|
+
// wait till response come back
|
|
157362
|
+
value.on('response', function(response) {
|
|
157363
|
+
value.pause();
|
|
157364
|
+
callback(null, +response.headers['content-length']);
|
|
157365
|
+
});
|
|
157366
|
+
value.resume();
|
|
157367
|
+
|
|
157368
|
+
// something else
|
|
157369
|
+
} else {
|
|
157370
|
+
callback('Unknown stream');
|
|
157371
|
+
}
|
|
157372
|
+
};
|
|
157373
|
+
|
|
157374
|
+
FormData.prototype._multiPartHeader = function(field, value, options) {
|
|
157375
|
+
// custom header specified (as string)?
|
|
157376
|
+
// it becomes responsible for boundary
|
|
157377
|
+
// (e.g. to handle extra CRLFs on .NET servers)
|
|
157378
|
+
if (typeof options.header == 'string') {
|
|
157379
|
+
return options.header;
|
|
157380
|
+
}
|
|
157381
|
+
|
|
157382
|
+
var contentDisposition = this._getContentDisposition(value, options);
|
|
157383
|
+
var contentType = this._getContentType(value, options);
|
|
157384
|
+
|
|
157385
|
+
var contents = '';
|
|
157386
|
+
var headers = {
|
|
157387
|
+
// add custom disposition as third element or keep it two elements if not
|
|
157388
|
+
'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
|
|
157389
|
+
// if no content type. allow it to be empty array
|
|
157390
|
+
'Content-Type': [].concat(contentType || [])
|
|
157391
|
+
};
|
|
157392
|
+
|
|
157393
|
+
// allow custom headers.
|
|
157394
|
+
if (typeof options.header == 'object') {
|
|
157395
|
+
populate(headers, options.header);
|
|
157396
|
+
}
|
|
157397
|
+
|
|
157398
|
+
var header;
|
|
157399
|
+
for (var prop in headers) {
|
|
157400
|
+
if (!headers.hasOwnProperty(prop)) continue;
|
|
157401
|
+
header = headers[prop];
|
|
157402
|
+
|
|
157403
|
+
// skip nullish headers.
|
|
157404
|
+
if (header == null) {
|
|
157405
|
+
continue;
|
|
157406
|
+
}
|
|
157407
|
+
|
|
157408
|
+
// convert all headers to arrays.
|
|
157409
|
+
if (!Array.isArray(header)) {
|
|
157410
|
+
header = [header];
|
|
157411
|
+
}
|
|
157412
|
+
|
|
157413
|
+
// add non-empty headers.
|
|
157414
|
+
if (header.length) {
|
|
157415
|
+
contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;
|
|
157416
|
+
}
|
|
157417
|
+
}
|
|
157418
|
+
|
|
157419
|
+
return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
|
|
157420
|
+
};
|
|
157421
|
+
|
|
157422
|
+
FormData.prototype._getContentDisposition = function(value, options) {
|
|
157423
|
+
|
|
157424
|
+
var filename
|
|
157425
|
+
, contentDisposition
|
|
157426
|
+
;
|
|
157427
|
+
|
|
157428
|
+
if (typeof options.filepath === 'string') {
|
|
157429
|
+
// custom filepath for relative paths
|
|
157430
|
+
filename = path.normalize(options.filepath).replace(/\\/g, '/');
|
|
157431
|
+
} else if (options.filename || value.name || value.path) {
|
|
157432
|
+
// custom filename take precedence
|
|
157433
|
+
// formidable and the browser add a name property
|
|
157434
|
+
// fs- and request- streams have path property
|
|
157435
|
+
filename = path.basename(options.filename || value.name || value.path);
|
|
157436
|
+
} else if (value.readable && value.hasOwnProperty('httpVersion')) {
|
|
157437
|
+
// or try http response
|
|
157438
|
+
filename = path.basename(value.client._httpMessage.path);
|
|
157439
|
+
}
|
|
157440
|
+
|
|
157441
|
+
if (filename) {
|
|
157442
|
+
contentDisposition = 'filename="' + filename + '"';
|
|
157443
|
+
}
|
|
157444
|
+
|
|
157445
|
+
return contentDisposition;
|
|
157446
|
+
};
|
|
157447
|
+
|
|
157448
|
+
FormData.prototype._getContentType = function(value, options) {
|
|
157449
|
+
|
|
157450
|
+
// use custom content-type above all
|
|
157451
|
+
var contentType = options.contentType;
|
|
157452
|
+
|
|
157453
|
+
// or try `name` from formidable, browser
|
|
157454
|
+
if (!contentType && value.name) {
|
|
157455
|
+
contentType = mime.lookup(value.name);
|
|
157456
|
+
}
|
|
157457
|
+
|
|
157458
|
+
// or try `path` from fs-, request- streams
|
|
157459
|
+
if (!contentType && value.path) {
|
|
157460
|
+
contentType = mime.lookup(value.path);
|
|
157461
|
+
}
|
|
157462
|
+
|
|
157463
|
+
// or if it's http-reponse
|
|
157464
|
+
if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {
|
|
157465
|
+
contentType = value.headers['content-type'];
|
|
157466
|
+
}
|
|
157467
|
+
|
|
157468
|
+
// or guess it from the filepath or filename
|
|
157469
|
+
if (!contentType && (options.filepath || options.filename)) {
|
|
157470
|
+
contentType = mime.lookup(options.filepath || options.filename);
|
|
157471
|
+
}
|
|
157472
|
+
|
|
157473
|
+
// fallback to the default content type if `value` is not simple value
|
|
157474
|
+
if (!contentType && typeof value == 'object') {
|
|
157475
|
+
contentType = FormData.DEFAULT_CONTENT_TYPE;
|
|
157476
|
+
}
|
|
157477
|
+
|
|
157478
|
+
return contentType;
|
|
157479
|
+
};
|
|
157480
|
+
|
|
157481
|
+
FormData.prototype._multiPartFooter = function() {
|
|
157482
|
+
return function(next) {
|
|
157483
|
+
var footer = FormData.LINE_BREAK;
|
|
157484
|
+
|
|
157485
|
+
var lastPart = (this._streams.length === 0);
|
|
157486
|
+
if (lastPart) {
|
|
157487
|
+
footer += this._lastBoundary();
|
|
157488
|
+
}
|
|
157489
|
+
|
|
157490
|
+
next(footer);
|
|
157491
|
+
}.bind(this);
|
|
157492
|
+
};
|
|
157493
|
+
|
|
157494
|
+
FormData.prototype._lastBoundary = function() {
|
|
157495
|
+
return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;
|
|
157496
|
+
};
|
|
157497
|
+
|
|
157498
|
+
FormData.prototype.getHeaders = function(userHeaders) {
|
|
157499
|
+
var header;
|
|
157500
|
+
var formHeaders = {
|
|
157501
|
+
'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
|
|
157502
|
+
};
|
|
157503
|
+
|
|
157504
|
+
for (header in userHeaders) {
|
|
157505
|
+
if (userHeaders.hasOwnProperty(header)) {
|
|
157506
|
+
formHeaders[header.toLowerCase()] = userHeaders[header];
|
|
157507
|
+
}
|
|
157508
|
+
}
|
|
157509
|
+
|
|
157510
|
+
return formHeaders;
|
|
157511
|
+
};
|
|
157512
|
+
|
|
157513
|
+
FormData.prototype.getBoundary = function() {
|
|
157514
|
+
if (!this._boundary) {
|
|
157515
|
+
this._generateBoundary();
|
|
157516
|
+
}
|
|
157517
|
+
|
|
157518
|
+
return this._boundary;
|
|
157519
|
+
};
|
|
157520
|
+
|
|
157521
|
+
FormData.prototype._generateBoundary = function() {
|
|
157522
|
+
// This generates a 50 character boundary similar to those used by Firefox.
|
|
157523
|
+
// They are optimized for boyer-moore parsing.
|
|
157524
|
+
var boundary = '--------------------------';
|
|
157525
|
+
for (var i = 0; i < 24; i++) {
|
|
157526
|
+
boundary += Math.floor(Math.random() * 10).toString(16);
|
|
157527
|
+
}
|
|
157528
|
+
|
|
157529
|
+
this._boundary = boundary;
|
|
157530
|
+
};
|
|
157531
|
+
|
|
157532
|
+
// Note: getLengthSync DOESN'T calculate streams length
|
|
157533
|
+
// As workaround one can calculate file size manually
|
|
157534
|
+
// and add it as knownLength option
|
|
157535
|
+
FormData.prototype.getLengthSync = function() {
|
|
157536
|
+
var knownLength = this._overheadLength + this._valueLength;
|
|
157537
|
+
|
|
157538
|
+
// Don't get confused, there are 3 "internal" streams for each keyval pair
|
|
157539
|
+
// so it basically checks if there is any value added to the form
|
|
157540
|
+
if (this._streams.length) {
|
|
157541
|
+
knownLength += this._lastBoundary().length;
|
|
157542
|
+
}
|
|
157543
|
+
|
|
157544
|
+
// https://github.com/form-data/form-data/issues/40
|
|
157545
|
+
if (!this.hasKnownLength()) {
|
|
157546
|
+
// Some async length retrievers are present
|
|
157547
|
+
// therefore synchronous length calculation is false.
|
|
157548
|
+
// Please use getLength(callback) to get proper length
|
|
157549
|
+
this._error(new Error('Cannot calculate proper length in synchronous way.'));
|
|
157550
|
+
}
|
|
157551
|
+
|
|
157552
|
+
return knownLength;
|
|
157553
|
+
};
|
|
157554
|
+
|
|
157555
|
+
// Public API to check if length of added values is known
|
|
157556
|
+
// https://github.com/form-data/form-data/issues/196
|
|
157557
|
+
// https://github.com/form-data/form-data/issues/262
|
|
157558
|
+
FormData.prototype.hasKnownLength = function() {
|
|
157559
|
+
var hasKnownLength = true;
|
|
157560
|
+
|
|
157561
|
+
if (this._valuesToMeasure.length) {
|
|
157562
|
+
hasKnownLength = false;
|
|
157563
|
+
}
|
|
157564
|
+
|
|
157565
|
+
return hasKnownLength;
|
|
157566
|
+
};
|
|
157567
|
+
|
|
157568
|
+
FormData.prototype.getLength = function(cb) {
|
|
157569
|
+
var knownLength = this._overheadLength + this._valueLength;
|
|
157570
|
+
|
|
157571
|
+
if (this._streams.length) {
|
|
157572
|
+
knownLength += this._lastBoundary().length;
|
|
157573
|
+
}
|
|
157574
|
+
|
|
157575
|
+
if (!this._valuesToMeasure.length) {
|
|
157576
|
+
process.nextTick(cb.bind(this, null, knownLength));
|
|
157577
|
+
return;
|
|
157578
|
+
}
|
|
157579
|
+
|
|
157580
|
+
asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {
|
|
157581
|
+
if (err) {
|
|
157582
|
+
cb(err);
|
|
157583
|
+
return;
|
|
157584
|
+
}
|
|
157585
|
+
|
|
157586
|
+
values.forEach(function(length) {
|
|
157587
|
+
knownLength += length;
|
|
157588
|
+
});
|
|
157589
|
+
|
|
157590
|
+
cb(null, knownLength);
|
|
157591
|
+
});
|
|
157592
|
+
};
|
|
157593
|
+
|
|
157594
|
+
FormData.prototype.submit = function(params, cb) {
|
|
157595
|
+
var request
|
|
157596
|
+
, options
|
|
157597
|
+
, defaults = {method: 'post'}
|
|
157598
|
+
;
|
|
157599
|
+
|
|
157600
|
+
// parse provided url if it's string
|
|
157601
|
+
// or treat it as options object
|
|
157602
|
+
if (typeof params == 'string') {
|
|
157603
|
+
|
|
157604
|
+
params = parseUrl(params);
|
|
157605
|
+
options = populate({
|
|
157606
|
+
port: params.port,
|
|
157607
|
+
path: params.pathname,
|
|
157608
|
+
host: params.hostname,
|
|
157609
|
+
protocol: params.protocol
|
|
157610
|
+
}, defaults);
|
|
157611
|
+
|
|
157612
|
+
// use custom params
|
|
157613
|
+
} else {
|
|
157614
|
+
|
|
157615
|
+
options = populate(params, defaults);
|
|
157616
|
+
// if no port provided use default one
|
|
157617
|
+
if (!options.port) {
|
|
157618
|
+
options.port = options.protocol == 'https:' ? 443 : 80;
|
|
157619
|
+
}
|
|
157620
|
+
}
|
|
157621
|
+
|
|
157622
|
+
// put that good code in getHeaders to some use
|
|
157623
|
+
options.headers = this.getHeaders(params.headers);
|
|
157624
|
+
|
|
157625
|
+
// https if specified, fallback to http in any other case
|
|
157626
|
+
if (options.protocol == 'https:') {
|
|
157627
|
+
request = https.request(options);
|
|
157628
|
+
} else {
|
|
157629
|
+
request = http.request(options);
|
|
157630
|
+
}
|
|
157631
|
+
|
|
157632
|
+
// get content length and fire away
|
|
157633
|
+
this.getLength(function(err, length) {
|
|
157634
|
+
if (err) {
|
|
157635
|
+
this._error(err);
|
|
157636
|
+
return;
|
|
157637
|
+
}
|
|
157638
|
+
|
|
157639
|
+
// add content length
|
|
157640
|
+
request.setHeader('Content-Length', length);
|
|
157641
|
+
|
|
157642
|
+
this.pipe(request);
|
|
157643
|
+
if (cb) {
|
|
157644
|
+
request.on('error', cb);
|
|
157645
|
+
request.on('response', cb.bind(this, null));
|
|
157646
|
+
}
|
|
157647
|
+
}.bind(this));
|
|
157648
|
+
|
|
157649
|
+
return request;
|
|
157650
|
+
};
|
|
157651
|
+
|
|
157652
|
+
FormData.prototype._error = function(err) {
|
|
157653
|
+
if (!this.error) {
|
|
157654
|
+
this.error = err;
|
|
157655
|
+
this.pause();
|
|
157656
|
+
this.emit('error', err);
|
|
157657
|
+
}
|
|
157658
|
+
};
|
|
157659
|
+
|
|
157660
|
+
FormData.prototype.toString = function () {
|
|
157661
|
+
return '[object FormData]';
|
|
157662
|
+
};
|
|
157663
|
+
|
|
157664
|
+
|
|
157665
|
+
/***/ }),
|
|
157666
|
+
|
|
157667
|
+
/***/ 58607:
|
|
157668
|
+
/***/ ((module) => {
|
|
157669
|
+
|
|
157670
|
+
// populates missing values
|
|
157671
|
+
module.exports = function(dst, src) {
|
|
157672
|
+
|
|
157673
|
+
Object.keys(src).forEach(function(prop)
|
|
157674
|
+
{
|
|
157675
|
+
dst[prop] = dst[prop] || src[prop];
|
|
157676
|
+
});
|
|
157677
|
+
|
|
157678
|
+
return dst;
|
|
157679
|
+
};
|
|
157680
|
+
|
|
157681
|
+
|
|
157201
157682
|
/***/ }),
|
|
157202
157683
|
|
|
157203
157684
|
/***/ 43597:
|
|
@@ -193359,487 +193840,6 @@ Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList
|
|
|
193359
193840
|
exports.n = Tunnel
|
|
193360
193841
|
|
|
193361
193842
|
|
|
193362
|
-
/***/ }),
|
|
193363
|
-
|
|
193364
|
-
/***/ 10569:
|
|
193365
|
-
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
|
193366
|
-
|
|
193367
|
-
var CombinedStream = __nccwpck_require__(93463);
|
|
193368
|
-
var util = __nccwpck_require__(73837);
|
|
193369
|
-
var path = __nccwpck_require__(71017);
|
|
193370
|
-
var http = __nccwpck_require__(13685);
|
|
193371
|
-
var https = __nccwpck_require__(95687);
|
|
193372
|
-
var parseUrl = (__nccwpck_require__(57310).parse);
|
|
193373
|
-
var fs = __nccwpck_require__(57147);
|
|
193374
|
-
var mime = __nccwpck_require__(92027);
|
|
193375
|
-
var asynckit = __nccwpck_require__(87699);
|
|
193376
|
-
var populate = __nccwpck_require__(16050);
|
|
193377
|
-
|
|
193378
|
-
// Public API
|
|
193379
|
-
module.exports = FormData;
|
|
193380
|
-
|
|
193381
|
-
// make it a Stream
|
|
193382
|
-
util.inherits(FormData, CombinedStream);
|
|
193383
|
-
|
|
193384
|
-
/**
|
|
193385
|
-
* Create readable "multipart/form-data" streams.
|
|
193386
|
-
* Can be used to submit forms
|
|
193387
|
-
* and file uploads to other web applications.
|
|
193388
|
-
*
|
|
193389
|
-
* @constructor
|
|
193390
|
-
* @param {Object} options - Properties to be added/overriden for FormData and CombinedStream
|
|
193391
|
-
*/
|
|
193392
|
-
function FormData(options) {
|
|
193393
|
-
if (!(this instanceof FormData)) {
|
|
193394
|
-
return new FormData();
|
|
193395
|
-
}
|
|
193396
|
-
|
|
193397
|
-
this._overheadLength = 0;
|
|
193398
|
-
this._valueLength = 0;
|
|
193399
|
-
this._valuesToMeasure = [];
|
|
193400
|
-
|
|
193401
|
-
CombinedStream.call(this);
|
|
193402
|
-
|
|
193403
|
-
options = options || {};
|
|
193404
|
-
for (var option in options) {
|
|
193405
|
-
this[option] = options[option];
|
|
193406
|
-
}
|
|
193407
|
-
}
|
|
193408
|
-
|
|
193409
|
-
FormData.LINE_BREAK = '\r\n';
|
|
193410
|
-
FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
|
|
193411
|
-
|
|
193412
|
-
FormData.prototype.append = function(field, value, options) {
|
|
193413
|
-
|
|
193414
|
-
options = options || {};
|
|
193415
|
-
|
|
193416
|
-
// allow filename as single option
|
|
193417
|
-
if (typeof options == 'string') {
|
|
193418
|
-
options = {filename: options};
|
|
193419
|
-
}
|
|
193420
|
-
|
|
193421
|
-
var append = CombinedStream.prototype.append.bind(this);
|
|
193422
|
-
|
|
193423
|
-
// all that streamy business can't handle numbers
|
|
193424
|
-
if (typeof value == 'number') {
|
|
193425
|
-
value = '' + value;
|
|
193426
|
-
}
|
|
193427
|
-
|
|
193428
|
-
// https://github.com/felixge/node-form-data/issues/38
|
|
193429
|
-
if (util.isArray(value)) {
|
|
193430
|
-
// Please convert your array into string
|
|
193431
|
-
// the way web server expects it
|
|
193432
|
-
this._error(new Error('Arrays are not supported.'));
|
|
193433
|
-
return;
|
|
193434
|
-
}
|
|
193435
|
-
|
|
193436
|
-
var header = this._multiPartHeader(field, value, options);
|
|
193437
|
-
var footer = this._multiPartFooter();
|
|
193438
|
-
|
|
193439
|
-
append(header);
|
|
193440
|
-
append(value);
|
|
193441
|
-
append(footer);
|
|
193442
|
-
|
|
193443
|
-
// pass along options.knownLength
|
|
193444
|
-
this._trackLength(header, value, options);
|
|
193445
|
-
};
|
|
193446
|
-
|
|
193447
|
-
FormData.prototype._trackLength = function(header, value, options) {
|
|
193448
|
-
var valueLength = 0;
|
|
193449
|
-
|
|
193450
|
-
// used w/ getLengthSync(), when length is known.
|
|
193451
|
-
// e.g. for streaming directly from a remote server,
|
|
193452
|
-
// w/ a known file a size, and not wanting to wait for
|
|
193453
|
-
// incoming file to finish to get its size.
|
|
193454
|
-
if (options.knownLength != null) {
|
|
193455
|
-
valueLength += +options.knownLength;
|
|
193456
|
-
} else if (Buffer.isBuffer(value)) {
|
|
193457
|
-
valueLength = value.length;
|
|
193458
|
-
} else if (typeof value === 'string') {
|
|
193459
|
-
valueLength = Buffer.byteLength(value);
|
|
193460
|
-
}
|
|
193461
|
-
|
|
193462
|
-
this._valueLength += valueLength;
|
|
193463
|
-
|
|
193464
|
-
// @check why add CRLF? does this account for custom/multiple CRLFs?
|
|
193465
|
-
this._overheadLength +=
|
|
193466
|
-
Buffer.byteLength(header) +
|
|
193467
|
-
FormData.LINE_BREAK.length;
|
|
193468
|
-
|
|
193469
|
-
// empty or either doesn't have path or not an http response
|
|
193470
|
-
if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
|
|
193471
|
-
return;
|
|
193472
|
-
}
|
|
193473
|
-
|
|
193474
|
-
// no need to bother with the length
|
|
193475
|
-
if (!options.knownLength) {
|
|
193476
|
-
this._valuesToMeasure.push(value);
|
|
193477
|
-
}
|
|
193478
|
-
};
|
|
193479
|
-
|
|
193480
|
-
FormData.prototype._lengthRetriever = function(value, callback) {
|
|
193481
|
-
|
|
193482
|
-
if (value.hasOwnProperty('fd')) {
|
|
193483
|
-
|
|
193484
|
-
// take read range into a account
|
|
193485
|
-
// `end` = Infinity –> read file till the end
|
|
193486
|
-
//
|
|
193487
|
-
// TODO: Looks like there is bug in Node fs.createReadStream
|
|
193488
|
-
// it doesn't respect `end` options without `start` options
|
|
193489
|
-
// Fix it when node fixes it.
|
|
193490
|
-
// https://github.com/joyent/node/issues/7819
|
|
193491
|
-
if (value.end != undefined && value.end != Infinity && value.start != undefined) {
|
|
193492
|
-
|
|
193493
|
-
// when end specified
|
|
193494
|
-
// no need to calculate range
|
|
193495
|
-
// inclusive, starts with 0
|
|
193496
|
-
callback(null, value.end + 1 - (value.start ? value.start : 0));
|
|
193497
|
-
|
|
193498
|
-
// not that fast snoopy
|
|
193499
|
-
} else {
|
|
193500
|
-
// still need to fetch file size from fs
|
|
193501
|
-
fs.stat(value.path, function(err, stat) {
|
|
193502
|
-
|
|
193503
|
-
var fileSize;
|
|
193504
|
-
|
|
193505
|
-
if (err) {
|
|
193506
|
-
callback(err);
|
|
193507
|
-
return;
|
|
193508
|
-
}
|
|
193509
|
-
|
|
193510
|
-
// update final size based on the range options
|
|
193511
|
-
fileSize = stat.size - (value.start ? value.start : 0);
|
|
193512
|
-
callback(null, fileSize);
|
|
193513
|
-
});
|
|
193514
|
-
}
|
|
193515
|
-
|
|
193516
|
-
// or http response
|
|
193517
|
-
} else if (value.hasOwnProperty('httpVersion')) {
|
|
193518
|
-
callback(null, +value.headers['content-length']);
|
|
193519
|
-
|
|
193520
|
-
// or request stream http://github.com/mikeal/request
|
|
193521
|
-
} else if (value.hasOwnProperty('httpModule')) {
|
|
193522
|
-
// wait till response come back
|
|
193523
|
-
value.on('response', function(response) {
|
|
193524
|
-
value.pause();
|
|
193525
|
-
callback(null, +response.headers['content-length']);
|
|
193526
|
-
});
|
|
193527
|
-
value.resume();
|
|
193528
|
-
|
|
193529
|
-
// something else
|
|
193530
|
-
} else {
|
|
193531
|
-
callback('Unknown stream');
|
|
193532
|
-
}
|
|
193533
|
-
};
|
|
193534
|
-
|
|
193535
|
-
FormData.prototype._multiPartHeader = function(field, value, options) {
|
|
193536
|
-
// custom header specified (as string)?
|
|
193537
|
-
// it becomes responsible for boundary
|
|
193538
|
-
// (e.g. to handle extra CRLFs on .NET servers)
|
|
193539
|
-
if (typeof options.header == 'string') {
|
|
193540
|
-
return options.header;
|
|
193541
|
-
}
|
|
193542
|
-
|
|
193543
|
-
var contentDisposition = this._getContentDisposition(value, options);
|
|
193544
|
-
var contentType = this._getContentType(value, options);
|
|
193545
|
-
|
|
193546
|
-
var contents = '';
|
|
193547
|
-
var headers = {
|
|
193548
|
-
// add custom disposition as third element or keep it two elements if not
|
|
193549
|
-
'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
|
|
193550
|
-
// if no content type. allow it to be empty array
|
|
193551
|
-
'Content-Type': [].concat(contentType || [])
|
|
193552
|
-
};
|
|
193553
|
-
|
|
193554
|
-
// allow custom headers.
|
|
193555
|
-
if (typeof options.header == 'object') {
|
|
193556
|
-
populate(headers, options.header);
|
|
193557
|
-
}
|
|
193558
|
-
|
|
193559
|
-
var header;
|
|
193560
|
-
for (var prop in headers) {
|
|
193561
|
-
if (!headers.hasOwnProperty(prop)) continue;
|
|
193562
|
-
header = headers[prop];
|
|
193563
|
-
|
|
193564
|
-
// skip nullish headers.
|
|
193565
|
-
if (header == null) {
|
|
193566
|
-
continue;
|
|
193567
|
-
}
|
|
193568
|
-
|
|
193569
|
-
// convert all headers to arrays.
|
|
193570
|
-
if (!Array.isArray(header)) {
|
|
193571
|
-
header = [header];
|
|
193572
|
-
}
|
|
193573
|
-
|
|
193574
|
-
// add non-empty headers.
|
|
193575
|
-
if (header.length) {
|
|
193576
|
-
contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;
|
|
193577
|
-
}
|
|
193578
|
-
}
|
|
193579
|
-
|
|
193580
|
-
return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
|
|
193581
|
-
};
|
|
193582
|
-
|
|
193583
|
-
FormData.prototype._getContentDisposition = function(value, options) {
|
|
193584
|
-
|
|
193585
|
-
var filename
|
|
193586
|
-
, contentDisposition
|
|
193587
|
-
;
|
|
193588
|
-
|
|
193589
|
-
if (typeof options.filepath === 'string') {
|
|
193590
|
-
// custom filepath for relative paths
|
|
193591
|
-
filename = path.normalize(options.filepath).replace(/\\/g, '/');
|
|
193592
|
-
} else if (options.filename || value.name || value.path) {
|
|
193593
|
-
// custom filename take precedence
|
|
193594
|
-
// formidable and the browser add a name property
|
|
193595
|
-
// fs- and request- streams have path property
|
|
193596
|
-
filename = path.basename(options.filename || value.name || value.path);
|
|
193597
|
-
} else if (value.readable && value.hasOwnProperty('httpVersion')) {
|
|
193598
|
-
// or try http response
|
|
193599
|
-
filename = path.basename(value.client._httpMessage.path);
|
|
193600
|
-
}
|
|
193601
|
-
|
|
193602
|
-
if (filename) {
|
|
193603
|
-
contentDisposition = 'filename="' + filename + '"';
|
|
193604
|
-
}
|
|
193605
|
-
|
|
193606
|
-
return contentDisposition;
|
|
193607
|
-
};
|
|
193608
|
-
|
|
193609
|
-
FormData.prototype._getContentType = function(value, options) {
|
|
193610
|
-
|
|
193611
|
-
// use custom content-type above all
|
|
193612
|
-
var contentType = options.contentType;
|
|
193613
|
-
|
|
193614
|
-
// or try `name` from formidable, browser
|
|
193615
|
-
if (!contentType && value.name) {
|
|
193616
|
-
contentType = mime.lookup(value.name);
|
|
193617
|
-
}
|
|
193618
|
-
|
|
193619
|
-
// or try `path` from fs-, request- streams
|
|
193620
|
-
if (!contentType && value.path) {
|
|
193621
|
-
contentType = mime.lookup(value.path);
|
|
193622
|
-
}
|
|
193623
|
-
|
|
193624
|
-
// or if it's http-reponse
|
|
193625
|
-
if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {
|
|
193626
|
-
contentType = value.headers['content-type'];
|
|
193627
|
-
}
|
|
193628
|
-
|
|
193629
|
-
// or guess it from the filepath or filename
|
|
193630
|
-
if (!contentType && (options.filepath || options.filename)) {
|
|
193631
|
-
contentType = mime.lookup(options.filepath || options.filename);
|
|
193632
|
-
}
|
|
193633
|
-
|
|
193634
|
-
// fallback to the default content type if `value` is not simple value
|
|
193635
|
-
if (!contentType && typeof value == 'object') {
|
|
193636
|
-
contentType = FormData.DEFAULT_CONTENT_TYPE;
|
|
193637
|
-
}
|
|
193638
|
-
|
|
193639
|
-
return contentType;
|
|
193640
|
-
};
|
|
193641
|
-
|
|
193642
|
-
FormData.prototype._multiPartFooter = function() {
|
|
193643
|
-
return function(next) {
|
|
193644
|
-
var footer = FormData.LINE_BREAK;
|
|
193645
|
-
|
|
193646
|
-
var lastPart = (this._streams.length === 0);
|
|
193647
|
-
if (lastPart) {
|
|
193648
|
-
footer += this._lastBoundary();
|
|
193649
|
-
}
|
|
193650
|
-
|
|
193651
|
-
next(footer);
|
|
193652
|
-
}.bind(this);
|
|
193653
|
-
};
|
|
193654
|
-
|
|
193655
|
-
FormData.prototype._lastBoundary = function() {
|
|
193656
|
-
return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;
|
|
193657
|
-
};
|
|
193658
|
-
|
|
193659
|
-
FormData.prototype.getHeaders = function(userHeaders) {
|
|
193660
|
-
var header;
|
|
193661
|
-
var formHeaders = {
|
|
193662
|
-
'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
|
|
193663
|
-
};
|
|
193664
|
-
|
|
193665
|
-
for (header in userHeaders) {
|
|
193666
|
-
if (userHeaders.hasOwnProperty(header)) {
|
|
193667
|
-
formHeaders[header.toLowerCase()] = userHeaders[header];
|
|
193668
|
-
}
|
|
193669
|
-
}
|
|
193670
|
-
|
|
193671
|
-
return formHeaders;
|
|
193672
|
-
};
|
|
193673
|
-
|
|
193674
|
-
FormData.prototype.getBoundary = function() {
|
|
193675
|
-
if (!this._boundary) {
|
|
193676
|
-
this._generateBoundary();
|
|
193677
|
-
}
|
|
193678
|
-
|
|
193679
|
-
return this._boundary;
|
|
193680
|
-
};
|
|
193681
|
-
|
|
193682
|
-
FormData.prototype._generateBoundary = function() {
|
|
193683
|
-
// This generates a 50 character boundary similar to those used by Firefox.
|
|
193684
|
-
// They are optimized for boyer-moore parsing.
|
|
193685
|
-
var boundary = '--------------------------';
|
|
193686
|
-
for (var i = 0; i < 24; i++) {
|
|
193687
|
-
boundary += Math.floor(Math.random() * 10).toString(16);
|
|
193688
|
-
}
|
|
193689
|
-
|
|
193690
|
-
this._boundary = boundary;
|
|
193691
|
-
};
|
|
193692
|
-
|
|
193693
|
-
// Note: getLengthSync DOESN'T calculate streams length
|
|
193694
|
-
// As workaround one can calculate file size manually
|
|
193695
|
-
// and add it as knownLength option
|
|
193696
|
-
FormData.prototype.getLengthSync = function() {
|
|
193697
|
-
var knownLength = this._overheadLength + this._valueLength;
|
|
193698
|
-
|
|
193699
|
-
// Don't get confused, there are 3 "internal" streams for each keyval pair
|
|
193700
|
-
// so it basically checks if there is any value added to the form
|
|
193701
|
-
if (this._streams.length) {
|
|
193702
|
-
knownLength += this._lastBoundary().length;
|
|
193703
|
-
}
|
|
193704
|
-
|
|
193705
|
-
// https://github.com/form-data/form-data/issues/40
|
|
193706
|
-
if (!this.hasKnownLength()) {
|
|
193707
|
-
// Some async length retrievers are present
|
|
193708
|
-
// therefore synchronous length calculation is false.
|
|
193709
|
-
// Please use getLength(callback) to get proper length
|
|
193710
|
-
this._error(new Error('Cannot calculate proper length in synchronous way.'));
|
|
193711
|
-
}
|
|
193712
|
-
|
|
193713
|
-
return knownLength;
|
|
193714
|
-
};
|
|
193715
|
-
|
|
193716
|
-
// Public API to check if length of added values is known
|
|
193717
|
-
// https://github.com/form-data/form-data/issues/196
|
|
193718
|
-
// https://github.com/form-data/form-data/issues/262
|
|
193719
|
-
FormData.prototype.hasKnownLength = function() {
|
|
193720
|
-
var hasKnownLength = true;
|
|
193721
|
-
|
|
193722
|
-
if (this._valuesToMeasure.length) {
|
|
193723
|
-
hasKnownLength = false;
|
|
193724
|
-
}
|
|
193725
|
-
|
|
193726
|
-
return hasKnownLength;
|
|
193727
|
-
};
|
|
193728
|
-
|
|
193729
|
-
FormData.prototype.getLength = function(cb) {
|
|
193730
|
-
var knownLength = this._overheadLength + this._valueLength;
|
|
193731
|
-
|
|
193732
|
-
if (this._streams.length) {
|
|
193733
|
-
knownLength += this._lastBoundary().length;
|
|
193734
|
-
}
|
|
193735
|
-
|
|
193736
|
-
if (!this._valuesToMeasure.length) {
|
|
193737
|
-
process.nextTick(cb.bind(this, null, knownLength));
|
|
193738
|
-
return;
|
|
193739
|
-
}
|
|
193740
|
-
|
|
193741
|
-
asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {
|
|
193742
|
-
if (err) {
|
|
193743
|
-
cb(err);
|
|
193744
|
-
return;
|
|
193745
|
-
}
|
|
193746
|
-
|
|
193747
|
-
values.forEach(function(length) {
|
|
193748
|
-
knownLength += length;
|
|
193749
|
-
});
|
|
193750
|
-
|
|
193751
|
-
cb(null, knownLength);
|
|
193752
|
-
});
|
|
193753
|
-
};
|
|
193754
|
-
|
|
193755
|
-
FormData.prototype.submit = function(params, cb) {
|
|
193756
|
-
var request
|
|
193757
|
-
, options
|
|
193758
|
-
, defaults = {method: 'post'}
|
|
193759
|
-
;
|
|
193760
|
-
|
|
193761
|
-
// parse provided url if it's string
|
|
193762
|
-
// or treat it as options object
|
|
193763
|
-
if (typeof params == 'string') {
|
|
193764
|
-
|
|
193765
|
-
params = parseUrl(params);
|
|
193766
|
-
options = populate({
|
|
193767
|
-
port: params.port,
|
|
193768
|
-
path: params.pathname,
|
|
193769
|
-
host: params.hostname,
|
|
193770
|
-
protocol: params.protocol
|
|
193771
|
-
}, defaults);
|
|
193772
|
-
|
|
193773
|
-
// use custom params
|
|
193774
|
-
} else {
|
|
193775
|
-
|
|
193776
|
-
options = populate(params, defaults);
|
|
193777
|
-
// if no port provided use default one
|
|
193778
|
-
if (!options.port) {
|
|
193779
|
-
options.port = options.protocol == 'https:' ? 443 : 80;
|
|
193780
|
-
}
|
|
193781
|
-
}
|
|
193782
|
-
|
|
193783
|
-
// put that good code in getHeaders to some use
|
|
193784
|
-
options.headers = this.getHeaders(params.headers);
|
|
193785
|
-
|
|
193786
|
-
// https if specified, fallback to http in any other case
|
|
193787
|
-
if (options.protocol == 'https:') {
|
|
193788
|
-
request = https.request(options);
|
|
193789
|
-
} else {
|
|
193790
|
-
request = http.request(options);
|
|
193791
|
-
}
|
|
193792
|
-
|
|
193793
|
-
// get content length and fire away
|
|
193794
|
-
this.getLength(function(err, length) {
|
|
193795
|
-
if (err) {
|
|
193796
|
-
this._error(err);
|
|
193797
|
-
return;
|
|
193798
|
-
}
|
|
193799
|
-
|
|
193800
|
-
// add content length
|
|
193801
|
-
request.setHeader('Content-Length', length);
|
|
193802
|
-
|
|
193803
|
-
this.pipe(request);
|
|
193804
|
-
if (cb) {
|
|
193805
|
-
request.on('error', cb);
|
|
193806
|
-
request.on('response', cb.bind(this, null));
|
|
193807
|
-
}
|
|
193808
|
-
}.bind(this));
|
|
193809
|
-
|
|
193810
|
-
return request;
|
|
193811
|
-
};
|
|
193812
|
-
|
|
193813
|
-
FormData.prototype._error = function(err) {
|
|
193814
|
-
if (!this.error) {
|
|
193815
|
-
this.error = err;
|
|
193816
|
-
this.pause();
|
|
193817
|
-
this.emit('error', err);
|
|
193818
|
-
}
|
|
193819
|
-
};
|
|
193820
|
-
|
|
193821
|
-
FormData.prototype.toString = function () {
|
|
193822
|
-
return '[object FormData]';
|
|
193823
|
-
};
|
|
193824
|
-
|
|
193825
|
-
|
|
193826
|
-
/***/ }),
|
|
193827
|
-
|
|
193828
|
-
/***/ 16050:
|
|
193829
|
-
/***/ ((module) => {
|
|
193830
|
-
|
|
193831
|
-
// populates missing values
|
|
193832
|
-
module.exports = function(dst, src) {
|
|
193833
|
-
|
|
193834
|
-
Object.keys(src).forEach(function(prop)
|
|
193835
|
-
{
|
|
193836
|
-
dst[prop] = dst[prop] || src[prop];
|
|
193837
|
-
});
|
|
193838
|
-
|
|
193839
|
-
return dst;
|
|
193840
|
-
};
|
|
193841
|
-
|
|
193842
|
-
|
|
193843
193843
|
/***/ }),
|
|
193844
193844
|
|
|
193845
193845
|
/***/ 5529:
|
|
@@ -194620,7 +194620,7 @@ var httpSignature = __nccwpck_require__(32292)
|
|
|
194620
194620
|
var mime = __nccwpck_require__(92027)
|
|
194621
194621
|
var caseless = __nccwpck_require__(58320)
|
|
194622
194622
|
var ForeverAgent = __nccwpck_require__(29385)
|
|
194623
|
-
var FormData = __nccwpck_require__(
|
|
194623
|
+
var FormData = __nccwpck_require__(66271)
|
|
194624
194624
|
var extend = __nccwpck_require__(36005)
|
|
194625
194625
|
var isstream = __nccwpck_require__(55731)
|
|
194626
194626
|
var isTypedArray = (__nccwpck_require__(92025).strict)
|
|
@@ -197034,7 +197034,7 @@ const testSet = (set, version, options) => {
|
|
|
197034
197034
|
|
|
197035
197035
|
const debug = __nccwpck_require__(53619)
|
|
197036
197036
|
const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(9073)
|
|
197037
|
-
const { safeRe: re, t } = __nccwpck_require__(84063)
|
|
197037
|
+
const { safeRe: re, safeSrc: src, t } = __nccwpck_require__(84063)
|
|
197038
197038
|
|
|
197039
197039
|
const parseOptions = __nccwpck_require__(36772)
|
|
197040
197040
|
const { compareIdentifiers } = __nccwpck_require__(48587)
|
|
@@ -197044,7 +197044,7 @@ class SemVer {
|
|
|
197044
197044
|
|
|
197045
197045
|
if (version instanceof SemVer) {
|
|
197046
197046
|
if (version.loose === !!options.loose &&
|
|
197047
|
-
|
|
197047
|
+
version.includePrerelease === !!options.includePrerelease) {
|
|
197048
197048
|
return version
|
|
197049
197049
|
} else {
|
|
197050
197050
|
version = version.version
|
|
@@ -197210,6 +197210,20 @@ class SemVer {
|
|
|
197210
197210
|
// preminor will bump the version up to the next minor release, and immediately
|
|
197211
197211
|
// down to pre-release. premajor and prepatch work the same way.
|
|
197212
197212
|
inc (release, identifier, identifierBase) {
|
|
197213
|
+
if (release.startsWith('pre')) {
|
|
197214
|
+
if (!identifier && identifierBase === false) {
|
|
197215
|
+
throw new Error('invalid increment argument: identifier is empty')
|
|
197216
|
+
}
|
|
197217
|
+
// Avoid an invalid semver results
|
|
197218
|
+
if (identifier) {
|
|
197219
|
+
const r = new RegExp(`^${this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE]}$`)
|
|
197220
|
+
const match = `-${identifier}`.match(r)
|
|
197221
|
+
if (!match || match[1] !== identifier) {
|
|
197222
|
+
throw new Error(`invalid identifier: ${identifier}`)
|
|
197223
|
+
}
|
|
197224
|
+
}
|
|
197225
|
+
}
|
|
197226
|
+
|
|
197213
197227
|
switch (release) {
|
|
197214
197228
|
case 'premajor':
|
|
197215
197229
|
this.prerelease.length = 0
|
|
@@ -197240,6 +197254,12 @@ class SemVer {
|
|
|
197240
197254
|
}
|
|
197241
197255
|
this.inc('pre', identifier, identifierBase)
|
|
197242
197256
|
break
|
|
197257
|
+
case 'release':
|
|
197258
|
+
if (this.prerelease.length === 0) {
|
|
197259
|
+
throw new Error(`version ${this.raw} is not a prerelease`)
|
|
197260
|
+
}
|
|
197261
|
+
this.prerelease.length = 0
|
|
197262
|
+
break
|
|
197243
197263
|
|
|
197244
197264
|
case 'major':
|
|
197245
197265
|
// If this is a pre-major version, bump up to the same major version.
|
|
@@ -197283,10 +197303,6 @@ class SemVer {
|
|
|
197283
197303
|
case 'pre': {
|
|
197284
197304
|
const base = Number(identifierBase) ? 1 : 0
|
|
197285
197305
|
|
|
197286
|
-
if (!identifier && identifierBase === false) {
|
|
197287
|
-
throw new Error('invalid increment argument: identifier is empty')
|
|
197288
|
-
}
|
|
197289
|
-
|
|
197290
197306
|
if (this.prerelease.length === 0) {
|
|
197291
197307
|
this.prerelease = [base]
|
|
197292
197308
|
} else {
|
|
@@ -197545,20 +197561,13 @@ const diff = (version1, version2) => {
|
|
|
197545
197561
|
return 'major'
|
|
197546
197562
|
}
|
|
197547
197563
|
|
|
197548
|
-
//
|
|
197549
|
-
|
|
197550
|
-
|
|
197551
|
-
|
|
197564
|
+
// If the main part has no difference
|
|
197565
|
+
if (lowVersion.compareMain(highVersion) === 0) {
|
|
197566
|
+
if (lowVersion.minor && !lowVersion.patch) {
|
|
197567
|
+
return 'minor'
|
|
197568
|
+
}
|
|
197552
197569
|
return 'patch'
|
|
197553
197570
|
}
|
|
197554
|
-
|
|
197555
|
-
if (highVersion.minor) {
|
|
197556
|
-
// anything higher than a minor bump would result in the wrong version
|
|
197557
|
-
return 'minor'
|
|
197558
|
-
}
|
|
197559
|
-
|
|
197560
|
-
// bumping major/minor/patch all have same result
|
|
197561
|
-
return 'major'
|
|
197562
197571
|
}
|
|
197563
197572
|
|
|
197564
197573
|
// add the `pre` prefix if we are going to a prerelease version
|
|
@@ -198065,6 +198074,7 @@ exports = module.exports = {}
|
|
|
198065
198074
|
const re = exports.re = []
|
|
198066
198075
|
const safeRe = exports.safeRe = []
|
|
198067
198076
|
const src = exports.src = []
|
|
198077
|
+
const safeSrc = exports.safeSrc = []
|
|
198068
198078
|
const t = exports.t = {}
|
|
198069
198079
|
let R = 0
|
|
198070
198080
|
|
|
@@ -198097,6 +198107,7 @@ const createToken = (name, value, isGlobal) => {
|
|
|
198097
198107
|
debug(name, index, value)
|
|
198098
198108
|
t[name] = index
|
|
198099
198109
|
src[index] = value
|
|
198110
|
+
safeSrc[index] = safe
|
|
198100
198111
|
re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
|
|
198101
198112
|
safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
|
|
198102
198113
|
}
|
|
@@ -227304,8 +227315,7 @@ exports.ComponentPaths = [
|
|
|
227304
227315
|
'spec/platformOwner',
|
|
227305
227316
|
'spec/provisioner',
|
|
227306
227317
|
'spec/provisioner/org',
|
|
227307
|
-
'spec/provisioner/
|
|
227308
|
-
'spec/provisioner/orgContributions',
|
|
227318
|
+
'spec/provisioner/orgPermissions',
|
|
227309
227319
|
'spec/provisioner/technology',
|
|
227310
227320
|
'spec/provisioner/technology/stack',
|
|
227311
227321
|
'spec/provisioner/technology/version',
|
|
@@ -227925,11 +227935,13 @@ const FirestartrFinalizer = 'firestartr.dev/finalizer';
|
|
|
227925
227935
|
const FirestartrLabelOldName = 'firestartr.dev/old-name';
|
|
227926
227936
|
const FirestartrApiGroup = 'firestartr.dev';
|
|
227927
227937
|
const KubernetesApiGroup = 'core';
|
|
227938
|
+
const ExternalSecretsApiGroup = 'external-secrets.io';
|
|
227928
227939
|
exports["default"] = {
|
|
227929
227940
|
FirestartrFinalizer,
|
|
227930
227941
|
FirestartrLabelOldName,
|
|
227931
227942
|
FirestartrApiGroup,
|
|
227932
227943
|
KubernetesApiGroup,
|
|
227944
|
+
ExternalSecretsApiGroup,
|
|
227933
227945
|
};
|
|
227934
227946
|
|
|
227935
227947
|
|
|
@@ -228111,9 +228123,11 @@ exports["default"] = {
|
|
|
228111
228123
|
"use strict";
|
|
228112
228124
|
|
|
228113
228125
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
228114
|
-
exports.TFWorkspaceRefCR = exports.GroupRefRegex = exports.TFWorkspaceRefRegex = void 0;
|
|
228126
|
+
exports.TFWorkspaceRefCR = exports.GroupRefRegex = exports.SecretRefRegex = exports.TFWorkspaceRefRegex = void 0;
|
|
228115
228127
|
const regModuleName = /[\w\-.]+/;
|
|
228116
228128
|
exports.TFWorkspaceRefRegex = new RegExp(`\\$\\{\\{\\s*tfworkspace\\:(${regModuleName.source})\\:outputs\\.(${regModuleName.source})\\s*\\}\\}`, 'ig');
|
|
228129
|
+
// example of secret ref: ${{secret:my-secret.password}}
|
|
228130
|
+
exports.SecretRefRegex = new RegExp(`\\$\\{\\{\\s*secret\\:(${regModuleName.source})\\.(${regModuleName.source})\\s*\\}\\}`, 'ig');
|
|
228117
228131
|
exports.GroupRefRegex = new RegExp(`group\\:(${regModuleName.source})`, 'ig');
|
|
228118
228132
|
exports.TFWorkspaceRefCR = new RegExp(`\\$\\{\\{\\s*references\\.(${regModuleName.source})\\s*\\}\\}`, 'i');
|
|
228119
228133
|
|
|
@@ -229666,6 +229680,8 @@ var FirestartrTerraformWorkspaceSpecReferencesRefKind;
|
|
|
229666
229680
|
(function (FirestartrTerraformWorkspaceSpecReferencesRefKind) {
|
|
229667
229681
|
/** FirestartrTerraformWorkspace */
|
|
229668
229682
|
FirestartrTerraformWorkspaceSpecReferencesRefKind["FIRESTARTR_TERRAFORM_WORKSPACE"] = "FirestartrTerraformWorkspace";
|
|
229683
|
+
/** ExternalSecret */
|
|
229684
|
+
FirestartrTerraformWorkspaceSpecReferencesRefKind["EXTERNAL_SECRET"] = "ExternalSecret";
|
|
229669
229685
|
})(FirestartrTerraformWorkspaceSpecReferencesRefKind = exports.FirestartrTerraformWorkspaceSpecReferencesRefKind || (exports.FirestartrTerraformWorkspaceSpecReferencesRefKind = {}));
|
|
229670
229686
|
/**
|
|
229671
229687
|
* @schema FirestartrTerraformWorkspaceSpecContextBackendRefKind
|
|
@@ -230065,7 +230081,7 @@ function toJson_TfResultSpecReference(obj) {
|
|
|
230065
230081
|
}
|
|
230066
230082
|
exports.toJson_TfResultSpecReference = toJson_TfResultSpecReference;
|
|
230067
230083
|
/* eslint-enable max-len, quote-props */
|
|
230068
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0YXJ0ci5kZXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbXBvcnRzL2ZpcmVzdGFydHIuZGV2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUJBQXFCO0FBQ3JCLGlDQUF1RTtBQUl2RTs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxpQkFBUztJQVNsRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQW9DLEVBQUU7UUFDM0QsdUNBQ0sscUJBQXFCLENBQUMsR0FBRyxHQUN6QixpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsRUFDM0M7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQyxFQUFFO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxrQ0FDVixxQkFBcUIsQ0FBQyxHQUFHLEdBQ3pCLEtBQUssRUFDUixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyx1Q0FDSyxxQkFBcUIsQ0FBQyxHQUFHLEdBQ3pCLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QztJQUNKLENBQUM7O0FBN0NEOztHQUVHO0FBQ29CLHlCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsSUFBSSxFQUFFLHVCQUF1QjtDQUM5QixDQUFBO0FBUFUsc0RBQXFCO0FBbUVsQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixpQ0FBaUMsQ0FBQyxHQUEyQztJQUMzRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3hCLE1BQU0sRUFBRSxnQ0FBZ0MsQ0FBQyxHQUFHLENB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LENBQUMsR0FBc0M7SUFDakYsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTztRQUN0QixTQUFTLEVBQUUsR0FBRyxDQUFDLE9BQU87S0FDdkIsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU0sQ0FBQyxLQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELG9FQVFDO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBHaXRIdWIgZ3JvdXBzXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJHaXRodWJHcm91cCBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJHaXRodWJHcm91cFwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyR2l0aHViR3JvdXAnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJHaXRodWJHcm91cFwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZpcmVzdGFydHJHaXRodWJHcm91cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJHcm91cC5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIEdpdEh1YiBncm91cHNcbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cCNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI29yZ1xuICAgKi9cbiAgcmVhZG9ubHkgb3JnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNwcml2YWN5XG4gICAqL1xuICByZWFkb25seSBwcml2YWN5OiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUHJpdmFjeTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI2Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI3BhcmVudFRlYW1cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudFRlYW0/OiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI21lbWJlcnNcbiAgICovXG4gIHJlYWRvbmx5IG1lbWJlcnM6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMjd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyhvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcmcnOiBvYmoub3JnLFxuICAgICdwcml2YWN5Jzogb2JqLnByaXZhY3ksXG4gICAgJ2Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICAgICdwYXJlbnRUZWFtJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtKG9iai5wYXJlbnRUZWFtKSxcbiAgICAnbWVtYmVycyc6IG9iai5tZW1iZXJzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMoeSkpLFxuICAgICdjb250ZXh0JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmoud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1ByaXZhY3lcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1ByaXZhY3kge1xuICAvKiogY2xvc2VkICovXG4gIENMT1NFRCA9IFwiY2xvc2VkXCIsXG4gIC8qKiBzZWNyZXQgKi9cbiAgU0VDUkVUID0gXCJzZWNyZXRcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW0ge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbSNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW0nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW0gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycyhvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dCNwcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0KG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXIob2JqLnByb3ZpZGVyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5Pzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI291dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM/OiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ291dHB1dHMnOiBvYmoub3V0cHV0cz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYjbmVlZHNTZWNyZXRcbiAgICovXG4gIHJlYWRvbmx5IG5lZWRzU2VjcmV0OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ25lZWRzU2VjcmV0Jzogb2JqLm5lZWRzU2VjcmV0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYjbmVlZHNTZWNyZXRcbiAgICovXG4gIHJlYWRvbmx5IG5lZWRzU2VjcmV0OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ25lZWRzU2VjcmV0Jzogb2JqLm5lZWRzU2VjcmV0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXIob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIEdpdEh1YiBtZW1iZXJzaGlwcyB0byBhIEdpdEh1YiBvcmdhbml6YXRpb24uXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFxuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcCcsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcC5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBHaXRIdWIgbWVtYmVyc2hpcHMgdG8gYSBHaXRIdWIgb3JnYW5pemF0aW9uLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAjbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcCNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyhvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjI29yZ1xuICAgKi9cbiAgcmVhZG9ubHkgb3JnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjI3JvbGVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1JvbGU7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjI2NvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZj86IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnb3JnJzogb2JqLm9yZyxcbiAgICAncm9sZSc6IG9iai5yb2xlLFxuICAgICdjb250ZXh0JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQob2JqLmNvbnRleHQpLFxuICAgICdmaXJlc3RhcnRyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICd3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmoud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjUm9sZVxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNSb2xlIHtcbiAgLyoqIG1lbWJlciAqL1xuICBNRU1CRVIgPSBcIm1lbWJlclwiLFxuICAvKiogYWRtaW4gKi9cbiAgQURNSU4gPSBcImFkbWluXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQjYmFja2VuZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZDogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dCNwcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlcjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0KG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JhY2tlbmQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXIob2JqLnByb3ZpZGVyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI291dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdvdXRwdXRzJzogb2JqLm91dHB1dHM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlciNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlcicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIHRoZSBHaXRIdWIgcmVwb3Mgb2YgYW4gb3JnYW5pemF0aW9uLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5IGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnknLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5LkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5LkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeS5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIHRoZSBHaXRIdWIgcmVwb3Mgb2YgYW4gb3JnYW5pemF0aW9uLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkjbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjb3JnXG4gICAqL1xuICByZWFkb25seSBvcmc6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjZmlyZXN0YXJ0clxuICAgKi9cbiAgcmVhZG9ubHkgZmlyZXN0YXJ0cjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjcmVwb1xuICAgKi9cbiAgcmVhZG9ubHkgcmVwbzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjYWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjcGFnZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VzPzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXM7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI3Blcm1pc3Npb25zXG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9uczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjYnJhbmNoUHJvdGVjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaFByb3RlY3Rpb25zOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9uc1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyN3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnb3JnJzogb2JqLm9yZyxcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyKG9iai5maXJlc3RhcnRyKSxcbiAgICAncmVwbyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvKG9iai5yZXBvKSxcbiAgICAnYWN0aW9ucyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zKG9iai5hY3Rpb25zKSxcbiAgICAncGFnZXMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMob2JqLnBhZ2VzKSxcbiAgICAncGVybWlzc2lvbnMnOiBvYmoucGVybWlzc2lvbnM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyh5KSksXG4gICAgJ2JyYW5jaFByb3RlY3Rpb25zJzogb2JqLmJyYW5jaFByb3RlY3Rpb25zPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMoeSkpLFxuICAgICd3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmoud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQjcHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kKG9iai5iYWNrZW5kKSxcbiAgICAncHJvdmlkZXInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyKG9iai5wcm92aWRlciksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIjdGVjaG5vbG9neVxuICAgKi9cbiAgcmVhZG9ubHkgdGVjaG5vbG9neTogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3k7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gICAgJ3RlY2hub2xvZ3knOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kob2JqLnRlY2hub2xvZ3kpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8ge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2FsbG93TWVyZ2VDb21taXRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93TWVyZ2VDb21taXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYWxsb3dTcXVhc2hNZXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dTcXVhc2hNZXJnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd1JlYmFzZU1lcmdlXG4gICAqL1xuICByZWFkb25seSBhbGxvd1JlYmFzZU1lcmdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2FsbG93QXV0b01lcmdlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0F1dG9NZXJnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNkZWxldGVCcmFuY2hPbk1lcmdlXG4gICAqL1xuICByZWFkb25seSBkZWxldGVCcmFuY2hPbk1lcmdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2F1dG9Jbml0XG4gICAqL1xuICByZWFkb25seSBhdXRvSW5pdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhcmNoaXZlT25EZXN0cm95XG4gICAqL1xuICByZWFkb25seSBhcmNoaXZlT25EZXN0cm95PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2FsbG93VXBkYXRlQnJhbmNoXG4gICAqL1xuICByZWFkb25seSBhbGxvd1VwZGF0ZUJyYW5jaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNoYXNJc3N1ZXNcbiAgICovXG4gIHJlYWRvbmx5IGhhc0lzc3Vlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNoYXNXaWtpXG4gICAqL1xuICByZWFkb25seSBoYXNXaWtpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI3BhZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWdlcz86IGFueTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI3Zpc2liaWxpdHlcbiAgICovXG4gIHJlYWRvbmx5IHZpc2liaWxpdHk6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG9WaXNpYmlsaXR5O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jZGVmYXVsdEJyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJyYW5jaDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jY29kZW93bmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgY29kZW93bmVycz86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICAgICdhbGxvd01lcmdlQ29tbWl0Jzogb2JqLmFsbG93TWVyZ2VDb21taXQsXG4gICAgJ2FsbG93U3F1YXNoTWVyZ2UnOiBvYmouYWxsb3dTcXVhc2hNZXJnZSxcbiAgICAnYWxsb3dSZWJhc2VNZXJnZSc6IG9iai5hbGxvd1JlYmFzZU1lcmdlLFxuICAgICdhbGxvd0F1dG9NZXJnZSc6IG9iai5hbGxvd0F1dG9NZXJnZSxcbiAgICAnZGVsZXRlQnJhbmNoT25NZXJnZSc6IG9iai5kZWxldGVCcmFuY2hPbk1lcmdlLFxuICAgICdhdXRvSW5pdCc6IG9iai5hdXRvSW5pdCxcbiAgICAnYXJjaGl2ZU9uRGVzdHJveSc6IG9iai5hcmNoaXZlT25EZXN0cm95LFxuICAgICdhbGxvd1VwZGF0ZUJyYW5jaCc6IG9iai5hbGxvd1VwZGF0ZUJyYW5jaCxcbiAgICAnaGFzSXNzdWVzJzogb2JqLmhhc0lzc3VlcyxcbiAgICAnaGFzV2lraSc6IG9iai5oYXNXaWtpLFxuICAgICdwYWdlcyc6IG9iai5wYWdlcyxcbiAgICAndmlzaWJpbGl0eSc6IG9iai52aXNpYmlsaXR5LFxuICAgICdkZWZhdWx0QnJhbmNoJzogb2JqLmRlZmF1bHRCcmFuY2gsXG4gICAgJ2NvZGVvd25lcnMnOiBvYmouY29kZW93bmVycyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyNvaWRjXG4gICAqL1xuICByZWFkb25seSBvaWRjOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29pZGMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMob2JqLm9pZGMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzI2NuYW1lXG4gICAqL1xuICByZWFkb25seSBjbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnY25hbWUnOiBvYmouY25hbWUsXG4gICAgJ3NvdXJjZSc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZShvYmouc291cmNlKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyNyb2xlXG4gICAqL1xuICByZWFkb25seSByb2xlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zI2NvbGxhYm9yYXRvclxuICAgKi9cbiAgcmVhZG9ubHkgY29sbGFib3JhdG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmPzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyb2xlJzogb2JqLnJvbGUsXG4gICAgJ2NvbGxhYm9yYXRvcic6IG9iai5jb2xsYWJvcmF0b3IsXG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNicmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI3N0YXR1c0NoZWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzQ2hlY2tzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjcmVxdWlyZWRSZXZpZXdlcnNDb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRSZXZpZXdlcnNDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNyZXF1aXJlZENvZGVvd25lcnNSZXZpZXdlcnNcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkQ29kZW93bmVyc1Jldmlld2Vycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjZW5mb3JjZUFkbWluc1xuICAgKi9cbiAgcmVhZG9ubHkgZW5mb3JjZUFkbWlucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjcmVxdWlyZVNpZ25lZENvbW1pdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVTaWduZWRDb21taXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNyZXF1aXJlQ29udmVyc2F0aW9uUmVzb2x1dGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZUNvbnZlcnNhdGlvblJlc29sdXRpb24/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYnJhbmNoJzogb2JqLmJyYW5jaCxcbiAgICAnc3RhdHVzQ2hlY2tzJzogb2JqLnN0YXR1c0NoZWNrcz8ubWFwKHkgPT4geSksXG4gICAgJ3JlcXVpcmVkUmV2aWV3ZXJzQ291bnQnOiBvYmoucmVxdWlyZWRSZXZpZXdlcnNDb3VudCxcbiAgICAncmVxdWlyZWRDb2Rlb3duZXJzUmV2aWV3ZXJzJzogb2JqLnJlcXVpcmVkQ29kZW93bmVyc1Jldmlld2VycyxcbiAgICAnZW5mb3JjZUFkbWlucyc6IG9iai5lbmZvcmNlQWRtaW5zLFxuICAgICdyZXF1aXJlU2lnbmVkQ29tbWl0cyc6IG9iai5yZXF1aXJlU2lnbmVkQ29tbWl0cyxcbiAgICAncmVxdWlyZUNvbnZlcnNhdGlvblJlc29sdXRpb24nOiBvYmoucmVxdWlyZUNvbnZlcnNhdGlvblJlc29sdXRpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI291dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdvdXRwdXRzJzogb2JqLm91dHB1dHM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlciNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlcicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neSNzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2s/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kjdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3N0YWNrJzogb2JqLnN0YWNrLFxuICAgICd2ZXJzaW9uJzogb2JqLnZlcnNpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvVmlzaWJpbGl0eVxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvVmlzaWJpbGl0eSB7XG4gIC8qKiBwcml2YXRlICovXG4gIFBSSVZBVEUgPSBcInByaXZhdGVcIixcbiAgLyoqIHB1YmxpYyAqL1xuICBQVUJMSUMgPSBcInB1YmxpY1wiLFxuICAvKiogaW50ZXJuYWwgKi9cbiAgSU5URVJOQUwgPSBcImludGVybmFsXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMjdXNlRGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlRGVmYXVsdDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyNpbmNsdWRlQ2xhaW1LZXlzXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQ2xhaW1LZXlzOiBzdHJpbmdbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3VzZURlZmF1bHQnOiBvYmoudXNlRGVmYXVsdCxcbiAgICAnaW5jbHVkZUNsYWltS2V5cyc6IG9iai5pbmNsdWRlQ2xhaW1LZXlzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2Uge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZSNicmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZSNwYXRoXG4gICAqL1xuICByZWFkb25seSBwYXRoPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZShvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYnJhbmNoJzogb2JqLmJyYW5jaCxcbiAgICAncGF0aCc6IG9iai5wYXRoLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZiNuZWVkc1NlY3JldFxuICAgKi9cbiAgcmVhZG9ubHkgbmVlZHNTZWNyZXQ/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ25lZWRzU2VjcmV0Jzogb2JqLm5lZWRzU2VjcmV0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgZmVhdHVyZXMgZm9yIEdpdEh1YiByZXBvcy5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVxuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZScsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgZmVhdHVyZXMgZm9yIEdpdEh1YiByZXBvcy5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZSNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI3R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI29yZ1xuICAgKi9cbiAgcmVhZG9ubHkgb3JnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI3ZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI3JlcG9zaXRvcnlUYXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlUYXJnZXQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICd0eXBlJzogb2JqLnR5cGUsXG4gICAgJ29yZyc6IG9iai5vcmcsXG4gICAgJ2NvbnRleHQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQob2JqLmNvbnRleHQpLFxuICAgICd2ZXJzaW9uJzogb2JqLnZlcnNpb24sXG4gICAgJ3JlcG9zaXRvcnlUYXJnZXQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQob2JqLnJlcG9zaXRvcnlUYXJnZXQpLFxuICAgICdmaWxlcyc6IG9iai5maWxlcz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dCNwcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0KG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIob2JqLnByb3ZpZGVyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWY7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQjYnJhbmNoXG4gICAqL1xuICByZWFkb25seSBicmFuY2g6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZihvYmoucmVmKSxcbiAgICAnYnJhbmNoJzogb2JqLmJyYW5jaCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyNwYXRoXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzI3VzZXJNYW5hZ2VkXG4gICAqL1xuICByZWFkb25seSB1c2VyTWFuYWdlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMjY29udGVudFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncGF0aCc6IG9iai5wYXRoLFxuICAgICd1c2VyTWFuYWdlZCc6IG9iai51c2VyTWFuYWdlZCxcbiAgICAnY29udGVudCc6IG9iai5jb250ZW50LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXIob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZiNuZWVkc1NlY3JldFxuICAgKi9cbiAgcmVhZG9ubHkgbmVlZHNTZWNyZXQ6IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnbmVlZHNTZWNyZXQnOiBvYmoubmVlZHNTZWNyZXQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIGJhY2tlbmQgYW5kIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJQcm92aWRlckNvbmZpZy5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyUHJvdmlkZXJDb25maWcuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgYmFja2VuZCBhbmQgcHJvdmlkZXIgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzKG9iajogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyN0eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjY29uZmlnXG4gICAqL1xuICByZWFkb25seSBjb25maWc6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI2lubGluZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjZW52XG4gICAqL1xuICByZWFkb25seSBlbnY/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyNzZWNyZXRzXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyB9O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMob2JqOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndHlwZSc6IG9iai50eXBlLFxuICAgICdzb3VyY2UnOiBvYmouc291cmNlLFxuICAgICd2ZXJzaW9uJzogb2JqLnZlcnNpb24sXG4gICAgJ2NvbmZpZyc6IG9iai5jb25maWcsXG4gICAgJ2lubGluZSc6IG9iai5pbmxpbmUsXG4gICAgJ2Vudic6IG9iai5lbnYsXG4gICAgJ3NlY3JldHMnOiAoKG9iai5zZWNyZXRzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouc2VjcmV0cykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyhpWzFdKSB9KSwge30pKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyNzZWNyZXRSZWZcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldFJlZjogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzKG9iajogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzZWNyZXRSZWYnOiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYob2JqLnNlY3JldFJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmI25hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYob2JqOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnbmFtZXNwYWNlJzogb2JqLm5hbWVzcGFjZSxcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuXG4vKipcbiAqIEEgd29ya3NwYWNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gY29kZVxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVxuICovXG5leHBvcnQgY2xhc3MgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZScsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHdvcmtzcGFjZSB0byBoYW5kbGUgVGVycmFmb3JtIGNvZGVcbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNtb2R1bGVcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjU291cmNlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI3ZhbHVlc1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjI3JlZmVyZW5jZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyN3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQob2JqLmNvbnRleHQpLFxuICAgICdmaXJlc3RhcnRyJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ21vZHVsZSc6IG9iai5tb2R1bGUsXG4gICAgJ3NvdXJjZSc6IG9iai5zb3VyY2UsXG4gICAgJ3ZhbHVlcyc6IG9iai52YWx1ZXMsXG4gICAgJ3JlZmVyZW5jZXMnOiBvYmoucmVmZXJlbmNlcz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcyh5KSksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCNwcm92aWRlcnNcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcnMnOiBvYmoucHJvdmlkZXJzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1NvdXJjZVxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1NvdXJjZSB7XG4gIC8qKiBSZW1vdGUgKi9cbiAgUkVNT1RFID0gXCJSZW1vdGVcIixcbiAgLyoqIElubGluZSAqL1xuICBJTkxJTkUgPSBcIklubGluZVwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI291dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ291dHB1dHMnOiBvYmoub3V0cHV0cz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSAqL1xuICBGSVJFU1RBUlRSX1RFUlJBRk9STV9XT1JLU1BBQ0UgPSBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgd29ya3NwYWNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gY29kZVxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4nLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbi5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4uR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSB3b3Jrc3BhY2UgdG8gaGFuZGxlIFRlcnJhZm9ybSBjb2RlXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbiNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI21vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1NvdXJjZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjdmFsdWVzXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI3JlZmVyZW5jZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZj86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyKG9iai5maXJlc3RhcnRyKSxcbiAgICAnbW9kdWxlJzogb2JqLm1vZHVsZSxcbiAgICAnc291cmNlJzogb2JqLnNvdXJjZSxcbiAgICAndmFsdWVzJzogb2JqLnZhbHVlcyxcbiAgICAncmVmZXJlbmNlcyc6IG9iai5yZWZlcmVuY2VzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyh5KSksXG4gICAgJ3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iai53cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQjYmFja2VuZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dCNwcm92aWRlcnNcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVycyc6IG9iai5wcm92aWRlcnM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0ciN0ZlN0YXRlS2V5XG4gICAqL1xuICByZWFkb25seSB0ZlN0YXRlS2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0cihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHIgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd0ZlN0YXRlS2V5Jzogb2JqLnRmU3RhdGVLZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNTb3VyY2VcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjU291cmNlIHtcbiAgLyoqIFJlbW90ZSAqL1xuICBSRU1PVEUgPSBcIlJlbW90ZVwiLFxuICAvKiogSW5saW5lICovXG4gIElOTElORSA9IFwiSW5saW5lXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI291dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdvdXRwdXRzJzogb2JqLm91dHB1dHM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSAqL1xuICBGSVJFU1RBUlRSX1RFUlJBRk9STV9XT1JLU1BBQ0UgPSBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gcmVzdWx0cy5cbiAqXG4gKiBAc2NoZW1hIFRGUmVzdWx0XG4gKi9cbmV4cG9ydCBjbGFzcyBUZlJlc3VsdCBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIlRGUmVzdWx0XCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ1RGUmVzdWx0JyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJURlJlc3VsdFwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBUZlJlc3VsdFByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5UZlJlc3VsdC5HVkssXG4gICAgICAuLi50b0pzb25fVGZSZXN1bHRQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJURlJlc3VsdFwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGZSZXN1bHRQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5UZlJlc3VsdC5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uVGZSZXN1bHQuR1ZLLFxuICAgICAgLi4udG9Kc29uX1RmUmVzdWx0UHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gcmVzdWx0cy5cbiAqXG4gKiBAc2NoZW1hIFRGUmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZSZXN1bHRQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRGUmVzdWx0I21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRGUmVzdWx0I3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBUZlJlc3VsdFNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGZSZXN1bHRQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGZSZXN1bHRQcm9wcyhvYmo6IFRmUmVzdWx0UHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9UZlJlc3VsdFNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZSZXN1bHRTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjI2FjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uPzogVGZSZXN1bHRTcGVjQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRmUmVzdWx0U3BlYyNyZWZlcmVuY2VcbiAgICovXG4gIHJlYWRvbmx5IHJlZmVyZW5jZT86IFRmUmVzdWx0U3BlY1JlZmVyZW5jZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBUZlJlc3VsdFNwZWMjcmVzdWx0XG4gICAqL1xuICByZWFkb25seSByZXN1bHQ/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGZSZXN1bHRTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UZlJlc3VsdFNwZWMob2JqOiBUZlJlc3VsdFNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhY3Rpb24nOiBvYmouYWN0aW9uLFxuICAgICdyZWZlcmVuY2UnOiB0b0pzb25fVGZSZXN1bHRTcGVjUmVmZXJlbmNlKG9iai5yZWZlcmVuY2UpLFxuICAgICdyZXN1bHQnOiBvYmoucmVzdWx0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjQWN0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIFRmUmVzdWx0U3BlY0FjdGlvbiB7XG4gIC8qKiBpbml0ICovXG4gIElOSVQgPSBcImluaXRcIixcbiAgLyoqIHBsYW4gKi9cbiAgUExBTiA9IFwicGxhblwiLFxuICAvKiogYXBwbHkgKi9cbiAgQVBQTFkgPSBcImFwcGx5XCIsXG4gIC8qKiBkZXN0cm95ICovXG4gIERFU1RST1kgPSBcImRlc3Ryb3lcIixcbiAgLyoqIHN5bnRoICovXG4gIFNZTlRIID0gXCJzeW50aFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjUmVmZXJlbmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZSZXN1bHRTcGVjUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjUmVmZXJlbmNlI3JlZktpbmRcbiAgICovXG4gIHJlYWRvbmx5IHJlZktpbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBUZlJlc3VsdFNwZWNSZWZlcmVuY2UjcmVmTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVmTmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RmUmVzdWx0U3BlY1JlZmVyZW5jZScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGZSZXN1bHRTcGVjUmVmZXJlbmNlKG9iajogVGZSZXN1bHRTcGVjUmVmZXJlbmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmS2luZCc6IG9iai5yZWZLaW5kLFxuICAgICdyZWZOYW1lJzogb2JqLnJlZk5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbiJdfQ==
|
|
230084
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0YXJ0ci5kZXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbXBvcnRzL2ZpcmVzdGFydHIuZGV2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUJBQXFCO0FBQ3JCLGlDQUF1RTtBQUl2RTs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxpQkFBUztJQVNsRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQW9DLEVBQUU7UUFDM0QsdUNBQ0sscUJBQXFCLENBQUMsR0FBRyxHQUN6QixpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsRUFDM0M7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQyxFQUFFO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxrQ0FDVixxQkFBcUIsQ0FBQyxHQUFHLEdBQ3pCLEtBQUssRUFDUixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyx1Q0FDSyxxQkFBcUIsQ0FBQyxHQUFHLEdBQ3pCLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QztJQUNKLENBQUM7O0FBN0NEOztHQUVHO0FBQ29CLHlCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsSUFBSSxFQUFFLHVCQUF1QjtDQUM5QixDQUFBO0FBUFUsc0RBQXFCO0FBbUVsQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixpQ0FBaUMsQ0FBQyxHQUEyQztJQUMzRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3hCLE1BQU0sRUFBRSxnQ0FBZ0MsQ0FBQyxHQUFHLENB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O0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLDRCQUE0QixDQUFDLEdBQXNDO0lBQ2pGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixTQUFTLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxPQUFPO0tBQ3ZCLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFNLENBQUMsS0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCxvRUFRQztBQUNELHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGdlbmVyYXRlZCBieSBjZGs4c1xuaW1wb3J0IHsgQXBpT2JqZWN0LCBBcGlPYmplY3RNZXRhZGF0YSwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgR2l0SHViIGdyb3Vwc1xuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyR2l0aHViR3JvdXAgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViR3JvdXBcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViR3JvdXAuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBHaXRIdWIgZ3JvdXBzXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cCNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXAjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFByb3BzKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNvcmdcbiAgICovXG4gIHJlYWRvbmx5IG9yZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMjcHJpdmFjeVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmFjeTogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1ByaXZhY3k7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNwYXJlbnRUZWFtXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRUZWFtPzogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW07XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNtZW1iZXJzXG4gICAqL1xuICByZWFkb25seSBtZW1iZXJzOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjI3dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWMob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnb3JnJzogb2JqLm9yZyxcbiAgICAncHJpdmFjeSc6IG9iai5wcml2YWN5LFxuICAgICdkZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgICAncGFyZW50VGVhbSc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbShvYmoucGFyZW50VGVhbSksXG4gICAgJ21lbWJlcnMnOiBvYmoubWVtYmVycz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzKHkpKSxcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICd3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQcml2YWN5XG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQcml2YWN5IHtcbiAgLyoqIGNsb3NlZCAqL1xuICBDTE9TRUQgPSBcImNsb3NlZFwiLFxuICAvKiogc2VjcmV0ICovXG4gIFNFQ1JFVCA9IFwic2VjcmV0XCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW0jcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbShvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzI3JlZlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnMob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVycyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHQjcHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyKG9iai5wcm92aWRlciksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNGaXJlc3RhcnRyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjRmlyZXN0YXJ0ciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RmU3RhdGVLZXknOiBvYmoudGZTdGF0ZUtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzPzogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdvdXRwdXRzJzogb2JqLm91dHB1dHM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNQYXJlbnRUZWFtUmVmI25lZWRzU2VjcmV0XG4gICAqL1xuICByZWFkb25seSBuZWVkc1NlY3JldDogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1BhcmVudFRlYW1SZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjUGFyZW50VGVhbVJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduZWVkc1NlY3JldCc6IG9iai5uZWVkc1NlY3JldCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNNZW1iZXJzUmVmI25lZWRzU2VjcmV0XG4gICAqL1xuICByZWFkb25seSBuZWVkc1NlY3JldDogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY01lbWJlcnNSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjTWVtYmVyc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduZWVkc1NlY3JldCc6IG9iai5uZWVkc1NlY3JldCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlciNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyKG9iajogRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyhvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Ykdyb3VwU3BlY0NvbnRleHRQcm92aWRlclJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViR3JvdXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJHcm91cFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBHaXRIdWIgbWVtYmVyc2hpcHMgdG8gYSBHaXRIdWIgb3JnYW5pemF0aW9uLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcC5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgR2l0SHViIG1lbWJlcnNoaXBzIHRvIGEgR2l0SHViIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXAjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYzogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwUHJvcHMob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNvcmdcbiAgICovXG4gIHJlYWRvbmx5IG9yZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNyb2xlXG4gICAqL1xuICByZWFkb25seSByb2xlOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNSb2xlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyN3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY/OiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyhvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29yZyc6IG9iai5vcmcsXG4gICAgJ3JvbGUnOiBvYmoucm9sZSxcbiAgICAnY29udGV4dCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyKG9iai5maXJlc3RhcnRyKSxcbiAgICAnd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1JvbGVcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjUm9sZSB7XG4gIC8qKiBtZW1iZXIgKi9cbiAgTUVNQkVSID0gXCJtZW1iZXJcIixcbiAgLyoqIGFkbWluICovXG4gIEFETUlOID0gXCJhZG1pblwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQjcHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdiYWNrZW5kJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kKG9iai5iYWNrZW5kKSxcbiAgICAncHJvdmlkZXInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyKG9iai5wcm92aWRlciksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnb3V0cHV0cyc6IG9iai5vdXRwdXRzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXIjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlcihvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyhvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRQcm92aWRlclJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJNZW1iZXJzaGlwU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1Yk1lbWJlcnNoaXBTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcFNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSB0aGUgR2l0SHViIHJlcG9zIG9mIGFuIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeSBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5JyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeS5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeS5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSB0aGUgR2l0SHViIHJlcG9zIG9mIGFuIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5I21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5I3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI29yZ1xuICAgKi9cbiAgcmVhZG9ubHkgb3JnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2NvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2ZpcmVzdGFydHJcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVzdGFydHI6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI3JlcG9cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG87XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2FjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbnM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnM7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI3BhZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWdlcz86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyNwZXJtaXNzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjI2JyYW5jaFByb3RlY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBicmFuY2hQcm90ZWN0aW9uczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnNbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMjd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29yZyc6IG9iai5vcmcsXG4gICAgJ2NvbnRleHQnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ3JlcG8nOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyhvYmoucmVwbyksXG4gICAgJ2FjdGlvbnMnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyhvYmouYWN0aW9ucyksXG4gICAgJ3BhZ2VzJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzKG9iai5wYWdlcyksXG4gICAgJ3Blcm1pc3Npb25zJzogb2JqLnBlcm1pc3Npb25zPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMoeSkpLFxuICAgICdicmFuY2hQcm90ZWN0aW9ucyc6IG9iai5icmFuY2hQcm90ZWN0aW9ucz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zKHkpKSxcbiAgICAnd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqLndyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0I3Byb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHQob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZChvYmouYmFja2VuZCksXG4gICAgJ3Byb3ZpZGVyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlcihvYmoucHJvdmlkZXIpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyI3RmU3RhdGVLZXlcbiAgICovXG4gIHJlYWRvbmx5IHRmU3RhdGVLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyI3RlY2hub2xvZ3lcbiAgICovXG4gIHJlYWRvbmx5IHRlY2hub2xvZ3k6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICAgICd0ZWNobm9sb2d5JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5KG9iai50ZWNobm9sb2d5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd01lcmdlQ29tbWl0XG4gICAqL1xuICByZWFkb25seSBhbGxvd01lcmdlQ29tbWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2FsbG93U3F1YXNoTWVyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U3F1YXNoTWVyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYWxsb3dSZWJhc2VNZXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dSZWJhc2VNZXJnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd0F1dG9NZXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBdXRvTWVyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jZGVsZXRlQnJhbmNoT25NZXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnJhbmNoT25NZXJnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhdXRvSW5pdFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0luaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jYXJjaGl2ZU9uRGVzdHJveVxuICAgKi9cbiAgcmVhZG9ubHkgYXJjaGl2ZU9uRGVzdHJveT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNhbGxvd1VwZGF0ZUJyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVcGRhdGVCcmFuY2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jaGFzSXNzdWVzXG4gICAqL1xuICByZWFkb25seSBoYXNJc3N1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8jaGFzV2lraVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzV2lraT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyNwYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFnZXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyN2aXNpYmlsaXR5XG4gICAqL1xuICByZWFkb25seSB2aXNpYmlsaXR5OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvVmlzaWJpbGl0eTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2RlZmF1bHRCcmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCcmFuY2g6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNSZXBvI2NvZGVvd25lcnNcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVvd25lcnM/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwbyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1JlcG8gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdkZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgICAnYWxsb3dNZXJnZUNvbW1pdCc6IG9iai5hbGxvd01lcmdlQ29tbWl0LFxuICAgICdhbGxvd1NxdWFzaE1lcmdlJzogb2JqLmFsbG93U3F1YXNoTWVyZ2UsXG4gICAgJ2FsbG93UmViYXNlTWVyZ2UnOiBvYmouYWxsb3dSZWJhc2VNZXJnZSxcbiAgICAnYWxsb3dBdXRvTWVyZ2UnOiBvYmouYWxsb3dBdXRvTWVyZ2UsXG4gICAgJ2RlbGV0ZUJyYW5jaE9uTWVyZ2UnOiBvYmouZGVsZXRlQnJhbmNoT25NZXJnZSxcbiAgICAnYXV0b0luaXQnOiBvYmouYXV0b0luaXQsXG4gICAgJ2FyY2hpdmVPbkRlc3Ryb3knOiBvYmouYXJjaGl2ZU9uRGVzdHJveSxcbiAgICAnYWxsb3dVcGRhdGVCcmFuY2gnOiBvYmouYWxsb3dVcGRhdGVCcmFuY2gsXG4gICAgJ2hhc0lzc3Vlcyc6IG9iai5oYXNJc3N1ZXMsXG4gICAgJ2hhc1dpa2knOiBvYmouaGFzV2lraSxcbiAgICAncGFnZXMnOiBvYmoucGFnZXMsXG4gICAgJ3Zpc2liaWxpdHknOiBvYmoudmlzaWJpbGl0eSxcbiAgICAnZGVmYXVsdEJyYW5jaCc6IG9iai5kZWZhdWx0QnJhbmNoLFxuICAgICdjb2Rlb3duZXJzJzogb2JqLmNvZGVvd25lcnMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMjb2lkY1xuICAgKi9cbiAgcmVhZG9ubHkgb2lkYzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9ucyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvaWRjJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjKG9iai5vaWRjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyNjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY25hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMjc291cmNlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2NuYW1lJzogb2JqLmNuYW1lLFxuICAgICdzb3VyY2UnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2Uob2JqLnNvdXJjZSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnMjcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyNjb2xsYWJvcmF0b3JcbiAgICovXG4gIHJlYWRvbmx5IGNvbGxhYm9yYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZj86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9ucyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncm9sZSc6IG9iai5yb2xlLFxuICAgICdjb2xsYWJvcmF0b3InOiBvYmouY29sbGFib3JhdG9yLFxuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjYnJhbmNoXG4gICAqL1xuICByZWFkb25seSBicmFuY2g6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyNzdGF0dXNDaGVja3NcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1c0NoZWNrcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI3JlcXVpcmVkUmV2aWV3ZXJzQ291bnRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkUmV2aWV3ZXJzQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjcmVxdWlyZWRDb2Rlb3duZXJzUmV2aWV3ZXJzXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlZENvZGVvd25lcnNSZXZpZXdlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI2VuZm9yY2VBZG1pbnNcbiAgICovXG4gIHJlYWRvbmx5IGVuZm9yY2VBZG1pbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0JyYW5jaFByb3RlY3Rpb25zI3JlcXVpcmVTaWduZWRDb21taXRzXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlU2lnbmVkQ29tbWl0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMjcmVxdWlyZUNvbnZlcnNhdGlvblJlc29sdXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVDb252ZXJzYXRpb25SZXNvbHV0aW9uPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQnJhbmNoUHJvdGVjdGlvbnMob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNCcmFuY2hQcm90ZWN0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JyYW5jaCc6IG9iai5icmFuY2gsXG4gICAgJ3N0YXR1c0NoZWNrcyc6IG9iai5zdGF0dXNDaGVja3M/Lm1hcCh5ID0+IHkpLFxuICAgICdyZXF1aXJlZFJldmlld2Vyc0NvdW50Jzogb2JqLnJlcXVpcmVkUmV2aWV3ZXJzQ291bnQsXG4gICAgJ3JlcXVpcmVkQ29kZW93bmVyc1Jldmlld2Vycyc6IG9iai5yZXF1aXJlZENvZGVvd25lcnNSZXZpZXdlcnMsXG4gICAgJ2VuZm9yY2VBZG1pbnMnOiBvYmouZW5mb3JjZUFkbWlucyxcbiAgICAncmVxdWlyZVNpZ25lZENvbW1pdHMnOiBvYmoucmVxdWlyZVNpZ25lZENvbW1pdHMsXG4gICAgJ3JlcXVpcmVDb252ZXJzYXRpb25SZXNvbHV0aW9uJzogb2JqLnJlcXVpcmVDb252ZXJzYXRpb25SZXNvbHV0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnb3V0cHV0cyc6IG9iai5vdXRwdXRzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXIjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlcihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNGaXJlc3RhcnRyVGVjaG5vbG9neVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kjc3RhY2tcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5I3ZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3knIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0ZpcmVzdGFydHJUZWNobm9sb2d5KG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjRmlyZXN0YXJ0clRlY2hub2xvZ3kgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzdGFjayc6IG9iai5zdGFjayxcbiAgICAndmVyc2lvbic6IG9iai52ZXJzaW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwb1Zpc2liaWxpdHlcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUmVwb1Zpc2liaWxpdHkge1xuICAvKiogcHJpdmF0ZSAqL1xuICBQUklWQVRFID0gXCJwcml2YXRlXCIsXG4gIC8qKiBwdWJsaWMgKi9cbiAgUFVCTElDID0gXCJwdWJsaWNcIixcbiAgLyoqIGludGVybmFsICovXG4gIElOVEVSTkFMID0gXCJpbnRlcm5hbFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNBY3Rpb25zT2lkYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjI3VzZURlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHVzZURlZmF1bHQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMjaW5jbHVkZUNsYWltS2V5c1xuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUNsYWltS2V5czogc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0FjdGlvbnNPaWRjKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQWN0aW9uc09pZGMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd1c2VEZWZhdWx0Jzogb2JqLnVzZURlZmF1bHQsXG4gICAgJ2luY2x1ZGVDbGFpbUtleXMnOiBvYmouaW5jbHVkZUNsYWltS2V5cz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1BhZ2VzU291cmNlIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2UjYnJhbmNoXG4gICAqL1xuICByZWFkb25seSBicmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2UjcGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGFnZXNTb3VyY2Uob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQYWdlc1NvdXJjZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JyYW5jaCc6IG9iai5icmFuY2gsXG4gICAgJ3BhdGgnOiBvYmoucGF0aCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1Blcm1pc3Npb25zUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYjbmVlZHNTZWNyZXRcbiAgICovXG4gIHJlYWRvbmx5IG5lZWRzU2VjcmV0PzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjUGVybWlzc2lvbnNSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNQZXJtaXNzaW9uc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduZWVkc1NlY3JldCc6IG9iai5uZWVkc1NlY3JldCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5U3BlY0NvbnRleHRQcm92aWRlclJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIGZlYXR1cmVzIGZvciBHaXRIdWIgcmVwb3MuXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZSBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZS5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIGZlYXR1cmVzIGZvciBHaXRIdWIgcmVwb3MuXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZSNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmUjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVByb3BzKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyPzogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyN0eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyNvcmdcbiAgICovXG4gIHJlYWRvbmx5IG9yZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyN2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyNyZXBvc2l0b3J5VGFyZ2V0XG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5VGFyZ2V0OiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjI2ZpbGVzXG4gICAqL1xuICByZWFkb25seSBmaWxlczogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlYyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdmaXJlc3RhcnRyJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyKG9iai5maXJlc3RhcnRyKSxcbiAgICAndHlwZSc6IG9iai50eXBlLFxuICAgICdvcmcnOiBvYmoub3JnLFxuICAgICdjb250ZXh0JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAndmVyc2lvbic6IG9iai52ZXJzaW9uLFxuICAgICdyZXBvc2l0b3J5VGFyZ2V0JzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0KG9iai5yZXBvc2l0b3J5VGFyZ2V0KSxcbiAgICAnZmlsZXMnOiBvYmouZmlsZXM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaXJlc3RhcnRyI3RmU3RhdGVLZXlcbiAgICovXG4gIHJlYWRvbmx5IHRmU3RhdGVLZXk6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlyZXN0YXJ0ciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RmU3RhdGVLZXknOiBvYmoudGZTdGF0ZUtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dCNiYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHQjcHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dChvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyKG9iai5wcm92aWRlciksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0I2JyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0KG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYob2JqLnJlZiksXG4gICAgJ2JyYW5jaCc6IG9iai5icmFuY2gsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMjcGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyN1c2VyTWFuYWdlZFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlck1hbmFnZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0ZpbGVzI2NvbnRlbnRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjRmlsZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyhvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNGaWxlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3BhdGgnOiBvYmoucGF0aCxcbiAgICAndXNlck1hbmFnZWQnOiBvYmoudXNlck1hbmFnZWQsXG4gICAgJ2NvbnRlbnQnOiBvYmouY29udGVudCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlciNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyKG9iajogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY1JlcG9zaXRvcnlUYXJnZXRSZWYjbmVlZHNTZWNyZXRcbiAgICovXG4gIHJlYWRvbmx5IG5lZWRzU2VjcmV0OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjUmVwb3NpdG9yeVRhcmdldFJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNSZXBvc2l0b3J5VGFyZ2V0UmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ25lZWRzU2VjcmV0Jzogb2JqLm5lZWRzU2VjcmV0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZihvYmo6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlU3BlY0NvbnRleHRQcm92aWRlclJlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWYob2JqOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dFByb3ZpZGVyUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVTcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQge1xuICAvKiogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnICovXG4gIEZJUkVTVEFSVFJfUFJPVklERVJfQ09ORklHID0gXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5RmVhdHVyZVNwZWNDb250ZXh0UHJvdmlkZXJSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHJlc291cmNlIHRvIGhhbmRsZSBiYWNrZW5kIGFuZCBwcm92aWRlciBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2ZpcmVzdGFydHIuZGV2L3YxJyxcbiAgICBraW5kOiAnRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyUHJvdmlkZXJDb25maWcuR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkZpcmVzdGFydHJQcm92aWRlckNvbmZpZy5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdG8gaGFuZGxlIGJhY2tlbmQgYW5kIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdQcm9wcyhvYmo6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1Byb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjc291cmNlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI3ZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI2NvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyNpbmxpbmVcbiAgICovXG4gIHJlYWRvbmx5IGlubGluZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjI2VudlxuICAgKi9cbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWMjc2VjcmV0c1xuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0cz86IHsgW2tleTogc3RyaW5nXTogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMgfTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjKG9iajogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3R5cGUnOiBvYmoudHlwZSxcbiAgICAnc291cmNlJzogb2JqLnNvdXJjZSxcbiAgICAndmVyc2lvbic6IG9iai52ZXJzaW9uLFxuICAgICdjb25maWcnOiBvYmouY29uZmlnLFxuICAgICdpbmxpbmUnOiBvYmouaW5saW5lLFxuICAgICdlbnYnOiBvYmouZW52LFxuICAgICdzZWNyZXRzJzogKChvYmouc2VjcmV0cykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLnNlY3JldHMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiB0b0pzb25fRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMoaVsxXSkgfSksIHt9KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHMjc2VjcmV0UmVmXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRSZWY6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0cyhvYmo6IEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnc2VjcmV0UmVmJzogdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmKG9iai5zZWNyZXRSZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWdTcGVjU2VjcmV0c1NlY3JldFJlZiNuYW1lc3BhY2VcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1NwZWNTZWNyZXRzU2VjcmV0UmVmKG9iajogRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnU3BlY1NlY3JldHNTZWNyZXRSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ25hbWVzcGFjZSc6IG9iai5uYW1lc3BhY2UsXG4gICAgJ2tleSc6IG9iai5rZXksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cblxuLyoqXG4gKiBBIHdvcmtzcGFjZSB0byBoYW5kbGUgVGVycmFmb3JtIGNvZGVcbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGNsYXNzIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UnLFxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZS5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZS5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZS5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSB3b3Jrc3BhY2UgdG8gaGFuZGxlIFRlcnJhZm9ybSBjb2RlXG4gKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZSNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2Ujc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMjY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMjbW9kdWxlXG4gICAqL1xuICByZWFkb25seSBtb2R1bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMjc291cmNlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1NvdXJjZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyN2YWx1ZXNcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlcz86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyNyZWZlcmVuY2VzXG4gICAqL1xuICByZWFkb25seSByZWZlcmVuY2VzPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMjd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWMob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2NvbnRleHQnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0KG9iai5jb250ZXh0KSxcbiAgICAnZmlyZXN0YXJ0cic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHIob2JqLmZpcmVzdGFydHIpLFxuICAgICdtb2R1bGUnOiBvYmoubW9kdWxlLFxuICAgICdzb3VyY2UnOiBvYmouc291cmNlLFxuICAgICd2YWx1ZXMnOiBvYmoudmFsdWVzLFxuICAgICdyZWZlcmVuY2VzJzogb2JqLnJlZmVyZW5jZXM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXMoeSkpLFxuICAgICd3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmKG9iai53cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQjYmFja2VuZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHQjcHJvdmlkZXJzXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcnM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0KG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmFja2VuZCc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kKG9iai5iYWNrZW5kKSxcbiAgICAncHJvdmlkZXJzJzogb2JqLnByb3ZpZGVycz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVycyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHIge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjRmlyZXN0YXJ0cicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNTb3VyY2VcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNTb3VyY2Uge1xuICAvKiogUmVtb3RlICovXG4gIFJFTU9URSA9IFwiUmVtb3RlXCIsXG4gIC8qKiBJbmxpbmUgKi9cbiAgSU5MSU5FID0gXCJJbmxpbmVcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcyNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZj86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdvdXRwdXRzJzogb2JqLm91dHB1dHM/Lm1hcCh5ID0+IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZChvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVycyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVycyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVycycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVmJzogdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWZLaW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjUmVmZXJlbmNlc1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dEJhY2tlbmRSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0QmFja2VuZFJlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmI2tpbmRcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VTcGVjQ29udGV4dFByb3ZpZGVyc1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tpbmQnOiBvYmoua2luZCxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNSZWZlcmVuY2VzUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY1JlZmVyZW5jZXNSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UgKi9cbiAgRklSRVNUQVJUUl9URVJSQUZPUk1fV09SS1NQQUNFID0gXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlXCIsXG4gIC8qKiBFeHRlcm5hbFNlY3JldCAqL1xuICBFWFRFUk5BTF9TRUNSRVQgPSBcIkV4dGVybmFsU2VjcmV0XCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRCYWNrZW5kUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlU3BlY0NvbnRleHRQcm92aWRlcnNSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cblxuLyoqXG4gKiBBIHdvcmtzcGFjZSB0byBoYW5kbGUgVGVycmFmb3JtIGNvZGVcbiAqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbiBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdmaXJlc3RhcnRyLmRldi92MScsXG4gICAga2luZDogJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuJyxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4uR1ZLLFxuICAgICAgLi4udG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbi5HVkssXG4gICAgICAuLi50b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgd29ya3NwYWNlIHRvIGhhbmRsZSBUZXJyYWZvcm0gY29kZVxuICpcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW4jbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhbiNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5Qcm9wcyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI2NvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyNmaXJlc3RhcnRyXG4gICAqL1xuICByZWFkb25seSBmaXJlc3RhcnRyOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyNtb2R1bGVcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMjc291cmNlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNTb3VyY2U7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjI3ZhbHVlc1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyNyZWZlcmVuY2VzXG4gICAqL1xuICByZWFkb25seSByZWZlcmVuY2VzPzogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyN3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY/OiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2NvbnRleHQnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dChvYmouY29udGV4dCksXG4gICAgJ2ZpcmVzdGFydHInOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0cihvYmouZmlyZXN0YXJ0ciksXG4gICAgJ21vZHVsZSc6IG9iai5tb2R1bGUsXG4gICAgJ3NvdXJjZSc6IG9iai5zb3VyY2UsXG4gICAgJ3ZhbHVlcyc6IG9iai52YWx1ZXMsXG4gICAgJ3JlZmVyZW5jZXMnOiBvYmoucmVmZXJlbmNlcz8ubWFwKHkgPT4gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMoeSkpLFxuICAgICd3cml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZihvYmoud3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0I2JhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHQjcHJvdmlkZXJzXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcnM6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0KG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2JhY2tlbmQnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQob2JqLmJhY2tlbmQpLFxuICAgICdwcm92aWRlcnMnOiBvYmoucHJvdmlkZXJzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjRmlyZXN0YXJ0ciB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHIjdGZTdGF0ZUtleVxuICAgKi9cbiAgcmVhZG9ubHkgdGZTdGF0ZUtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHInIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0ZpcmVzdGFydHIob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNGaXJlc3RhcnRyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndGZTdGF0ZUtleSc6IG9iai50ZlN0YXRlS2V5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjU291cmNlXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1NvdXJjZSB7XG4gIC8qKiBSZW1vdGUgKi9cbiAgUkVNT1RFID0gXCJSZW1vdGVcIixcbiAgLyoqIElubGluZSAqL1xuICBJTkxJTkUgPSBcIklubGluZVwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZj86IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlcyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ3JlZic6IHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmKG9iai5yZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiNvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZk91dHB1dHNbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWYob2JqOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNXcml0ZUNvbm5lY3Rpb25TZWNyZXRUb1JlZiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnb3V0cHV0cyc6IG9iai5vdXRwdXRzPy5tYXAoeSA9PiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZCNyZWZcbiAgICovXG4gIHJlYWRvbmx5IHJlZjogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYob2JqLnJlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnMjcmVmXG4gICAqL1xuICByZWFkb25seSByZWY6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVycyhvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWYnOiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZihvYmoucmVmKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmS2luZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNSZWZlcmVuY2VzUmVmI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjUmVmZXJlbmNlc1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cyNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1dyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmT3V0cHV0cycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzKG9iajogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjV3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWZPdXRwdXRzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYge1xuICAvKipcbiAgICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZiNraW5kXG4gICAqL1xuICByZWFkb25seSBraW5kOiBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWYjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRCYWNrZW5kUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2luZCc6IG9iai5raW5kLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWYja2luZFxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZktpbmQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZiNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dFByb3ZpZGVyc1JlZihvYmo6IEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY0NvbnRleHRQcm92aWRlcnNSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdraW5kJzogb2JqLmtpbmQsXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWZLaW5kXG4gKi9cbmV4cG9ydCBlbnVtIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2VQbGFuU3BlY1JlZmVyZW5jZXNSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UgKi9cbiAgRklSRVNUQVJUUl9URVJSQUZPUk1fV09SS1NQQUNFID0gXCJGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0QmFja2VuZFJlZktpbmRcbiAqL1xuZXhwb3J0IGVudW0gRmlyZXN0YXJ0clRlcnJhZm9ybVdvcmtzcGFjZVBsYW5TcGVjQ29udGV4dEJhY2tlbmRSZWZLaW5kIHtcbiAgLyoqIEZpcmVzdGFydHJQcm92aWRlckNvbmZpZyAqL1xuICBGSVJFU1RBUlRSX1BST1ZJREVSX0NPTkZJRyA9IFwiRmlyZXN0YXJ0clByb3ZpZGVyQ29uZmlnXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZFxuICovXG5leHBvcnQgZW51bSBGaXJlc3RhcnRyVGVycmFmb3JtV29ya3NwYWNlUGxhblNwZWNDb250ZXh0UHJvdmlkZXJzUmVmS2luZCB7XG4gIC8qKiBGaXJlc3RhcnRyUHJvdmlkZXJDb25maWcgKi9cbiAgRklSRVNUQVJUUl9QUk9WSURFUl9DT05GSUcgPSBcIkZpcmVzdGFydHJQcm92aWRlckNvbmZpZ1wiLFxufVxuXG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgVGVycmFmb3JtIHJlc3VsdHMuXG4gKlxuICogQHNjaGVtYSBURlJlc3VsdFxuICovXG5leHBvcnQgY2xhc3MgVGZSZXN1bHQgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJURlJlc3VsdFwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZmlyZXN0YXJ0ci5kZXYvdjEnLFxuICAgIGtpbmQ6ICdURlJlc3VsdCcsXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiVEZSZXN1bHRcIi5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW5pZmVzdChwcm9wczogVGZSZXN1bHRQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uVGZSZXN1bHQuR1ZLLFxuICAgICAgLi4udG9Kc29uX1RmUmVzdWx0UHJvcHMocHJvcHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFwiVEZSZXN1bHRcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRmUmVzdWx0UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uVGZSZXN1bHQuR1ZLLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlRmUmVzdWx0LkdWSyxcbiAgICAgIC4uLnRvSnNvbl9UZlJlc3VsdFByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSB0byBoYW5kbGUgVGVycmFmb3JtIHJlc3VsdHMuXG4gKlxuICogQHNjaGVtYSBURlJlc3VsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRmUmVzdWx0UHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBURlJlc3VsdCNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogQHNjaGVtYSBURlJlc3VsdCNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogVGZSZXN1bHRTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RmUmVzdWx0UHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RmUmVzdWx0UHJvcHMob2JqOiBUZlJlc3VsdFByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fVGZSZXN1bHRTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFRmUmVzdWx0U3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRmUmVzdWx0U3BlYyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRmUmVzdWx0U3BlYyNhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbj86IFRmUmVzdWx0U3BlY0FjdGlvbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBUZlJlc3VsdFNwZWMjcmVmZXJlbmNlXG4gICAqL1xuICByZWFkb25seSByZWZlcmVuY2U/OiBUZlJlc3VsdFNwZWNSZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjI3Jlc3VsdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdWx0Pzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RmUmVzdWx0U3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGZSZXN1bHRTcGVjKG9iajogVGZSZXN1bHRTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYWN0aW9uJzogb2JqLmFjdGlvbixcbiAgICAncmVmZXJlbmNlJzogdG9Kc29uX1RmUmVzdWx0U3BlY1JlZmVyZW5jZShvYmoucmVmZXJlbmNlKSxcbiAgICAncmVzdWx0Jzogb2JqLnJlc3VsdCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFRmUmVzdWx0U3BlY0FjdGlvblxuICovXG5leHBvcnQgZW51bSBUZlJlc3VsdFNwZWNBY3Rpb24ge1xuICAvKiogaW5pdCAqL1xuICBJTklUID0gXCJpbml0XCIsXG4gIC8qKiBwbGFuICovXG4gIFBMQU4gPSBcInBsYW5cIixcbiAgLyoqIGFwcGx5ICovXG4gIEFQUExZID0gXCJhcHBseVwiLFxuICAvKiogZGVzdHJveSAqL1xuICBERVNUUk9ZID0gXCJkZXN0cm95XCIsXG4gIC8qKiBzeW50aCAqL1xuICBTWU5USCA9IFwic3ludGhcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIFRmUmVzdWx0U3BlY1JlZmVyZW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRmUmVzdWx0U3BlY1JlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRmUmVzdWx0U3BlY1JlZmVyZW5jZSNyZWZLaW5kXG4gICAqL1xuICByZWFkb25seSByZWZLaW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGZSZXN1bHRTcGVjUmVmZXJlbmNlI3JlZk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJlZk5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUZlJlc3VsdFNwZWNSZWZlcmVuY2UnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RmUmVzdWx0U3BlY1JlZmVyZW5jZShvYmo6IFRmUmVzdWx0U3BlY1JlZmVyZW5jZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlZktpbmQnOiBvYmoucmVmS2luZCxcbiAgICAncmVmTmFtZSc6IG9iai5yZWZOYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4iXX0=
|
|
230069
230085
|
|
|
230070
230086
|
/***/ }),
|
|
230071
230087
|
|
|
@@ -230142,7 +230158,7 @@ exports["default"] = {
|
|
|
230142
230158
|
* This function returns nothing.
|
|
230143
230159
|
*
|
|
230144
230160
|
*/
|
|
230145
|
-
async function runRenderer(globalsPath, initializersPath, claimsPath, crsPath, claimsDefaults, outputCatalogDir, outputCrDir, renamesEnabled, provider, excludedPaths = [], validateReferentialIntegrity
|
|
230161
|
+
async function runRenderer(globalsPath, initializersPath, claimsPath, crsPath, claimsDefaults, outputCatalogDir, outputCrDir, renamesEnabled, provider, excludedPaths = [], validateReferentialIntegrity) {
|
|
230146
230162
|
(0, config_1.configureProvider)(provider);
|
|
230147
230163
|
(0, config_1.setPath)('initializers', initializersPath);
|
|
230148
230164
|
(0, config_1.setPath)('crs', crsPath);
|
|
@@ -230161,12 +230177,12 @@ async function runRenderer(globalsPath, initializersPath, claimsPath, crsPath, c
|
|
|
230161
230177
|
outputFileExtension: '.yaml',
|
|
230162
230178
|
yamlOutputType: cdk8s_1.YamlOutputType.FILE_PER_RESOURCE,
|
|
230163
230179
|
});
|
|
230164
|
-
await (0, renderer_1.render)(catalogApp, firestartrApp, validateReferentialIntegrity);
|
|
230180
|
+
await (0, renderer_1.render)(catalogApp, firestartrApp, validateReferentialIntegrity === 'enabled' ? true : false);
|
|
230165
230181
|
catalogApp.synth();
|
|
230166
230182
|
firestartrApp.synth();
|
|
230167
230183
|
}
|
|
230168
230184
|
exports.runRenderer = runRenderer;
|
|
230169
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
230185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBbUQ7QUFBMUMscUdBQUEsYUFBYSxPQUFBO0FBQ3RCLHdFQUFrRjtBQUF6RSwrSEFBQSwyQkFBMkIsT0FBQTtBQUNwQyxnREFBMEQ7QUFBakQsdUdBQUEsZUFBZSxPQUFBO0FBQ3hCLG9EQUE4RDtBQUFyRCwyR0FBQSxpQkFBaUIsT0FBQTtBQUMxQiwrQ0FBd0Q7QUFBL0Msc0dBQUEsY0FBYyxPQUFBO0FBQ3ZCLGdEQUFzRDtBQUE3Qyx1R0FBQSxhQUFhLE9BQUE7QUFDdEIsMERBQWdFO0FBQXZELGlIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHdEQUFrRTtBQUF6RCwrR0FBQSxtQkFBbUIsT0FBQTtBQUM1QixzRkFBc0Y7QUFBN0UscUlBQUEseUJBQXlCLE9BQUE7QUFDbEMsZ0RBQTRFO0FBQW5FLG1HQUFBLGtCQUFrQixPQUFlO0FBQzFDLDZDQUE2QztBQUM3Qyx5Q0FNc0I7QUFDdEIscURBQTZFO0FBQzdFLHNEQUFpRDtBQUNqRCxpQ0FBNEM7QUFDNUMsdUNBQW1FO0FBQTFELDBHQUFBLGdCQUFnQixPQUFBO0FBQUUsMkdBQUEsaUJBQWlCLE9BQUE7QUFDNUMsNkRBQStEO0FBQy9ELG1EQUF3RTtBQUN4RSxnREFBOEM7QUFDOUMsaUVBQXVFO0FBQ3ZFLCtEQUFrRTtBQUNsRSxvRUFBbUU7QUFDbkUsZ0VBQW1GO0FBR25GLGtCQUFlO0lBQ2IsaUJBQWlCLEVBQWpCLG1DQUFpQjtJQUVqQixNQUFNLEVBQU4saUJBQU07SUFFTixPQUFPLEVBQVAsZ0JBQU87SUFFUCxZQUFZLEVBQVosMkJBQVk7SUFFWix5QkFBeUIsRUFBekIsd0NBQXlCO0lBRXpCLFdBQVcsRUFBWCx5QkFBVztJQUVYLGdCQUFnQixFQUFoQix5QkFBZ0I7SUFFaEIsV0FBVyxFQUFYLHNCQUFXO0lBRVgsZUFBZSxFQUFmLDRCQUFlO0lBRWYsT0FBTyxFQUFQLGdCQUFPO0lBRVAsaUJBQWlCLEVBQWpCLDRCQUFpQjtJQUVqQixzQkFBc0IsRUFBdEIsb0NBQXNCO0lBRXRCLGlCQUFpQixFQUFqQiwrQkFBaUI7SUFFakIsbUNBQW1DLEVBQW5DLG1EQUFtQztDQUNwQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUMvQixXQUFtQixFQUNuQixnQkFBd0IsRUFDeEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLGNBQXNCLEVBQ3RCLGdCQUF3QixFQUN4QixXQUFtQixFQUNuQixjQUF1QixFQUN2QixRQUEwQixFQUMxQixnQkFBMEIsRUFBRSxFQUM1Qiw0QkFBb0M7SUFFcEMsSUFBQSwwQkFBaUIsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixJQUFBLGdCQUFPLEVBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDMUMsSUFBQSxnQkFBTyxFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QixJQUFBLGdCQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hDLElBQUEsZ0JBQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUIsSUFBQSxnQkFBTyxFQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLElBQUEsMEJBQWlCLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEMsSUFBQSx5QkFBZ0IsRUFBQyxhQUFhLENBQUMsQ0FBQztJQUVoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFdBQUcsQ0FBQztRQUN6QixNQUFNLEVBQUUsZ0JBQWdCO1FBRXhCLG1CQUFtQixFQUFFLE9BQU87UUFFNUIsY0FBYyxFQUFFLHNCQUFjLENBQUMsaUJBQWlCO0tBQ2pELENBQUMsQ0FBQztJQUVILE1BQU0sYUFBYSxHQUFHLElBQUksV0FBRyxDQUFDO1FBQzVCLE1BQU0sRUFBRSxXQUFXO1FBRW5CLG1CQUFtQixFQUFFLE9BQU87UUFFNUIsY0FBYyxFQUFFLHNCQUFjLENBQUMsaUJBQWlCO0tBQ2pELENBQUMsQ0FBQztJQUVILE1BQU0sSUFBQSxpQkFBTSxFQUNWLFVBQVUsRUFFVixhQUFhLEVBRWIsNEJBQTRCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDMUQsQ0FBQztJQUVGLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVuQixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQWpERCxrQ0FpREMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBHbG9iYWxTZWN0aW9uIH0gZnJvbSAnLi9zcmMvZ2xvYmFscy9iYXNlJztcbmV4cG9ydCB7IEJyYW5jaFN0cmF0ZWdpZXNJbml0aWFsaXplciB9IGZyb20gJy4vc3JjL2luaXRpYWxpemVycy9icmFuY2hTdHJhdGVnaWVzJztcbmV4cG9ydCB7IFVVSURJbml0aWFsaXplciB9IGZyb20gJy4vc3JjL2luaXRpYWxpemVycy91dWlkJztcbmV4cG9ydCB7IEltcG9ydEluaXRpYWxpemVyIH0gZnJvbSAnLi9zcmMvaW5pdGlhbGl6ZXJzL2ltcG9ydCc7XG5leHBvcnQgeyBOYW1lTm9ybWFsaXplciB9IGZyb20gJy4vc3JjL25vcm1hbGl6ZXJzL25hbWUnO1xuZXhwb3J0IHsgR2xvYmFsRGVmYXVsdCB9IGZyb20gJy4vc3JjL2RlZmF1bHRzL2dsb2JhbCc7XG5leHBvcnQgeyBJbml0aWFsaXplckRlZmF1bHQgfSBmcm9tICcuL3NyYy9kZWZhdWx0cy9pbml0aWFsaXplcic7XG5leHBvcnQgeyBJbml0aWFsaXplckNsYWltUmVmIH0gZnJvbSAnLi9zcmMvaW5pdGlhbGl6ZXJzL2NsYWltUmVmJztcbmV4cG9ydCB7IEdpdGh1YlJlcG9zaXRvcnlPdmVycmlkZXIgfSBmcm9tICcuL3NyYy9vdmVycmlkZXJzL2dpdGh1YlJlcG9zaXRvcnlPdmVycmlkZSc7XG5leHBvcnQgeyBJbml0aWFsaXplclBhdGNoZXMgYXMgSW5pdGlhbGl6ZXIgfSBmcm9tICcuL3NyYy9pbml0aWFsaXplcnMvYmFzZSc7XG5pbXBvcnQgeyBydW5Db21wYXJlciB9IGZyb20gJy4vc3JjL2NvbXBhcmVyJztcbmltcG9ydCB7XG4gIEFsbG93ZWRQcm92aWRlcnMsXG4gIGNvbmZpZ3VyZVByb3ZpZGVyLFxuICBzZXRQYXRoLFxuICBzZXRSZW5hbWVzRW5hYmxlZCxcbiAgc2V0RXhjbHVkZWRQYXRocyxcbn0gZnJvbSAnLi9zcmMvY29uZmlnJztcbmltcG9ydCB7IElOSVRJQUxJWkVSUywgSU5JVElBTElaRVJTX0JZX0ZJTEVfTkFNRSB9IGZyb20gJy4vc3JjL2luaXRpYWxpemVycyc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICcuL3NyYy9yZW5kZXJlci9yZW5kZXJlcic7XG5pbXBvcnQgeyBBcHAsIFlhbWxPdXRwdXRUeXBlIH0gZnJvbSAnY2RrOHMnO1xuZXhwb3J0IHsgQWxsb3dlZFByb3ZpZGVycywgY29uZmlndXJlUHJvdmlkZXIgfSBmcm9tICcuL3NyYy9jb25maWcnO1xuaW1wb3J0IHsgaXNDYXRhbG9nRW50aXR5IH0gZnJvbSAnLi9zcmMvdmFsaWRhdGlvbnMvcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBOT1JNQUxJWkVSUywgbm9ybWFsaXplTW9kdWxlQ29udGVudCB9IGZyb20gJy4vc3JjL25vcm1hbGl6ZXJzJztcbmltcG9ydCB7IGxvYWRDUnMgfSBmcm9tICcuL3NyYy9sb2FkZXIvbG9hZGVyJztcbmltcG9ydCB7IHJlbmRlclRmV29ya3NwYWNlIH0gZnJvbSAnLi9zcmMvY2xhaW1zL3Rmd29ya3NwYWNlcy9yZW5kZXJlcic7XG5pbXBvcnQgeyB2YWxpZGF0ZWs4c0xpbWl0cyB9IGZyb20gJy4vc3JjL25vcm1hbGl6ZXJzL3Rmd29ya3NwYWNlJztcbmltcG9ydCB7IHJlbmRlckZyb21JbXBvcnRzIH0gZnJvbSAnLi9zcmMvcmVuZGVyZXIvaW1wb3J0LXJlbmRlcmVyJztcbmltcG9ydCB7IGFkZExhc3RTdGF0ZUFuZExhc3RDbGFpbUFubm90YXRpb25zIH0gZnJvbSAnLi9zcmMvcmVuZGVyZXIvbGFzdC1zdGF0ZS1wcic7XG5leHBvcnQgeyBSZW5kZXJDbGFpbXMgfSBmcm9tICcuL3NyYy9yZW5kZXJlci90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcmVuZGVyRnJvbUltcG9ydHMsXG5cbiAgcmVuZGVyLFxuXG4gIHNldFBhdGgsXG5cbiAgSU5JVElBTElaRVJTLFxuXG4gIElOSVRJQUxJWkVSU19CWV9GSUxFX05BTUUsXG5cbiAgTk9STUFMSVpFUlMsXG5cbiAgQWxsb3dlZFByb3ZpZGVycyxcblxuICBydW5Db21wYXJlcixcblxuICBpc0NhdGFsb2dFbnRpdHksXG5cbiAgbG9hZENScyxcblxuICByZW5kZXJUZldvcmtzcGFjZSxcblxuICBub3JtYWxpemVNb2R1bGVDb250ZW50LFxuXG4gIHZhbGlkYXRlazhzTGltaXRzLFxuXG4gIGFkZExhc3RTdGF0ZUFuZExhc3RDbGFpbUFubm90YXRpb25zLFxufTtcblxuLypcbiAqIE1haW4gZnVuY3Rpb24gb2YgdGhlIG1vZHVsZS4gUmVuZGVycyBjbGFpbSBmaWxlcyBpbnRvIGN1c3RvbSByZXNvdXJjZXMsXG4gKiBhbmQgdXBsb2FkcyB0aGVtIHRvIGEgS3ViZXJuZXRlcyBjbHVzdGVyLlxuICpcbiAqIElucHV0OlxuICogLSBnbG9iYWxzUGF0aDogc3RyaW5nLCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBnbG9iYWwgZmlsZXMgZm9sZGVyXG4gKiAtIGluaXRpYWxpemVyc1BhdGg6IHN0cmluZywgYWJzb2x1dGUgcGF0aCB0byB0aGUgaW5pdGlhbGl6ZXJzIGZpbGVzIGZvbGRlclxuICogLSBjbGFpbXNQYXRoOiBzdHJpbmcsIGFic29sdXRlIHBhdGggdG8gdGhlIGNsYWltcyBmaWxlcyBmb2xkZXJcbiAqIC0gY3JzUGF0aDogc3RyaW5nLCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBjcnMgZmlsZXMgZm9sZGVyXG4gKiAtIG91dHB1dERpcjogc3RyaW5nLCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvdXRwdXQgZm9sZGVyIHdoZXJlIHRoZSByZW5kZXJlZFxuICogICBjdXN0b20gcmVzb3VyY2UgZmlsZXMgd2lsbCBiZSBwdXRcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm90aGluZy5cbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5SZW5kZXJlcihcbiAgZ2xvYmFsc1BhdGg6IHN0cmluZyxcbiAgaW5pdGlhbGl6ZXJzUGF0aDogc3RyaW5nLFxuICBjbGFpbXNQYXRoOiBzdHJpbmcsXG4gIGNyc1BhdGg6IHN0cmluZyxcbiAgY2xhaW1zRGVmYXVsdHM6IHN0cmluZyxcbiAgb3V0cHV0Q2F0YWxvZ0Rpcjogc3RyaW5nLFxuICBvdXRwdXRDckRpcjogc3RyaW5nLFxuICByZW5hbWVzRW5hYmxlZDogYm9vbGVhbixcbiAgcHJvdmlkZXI6IEFsbG93ZWRQcm92aWRlcnMsXG4gIGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdID0gW10sXG4gIHZhbGlkYXRlUmVmZXJlbnRpYWxJbnRlZ3JpdHk6IHN0cmluZyxcbikge1xuICBjb25maWd1cmVQcm92aWRlcihwcm92aWRlcik7XG4gIHNldFBhdGgoJ2luaXRpYWxpemVycycsIGluaXRpYWxpemVyc1BhdGgpO1xuICBzZXRQYXRoKCdjcnMnLCBjcnNQYXRoKTtcbiAgc2V0UGF0aCgnZ2xvYmFscycsIGdsb2JhbHNQYXRoKTtcbiAgc2V0UGF0aCgnY2xhaW1zJywgY2xhaW1zUGF0aCk7XG4gIHNldFBhdGgoJ2NsYWltc0RlZmF1bHRzJywgY2xhaW1zRGVmYXVsdHMpO1xuICBzZXRSZW5hbWVzRW5hYmxlZChyZW5hbWVzRW5hYmxlZCk7XG4gIHNldEV4Y2x1ZGVkUGF0aHMoZXhjbHVkZWRQYXRocyk7XG5cbiAgY29uc3QgY2F0YWxvZ0FwcCA9IG5ldyBBcHAoe1xuICAgIG91dGRpcjogb3V0cHV0Q2F0YWxvZ0RpcixcblxuICAgIG91dHB1dEZpbGVFeHRlbnNpb246ICcueWFtbCcsXG5cbiAgICB5YW1sT3V0cHV0VHlwZTogWWFtbE91dHB1dFR5cGUuRklMRV9QRVJfUkVTT1VSQ0UsXG4gIH0pO1xuXG4gIGNvbnN0IGZpcmVzdGFydHJBcHAgPSBuZXcgQXBwKHtcbiAgICBvdXRkaXI6IG91dHB1dENyRGlyLFxuXG4gICAgb3V0cHV0RmlsZUV4dGVuc2lvbjogJy55YW1sJyxcblxuICAgIHlhbWxPdXRwdXRUeXBlOiBZYW1sT3V0cHV0VHlwZS5GSUxFX1BFUl9SRVNPVVJDRSxcbiAgfSk7XG5cbiAgYXdhaXQgcmVuZGVyKFxuICAgIGNhdGFsb2dBcHAsXG5cbiAgICBmaXJlc3RhcnRyQXBwLFxuXG4gICAgdmFsaWRhdGVSZWZlcmVudGlhbEludGVncml0eSA9PT0gJ2VuYWJsZWQnID8gdHJ1ZSA6IGZhbHNlLFxuICApO1xuXG4gIGNhdGFsb2dBcHAuc3ludGgoKTtcblxuICBmaXJlc3RhcnRyQXBwLnN5bnRoKCk7XG59XG4iXX0=
|
|
230170
230186
|
|
|
230171
230187
|
/***/ }),
|
|
230172
230188
|
|
|
@@ -230557,7 +230573,7 @@ exports.CatalogGroupChart = CatalogGroupChart;
|
|
|
230557
230573
|
"use strict";
|
|
230558
230574
|
|
|
230559
230575
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
230560
|
-
exports.CatalogArgoDeployChart = exports.CatalogTFWorkspaceChart = exports.CatalogComponentChart = exports.CatalogUserChart = exports.CatalogSystemChart = exports.CatalogGroupChart = exports.CatalogDomainChart = void 0;
|
|
230576
|
+
exports.CatalogSecretsChart = exports.CatalogArgoDeployChart = exports.CatalogTFWorkspaceChart = exports.CatalogComponentChart = exports.CatalogUserChart = exports.CatalogSystemChart = exports.CatalogGroupChart = exports.CatalogDomainChart = void 0;
|
|
230561
230577
|
var domainChart_1 = __nccwpck_require__(61555);
|
|
230562
230578
|
Object.defineProperty(exports, "CatalogDomainChart", ({ enumerable: true, get: function () { return domainChart_1.CatalogDomainChart; } }));
|
|
230563
230579
|
var groupChart_1 = __nccwpck_require__(97803);
|
|
@@ -230572,7 +230588,57 @@ var tfWorkspaceChart_1 = __nccwpck_require__(30000);
|
|
|
230572
230588
|
Object.defineProperty(exports, "CatalogTFWorkspaceChart", ({ enumerable: true, get: function () { return tfWorkspaceChart_1.CatalogTFWorkspaceChart; } }));
|
|
230573
230589
|
var argodeployChart_1 = __nccwpck_require__(92925);
|
|
230574
230590
|
Object.defineProperty(exports, "CatalogArgoDeployChart", ({ enumerable: true, get: function () { return argodeployChart_1.CatalogArgoDeployChart; } }));
|
|
230575
|
-
|
|
230591
|
+
var secretsChart_1 = __nccwpck_require__(39021);
|
|
230592
|
+
Object.defineProperty(exports, "CatalogSecretsChart", ({ enumerable: true, get: function () { return secretsChart_1.CatalogSecretsChart; } }));
|
|
230593
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnRzL2NhdGFsb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW1EO0FBQTFDLGlIQUFBLGtCQUFrQixPQUFBO0FBQzNCLDJDQUFpRDtBQUF4QywrR0FBQSxpQkFBaUIsT0FBQTtBQUMxQiw2Q0FBbUQ7QUFBMUMsaUhBQUEsa0JBQWtCLE9BQUE7QUFDM0IseUNBQStDO0FBQXRDLDZHQUFBLGdCQUFnQixPQUFBO0FBQ3pCLG1EQUF5RDtBQUFoRCx1SEFBQSxxQkFBcUIsT0FBQTtBQUM5Qix1REFBNkQ7QUFBcEQsMkhBQUEsdUJBQXVCLE9BQUE7QUFDaEMscURBQTJEO0FBQWxELHlIQUFBLHNCQUFzQixPQUFBO0FBQy9CLCtDQUFxRDtBQUE1QyxtSEFBQSxtQkFBbUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENhdGFsb2dEb21haW5DaGFydCB9IGZyb20gJy4vZG9tYWluQ2hhcnQnO1xuZXhwb3J0IHsgQ2F0YWxvZ0dyb3VwQ2hhcnQgfSBmcm9tICcuL2dyb3VwQ2hhcnQnO1xuZXhwb3J0IHsgQ2F0YWxvZ1N5c3RlbUNoYXJ0IH0gZnJvbSAnLi9zeXN0ZW1DaGFydCc7XG5leHBvcnQgeyBDYXRhbG9nVXNlckNoYXJ0IH0gZnJvbSAnLi91c2VyQ2hhcnQnO1xuZXhwb3J0IHsgQ2F0YWxvZ0NvbXBvbmVudENoYXJ0IH0gZnJvbSAnLi9jb21wb25lbnRDaGFydCc7XG5leHBvcnQgeyBDYXRhbG9nVEZXb3Jrc3BhY2VDaGFydCB9IGZyb20gJy4vdGZXb3Jrc3BhY2VDaGFydCc7XG5leHBvcnQgeyBDYXRhbG9nQXJnb0RlcGxveUNoYXJ0IH0gZnJvbSAnLi9hcmdvZGVwbG95Q2hhcnQnO1xuZXhwb3J0IHsgQ2F0YWxvZ1NlY3JldHNDaGFydCB9IGZyb20gJy4vc2VjcmV0c0NoYXJ0JztcbiJdfQ==
|
|
230594
|
+
|
|
230595
|
+
/***/ }),
|
|
230596
|
+
|
|
230597
|
+
/***/ 39021:
|
|
230598
|
+
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
|
|
230599
|
+
|
|
230600
|
+
"use strict";
|
|
230601
|
+
|
|
230602
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
230603
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
230604
|
+
};
|
|
230605
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
230606
|
+
exports.CatalogSecretsChart = void 0;
|
|
230607
|
+
const base_1 = __nccwpck_require__(80323);
|
|
230608
|
+
const cdk8s_1 = __nccwpck_require__(77228);
|
|
230609
|
+
const catalog_common_1 = __importDefault(__nccwpck_require__(74100));
|
|
230610
|
+
class CatalogSecretsChart extends base_1.BaseCatalogChart {
|
|
230611
|
+
template() {
|
|
230612
|
+
const claim = this.get('claim');
|
|
230613
|
+
return {
|
|
230614
|
+
apiVersion: 'backstage.io/v1alpha1',
|
|
230615
|
+
kind: 'Resource',
|
|
230616
|
+
metadata: {
|
|
230617
|
+
name: catalog_common_1.default.generic.normalizeName(`secrets-${claim.name}`),
|
|
230618
|
+
title: claim.name,
|
|
230619
|
+
annotations: {},
|
|
230620
|
+
},
|
|
230621
|
+
spec: {
|
|
230622
|
+
type: 'secret-set',
|
|
230623
|
+
owner: claim.owner,
|
|
230624
|
+
system: claim.system,
|
|
230625
|
+
secrets: claim.providers,
|
|
230626
|
+
dependsOn: [],
|
|
230627
|
+
},
|
|
230628
|
+
};
|
|
230629
|
+
}
|
|
230630
|
+
instanceApiObject(template) {
|
|
230631
|
+
return new cdk8s_1.ApiObject(this, `${template.kind}-${template.metadata.name}`, template);
|
|
230632
|
+
}
|
|
230633
|
+
gvk() {
|
|
230634
|
+
return {
|
|
230635
|
+
kind: 'Resource',
|
|
230636
|
+
apiVersion: 'v1alpha1',
|
|
230637
|
+
};
|
|
230638
|
+
}
|
|
230639
|
+
}
|
|
230640
|
+
exports.CatalogSecretsChart = CatalogSecretsChart;
|
|
230641
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0c0NoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9jYXRhbG9nL3NlY3JldHNDaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpQ0FBMEM7QUFDMUMsaUNBQW9EO0FBQ3BELG9FQUFvQztBQUVwQyxNQUFhLG1CQUFvQixTQUFRLHVCQUFnQjtJQUN2RCxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyQyxPQUFPO1lBQ0wsVUFBVSxFQUFFLHVCQUF1QjtZQUVuQyxJQUFJLEVBQUUsVUFBVTtZQUVoQixRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLHdCQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFM0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUVqQixXQUFXLEVBQUUsRUFBRTthQUNoQjtZQUVELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsWUFBWTtnQkFFbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUVsQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBRXBCLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUztnQkFFeEIsU0FBUyxFQUFFLEVBQUU7YUFDZDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBYTtRQUM3QixPQUFPLElBQUksaUJBQVMsQ0FDbEIsSUFBSSxFQUVKLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUU1QyxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTztZQUNMLElBQUksRUFBRSxVQUFVO1lBRWhCLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFoREQsa0RBZ0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNhdGFsb2dDaGFydCB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBBcGlPYmplY3QsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgY29tbW9uIGZyb20gJ2NhdGFsb2dfY29tbW9uJztcblxuZXhwb3J0IGNsYXNzIENhdGFsb2dTZWNyZXRzQ2hhcnQgZXh0ZW5kcyBCYXNlQ2F0YWxvZ0NoYXJ0IHtcbiAgdGVtcGxhdGUoKSB7XG4gICAgY29uc3QgY2xhaW06IGFueSA9IHRoaXMuZ2V0KCdjbGFpbScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFwaVZlcnNpb246ICdiYWNrc3RhZ2UuaW8vdjFhbHBoYTEnLFxuXG4gICAgICBraW5kOiAnUmVzb3VyY2UnLFxuXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBuYW1lOiBjb21tb24uZ2VuZXJpYy5ub3JtYWxpemVOYW1lKGBzZWNyZXRzLSR7Y2xhaW0ubmFtZX1gKSxcblxuICAgICAgICB0aXRsZTogY2xhaW0ubmFtZSxcblxuICAgICAgICBhbm5vdGF0aW9uczoge30sXG4gICAgICB9LFxuXG4gICAgICBzcGVjOiB7XG4gICAgICAgIHR5cGU6ICdzZWNyZXQtc2V0JyxcblxuICAgICAgICBvd25lcjogY2xhaW0ub3duZXIsXG5cbiAgICAgICAgc3lzdGVtOiBjbGFpbS5zeXN0ZW0sXG5cbiAgICAgICAgc2VjcmV0czogY2xhaW0ucHJvdmlkZXJzLFxuXG4gICAgICAgIGRlcGVuZHNPbjogW10sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpbnN0YW5jZUFwaU9iamVjdCh0ZW1wbGF0ZTogYW55KTogQXBpT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IEFwaU9iamVjdChcbiAgICAgIHRoaXMsXG5cbiAgICAgIGAke3RlbXBsYXRlLmtpbmR9LSR7dGVtcGxhdGUubWV0YWRhdGEubmFtZX1gLFxuXG4gICAgICB0ZW1wbGF0ZSxcbiAgICApO1xuICB9XG5cbiAgZ3ZrKCk6IEdyb3VwVmVyc2lvbktpbmQge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiAnUmVzb3VyY2UnLFxuXG4gICAgICBhcGlWZXJzaW9uOiAndjFhbHBoYTEnLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
230576
230642
|
|
|
230577
230643
|
/***/ }),
|
|
230578
230644
|
|
|
@@ -230663,7 +230729,7 @@ class CatalogTFWorkspaceChart extends base_1.BaseCatalogChart {
|
|
|
230663
230729
|
annotations: {},
|
|
230664
230730
|
},
|
|
230665
230731
|
spec: {
|
|
230666
|
-
type: claim.
|
|
230732
|
+
type: claim.resourceType || 'tfresource',
|
|
230667
230733
|
owner: claim.owner,
|
|
230668
230734
|
system: claim.system,
|
|
230669
230735
|
values: claim.providers.terraform,
|
|
@@ -230682,7 +230748,7 @@ class CatalogTFWorkspaceChart extends base_1.BaseCatalogChart {
|
|
|
230682
230748
|
}
|
|
230683
230749
|
}
|
|
230684
230750
|
exports.CatalogTFWorkspaceChart = CatalogTFWorkspaceChart;
|
|
230685
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
230751
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZXb3Jrc3BhY2VDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydHMvY2F0YWxvZy90ZldvcmtzcGFjZUNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGlDQUEwQztBQUMxQyxpQ0FBb0Q7QUFDcEQsb0VBQW9DO0FBRXBDLFNBQVMsMEJBQTBCLENBQUMsTUFBVztJQUM3QyxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsU0FBUyxNQUFNLENBQUMsQ0FBTTtRQUNwQixLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRTtZQUNuQixRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixLQUFLLFFBQVE7b0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUVmLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FDakMsd0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUN2QyxFQUFFO3dCQUNELE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO3dCQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksU0FBUyxFQUFFLENBQUMsQ0FBQztxQkFDdkM7b0JBRUQsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWYsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBYSx1QkFBd0IsU0FBUSx1QkFBZ0I7SUFDM0QsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdDLE1BQU0sWUFBWSxHQUFHLDBCQUEwQixDQUM3QyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQ2pDLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUFhLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRWhFLE9BQU87WUFDTCxVQUFVLEVBQUUsdUJBQXVCO1lBRW5DLElBQUksRUFBRSxVQUFVO1lBRWhCLFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsd0JBQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBRTlDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFFakIsV0FBVyxFQUFFLEVBQUU7YUFDaEI7WUFFRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksWUFBWTtnQkFFeEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUVsQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBRXBCLE1BQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVM7Z0JBRWpDLFNBQVMsRUFBRSxrQkFBa0I7YUFDOUI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWE7UUFDN0IsT0FBTyxJQUFJLGlCQUFTLENBQ2xCLElBQUksRUFFSixHQUFHLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFFNUMsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRztRQUNELE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUVoQixVQUFVLEVBQUUsVUFBVTtTQUN2QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdERELDBEQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRGV29ya3NwYWNlIH0gZnJvbSAnLi4vLi4vY2xhaW1zL3Rmd29ya3NwYWNlcy90ZndvcmtzcGFjZSc7XG5pbXBvcnQgeyBCYXNlQ2F0YWxvZ0NoYXJ0IH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEFwaU9iamVjdCwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCBjb21tb24gZnJvbSAnY2F0YWxvZ19jb21tb24nO1xuXG5mdW5jdGlvbiBmaW5kVGZXb3JzcGFjZURlcGVuZGVuY2llcyh2YWx1ZXM6IGFueSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgbWF0Y2hlczogc3RyaW5nW10gPSBbXTtcblxuICBmdW5jdGlvbiBoZWxwZXIobzogYW55KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbykge1xuICAgICAgc3dpdGNoICh0eXBlb2Ygb1trZXldKSB7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaGVscGVyKG9ba2V5XSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIG9ba2V5XS5tYXRjaEFsbChcbiAgICAgICAgICAgIGNvbW1vbi50eXBlcy5yZWdleC5URldvcmtzcGFjZVJlZlJlZ2V4LFxuICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIGNvbnN0IFtfLCBjbGFpbU5hbWVdID0gbWF0Y2g7XG4gICAgICAgICAgICBtYXRjaGVzLnB1c2goYHJlc291cmNlOiR7Y2xhaW1OYW1lfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhlbHBlcih2YWx1ZXMpO1xuXG4gIHJldHVybiBbLi4ubmV3IFNldChtYXRjaGVzKV07XG59XG5cbmV4cG9ydCBjbGFzcyBDYXRhbG9nVEZXb3Jrc3BhY2VDaGFydCBleHRlbmRzIEJhc2VDYXRhbG9nQ2hhcnQge1xuICB0ZW1wbGF0ZSgpIHtcbiAgICBjb25zdCBjbGFpbTogVEZXb3Jrc3BhY2UgPSB0aGlzLmdldCgnY2xhaW0nKTtcblxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IGZpbmRUZldvcnNwYWNlRGVwZW5kZW5jaWVzKFxuICAgICAgY2xhaW0ucHJvdmlkZXJzLnRlcnJhZm9ybS52YWx1ZXMsXG4gICAgKTtcblxuICAgIGNvbnN0IHVuaXF1ZURlcGVuZGVuY2llczogc3RyaW5nW10gPSBbLi4ubmV3IFNldChkZXBlbmRlbmNpZXMpXTtcblxuICAgIHJldHVybiB7XG4gICAgICBhcGlWZXJzaW9uOiAnYmFja3N0YWdlLmlvL3YxYWxwaGExJyxcblxuICAgICAga2luZDogJ1Jlc291cmNlJyxcblxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgbmFtZTogY29tbW9uLmdlbmVyaWMubm9ybWFsaXplTmFtZShjbGFpbS5uYW1lKSxcblxuICAgICAgICB0aXRsZTogY2xhaW0ubmFtZSxcblxuICAgICAgICBhbm5vdGF0aW9uczoge30sXG4gICAgICB9LFxuXG4gICAgICBzcGVjOiB7XG4gICAgICAgIHR5cGU6IGNsYWltLnJlc291cmNlVHlwZSB8fCAndGZyZXNvdXJjZScsXG5cbiAgICAgICAgb3duZXI6IGNsYWltLm93bmVyLFxuXG4gICAgICAgIHN5c3RlbTogY2xhaW0uc3lzdGVtLFxuXG4gICAgICAgIHZhbHVlczogY2xhaW0ucHJvdmlkZXJzLnRlcnJhZm9ybSxcblxuICAgICAgICBkZXBlbmRzT246IHVuaXF1ZURlcGVuZGVuY2llcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGluc3RhbmNlQXBpT2JqZWN0KHRlbXBsYXRlOiBhbnkpOiBBcGlPYmplY3Qge1xuICAgIHJldHVybiBuZXcgQXBpT2JqZWN0KFxuICAgICAgdGhpcyxcblxuICAgICAgYCR7dGVtcGxhdGUua2luZH0tJHt0ZW1wbGF0ZS5tZXRhZGF0YS5uYW1lfWAsXG5cbiAgICAgIHRlbXBsYXRlLFxuICAgICk7XG4gIH1cblxuICBndmsoKTogR3JvdXBWZXJzaW9uS2luZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6ICdSZXNvdXJjZScsXG5cbiAgICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
230686
230752
|
|
|
230687
230753
|
/***/ }),
|
|
230688
230754
|
|
|
@@ -230980,7 +231046,7 @@ const catalog_common_1 = __importDefault(__nccwpck_require__(74100));
|
|
|
230980
231046
|
const base_1 = __nccwpck_require__(39247);
|
|
230981
231047
|
class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
230982
231048
|
template() {
|
|
230983
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
231049
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
230984
231050
|
const claim = this.get('claim');
|
|
230985
231051
|
const firestartrId = this.get('firestartrId');
|
|
230986
231052
|
const actions = {
|
|
@@ -230993,7 +231059,7 @@ class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
|
230993
231059
|
metadata: {
|
|
230994
231060
|
name: claim.providers.github.name,
|
|
230995
231061
|
annotations: {
|
|
230996
|
-
[catalog_common_1.default.generic.getFirestartrAnnotation('branchStrategy')]: claim.providers.github.branchStrategy,
|
|
231062
|
+
[catalog_common_1.default.generic.getFirestartrAnnotation('branchStrategy')]: claim.providers.github.branchStrategy.name,
|
|
230997
231063
|
},
|
|
230998
231064
|
},
|
|
230999
231065
|
spec: {
|
|
@@ -231014,7 +231080,7 @@ class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
|
231014
231080
|
allowUpdateBranch: claim.providers.github.allowUpdateBranch,
|
|
231015
231081
|
hasIssues: claim.providers.github.hasIssues,
|
|
231016
231082
|
visibility: claim.providers.github.visibility,
|
|
231017
|
-
defaultBranch: claim.providers.github.defaultBranch,
|
|
231083
|
+
defaultBranch: (_j = (_h = claim.providers.github) === null || _h === void 0 ? void 0 : _h.branchStrategy) === null || _j === void 0 ? void 0 : _j.defaultBranch,
|
|
231018
231084
|
codeowners: (0, repositoryClaimUtils_1.createCodeOwnersData)(claim),
|
|
231019
231085
|
},
|
|
231020
231086
|
actions,
|
|
@@ -231072,6 +231138,7 @@ class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
|
231072
231138
|
*/
|
|
231073
231139
|
createPermissions(claim) {
|
|
231074
231140
|
const permissions = [];
|
|
231141
|
+
const orgPermissions = claim.providers.github.orgPermissions;
|
|
231075
231142
|
if (claim.owner)
|
|
231076
231143
|
permissions.push((0, repositoryClaimUtils_1.createPermissionFor)(claim.owner, 'admin'));
|
|
231077
231144
|
if (claim.platformOwner)
|
|
@@ -231079,11 +231146,13 @@ class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
|
231079
231146
|
if (claim.maintainedBy)
|
|
231080
231147
|
for (const maintainer of claim.maintainedBy)
|
|
231081
231148
|
permissions.push((0, repositoryClaimUtils_1.createPermissionFor)(maintainer, 'maintain'));
|
|
231082
|
-
|
|
231083
|
-
|
|
231084
|
-
|
|
231085
|
-
|
|
231086
|
-
|
|
231149
|
+
switch (orgPermissions) {
|
|
231150
|
+
case 'view':
|
|
231151
|
+
permissions.push((0, repositoryClaimUtils_1.createPermissionFor)(`group:${claim.providers.github.org}-all`, 'pull'));
|
|
231152
|
+
break;
|
|
231153
|
+
case 'contribute':
|
|
231154
|
+
permissions.push((0, repositoryClaimUtils_1.createPermissionFor)(`group:${claim.providers.github.org}-all`, 'maintain'));
|
|
231155
|
+
break;
|
|
231087
231156
|
}
|
|
231088
231157
|
return permissions;
|
|
231089
231158
|
}
|
|
@@ -231092,7 +231161,7 @@ class GithubRepositoryChart extends base_1.BaseGithubChart {
|
|
|
231092
231161
|
}
|
|
231093
231162
|
}
|
|
231094
231163
|
exports.GithubRepositoryChart = GithubRepositoryChart;
|
|
231095
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeUNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9naXRodWIvcmVwb3NpdG9yeUNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHlEQUFzRDtBQUN0RCwyRUFLMEM7QUFDMUMsb0VBR3lDO0FBSXpDLG9FQUFvQztBQUNwQyxpQ0FBeUM7QUFFekMsTUFBYSxxQkFBc0IsU0FBUSxzQkFBZTtJQUN4RCxRQUFROztRQUNOLE1BQU0sS0FBSyxHQUEyQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbkQsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUU7Z0JBQ0osVUFBVSxFQUFFLE1BQUEsTUFBQSxNQUFBLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSwwQ0FBRSxPQUFPLDBDQUFFLElBQUksMENBQUUsVUFBVTtnQkFDN0QsZ0JBQWdCLEVBQ2QsTUFBQSxNQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sMENBQUUsT0FBTywwQ0FBRSxJQUFJLDBDQUFFLGdCQUFnQixtQ0FBSSxFQUFFO2FBQ2hFO1NBQ0YsQ0FBQztRQUVGLElBQUksVUFBVSxHQUEyRDtZQUN2RSxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ2pDLFdBQVcsRUFBRTtvQkFDWCxDQUFDLHdCQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDeEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYztpQkFDeEM7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixHQUFHLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FB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QSwwQ0FBbUIsRUFBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxLQUFLLENBQUMsWUFBWTtZQUNwQixLQUFLLE1BQU0sVUFBVSxJQUFJLEtBQUssQ0FBQyxZQUFZO2dCQUN6QyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUEsMENBQW1CLEVBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFbEUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQyxXQUFXLENBQUMsSUFBSSxDQUNkLElBQUEsMENBQW1CLEVBQ2pCLFNBQVMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQ3pDLFVBQVUsQ0FDWCxDQUNGLENBQUM7U0FDSDthQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQy9DLFdBQVcsQ0FBQyxJQUFJLENBQ2QsSUFBQSwwQ0FBbUIsRUFBQyxTQUFTLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUN2RSxDQUFDO1NBQ0g7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQU9ULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBbkxELHNEQW1MQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaU9iamVjdCwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IEZlYXR1cmVSZXBvQ2hhcnQgfSBmcm9tICcuL2ZlYXR1cmVSZXBvQ2hhcnQnO1xuaW1wb3J0IHtcbiAgUGVybWlzc2lvbixcbiAgQ29sbGFib3JhdG9yUGVybWlzc2lvbixcbiAgY3JlYXRlQ29kZU93bmVyc0RhdGEsXG4gIGNyZWF0ZVBlcm1pc3Npb25Gb3IsXG59IGZyb20gJy4uLy4uL3V0aWxzL3JlcG9zaXRvcnlDbGFpbVV0aWxzJztcbmltcG9ydCB7XG4gIEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5LFxuICBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzLFxufSBmcm9tICcuLi8uLi8uLi9pbXBvcnRzL2ZpcmVzdGFydHIuZGV2JztcbmltcG9ydCB7IElHaXRodWJSZXBvc2l0b3J5Q2xhaW0gfSBmcm9tICcuLi8uLi9jbGFpbXMvZ2l0aHViL3JlcG9zaXRvcnknO1xuaW1wb3J0IHsgSUdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlQ2xhaW0gfSBmcm9tICcuLi8uLi9jbGFpbXMvZ2l0aHViL3JlcG9zaXRvcnlGZWF0dXJlJztcbmltcG9ydCB7IElVbml0aWFsaXplZFN0YXRlS2V5IH0gZnJvbSAnLi4vLi4vY2xhaW1zL2Jhc2UnO1xuaW1wb3J0IGNvbW1vbiBmcm9tICdjYXRhbG9nX2NvbW1vbic7XG5pbXBvcnQgeyBCYXNlR2l0aHViQ2hhcnQgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY2xhc3MgR2l0aHViUmVwb3NpdG9yeUNoYXJ0IGV4dGVuZHMgQmFzZUdpdGh1YkNoYXJ0IHtcbiAgdGVtcGxhdGUoKTogRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyB8IElVbml0aWFsaXplZFN0YXRlS2V5IHtcbiAgICBjb25zdCBjbGFpbTogSUdpdGh1YlJlcG9zaXRvcnlDbGFpbSA9IHRoaXMuZ2V0KCdjbGFpbScpO1xuICAgIGNvbnN0IGZpcmVzdGFydHJJZDogYW55ID0gdGhpcy5nZXQoJ2ZpcmVzdGFydHJJZCcpO1xuXG4gICAgY29uc3QgYWN0aW9ucyA9IHtcbiAgICAgIG9pZGM6IHtcbiAgICAgICAgdXNlRGVmYXVsdDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yj8uYWN0aW9ucz8ub2lkYz8udXNlRGVmYXVsdCxcbiAgICAgICAgaW5jbHVkZUNsYWltS2V5czpcbiAgICAgICAgICBjbGFpbS5wcm92aWRlcnMuZ2l0aHViPy5hY3Rpb25zPy5vaWRjPy5pbmNsdWRlQ2xhaW1LZXlzID8/IFtdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgbGV0IGNyVGVtcGxhdGU6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgfCBJVW5pdGlhbGl6ZWRTdGF0ZUtleSA9IHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG5hbWU6IGNsYWltLnByb3ZpZGVycy5naXRodWIubmFtZSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICBbY29tbW9uLmdlbmVyaWMuZ2V0RmlyZXN0YXJ0ckFubm90YXRpb24oJ2JyYW5jaFN0cmF0ZWd5JyldOlxuICAgICAgICAgICAgY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5icmFuY2hTdHJhdGVneSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzcGVjOiB7XG4gICAgICAgIG9yZzogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmcsXG4gICAgICAgIGZpcmVzdGFydHI6IHtcbiAgICAgICAgICB0ZlN0YXRlS2V5OiBmaXJlc3RhcnRySWQgfHwgJycsXG4gICAgICAgICAgdGVjaG5vbG9neTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi50ZWNobm9sb2d5LFxuICAgICAgICB9LFxuICAgICAgICByZXBvOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGNsYWltLnByb3ZpZGVycy5naXRodWIuZGVzY3JpcHRpb24sXG4gICAgICAgICAgYWxsb3dNZXJnZUNvbW1pdDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hbGxvd01lcmdlQ29tbWl0LFxuICAgICAgICAgIGFsbG93U3F1YXNoTWVyZ2U6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dTcXVhc2hNZXJnZSxcbiAgICAgICAgICBhbGxvd1JlYmFzZU1lcmdlOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmFsbG93UmViYXNlTWVyZ2UsXG4gICAgICAgICAgYWxsb3dBdXRvTWVyZ2U6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dBdXRvTWVyZ2UsXG4gICAgICAgICAgZGVsZXRlQnJhbmNoT25NZXJnZTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5kZWxldGVCcmFuY2hPbk1lcmdlLFxuICAgICAgICAgIGF1dG9Jbml0OiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmF1dG9Jbml0LFxuICAgICAgICAgIGFyY2hpdmVPbkRlc3Ryb3k6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYXJjaGl2ZU9uRGVzdHJveSxcbiAgICAgICAgICBhbGxvd1VwZGF0ZUJyYW5jaDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hbGxvd1VwZGF0ZUJyYW5jaCxcbiAgICAgICAgICBoYXNJc3N1ZXM6IGNsYWltLnByb3ZpZGVycy5naXRodWIuaGFzSXNzdWVzLFxuICAgICAgICAgIHZpc2liaWxpdHk6IGNsYWltLnByb3ZpZGVycy5naXRodWIudmlzaWJpbGl0eSxcbiAgICAgICAgICBkZWZhdWx0QnJhbmNoOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmRlZmF1bHRCcmFuY2gsXG4gICAgICAgICAgY29kZW93bmVyczogY3JlYXRlQ29kZU93bmVyc0RhdGEoY2xhaW0pLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpb25zLFxuICAgICAgICBwZXJtaXNzaW9uczogdGhpcy5jcmVhdGVQZXJtaXNzaW9ucyhjbGFpbSksXG4gICAgICAgIHBhZ2VzOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLnBhZ2VzLFxuICAgICAgICBicmFuY2hQcm90ZWN0aW9uczogW10sXG4gICAgICAgIHdyaXRlQ29ubmVjdGlvblNlY3JldFRvUmVmOiB7XG4gICAgICAgICAgbmFtZTogYGZpcmVzdGFydHJnaXRodWJyZXBvc2l0b3J5LSR7Y2xhaW0ubmFtZX0tb3V0cHV0c2AudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7IGtleTogJ2lkJyB9LFxuICAgICAgICAgICAgeyBrZXk6ICdub2RlSWQnIH0sXG4gICAgICAgICAgICB7IGtleTogJ2Z1bGxOYW1lJyB9LFxuICAgICAgICAgICAgeyBrZXk6ICdodG1sVXJsJyB9LFxuICAgICAgICAgICAgeyBrZXk6ICdzc2hDbG9uZVVybCcgfSxcbiAgICAgICAgICAgIHsga2V5OiAncHJpbWFyeUxhbmd1YWdlJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBXZSBkbyB0aGlzIHRvIHJlbW92ZSB1bmRlZmluZWQgdmFyaWFibGVzIGZyb20gdGhlIHRlbXBsYXRlXG4gICAgY3JUZW1wbGF0ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3JUZW1wbGF0ZSwgbnVsbCwgMikpO1xuXG4gICAgcmV0dXJuIGNyVGVtcGxhdGU7XG4gIH1cblxuICBhc3luYyByZW5kZXIoKSB7XG4gICAgYXdhaXQgc3VwZXIucmVuZGVyKCk7XG5cbiAgICBhd2FpdCB0aGlzLnBvc3RSZW5kZXJGZWF0dXJlcyh0aGlzLmdldCgncmVuZGVyZWQtY3InKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGd2aygpOiBHcm91cFZlcnNpb25LaW5kIHtcbiAgICByZXR1cm4gRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkuR1ZLO1xuICB9XG5cbiAgYXN5bmMgcG9zdFJlbmRlckZlYXR1cmVzKGNyOiBhbnkpIHtcbiAgICBjb25zdCBmZWF0dXJlc1BhdGNoZXM6IGFueVtdID0gdGhpcy5nZXQoJ3BhdGNoZXMnKS5maWx0ZXIoKHBhdGNoOiBhbnkpID0+XG4gICAgICBwYXRjaC5pZGVudGlmeSgpLm1hdGNoKC9eZmVhdHVyZVxcLy8pLFxuICAgICk7XG5cbiAgICBjb25zdCBmZWF0dXJlczoge1xuICAgICAgY2xhaW06IHsga2luZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfTtcbiAgICAgIGNoYXJ0OiBBcGlPYmplY3Q7XG4gICAgfVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZlYXR1cmVQYXRjaCBvZiBmZWF0dXJlc1BhdGNoZXMpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVDbGFpbTogSUdpdGh1YlJlcG9zaXRvcnlGZWF0dXJlQ2xhaW0gPVxuICAgICAgICBhd2FpdCBmZWF0dXJlUGF0Y2gucG9zdChjcik7XG5cbiAgICAgIGNvbnN0IHJlbmRlcmVkRmVhdHVyZSA9IGF3YWl0IChcbiAgICAgICAgYXdhaXQgbmV3IEZlYXR1cmVSZXBvQ2hhcnQoXG4gICAgICAgICAgdGhpcyxcblxuICAgICAgICAgIGZlYXR1cmVDbGFpbS5uYW1lLFxuXG4gICAgICAgICAgY3Iuc3BlYy5maXJlc3RhcnRyLnRmU3RhdGVLZXksXG5cbiAgICAgICAgICBmZWF0dXJlQ2xhaW0sXG5cbiAgICAgICAgICBbXSxcblxuICAgICAgICAgIGNyLFxuICAgICAgICApLnJlbmRlcigpXG4gICAgICApLnBvc3RSZW5kZXJlcihbXSk7XG5cbiAgICAgIGZlYXR1cmVzLnB1c2goe1xuICAgICAgICBjbGFpbToge1xuICAgICAgICAgIGtpbmQ6IGZlYXR1cmVDbGFpbS5raW5kLFxuXG4gICAgICAgICAgbmFtZTogZmVhdHVyZUNsYWltLm5hbWUsXG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hhcnQ6IHJlbmRlcmVkRmVhdHVyZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc2V0KFxuICAgICAgJ2ZlYXR1cmVzJyxcblxuICAgICAgZmVhdHVyZXMsXG4gICAgKTtcbiAgfVxuXG4gIGluc3RhbmNlQXBpT2JqZWN0KHRlbXBsYXRlOiBhbnkpOiBBcGlPYmplY3Qge1xuICAgIHJldHVybiBuZXcgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnkoXG4gICAgICB0aGlzLFxuICAgICAgdGVtcGxhdGUubWV0YWRhdGEubmFtZSxcbiAgICAgIHRlbXBsYXRlLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWV0aG9kIGNyZWF0ZXMgdGhlIHBlcm1pc3Npb25zIGRhdGEgZm9yIHRoZSByZXBvc2l0b3J5XG4gICAqIEBwYXJhbSBjbGFpbVxuICAgKiBAcmV0dXJucyBQZXJtaXNzaW9uW11cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlUGVybWlzc2lvbnMoXG4gICAgY2xhaW06IGFueSxcbiAgKTogKFBlcm1pc3Npb24gfCBDb2xsYWJvcmF0b3JQZXJtaXNzaW9uKVtdIHtcbiAgICBjb25zdCBwZXJtaXNzaW9uczogKFBlcm1pc3Npb24gfCBDb2xsYWJvcmF0b3JQZXJtaXNzaW9uKVtdID0gW107XG5cbiAgICBpZiAoY2xhaW0ub3duZXIpXG4gICAgICBwZXJtaXNzaW9ucy5wdXNoKGNyZWF0ZVBlcm1pc3Npb25Gb3IoY2xhaW0ub3duZXIsICdhZG1pbicpKTtcblxuICAgIGlmIChjbGFpbS5wbGF0Zm9ybU93bmVyKVxuICAgICAgcGVybWlzc2lvbnMucHVzaChjcmVhdGVQZXJtaXNzaW9uRm9yKGNsYWltLnBsYXRmb3JtT3duZXIsICdhZG1pbicpKTtcblxuICAgIGlmIChjbGFpbS5tYWludGFpbmVkQnkpXG4gICAgICBmb3IgKGNvbnN0IG1haW50YWluZXIgb2YgY2xhaW0ubWFpbnRhaW5lZEJ5KVxuICAgICAgICBwZXJtaXNzaW9ucy5wdXNoKGNyZWF0ZVBlcm1pc3Npb25Gb3IobWFpbnRhaW5lciwgJ21haW50YWluJykpO1xuXG4gICAgaWYgKGNsYWltLnByb3ZpZGVycy5naXRodWIub3JnQ29udHJpYnV0aW9ucykge1xuICAgICAgcGVybWlzc2lvbnMucHVzaChcbiAgICAgICAgY3JlYXRlUGVybWlzc2lvbkZvcihcbiAgICAgICAgICBgZ3JvdXA6JHtjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm9yZ30tYWxsYCxcbiAgICAgICAgICAnbWFpbnRhaW4nLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGNsYWltLnByb3ZpZGVycy5naXRodWIub3JnVmlzaWJpbGl0eSkge1xuICAgICAgcGVybWlzc2lvbnMucHVzaChcbiAgICAgICAgY3JlYXRlUGVybWlzc2lvbkZvcihgZ3JvdXA6JHtjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm9yZ30tYWxsYCwgJ3B1bGwnKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBlcm1pc3Npb25zO1xuICB9XG5cbiAgZXh0cmFDaGFydHMoKToge1xuICAgIGNsYWltOiB7XG4gICAgICBraW5kOiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICBjaGFydDogQXBpT2JqZWN0O1xuICB9W10ge1xuICAgIHJldHVybiB0aGlzLmdldCgnZmVhdHVyZXMnKSB8fCBbXTtcbiAgfVxufVxuIl19
|
|
231164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeUNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9naXRodWIvcmVwb3NpdG9yeUNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHlEQUFzRDtBQUN0RCwyRUFLMEM7QUFDMUMsb0VBR3lDO0FBSXpDLG9FQUFvQztBQUNwQyxpQ0FBeUM7QUFFekMsTUFBYSxxQkFBc0IsU0FBUSxzQkFBZTtJQUN4RCxRQUFROztRQUNOLE1BQU0sS0FBSyxHQUEyQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbkQsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUU7Z0JBQ0osVUFBVSxFQUFFLE1BQUEsTUFBQSxNQUFBLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSwwQ0FBRSxPQUFPLDBDQUFFLElBQUksMENBQUUsVUFBVTtnQkFDN0QsZ0JBQWdCLEVBQ2QsTUFBQSxNQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sMENBQUUsT0FBTywwQ0FBRSxJQUFJLDBDQUFFLGdCQUFnQixtQ0FBSSxFQUFFO2FBQ2hFO1NBQ0YsQ0FBQztRQUVGLElBQUksVUFBVSxHQUEyRDtZQUN2RSxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ2pDLFdBQVcsRUFBRTtvQkFDWCxDQUFDLHdCQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDeEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUk7aUJBQzdDO2FBQ0Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFB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QUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFOUQsSUFBSSxLQUFLLENBQUMsYUFBYTtZQUNyQixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUEsMENBQW1CLEVBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQUksS0FBSyxDQUFDLFlBQVk7WUFDcEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWTtnQkFDekMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFBLDBDQUFtQixFQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRWxFLFFBQVEsY0FBYyxFQUFFO1lBQ3RCLEtBQUssTUFBTTtnQkFDVCxXQUFXLENBQUMsSUFBSSxDQUNkLElBQUEsMENBQW1CLEVBQ2pCLFNBQVMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQ3pDLE1BQU0sQ0FDUCxDQUNGLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssWUFBWTtnQkFDZixXQUFXLENBQUMsSUFBSSxDQUNkLElBQUEsMENBQW1CLEVBQ2pCLFNBQVMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQ3pDLFVBQVUsQ0FDWCxDQUNGLENBQUM7Z0JBQ0YsTUFBTTtTQUNUO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFPVCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQTVMRCxzREE0TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBGZWF0dXJlUmVwb0NoYXJ0IH0gZnJvbSAnLi9mZWF0dXJlUmVwb0NoYXJ0JztcbmltcG9ydCB7XG4gIFBlcm1pc3Npb24sXG4gIENvbGxhYm9yYXRvclBlcm1pc3Npb24sXG4gIGNyZWF0ZUNvZGVPd25lcnNEYXRhLFxuICBjcmVhdGVQZXJtaXNzaW9uRm9yLFxufSBmcm9tICcuLi8uLi91dGlscy9yZXBvc2l0b3J5Q2xhaW1VdGlscyc7XG5pbXBvcnQge1xuICBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeSxcbiAgRmlyZXN0YXJ0ckdpdGh1YlJlcG9zaXRvcnlQcm9wcyxcbn0gZnJvbSAnLi4vLi4vLi4vaW1wb3J0cy9maXJlc3RhcnRyLmRldic7XG5pbXBvcnQgeyBJR2l0aHViUmVwb3NpdG9yeUNsYWltIH0gZnJvbSAnLi4vLi4vY2xhaW1zL2dpdGh1Yi9yZXBvc2l0b3J5JztcbmltcG9ydCB7IElHaXRodWJSZXBvc2l0b3J5RmVhdHVyZUNsYWltIH0gZnJvbSAnLi4vLi4vY2xhaW1zL2dpdGh1Yi9yZXBvc2l0b3J5RmVhdHVyZSc7XG5pbXBvcnQgeyBJVW5pdGlhbGl6ZWRTdGF0ZUtleSB9IGZyb20gJy4uLy4uL2NsYWltcy9iYXNlJztcbmltcG9ydCBjb21tb24gZnJvbSAnY2F0YWxvZ19jb21tb24nO1xuaW1wb3J0IHsgQmFzZUdpdGh1YkNoYXJ0IH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNsYXNzIEdpdGh1YlJlcG9zaXRvcnlDaGFydCBleHRlbmRzIEJhc2VHaXRodWJDaGFydCB7XG4gIHRlbXBsYXRlKCk6IEZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5UHJvcHMgfCBJVW5pdGlhbGl6ZWRTdGF0ZUtleSB7XG4gICAgY29uc3QgY2xhaW06IElHaXRodWJSZXBvc2l0b3J5Q2xhaW0gPSB0aGlzLmdldCgnY2xhaW0nKTtcbiAgICBjb25zdCBmaXJlc3RhcnRySWQ6IGFueSA9IHRoaXMuZ2V0KCdmaXJlc3RhcnRySWQnKTtcblxuICAgIGNvbnN0IGFjdGlvbnMgPSB7XG4gICAgICBvaWRjOiB7XG4gICAgICAgIHVzZURlZmF1bHQ6IGNsYWltLnByb3ZpZGVycy5naXRodWI/LmFjdGlvbnM/Lm9pZGM/LnVzZURlZmF1bHQsXG4gICAgICAgIGluY2x1ZGVDbGFpbUtleXM6XG4gICAgICAgICAgY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yj8uYWN0aW9ucz8ub2lkYz8uaW5jbHVkZUNsYWltS2V5cyA/PyBbXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGxldCBjclRlbXBsYXRlOiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeVByb3BzIHwgSVVuaXRpYWxpemVkU3RhdGVLZXkgPSB7XG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBuYW1lOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLm5hbWUsXG4gICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgW2NvbW1vbi5nZW5lcmljLmdldEZpcmVzdGFydHJBbm5vdGF0aW9uKCdicmFuY2hTdHJhdGVneScpXTpcbiAgICAgICAgICAgIGNsYWltLnByb3ZpZGVycy5naXRodWIuYnJhbmNoU3RyYXRlZ3kubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzcGVjOiB7XG4gICAgICAgIG9yZzogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmcsXG4gICAgICAgIGZpcmVzdGFydHI6IHtcbiAgICAgICAgICB0ZlN0YXRlS2V5OiBmaXJlc3RhcnRySWQgfHwgJycsXG4gICAgICAgICAgdGVjaG5vbG9neTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi50ZWNobm9sb2d5LFxuICAgICAgICB9LFxuICAgICAgICByZXBvOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGNsYWltLnByb3ZpZGVycy5naXRodWIuZGVzY3JpcHRpb24sXG4gICAgICAgICAgYWxsb3dNZXJnZUNvbW1pdDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hbGxvd01lcmdlQ29tbWl0LFxuICAgICAgICAgIGFsbG93U3F1YXNoTWVyZ2U6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dTcXVhc2hNZXJnZSxcbiAgICAgICAgICBhbGxvd1JlYmFzZU1lcmdlOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmFsbG93UmViYXNlTWVyZ2UsXG4gICAgICAgICAgYWxsb3dBdXRvTWVyZ2U6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYWxsb3dBdXRvTWVyZ2UsXG4gICAgICAgICAgZGVsZXRlQnJhbmNoT25NZXJnZTogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5kZWxldGVCcmFuY2hPbk1lcmdlLFxuICAgICAgICAgIGF1dG9Jbml0OiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmF1dG9Jbml0LFxuICAgICAgICAgIGFyY2hpdmVPbkRlc3Ryb3k6IGNsYWltLnByb3ZpZGVycy5naXRodWIuYXJjaGl2ZU9uRGVzdHJveSxcbiAgICAgICAgICBhbGxvd1VwZGF0ZUJyYW5jaDogY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5hbGxvd1VwZGF0ZUJyYW5jaCxcbiAgICAgICAgICBoYXNJc3N1ZXM6IGNsYWltLnByb3ZpZGVycy5naXRodWIuaGFzSXNzdWVzLFxuICAgICAgICAgIHZpc2liaWxpdHk6IGNsYWltLnByb3ZpZGVycy5naXRodWIudmlzaWJpbGl0eSxcbiAgICAgICAgICBkZWZhdWx0QnJhbmNoOiBjbGFpbS5wcm92aWRlcnMuZ2l0aHViPy5icmFuY2hTdHJhdGVneT8uZGVmYXVsdEJyYW5jaCxcbiAgICAgICAgICBjb2Rlb3duZXJzOiBjcmVhdGVDb2RlT3duZXJzRGF0YShjbGFpbSksXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGlvbnMsXG4gICAgICAgIHBlcm1pc3Npb25zOiB0aGlzLmNyZWF0ZVBlcm1pc3Npb25zKGNsYWltKSxcbiAgICAgICAgcGFnZXM6IGNsYWltLnByb3ZpZGVycy5naXRodWIucGFnZXMsXG4gICAgICAgIGJyYW5jaFByb3RlY3Rpb25zOiBbXSxcbiAgICAgICAgd3JpdGVDb25uZWN0aW9uU2VjcmV0VG9SZWY6IHtcbiAgICAgICAgICBuYW1lOiBgZmlyZXN0YXJ0cmdpdGh1YnJlcG9zaXRvcnktJHtjbGFpbS5uYW1lfS1vdXRwdXRzYC50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHsga2V5OiAnaWQnIH0sXG4gICAgICAgICAgICB7IGtleTogJ25vZGVJZCcgfSxcbiAgICAgICAgICAgIHsga2V5OiAnZnVsbE5hbWUnIH0sXG4gICAgICAgICAgICB7IGtleTogJ2h0bWxVcmwnIH0sXG4gICAgICAgICAgICB7IGtleTogJ3NzaENsb25lVXJsJyB9LFxuICAgICAgICAgICAgeyBrZXk6ICdwcmltYXJ5TGFuZ3VhZ2UnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIFdlIGRvIHRoaXMgdG8gcmVtb3ZlIHVuZGVmaW5lZCB2YXJpYWJsZXMgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBjclRlbXBsYXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjclRlbXBsYXRlLCBudWxsLCAyKSk7XG5cbiAgICByZXR1cm4gY3JUZW1wbGF0ZTtcbiAgfVxuXG4gIGFzeW5jIHJlbmRlcigpIHtcbiAgICBhd2FpdCBzdXBlci5yZW5kZXIoKTtcblxuICAgIGF3YWl0IHRoaXMucG9zdFJlbmRlckZlYXR1cmVzKHRoaXMuZ2V0KCdyZW5kZXJlZC1jcicpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ3ZrKCk6IEdyb3VwVmVyc2lvbktpbmQge1xuICAgIHJldHVybiBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeS5HVks7XG4gIH1cblxuICBhc3luYyBwb3N0UmVuZGVyRmVhdHVyZXMoY3I6IGFueSkge1xuICAgIGNvbnN0IGZlYXR1cmVzUGF0Y2hlczogYW55W10gPSB0aGlzLmdldCgncGF0Y2hlcycpLmZpbHRlcigocGF0Y2g6IGFueSkgPT5cbiAgICAgIHBhdGNoLmlkZW50aWZ5KCkubWF0Y2goL15mZWF0dXJlXFwvLyksXG4gICAgKTtcblxuICAgIGNvbnN0IGZlYXR1cmVzOiB7XG4gICAgICBjbGFpbTogeyBraW5kOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9O1xuICAgICAgY2hhcnQ6IEFwaU9iamVjdDtcbiAgICB9W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZmVhdHVyZVBhdGNoIG9mIGZlYXR1cmVzUGF0Y2hlcykge1xuICAgICAgY29uc3QgZmVhdHVyZUNsYWltOiBJR2l0aHViUmVwb3NpdG9yeUZlYXR1cmVDbGFpbSA9XG4gICAgICAgIGF3YWl0IGZlYXR1cmVQYXRjaC5wb3N0KGNyKTtcblxuICAgICAgY29uc3QgcmVuZGVyZWRGZWF0dXJlID0gYXdhaXQgKFxuICAgICAgICBhd2FpdCBuZXcgRmVhdHVyZVJlcG9DaGFydChcbiAgICAgICAgICB0aGlzLFxuXG4gICAgICAgICAgZmVhdHVyZUNsYWltLm5hbWUsXG5cbiAgICAgICAgICBjci5zcGVjLmZpcmVzdGFydHIudGZTdGF0ZUtleSxcblxuICAgICAgICAgIGZlYXR1cmVDbGFpbSxcblxuICAgICAgICAgIFtdLFxuXG4gICAgICAgICAgY3IsXG4gICAgICAgICkucmVuZGVyKClcbiAgICAgICkucG9zdFJlbmRlcmVyKFtdKTtcblxuICAgICAgZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIGNsYWltOiB7XG4gICAgICAgICAga2luZDogZmVhdHVyZUNsYWltLmtpbmQsXG5cbiAgICAgICAgICBuYW1lOiBmZWF0dXJlQ2xhaW0ubmFtZSxcbiAgICAgICAgfSxcblxuICAgICAgICBjaGFydDogcmVuZGVyZWRGZWF0dXJlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXQoXG4gICAgICAnZmVhdHVyZXMnLFxuXG4gICAgICBmZWF0dXJlcyxcbiAgICApO1xuICB9XG5cbiAgaW5zdGFuY2VBcGlPYmplY3QodGVtcGxhdGU6IGFueSk6IEFwaU9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyBGaXJlc3RhcnRyR2l0aHViUmVwb3NpdG9yeShcbiAgICAgIHRoaXMsXG4gICAgICB0ZW1wbGF0ZS5tZXRhZGF0YS5uYW1lLFxuICAgICAgdGVtcGxhdGUsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgY3JlYXRlcyB0aGUgcGVybWlzc2lvbnMgZGF0YSBmb3IgdGhlIHJlcG9zaXRvcnlcbiAgICogQHBhcmFtIGNsYWltXG4gICAqIEByZXR1cm5zIFBlcm1pc3Npb25bXVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVQZXJtaXNzaW9ucyhcbiAgICBjbGFpbTogYW55LFxuICApOiAoUGVybWlzc2lvbiB8IENvbGxhYm9yYXRvclBlcm1pc3Npb24pW10ge1xuICAgIGNvbnN0IHBlcm1pc3Npb25zOiAoUGVybWlzc2lvbiB8IENvbGxhYm9yYXRvclBlcm1pc3Npb24pW10gPSBbXTtcblxuICAgIGNvbnN0IG9yZ1Blcm1pc3Npb25zOiAnbm9uZScgfCAndmlldycgfCAnY29udHJpYnV0ZScgPVxuICAgICAgY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmdQZXJtaXNzaW9ucztcblxuICAgIGlmIChjbGFpbS5vd25lcilcbiAgICAgIHBlcm1pc3Npb25zLnB1c2goY3JlYXRlUGVybWlzc2lvbkZvcihjbGFpbS5vd25lciwgJ2FkbWluJykpO1xuXG4gICAgaWYgKGNsYWltLnBsYXRmb3JtT3duZXIpXG4gICAgICBwZXJtaXNzaW9ucy5wdXNoKGNyZWF0ZVBlcm1pc3Npb25Gb3IoY2xhaW0ucGxhdGZvcm1Pd25lciwgJ2FkbWluJykpO1xuXG4gICAgaWYgKGNsYWltLm1haW50YWluZWRCeSlcbiAgICAgIGZvciAoY29uc3QgbWFpbnRhaW5lciBvZiBjbGFpbS5tYWludGFpbmVkQnkpXG4gICAgICAgIHBlcm1pc3Npb25zLnB1c2goY3JlYXRlUGVybWlzc2lvbkZvcihtYWludGFpbmVyLCAnbWFpbnRhaW4nKSk7XG5cbiAgICBzd2l0Y2ggKG9yZ1Blcm1pc3Npb25zKSB7XG4gICAgICBjYXNlICd2aWV3JzpcbiAgICAgICAgcGVybWlzc2lvbnMucHVzaChcbiAgICAgICAgICBjcmVhdGVQZXJtaXNzaW9uRm9yKFxuICAgICAgICAgICAgYGdyb3VwOiR7Y2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmd9LWFsbGAsXG4gICAgICAgICAgICAncHVsbCcsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb250cmlidXRlJzpcbiAgICAgICAgcGVybWlzc2lvbnMucHVzaChcbiAgICAgICAgICBjcmVhdGVQZXJtaXNzaW9uRm9yKFxuICAgICAgICAgICAgYGdyb3VwOiR7Y2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5vcmd9LWFsbGAsXG4gICAgICAgICAgICAnbWFpbnRhaW4nLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBwZXJtaXNzaW9ucztcbiAgfVxuXG4gIGV4dHJhQ2hhcnRzKCk6IHtcbiAgICBjbGFpbToge1xuICAgICAga2luZDogc3RyaW5nO1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgY2hhcnQ6IEFwaU9iamVjdDtcbiAgfVtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2ZlYXR1cmVzJykgfHwgW107XG4gIH1cbn1cbiJdfQ==
|
|
231096
231165
|
|
|
231097
231166
|
/***/ }),
|
|
231098
231167
|
|
|
@@ -231138,6 +231207,7 @@ const github_1 = __nccwpck_require__(42759);
|
|
|
231138
231207
|
const catalog_1 = __nccwpck_require__(60321);
|
|
231139
231208
|
const tfworkspaceChart_1 = __nccwpck_require__(8038);
|
|
231140
231209
|
const argodeployChart_1 = __nccwpck_require__(63229);
|
|
231210
|
+
const secretsChart_1 = __nccwpck_require__(15528);
|
|
231141
231211
|
exports["default"] = {
|
|
231142
231212
|
CatalogComponentChart: catalog_1.CatalogComponentChart,
|
|
231143
231213
|
CatalogDomainChart: catalog_1.CatalogDomainChart,
|
|
@@ -231146,13 +231216,208 @@ exports["default"] = {
|
|
|
231146
231216
|
CatalogUserChart: catalog_1.CatalogUserChart,
|
|
231147
231217
|
CatalogTFWorkspaceChart: catalog_1.CatalogTFWorkspaceChart,
|
|
231148
231218
|
CatalogArgoDeployChart: catalog_1.CatalogArgoDeployChart,
|
|
231219
|
+
CatalogSecretsChart: catalog_1.CatalogSecretsChart,
|
|
231149
231220
|
GithubGroupChart: github_1.GithubGroupChart,
|
|
231150
231221
|
GithubMembershipChart: github_1.GithubMembershipChart,
|
|
231151
231222
|
GithubRepositoryChart: github_1.GithubRepositoryChart,
|
|
231152
231223
|
TFWorkspaceChart: tfworkspaceChart_1.TFWorkspaceChart,
|
|
231153
231224
|
ArgoDeployChart: argodeployChart_1.ArgoDeployChart,
|
|
231225
|
+
SecretsChart: secretsChart_1.SecretsChart,
|
|
231154
231226
|
};
|
|
231155
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
231227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2hhcnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBSWtCO0FBRWxCLHVDQVNtQjtBQUVuQixvRUFBaUU7QUFDakUsOERBQTJEO0FBQzNELHlEQUFzRDtBQUV0RCxrQkFBZTtJQUNiLHFCQUFxQixFQUFyQiwrQkFBcUI7SUFDckIsa0JBQWtCLEVBQWxCLDRCQUFrQjtJQUNsQixpQkFBaUIsRUFBakIsMkJBQWlCO0lBQ2pCLGtCQUFrQixFQUFsQiw0QkFBa0I7SUFDbEIsZ0JBQWdCLEVBQWhCLDBCQUFnQjtJQUNoQix1QkFBdUIsRUFBdkIsaUNBQXVCO0lBQ3ZCLHNCQUFzQixFQUF0QixnQ0FBc0I7SUFDdEIsbUJBQW1CLEVBQW5CLDZCQUFtQjtJQUNuQixnQkFBZ0IsRUFBaEIseUJBQWdCO0lBQ2hCLHFCQUFxQixFQUFyQiw4QkFBcUI7SUFDckIscUJBQXFCLEVBQXJCLDhCQUFxQjtJQUNyQixnQkFBZ0IsRUFBaEIsbUNBQWdCO0lBQ2hCLGVBQWUsRUFBZixpQ0FBZTtJQUNmLFlBQVksRUFBWiwyQkFBWTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBHaXRodWJHcm91cENoYXJ0LFxuICBHaXRodWJNZW1iZXJzaGlwQ2hhcnQsXG4gIEdpdGh1YlJlcG9zaXRvcnlDaGFydCxcbn0gZnJvbSAnLi9naXRodWInO1xuXG5pbXBvcnQge1xuICBDYXRhbG9nQ29tcG9uZW50Q2hhcnQsXG4gIENhdGFsb2dEb21haW5DaGFydCxcbiAgQ2F0YWxvZ0dyb3VwQ2hhcnQsXG4gIENhdGFsb2dTeXN0ZW1DaGFydCxcbiAgQ2F0YWxvZ1VzZXJDaGFydCxcbiAgQ2F0YWxvZ1RGV29ya3NwYWNlQ2hhcnQsXG4gIENhdGFsb2dBcmdvRGVwbG95Q2hhcnQsXG4gIENhdGFsb2dTZWNyZXRzQ2hhcnQsXG59IGZyb20gJy4vY2F0YWxvZyc7XG5cbmltcG9ydCB7IFRGV29ya3NwYWNlQ2hhcnQgfSBmcm9tICcuL3dvcmtzcGFjZXMvdGZ3b3Jrc3BhY2VDaGFydCc7XG5pbXBvcnQgeyBBcmdvRGVwbG95Q2hhcnQgfSBmcm9tICcuL2FyZ29jZC9hcmdvZGVwbG95Q2hhcnQnO1xuaW1wb3J0IHsgU2VjcmV0c0NoYXJ0IH0gZnJvbSAnLi9zZWNyZXRzL3NlY3JldHNDaGFydCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgQ2F0YWxvZ0NvbXBvbmVudENoYXJ0LFxuICBDYXRhbG9nRG9tYWluQ2hhcnQsXG4gIENhdGFsb2dHcm91cENoYXJ0LFxuICBDYXRhbG9nU3lzdGVtQ2hhcnQsXG4gIENhdGFsb2dVc2VyQ2hhcnQsXG4gIENhdGFsb2dURldvcmtzcGFjZUNoYXJ0LFxuICBDYXRhbG9nQXJnb0RlcGxveUNoYXJ0LFxuICBDYXRhbG9nU2VjcmV0c0NoYXJ0LFxuICBHaXRodWJHcm91cENoYXJ0LFxuICBHaXRodWJNZW1iZXJzaGlwQ2hhcnQsXG4gIEdpdGh1YlJlcG9zaXRvcnlDaGFydCxcbiAgVEZXb3Jrc3BhY2VDaGFydCxcbiAgQXJnb0RlcGxveUNoYXJ0LFxuICBTZWNyZXRzQ2hhcnQsXG59O1xuIl19
|
|
231228
|
+
|
|
231229
|
+
/***/ }),
|
|
231230
|
+
|
|
231231
|
+
/***/ 3485:
|
|
231232
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
231233
|
+
|
|
231234
|
+
"use strict";
|
|
231235
|
+
|
|
231236
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
231237
|
+
exports.BaseSecretsChart = void 0;
|
|
231238
|
+
const base_1 = __nccwpck_require__(89937);
|
|
231239
|
+
class BaseSecretsChart extends base_1.BaseChart {
|
|
231240
|
+
constructor(scope, chartId, firestartrId, claim, patches = []) {
|
|
231241
|
+
super(scope, chartId, firestartrId, claim, patches);
|
|
231242
|
+
this.set('provider', 'secrets');
|
|
231243
|
+
}
|
|
231244
|
+
}
|
|
231245
|
+
exports.BaseSecretsChart = BaseSecretsChart;
|
|
231246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydHMvc2VjcmV0cy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGtDQUFvQztBQUdwQyxNQUFzQixnQkFBaUIsU0FBUSxnQkFBUztJQUN0RCxZQUNFLEtBQWdCLEVBRWhCLE9BQWUsRUFFZixZQUEyQixFQUUzQixLQUFVLEVBRVYsVUFBa0MsRUFBRTtRQUVwQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQWhCRCw0Q0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ3VzdG9tUmVzb3VyY2VQYXRjaCB9IGZyb20gJy4uLy4uL3BhdGNoZXMnO1xuaW1wb3J0IHsgQmFzZUNoYXJ0IH0gZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZWNyZXRzQ2hhcnQgZXh0ZW5kcyBCYXNlQ2hhcnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuXG4gICAgY2hhcnRJZDogc3RyaW5nLFxuXG4gICAgZmlyZXN0YXJ0cklkOiBzdHJpbmcgfCBudWxsLFxuXG4gICAgY2xhaW06IGFueSxcblxuICAgIHBhdGNoZXM6IElDdXN0b21SZXNvdXJjZVBhdGNoW10gPSBbXSxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGNoYXJ0SWQsIGZpcmVzdGFydHJJZCwgY2xhaW0sIHBhdGNoZXMpO1xuXG4gICAgdGhpcy5zZXQoJ3Byb3ZpZGVyJywgJ3NlY3JldHMnKTtcbiAgfVxufVxuIl19
|
|
231247
|
+
|
|
231248
|
+
/***/ }),
|
|
231249
|
+
|
|
231250
|
+
/***/ 15528:
|
|
231251
|
+
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
|
|
231252
|
+
|
|
231253
|
+
"use strict";
|
|
231254
|
+
|
|
231255
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
231256
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
231257
|
+
};
|
|
231258
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
231259
|
+
exports.SecretsChart = void 0;
|
|
231260
|
+
const catalog_common_1 = __importDefault(__nccwpck_require__(74100));
|
|
231261
|
+
const base_1 = __nccwpck_require__(3485);
|
|
231262
|
+
const cdk8s_1 = __nccwpck_require__(77228);
|
|
231263
|
+
class SecretsChart extends base_1.BaseSecretsChart {
|
|
231264
|
+
template() {
|
|
231265
|
+
const externalSecrets = this.externalSecretCharts();
|
|
231266
|
+
const pushSecrets = this.pushSecretCharts();
|
|
231267
|
+
if (externalSecrets.length > 0) {
|
|
231268
|
+
const eS = this.get('externalSecretsResources').pop();
|
|
231269
|
+
return eS;
|
|
231270
|
+
}
|
|
231271
|
+
if (pushSecrets.length > 0) {
|
|
231272
|
+
const pS = this.get('pushSecretsResources').pop();
|
|
231273
|
+
this.set('pushSecrets', pushSecrets);
|
|
231274
|
+
return pS;
|
|
231275
|
+
}
|
|
231276
|
+
throw new Error('No secrets found in claim');
|
|
231277
|
+
}
|
|
231278
|
+
instanceApiObject(template) {
|
|
231279
|
+
return new cdk8s_1.ApiObject(this, `${template.kind}-${template.metadata.name}`, template);
|
|
231280
|
+
}
|
|
231281
|
+
gvk() {
|
|
231282
|
+
return {
|
|
231283
|
+
kind: 'ExternalSecret/PushSecret',
|
|
231284
|
+
apiVersion: 'external-secrets.io/v1alpha1',
|
|
231285
|
+
};
|
|
231286
|
+
}
|
|
231287
|
+
extraCharts() {
|
|
231288
|
+
const externalSecrets = this.get('pushSecrets');
|
|
231289
|
+
const pushSecrets = this.get('externalSecrets');
|
|
231290
|
+
const kind = this.get('claim').kind;
|
|
231291
|
+
const name = this.get('claim').name;
|
|
231292
|
+
return externalSecrets.concat(pushSecrets).map((chart) => {
|
|
231293
|
+
const cr = chart.toJson();
|
|
231294
|
+
return {
|
|
231295
|
+
claim: { kind, name: `${name}-${cr.kind}-${cr.metadata.name}` },
|
|
231296
|
+
chart: chart,
|
|
231297
|
+
};
|
|
231298
|
+
});
|
|
231299
|
+
}
|
|
231300
|
+
externalSecretCharts() {
|
|
231301
|
+
var _a, _b, _c, _d, _e, _f;
|
|
231302
|
+
const externalSecrets = [];
|
|
231303
|
+
const k8sResources = [];
|
|
231304
|
+
const claim = this.get('claim');
|
|
231305
|
+
const externalSecretsFromClaim = (_c = (_b = (_a = claim === null || claim === void 0 ? void 0 : claim.providers) === null || _a === void 0 ? void 0 : _a.external_secrets) === null || _b === void 0 ? void 0 : _b.externalSecrets) === null || _c === void 0 ? void 0 : _c.secrets;
|
|
231306
|
+
if (!externalSecretsFromClaim) {
|
|
231307
|
+
return [];
|
|
231308
|
+
}
|
|
231309
|
+
const templateData = {};
|
|
231310
|
+
const refsData = [];
|
|
231311
|
+
for (const secret of ((_f = (_e = (_d = claim === null || claim === void 0 ? void 0 : claim.providers) === null || _d === void 0 ? void 0 : _d.external_secrets) === null || _e === void 0 ? void 0 : _e.externalSecrets) === null || _f === void 0 ? void 0 : _f.secrets) || []) {
|
|
231312
|
+
templateData[secret.secretName] = `{{ .${secret.secretName} }}`;
|
|
231313
|
+
refsData.push({
|
|
231314
|
+
secretKey: secret.secretName,
|
|
231315
|
+
remoteRef: {
|
|
231316
|
+
key: secret.secretName,
|
|
231317
|
+
},
|
|
231318
|
+
});
|
|
231319
|
+
}
|
|
231320
|
+
const k8sResource = {
|
|
231321
|
+
apiVersion: 'external-secrets.io/v1alpha1',
|
|
231322
|
+
kind: 'ExternalSecret',
|
|
231323
|
+
metadata: {
|
|
231324
|
+
name: catalog_common_1.default.generic.normalizeName(claim.name),
|
|
231325
|
+
annotations: {
|
|
231326
|
+
'firestartr.dev/claim-ref': `${claim.kind}/${claim.name}`,
|
|
231327
|
+
'firestartr.dev/external-name': claim.providers.external_secrets.name,
|
|
231328
|
+
},
|
|
231329
|
+
},
|
|
231330
|
+
spec: {
|
|
231331
|
+
refreshInterval: claim.providers.external_secrets.externalSecrets.refreshInterval ||
|
|
231332
|
+
'1y',
|
|
231333
|
+
secretStoreRef: {
|
|
231334
|
+
name: claim.providers.external_secrets.secretStore.name,
|
|
231335
|
+
kind: claim.providers.external_secrets.secretStore.kind || 'SecretStore',
|
|
231336
|
+
},
|
|
231337
|
+
target: {
|
|
231338
|
+
name: catalog_common_1.default.generic.normalizeName(claim.name),
|
|
231339
|
+
creationPolicy: 'Owner',
|
|
231340
|
+
deletionPolicy: 'Delete',
|
|
231341
|
+
template: {
|
|
231342
|
+
engineVersion: 'v2',
|
|
231343
|
+
metadata: {
|
|
231344
|
+
data: templateData,
|
|
231345
|
+
},
|
|
231346
|
+
},
|
|
231347
|
+
},
|
|
231348
|
+
data: refsData,
|
|
231349
|
+
},
|
|
231350
|
+
};
|
|
231351
|
+
const cr = new cdk8s_1.ApiObject(this, `es-${claim.name}`, k8sResource);
|
|
231352
|
+
externalSecrets.push(cr);
|
|
231353
|
+
k8sResources.push(k8sResource);
|
|
231354
|
+
this.set('externalSecretsResources', k8sResources);
|
|
231355
|
+
this.set('externalSecrets', externalSecrets);
|
|
231356
|
+
return externalSecrets;
|
|
231357
|
+
}
|
|
231358
|
+
pushSecretCharts() {
|
|
231359
|
+
var _a, _b, _c;
|
|
231360
|
+
const pushSecretsFromClaim = this.get('claim').providers.external_secrets.pushSecrets;
|
|
231361
|
+
const claim = this.get('claim');
|
|
231362
|
+
const pushSecrets = [];
|
|
231363
|
+
const k8sResources = [];
|
|
231364
|
+
if (!pushSecretsFromClaim) {
|
|
231365
|
+
return [];
|
|
231366
|
+
}
|
|
231367
|
+
for (const pushSecret of pushSecretsFromClaim) {
|
|
231368
|
+
const k8sResource = {
|
|
231369
|
+
apiVersion: 'external-secrets.io/v1alpha1',
|
|
231370
|
+
kind: 'PushSecret',
|
|
231371
|
+
metadata: {
|
|
231372
|
+
name: catalog_common_1.default.generic.normalizeName(`${pushSecret.secretName}-${claim.name}`),
|
|
231373
|
+
annotations: {
|
|
231374
|
+
'firestartr.dev/claim-ref': `${claim.kind}/${claim.name}`,
|
|
231375
|
+
'firestartr.dev/external-name': claim.providers.external_secrets.name,
|
|
231376
|
+
},
|
|
231377
|
+
},
|
|
231378
|
+
spec: {
|
|
231379
|
+
updatePolicy: pushSecret.updatePolicy || 'Replace',
|
|
231380
|
+
deletionPolicy: pushSecret.deletionPolicy || 'None',
|
|
231381
|
+
refreshInterval: pushSecret.refreshInterval || '5m',
|
|
231382
|
+
secretStoreRefs: [
|
|
231383
|
+
{
|
|
231384
|
+
kind: claim.providers.external_secrets.secretStore.kind ||
|
|
231385
|
+
'SecretStore',
|
|
231386
|
+
name: claim.providers.external_secrets.secretStore.name,
|
|
231387
|
+
},
|
|
231388
|
+
],
|
|
231389
|
+
selector: {
|
|
231390
|
+
generatorRef: {
|
|
231391
|
+
apiVersion: ((_a = pushSecret.generator) === null || _a === void 0 ? void 0 : _a.apiVersion) ||
|
|
231392
|
+
'generators.external-secrets.io/v1alpha1',
|
|
231393
|
+
kind: ((_b = pushSecret.generator) === null || _b === void 0 ? void 0 : _b.kind) || 'Password',
|
|
231394
|
+
name: pushSecret.generator.name,
|
|
231395
|
+
},
|
|
231396
|
+
},
|
|
231397
|
+
data: [
|
|
231398
|
+
{
|
|
231399
|
+
conversionStrategy: pushSecret.conversionStrategy || 'None',
|
|
231400
|
+
match: {
|
|
231401
|
+
remoteRef: {
|
|
231402
|
+
remoteKey: pushSecret.secretName,
|
|
231403
|
+
},
|
|
231404
|
+
secretKey: ((_c = pushSecret.generator) === null || _c === void 0 ? void 0 : _c.outputKey) || 'password',
|
|
231405
|
+
},
|
|
231406
|
+
},
|
|
231407
|
+
],
|
|
231408
|
+
},
|
|
231409
|
+
};
|
|
231410
|
+
const cr = new cdk8s_1.ApiObject(this, `ps-${pushSecret.secretName}-${claim.name}`, k8sResource);
|
|
231411
|
+
k8sResources.push(k8sResource);
|
|
231412
|
+
pushSecrets.push(cr);
|
|
231413
|
+
}
|
|
231414
|
+
this.set('pushSecretsResources', k8sResources);
|
|
231415
|
+
this.set('pushSecrets', pushSecrets);
|
|
231416
|
+
return pushSecrets;
|
|
231417
|
+
}
|
|
231418
|
+
}
|
|
231419
|
+
exports.SecretsChart = SecretsChart;
|
|
231420
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0c0NoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0cy9zZWNyZXRzL3NlY3JldHNDaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvRUFBb0M7QUFDcEMsaUNBQTBDO0FBQzFDLGlDQUFvRDtBQUVwRCxNQUFhLFlBQWEsU0FBUSx1QkFBZ0I7SUFDaEQsUUFBUTtRQUNOLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTVDLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRXRELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVsRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUVyQyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFhO1FBQzdCLE9BQU8sSUFBSSxpQkFBUyxDQUNsQixJQUFJLEVBRUosR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBRTVDLFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLDJCQUEyQjtZQUVqQyxVQUFVLEVB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Q0o7NEJBQ0Usa0JBQWtCLEVBQUUsVUFBVSxDQUFDLGtCQUFrQixJQUFJLE1BQU07NEJBQzNELEtBQUssRUFBRTtnQ0FDTCxTQUFTLEVBQUU7b0NBQ1QsU0FBUyxFQUFFLFVBQVUsQ0FBQyxVQUFVO2lDQUNqQztnQ0FDRCxTQUFTLEVBQUUsQ0FBQSxNQUFBLFVBQVUsQ0FBQyxTQUFTLDBDQUFFLFNBQVMsS0FBSSxVQUFVOzZCQUN6RDt5QkFDRjtxQkFDRjtpQkFDRjthQUNGLENBQUM7WUFFRixNQUFNLEVBQUUsR0FBYyxJQUFJLGlCQUFTLENBQ2pDLElBQUksRUFDSixNQUFNLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUMzQyxXQUFXLENBQ1osQ0FBQztZQUVGLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFL0IsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBbE5ELG9DQWtOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tb24gZnJvbSAnY2F0YWxvZ19jb21tb24nO1xuaW1wb3J0IHsgQmFzZVNlY3JldHNDaGFydCB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBBcGlPYmplY3QsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tICdjZGs4cyc7XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzQ2hhcnQgZXh0ZW5kcyBCYXNlU2VjcmV0c0NoYXJ0IHtcbiAgdGVtcGxhdGUoKSB7XG4gICAgY29uc3QgZXh0ZXJuYWxTZWNyZXRzID0gdGhpcy5leHRlcm5hbFNlY3JldENoYXJ0cygpO1xuICAgIGNvbnN0IHB1c2hTZWNyZXRzID0gdGhpcy5wdXNoU2VjcmV0Q2hhcnRzKCk7XG5cbiAgICBpZiAoZXh0ZXJuYWxTZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGVTID0gdGhpcy5nZXQoJ2V4dGVybmFsU2VjcmV0c1Jlc291cmNlcycpLnBvcCgpO1xuXG4gICAgICByZXR1cm4gZVM7XG4gICAgfVxuXG4gICAgaWYgKHB1c2hTZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHBTID0gdGhpcy5nZXQoJ3B1c2hTZWNyZXRzUmVzb3VyY2VzJykucG9wKCk7XG5cbiAgICAgIHRoaXMuc2V0KCdwdXNoU2VjcmV0cycsIHB1c2hTZWNyZXRzKTtcblxuICAgICAgcmV0dXJuIHBTO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gc2VjcmV0cyBmb3VuZCBpbiBjbGFpbScpO1xuICB9XG5cbiAgaW5zdGFuY2VBcGlPYmplY3QodGVtcGxhdGU6IGFueSk6IEFwaU9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyBBcGlPYmplY3QoXG4gICAgICB0aGlzLFxuXG4gICAgICBgJHt0ZW1wbGF0ZS5raW5kfS0ke3RlbXBsYXRlLm1ldGFkYXRhLm5hbWV9YCxcblxuICAgICAgdGVtcGxhdGUsXG4gICAgKTtcbiAgfVxuXG4gIGd2aygpOiBHcm91cFZlcnNpb25LaW5kIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ0V4dGVybmFsU2VjcmV0L1B1c2hTZWNyZXQnLFxuXG4gICAgICBhcGlWZXJzaW9uOiAnZXh0ZXJuYWwtc2VjcmV0cy5pby92MWFscGhhMScsXG4gICAgfTtcbiAgfVxuXG4gIGV4dHJhQ2hhcnRzKCk6IHtcbiAgICBjbGFpbTogeyBraW5kOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9O1xuICAgIGNoYXJ0OiBBcGlPYmplY3Q7XG4gIH1bXSB7XG4gICAgY29uc3QgZXh0ZXJuYWxTZWNyZXRzOiBhbnkgPSB0aGlzLmdldCgncHVzaFNlY3JldHMnKTtcblxuICAgIGNvbnN0IHB1c2hTZWNyZXRzOiBhbnkgPSB0aGlzLmdldCgnZXh0ZXJuYWxTZWNyZXRzJyk7XG5cbiAgICBjb25zdCBraW5kID0gdGhpcy5nZXQoJ2NsYWltJykua2luZDtcblxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldCgnY2xhaW0nKS5uYW1lO1xuXG4gICAgcmV0dXJuIGV4dGVybmFsU2VjcmV0cy5jb25jYXQocHVzaFNlY3JldHMpLm1hcCgoY2hhcnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgY3I6IGFueSA9IGNoYXJ0LnRvSnNvbigpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xhaW06IHsga2luZCwgbmFtZTogYCR7bmFtZX0tJHtjci5raW5kfS0ke2NyLm1ldGFkYXRhLm5hbWV9YCB9LFxuICAgICAgICBjaGFydDogY2hhcnQsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZXh0ZXJuYWxTZWNyZXRDaGFydHMoKTogQXBpT2JqZWN0W10ge1xuICAgIGNvbnN0IGV4dGVybmFsU2VjcmV0czogYW55W10gPSBbXTtcbiAgICBjb25zdCBrOHNSZXNvdXJjZXM6IGFueVtdID0gW107XG5cbiAgICBjb25zdCBjbGFpbSA9IHRoaXMuZ2V0KCdjbGFpbScpO1xuICAgIGNvbnN0IGV4dGVybmFsU2VjcmV0c0Zyb21DbGFpbSA9XG4gICAgICBjbGFpbT8ucHJvdmlkZXJzPy5leHRlcm5hbF9zZWNyZXRzPy5leHRlcm5hbFNlY3JldHM/LnNlY3JldHM7XG5cbiAgICBpZiAoIWV4dGVybmFsU2VjcmV0c0Zyb21DbGFpbSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXBsYXRlRGF0YTogYW55ID0ge307XG4gICAgY29uc3QgcmVmc0RhdGE6IGFueSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzZWNyZXQgb2YgY2xhaW0/LnByb3ZpZGVycz8uZXh0ZXJuYWxfc2VjcmV0cz8uZXh0ZXJuYWxTZWNyZXRzXG4gICAgICA/LnNlY3JldHMgfHwgW10pIHtcbiAgICAgIHRlbXBsYXRlRGF0YVtzZWNyZXQuc2VjcmV0TmFtZV0gPSBge3sgLiR7c2VjcmV0LnNlY3JldE5hbWV9IH19YDtcblxuICAgICAgcmVmc0RhdGEucHVzaCh7XG4gICAgICAgIHNlY3JldEtleTogc2VjcmV0LnNlY3JldE5hbWUsXG4gICAgICAgIHJlbW90ZVJlZjoge1xuICAgICAgICAgIGtleTogc2VjcmV0LnNlY3JldE5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBrOHNSZXNvdXJjZTogYW55ID0ge1xuICAgICAgYXBpVmVyc2lvbjogJ2V4dGVybmFsLXNlY3JldHMuaW8vdjFhbHBoYTEnLFxuICAgICAga2luZDogJ0V4dGVybmFsU2VjcmV0JyxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG5hbWU6IGNvbW1vbi5nZW5lcmljLm5vcm1hbGl6ZU5hbWUoY2xhaW0ubmFtZSksXG4gICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgJ2ZpcmVzdGFydHIuZGV2L2NsYWltLXJlZic6IGAke2NsYWltLmtpbmR9LyR7Y2xhaW0ubmFtZX1gLFxuICAgICAgICAgICdmaXJlc3RhcnRyLmRldi9leHRlcm5hbC1uYW1lJzogY2xhaW0ucHJvdmlkZXJzLmV4dGVybmFsX3NlY3JldHMubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzcGVjOiB7XG4gICAgICAgIHJlZnJlc2hJbnRlcnZhbDpcbiAgICAgICAgICBjbGFpbS5wcm92aWRlcnMuZXh0ZXJuYWxfc2VjcmV0cy5leHRlcm5hbFNlY3JldHMucmVmcmVzaEludGVydmFsIHx8XG4gICAgICAgICAgJzF5JyxcbiAgICAgICAgc2VjcmV0U3RvcmVSZWY6IHtcbiAgICAgICAgICBuYW1lOiBjbGFpbS5wcm92aWRlcnMuZXh0ZXJuYWxfc2VjcmV0cy5zZWNyZXRTdG9yZS5uYW1lLFxuICAgICAgICAgIGtpbmQ6XG4gICAgICAgICAgICBjbGFpbS5wcm92aWRlcnMuZXh0ZXJuYWxfc2VjcmV0cy5zZWNyZXRTdG9yZS5raW5kIHx8ICdTZWNyZXRTdG9yZScsXG4gICAgICAgIH0sXG4gICAgICAgIHRhcmdldDoge1xuICAgICAgICAgIG5hbWU6IGNvbW1vbi5nZW5lcmljLm5vcm1hbGl6ZU5hbWUoY2xhaW0ubmFtZSksXG4gICAgICAgICAgY3JlYXRpb25Qb2xpY3k6ICdPd25lcicsXG4gICAgICAgICAgZGVsZXRpb25Qb2xpY3k6ICdEZWxldGUnLFxuICAgICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiAndjInLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgZGF0YTogdGVtcGxhdGVEYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiByZWZzRGF0YSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGNyOiBBcGlPYmplY3QgPSBuZXcgQXBpT2JqZWN0KHRoaXMsIGBlcy0ke2NsYWltLm5hbWV9YCwgazhzUmVzb3VyY2UpO1xuXG4gICAgZXh0ZXJuYWxTZWNyZXRzLnB1c2goY3IpO1xuICAgIGs4c1Jlc291cmNlcy5wdXNoKGs4c1Jlc291cmNlKTtcblxuICAgIHRoaXMuc2V0KCdleHRlcm5hbFNlY3JldHNSZXNvdXJjZXMnLCBrOHNSZXNvdXJjZXMpO1xuICAgIHRoaXMuc2V0KCdleHRlcm5hbFNlY3JldHMnLCBleHRlcm5hbFNlY3JldHMpO1xuICAgIHJldHVybiBleHRlcm5hbFNlY3JldHM7XG4gIH1cblxuICBwdXNoU2VjcmV0Q2hhcnRzKCk6IEFwaU9iamVjdFtdIHtcbiAgICBjb25zdCBwdXNoU2VjcmV0c0Zyb21DbGFpbSA9XG4gICAgICB0aGlzLmdldCgnY2xhaW0nKS5wcm92aWRlcnMuZXh0ZXJuYWxfc2VjcmV0cy5wdXNoU2VjcmV0cztcblxuICAgIGNvbnN0IGNsYWltID0gdGhpcy5nZXQoJ2NsYWltJyk7XG5cbiAgICBjb25zdCBwdXNoU2VjcmV0czogQXBpT2JqZWN0W10gPSBbXTtcbiAgICBjb25zdCBrOHNSZXNvdXJjZXM6IGFueVtdID0gW107XG5cbiAgICBpZiAoIXB1c2hTZWNyZXRzRnJvbUNsYWltKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwdXNoU2VjcmV0IG9mIHB1c2hTZWNyZXRzRnJvbUNsYWltKSB7XG4gICAgICBjb25zdCBrOHNSZXNvdXJjZTogYW55ID0ge1xuICAgICAgICBhcGlWZXJzaW9uOiAnZXh0ZXJuYWwtc2VjcmV0cy5pby92MWFscGhhMScsXG4gICAgICAgIGtpbmQ6ICdQdXNoU2VjcmV0JyxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBuYW1lOiBjb21tb24uZ2VuZXJpYy5ub3JtYWxpemVOYW1lKFxuICAgICAgICAgICAgYCR7cHVzaFNlY3JldC5zZWNyZXROYW1lfS0ke2NsYWltLm5hbWV9YCxcbiAgICAgICAgICApLFxuICAgICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgICAnZmlyZXN0YXJ0ci5kZXYvY2xhaW0tcmVmJzogYCR7Y2xhaW0ua2luZH0vJHtjbGFpbS5uYW1lfWAsXG4gICAgICAgICAgICAnZmlyZXN0YXJ0ci5kZXYvZXh0ZXJuYWwtbmFtZSc6XG4gICAgICAgICAgICAgIGNsYWltLnByb3ZpZGVycy5leHRlcm5hbF9zZWNyZXRzLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3BlYzoge1xuICAgICAgICAgIHVwZGF0ZVBvbGljeTogcHVzaFNlY3JldC51cGRhdGVQb2xpY3kgfHwgJ1JlcGxhY2UnLFxuICAgICAgICAgIGRlbGV0aW9uUG9saWN5OiBwdXNoU2VjcmV0LmRlbGV0aW9uUG9saWN5IHx8ICdOb25lJyxcbiAgICAgICAgICByZWZyZXNoSW50ZXJ2YWw6IHB1c2hTZWNyZXQucmVmcmVzaEludGVydmFsIHx8ICc1bScsXG4gICAgICAgICAgc2VjcmV0U3RvcmVSZWZzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtpbmQ6XG4gICAgICAgICAgICAgICAgY2xhaW0ucHJvdmlkZXJzLmV4dGVybmFsX3NlY3JldHMuc2VjcmV0U3RvcmUua2luZCB8fFxuICAgICAgICAgICAgICAgICdTZWNyZXRTdG9yZScsXG4gICAgICAgICAgICAgIG5hbWU6IGNsYWltLnByb3ZpZGVycy5leHRlcm5hbF9zZWNyZXRzLnNlY3JldFN0b3JlLm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2VsZWN0b3I6IHtcbiAgICAgICAgICAgIGdlbmVyYXRvclJlZjoge1xuICAgICAgICAgICAgICBhcGlWZXJzaW9uOlxuICAgICAgICAgICAgICAgIHB1c2hTZWNyZXQuZ2VuZXJhdG9yPy5hcGlWZXJzaW9uIHx8XG4gICAgICAgICAgICAgICAgJ2dlbmVyYXRvcnMuZXh0ZXJuYWwtc2VjcmV0cy5pby92MWFscGhhMScsXG4gICAgICAgICAgICAgIGtpbmQ6IHB1c2hTZWNyZXQuZ2VuZXJhdG9yPy5raW5kIHx8ICdQYXNzd29yZCcsXG4gICAgICAgICAgICAgIG5hbWU6IHB1c2hTZWNyZXQuZ2VuZXJhdG9yLm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb252ZXJzaW9uU3RyYXRlZ3k6IHB1c2hTZWNyZXQuY29udmVyc2lvblN0cmF0ZWd5IHx8ICdOb25lJyxcbiAgICAgICAgICAgICAgbWF0Y2g6IHtcbiAgICAgICAgICAgICAgICByZW1vdGVSZWY6IHtcbiAgICAgICAgICAgICAgICAgIHJlbW90ZUtleTogcHVzaFNlY3JldC5zZWNyZXROYW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2VjcmV0S2V5OiBwdXNoU2VjcmV0LmdlbmVyYXRvcj8ub3V0cHV0S2V5IHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjcjogQXBpT2JqZWN0ID0gbmV3IEFwaU9iamVjdChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYHBzLSR7cHVzaFNlY3JldC5zZWNyZXROYW1lfS0ke2NsYWltLm5hbWV9YCxcbiAgICAgICAgazhzUmVzb3VyY2UsXG4gICAgICApO1xuXG4gICAgICBrOHNSZXNvdXJjZXMucHVzaChrOHNSZXNvdXJjZSk7XG5cbiAgICAgIHB1c2hTZWNyZXRzLnB1c2goY3IpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0KCdwdXNoU2VjcmV0c1Jlc291cmNlcycsIGs4c1Jlc291cmNlcyk7XG4gICAgdGhpcy5zZXQoJ3B1c2hTZWNyZXRzJywgcHVzaFNlY3JldHMpO1xuXG4gICAgcmV0dXJuIHB1c2hTZWNyZXRzO1xuICB9XG59XG4iXX0=
|
|
231156
231421
|
|
|
231157
231422
|
/***/ }),
|
|
231158
231423
|
|
|
@@ -231786,9 +232051,11 @@ const system_schema_1 = __importDefault(__nccwpck_require__(46070));
|
|
|
231786
232051
|
const domain_schema_1 = __importDefault(__nccwpck_require__(79338));
|
|
231787
232052
|
const tfworkspace_schema_1 = __importDefault(__nccwpck_require__(35664));
|
|
231788
232053
|
const argodeploy_schema_1 = __importDefault(__nccwpck_require__(99655));
|
|
232054
|
+
const secrets_schema_1 = __importDefault(__nccwpck_require__(80971));
|
|
231789
232055
|
const github_1 = __nccwpck_require__(87320);
|
|
231790
232056
|
const tfworkspaces_1 = __nccwpck_require__(25165);
|
|
231791
232057
|
const argocd_1 = __nccwpck_require__(46);
|
|
232058
|
+
const external_secrets_1 = __nccwpck_require__(67999);
|
|
231792
232059
|
const schemas = {
|
|
231793
232060
|
root: root_schema_1.default,
|
|
231794
232061
|
schemas: [
|
|
@@ -231803,10 +232070,12 @@ const schemas = {
|
|
|
231803
232070
|
github_1.GithubSchemas,
|
|
231804
232071
|
tfworkspaces_1.TerraformSchemas,
|
|
231805
232072
|
argocd_1.ArgoCDSchemas,
|
|
232073
|
+
external_secrets_1.SecretsSchemas,
|
|
232074
|
+
secrets_schema_1.default,
|
|
231806
232075
|
],
|
|
231807
232076
|
};
|
|
231808
232077
|
exports["default"] = schemas;
|
|
231809
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
232078
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xhaW1zL2Jhc2Uvc2NoZW1hcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdFQUFpQztBQUNqQyw4RUFBOEM7QUFDOUMsa0VBQXdDO0FBQ3hDLGdFQUFzQztBQUN0QywwRUFBZ0Q7QUFDaEQsb0VBQTBDO0FBQzFDLG9FQUEwQztBQUMxQyw4RUFBb0Q7QUFDcEQsNEVBQWtEO0FBQ2xELHNFQUE0QztBQUU1Qyx5Q0FBNkM7QUFDN0MscURBQXNEO0FBQ3RELHlDQUE2QztBQUM3Qyw2REFBd0Q7QUFFeEQsTUFBTSxPQUFPLEdBQUc7SUFDZCxJQUFJLEVBQUoscUJBQUk7SUFFSixPQUFPLEVBQUU7UUFDUCw0QkFBVTtRQUVWLHNCQUFVO1FBRVYscUJBQVM7UUFFVCwwQkFBYztRQUVkLHVCQUFXO1FBRVgsdUJBQVc7UUFFWCw0QkFBZ0I7UUFFaEIsMkJBQWU7UUFFZixzQkFBYTtRQUViLCtCQUFnQjtRQUVoQixzQkFBYTtRQUViLGlDQUFjO1FBRWQsd0JBQVk7S0FDYjtDQUNGLENBQUM7QUFFRixrQkFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm9vdCBmcm9tICcuL3Jvb3Quc2NoZW1hJztcbmltcG9ydCBDb21tb25NZXRhIGZyb20gJy4vY29tbW9uLW1ldGEuc2NoZW1hJztcbmltcG9ydCBHcm91cENsYWltIGZyb20gJy4vZ3JvdXAuc2NoZW1hJztcbmltcG9ydCBVc2VyQ2xhaW0gZnJvbSAnLi91c2VyLnNjaGVtYSc7XG5pbXBvcnQgQ29tcG9uZW50Q2xhaW0gZnJvbSAnLi9jb21wb25lbnQuc2NoZW1hJztcbmltcG9ydCBTeXN0ZW1DbGFpbSBmcm9tICcuL3N5c3RlbS5zY2hlbWEnO1xuaW1wb3J0IERvbWFpbkNsYWltIGZyb20gJy4vZG9tYWluLnNjaGVtYSc7XG5pbXBvcnQgVEZXb3Jrc3BhY2VDbGFpbSBmcm9tICcuL3Rmd29ya3NwYWNlLnNjaGVtYSc7XG5pbXBvcnQgQXJnb0RlcGxveUNsYWltIGZyb20gJy4vYXJnb2RlcGxveS5zY2hlbWEnO1xuaW1wb3J0IFNlY3JldHNDbGFpbSBmcm9tICcuL3NlY3JldHMuc2NoZW1hJztcblxuaW1wb3J0IHsgR2l0aHViU2NoZW1hcyB9IGZyb20gJy4uLy4uL2dpdGh1Yic7XG5pbXBvcnQgeyBUZXJyYWZvcm1TY2hlbWFzIH0gZnJvbSAnLi4vLi4vdGZ3b3Jrc3BhY2VzJztcbmltcG9ydCB7IEFyZ29DRFNjaGVtYXMgfSBmcm9tICcuLi8uLi9hcmdvY2QnO1xuaW1wb3J0IHsgU2VjcmV0c1NjaGVtYXMgfSBmcm9tICcuLi8uLi9leHRlcm5hbC1zZWNyZXRzJztcblxuY29uc3Qgc2NoZW1hcyA9IHtcbiAgcm9vdCxcblxuICBzY2hlbWFzOiBbXG4gICAgQ29tbW9uTWV0YSxcblxuICAgIEdyb3VwQ2xhaW0sXG5cbiAgICBVc2VyQ2xhaW0sXG5cbiAgICBDb21wb25lbnRDbGFpbSxcblxuICAgIFN5c3RlbUNsYWltLFxuXG4gICAgRG9tYWluQ2xhaW0sXG5cbiAgICBURldvcmtzcGFjZUNsYWltLFxuXG4gICAgQXJnb0RlcGxveUNsYWltLFxuXG4gICAgR2l0aHViU2NoZW1hcyxcblxuICAgIFRlcnJhZm9ybVNjaGVtYXMsXG5cbiAgICBBcmdvQ0RTY2hlbWFzLFxuXG4gICAgU2VjcmV0c1NjaGVtYXMsXG5cbiAgICBTZWNyZXRzQ2xhaW0sXG4gIF0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBzY2hlbWFzO1xuIl19
|
|
231810
232079
|
|
|
231811
232080
|
/***/ }),
|
|
231812
232081
|
|
|
@@ -231823,6 +232092,45 @@ exports["default"] = {
|
|
|
231823
232092
|
|
|
231824
232093
|
/***/ }),
|
|
231825
232094
|
|
|
232095
|
+
/***/ 80971:
|
|
232096
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
232097
|
+
|
|
232098
|
+
"use strict";
|
|
232099
|
+
|
|
232100
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
232101
|
+
exports["default"] = {
|
|
232102
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
232103
|
+
$id: 'SecretsClaim',
|
|
232104
|
+
definitions: {
|
|
232105
|
+
ArgoDeployClaim: {
|
|
232106
|
+
$id: 'firestartr.dev://common/SecretsClaim',
|
|
232107
|
+
type: 'object',
|
|
232108
|
+
description: '',
|
|
232109
|
+
allOf: [
|
|
232110
|
+
{ $ref: 'firestartr.dev://common/ClaimEnvelope' },
|
|
232111
|
+
{
|
|
232112
|
+
type: 'object',
|
|
232113
|
+
properties: {
|
|
232114
|
+
providers: {
|
|
232115
|
+
type: 'object',
|
|
232116
|
+
properties: {
|
|
232117
|
+
external_secrets: {
|
|
232118
|
+
$ref: 'firestartr.dev://secrets/ExternalSecretsProvider',
|
|
232119
|
+
},
|
|
232120
|
+
},
|
|
232121
|
+
required: ['external_secrets'],
|
|
232122
|
+
},
|
|
232123
|
+
},
|
|
232124
|
+
additionalProperties: true,
|
|
232125
|
+
},
|
|
232126
|
+
],
|
|
232127
|
+
},
|
|
232128
|
+
},
|
|
232129
|
+
};
|
|
232130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy5zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xhaW1zL2Jhc2Uvc2NoZW1hcy9zZWNyZXRzLnNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFlO0lBQ2IsT0FBTyxFQUFFLHlDQUF5QztJQUVsRCxHQUFHLEVBQUUsY0FBYztJQUVuQixXQUFXLEVBQUU7UUFDWCxlQUFlLEVBQUU7WUFDZixHQUFHLEVBQUUsc0NBQXNDO1lBRTNDLElBQUksRUFBRSxRQUFRO1lBRWQsV0FBVyxFQUFFLEVBQUU7WUFFZixLQUFLLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsdUNBQXVDLEVBQUU7Z0JBRWpEO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUVkLFVBQVUsRUFBRTt3QkFDVixTQUFTLEVBQUU7NEJBQ1QsSUFBSSxFQUFFLFFBQVE7NEJBRWQsVUFBVSxFQUFFO2dDQUNWLGdCQUFnQixFQUFFO29DQUNoQixJQUFJLEVBQUUsa0RBQWtEO2lDQUN6RDs2QkFDRjs0QkFFRCxRQUFRLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt5QkFDL0I7cUJBQ0Y7b0JBRUQsb0JBQW9CLEVBQUUsSUFBSTtpQkFDM0I7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICAkc2NoZW1hOiAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjJyxcblxuICAkaWQ6ICdTZWNyZXRzQ2xhaW0nLFxuXG4gIGRlZmluaXRpb25zOiB7XG4gICAgQXJnb0RlcGxveUNsYWltOiB7XG4gICAgICAkaWQ6ICdmaXJlc3RhcnRyLmRldjovL2NvbW1vbi9TZWNyZXRzQ2xhaW0nLFxuXG4gICAgICB0eXBlOiAnb2JqZWN0JyxcblxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuXG4gICAgICBhbGxPZjogW1xuICAgICAgICB7ICRyZWY6ICdmaXJlc3RhcnRyLmRldjovL2NvbW1vbi9DbGFpbUVudmVsb3BlJyB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcblxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHByb3ZpZGVyczoge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcblxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2VjcmV0czoge1xuICAgICAgICAgICAgICAgICAgJHJlZjogJ2ZpcmVzdGFydHIuZGV2Oi8vc2VjcmV0cy9FeHRlcm5hbFNlY3JldHNQcm92aWRlcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICByZXF1aXJlZDogWydleHRlcm5hbF9zZWNyZXRzJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
|
|
232131
|
+
|
|
232132
|
+
/***/ }),
|
|
232133
|
+
|
|
231826
232134
|
/***/ 46070:
|
|
231827
232135
|
/***/ ((__unused_webpack_module, exports) => {
|
|
231828
232136
|
|
|
@@ -231876,6 +232184,9 @@ exports["default"] = {
|
|
|
231876
232184
|
{
|
|
231877
232185
|
type: 'object',
|
|
231878
232186
|
properties: {
|
|
232187
|
+
resourceType: {
|
|
232188
|
+
type: 'string',
|
|
232189
|
+
},
|
|
231879
232190
|
providers: {
|
|
231880
232191
|
type: 'object',
|
|
231881
232192
|
properties: {
|
|
@@ -231892,7 +232203,7 @@ exports["default"] = {
|
|
|
231892
232203
|
},
|
|
231893
232204
|
},
|
|
231894
232205
|
};
|
|
231895
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
232206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZ3b3Jrc3BhY2Uuc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NsYWltcy9iYXNlL3NjaGVtYXMvdGZ3b3Jrc3BhY2Uuc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWU7SUFDYixPQUFPLEVBQUUseUNBQXlDO0lBRWxELEdBQUcsRUFBRSxrQkFBa0I7SUFFdkIsV0FBVyxFQUFFO1FBQ1gsZ0JBQWdCLEVBQUU7WUFDaEIsR0FBRyxFQUFFLDBDQUEwQztZQUUvQyxJQUFJLEVBQUUsUUFBUTtZQUVkLFdBQVcsRUFBRSx1QkFBdUI7WUFFcEMsS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLHVDQUF1QyxFQUFFO2dCQUVqRDtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFFZCxVQUFVLEVBQUU7d0JBQ1YsWUFBWSxFQUFFOzRCQUNaLElBQUksRUFBRSxRQUFRO3lCQUNmO3dCQUVELFNBQVMsRUFBRTs0QkFDVCxJQUFJLEVBQUUsUUFBUTs0QkFFZCxVQUFVLEVBQUU7Z0NBQ1YsU0FBUyxFQUFFO29DQUNULElBQUksRUFBRSw4Q0FBOEM7aUNBQ3JEOzZCQUNGOzRCQUVELFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQzt5QkFDeEI7cUJBQ0Y7b0JBRUQsb0JBQW9CLEVBQUUsSUFBSTtpQkFDM0I7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICAkc2NoZW1hOiAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjJyxcblxuICAkaWQ6ICdURldvcmtzcGFjZUNsYWltJyxcblxuICBkZWZpbml0aW9uczoge1xuICAgIFRGV29ya3NwYWNlQ2xhaW06IHtcbiAgICAgICRpZDogJ2ZpcmVzdGFydHIuZGV2Oi8vY29tbW9uL1RGV29ya3NwYWNlQ2xhaW0nLFxuXG4gICAgICB0eXBlOiAnb2JqZWN0JyxcblxuICAgICAgZGVzY3JpcHRpb246ICdBIFRGIFdvcmtmc3BhY2UgY2xhaW0nLFxuXG4gICAgICBhbGxPZjogW1xuICAgICAgICB7ICRyZWY6ICdmaXJlc3RhcnRyLmRldjovL2NvbW1vbi9DbGFpbUVudmVsb3BlJyB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcblxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHJlc291cmNlVHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHByb3ZpZGVyczoge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcblxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgdGVycmFmb3JtOiB7XG4gICAgICAgICAgICAgICAgICAkcmVmOiAnZmlyZXN0YXJ0ci5kZXY6Ly90ZXJyYWZvcm0vVGVycmFmb3JtUHJvdmlkZXInLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsndGVycmFmb3JtJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
|
|
231896
232207
|
|
|
231897
232208
|
/***/ }),
|
|
231898
232209
|
|
|
@@ -232022,6 +232333,129 @@ exports.schema = 'firestartr.dev://common/TFWorkspaceClaim';
|
|
|
232022
232333
|
|
|
232023
232334
|
/***/ }),
|
|
232024
232335
|
|
|
232336
|
+
/***/ 37747:
|
|
232337
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
232338
|
+
|
|
232339
|
+
"use strict";
|
|
232340
|
+
|
|
232341
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
232342
|
+
exports["default"] = {
|
|
232343
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
232344
|
+
$id: 'ExternalSecretsProvider',
|
|
232345
|
+
definitions: {
|
|
232346
|
+
ExternalSecretsProvider: {
|
|
232347
|
+
$id: 'firestartr.dev://secrets/ExternalSecretsProvider',
|
|
232348
|
+
type: 'object',
|
|
232349
|
+
description: 'A external secrets claim provider',
|
|
232350
|
+
allOf: [
|
|
232351
|
+
{
|
|
232352
|
+
$ref: 'firestartr.dev://common/ClaimProviderEnvelope',
|
|
232353
|
+
},
|
|
232354
|
+
{
|
|
232355
|
+
type: 'object',
|
|
232356
|
+
properties: {
|
|
232357
|
+
secretStore: {
|
|
232358
|
+
type: 'object',
|
|
232359
|
+
properties: {
|
|
232360
|
+
name: { type: 'string' },
|
|
232361
|
+
kind: {
|
|
232362
|
+
type: 'string',
|
|
232363
|
+
enum: ['SecretStore', 'ClusterSecretStore'],
|
|
232364
|
+
},
|
|
232365
|
+
},
|
|
232366
|
+
required: ['name'],
|
|
232367
|
+
},
|
|
232368
|
+
pushSecrets: {
|
|
232369
|
+
type: 'array',
|
|
232370
|
+
items: {
|
|
232371
|
+
type: 'object',
|
|
232372
|
+
properties: {
|
|
232373
|
+
data: { type: 'object' },
|
|
232374
|
+
template: { type: 'object' },
|
|
232375
|
+
secretName: { type: 'string' },
|
|
232376
|
+
refreshInterval: { type: 'string' },
|
|
232377
|
+
generator: {
|
|
232378
|
+
type: 'object',
|
|
232379
|
+
properties: {
|
|
232380
|
+
name: { type: 'string' },
|
|
232381
|
+
kind: {
|
|
232382
|
+
type: 'string',
|
|
232383
|
+
enum: [
|
|
232384
|
+
'ACRAccessToken',
|
|
232385
|
+
'ClusterGenerator',
|
|
232386
|
+
'ECRAuthorizationToken',
|
|
232387
|
+
'Fake',
|
|
232388
|
+
'GCRAccessToken',
|
|
232389
|
+
'GithubAccessToken',
|
|
232390
|
+
'QuayAccessToken',
|
|
232391
|
+
'Password',
|
|
232392
|
+
'STSSessionToken',
|
|
232393
|
+
'UUID',
|
|
232394
|
+
'VaultDynamicSecret',
|
|
232395
|
+
'Webhook',
|
|
232396
|
+
'Grafana',
|
|
232397
|
+
],
|
|
232398
|
+
},
|
|
232399
|
+
apiVersion: {
|
|
232400
|
+
type: 'string',
|
|
232401
|
+
},
|
|
232402
|
+
conversionStrategy: {
|
|
232403
|
+
type: 'string',
|
|
232404
|
+
},
|
|
232405
|
+
outputKey: {
|
|
232406
|
+
type: 'string',
|
|
232407
|
+
},
|
|
232408
|
+
},
|
|
232409
|
+
required: ['name'],
|
|
232410
|
+
},
|
|
232411
|
+
},
|
|
232412
|
+
required: ['secretName', 'generator'],
|
|
232413
|
+
},
|
|
232414
|
+
},
|
|
232415
|
+
externalSecrets: {
|
|
232416
|
+
type: 'object',
|
|
232417
|
+
properties: {
|
|
232418
|
+
refreshInterval: { type: 'string' },
|
|
232419
|
+
secrets: {
|
|
232420
|
+
type: 'array',
|
|
232421
|
+
items: {
|
|
232422
|
+
additionalProperties: false,
|
|
232423
|
+
type: 'object',
|
|
232424
|
+
properties: {
|
|
232425
|
+
secretName: { type: 'string' },
|
|
232426
|
+
},
|
|
232427
|
+
required: ['secretName'],
|
|
232428
|
+
},
|
|
232429
|
+
},
|
|
232430
|
+
},
|
|
232431
|
+
},
|
|
232432
|
+
},
|
|
232433
|
+
required: ['secretStore'],
|
|
232434
|
+
},
|
|
232435
|
+
],
|
|
232436
|
+
},
|
|
232437
|
+
},
|
|
232438
|
+
};
|
|
232439
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtc2VjcmV0cy5zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xhaW1zL2V4dGVybmFsLXNlY3JldHMvZXh0ZXJuYWwtc2VjcmV0cy5zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQkFBZTtJQUNiLE9BQU8sRUFBRSx5Q0FBeUM7SUFDbEQsR0FBRyxFQUFFLHlCQUF5QjtJQUM5QixXQUFXLEVBQUU7UUFDWCx1QkFBdUIsRUFBRTtZQUN2QixHQUFHLEVBQUUsa0RBQWtEO1lBQ3ZELElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLG1DQUFtQztZQUNoRCxLQUFLLEVBQUU7Z0JBQ0w7b0JBQ0UsSUFBSSxFQUFFLCtDQUErQztpQkFDdEQ7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLFdBQVcsRUFBRTs0QkFDWCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxVQUFVLEVBQUU7Z0NBQ1YsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDeEIsSUFBSSxFQUFFO29DQUNKLElBQUksRUFBRSxRQUFRO29DQUNkLElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQztpQ0FDNUM7NkJBQ0Y7NEJBQ0QsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO3lCQUNuQjt3QkFDRCxXQUFXLEVBQUU7NEJBQ1gsSUFBSSxFQUFFLE9BQU87NEJBQ2IsS0FBSyxFQUFFO2dDQUNMLElBQUksRUFBRSxRQUFRO2dDQUNkLFVBQVUsRUFBRTtvQ0FDVixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29DQUN4QixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29DQUM1QixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29DQUM5QixlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29DQUNuQyxTQUFTLEVBQUU7d0NBQ1QsSUFBSSxFQUFFLFFBQVE7d0NBQ2QsVUFBVSxFQUFFOzRDQUNWLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NENBQ3hCLElBQUksRUFBRTtnREFDSixJQUFJLEVBQUUsUUFBUTtnREFDZCxJQUFJLEVBQUU7b0RBQ0osZ0JBQWdCO29EQUNoQixrQkFBa0I7b0RBQ2xCLHVCQUF1QjtvREFDdkIsTUFBTTtvREFDTixnQkFBZ0I7b0RBQ2hCLG1CQUFtQjtvREFDbkIsaUJBQWlCO29EQUNqQixVQUFVO29EQUNWLGlCQUFpQjtvREFDakIsTUFBTTtvREFDTixvQkFBb0I7b0RBQ3BCLFNBQVM7b0RBQ1QsU0FBUztpREFDVjs2Q0FDRjs0Q0FDRCxVQUFVLEVBQUU7Z0RBQ1YsSUFBSSxFQUFFLFFBQVE7NkNBQ2Y7NENBQ0Qsa0JBQWtCLEVBQUU7Z0RBQ2xCLElBQUksRUFBRSxRQUFROzZDQUNmOzRDQUNELFNBQVMsRUFBRTtnREFDVCxJQUFJLEVBQUUsUUFBUTs2Q0FDZjt5Q0FDRjt3Q0FDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUNBQ25CO2lDQUNGO2dDQUNELFFBQVEsRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7NkJBQ3RDO3lCQUNGO3dCQUNELGVBQWUsRUFBRTs0QkFDZixJQUFJLEVBQUUsUUFBUTs0QkFDZCxVQUFVLEVBQUU7Z0NBQ1YsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDbkMsT0FBTyxFQUFFO29DQUNQLElBQUksRUFBRSxPQUFPO29DQUNiLEtBQUssRUFBRTt3Q0FDTCxvQkFBb0IsRUFBRSxLQUFLO3dDQUMzQixJQUFJLEVBQUUsUUFBUTt3Q0FDZCxVQUFVLEVBQUU7NENBQ1YsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt5Q0FDL0I7d0NBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO3FDQUN6QjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQzFCO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgJHNjaGVtYTogJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIycsXG4gICRpZDogJ0V4dGVybmFsU2VjcmV0c1Byb3ZpZGVyJyxcbiAgZGVmaW5pdGlvbnM6IHtcbiAgICBFeHRlcm5hbFNlY3JldHNQcm92aWRlcjoge1xuICAgICAgJGlkOiAnZmlyZXN0YXJ0ci5kZXY6Ly9zZWNyZXRzL0V4dGVybmFsU2VjcmV0c1Byb3ZpZGVyJyxcbiAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGV4dGVybmFsIHNlY3JldHMgY2xhaW0gcHJvdmlkZXInLFxuICAgICAgYWxsT2Y6IFtcbiAgICAgICAge1xuICAgICAgICAgICRyZWY6ICdmaXJlc3RhcnRyLmRldjovL2NvbW1vbi9DbGFpbVByb3ZpZGVyRW52ZWxvcGUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgc2VjcmV0U3RvcmU6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAga2luZDoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICBlbnVtOiBbJ1NlY3JldFN0b3JlJywgJ0NsdXN0ZXJTZWNyZXRTdG9yZSddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ25hbWUnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwdXNoU2VjcmV0czoge1xuICAgICAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGE6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB7IHR5cGU6ICdvYmplY3QnIH0sXG4gICAgICAgICAgICAgICAgICBzZWNyZXROYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgICByZWZyZXNoSW50ZXJ2YWw6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcjoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgICAgICAgICBraW5kOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW06IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FDUkFjY2Vzc1Rva2VuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NsdXN0ZXJHZW5lcmF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnRUNSQXV0aG9yaXphdGlvblRva2VuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zha2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnR0NSQWNjZXNzVG9rZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnR2l0aHViQWNjZXNzVG9rZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnUXVheUFjY2Vzc1Rva2VuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NUU1Nlc3Npb25Ub2tlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdVVUlEJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZhdWx0RHluYW1pY1NlY3JldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdXZWJob29rJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dyYWZhbmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGFwaVZlcnNpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvblN0cmF0ZWd5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dEtleToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnbmFtZSddLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3NlY3JldE5hbWUnLCAnZ2VuZXJhdG9yJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXh0ZXJuYWxTZWNyZXRzOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgcmVmcmVzaEludGVydmFsOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgc2VjcmV0czoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzZWNyZXROYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3NlY3JldE5hbWUnXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWydzZWNyZXRTdG9yZSddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
|
|
232440
|
+
|
|
232441
|
+
/***/ }),
|
|
232442
|
+
|
|
232443
|
+
/***/ 67999:
|
|
232444
|
+
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
|
|
232445
|
+
|
|
232446
|
+
"use strict";
|
|
232447
|
+
|
|
232448
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
232449
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
232450
|
+
};
|
|
232451
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
232452
|
+
exports.SecretsSchemas = void 0;
|
|
232453
|
+
const external_secrets_schema_1 = __importDefault(__nccwpck_require__(37747));
|
|
232454
|
+
exports.SecretsSchemas = [external_secrets_schema_1.default];
|
|
232455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xhaW1zL2V4dGVybmFsLXNlY3JldHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0ZBQW1FO0FBRXRELFFBQUEsY0FBYyxHQUFHLENBQUMsaUNBQTBCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHRlcm5hbFNlY3JldHNDbGFpbVNjaGVtYSBmcm9tICcuL2V4dGVybmFsLXNlY3JldHMuc2NoZW1hJztcblxuZXhwb3J0IGNvbnN0IFNlY3JldHNTY2hlbWFzID0gW0V4dGVybmFsU2VjcmV0c0NsYWltU2NoZW1hXTtcbiJdfQ==
|
|
232456
|
+
|
|
232457
|
+
/***/ }),
|
|
232458
|
+
|
|
232025
232459
|
/***/ 21911:
|
|
232026
232460
|
/***/ ((__unused_webpack_module, exports) => {
|
|
232027
232461
|
|
|
@@ -232049,17 +232483,14 @@ exports["default"] = {
|
|
|
232049
232483
|
type: 'string',
|
|
232050
232484
|
enum: ['private', 'public', 'internal'],
|
|
232051
232485
|
},
|
|
232052
|
-
defaultBranch: {
|
|
232053
|
-
type: 'string',
|
|
232054
|
-
},
|
|
232055
232486
|
},
|
|
232056
|
-
required: ['visibility', '
|
|
232487
|
+
required: ['visibility', 'org'],
|
|
232057
232488
|
},
|
|
232058
232489
|
],
|
|
232059
232490
|
},
|
|
232060
232491
|
},
|
|
232061
232492
|
};
|
|
232062
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
232493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LnNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGFpbXMvZ2l0aHViL2NvbXBvbmVudC5zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQkFBZTtJQUNiLE9BQU8sRUFBRSx5Q0FBeUM7SUFFbEQsR0FBRyxFQUFFLHNCQUFzQjtJQUUzQixXQUFXLEVBQUU7UUFDWCxvQkFBb0IsRUFBRTtZQUNwQixHQUFHLEVBQUUsOENBQThDO1lBRW5ELElBQUksRUFBRSxRQUFRO1lBRWQsV0FBVyxFQUFFLDBCQUEwQjtZQUV2QyxLQUFLLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsK0NBQStDLEVBQUU7Z0JBRXpEO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUVkLFVBQVUsRUFBRTt3QkFDVixHQUFHLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQVE7NEJBRWQsV0FBVyxFQUFFLDhCQUE4Qjt5QkFDNUM7d0JBRUQsVUFBVSxFQUFFOzRCQUNWLElBQUksRUFBRSxRQUFROzRCQUVkLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO3lCQUN4QztxQkFDRjtvQkFFRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO2lCQUNoQzthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gICRzY2hlbWE6ICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSMnLFxuXG4gICRpZDogJ0dpdGh1YkNvbXBvbmVudENsYWltJyxcblxuICBkZWZpbml0aW9uczoge1xuICAgIEdpdGh1YkNvbXBvbmVudENsYWltOiB7XG4gICAgICAkaWQ6ICdmaXJlc3RhcnRyLmRldjovL2dpdGh1Yi9HaXRodWJDb21wb25lbnRDbGFpbScsXG5cbiAgICAgIHR5cGU6ICdvYmplY3QnLFxuXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgY29tcG9uZW50IGdpdGh1YiBjbGFpbScsXG5cbiAgICAgIGFsbE9mOiBbXG4gICAgICAgIHsgJHJlZjogJ2ZpcmVzdGFydHIuZGV2Oi8vY29tbW9uL0NsYWltUHJvdmlkZXJFbnZlbG9wZScgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG5cbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBvcmc6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG5cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZ2l0aHViIG9yZ2FuaXphdGlvbiBuYW1lJyxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG5cbiAgICAgICAgICAgICAgZW51bTogWydwcml2YXRlJywgJ3B1YmxpYycsICdpbnRlcm5hbCddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndmlzaWJpbGl0eScsICdvcmcnXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
|
|
232063
232494
|
|
|
232064
232495
|
/***/ }),
|
|
232065
232496
|
|
|
@@ -232782,6 +233213,7 @@ var AllowedProviders;
|
|
|
232782
233213
|
AllowedProviders["terraform"] = "terraform";
|
|
232783
233214
|
AllowedProviders["catalog"] = "catalog";
|
|
232784
233215
|
AllowedProviders["argocd"] = "argocd";
|
|
233216
|
+
AllowedProviders["externalSecrets"] = "externalSecrets";
|
|
232785
233217
|
})(AllowedProviders = exports.AllowedProviders || (exports.AllowedProviders = {}));
|
|
232786
233218
|
let configuredProvider = null;
|
|
232787
233219
|
function configureProvider(provider) {
|
|
@@ -232817,7 +233249,7 @@ const PROVIDER_CLAIM_CR_MAP = {
|
|
|
232817
233249
|
ComponentClaim: 'Component',
|
|
232818
233250
|
},
|
|
232819
233251
|
};
|
|
232820
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
233252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFZQSw0REFBNEQ7QUFDNUQsTUFBTSxnQkFBZ0IsR0FBUSxFQUFFLENBQUM7QUFDakMsTUFBTSxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7QUFFdEMsU0FBZ0IsZ0JBQWdCLENBQUMsYUFBdUI7SUFDdEQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0Isa0JBQWtCO0lBQ2hDLE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQUZELGdEQUVDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLFFBQTBCO0lBQ2hELE1BQU0sSUFBSSxHQUFXLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFFBQVEsZUFBZSxDQUFDLENBQUM7SUFDdkQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBSkQsMEJBSUM7QUFFRCxTQUFnQixPQUFPLENBQUMsUUFBMEIsRUFBRSxTQUFpQjtJQUNuRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUZELDBCQUVDO0FBRUQsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBRTNCLFNBQWdCLGlCQUFpQjtJQUMvQixPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRkQsOENBRUM7QUFDRCxTQUFnQixpQkFBaUIsQ0FBQyxPQUFnQjtJQUNoRCxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBQzNCLENBQUM7QUFGRCw4Q0FFQztBQUVELElBQVksZ0JBUVg7QUFSRCxXQUFZLGdCQUFnQjtJQUMxQiwrQkFBVyxDQUFBO0lBQ1gscUNBQWlCLENBQUE7SUFDakIsNkJBQVMsQ0FBQTtJQUNULDJDQUF1QixDQUFBO0lBQ3ZCLHVDQUFtQixDQUFBO0lBQ25CLHFDQUFpQixDQUFBO0lBQ2pCLHVEQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFSVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQVEzQjtBQUVELElBQUksa0JBQWtCLEdBQTRCLElBQUksQ0FBQztBQUV2RCxTQUFnQixpQkFBaUIsQ0FBQyxRQUEwQjtJQUMxRCxJQUFJLGtCQUFrQjtRQUNwQixNQUFNLElBQUksV0FBVyxDQUNuQiw2QkFBNkIsRUFDN0IsWUFBWSxrQkFBa0IscUJBQXFCLENBQ3BELENBQUM7SUFFSixrQkFBa0IsR0FBRyxRQUFRLENBQUM7QUFDaEMsQ0FBQztBQVJELDhDQVFDO0FBRUQsTUFBTSxXQUFZLFNBQVEsS0FBSztJQUM3QixZQUFZLFNBQWlCLEVBQUUsT0FBZTtRQUM1QyxLQUFLLENBQUMsR0FBRyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFFRCxTQUFnQix5QkFBeUIsQ0FDdkMsV0FBbUIscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFckQsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBSkQsOERBSUM7QUFFRCxTQUFnQixxQkFBcUI7SUFDbkMsSUFBSSxDQUFDLGtCQUFrQjtRQUNyQixNQUFNLElBQUksV0FBVyxDQUNuQix1QkFBdUIsRUFDdkIseURBQXlELENBQzFELENBQUM7SUFFSixPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFSRCxzREFRQztBQUVELE1BQU0scUJBQXFCLEdBQTJCO0lBQ3BELENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7UUFDcEMsVUFBVSxFQUFFLHVCQUF1QjtRQUVuQyxTQUFTLEVBQUUsNEJBQTRCO1FBRXZDLGNBQWMsRUFBRSw0QkFBNEI7S0FDN0M7SUFFRCxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO1FBQ3JDLFVBQVUsRUFBRSxPQUFPO1FBRW5CLFNBQVMsRUFBRSxNQUFNO1FBRWpCLGNBQWMsRUFBRSxXQUFXO0tBQzVCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFsbG93ZWQgcGF0aCBuYW1lcyBmb3Igb3VyIFBBVEhfVkFSSUFCTEVTIGxpc3QsIGlmIGFjY2Vzc2VkIHdpdGhpblxuLy8gb3VyIGdldFBhdGgoKSBhbmQgc2V0UGF0aCgpIGZ1bmN0aW9uc1xuZXhwb3J0IHR5cGUgQWxsb3dlZFBhdGhOYW1lcyA9XG4gIHwgJ2luaXRpYWxpemVycydcbiAgfCAnZ2xvYmFscydcbiAgfCAnY3JzJ1xuICB8ICdjbGFpbXMnXG4gIHwgJ2NsYWltc0RlZmF1bHRzJ1xuICB8ICdkb21haW5zJ1xuICB8ICdzeXN0ZW1zJ1xuICB8ICcuZ2l0aHViJztcblxuLy8gTGlzdCBvZiBjdXJyZW50bHkgc2V0IHBhdGggdmFyaWFibGVzIGZvciBlYWNoIGVudGl0eSB0eXBlXG5jb25zdCBfX1BBVEhfVkFSSUFCTEVTOiBhbnkgPSB7fTtcbmNvbnN0IF9fRVhDTFVERURfUEFUSFM6IHN0cmluZ1tdID0gW107XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFeGNsdWRlZFBhdGhzKGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdKSB7XG4gIF9fRVhDTFVERURfUEFUSFMucHVzaCguLi5leGNsdWRlZFBhdGhzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZGl0aW9uYWxQYXRocygpIHtcbiAgcmV0dXJuIF9fRVhDTFVERURfUEFUSFM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoKHBhdGhOYW1lOiBBbGxvd2VkUGF0aE5hbWVzKSB7XG4gIGNvbnN0IHBhdGg6IHN0cmluZyA9IF9fUEFUSF9WQVJJQUJMRVNbcGF0aE5hbWVdO1xuICBpZiAoIXBhdGgpIHRocm93IG5ldyBFcnJvcihgJHtwYXRoTmFtZX0gcGF0aCBub3Qgc2V0YCk7XG4gIHJldHVybiBwYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGF0aChwYXRoTmFtZTogQWxsb3dlZFBhdGhOYW1lcywgcGF0aFZhbHVlOiBzdHJpbmcpIHtcbiAgX19QQVRIX1ZBUklBQkxFU1twYXRoTmFtZV0gPSBwYXRoVmFsdWU7XG59XG5cbmxldCByZW5hbWVzRW5hYmxlZCA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVuYW1lc0VuYWJsZWQoKSB7XG4gIHJldHVybiByZW5hbWVzRW5hYmxlZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW5hbWVzRW5hYmxlZChlbmFibGVkOiBib29sZWFuKSB7XG4gIHJlbmFtZXNFbmFibGVkID0gZW5hYmxlZDtcbn1cblxuZXhwb3J0IGVudW0gQWxsb3dlZFByb3ZpZGVycyB7XG4gIGFsbCA9ICdhbGwnLFxuICBnaXRodWIgPSAnZ2l0aHViJyxcbiAgYXogPSAnYXonLFxuICB0ZXJyYWZvcm0gPSAndGVycmFmb3JtJyxcbiAgY2F0YWxvZyA9ICdjYXRhbG9nJyxcbiAgYXJnb2NkID0gJ2FyZ29jZCcsXG4gIGV4dGVybmFsU2VjcmV0cyA9ICdleHRlcm5hbFNlY3JldHMnLFxufVxuXG5sZXQgY29uZmlndXJlZFByb3ZpZGVyOiBBbGxvd2VkUHJvdmlkZXJzIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVQcm92aWRlcihwcm92aWRlcjogQWxsb3dlZFByb3ZpZGVycykge1xuICBpZiAoY29uZmlndXJlZFByb3ZpZGVyKVxuICAgIHRocm93IG5ldyBDb25maWdFcnJvcihcbiAgICAgICdQcm92aWRlciBhbHJlYWR5IGNvbmZpZ3VyZWQnLFxuICAgICAgYFByb3ZpZGVyICR7Y29uZmlndXJlZFByb3ZpZGVyfSBhbHJlYWR5IGNvbmZpZ3VyZWRgLFxuICAgICk7XG5cbiAgY29uZmlndXJlZFByb3ZpZGVyID0gcHJvdmlkZXI7XG59XG5cbmNsYXNzIENvbmZpZ0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihlcnJvclR5cGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYCR7ZXJyb3JUeXBlfTogJHttZXNzYWdlfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RlZEtpbmRDbGFpbUNyTWFwKFxuICBwcm92aWRlcjogc3RyaW5nID0gZ2V0Q29uZmlndXJlZFByb3ZpZGVyKCkudG9TdHJpbmcoKSxcbikge1xuICByZXR1cm4gUFJPVklERVJfQ0xBSU1fQ1JfTUFQW3Byb3ZpZGVyLnRvU3RyaW5nKCldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlndXJlZFByb3ZpZGVyKCkge1xuICBpZiAoIWNvbmZpZ3VyZWRQcm92aWRlcilcbiAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoXG4gICAgICAnUHJvdmlkZXIgY29uZmlnIGVycm9yJyxcbiAgICAgICdObyBwcm92aWRlciBjb25maWd1cmVkLCBwbGVhc2UgY2FsbCBjb25maWd1cmVQcm92aWRlcigpJyxcbiAgICApO1xuXG4gIHJldHVybiBjb25maWd1cmVkUHJvdmlkZXI7XG59XG5cbmNvbnN0IFBST1ZJREVSX0NMQUlNX0NSX01BUDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHtcbiAgW0FsbG93ZWRQcm92aWRlcnMuZ2l0aHViLnRvU3RyaW5nKCldOiB7XG4gICAgR3JvdXBDbGFpbTogJ0ZpcmVzdGFydHJHaXRodWJHcm91cCcsXG5cbiAgICBVc2VyQ2xhaW06ICdGaXJlc3RhcnRyR2l0aHViTWVtYmVyc2hpcCcsXG5cbiAgICBDb21wb25lbnRDbGFpbTogJ0ZpcmVzdGFydHJHaXRodWJSZXBvc2l0b3J5JyxcbiAgfSxcblxuICBbQWxsb3dlZFByb3ZpZGVycy5jYXRhbG9nLnRvU3RyaW5nKCldOiB7XG4gICAgR3JvdXBDbGFpbTogJ0dyb3VwJyxcblxuICAgIFVzZXJDbGFpbTogJ1VzZXInLFxuXG4gICAgQ29tcG9uZW50Q2xhaW06ICdDb21wb25lbnQnLFxuICB9LFxufTtcbiJdfQ==
|
|
232821
233253
|
|
|
232822
233254
|
/***/ }),
|
|
232823
233255
|
|
|
@@ -233474,10 +233906,10 @@ class BranchStrategiesExpander extends base_1.GlobalSection {
|
|
|
233474
233906
|
}
|
|
233475
233907
|
async __patches(claim, previousCR) {
|
|
233476
233908
|
let strategyGlobals = false;
|
|
233477
|
-
if (!['none', 'custom'].includes(claim.providers.github.branchStrategy)) {
|
|
233478
|
-
strategyGlobals = this.data.values.strategies.find((strategy) => strategy.name === claim.providers.github.branchStrategy);
|
|
233909
|
+
if (!['none', 'custom'].includes(claim.providers.github.branchStrategy.name)) {
|
|
233910
|
+
strategyGlobals = this.data.values.strategies.find((strategy) => strategy.name === claim.providers.github.branchStrategy.name);
|
|
233479
233911
|
if (!strategyGlobals)
|
|
233480
|
-
throw new Error(`No branch strategy global found for ${claim.providers.github.branchStrategy}`);
|
|
233912
|
+
throw new Error(`No branch strategy global found for ${claim.providers.github.branchStrategy.name}`);
|
|
233481
233913
|
}
|
|
233482
233914
|
return [
|
|
233483
233915
|
{
|
|
@@ -233494,13 +233926,15 @@ class BranchStrategiesExpander extends base_1.GlobalSection {
|
|
|
233494
233926
|
cr.spec.branchProtections =
|
|
233495
233927
|
strategyGlobals.values.branchProtections;
|
|
233496
233928
|
}
|
|
233497
|
-
else if (claim.providers.github.branchStrategy === 'none') {
|
|
233498
|
-
cr.spec.repo.defaultBranch =
|
|
233929
|
+
else if (claim.providers.github.branchStrategy.name === 'none') {
|
|
233930
|
+
cr.spec.repo.defaultBranch =
|
|
233931
|
+
claim.providers.github.branchStrategy.defaultBranch;
|
|
233499
233932
|
cr.spec.branchProtections = [];
|
|
233500
233933
|
}
|
|
233501
|
-
else if (claim.providers.github.branchStrategy === 'custom' &&
|
|
233934
|
+
else if (claim.providers.github.branchStrategy.name === 'custom' &&
|
|
233502
233935
|
previousCR) {
|
|
233503
|
-
cr.spec.repo.defaultBranch =
|
|
233936
|
+
cr.spec.repo.defaultBranch =
|
|
233937
|
+
claim.providers.github.branchStrategy.defaultBranch;
|
|
233504
233938
|
cr.spec.branchProtections = previousCR.spec.branchProtections;
|
|
233505
233939
|
}
|
|
233506
233940
|
delete cr.metadata.annotations[catalog_common_1.default.generic.getFirestartrAnnotation('branchStrategy')];
|
|
@@ -233515,7 +233949,7 @@ class BranchStrategiesExpander extends base_1.GlobalSection {
|
|
|
233515
233949
|
}
|
|
233516
233950
|
BranchStrategiesExpander.fileName = 'expander_branch_strategies';
|
|
233517
233951
|
exports.BranchStrategiesExpander = BranchStrategiesExpander;
|
|
233518
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
233952
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoU3RyYXRlZ2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL2JyYW5jaFN0cmF0ZWdpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsaUNBQXVDO0FBQ3ZDLG9FQUFvQztBQUVwQyxNQUFhLHdCQUF5QixTQUFRLG9CQUFhO0lBS3pELEtBQUssQ0FBQyxVQUFVO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxJQUFTO1FBQ25CLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVBkLHdCQUFtQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFTL0IsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUNiLEtBQVUsRUFDVixVQUFlO1FBRWYsSUFBSSxlQUFlLEdBQVEsS0FBSyxDQUFDO1FBRWpDLElBQ0UsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUN4RTtZQUNBLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNoRCxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQ2hCLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDL0QsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlO2dCQUNsQixNQUFNLElBQUksS0FBSyxDQUNiLHVDQUF1QyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQ3BGLENBQUM7U0FDTDtRQUVELE9BQU87WUFDTDtnQkFDRSxRQUFRLENBQUMsRUFBTztvQkFDZCxPQUFPLENBQ0wsQ0FBQyxlQUFlO3dCQUNoQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7NEJBQ3pCLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBYTs0QkFDcEMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0NBQ3ZCLGVBQWUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FDOUMsQ0FBQztnQkFDSixDQUFDO2dCQUVELEtBQUssQ0FBQyxFQUFPO29CQUNYLElBQUksZUFBZSxFQUFFO3dCQUNuQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7d0JBRWxFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCOzRCQUN2QixlQUFlLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO3FCQUM1Qzt5QkFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO3dCQUNoRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhOzRCQUN4QixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO3dCQUV0RCxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztxQkFDaEM7eUJBQU0sSUFDTCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLFFBQVE7d0JBQ3ZELFVBQVUsRUFDVjt3QkFDQSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhOzRCQUN4QixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO3dCQUV0RCxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7cUJBQy9EO29CQUVELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQzVCLHdCQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLENBQ3pELENBQUM7b0JBRUYsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFFRCxRQUFRO29CQUNOLE9BQU8sMkJBQTJCLENBQUM7Z0JBQ3JDLENBQUM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOztBQWpGZ0IsaUNBQVEsR0FBWSw0QkFBNEIsQUFBeEMsQ0FBeUM7QUFEdkQsNERBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUN1c3RvbVJlc291cmNlUGF0Y2ggfSBmcm9tICcuLi9wYXRjaGVzJztcbmltcG9ydCB7IEdsb2JhbFNlY3Rpb24gfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IGNvbW1vbiBmcm9tICdjYXRhbG9nX2NvbW1vbic7XG5cbmV4cG9ydCBjbGFzcyBCcmFuY2hTdHJhdGVnaWVzRXhwYW5kZXIgZXh0ZW5kcyBHbG9iYWxTZWN0aW9uIHtcbiAgcHJvdGVjdGVkIHN0YXRpYyBmaWxlTmFtZT86IHN0cmluZyA9ICdleHBhbmRlcl9icmFuY2hfc3RyYXRlZ2llcyc7XG5cbiAgYXBwbGljYWJsZVByb3ZpZGVycyA9IFsnZ2l0aHViJ107XG5cbiAgYXN5bmMgX192YWxpZGF0ZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IGFueSkge1xuICAgIHN1cGVyKGRhdGEpO1xuXG4gICAgaWYgKGRhdGE/LmV4cGFuZGVyVmFsdWVzKSB7XG4gICAgICB0aGlzLmRhdGFbJ3ZhbHVlcyddID0gZGF0YS5leHBhbmRlclZhbHVlcztcbiAgICB9XG4gIH1cblxuICBhc3luYyBfX3BhdGNoZXMoXG4gICAgY2xhaW06IGFueSxcbiAgICBwcmV2aW91c0NSOiBhbnksXG4gICk6IFByb21pc2U8SUN1c3RvbVJlc291cmNlUGF0Y2hbXT4ge1xuICAgIGxldCBzdHJhdGVneUdsb2JhbHM6IGFueSA9IGZhbHNlO1xuXG4gICAgaWYgKFxuICAgICAgIVsnbm9uZScsICdjdXN0b20nXS5pbmNsdWRlcyhjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmJyYW5jaFN0cmF0ZWd5Lm5hbWUpXG4gICAgKSB7XG4gICAgICBzdHJhdGVneUdsb2JhbHMgPSB0aGlzLmRhdGEudmFsdWVzLnN0cmF0ZWdpZXMuZmluZChcbiAgICAgICAgKHN0cmF0ZWd5OiBhbnkpID0+XG4gICAgICAgICAgc3RyYXRlZ3kubmFtZSA9PT0gY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5icmFuY2hTdHJhdGVneS5uYW1lLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFzdHJhdGVneUdsb2JhbHMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTm8gYnJhbmNoIHN0cmF0ZWd5IGdsb2JhbCBmb3VuZCBmb3IgJHtjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmJyYW5jaFN0cmF0ZWd5Lm5hbWV9YCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB2YWxpZGF0ZShjcjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICFzdHJhdGVneUdsb2JhbHMgfHxcbiAgICAgICAgICAgIChjci5zcGVjLnJlcG8uZGVmYXVsdEJyYW5jaCA9PT1cbiAgICAgICAgICAgICAgc3RyYXRlZ3lHbG9iYWxzLnZhbHVlcy5kZWZhdWx0QnJhbmNoICYmXG4gICAgICAgICAgICAgIGNyLnNwZWMuYnJhbmNoUHJvdGVjdGlvbnMgPT09XG4gICAgICAgICAgICAgICAgc3RyYXRlZ3lHbG9iYWxzLnZhbHVlcy5icmFuY2hQcm90ZWN0aW9ucylcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFwcGx5KGNyOiBhbnkpIHtcbiAgICAgICAgICBpZiAoc3RyYXRlZ3lHbG9iYWxzKSB7XG4gICAgICAgICAgICBjci5zcGVjLnJlcG8uZGVmYXVsdEJyYW5jaCA9IHN0cmF0ZWd5R2xvYmFscy52YWx1ZXMuZGVmYXVsdEJyYW5jaDtcblxuICAgICAgICAgICAgY3Iuc3BlYy5icmFuY2hQcm90ZWN0aW9ucyA9XG4gICAgICAgICAgICAgIHN0cmF0ZWd5R2xvYmFscy52YWx1ZXMuYnJhbmNoUHJvdGVjdGlvbnM7XG4gICAgICAgICAgfSBlbHNlIGlmIChjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmJyYW5jaFN0cmF0ZWd5Lm5hbWUgPT09ICdub25lJykge1xuICAgICAgICAgICAgY3Iuc3BlYy5yZXBvLmRlZmF1bHRCcmFuY2ggPVxuICAgICAgICAgICAgICBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmJyYW5jaFN0cmF0ZWd5LmRlZmF1bHRCcmFuY2g7XG5cbiAgICAgICAgICAgIGNyLnNwZWMuYnJhbmNoUHJvdGVjdGlvbnMgPSBbXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgY2xhaW0ucHJvdmlkZXJzLmdpdGh1Yi5icmFuY2hTdHJhdGVneS5uYW1lID09PSAnY3VzdG9tJyAmJlxuICAgICAgICAgICAgcHJldmlvdXNDUlxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY3Iuc3BlYy5yZXBvLmRlZmF1bHRCcmFuY2ggPVxuICAgICAgICAgICAgICBjbGFpbS5wcm92aWRlcnMuZ2l0aHViLmJyYW5jaFN0cmF0ZWd5LmRlZmF1bHRCcmFuY2g7XG5cbiAgICAgICAgICAgIGNyLnNwZWMuYnJhbmNoUHJvdGVjdGlvbnMgPSBwcmV2aW91c0NSLnNwZWMuYnJhbmNoUHJvdGVjdGlvbnM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVsZXRlIGNyLm1ldGFkYXRhLmFubm90YXRpb25zW1xuICAgICAgICAgICAgY29tbW9uLmdlbmVyaWMuZ2V0RmlyZXN0YXJ0ckFubm90YXRpb24oJ2JyYW5jaFN0cmF0ZWd5JylcbiAgICAgICAgICBdO1xuXG4gICAgICAgICAgcmV0dXJuIGNyO1xuICAgICAgICB9LFxuXG4gICAgICAgIGlkZW50aWZ5KCkge1xuICAgICAgICAgIHJldHVybiAnZXhwYW5kZXIvQnJhbmNoU3RyYXRlZ2llcyc7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
|
|
233519
233953
|
|
|
233520
233954
|
/***/ }),
|
|
233521
233955
|
|
|
@@ -234997,7 +235431,7 @@ async function replaceReferencesValues(contents, references, resolveRef) {
|
|
|
234997
235431
|
const cr = await resolveRef('TFWorkspaceClaim', claimName);
|
|
234998
235432
|
if (!cr)
|
|
234999
235433
|
throw new Error(`❌ Could not resolve reference ${claimName}`);
|
|
235000
|
-
const refName =
|
|
235434
|
+
const refName = `tfworkspace_${cr.metadata.name}.${outputKey}`;
|
|
235001
235435
|
references.set(refName, {
|
|
235002
235436
|
name: refName,
|
|
235003
235437
|
ref: {
|
|
@@ -235006,11 +235440,33 @@ async function replaceReferencesValues(contents, references, resolveRef) {
|
|
|
235006
235440
|
key: outputKey,
|
|
235007
235441
|
},
|
|
235008
235442
|
});
|
|
235009
|
-
replacedContent = replacedContent.replace(matchStr, `\${{ references
|
|
235443
|
+
replacedContent = replacedContent.replace(matchStr, `\${{ references.tfworkspace_${cr.metadata.name}.${outputKey} }}`);
|
|
235444
|
+
}
|
|
235445
|
+
const secretsRegex = catalog_common_1.default.types.regex.SecretRefRegex;
|
|
235446
|
+
for (const match of contents.matchAll(secretsRegex)) {
|
|
235447
|
+
const [matchStr, claimName, outputKey] = match;
|
|
235448
|
+
const refName = `external_secret_${claimName}.${outputKey}`;
|
|
235449
|
+
const cr = await resolveRef('SecretsClaim', claimName);
|
|
235450
|
+
if (!cr)
|
|
235451
|
+
throw new Error(`❌ Could not resolve reference ${claimName}`);
|
|
235452
|
+
const crName = catalog_common_1.default.generic.normalizeName(claimName);
|
|
235453
|
+
references.set(refName, {
|
|
235454
|
+
name: refName,
|
|
235455
|
+
ref: {
|
|
235456
|
+
kind: 'ExternalSecret',
|
|
235457
|
+
name: cr.metadata.name,
|
|
235458
|
+
key: outputKey,
|
|
235459
|
+
},
|
|
235460
|
+
});
|
|
235461
|
+
const keyFound = cr.spec.data.find((data) => data.secretKey === outputKey);
|
|
235462
|
+
if (!keyFound) {
|
|
235463
|
+
throw new Error(`❌ Could not find key '${outputKey}' from ref '${matchStr}' in claim '${claimName}'`);
|
|
235464
|
+
}
|
|
235465
|
+
replacedContent = replacedContent.replace(matchStr, `\${{ references.external_secret_${crName}.${outputKey} }}`);
|
|
235010
235466
|
}
|
|
235011
235467
|
return replacedContent;
|
|
235012
235468
|
}
|
|
235013
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmVmFsdWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vcm1hbGl6ZXJzL3JlZlZhbHVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3Q0FBNkQ7QUFDN0QsZ0RBQWlEO0FBQ2pELGlDQUFvQztBQUNwQyxvRUFBb0M7QUFJcEMsTUFBYSxtQkFBb0IsU0FBUSxpQkFBVTtJQUFuRDs7UUFDRSx3QkFBbUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTXBDLGVBQVUsR0FBYSw2QkFBZSxDQUFDO0lBa0N6QyxDQUFDO0lBdENDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBWTtRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFJRCxLQUFLLENBQUMsU0FBUyxDQUNiLEtBQVUsRUFDVixXQUFnQjtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRWpDLE9BQU87WUFDTDtnQkFDRSxRQUFRLENBQUMsR0FBUTtvQkFDZixPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTztvQkFDakIsTUFBTSxRQUFRLEdBQVcsSUFBQSxtQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztvQkFFbEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBRWhELE1BQU0sSUFBSSxHQUFHLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUV2RCxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFFN0MsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFFckMsT0FBTyxFQUFFLENBQUM7Z0JBQ1os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QUNwQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUN0QixHQUFHLEVBQUUsU0FBUzthQUNmO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQ3ZDLFFBQVEsRUFDUixtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksU0FBUyxLQUFLLENBQ3RELENBQUM7S0FDSDtJQUVELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ3VzdG9tUmVzb3VyY2VQYXRjaCwgaGVscGVyQ1RYIH0gZnJvbSAnLi4vcGF0Y2hlcyc7XG5pbXBvcnQgeyByZXNvbHZlQ2xhaW1SZWYgfSBmcm9tICcuLi9yZWZyZXNvbHZlcic7XG5pbXBvcnQgeyBOb3JtYWxpemVyIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCBjb21tb24gZnJvbSAnY2F0YWxvZ19jb21tb24nO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBSZWZWYWx1ZXNOb3JtYWxpemVyIGV4dGVuZHMgTm9ybWFsaXplciB7XG4gIGFwcGxpY2FibGVQcm92aWRlcnMgPSBbJ3RlcnJhZm9ybSddO1xuXG4gIGFzeW5jIF9fdmFsaWRhdGUoX3NjaGVtYTogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByc0NsYWltUmVmOiBGdW5jdGlvbiA9IHJlc29sdmVDbGFpbVJlZjtcblxuICBhc3luYyBfX3BhdGNoZXMoXG4gICAgY2xhaW06IGFueSxcbiAgICBfcHJldmlvdXNDUjogYW55LFxuICApOiBQcm9taXNlPElDdXN0b21SZXNvdXJjZVBhdGNoW10+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMucnNDbGFpbVJlZjtcblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHZhbGlkYXRlKF9jcjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgYXBwbHkoY3I6IGFueSkge1xuICAgICAgICAgIGNvbnN0IHByb3ZpZGVyOiBzdHJpbmcgPSBoZWxwZXJDVFgodGhpcykucHJvdmlkZXI7XG5cbiAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBjbGFpbS5wcm92aWRlcnNbcHJvdmlkZXJdLnZhbHVlcztcblxuICAgICAgICAgIGNvbnN0IHJlZnMgPSBhd2FpdCByZXBsYWNlUmVmZXJlbmNlcyh2YWx1ZXMsIHJlc29sdmVyKTtcblxuICAgICAgICAgIGNyLnNwZWMudmFsdWVzID0gSlNPTi5zdHJpbmdpZnkocmVmcy52YWx1ZXMpO1xuXG4gICAgICAgICAgY3Iuc3BlYy5yZWZlcmVuY2VzID0gcmVmcy5yZWZlcmVuY2VzO1xuXG4gICAgICAgICAgcmV0dXJuIGNyO1xuICAgICAgICB9LFxuXG4gICAgICAgIGlkZW50aWZ5KCkge1xuICAgICAgICAgIHJldHVybiAnbm9ybWFsaXplci9yZWYtdmFsdWVzJztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZVJlZmVyZW5jZXMoXG4gIC8vIFZhbHVlcyB0byByZXBsYWNlXG4gIHByb3ZpZGVyVmFsdWVzOiBhbnksXG5cbiAgcmVzb2x2ZVJlZjogRnVuY3Rpb24sXG5cbiAgcmVmZXJlbmNlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKSxcbikge1xuICBjb25zdCB2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgY29uc3QgdXBkYXRlZFJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIHByb3ZpZGVyVmFsdWVzKSB7XG4gICAgdmFsdWVzW2tleV0gPSBhd2FpdCBpbnRlcnBvbGF0ZU9iamVjdChcbiAgICAgIHByb3ZpZGVyVmFsdWVzW2tleV0sXG4gICAgICByZWZlcmVuY2VzLFxuICAgICAgcmVzb2x2ZVJlZixcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHsgdmFsdWVzLCByZWZlcmVuY2VzOiBBcnJheS5mcm9tKHVwZGF0ZWRSZWZlcmVuY2VzLnZhbHVlcygpKSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnRlcnBvbGF0ZU9iamVjdChcbiAgdG9JbnRlcnBvbGF0ZTogYW55LFxuICByZWZlcmVuY2VzOiBNYXA8c3RyaW5nLCBhbnk+LFxuICByZXNvbHZlUmVmOiBGdW5jdGlvbixcbik6IFByb21pc2U8YW55PiB7XG4gIHN3aXRjaCAodG9JbnRlcnBvbGF0ZT8uY29uc3RydWN0b3IpIHtcbiAgICBjYXNlIFN0cmluZzoge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlcGxhY2VSZWZlcmVuY2VzVmFsdWVzKFxuICAgICAgICB0b0ludGVycG9sYXRlLFxuICAgICAgICByZWZlcmVuY2VzLFxuICAgICAgICByZXNvbHZlUmVmLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheToge1xuICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXJyYXkgPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRvSW50ZXJwb2xhdGUpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVkQXJyYXkucHVzaChcbiAgICAgICAgICBhd2FpdCBpbnRlcnBvbGF0ZU9iamVjdChlbGVtZW50LCByZWZlcmVuY2VzLCByZXNvbHZlUmVmKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlZEFycmF5O1xuICAgIH1cblxuICAgIGNhc2UgT2JqZWN0OiB7XG4gICAgICBjb25zdCBpbnRlcnBvbGF0ZWRPYmplY3Q6IGFueSA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0b0ludGVycG9sYXRlKSB7XG4gICAgICAgIGludGVycG9sYXRlZE9iamVjdFtrZXldID0gYXdhaXQgaW50ZXJwb2xhdGVPYmplY3QoXG4gICAgICAgICAgdG9JbnRlcnBvbGF0ZVtrZXldLFxuICAgICAgICAgIHJlZmVyZW5jZXMsXG4gICAgICAgICAgcmVzb2x2ZVJlZixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlZE9iamVjdDtcbiAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRvSW50ZXJwb2xhdGU7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVwbGFjZVJlZmVyZW5jZXNWYWx1ZXMoXG4gIGNvbnRlbnRzOiBzdHJpbmcsXG4gIHJlZmVyZW5jZXM6IE1hcDxzdHJpbmcsIGFueT4sXG4gIHJlc29sdmVSZWY6IEZ1bmN0aW9uLFxuKSB7XG4gIGNvbnN0IHJlZ2V4ID0gY29tbW9uLnR5cGVzLnJlZ2V4LlRGV29ya3NwYWNlUmVmUmVnZXg7XG5cbiAgbGV0IHJlcGxhY2VkQ29udGVudCA9IGNvbnRlbnRzO1xuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgY29udGVudHMubWF0Y2hBbGwocmVnZXgpKSB7XG4gICAgY29uc3QgW21hdGNoU3RyLCBjbGFpbU5hbWUsIG91dHB1dEtleV0gPSBtYXRjaDtcblxuICAgIGNvbnN0IGNyID0gYXdhaXQgcmVzb2x2ZVJlZignVEZXb3Jrc3BhY2VDbGFpbScsIGNsYWltTmFtZSk7XG5cbiAgICBpZiAoIWNyKSB0aHJvdyBuZXcgRXJyb3IoYOKdjCBDb3VsZCBub3QgcmVzb2x2ZSByZWZlcmVuY2UgJHtjbGFpbU5hbWV9YCk7XG5cbiAgICBjb25zdCByZWZOYW1lID0gYCR7Y3IubWV0YWRhdGEubmFtZX0uJHtvdXRwdXRLZXl9YDtcblxuICAgIHJlZmVyZW5jZXMuc2V0KHJlZk5hbWUsIHtcbiAgICAgIG5hbWU6IHJlZk5hbWUsXG4gICAgICByZWY6IHtcbiAgICAgICAga2luZDogJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UnLFxuICAgICAgICBuYW1lOiBjci5tZXRhZGF0YS5uYW1lLFxuICAgICAgICBrZXk6IG91dHB1dEtleSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXBsYWNlZENvbnRlbnQgPSByZXBsYWNlZENvbnRlbnQucmVwbGFjZShcbiAgICAgIG1hdGNoU3RyLFxuICAgICAgYFxcJHt7IHJlZmVyZW5jZXMuJHtjci5tZXRhZGF0YS5uYW1lfS4ke291dHB1dEtleX0gfX1gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZWRDb250ZW50O1xufVxuIl19
|
|
235469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmVmFsdWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vcm1hbGl6ZXJzL3JlZlZhbHVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3Q0FBNkQ7QUFDN0QsZ0RBQWlEO0FBQ2pELGlDQUFvQztBQUNwQyxvRUFBb0M7QUFJcEMsTUFBYSxtQkFBb0IsU0FBUSxpQkFBVTtJQUFuRDs7UUFDRSx3QkFBbUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTXBDLGVBQVUsR0FBYSw2QkFBZSxDQUFDO0lBa0N6QyxDQUFDO0lBdENDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBWTtRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFJRCxLQUFLLENBQUMsU0FBUyxDQUNiLEtBQVUsRUFDVixXQUFnQjtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRWpDLE9BQU87WUFDTDtnQkFDRSxRQUFRLENBQUMsR0FBUTtvQkFDZixPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTztvQkFDakIsTUFBTSxRQUFRLEdBQVcsSUFBQSxtQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztvQkFFbEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBRWhELE1BQU0sSUFBSSxHQUFHLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUV2RCxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFFN0MsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFFckMsT0FBTyxFQUFFLENBQUM7Z0JBQ1os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QUMsU0FBUyxLQUFLLFNBQVMsQ0FDNUMsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUNiLHlCQUF5QixTQUFTLGVBQWUsUUFBUSxlQUFlLFNBQVMsR0FBRyxDQUNyRixDQUFDO1NBQ0g7UUFFRCxlQUFlLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FDdkMsUUFBUSxFQUNSLG1DQUFtQyxNQUFNLElBQUksU0FBUyxLQUFLLENBQzVELENBQUM7S0FDSDtJQUVELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ3VzdG9tUmVzb3VyY2VQYXRjaCwgaGVscGVyQ1RYIH0gZnJvbSAnLi4vcGF0Y2hlcyc7XG5pbXBvcnQgeyByZXNvbHZlQ2xhaW1SZWYgfSBmcm9tICcuLi9yZWZyZXNvbHZlcic7XG5pbXBvcnQgeyBOb3JtYWxpemVyIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCBjb21tb24gZnJvbSAnY2F0YWxvZ19jb21tb24nO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBSZWZWYWx1ZXNOb3JtYWxpemVyIGV4dGVuZHMgTm9ybWFsaXplciB7XG4gIGFwcGxpY2FibGVQcm92aWRlcnMgPSBbJ3RlcnJhZm9ybSddO1xuXG4gIGFzeW5jIF9fdmFsaWRhdGUoX3NjaGVtYTogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByc0NsYWltUmVmOiBGdW5jdGlvbiA9IHJlc29sdmVDbGFpbVJlZjtcblxuICBhc3luYyBfX3BhdGNoZXMoXG4gICAgY2xhaW06IGFueSxcbiAgICBfcHJldmlvdXNDUjogYW55LFxuICApOiBQcm9taXNlPElDdXN0b21SZXNvdXJjZVBhdGNoW10+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMucnNDbGFpbVJlZjtcblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHZhbGlkYXRlKF9jcjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgYXBwbHkoY3I6IGFueSkge1xuICAgICAgICAgIGNvbnN0IHByb3ZpZGVyOiBzdHJpbmcgPSBoZWxwZXJDVFgodGhpcykucHJvdmlkZXI7XG5cbiAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBjbGFpbS5wcm92aWRlcnNbcHJvdmlkZXJdLnZhbHVlcztcblxuICAgICAgICAgIGNvbnN0IHJlZnMgPSBhd2FpdCByZXBsYWNlUmVmZXJlbmNlcyh2YWx1ZXMsIHJlc29sdmVyKTtcblxuICAgICAgICAgIGNyLnNwZWMudmFsdWVzID0gSlNPTi5zdHJpbmdpZnkocmVmcy52YWx1ZXMpO1xuXG4gICAgICAgICAgY3Iuc3BlYy5yZWZlcmVuY2VzID0gcmVmcy5yZWZlcmVuY2VzO1xuXG4gICAgICAgICAgcmV0dXJuIGNyO1xuICAgICAgICB9LFxuXG4gICAgICAgIGlkZW50aWZ5KCkge1xuICAgICAgICAgIHJldHVybiAnbm9ybWFsaXplci9yZWYtdmFsdWVzJztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZVJlZmVyZW5jZXMoXG4gIC8vIFZhbHVlcyB0byByZXBsYWNlXG4gIHByb3ZpZGVyVmFsdWVzOiBhbnksXG5cbiAgcmVzb2x2ZVJlZjogRnVuY3Rpb24sXG5cbiAgcmVmZXJlbmNlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKSxcbikge1xuICBjb25zdCB2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgY29uc3QgdXBkYXRlZFJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIHByb3ZpZGVyVmFsdWVzKSB7XG4gICAgdmFsdWVzW2tleV0gPSBhd2FpdCBpbnRlcnBvbGF0ZU9iamVjdChcbiAgICAgIHByb3ZpZGVyVmFsdWVzW2tleV0sXG4gICAgICByZWZlcmVuY2VzLFxuICAgICAgcmVzb2x2ZVJlZixcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHsgdmFsdWVzLCByZWZlcmVuY2VzOiBBcnJheS5mcm9tKHVwZGF0ZWRSZWZlcmVuY2VzLnZhbHVlcygpKSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnRlcnBvbGF0ZU9iamVjdChcbiAgdG9JbnRlcnBvbGF0ZTogYW55LFxuICByZWZlcmVuY2VzOiBNYXA8c3RyaW5nLCBhbnk+LFxuICByZXNvbHZlUmVmOiBGdW5jdGlvbixcbik6IFByb21pc2U8YW55PiB7XG4gIHN3aXRjaCAodG9JbnRlcnBvbGF0ZT8uY29uc3RydWN0b3IpIHtcbiAgICBjYXNlIFN0cmluZzoge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlcGxhY2VSZWZlcmVuY2VzVmFsdWVzKFxuICAgICAgICB0b0ludGVycG9sYXRlLFxuICAgICAgICByZWZlcmVuY2VzLFxuICAgICAgICByZXNvbHZlUmVmLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheToge1xuICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXJyYXkgPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRvSW50ZXJwb2xhdGUpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVkQXJyYXkucHVzaChcbiAgICAgICAgICBhd2FpdCBpbnRlcnBvbGF0ZU9iamVjdChlbGVtZW50LCByZWZlcmVuY2VzLCByZXNvbHZlUmVmKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlZEFycmF5O1xuICAgIH1cblxuICAgIGNhc2UgT2JqZWN0OiB7XG4gICAgICBjb25zdCBpbnRlcnBvbGF0ZWRPYmplY3Q6IGFueSA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0b0ludGVycG9sYXRlKSB7XG4gICAgICAgIGludGVycG9sYXRlZE9iamVjdFtrZXldID0gYXdhaXQgaW50ZXJwb2xhdGVPYmplY3QoXG4gICAgICAgICAgdG9JbnRlcnBvbGF0ZVtrZXldLFxuICAgICAgICAgIHJlZmVyZW5jZXMsXG4gICAgICAgICAgcmVzb2x2ZVJlZixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlZE9iamVjdDtcbiAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRvSW50ZXJwb2xhdGU7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVwbGFjZVJlZmVyZW5jZXNWYWx1ZXMoXG4gIGNvbnRlbnRzOiBzdHJpbmcsXG4gIHJlZmVyZW5jZXM6IE1hcDxzdHJpbmcsIGFueT4sXG4gIHJlc29sdmVSZWY6IEZ1bmN0aW9uLFxuKSB7XG4gIGNvbnN0IHJlZ2V4ID0gY29tbW9uLnR5cGVzLnJlZ2V4LlRGV29ya3NwYWNlUmVmUmVnZXg7XG5cbiAgbGV0IHJlcGxhY2VkQ29udGVudCA9IGNvbnRlbnRzO1xuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgY29udGVudHMubWF0Y2hBbGwocmVnZXgpKSB7XG4gICAgY29uc3QgW21hdGNoU3RyLCBjbGFpbU5hbWUsIG91dHB1dEtleV0gPSBtYXRjaDtcblxuICAgIGNvbnN0IGNyID0gYXdhaXQgcmVzb2x2ZVJlZignVEZXb3Jrc3BhY2VDbGFpbScsIGNsYWltTmFtZSk7XG5cbiAgICBpZiAoIWNyKSB0aHJvdyBuZXcgRXJyb3IoYOKdjCBDb3VsZCBub3QgcmVzb2x2ZSByZWZlcmVuY2UgJHtjbGFpbU5hbWV9YCk7XG5cbiAgICBjb25zdCByZWZOYW1lID0gYHRmd29ya3NwYWNlXyR7Y3IubWV0YWRhdGEubmFtZX0uJHtvdXRwdXRLZXl9YDtcblxuICAgIHJlZmVyZW5jZXMuc2V0KHJlZk5hbWUsIHtcbiAgICAgIG5hbWU6IHJlZk5hbWUsXG4gICAgICByZWY6IHtcbiAgICAgICAga2luZDogJ0ZpcmVzdGFydHJUZXJyYWZvcm1Xb3Jrc3BhY2UnLFxuICAgICAgICBuYW1lOiBjci5tZXRhZGF0YS5uYW1lLFxuICAgICAgICBrZXk6IG91dHB1dEtleSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXBsYWNlZENvbnRlbnQgPSByZXBsYWNlZENvbnRlbnQucmVwbGFjZShcbiAgICAgIG1hdGNoU3RyLFxuICAgICAgYFxcJHt7IHJlZmVyZW5jZXMudGZ3b3Jrc3BhY2VfJHtjci5tZXRhZGF0YS5uYW1lfS4ke291dHB1dEtleX0gfX1gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBzZWNyZXRzUmVnZXggPSBjb21tb24udHlwZXMucmVnZXguU2VjcmV0UmVmUmVnZXg7XG5cbiAgZm9yIChjb25zdCBtYXRjaCBvZiBjb250ZW50cy5tYXRjaEFsbChzZWNyZXRzUmVnZXgpKSB7XG4gICAgY29uc3QgW21hdGNoU3RyLCBjbGFpbU5hbWUsIG91dHB1dEtleV0gPSBtYXRjaDtcblxuICAgIGNvbnN0IHJlZk5hbWUgPSBgZXh0ZXJuYWxfc2VjcmV0XyR7Y2xhaW1OYW1lfS4ke291dHB1dEtleX1gO1xuXG4gICAgY29uc3QgY3IgPSBhd2FpdCByZXNvbHZlUmVmKCdTZWNyZXRzQ2xhaW0nLCBjbGFpbU5hbWUpO1xuXG4gICAgaWYgKCFjcikgdGhyb3cgbmV3IEVycm9yKGDinYwgQ291bGQgbm90IHJlc29sdmUgcmVmZXJlbmNlICR7Y2xhaW1OYW1lfWApO1xuXG4gICAgY29uc3QgY3JOYW1lID0gY29tbW9uLmdlbmVyaWMubm9ybWFsaXplTmFtZShjbGFpbU5hbWUpO1xuXG4gICAgcmVmZXJlbmNlcy5zZXQocmVmTmFtZSwge1xuICAgICAgbmFtZTogcmVmTmFtZSxcbiAgICAgIHJlZjoge1xuICAgICAgICBraW5kOiAnRXh0ZXJuYWxTZWNyZXQnLFxuICAgICAgICBuYW1lOiBjci5tZXRhZGF0YS5uYW1lLFxuICAgICAgICBrZXk6IG91dHB1dEtleSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBrZXlGb3VuZCA9IGNyLnNwZWMuZGF0YS5maW5kKFxuICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5zZWNyZXRLZXkgPT09IG91dHB1dEtleSxcbiAgICApO1xuXG4gICAgaWYgKCFrZXlGb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBg4p2MIENvdWxkIG5vdCBmaW5kIGtleSAnJHtvdXRwdXRLZXl9JyBmcm9tIHJlZiAnJHttYXRjaFN0cn0nIGluIGNsYWltICcke2NsYWltTmFtZX0nYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVwbGFjZWRDb250ZW50ID0gcmVwbGFjZWRDb250ZW50LnJlcGxhY2UoXG4gICAgICBtYXRjaFN0cixcbiAgICAgIGBcXCR7eyByZWZlcmVuY2VzLmV4dGVybmFsX3NlY3JldF8ke2NyTmFtZX0uJHtvdXRwdXRLZXl9IH19YCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHJlcGxhY2VkQ29udGVudDtcbn1cbiJdfQ==
|
|
235014
235470
|
|
|
235015
235471
|
/***/ }),
|
|
235016
235472
|
|
|
@@ -235756,6 +236212,7 @@ async function renderClaims(catalogScope, firestartrScope, data) {
|
|
|
235756
236212
|
'ComponentClaim',
|
|
235757
236213
|
'DomainClaim',
|
|
235758
236214
|
'SystemClaim',
|
|
236215
|
+
'SecretsClaim',
|
|
235759
236216
|
'TFWorkspaceClaim',
|
|
235760
236217
|
'ArgoDeployClaim',
|
|
235761
236218
|
], renderClaims);
|
|
@@ -235850,6 +236307,14 @@ async function renderClaim(catalogScope, firestartrScope, claim, patches, previo
|
|
|
235850
236307
|
}
|
|
235851
236308
|
catalogEntity = new charts.default.CatalogTFWorkspaceChart(catalogScope, chartId, firestartrId, claim, renderPatches);
|
|
235852
236309
|
break;
|
|
236310
|
+
case 'SecretsClaim':
|
|
236311
|
+
if (claim.providers.external_secrets &&
|
|
236312
|
+
(provider === config_1.AllowedProviders.externalSecrets ||
|
|
236313
|
+
provider === config_1.AllowedProviders.all)) {
|
|
236314
|
+
firestartrEntity = new charts.default.SecretsChart(firestartrScope, chartId, firestartrId, claim, []);
|
|
236315
|
+
}
|
|
236316
|
+
catalogEntity = new charts.default.CatalogSecretsChart(catalogScope, chartId, firestartrId, claim, []);
|
|
236317
|
+
break;
|
|
235853
236318
|
case 'ArgoDeployClaim':
|
|
235854
236319
|
if (claim.providers.argocd &&
|
|
235855
236320
|
(provider === config_1.AllowedProviders.argocd ||
|
|
@@ -235895,7 +236360,7 @@ async function renderClaim(catalogScope, firestartrScope, claim, patches, previo
|
|
|
235895
236360
|
};
|
|
235896
236361
|
}
|
|
235897
236362
|
exports.renderClaim = renderClaim;
|
|
235898
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLXJlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9jbGFpbXMtcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsZ0RBQWtEO0FBR2xELG1EQUE0QztBQUM1QyxzQ0FBb0U7QUFDcEUsMkRBQXFEO0FBQ3JELHFFQUFrRTtBQUlsRSxrREFBb0M7QUFDcEMsa0RBQTBCO0FBRTFCLE1BQU0sR0FBRyxHQUFHLElBQUEsZUFBSyxFQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFFaEQsS0FBSyxVQUFVLFlBQVksQ0FDaEMsWUFBdUIsRUFFdkIsZUFBMEIsRUFFMUIsSUFNQztJQUVELE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUM7SUFFakMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbkMsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBUyxFQUMzQjtRQUNFLFdBQVc7UUFDWCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGlCQUFpQjtLQUNsQixFQUNELFlBQVksQ0FDYixDQUFDO0lBRUYsS0FBSyxNQUFNLFlBQVksSUFBSSxXQUFXLEVBQUU7UUFDdEMsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUEwQixDQUFDLENBQUMsS0FBSyxDQUFDO1lBRTdELE1BQU0sa0JBQWtCLEdBQUcsSUFBQSw4QkFBcUIsR0FBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRTlELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTdDLElBQUksa0JBQWtCLEtBQUsseUJBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUMxRCxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FDMUIsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssa0JBQWtCLENBQ3RELENBQUM7YUFDSDtZQUVELE1BQU0sVUFBVSxHQUFHLElBQUEsK0NBQXNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXRELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxrQ0FBYyxFQUNsQyxZQUFZLENBQUMsUUFBMEIsQ0FBQyxFQUN4QyxVQUFVLENBQ1gsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsR0FBRyxDQUNELHlCQUF5QixRQUFRLG9DQUFvQyxDQUN0RSxDQUFDO2FBQ0g7WUFFRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxHQUNwRCxNQUFNLFdBQVcsQ0FDZixZQUFZLEVBRVosZUFBZSxFQUVmLEtBQUssRUFFTCxPQUFPLEVBRVAsVUFBVSxDQUNYLENBQUM7WUFFSixJQUFJLGFBQWEsRUFBRTtnQkFDakIsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM1RCxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDMUI7WUFFRDs7ZUFFRztZQUNILElBQUksQ0FBQyxnQkFBZ0I7Z0JBQUUsU0FBUztZQUVoQyxNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRXZELElBQUEsOEJBQWdCLEVBQUMsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFFOUMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7Z0JBQ3BDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDO2dCQUVwQyxJQUFBLDhCQUFnQixFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFFeEMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2pFO1lBRUQsSUFDRSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxXQUFXO2dCQUMxQyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUVuQyxNQUFNLG9CQUFvQixDQUFDO1lBRTdCLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLElBQUksSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RFLG9CQUFvQixDQUFDO1NBQ3hCO0tBQ0Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBeEdELG9DQXdHQztBQUVNLEtBQUssVUFBVSxXQUFXLENBQy9CLFlBQXVCLEVBRXZCLGVBQTBCLEVBRTFCLEtBQVUsRUFFVixPQUErQixFQUUvQixhQUF5QixJQUFJOztJQUU3QixJQUFJLGFBQWEsR0FBMEIsU0FBUyxDQUFDO0lBQ3JELElBQUksZ0JBQWdCLEdBQTBCLFNBQVMsQ0FBQztJQUV4RCxNQUFNLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELElBQUksWUFBWSxHQUFrQixJQUFJLENBQUM7SUFFdkMsSUFBSSxVQUFVLEVBQUU7UUFDZCxZQUFZLEdBQUcsQ0FBQSxNQUFBLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksMENBQUUsVUFBVSwwQ0FBRSxVQUFVLEtBQUksSUFBSSxDQUFDO0tBQ2pFO0lBRUQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sUUFBUSxHQUFHLElBQUEsOEJBQXFCLEdBQUUsQ0FBQztJQUV6QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDbEIsS0FBSyxhQUFhO1lBQ2hCLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQ25ELFlBQVksRUFDWixXQUFXLE9BQU8sRUFBRSxFQUNwQixZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO1lBRUYsTUFBTTtRQUVSLEtBQUssYUFBYTtZQUNoQixhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUNuRCxZQUFZLEVBQ1osV0FBVyxPQUFPLEVBQUUsRUFDcEIsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQztZQUVGLE1BQU07UUFFUixLQUFLLFlBQVk7WUFDZixhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUNsRCxZQUFZLEVBQ1osV0FBVyxPQUFPLEVBQUUsRUFDcEIsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQztZQUVGLElBQ0UsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO2dCQUN0QixDQUFDLFFBQVEsS0FBSyx5QkFBZ0IsQ0FBQyxNQUFNO29CQUNuQyxRQUFRLEtBQUsseUJBQWdCLENBQUMsR0FBRyxDQUFDLEVBQ3BDO2dCQUNBLGdCQUFnQixHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDcEQsZUFBZSxFQUNmLFVBQVUsT0FBTyxFQUFFLEVBQ25CLFlBQVksRUFDWixLQUFLLEVBQ0wsYUFBYSxDQUNkLENBQUM7YUFDSDtZQUVELE1BQU07UUFFUixLQUFLLFdBQVc7WUFDZCxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUNqRCxZQUFZLEVBQ1osT0FBTyxFQUNQLFlBQVksRUFDWixLQUFLLEVBQ0wsYUFBYSxDQUNkLENBQUM7WUFFRixJQUNFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDdEIsQ0FBQyxRQUFRLEtBQUsseUJBQWdCLENBQUMsTUFBTTtvQkFDbkMsUUFBUSxLQUFLLHlCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUNwQztnQkFDQSxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQ3pELGVBQWUsRUFDZixVQUFVLE9BQU8sRUFBRSxFQUNuQixZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO2FBQ0g7WUFFRCxNQUFNO1FBRVIsS0FBSyxnQkFBZ0I7WUFDbkIsSUFDRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQ3RCLENBQUMsUUFBUSxLQUFLLHlCQUFnQixDQUFDLE1BQU07b0JBQ25DLFFBQVEsS0FBSyx5QkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFDcEM7Z0JBQ0EsZ0JBQWdCLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUN6RCxlQUFlLEVBQ2YsVUFBVSxPQUFPLEVBQUUsRUFDbkIsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQzthQUNIO1lBRUQsYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FDdEQsWUFBWSxFQUNaLE9BQU8sRUFDUCxZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO1lBRUYsTUFBTTtRQUVSLEtBQUssa0JBQWtCO1lBQ3JCLElBQ0UsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTO2dCQUN6QixDQUFDLFFBQVEsS0FBSyx5QkFBZ0IsQ0FBQyxTQUFTO29CQUN0QyxRQUFRLEtBQUsseUJBQWdCLENBQUMsR0FBRyxDQUFDLEVBQ3BDO2dCQUNBLGdCQUFnQixHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDcEQsZUFBZSxFQUNmLGFBQWEsT0FBTyxFQUFFLEVBQ3RCLFlBQVksRUFDWixLQUFLLEVBQ0wsYUFBYSxDQUNkLENBQUM7YUFDSDtZQUVELGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQ3hELFlBQVksRUFDWixPQUFPLEVBQ1AsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQztZQUVGLE1BQU07UUFFUixLQUFLLGlCQUFpQjtZQUNwQixJQUNFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDdEIsQ0FBQyxRQUFRLEtBQUsseUJBQWdCLENBQUMsTUFBTTtvQkFDbkMsUUFBUSxLQUFLLHlCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUNwQztnQkFDQSxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUNuRCxlQUFlLEVBQ2YsVUFBVSxPQUFPLEVBQUUsRUFDbkIsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQzthQUNIO1lBRUQsYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FDdkQsWUFBWSxFQUNaLE9BQU8sRUFDUCxZQUFZLEVBQ1osS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO1lBRUYsTUFBTTtRQUVSO1lBQ0UsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFbkQsTUFBTTtLQUNUO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDdkU7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM5RCxRQUFRLEtBQUsseUJBQWdCLENBQUMsR0FBRztZQUMvQixDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUN4QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFOUIsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsTUFBTSxFQUFFO0tBQzNCLENBQUMsQ0FBQztJQUVIOzs7O09BSUc7SUFDSCxPQUFPO1FBQ0wsYUFBYSxFQUFFLFlBQVk7WUFDekIsQ0FBQyxDQUFDLE1BQU0sWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDOUMsQ0FBQyxDQUFDLFNBQVM7UUFFYixnQkFBZ0IsRUFBRSxNQUFNLENBQUMscUJBQXFCO1lBQzVDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsV0FBVyxFQUFFLENBQUEsQ0FBQyxJQUFJLEVBQUU7S0FDM0QsQ0FBQztBQUNKLENBQUM7QUF6TkQsa0NBeU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBzZXRSZW5kZXJlZENsYWltIH0gZnJvbSAnLi4vcmVmcmVzb2x2ZXInO1xuaW1wb3J0IHsgUmVuZGVyQ2xhaW1LZXksIFJlbmRlckNsYWltcywgUmVuZGVyZWRDck1hcCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgSVJlbmFtZVJlc3VsdCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXInO1xuaW1wb3J0IHsgc29ydEtpbmRzIH0gZnJvbSAnLi9jbGFpbXMtc29ydGVyJztcbmltcG9ydCB7IEFsbG93ZWRQcm92aWRlcnMsIGdldENvbmZpZ3VyZWRQcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBleHRyYWN0UGF0Y2hlcyB9IGZyb20gJy4vcGF0Y2hlcy1leHRyYWN0b3InO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNDUmZyb21DbGFpbSB9IGZyb20gJy4vcHJldmlvdXMtY3JzLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBJQ3VzdG9tUmVzb3VyY2VQYXRjaCB9IGZyb20gJy4uL3BhdGNoZXMnO1xuaW1wb3J0IHsgSVJlbmRlckNsYWltUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhc2VDaGFydCB9IGZyb20gJy4uL2NoYXJ0cy9iYXNlJztcbmltcG9ydCAqIGFzIGNoYXJ0cyBmcm9tICcuLi9jaGFydHMnO1xuaW1wb3J0IERlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gRGVidWcoJ2ZpcmVzdGFydHI6cmVuZGVyZXI6Y2xhaW1zLXJlbmRlcicpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQ2xhaW1zKFxuICBjYXRhbG9nU2NvcGU6IENvbnN0cnVjdCxcblxuICBmaXJlc3RhcnRyU2NvcGU6IENvbnN0cnVjdCxcblxuICBkYXRhOiB7XG4gICAgcmVuZGVyQ2xhaW1zOiBSZW5kZXJDbGFpbXM7XG5cbiAgICBjcnM6IGFueTtcblxuICAgIHJlbmFtZXM/OiBJUmVuYW1lUmVzdWx0W107XG4gIH0sXG4pOiBQcm9taXNlPFJlbmRlcmVkQ3JNYXA+IHtcbiAgY29uc3QgcmVzdWx0OiBSZW5kZXJlZENyTWFwID0ge307XG5cbiAgY29uc3QgeyByZW5kZXJDbGFpbXMsIGNycyB9ID0gZGF0YTtcblxuICBjb25zdCBzb3J0ZWRLaW5kcyA9IHNvcnRLaW5kcyhcbiAgICBbXG4gICAgICAnVXNlckNsYWltJyxcbiAgICAgICdHcm91cENsYWltJyxcbiAgICAgICdDb21wb25lbnRDbGFpbScsXG4gICAgICAnRG9tYWluQ2xhaW0nLFxuICAgICAgJ1N5c3RlbUNsYWltJyxcbiAgICAgICdURldvcmtzcGFjZUNsYWltJyxcbiAgICAgICdBcmdvRGVwbG95Q2xhaW0nLFxuICAgIF0sXG4gICAgcmVuZGVyQ2xhaW1zLFxuICApO1xuXG4gIGZvciAoY29uc3QgcmVuZGVyQ2xhaW1zIG9mIHNvcnRlZEtpbmRzKSB7XG4gICAgZm9yIChjb25zdCBjbGFpbUtleSBvZiBPYmplY3Qua2V5cyhyZW5kZXJDbGFpbXMpKSB7XG4gICAgICBjb25zdCBjbGFpbSA9IHJlbmRlckNsYWltc1tjbGFpbUtleSBhcyBSZW5kZXJDbGFpbUtleV0uY2xhaW07XG5cbiAgICAgIGNvbnN0IGNvbmZpZ3VyZWRQcm92aWRlciA9IGdldENvbmZpZ3VyZWRQcm92aWRlcigpLnRvU3RyaW5nKCk7XG5cbiAgICAgIGxldCBwcm92aWRlcnMgPSBPYmplY3Qua2V5cyhjbGFpbS5wcm92aWRlcnMpO1xuXG4gICAgICBpZiAoY29uZmlndXJlZFByb3ZpZGVyICE9PSBBbGxvd2VkUHJvdmlkZXJzLmFsbC50b1N0cmluZygpKSB7XG4gICAgICAgIHByb3ZpZGVycyA9IHByb3ZpZGVycy5maWx0ZXIoXG4gICAgICAgICAgKHByb3ZpZGVyOiBzdHJpbmcpID0+IHByb3ZpZGVyID09PSBjb25maWd1cmVkUHJvdmlkZXIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZpb3VzQ1IgPSBnZXRQcmV2aW91c0NSZnJvbUNsYWltKGNsYWltLCBjcnMpO1xuXG4gICAgICBjb25zdCBwYXRjaGVzID0gYXdhaXQgZXh0cmFjdFBhdGNoZXMoXG4gICAgICAgIHJlbmRlckNsYWltc1tjbGFpbUtleSBhcyBSZW5kZXJDbGFpbUtleV0sXG4gICAgICAgIHByZXZpb3VzQ1IsXG4gICAgICApO1xuXG4gICAgICBpZiAoIXByZXZpb3VzQ1IpIHtcbiAgICAgICAgbG9nKFxuICAgICAgICAgIGBObyBDUiBmb3VuZCBmb3IgY2xhaW0gJHtjbGFpbUtleX0sIGl0IHdpbGwgYmUgcmVuZGVyZWQgZnJvbSBzY3JhdGNoYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBmaXJlc3RhcnRyRW50aXR5LCBleHRyYUNoYXJ0cywgY2F0YWxvZ0VudGl0eSB9ID1cbiAgICAgICAgYXdhaXQgcmVuZGVyQ2xhaW0oXG4gICAgICAgICAgY2F0YWxvZ1Njb3BlLFxuXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuXG4gICAgICAgICAgY2xhaW0sXG5cbiAgICAgICAgICBwYXRjaGVzLFxuXG4gICAgICAgICAgcHJldmlvdXNDUixcbiAgICAgICAgKTtcblxuICAgICAgaWYgKGNhdGFsb2dFbnRpdHkpIHtcbiAgICAgICAgcmVzdWx0W2Ake2NhdGFsb2dFbnRpdHkua2luZH0tJHtjYXRhbG9nRW50aXR5Lm1ldGFkYXRhLm5hbWV9YF0gPVxuICAgICAgICAgIGNhdGFsb2dFbnRpdHkudG9Kc29uKCk7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogSWYgdGhlcmUgaXMgbm8gcHJvdmlkZXIgZG9uJ3Qgc3RvcmUgdGhlIENSIGluIHRoZSBtYXBcbiAgICAgICAqL1xuICAgICAgaWYgKCFmaXJlc3RhcnRyRW50aXR5KSBjb250aW51ZTtcblxuICAgICAgY29uc3QgZmlyZXN0YXJ0ckVudGl0eUpzb24gPSBmaXJlc3RhcnRyRW50aXR5LnRvSnNvbigpO1xuXG4gICAgICBzZXRSZW5kZXJlZENsYWltKGNsYWltLCBmaXJlc3RhcnRyRW50aXR5SnNvbik7XG5cbiAgICAgIGZvciAoY29uc3QgZXh0cmFDaGFydCBvZiBleHRyYUNoYXJ0cykge1xuICAgICAgICBjb25zdCB7IGNsYWltLCBjaGFydCB9ID0gZXh0cmFDaGFydDtcblxuICAgICAgICBzZXRSZW5kZXJlZENsYWltKGNsYWltLCBjaGFydC50b0pzb24oKSk7XG5cbiAgICAgICAgcmVzdWx0W2Ake2NoYXJ0LmtpbmR9LSR7Y2hhcnQubWV0YWRhdGEubmFtZX1gXSA9IGNoYXJ0LnRvSnNvbigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICFmaXJlc3RhcnRyRW50aXR5SnNvbi5tZXRhZGF0YS5hbm5vdGF0aW9ucyB8fFxuICAgICAgICAhZmlyZXN0YXJ0ckVudGl0eUpzb24ubWV0YWRhdGEubmFtZVxuICAgICAgKVxuICAgICAgICB0aHJvdyBmaXJlc3RhcnRyRW50aXR5SnNvbjtcblxuICAgICAgcmVzdWx0W2Ake2ZpcmVzdGFydHJFbnRpdHkua2luZH0tJHtmaXJlc3RhcnRyRW50aXR5SnNvbi5tZXRhZGF0YS5uYW1lfWBdID1cbiAgICAgICAgZmlyZXN0YXJ0ckVudGl0eUpzb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckNsYWltKFxuICBjYXRhbG9nU2NvcGU6IENvbnN0cnVjdCxcblxuICBmaXJlc3RhcnRyU2NvcGU6IENvbnN0cnVjdCxcblxuICBjbGFpbTogYW55LFxuXG4gIHBhdGNoZXM6IElDdXN0b21SZXNvdXJjZVBhdGNoW10sXG5cbiAgcHJldmlvdXNDUjogYW55IHwgbnVsbCA9IG51bGwsXG4pOiBQcm9taXNlPElSZW5kZXJDbGFpbVJlc3VsdD4ge1xuICBsZXQgY2F0YWxvZ0VudGl0eTogQmFzZUNoYXJ0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBsZXQgZmlyZXN0YXJ0ckVudGl0eTogQmFzZUNoYXJ0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGNoYXJ0SWQgPSBgJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YC50b0xvd2VyQ2FzZSgpO1xuXG4gIGxldCBmaXJlc3RhcnRySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChwcmV2aW91c0NSKSB7XG4gICAgZmlyZXN0YXJ0cklkID0gcHJldmlvdXNDUj8uc3BlYz8uZmlyZXN0YXJ0cj8udGZTdGF0ZUtleSB8fCBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVuZGVyUGF0Y2hlcyA9IHBhdGNoZXMuZmlsdGVyKChwYXRjaDogYW55KSA9PiAhcGF0Y2guaXNQb3N0UGF0Y2gpO1xuICBjb25zdCBwb3N0UGF0Y2hlcyA9IHBhdGNoZXMuZmlsdGVyKChwYXRjaDogYW55KSA9PiBwYXRjaC5pc1Bvc3RQYXRjaCk7XG5cbiAgY29uc3QgcHJvdmlkZXIgPSBnZXRDb25maWd1cmVkUHJvdmlkZXIoKTtcblxuICBzd2l0Y2ggKGNsYWltLmtpbmQpIHtcbiAgICBjYXNlICdEb21haW5DbGFpbSc6XG4gICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dEb21haW5DaGFydChcbiAgICAgICAgY2F0YWxvZ1Njb3BlLFxuICAgICAgICBgY2F0YWxvZy0ke2NoYXJ0SWR9YCxcbiAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICBjbGFpbSxcbiAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnU3lzdGVtQ2xhaW0nOlxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nU3lzdGVtQ2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSxcbiAgICAgICAgYGNhdGFsb2ctJHtjaGFydElkfWAsXG4gICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgY2xhaW0sXG4gICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICApO1xuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ0dyb3VwQ2xhaW0nOlxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nR3JvdXBDaGFydChcbiAgICAgICAgY2F0YWxvZ1Njb3BlLFxuICAgICAgICBgY2F0YWxvZy0ke2NoYXJ0SWR9YCxcbiAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICBjbGFpbSxcbiAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgY2xhaW0ucHJvdmlkZXJzLmdpdGh1YiAmJlxuICAgICAgICAocHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuZ2l0aHViIHx8XG4gICAgICAgICAgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsKVxuICAgICAgKSB7XG4gICAgICAgIGZpcmVzdGFydHJFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuR2l0aHViR3JvdXBDaGFydChcbiAgICAgICAgICBmaXJlc3RhcnRyU2NvcGUsXG4gICAgICAgICAgYGdpdGh1Yi0ke2NoYXJ0SWR9YCxcbiAgICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgICAgY2xhaW0sXG4gICAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdVc2VyQ2xhaW0nOlxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nVXNlckNoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsXG4gICAgICAgIGNoYXJ0SWQsXG4gICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgY2xhaW0sXG4gICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICApO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsYWltLnByb3ZpZGVycy5naXRodWIgJiZcbiAgICAgICAgKHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmdpdGh1YiB8fFxuICAgICAgICAgIHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbClcbiAgICAgICkge1xuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkdpdGh1Yk1lbWJlcnNoaXBDaGFydChcbiAgICAgICAgICBmaXJlc3RhcnRyU2NvcGUsXG4gICAgICAgICAgYGdpdGh1Yi0ke2NoYXJ0SWR9YCxcbiAgICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgICAgY2xhaW0sXG4gICAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdDb21wb25lbnRDbGFpbSc6XG4gICAgICBpZiAoXG4gICAgICAgIGNsYWltLnByb3ZpZGVycy5naXRodWIgJiZcbiAgICAgICAgKHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmdpdGh1YiB8fFxuICAgICAgICAgIHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbClcbiAgICAgICkge1xuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkdpdGh1YlJlcG9zaXRvcnlDaGFydChcbiAgICAgICAgICBmaXJlc3RhcnRyU2NvcGUsXG4gICAgICAgICAgYGdpdGh1Yi0ke2NoYXJ0SWR9YCxcbiAgICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgICAgY2xhaW0sXG4gICAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nQ29tcG9uZW50Q2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSxcbiAgICAgICAgY2hhcnRJZCxcbiAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICBjbGFpbSxcbiAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnVEZXb3Jrc3BhY2VDbGFpbSc6XG4gICAgICBpZiAoXG4gICAgICAgIGNsYWltLnByb3ZpZGVycy50ZXJyYWZvcm0gJiZcbiAgICAgICAgKHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLnRlcnJhZm9ybSB8fFxuICAgICAgICAgIHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbClcbiAgICAgICkge1xuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LlRGV29ya3NwYWNlQ2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgIGB0ZXJyYWZvcm0tJHtjaGFydElkfWAsXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgIGNsYWltLFxuICAgICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNhdGFsb2dFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQ2F0YWxvZ1RGV29ya3NwYWNlQ2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSxcbiAgICAgICAgY2hhcnRJZCxcbiAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICBjbGFpbSxcbiAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnQXJnb0RlcGxveUNsYWltJzpcbiAgICAgIGlmIChcbiAgICAgICAgY2xhaW0ucHJvdmlkZXJzLmFyZ29jZCAmJlxuICAgICAgICAocHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYXJnb2NkIHx8XG4gICAgICAgICAgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsKVxuICAgICAgKSB7XG4gICAgICAgIGZpcmVzdGFydHJFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQXJnb0RlcGxveUNoYXJ0KFxuICAgICAgICAgIGZpcmVzdGFydHJTY29wZSxcbiAgICAgICAgICBgYXJnb2NkLSR7Y2hhcnRJZH1gLFxuICAgICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgICBjbGFpbSxcbiAgICAgICAgICByZW5kZXJQYXRjaGVzLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dBcmdvRGVwbG95Q2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSxcbiAgICAgICAgY2hhcnRJZCxcbiAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICBjbGFpbSxcbiAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFVua25vd24gY2xhaW0ga2luZDogJHtjbGFpbS5raW5kfWApO1xuXG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgdG8gb25seSByZW5kZXIgdGhlIGNhdGFsb2cgZW50aXR5LCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kXG4gICAqL1xuICBpZiAoIWNhdGFsb2dFbnRpdHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZW5kZXIgY2xhaW0gJHtjbGFpbS5raW5kfS0ke2NsYWltLm5hbWV9YCk7XG4gIH1cblxuICAvKlxuICAgKlxuICAgKiBSZW5kZXIgcGhhc2VcbiAgICpcbiAgICovXG4gIGNvbnN0IFtjYXRhbG9nQ2hhcnQsIGZpcmVzdGFydHJFbnRpdHlDaGFydF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgcHJvdmlkZXIgPT09IEFsbG93ZWRQcm92aWRlcnMuYWxsXG4gICAgICA/IGNhdGFsb2dFbnRpdHkucmVuZGVyKClcbiAgICAgIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCksXG5cbiAgICBmaXJlc3RhcnRyRW50aXR5Py5yZW5kZXIoKSxcbiAgXSk7XG5cbiAgLypcbiAgICpcbiAgICogUG9zdCByZW5kZXIgcGhhc2UgKGFuZCByZXR1cm4pXG4gICAqXG4gICAqL1xuICByZXR1cm4ge1xuICAgIGNhdGFsb2dFbnRpdHk6IGNhdGFsb2dDaGFydFxuICAgICAgPyBhd2FpdCBjYXRhbG9nQ2hhcnQucG9zdFJlbmRlcmVyKHBvc3RQYXRjaGVzKVxuICAgICAgOiB1bmRlZmluZWQsXG5cbiAgICBmaXJlc3RhcnRyRW50aXR5OiBhd2FpdCAoZmlyZXN0YXJ0ckVudGl0eUNoYXJ0XG4gICAgICA/IGZpcmVzdGFydHJFbnRpdHlDaGFydC5wb3N0UmVuZGVyZXIocG9zdFBhdGNoZXMpXG4gICAgICA6IHVuZGVmaW5lZCksXG5cbiAgICBleHRyYUNoYXJ0czogKGF3YWl0IGZpcmVzdGFydHJFbnRpdHk/LmV4dHJhQ2hhcnRzKCkpIHx8IFtdLFxuICB9O1xufVxuIl19
|
|
236363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLXJlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9jbGFpbXMtcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsZ0RBQWtEO0FBR2xELG1EQUE0QztBQUM1QyxzQ0FBb0U7QUFDcEUsMkRBQXFEO0FBQ3JELHFFQUFrRTtBQUlsRSxrREFBb0M7QUFDcEMsa0RBQTBCO0FBRTFCLE1BQU0sR0FBRyxHQUFHLElBQUEsZUFBSyxFQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFFaEQsS0FBSyxVQUFVLFlBQVksQ0FDaEMsWUFBdUIsRUFFdkIsZUFBMEIsRUFFMUIsSUFNQztJQUVELE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUM7SUFFakMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbkMsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBUyxFQUMzQjtRQUNFLFdBQVc7UUFDWCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixhQUFhO1FBQ2IsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixpQkFBaUI7S0FDbEIsRUFDRCxZQUFZLENBQ2IsQ0FBQztJQUVGLEtBQUssTUFBTSxZQUFZLElBQUksV0FBVyxFQUFFO1FBQ3RDLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBMEIsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUU3RCxNQUFNLGtCQUFrQixHQUFHLElBQUEsOEJBQXFCLEdBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUU5RCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU3QyxJQUFJLGtCQUFrQixLQUFLLHlCQUFn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aW1wb3J0IHsgc2V0UmVuZGVyZWRDbGFpbSB9IGZyb20gJy4uL3JlZnJlc29sdmVyJztcbmltcG9ydCB7IFJlbmRlckNsYWltS2V5LCBSZW5kZXJDbGFpbXMsIFJlbmRlcmVkQ3JNYXAgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IElSZW5hbWVSZXN1bHQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyJztcbmltcG9ydCB7IHNvcnRLaW5kcyB9IGZyb20gJy4vY2xhaW1zLXNvcnRlcic7XG5pbXBvcnQgeyBBbGxvd2VkUHJvdmlkZXJzLCBnZXRDb25maWd1cmVkUHJvdmlkZXIgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgZXh0cmFjdFBhdGNoZXMgfSBmcm9tICcuL3BhdGNoZXMtZXh0cmFjdG9yJztcbmltcG9ydCB7IGdldFByZXZpb3VzQ1Jmcm9tQ2xhaW0gfSBmcm9tICcuL3ByZXZpb3VzLWNycy1leHRyYWN0b3InO1xuaW1wb3J0IHsgSUN1c3RvbVJlc291cmNlUGF0Y2ggfSBmcm9tICcuLi9wYXRjaGVzJztcbmltcG9ydCB7IElSZW5kZXJDbGFpbVJlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYXNlQ2hhcnQgfSBmcm9tICcuLi9jaGFydHMvYmFzZSc7XG5pbXBvcnQgKiBhcyBjaGFydHMgZnJvbSAnLi4vY2hhcnRzJztcbmltcG9ydCBEZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmNvbnN0IGxvZyA9IERlYnVnKCdmaXJlc3RhcnRyOnJlbmRlcmVyOmNsYWltcy1yZW5kZXInKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckNsYWltcyhcbiAgY2F0YWxvZ1Njb3BlOiBDb25zdHJ1Y3QsXG5cbiAgZmlyZXN0YXJ0clNjb3BlOiBDb25zdHJ1Y3QsXG5cbiAgZGF0YToge1xuICAgIHJlbmRlckNsYWltczogUmVuZGVyQ2xhaW1zO1xuXG4gICAgY3JzOiBhbnk7XG5cbiAgICByZW5hbWVzPzogSVJlbmFtZVJlc3VsdFtdO1xuICB9LFxuKTogUHJvbWlzZTxSZW5kZXJlZENyTWFwPiB7XG4gIGNvbnN0IHJlc3VsdDogUmVuZGVyZWRDck1hcCA9IHt9O1xuXG4gIGNvbnN0IHsgcmVuZGVyQ2xhaW1zLCBjcnMgfSA9IGRhdGE7XG5cbiAgY29uc3Qgc29ydGVkS2luZHMgPSBzb3J0S2luZHMoXG4gICAgW1xuICAgICAgJ1VzZXJDbGFpbScsXG4gICAgICAnR3JvdXBDbGFpbScsXG4gICAgICAnQ29tcG9uZW50Q2xhaW0nLFxuICAgICAgJ0RvbWFpbkNsYWltJyxcbiAgICAgICdTeXN0ZW1DbGFpbScsXG4gICAgICAnU2VjcmV0c0NsYWltJyxcbiAgICAgICdURldvcmtzcGFjZUNsYWltJyxcbiAgICAgICdBcmdvRGVwbG95Q2xhaW0nLFxuICAgIF0sXG4gICAgcmVuZGVyQ2xhaW1zLFxuICApO1xuXG4gIGZvciAoY29uc3QgcmVuZGVyQ2xhaW1zIG9mIHNvcnRlZEtpbmRzKSB7XG4gICAgZm9yIChjb25zdCBjbGFpbUtleSBvZiBPYmplY3Qua2V5cyhyZW5kZXJDbGFpbXMpKSB7XG4gICAgICBjb25zdCBjbGFpbSA9IHJlbmRlckNsYWltc1tjbGFpbUtleSBhcyBSZW5kZXJDbGFpbUtleV0uY2xhaW07XG5cbiAgICAgIGNvbnN0IGNvbmZpZ3VyZWRQcm92aWRlciA9IGdldENvbmZpZ3VyZWRQcm92aWRlcigpLnRvU3RyaW5nKCk7XG5cbiAgICAgIGxldCBwcm92aWRlcnMgPSBPYmplY3Qua2V5cyhjbGFpbS5wcm92aWRlcnMpO1xuXG4gICAgICBpZiAoY29uZmlndXJlZFByb3ZpZGVyICE9PSBBbGxvd2VkUHJvdmlkZXJzLmFsbC50b1N0cmluZygpKSB7XG4gICAgICAgIHByb3ZpZGVycyA9IHByb3ZpZGVycy5maWx0ZXIoXG4gICAgICAgICAgKHByb3ZpZGVyOiBzdHJpbmcpID0+IHByb3ZpZGVyID09PSBjb25maWd1cmVkUHJvdmlkZXIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZpb3VzQ1IgPSBnZXRQcmV2aW91c0NSZnJvbUNsYWltKGNsYWltLCBjcnMpO1xuXG4gICAgICBjb25zdCBwYXRjaGVzID0gYXdhaXQgZXh0cmFjdFBhdGNoZXMoXG4gICAgICAgIHJlbmRlckNsYWltc1tjbGFpbUtleSBhcyBSZW5kZXJDbGFpbUtleV0sXG4gICAgICAgIHByZXZpb3VzQ1IsXG4gICAgICApO1xuXG4gICAgICBpZiAoIXByZXZpb3VzQ1IpIHtcbiAgICAgICAgbG9nKFxuICAgICAgICAgIGBObyBDUiBmb3VuZCBmb3IgY2xhaW0gJHtjbGFpbUtleX0sIGl0IHdpbGwgYmUgcmVuZGVyZWQgZnJvbSBzY3JhdGNoYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBmaXJlc3RhcnRyRW50aXR5LCBleHRyYUNoYXJ0cywgY2F0YWxvZ0VudGl0eSB9ID1cbiAgICAgICAgYXdhaXQgcmVuZGVyQ2xhaW0oXG4gICAgICAgICAgY2F0YWxvZ1Njb3BlLFxuICAgICAgICAgIGZpcmVzdGFydHJTY29wZSxcbiAgICAgICAgICBjbGFpbSxcbiAgICAgICAgICBwYXRjaGVzLFxuICAgICAgICAgIHByZXZpb3VzQ1IsXG4gICAgICAgICk7XG5cbiAgICAgIGlmIChjYXRhbG9nRW50aXR5KSB7XG4gICAgICAgIHJlc3VsdFtgJHtjYXRhbG9nRW50aXR5LmtpbmR9LSR7Y2F0YWxvZ0VudGl0eS5tZXRhZGF0YS5uYW1lfWBdID1cbiAgICAgICAgICBjYXRhbG9nRW50aXR5LnRvSnNvbigpO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIElmIHRoZXJlIGlzIG5vIHByb3ZpZGVyIGRvbid0IHN0b3JlIHRoZSBDUiBpbiB0aGUgbWFwXG4gICAgICAgKi9cbiAgICAgIGlmICghZmlyZXN0YXJ0ckVudGl0eSkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IGZpcmVzdGFydHJFbnRpdHlKc29uID0gZmlyZXN0YXJ0ckVudGl0eS50b0pzb24oKTtcblxuICAgICAgc2V0UmVuZGVyZWRDbGFpbShjbGFpbSwgZmlyZXN0YXJ0ckVudGl0eUpzb24pO1xuXG4gICAgICBmb3IgKGNvbnN0IGV4dHJhQ2hhcnQgb2YgZXh0cmFDaGFydHMpIHtcbiAgICAgICAgY29uc3QgeyBjbGFpbSwgY2hhcnQgfSA9IGV4dHJhQ2hhcnQ7XG5cbiAgICAgICAgc2V0UmVuZGVyZWRDbGFpbShjbGFpbSwgY2hhcnQudG9Kc29uKCkpO1xuXG4gICAgICAgIHJlc3VsdFtgJHtjaGFydC5raW5kfS0ke2NoYXJ0Lm1ldGFkYXRhLm5hbWV9YF0gPSBjaGFydC50b0pzb24oKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhZmlyZXN0YXJ0ckVudGl0eUpzb24ubWV0YWRhdGEuYW5ub3RhdGlvbnMgfHxcbiAgICAgICAgIWZpcmVzdGFydHJFbnRpdHlKc29uLm1ldGFkYXRhLm5hbWVcbiAgICAgIClcbiAgICAgICAgdGhyb3cgZmlyZXN0YXJ0ckVudGl0eUpzb247XG5cbiAgICAgIHJlc3VsdFtgJHtmaXJlc3RhcnRyRW50aXR5LmtpbmR9LSR7ZmlyZXN0YXJ0ckVudGl0eUpzb24ubWV0YWRhdGEubmFtZX1gXSA9XG4gICAgICAgIGZpcmVzdGFydHJFbnRpdHlKc29uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJDbGFpbShcbiAgY2F0YWxvZ1Njb3BlOiBDb25zdHJ1Y3QsXG5cbiAgZmlyZXN0YXJ0clNjb3BlOiBDb25zdHJ1Y3QsXG5cbiAgY2xhaW06IGFueSxcblxuICBwYXRjaGVzOiBJQ3VzdG9tUmVzb3VyY2VQYXRjaFtdLFxuXG4gIHByZXZpb3VzQ1I6IGFueSB8IG51bGwgPSBudWxsLFxuKTogUHJvbWlzZTxJUmVuZGVyQ2xhaW1SZXN1bHQ+IHtcbiAgbGV0IGNhdGFsb2dFbnRpdHk6IEJhc2VDaGFydCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgbGV0IGZpcmVzdGFydHJFbnRpdHk6IEJhc2VDaGFydCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBjb25zdCBjaGFydElkID0gYCR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWAudG9Mb3dlckNhc2UoKTtcblxuICBsZXQgZmlyZXN0YXJ0cklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBpZiAocHJldmlvdXNDUikge1xuICAgIGZpcmVzdGFydHJJZCA9IHByZXZpb3VzQ1I/LnNwZWM/LmZpcmVzdGFydHI/LnRmU3RhdGVLZXkgfHwgbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJlbmRlclBhdGNoZXMgPSBwYXRjaGVzLmZpbHRlcigocGF0Y2g6IGFueSkgPT4gIXBhdGNoLmlzUG9zdFBhdGNoKTtcbiAgY29uc3QgcG9zdFBhdGNoZXMgPSBwYXRjaGVzLmZpbHRlcigocGF0Y2g6IGFueSkgPT4gcGF0Y2guaXNQb3N0UGF0Y2gpO1xuXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0Q29uZmlndXJlZFByb3ZpZGVyKCk7XG5cbiAgc3dpdGNoIChjbGFpbS5raW5kKSB7XG4gICAgY2FzZSAnRG9tYWluQ2xhaW0nOlxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nRG9tYWluQ2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSxcbiAgICAgICAgYGNhdGFsb2ctJHtjaGFydElkfWAsXG4gICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgY2xhaW0sXG4gICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICApO1xuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ1N5c3RlbUNsYWltJzpcbiAgICAgIGNhdGFsb2dFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQ2F0YWxvZ1N5c3RlbUNoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsXG4gICAgICAgIGBjYXRhbG9nLSR7Y2hhcnRJZH1gLFxuICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgIGNsYWltLFxuICAgICAgICByZW5kZXJQYXRjaGVzLFxuICAgICAgKTtcblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdHcm91cENsYWltJzpcbiAgICAgIGNhdGFsb2dFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQ2F0YWxvZ0dyb3VwQ2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSxcbiAgICAgICAgYGNhdGFsb2ctJHtjaGFydElkfWAsXG4gICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgY2xhaW0sXG4gICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICApO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsYWltLnByb3ZpZGVycy5naXRodWIgJiZcbiAgICAgICAgKHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmdpdGh1YiB8fFxuICAgICAgICAgIHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbClcbiAgICAgICkge1xuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkdpdGh1Ykdyb3VwQ2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgIGBnaXRodWItJHtjaGFydElkfWAsXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgIGNsYWltLFxuICAgICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnVXNlckNsYWltJzpcbiAgICAgIGNhdGFsb2dFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQ2F0YWxvZ1VzZXJDaGFydChcbiAgICAgICAgY2F0YWxvZ1Njb3BlLFxuICAgICAgICBjaGFydElkLFxuICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgIGNsYWltLFxuICAgICAgICByZW5kZXJQYXRjaGVzLFxuICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICBjbGFpbS5wcm92aWRlcnMuZ2l0aHViICYmXG4gICAgICAgIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5naXRodWIgfHxcbiAgICAgICAgICBwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5hbGwpXG4gICAgICApIHtcbiAgICAgICAgZmlyZXN0YXJ0ckVudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5HaXRodWJNZW1iZXJzaGlwQ2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgIGBnaXRodWItJHtjaGFydElkfWAsXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgIGNsYWltLFxuICAgICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnQ29tcG9uZW50Q2xhaW0nOlxuICAgICAgaWYgKFxuICAgICAgICBjbGFpbS5wcm92aWRlcnMuZ2l0aHViICYmXG4gICAgICAgIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5naXRodWIgfHxcbiAgICAgICAgICBwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5hbGwpXG4gICAgICApIHtcbiAgICAgICAgZmlyZXN0YXJ0ckVudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5HaXRodWJSZXBvc2l0b3J5Q2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgIGBnaXRodWItJHtjaGFydElkfWAsXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgIGNsYWltLFxuICAgICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNhdGFsb2dFbnRpdHkgPSBuZXcgY2hhcnRzLmRlZmF1bHQuQ2F0YWxvZ0NvbXBvbmVudENoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsXG4gICAgICAgIGNoYXJ0SWQsXG4gICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgY2xhaW0sXG4gICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICApO1xuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ1RGV29ya3NwYWNlQ2xhaW0nOlxuICAgICAgaWYgKFxuICAgICAgICBjbGFpbS5wcm92aWRlcnMudGVycmFmb3JtICYmXG4gICAgICAgIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy50ZXJyYWZvcm0gfHxcbiAgICAgICAgICBwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5hbGwpXG4gICAgICApIHtcbiAgICAgICAgZmlyZXN0YXJ0ckVudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5URldvcmtzcGFjZUNoYXJ0KFxuICAgICAgICAgIGZpcmVzdGFydHJTY29wZSxcbiAgICAgICAgICBgdGVycmFmb3JtLSR7Y2hhcnRJZH1gLFxuICAgICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgICBjbGFpbSxcbiAgICAgICAgICByZW5kZXJQYXRjaGVzLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dURldvcmtzcGFjZUNoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsXG4gICAgICAgIGNoYXJ0SWQsXG4gICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgY2xhaW0sXG4gICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICApO1xuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ1NlY3JldHNDbGFpbSc6XG4gICAgICBpZiAoXG4gICAgICAgIGNsYWltLnByb3ZpZGVycy5leHRlcm5hbF9zZWNyZXRzICYmXG4gICAgICAgIChwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5leHRlcm5hbFNlY3JldHMgfHxcbiAgICAgICAgICBwcm92aWRlciA9PT0gQWxsb3dlZFByb3ZpZGVycy5hbGwpXG4gICAgICApIHtcbiAgICAgICAgZmlyZXN0YXJ0ckVudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5TZWNyZXRzQ2hhcnQoXG4gICAgICAgICAgZmlyZXN0YXJ0clNjb3BlLFxuICAgICAgICAgIGNoYXJ0SWQsXG4gICAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICAgIGNsYWltLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjYXRhbG9nRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkNhdGFsb2dTZWNyZXRzQ2hhcnQoXG4gICAgICAgIGNhdGFsb2dTY29wZSxcbiAgICAgICAgY2hhcnRJZCxcbiAgICAgICAgZmlyZXN0YXJ0cklkLFxuICAgICAgICBjbGFpbSxcbiAgICAgICAgW10sXG4gICAgICApO1xuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ0FyZ29EZXBsb3lDbGFpbSc6XG4gICAgICBpZiAoXG4gICAgICAgIGNsYWltLnByb3ZpZGVycy5hcmdvY2QgJiZcbiAgICAgICAgKHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFyZ29jZCB8fFxuICAgICAgICAgIHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbClcbiAgICAgICkge1xuICAgICAgICBmaXJlc3RhcnRyRW50aXR5ID0gbmV3IGNoYXJ0cy5kZWZhdWx0LkFyZ29EZXBsb3lDaGFydChcbiAgICAgICAgICBmaXJlc3RhcnRyU2NvcGUsXG4gICAgICAgICAgYGFyZ29jZC0ke2NoYXJ0SWR9YCxcbiAgICAgICAgICBmaXJlc3RhcnRySWQsXG4gICAgICAgICAgY2xhaW0sXG4gICAgICAgICAgcmVuZGVyUGF0Y2hlcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY2F0YWxvZ0VudGl0eSA9IG5ldyBjaGFydHMuZGVmYXVsdC5DYXRhbG9nQXJnb0RlcGxveUNoYXJ0KFxuICAgICAgICBjYXRhbG9nU2NvcGUsXG4gICAgICAgIGNoYXJ0SWQsXG4gICAgICAgIGZpcmVzdGFydHJJZCxcbiAgICAgICAgY2xhaW0sXG4gICAgICAgIHJlbmRlclBhdGNoZXMsXG4gICAgICApO1xuXG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIGNsYWltIGtpbmQ6ICR7Y2xhaW0ua2luZH1gKTtcblxuICAgICAgYnJlYWs7XG4gIH1cblxuICAvKipcbiAgICogVGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHRvIG9ubHkgcmVuZGVyIHRoZSBjYXRhbG9nIGVudGl0eSwgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZFxuICAgKi9cbiAgaWYgKCFjYXRhbG9nRW50aXR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcmVuZGVyIGNsYWltICR7Y2xhaW0ua2luZH0tJHtjbGFpbS5uYW1lfWApO1xuICB9XG5cbiAgLypcbiAgICpcbiAgICogUmVuZGVyIHBoYXNlXG4gICAqXG4gICAqL1xuICBjb25zdCBbY2F0YWxvZ0NoYXJ0LCBmaXJlc3RhcnRyRW50aXR5Q2hhcnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIHByb3ZpZGVyID09PSBBbGxvd2VkUHJvdmlkZXJzLmFsbFxuICAgICAgPyBjYXRhbG9nRW50aXR5LnJlbmRlcigpXG4gICAgICA6IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpLFxuXG4gICAgZmlyZXN0YXJ0ckVudGl0eT8ucmVuZGVyKCksXG4gIF0pO1xuXG4gIC8qXG4gICAqXG4gICAqIFBvc3QgcmVuZGVyIHBoYXNlIChhbmQgcmV0dXJuKVxuICAgKlxuICAgKi9cbiAgcmV0dXJuIHtcbiAgICBjYXRhbG9nRW50aXR5OiBjYXRhbG9nQ2hhcnRcbiAgICAgID8gYXdhaXQgY2F0YWxvZ0NoYXJ0LnBvc3RSZW5kZXJlcihwb3N0UGF0Y2hlcylcbiAgICAgIDogdW5kZWZpbmVkLFxuXG4gICAgZmlyZXN0YXJ0ckVudGl0eTogYXdhaXQgKGZpcmVzdGFydHJFbnRpdHlDaGFydFxuICAgICAgPyBmaXJlc3RhcnRyRW50aXR5Q2hhcnQucG9zdFJlbmRlcmVyKHBvc3RQYXRjaGVzKVxuICAgICAgOiB1bmRlZmluZWQpLFxuXG4gICAgZXh0cmFDaGFydHM6IChhd2FpdCBmaXJlc3RhcnRyRW50aXR5Py5leHRyYUNoYXJ0cygpKSB8fCBbXSxcbiAgfTtcbn1cbiJdfQ==
|
|
235899
236364
|
|
|
235900
236365
|
/***/ }),
|
|
235901
236366
|
|
|
@@ -236977,7 +237442,11 @@ exports.cdk8s_rendererSubcommands = {
|
|
|
236977
237442
|
{ name: 'previousCRs', alias: 'p', type: String },
|
|
236978
237443
|
{ name: 'provider', type: String },
|
|
236979
237444
|
{ name: 'outputCatalogDir', type: String, defaultValue: '/tmp/.catalog' },
|
|
236980
|
-
{
|
|
237445
|
+
{
|
|
237446
|
+
name: 'validateReferentialIntegrity',
|
|
237447
|
+
type: String,
|
|
237448
|
+
defaultValue: 'enabled',
|
|
237449
|
+
},
|
|
236981
237450
|
{
|
|
236982
237451
|
name: 'outputCrDir',
|
|
236983
237452
|
alias: 'o',
|
|
@@ -244569,11 +245038,12 @@ function generateClaimsDefaults(org, defaultsPath) {
|
|
|
244569
245038
|
providers: {
|
|
244570
245039
|
github: {
|
|
244571
245040
|
org: org,
|
|
244572
|
-
branchStrategy:
|
|
244573
|
-
|
|
244574
|
-
|
|
245041
|
+
branchStrategy: {
|
|
245042
|
+
name: 'trunkBasedDevelopment',
|
|
245043
|
+
defaultBranch: 'main',
|
|
245044
|
+
},
|
|
245045
|
+
orgPermissions: 'none',
|
|
244575
245046
|
visibility: 'private',
|
|
244576
|
-
defaultBranch: 'main',
|
|
244577
245047
|
technology: {
|
|
244578
245048
|
stack: 'none',
|
|
244579
245049
|
version: 'none',
|
|
@@ -245259,8 +245729,10 @@ class RepoGithubDecanter extends base_1.GithubDecanter {
|
|
|
245259
245729
|
name: this.data.repoDetails.name,
|
|
245260
245730
|
org: this.org,
|
|
245261
245731
|
visibility: this.data.repoDetails.visibility,
|
|
245262
|
-
|
|
245263
|
-
|
|
245732
|
+
branchStrategy: {
|
|
245733
|
+
name: this.data.branchStrategy.kind,
|
|
245734
|
+
defaultBranch: this.data.repoDetails.default_branch,
|
|
245735
|
+
},
|
|
245264
245736
|
},
|
|
245265
245737
|
},
|
|
245266
245738
|
path: '/providers',
|
|
@@ -246635,14 +247107,14 @@ async function getItem(kind, namespace, item) {
|
|
|
246635
247107
|
return await getItemByItemPath(itemPath);
|
|
246636
247108
|
}
|
|
246637
247109
|
exports.getItem = getItem;
|
|
246638
|
-
async function getItemByItemPath(itemPath, apiGroup = catalog_common_1.default.types.controller.FirestartrApiGroup) {
|
|
247110
|
+
async function getItemByItemPath(itemPath, apiGroup = catalog_common_1.default.types.controller.FirestartrApiGroup, apiVersion = 'v1') {
|
|
246639
247111
|
fDebug(`Getting ${itemPath}`);
|
|
246640
247112
|
const { kc, opts } = await getConnection();
|
|
246641
247113
|
opts.headers['Content-Type'] = 'application/json';
|
|
246642
247114
|
opts.headers['Accept'] = 'application/json';
|
|
246643
247115
|
const url = apiGroup === catalog_common_1.default.types.controller.KubernetesApiGroup
|
|
246644
247116
|
? `${kc.getCurrentCluster().server}/api/v1/namespaces/${itemPath}`
|
|
246645
|
-
: `${kc.getCurrentCluster().server}/apis/${apiGroup}/
|
|
247117
|
+
: `${kc.getCurrentCluster().server}/apis/${apiGroup}/${apiVersion}/namespaces/${itemPath}`;
|
|
246646
247118
|
const r = await fetch(url, { method: 'get', headers: opts.headers });
|
|
246647
247119
|
if (!r.ok) {
|
|
246648
247120
|
const err = new Error(`Error on getItemByItemPath: ${itemPath}: ${r.statusText}`);
|
|
@@ -247203,6 +247675,7 @@ const kindPluralMap = {
|
|
|
247203
247675
|
terraformworkspaces: 'FirestartrTerraformWorkspace',
|
|
247204
247676
|
terraformworkspaceplans: 'FirestartrTerraformWorkspacePlan',
|
|
247205
247677
|
providerconfigs: 'FirestartrProviderConfig',
|
|
247678
|
+
externalsecrets: 'ExternalSecret',
|
|
247206
247679
|
secrets: 'Secret',
|
|
247207
247680
|
};
|
|
247208
247681
|
function getKindFromPlural(plural) {
|
|
@@ -248159,11 +248632,14 @@ async function resolve(cr, getItemByItemPath, getSecret, namespace = 'default')
|
|
|
248159
248632
|
}
|
|
248160
248633
|
exports.resolve = resolve;
|
|
248161
248634
|
async function resolveSecretRef(namespace, crDependency, getSecret) {
|
|
248162
|
-
|
|
248635
|
+
let secretName = `${crDependency['kind']}-${crDependency['metadata']['name']}-outputs`.toLowerCase();
|
|
248163
248636
|
if (crDependency.kind === 'FirestartrProviderConfig') {
|
|
248164
248637
|
log('resolving secret for FirestartrProviderConfig, skipping');
|
|
248165
248638
|
return undefined;
|
|
248166
248639
|
}
|
|
248640
|
+
if (crDependency.kind === 'ExternalSecret') {
|
|
248641
|
+
secretName = crDependency.metadata.name;
|
|
248642
|
+
}
|
|
248167
248643
|
const secret = await getSecret(namespace, secretName);
|
|
248168
248644
|
if (!secret)
|
|
248169
248645
|
console.error(`Could not resolve secret ${secretName}`);
|
|
@@ -248175,7 +248651,7 @@ async function resolveDep(namespace, resolve, deps, references, getItemByItemPat
|
|
|
248175
248651
|
const kr = `${resolve.kind}-${resolve.name}`;
|
|
248176
248652
|
if (kr in deps)
|
|
248177
248653
|
return;
|
|
248178
|
-
const ref = await getItemByItemPath(`${namespace}/${plural}/${resolve.name}`, resolve.apiGroup);
|
|
248654
|
+
const ref = await getItemByItemPath(`${namespace}/${plural}/${resolve.name}`, resolve.apiGroup, resolve.apiVersion);
|
|
248179
248655
|
if (!ref)
|
|
248180
248656
|
throw new ResolverError(kr);
|
|
248181
248657
|
// We may have nested refs but they should not be circular
|
|
@@ -248183,7 +248659,8 @@ async function resolveDep(namespace, resolve, deps, references, getItemByItemPat
|
|
|
248183
248659
|
for (const nestedRef of walk(ref)) {
|
|
248184
248660
|
references.push(nestedRef);
|
|
248185
248661
|
}
|
|
248186
|
-
const secret = resolve.apiGroup === catalog_common_1.default.types.controller.FirestartrApiGroup
|
|
248662
|
+
const secret = resolve.apiGroup === catalog_common_1.default.types.controller.FirestartrApiGroup ||
|
|
248663
|
+
resolve.apiGroup === catalog_common_1.default.types.controller.ExternalSecretsApiGroup
|
|
248187
248664
|
? await resolveSecretRef(namespace, ref, getSecret)
|
|
248188
248665
|
: undefined;
|
|
248189
248666
|
deps[kr] = {
|
|
@@ -248219,11 +248696,20 @@ function walkObject(item) {
|
|
|
248219
248696
|
const refKeyRegex = /^(secret)Ref$/;
|
|
248220
248697
|
for (const key in item) {
|
|
248221
248698
|
if (key === 'ref') {
|
|
248222
|
-
|
|
248223
|
-
|
|
248224
|
-
|
|
248225
|
-
|
|
248226
|
-
|
|
248699
|
+
if (item[key].kind === 'ExternalSecret') {
|
|
248700
|
+
toResolve.push({
|
|
248701
|
+
...item[key],
|
|
248702
|
+
apiGroup: catalog_common_1.default.types.controller.ExternalSecretsApiGroup,
|
|
248703
|
+
apiVersion: 'v1beta1',
|
|
248704
|
+
});
|
|
248705
|
+
}
|
|
248706
|
+
else {
|
|
248707
|
+
toResolve.push({
|
|
248708
|
+
...item[key],
|
|
248709
|
+
apiGroup: catalog_common_1.default.types.controller.FirestartrApiGroup,
|
|
248710
|
+
apiVersion: 'v1',
|
|
248711
|
+
});
|
|
248712
|
+
}
|
|
248227
248713
|
}
|
|
248228
248714
|
else if (refKeyRegex.test(key)) {
|
|
248229
248715
|
const match = key.match(refKeyRegex);
|
|
@@ -250162,18 +250648,28 @@ function resolveReferences(item, deps) {
|
|
|
250162
250648
|
try {
|
|
250163
250649
|
const references = {};
|
|
250164
250650
|
const itemReferences = item.spec.references;
|
|
250651
|
+
console.dir(itemReferences);
|
|
250652
|
+
// if(!process.env.TONISILLO) process.exit(1)
|
|
250165
250653
|
for (const iRef of itemReferences) {
|
|
250166
250654
|
const ref = deps[`${iRef.ref.kind}-${iRef.ref.name}`];
|
|
250167
250655
|
if (!ref) {
|
|
250168
250656
|
throw new Error(`Reference ${iRef.ref.kind}-${iRef.ref.name} not found`);
|
|
250169
250657
|
}
|
|
250170
|
-
if (!ref.secret || !ref.secret.data)
|
|
250171
|
-
throw new Error(`❌ No outputs secret found in reference ${iRef.ref.name}
|
|
250172
|
-
|
|
250173
|
-
throw new Error(`❌ No outputs found in secret ${ref.secret.metadata.name}`);
|
|
250658
|
+
if (!ref.secret || !ref.secret.data) {
|
|
250659
|
+
throw new Error(`❌ No outputs secret found in reference ${iRef.ref.name}`);
|
|
250660
|
+
}
|
|
250174
250661
|
let b64Decoded = '';
|
|
250175
250662
|
try {
|
|
250176
|
-
|
|
250663
|
+
if (ref.secret.data['outputs']) {
|
|
250664
|
+
b64Decoded = Buffer.from(ref.secret.data['outputs'], 'base64').toString('utf-8');
|
|
250665
|
+
}
|
|
250666
|
+
else if (Object.keys(ref.secret.data).length > 0) {
|
|
250667
|
+
const resultObj = {};
|
|
250668
|
+
for (const key in ref.secret.data) {
|
|
250669
|
+
resultObj[key] = Buffer.from(ref.secret.data[key], 'base64').toString('utf-8');
|
|
250670
|
+
}
|
|
250671
|
+
b64Decoded = JSON.stringify(resultObj);
|
|
250672
|
+
}
|
|
250177
250673
|
}
|
|
250178
250674
|
catch (e) {
|
|
250179
250675
|
throw new Error(`❌ Error decoding outputs from secret ${ref.secret.metadata.name}: ${e}`);
|
|
@@ -250189,8 +250685,14 @@ function resolveReferences(item, deps) {
|
|
|
250189
250685
|
if (!outputs[iRef.ref.key]) {
|
|
250190
250686
|
throw new Error(getErrorOutputMessage(item, iRef.ref.key, ref));
|
|
250191
250687
|
}
|
|
250192
|
-
|
|
250688
|
+
if (ref.secret.data['outputs']) {
|
|
250689
|
+
references[iRef.name] = outputs[iRef.ref.key].value;
|
|
250690
|
+
}
|
|
250691
|
+
else {
|
|
250692
|
+
references[iRef.name] = outputs[iRef.ref.key];
|
|
250693
|
+
}
|
|
250193
250694
|
}
|
|
250695
|
+
console.log('RESOLVED REFERENCES: ', references);
|
|
250194
250696
|
return references;
|
|
250195
250697
|
}
|
|
250196
250698
|
catch (e) {
|