Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@kizahasi/flocon-core

Package Overview
Dependencies
Maintainers
1
Versions
74
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kizahasi/flocon-core - npm Package Compare versions

Comparing version 0.15.0 to 0.15.1

45

dist/cjs/internal/ot/room/participant/v1.js

@@ -42,4 +42,3 @@ "use strict";

role: maybe_1.maybe(participantRole),
// TODO: 互換性のため、maybeを付けている。互換性を壊しても良くなったときはmaybeを外す。
imagePieceValues: maybe_1.maybe(record_1.record(t.string, ImagePieceValue.state)),
imagePieceValues: record_1.record(t.string, ImagePieceValue.state),
});

@@ -57,3 +56,2 @@ exports.downOperation = createOperation_1.createOperation(1, {

const toClientState = (requestedBy, participantKey, activeBoardKey) => (source) => {
var _a;
const isAuthorized = type_1.RequestedBy.isAuthorized({ requestedBy, userUid: participantKey });

@@ -63,3 +61,3 @@ return {

imagePieceValues: RecordOperation.toClientState({
serverState: (_a = source.imagePieceValues) !== null && _a !== void 0 ? _a : {},
serverState: source.imagePieceValues,
isPrivate: state => state.isPrivate && !isAuthorized,

@@ -98,3 +96,2 @@ toClientState: ({ state }) => ImagePieceValue.toClientState(requestedBy, activeBoardKey)(state),

const apply = ({ state, operation }) => {
var _a, _b;
const result = { ...state };

@@ -108,4 +105,4 @@ if (operation.name != null) {

const imagePieceValues = RecordOperation.apply({
prevState: (_a = state.imagePieceValues) !== null && _a !== void 0 ? _a : {},
operation: (_b = operation.imagePieceValues) !== null && _b !== void 0 ? _b : {},
prevState: state.imagePieceValues,
operation: operation.imagePieceValues,
innerApply: ({ prevState, operation: upOperation }) => {

@@ -126,3 +123,2 @@ return ImagePieceValue.apply({

const applyBack = ({ state, operation }) => {
var _a, _b;
const result = { ...state };

@@ -136,4 +132,4 @@ if (operation.name != null) {

const imagePieceValues = RecordOperation.applyBack({
nextState: (_a = state.imagePieceValues) !== null && _a !== void 0 ? _a : {},
operation: (_b = operation.imagePieceValues) !== null && _b !== void 0 ? _b : {},
nextState: state.imagePieceValues,
operation: operation.imagePieceValues,
innerApplyBack: ({ state, operation }) => {

@@ -174,3 +170,3 @@ return ImagePieceValue.applyBack({

const restore = ({ nextState, downOperation, }) => {
var _a, _b, _c;
var _a, _b;
if (downOperation === undefined) {

@@ -180,3 +176,3 @@ return result_1.Result.ok({ prevState: nextState, twoWayOperation: undefined });

const imagePieceValues = RecordOperation.restore({
nextState: (_a = nextState.imagePieceValues) !== null && _a !== void 0 ? _a : {},
nextState: nextState.imagePieceValues,
downOperation: downOperation.imagePieceValues,

@@ -205,5 +201,5 @@ innerDiff: params => ImagePieceValue.diff(params),

if (downOperation.role != null) {
prevState.role = (_b = downOperation.role.oldValue) !== null && _b !== void 0 ? _b : undefined;
prevState.role = (_a = downOperation.role.oldValue) !== null && _a !== void 0 ? _a : undefined;
twoWayOperation.role = {
oldValue: (_c = downOperation.role.oldValue) !== null && _c !== void 0 ? _c : undefined,
oldValue: (_b = downOperation.role.oldValue) !== null && _b !== void 0 ? _b : undefined,
newValue: nextState.role,

@@ -216,6 +212,5 @@ };

const diff = ({ prevState, nextState }) => {
var _a, _b;
const imagePieceValues = RecordOperation.diff({
prevState: (_a = prevState.imagePieceValues) !== null && _a !== void 0 ? _a : {},
nextState: (_b = nextState.imagePieceValues) !== null && _b !== void 0 ? _b : {},
prevState: prevState.imagePieceValues,
nextState: nextState.imagePieceValues,
innerDiff: params => ImagePieceValue.diff(params),

@@ -240,3 +235,3 @@ });

const serverTransform = ({ requestedBy, participantKey, activeBoardSecondKey, }) => ({ prevState, currentState, clientOperation, serverOperation }) => {
var _a, _b, _c, _d, _e, _f;
var _a, _b, _c, _d;
const isAuthorized = type_1.RequestedBy.isAuthorized({ requestedBy, userUid: participantKey });

@@ -246,4 +241,4 @@ const imagePieceValues = RecordOperation.serverTransform({

second: clientOperation.imagePieceValues,
prevState: (_a = prevState.imagePieceValues) !== null && _a !== void 0 ? _a : {},
nextState: (_b = currentState.imagePieceValues) !== null && _b !== void 0 ? _b : {},
prevState: prevState.imagePieceValues,
nextState: currentState.imagePieceValues,
innerTransform: ({ first, second, prevState, nextState }) => ImagePieceValue.serverTransform(isAuthorized)({

@@ -271,4 +266,4 @@ prevState,

twoWayOperation.name = ReplaceOperation.serverTransform({
first: (_c = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.name) !== null && _c !== void 0 ? _c : undefined,
second: (_d = clientOperation.name) !== null && _d !== void 0 ? _d : undefined,
first: (_a = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.name) !== null && _a !== void 0 ? _a : undefined,
second: (_b = clientOperation.name) !== null && _b !== void 0 ? _b : undefined,
prevState: prevState.name,

@@ -279,4 +274,4 @@ });

twoWayOperation.role = ReplaceOperation.serverTransform({
first: (_e = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.role) !== null && _e !== void 0 ? _e : undefined,
second: (_f = clientOperation.role) !== null && _f !== void 0 ? _f : undefined,
first: (_c = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.role) !== null && _c !== void 0 ? _c : undefined,
second: (_d = clientOperation.role) !== null && _d !== void 0 ? _d : undefined,
prevState: prevState.role,

@@ -333,2 +328,2 @@ });

exports.clientTransform = clientTransform;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvb3Qvcm9vbS9wYXJ0aWNpcGFudC92MS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBQzNCLDBDQVN5QjtBQUN6Qiw4RUFBZ0U7QUFDaEUsZ0VBQTZEO0FBQzdELDhDQUF1RDtBQUN2RCw2Q0FBMEM7QUFDMUMseUNBQTREO0FBQzVELHNFQUF3RDtBQUN4RCw4RUFJMkM7QUFDM0MsNEVBQThEO0FBRTlELDRDQUFnRDtBQUVuQyxRQUFBLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsUUFBQSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBQ3hCLFFBQUEsTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUvQixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUdqRixRQUFBLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV0QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDZCxJQUFJLEVBQUUsYUFBSyxDQUFDLGVBQWUsQ0FBQztJQUU1QixxREFBcUQ7SUFDckQsZ0JBQWdCLEVBQUUsYUFBSyxDQUFDLGVBQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUNuRSxDQUFDLENBQUM7QUFJVSxRQUFBLGFBQWEsR0FBRyxpQ0FBZSxDQUFDLENBQUMsRUFBRTtJQUM1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxF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LFdBQVc7UUFDcEQsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1FBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztLQUN6QixDQUFDO0lBRUYsT0FBTyxlQUFNLENBQUMsRUFBRSxDQUFDO1FBQ2IsVUFBVSxFQUFFLG1CQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUMzRCxXQUFXLEVBQUUsbUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXO0tBQ2pFLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQWpEVyxRQUFBLGVBQWUsbUJBaUQxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xyXG5pbXBvcnQge1xyXG4gICAgQXBwbHksXHJcbiAgICBDbGllbnRUcmFuc2Zvcm0sXHJcbiAgICBDb21wb3NlLFxyXG4gICAgRGlmZixcclxuICAgIFJlcXVlc3RlZEJ5LFxyXG4gICAgUmVzdG9yZSxcclxuICAgIGFkbWluLFxyXG4gICAgU2VydmVyVHJhbnNmb3JtLFxyXG59IGZyb20gJy4uLy4uL3V0aWwvdHlwZSc7XHJcbmltcG9ydCAqIGFzIFJlcGxhY2VPcGVyYXRpb24gZnJvbSAnLi4vLi4vdXRpbC9yZXBsYWNlT3BlcmF0aW9uJztcclxuaW1wb3J0IHsgY3JlYXRlT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbC9jcmVhdGVPcGVyYXRpb24nO1xyXG5pbXBvcnQgeyBpc0lkUmVjb3JkLCByZWNvcmQgfSBmcm9tICcuLi8uLi91dGlsL3JlY29yZCc7XHJcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gJ0BraXphaGFzaS9yZXN1bHQnO1xyXG5pbXBvcnQgeyBjaG9vc2VSZWNvcmQsIENvbXBvc2l0ZUtleSB9IGZyb20gJ0BraXphaGFzaS91dGlsJztcclxuaW1wb3J0ICogYXMgSW1hZ2VQaWVjZVZhbHVlIGZyb20gJy4vaW1hZ2VQaWVjZVZhbHVlL3YxJztcclxuaW1wb3J0IHtcclxuICAgIG1hcFJlY29yZE9wZXJhdGlvbkVsZW1lbnQsXHJcbiAgICByZWNvcmREb3duT3BlcmF0aW9uRWxlbWVudEZhY3RvcnksXHJcbiAgICByZWNvcmRVcE9wZXJhdGlvbkVsZW1lbnRGYWN0b3J5LFxyXG59IGZyb20gJy4uLy4uL3V0aWwvcmVjb3JkT3BlcmF0aW9uRWxlbWVudCc7XHJcbmltcG9ydCAqIGFzIFJlY29yZE9wZXJhdGlvbiBmcm9tICcuLi8uLi91dGlsL3JlY29yZE9wZXJhdGlvbic7XHJcbmltcG9ydCB7IEFwcGx5RXJyb3IsIENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvciwgUG9zaXRpdmVJbnQgfSBmcm9tICdAa2l6YWhhc2kvb3Qtc3RyaW5nJztcclxuaW1wb3J0IHsgTWF5YmUsIG1heWJlIH0gZnJvbSAnLi4vLi4vdXRpbC9tYXliZSc7XHJcblxyXG5leHBvcnQgY29uc3QgUGxheWVyID0gJ1BsYXllcic7XHJcbmV4cG9ydCBjb25zdCBTcGVjdGF0b3IgPSAnU3BlY3RhdG9yJztcclxuZXhwb3J0IGNvbnN0IE1hc3RlciA9ICdNYXN0ZXInO1xyXG5cclxuY29uc3QgcGFydGljaXBhbnRSb2xlID0gdC51bmlvbihbdC5saXRlcmFsKFBsYXllciksIHQubGl0ZXJhbChTcGVjdGF0b3IpLCB0LmxpdGVyYWwoTWFzdGVyKV0pO1xyXG5leHBvcnQgdHlwZSBQYXJ0aWNpcGFudFJvbGUgPSB0LlR5cGVPZjx0eXBlb2YgcGFydGljaXBhbnRSb2xlPjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGF0ZSA9IHQudHlwZSh7XHJcbiAgICAkdmVyc2lvbjogdC5saXRlcmFsKDEpLFxyXG5cclxuICAgIG5hbWU6IHQuc3RyaW5nLFxyXG4gICAgcm9sZTogbWF5YmUocGFydGljaXBhbnRSb2xlKSxcclxuXHJcbiAgICAvLyBUT0RPOiDkupLmj5vmgKfjga7jgZ/jgoHjgIFtYXliZeOCkuS7mOOBkeOBpuOBhOOCi+OAguS6kuaPm+aAp+OCkuWjiuOBl+OBpuOCguiJr+OBj+OBquOBo+OBn+OBqOOBjeOBr21heWJl44KS5aSW44GZ44CCXHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzOiBtYXliZShyZWNvcmQodC5zdHJpbmcsIEltYWdlUGllY2VWYWx1ZS5zdGF0ZSkpLFxyXG59KTtcclxuXHJcbmV4cG9ydCB0eXBlIFN0YXRlID0gdC5UeXBlT2Y8dHlwZW9mIHN0YXRlPjtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3duT3BlcmF0aW9uID0gY3JlYXRlT3BlcmF0aW9uKDEsIHtcclxuICAgIG5hbWU6IHQudHlwZSh7IG9sZFZhbHVlOiB0LnN0cmluZyB9KSxcclxuICAgIHJvbGU6IHQudHlwZSh7IG9sZFZhbHVlOiBtYXliZShwYXJ0aWNpcGFudFJvbGUpIH0pLFxyXG4gICAgaW1hZ2VQaWVjZVZhbHVlczogcmVjb3JkKFxyXG4gICAgICAgIHQuc3RyaW5nLFxyXG4gICAgICAgIHJlY29yZERvd25PcGVyYXRpb25FbGVtZW50RmFjdG9yeShJbWFnZVBpZWNlVmFsdWUuc3RhdGUsIEltYWdlUGllY2VWYWx1ZS5kb3duT3BlcmF0aW9uKVxyXG4gICAgKSxcclxufSk7XHJcblxyXG5leHBvcnQgdHlwZSBEb3duT3BlcmF0aW9uID0gdC5UeXBlT2Y8dHlwZW9mIGRvd25PcGVyYXRpb24+O1xyXG5cclxuZXhwb3J0IGNvbnN0IHVwT3BlcmF0aW9uID0gY3JlYXRlT3BlcmF0aW9uKDEsIHtcclxuICAgIG5hbWU6IHQudHlwZSh7IG5ld1ZhbHVlOiB0LnN0cmluZyB9KSxcclxuICAgIHJvbGU6IHQudHlwZSh7IG5ld1ZhbHVlOiBtYXliZShwYXJ0aWNpcGFudFJvbGUpIH0pLFxyXG4gICAgaW1hZ2VQaWVjZVZhbHVlczogcmVjb3JkKFxyXG4gICAgICAgIHQuc3RyaW5nLFxyXG4gICAgICAgIHJlY29yZFVwT3BlcmF0aW9uRWxlbWVudEZhY3RvcnkoSW1hZ2VQaWVjZVZhbHVlLnN0YXRlLCBJbWFnZVBpZWNlVmFsdWUudXBPcGVyYXRpb24pXHJcbiAgICApLFxyXG59KTtcclxuXHJcbmV4cG9ydCB0eXBlIFVwT3BlcmF0aW9uID0gdC5UeXBlT2Y8dHlwZW9mIHVwT3BlcmF0aW9uPjtcclxuXHJcbmV4cG9ydCB0eXBlIFR3b1dheU9wZXJhdGlvbiA9IHtcclxuICAgICR2ZXJzaW9uOiAxO1xyXG5cclxuICAgIG5hbWU/OiBSZXBsYWNlT3BlcmF0aW9uLlJlcGxhY2VWYWx1ZVR3b1dheU9wZXJhdGlvbjxzdHJpbmc+O1xyXG4gICAgcm9sZT86IFJlcGxhY2VPcGVyYXRpb24uUmVwbGFjZVZhbHVlVHdvV2F5T3BlcmF0aW9uPE1heWJlPFBhcnRpY2lwYW50Um9sZT4+O1xyXG4gICAgaW1hZ2VQaWVjZVZhbHVlcz86IFJlY29yZE9wZXJhdGlvbi5SZWNvcmRUd29XYXlPcGVyYXRpb248XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5Ud29XYXlPcGVyYXRpb25cclxuICAgID47XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdG9DbGllbnRTdGF0ZSA9XHJcbiAgICAocmVxdWVzdGVkQnk6IFJlcXVlc3RlZEJ5LCBwYXJ0aWNpcGFudEtleTogc3RyaW5nLCBhY3RpdmVCb2FyZEtleTogQ29tcG9zaXRlS2V5IHwgbnVsbCkgPT5cclxuICAgIChzb3VyY2U6IFN0YXRlKTogU3RhdGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzQXV0aG9yaXplZCA9IFJlcXVlc3RlZEJ5LmlzQXV0aG9yaXplZCh7IHJlcXVlc3RlZEJ5LCB1c2VyVWlkOiBwYXJ0aWNpcGFudEtleSB9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5zb3VyY2UsXHJcbiAgICAgICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IFJlY29yZE9wZXJhdGlvbi50b0NsaWVudFN0YXRlPFxyXG4gICAgICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlXHJcbiAgICAgICAgICAgID4oe1xyXG4gICAgICAgICAgICAgICAgc2VydmVyU3RhdGU6IHNvdXJjZS5pbWFnZVBpZWNlVmFsdWVzID8/IHt9LFxyXG4gICAgICAgICAgICAgICAgaXNQcml2YXRlOiBzdGF0ZSA9PiBzdGF0ZS5pc1ByaXZhdGUgJiYgIWlzQXV0aG9yaXplZCxcclxuICAgICAgICAgICAgICAgIHRvQ2xpZW50U3RhdGU6ICh7IHN0YXRlIH0pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLnRvQ2xpZW50U3RhdGUocmVxdWVzdGVkQnksIGFjdGl2ZUJvYXJkS2V5KShzdGF0ZSksXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvRG93bk9wZXJhdGlvbiA9IChzb3VyY2U6IFR3b1dheU9wZXJhdGlvbik6IERvd25PcGVyYXRpb24gPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zb3VyY2UsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczpcclxuICAgICAgICAgICAgc291cmNlLmltYWdlUGllY2VWYWx1ZXMgPT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgIDogY2hvb3NlUmVjb3JkKHNvdXJjZS5pbWFnZVBpZWNlVmFsdWVzLCBvcGVyYXRpb24gPT5cclxuICAgICAgICAgICAgICAgICAgICAgIG1hcFJlY29yZE9wZXJhdGlvbkVsZW1lbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogb3BlcmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFJlcGxhY2U6IHggPT4geCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBPcGVyYXRpb246IEltYWdlUGllY2VWYWx1ZS50b0Rvd25PcGVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB0b1VwT3BlcmF0aW9uID0gKHNvdXJjZTogVHdvV2F5T3BlcmF0aW9uKTogVXBPcGVyYXRpb24gPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zb3VyY2UsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczpcclxuICAgICAgICAgICAgc291cmNlLmltYWdlUGllY2VWYWx1ZXMgPT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgIDogY2hvb3NlUmVjb3JkKHNvdXJjZS5pbWFnZVBpZWNlVmFsdWVzLCBvcGVyYXRpb24gPT5cclxuICAgICAgICAgICAgICAgICAgICAgIG1hcFJlY29yZE9wZXJhdGlvbkVsZW1lbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogb3BlcmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFJlcGxhY2U6IHggPT4geCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBPcGVyYXRpb246IEltYWdlUGllY2VWYWx1ZS50b1VwT3BlcmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXBwbHk6IEFwcGx5PFN0YXRlLCBVcE9wZXJhdGlvbiB8IFR3b1dheU9wZXJhdGlvbj4gPSAoeyBzdGF0ZSwgb3BlcmF0aW9uIH0pID0+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogU3RhdGUgPSB7IC4uLnN0YXRlIH07XHJcbiAgICBpZiAob3BlcmF0aW9uLm5hbWUgIT0gbnVsbCkge1xyXG4gICAgICAgIHJlc3VsdC5uYW1lID0gb3BlcmF0aW9uLm5hbWUubmV3VmFsdWU7XHJcbiAgICB9XHJcbiAgICBpZiAob3BlcmF0aW9uLnJvbGUgIT0gbnVsbCkge1xyXG4gICAgICAgIHJlc3VsdC5yb2xlID0gb3BlcmF0aW9uLnJvbGUubmV3VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5hcHBseTxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlVwT3BlcmF0aW9uIHwgSW1hZ2VQaWVjZVZhbHVlLlR3b1dheU9wZXJhdGlvbixcclxuICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgPih7XHJcbiAgICAgICAgcHJldlN0YXRlOiBzdGF0ZS5pbWFnZVBpZWNlVmFsdWVzID8/IHt9LFxyXG4gICAgICAgIG9wZXJhdGlvbjogb3BlcmF0aW9uLmltYWdlUGllY2VWYWx1ZXMgPz8ge30sXHJcbiAgICAgICAgaW5uZXJBcHBseTogKHsgcHJldlN0YXRlLCBvcGVyYXRpb246IHVwT3BlcmF0aW9uIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIEltYWdlUGllY2VWYWx1ZS5hcHBseSh7XHJcbiAgICAgICAgICAgICAgICBzdGF0ZTogcHJldlN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiB1cE9wZXJhdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0LmltYWdlUGllY2VWYWx1ZXMgPSBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiBSZXN1bHQub2socmVzdWx0KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhcHBseUJhY2s6IEFwcGx5PFN0YXRlLCBEb3duT3BlcmF0aW9uPiA9ICh7IHN0YXRlLCBvcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcclxuICAgIGlmIChvcGVyYXRpb24ubmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcmVzdWx0Lm5hbWUgPSBvcGVyYXRpb24ubmFtZS5vbGRWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChvcGVyYXRpb24ucm9sZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcmVzdWx0LnJvbGUgPSBvcGVyYXRpb24ucm9sZS5vbGRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLmFwcGx5QmFjazxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLkRvd25PcGVyYXRpb24sXHJcbiAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgID4oe1xyXG4gICAgICAgIG5leHRTdGF0ZTogc3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyA/PyB7fSxcclxuICAgICAgICBvcGVyYXRpb246IG9wZXJhdGlvbi5pbWFnZVBpZWNlVmFsdWVzID8/IHt9LFxyXG4gICAgICAgIGlubmVyQXBwbHlCYWNrOiAoeyBzdGF0ZSwgb3BlcmF0aW9uIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIEltYWdlUGllY2VWYWx1ZS5hcHBseUJhY2soe1xyXG4gICAgICAgICAgICAgICAgc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgIH1cclxuICAgIHJlc3VsdC5pbWFnZVBpZWNlVmFsdWVzID0gaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gUmVzdWx0Lm9rKHJlc3VsdCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY29tcG9zZURvd25PcGVyYXRpb246IENvbXBvc2U8RG93bk9wZXJhdGlvbj4gPSAoeyBmaXJzdCwgc2Vjb25kIH0pID0+IHtcclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uY29tcG9zZURvd25PcGVyYXRpb248XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5Eb3duT3BlcmF0aW9uLFxyXG4gICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICA+KHtcclxuICAgICAgICBmaXJzdDogZmlyc3QuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBzZWNvbmQ6IHNlY29uZC5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIGlubmVyQXBwbHlCYWNrOiBwYXJhbXMgPT4gSW1hZ2VQaWVjZVZhbHVlLmFwcGx5QmFjayhwYXJhbXMpLFxyXG4gICAgICAgIGlubmVyQ29tcG9zZTogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5jb21wb3NlRG93bk9wZXJhdGlvbihwYXJhbXMpLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoaW1hZ2VQaWVjZVZhbHVlcy5pc0Vycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlUGllY2VWYWx1ZXM7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWx1ZVByb3BzOiBEb3duT3BlcmF0aW9uID0ge1xyXG4gICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgIG5hbWU6IFJlcGxhY2VPcGVyYXRpb24uY29tcG9zZURvd25PcGVyYXRpb24oXHJcbiAgICAgICAgICAgIGZpcnN0Lm5hbWUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBzZWNvbmQubmFtZSA/PyB1bmRlZmluZWRcclxuICAgICAgICApLFxyXG4gICAgICAgIHJvbGU6IFJlcGxhY2VPcGVyYXRpb24uY29tcG9zZURvd25PcGVyYXRpb24oXHJcbiAgICAgICAgICAgIGZpcnN0LnJvbGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBzZWNvbmQucm9sZSA/PyB1bmRlZmluZWRcclxuICAgICAgICApLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IGltYWdlUGllY2VWYWx1ZXMudmFsdWUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJlc3VsdC5vayh2YWx1ZVByb3BzKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByZXN0b3JlOiBSZXN0b3JlPFN0YXRlLCBEb3duT3BlcmF0aW9uLCBUd29XYXlPcGVyYXRpb24+ID0gKHtcclxuICAgIG5leHRTdGF0ZSxcclxuICAgIGRvd25PcGVyYXRpb24sXHJcbn0pID0+IHtcclxuICAgIGlmIChkb3duT3BlcmF0aW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gUmVzdWx0Lm9rKHsgcHJldlN0YXRlOiBuZXh0U3RhdGUsIHR3b1dheU9wZXJhdGlvbjogdW5kZWZpbmVkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24ucmVzdG9yZTxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLkRvd25PcGVyYXRpb24sXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlR3b1dheU9wZXJhdGlvbixcclxuICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgPih7XHJcbiAgICAgICAgbmV4dFN0YXRlOiBuZXh0U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyA/PyB7fSxcclxuICAgICAgICBkb3duT3BlcmF0aW9uOiBkb3duT3BlcmF0aW9uLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgaW5uZXJEaWZmOiBwYXJhbXMgPT4gSW1hZ2VQaWVjZVZhbHVlLmRpZmYocGFyYW1zKSxcclxuICAgICAgICBpbm5lclJlc3RvcmU6IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUucmVzdG9yZShwYXJhbXMpLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoaW1hZ2VQaWVjZVZhbHVlcy5pc0Vycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlUGllY2VWYWx1ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJldlN0YXRlOiBTdGF0ZSA9IHtcclxuICAgICAgICAuLi5uZXh0U3RhdGUsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZS5wcmV2U3RhdGUsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgdHdvV2F5T3BlcmF0aW9uOiBUd29XYXlPcGVyYXRpb24gPSB7XHJcbiAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZS50d29XYXlPcGVyYXRpb24sXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChkb3duT3BlcmF0aW9uLm5hbWUgIT0gbnVsbCkge1xyXG4gICAgICAgIHByZXZTdGF0ZS5uYW1lID0gZG93bk9wZXJhdGlvbi5uYW1lLm9sZFZhbHVlO1xyXG4gICAgICAgIHR3b1dheU9wZXJhdGlvbi5uYW1lID0ge1xyXG4gICAgICAgICAgICAuLi5kb3duT3BlcmF0aW9uLm5hbWUsXHJcbiAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXh0U3RhdGUubmFtZSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGRvd25PcGVyYXRpb24ucm9sZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcHJldlN0YXRlLnJvbGUgPSBkb3duT3BlcmF0aW9uLnJvbGUub2xkVmFsdWUgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgIHR3b1dheU9wZXJhdGlvbi5yb2xlID0ge1xyXG4gICAgICAgICAgICBvbGRWYWx1ZTogZG93bk9wZXJhdGlvbi5yb2xlLm9sZFZhbHVlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgbmV3VmFsdWU6IG5leHRTdGF0ZS5yb2xlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFJlc3VsdC5vayh7IHByZXZTdGF0ZSwgdHdvV2F5T3BlcmF0aW9uIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRpZmY6IERpZmY8U3RhdGUsIFR3b1dheU9wZXJhdGlvbj4gPSAoeyBwcmV2U3RhdGUsIG5leHRTdGF0ZSB9KSA9PiB7XHJcbiAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLmRpZmY8XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5Ud29XYXlPcGVyYXRpb25cclxuICAgID4oe1xyXG4gICAgICAgIHByZXZTdGF0ZTogcHJldlN0YXRlLmltYWdlUGllY2VWYWx1ZXMgPz8ge30sXHJcbiAgICAgICAgbmV4dFN0YXRlOiBuZXh0U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyA/PyB7fSxcclxuICAgICAgICBpbm5lckRpZmY6IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUuZGlmZihwYXJhbXMpLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCByZXN1bHQ6IFR3b1dheU9wZXJhdGlvbiA9IHtcclxuICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgfTtcclxuICAgIGlmIChwcmV2U3RhdGUubmFtZSAhPT0gbmV4dFN0YXRlLm5hbWUpIHtcclxuICAgICAgICByZXN1bHQubmFtZSA9IHsgb2xkVmFsdWU6IHByZXZTdGF0ZS5uYW1lLCBuZXdWYWx1ZTogbmV4dFN0YXRlLm5hbWUgfTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2U3RhdGUucm9sZSAhPT0gbmV4dFN0YXRlLnJvbGUpIHtcclxuICAgICAgICByZXN1bHQucm9sZSA9IHsgb2xkVmFsdWU6IHByZXZTdGF0ZS5yb2xlLCBuZXdWYWx1ZTogbmV4dFN0YXRlLnJvbGUgfTtcclxuICAgIH1cclxuICAgIGlmIChpc0lkUmVjb3JkKHJlc3VsdCkpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZXJ2ZXJUcmFuc2Zvcm0gPVxyXG4gICAgKHtcclxuICAgICAgICByZXF1ZXN0ZWRCeSxcclxuICAgICAgICBwYXJ0aWNpcGFudEtleSxcclxuICAgICAgICBhY3RpdmVCb2FyZFNlY29uZEtleSxcclxuICAgIH06IHtcclxuICAgICAgICByZXF1ZXN0ZWRCeTogUmVxdWVzdGVkQnk7XHJcbiAgICAgICAgcGFydGljaXBhbnRLZXk6IHN0cmluZztcclxuICAgICAgICBhY3RpdmVCb2FyZFNlY29uZEtleTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAgIH0pOiBTZXJ2ZXJUcmFuc2Zvcm08U3RhdGUsIFR3b1dheU9wZXJhdGlvbiwgVXBPcGVyYXRpb24+ID0+XHJcbiAgICAoeyBwcmV2U3RhdGUsIGN1cnJlbnRTdGF0ZSwgY2xpZW50T3BlcmF0aW9uLCBzZXJ2ZXJPcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzQXV0aG9yaXplZCA9IFJlcXVlc3RlZEJ5LmlzQXV0aG9yaXplZCh7IHJlcXVlc3RlZEJ5LCB1c2VyVWlkOiBwYXJ0aWNpcGFudEtleSB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5zZXJ2ZXJUcmFuc2Zvcm08XHJcbiAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVHdvV2F5T3BlcmF0aW9uLFxyXG4gICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVXBPcGVyYXRpb24sXHJcbiAgICAgICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICAgICAgPih7XHJcbiAgICAgICAgICAgIGZpcnN0OiBzZXJ2ZXJPcGVyYXRpb24/LmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgICAgIHNlY29uZDogY2xpZW50T3BlcmF0aW9uLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgICAgIHByZXZTdGF0ZTogcHJldlN0YXRlLmltYWdlUGllY2VWYWx1ZXMgPz8ge30sXHJcbiAgICAgICAgICAgIG5leHRTdGF0ZTogY3VycmVudFN0YXRlLmltYWdlUGllY2VWYWx1ZXMgPz8ge30sXHJcbiAgICAgICAgICAgIGlubmVyVHJhbnNmb3JtOiAoeyBmaXJzdCwgc2Vjb25kLCBwcmV2U3RhdGUsIG5leHRTdGF0ZSB9KSA9PlxyXG4gICAgICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLnNlcnZlclRyYW5zZm9ybShpc0F1dGhvcml6ZWQpKHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2U3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlOiBuZXh0U3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyT3BlcmF0aW9uOiBmaXJzdCxcclxuICAgICAgICAgICAgICAgICAgICBjbGllbnRPcGVyYXRpb246IHNlY29uZCxcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0b1NlcnZlclN0YXRlOiBzdGF0ZSA9PiBzdGF0ZSxcclxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uUG9saWN5OiB7XHJcbiAgICAgICAgICAgICAgICBjYW5jZWxDcmVhdGU6ICgpID0+ICFpc0F1dGhvcml6ZWQsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxVcGRhdGU6IHN0YXRlID0+ICFpc0F1dGhvcml6ZWQgJiYgc3RhdGUubmV4dFN0YXRlLmlzUHJpdmF0ZSxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFJlbW92ZTogc3RhdGUgPT4gIWlzQXV0aG9yaXplZCAmJiBzdGF0ZS5uZXh0U3RhdGUuaXNQcml2YXRlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGltYWdlUGllY2VWYWx1ZXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0d29XYXlPcGVyYXRpb246IFR3b1dheU9wZXJhdGlvbiA9IHtcclxuICAgICAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IGltYWdlUGllY2VWYWx1ZXMudmFsdWUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xyXG4gICAgICAgICAgICB0d29XYXlPcGVyYXRpb24ubmFtZSA9IFJlcGxhY2VPcGVyYXRpb24uc2VydmVyVHJhbnNmb3JtKHtcclxuICAgICAgICAgICAgICAgIGZpcnN0OiBzZXJ2ZXJPcGVyYXRpb24/Lm5hbWUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBjbGllbnRPcGVyYXRpb24ubmFtZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBwcmV2U3RhdGU6IHByZXZTdGF0ZS5uYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRCeS50eXBlID09PSBhZG1pbikge1xyXG4gICAgICAgICAgICB0d29XYXlPcGVyYXRpb24ucm9sZSA9IFJlcGxhY2VPcGVyYXRpb24uc2VydmVyVHJhbnNmb3JtKHtcclxuICAgICAgICAgICAgICAgIGZpcnN0OiBzZXJ2ZXJPcGVyYXRpb24/LnJvbGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBjbGllbnRPcGVyYXRpb24ucm9sZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBwcmV2U3RhdGU6IHByZXZTdGF0ZS5yb2xlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc0lkUmVjb3JkKHR3b1dheU9wZXJhdGlvbikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5vayh1bmRlZmluZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFJlc3VsdC5vayh0d29XYXlPcGVyYXRpb24pO1xyXG4gICAgfTtcclxuXHJcbmV4cG9ydCBjb25zdCBjbGllbnRUcmFuc2Zvcm06IENsaWVudFRyYW5zZm9ybTxVcE9wZXJhdGlvbj4gPSAoeyBmaXJzdCwgc2Vjb25kIH0pID0+IHtcclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uY2xpZW50VHJhbnNmb3JtPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVXBPcGVyYXRpb24sXHJcbiAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgID4oe1xyXG4gICAgICAgIGZpcnN0OiBmaXJzdC5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIHNlY29uZDogc2Vjb25kLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgaW5uZXJUcmFuc2Zvcm06IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUuY2xpZW50VHJhbnNmb3JtKHBhcmFtcyksXHJcbiAgICAgICAgaW5uZXJEaWZmOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmID0gSW1hZ2VQaWVjZVZhbHVlLmRpZmYocGFyYW1zKTtcclxuICAgICAgICAgICAgaWYgKGRpZmYgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpZmY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIEltYWdlUGllY2VWYWx1ZS50b1VwT3BlcmF0aW9uKGRpZmYpO1xyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuYW1lID0gUmVwbGFjZU9wZXJhdGlvbi5jbGllbnRUcmFuc2Zvcm0oe1xyXG4gICAgICAgIGZpcnN0OiBmaXJzdC5uYW1lLFxyXG4gICAgICAgIHNlY29uZDogc2Vjb25kLm5hbWUsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByb2xlID0gUmVwbGFjZU9wZXJhdGlvbi5jbGllbnRUcmFuc2Zvcm0oe1xyXG4gICAgICAgIGZpcnN0OiBmaXJzdC5yb2xlLFxyXG4gICAgICAgIHNlY29uZDogc2Vjb25kLnJvbGUsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBmaXJzdFByaW1lOiBVcE9wZXJhdGlvbiA9IHtcclxuICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLmZpcnN0UHJpbWUsXHJcbiAgICAgICAgbmFtZTogbmFtZS5maXJzdFByaW1lLFxyXG4gICAgICAgIHJvbGU6IHJvbGUuZmlyc3RQcmltZSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2Vjb25kUHJpbWU6IFVwT3BlcmF0aW9uID0ge1xyXG4gICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IGltYWdlUGllY2VWYWx1ZXMudmFsdWUuc2Vjb25kUHJpbWUsXHJcbiAgICAgICAgbmFtZTogbmFtZS5zZWNvbmRQcmltZSxcclxuICAgICAgICByb2xlOiByb2xlLnNlY29uZFByaW1lLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gUmVzdWx0Lm9rKHtcclxuICAgICAgICBmaXJzdFByaW1lOiBpc0lkUmVjb3JkKGZpcnN0UHJpbWUpID8gdW5kZWZpbmVkIDogZmlyc3RQcmltZSxcclxuICAgICAgICBzZWNvbmRQcmltZTogaXNJZFJlY29yZChzZWNvbmRQcmltZSkgPyB1bmRlZmluZWQgOiBzZWNvbmRQcmltZSxcclxuICAgIH0pO1xyXG59O1xyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvb3Qvcm9vbS9wYXJ0aWNpcGFudC92MS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBQzNCLDBDQVN5QjtBQUN6Qiw4RUFBZ0U7QUFDaEUsZ0VBQTZEO0FBQzdELDhDQUF1RDtBQUN2RCw2Q0FBMEM7QUFDMUMseUNBQTREO0FBQzVELHNFQUF3RDtBQUN4RCw4RUFJMkM7QUFDM0MsNEVBQThEO0FBRTlELDRDQUFnRDtBQUVuQyxRQUFBLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsUUFBQSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBQ3hCLFFBQUEsTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUvQixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUdqRixRQUFBLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV0QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDZCxJQUFJLEVBQUUsYUFBSyxDQUFDLGVBQWUsQ0FBQztJQUU1QixnQkFBZ0IsRUFBRSxlQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDO0NBQzVELENBQUMsQ0FBQztBQUlVLFFBQUEsYUFBYSxHQUFHLGlDQUFlLENBQUMsQ0FBQyxFQUFFO0lBQzVDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFN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QUFXLEVBQUUsbUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXO0tBQ2pFLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQWpEVyxRQUFBLGVBQWUsbUJBaUQxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xyXG5pbXBvcnQge1xyXG4gICAgQXBwbHksXHJcbiAgICBDbGllbnRUcmFuc2Zvcm0sXHJcbiAgICBDb21wb3NlLFxyXG4gICAgRGlmZixcclxuICAgIFJlcXVlc3RlZEJ5LFxyXG4gICAgUmVzdG9yZSxcclxuICAgIGFkbWluLFxyXG4gICAgU2VydmVyVHJhbnNmb3JtLFxyXG59IGZyb20gJy4uLy4uL3V0aWwvdHlwZSc7XHJcbmltcG9ydCAqIGFzIFJlcGxhY2VPcGVyYXRpb24gZnJvbSAnLi4vLi4vdXRpbC9yZXBsYWNlT3BlcmF0aW9uJztcclxuaW1wb3J0IHsgY3JlYXRlT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbC9jcmVhdGVPcGVyYXRpb24nO1xyXG5pbXBvcnQgeyBpc0lkUmVjb3JkLCByZWNvcmQgfSBmcm9tICcuLi8uLi91dGlsL3JlY29yZCc7XHJcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gJ0BraXphaGFzaS9yZXN1bHQnO1xyXG5pbXBvcnQgeyBjaG9vc2VSZWNvcmQsIENvbXBvc2l0ZUtleSB9IGZyb20gJ0BraXphaGFzaS91dGlsJztcclxuaW1wb3J0ICogYXMgSW1hZ2VQaWVjZVZhbHVlIGZyb20gJy4vaW1hZ2VQaWVjZVZhbHVlL3YxJztcclxuaW1wb3J0IHtcclxuICAgIG1hcFJlY29yZE9wZXJhdGlvbkVsZW1lbnQsXHJcbiAgICByZWNvcmREb3duT3BlcmF0aW9uRWxlbWVudEZhY3RvcnksXHJcbiAgICByZWNvcmRVcE9wZXJhdGlvbkVsZW1lbnRGYWN0b3J5LFxyXG59IGZyb20gJy4uLy4uL3V0aWwvcmVjb3JkT3BlcmF0aW9uRWxlbWVudCc7XHJcbmltcG9ydCAqIGFzIFJlY29yZE9wZXJhdGlvbiBmcm9tICcuLi8uLi91dGlsL3JlY29yZE9wZXJhdGlvbic7XHJcbmltcG9ydCB7IEFwcGx5RXJyb3IsIENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvciwgUG9zaXRpdmVJbnQgfSBmcm9tICdAa2l6YWhhc2kvb3Qtc3RyaW5nJztcclxuaW1wb3J0IHsgTWF5YmUsIG1heWJlIH0gZnJvbSAnLi4vLi4vdXRpbC9tYXliZSc7XHJcblxyXG5leHBvcnQgY29uc3QgUGxheWVyID0gJ1BsYXllcic7XHJcbmV4cG9ydCBjb25zdCBTcGVjdGF0b3IgPSAnU3BlY3RhdG9yJztcclxuZXhwb3J0IGNvbnN0IE1hc3RlciA9ICdNYXN0ZXInO1xyXG5cclxuY29uc3QgcGFydGljaXBhbnRSb2xlID0gdC51bmlvbihbdC5saXRlcmFsKFBsYXllciksIHQubGl0ZXJhbChTcGVjdGF0b3IpLCB0LmxpdGVyYWwoTWFzdGVyKV0pO1xyXG5leHBvcnQgdHlwZSBQYXJ0aWNpcGFudFJvbGUgPSB0LlR5cGVPZjx0eXBlb2YgcGFydGljaXBhbnRSb2xlPjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGF0ZSA9IHQudHlwZSh7XHJcbiAgICAkdmVyc2lvbjogdC5saXRlcmFsKDEpLFxyXG5cclxuICAgIG5hbWU6IHQuc3RyaW5nLFxyXG4gICAgcm9sZTogbWF5YmUocGFydGljaXBhbnRSb2xlKSxcclxuXHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzOiByZWNvcmQodC5zdHJpbmcsIEltYWdlUGllY2VWYWx1ZS5zdGF0ZSksXHJcbn0pO1xyXG5cclxuZXhwb3J0IHR5cGUgU3RhdGUgPSB0LlR5cGVPZjx0eXBlb2Ygc3RhdGU+O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRvd25PcGVyYXRpb24gPSBjcmVhdGVPcGVyYXRpb24oMSwge1xyXG4gICAgbmFtZTogdC50eXBlKHsgb2xkVmFsdWU6IHQuc3RyaW5nIH0pLFxyXG4gICAgcm9sZTogdC50eXBlKHsgb2xkVmFsdWU6IG1heWJlKHBhcnRpY2lwYW50Um9sZSkgfSksXHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzOiByZWNvcmQoXHJcbiAgICAgICAgdC5zdHJpbmcsXHJcbiAgICAgICAgcmVjb3JkRG93bk9wZXJhdGlvbkVsZW1lbnRGYWN0b3J5KEltYWdlUGllY2VWYWx1ZS5zdGF0ZSwgSW1hZ2VQaWVjZVZhbHVlLmRvd25PcGVyYXRpb24pXHJcbiAgICApLFxyXG59KTtcclxuXHJcbmV4cG9ydCB0eXBlIERvd25PcGVyYXRpb24gPSB0LlR5cGVPZjx0eXBlb2YgZG93bk9wZXJhdGlvbj47XHJcblxyXG5leHBvcnQgY29uc3QgdXBPcGVyYXRpb24gPSBjcmVhdGVPcGVyYXRpb24oMSwge1xyXG4gICAgbmFtZTogdC50eXBlKHsgbmV3VmFsdWU6IHQuc3RyaW5nIH0pLFxyXG4gICAgcm9sZTogdC50eXBlKHsgbmV3VmFsdWU6IG1heWJlKHBhcnRpY2lwYW50Um9sZSkgfSksXHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzOiByZWNvcmQoXHJcbiAgICAgICAgdC5zdHJpbmcsXHJcbiAgICAgICAgcmVjb3JkVXBPcGVyYXRpb25FbGVtZW50RmFjdG9yeShJbWFnZVBpZWNlVmFsdWUuc3RhdGUsIEltYWdlUGllY2VWYWx1ZS51cE9wZXJhdGlvbilcclxuICAgICksXHJcbn0pO1xyXG5cclxuZXhwb3J0IHR5cGUgVXBPcGVyYXRpb24gPSB0LlR5cGVPZjx0eXBlb2YgdXBPcGVyYXRpb24+O1xyXG5cclxuZXhwb3J0IHR5cGUgVHdvV2F5T3BlcmF0aW9uID0ge1xyXG4gICAgJHZlcnNpb246IDE7XHJcblxyXG4gICAgbmFtZT86IFJlcGxhY2VPcGVyYXRpb24uUmVwbGFjZVZhbHVlVHdvV2F5T3BlcmF0aW9uPHN0cmluZz47XHJcbiAgICByb2xlPzogUmVwbGFjZU9wZXJhdGlvbi5SZXBsYWNlVmFsdWVUd29XYXlPcGVyYXRpb248TWF5YmU8UGFydGljaXBhbnRSb2xlPj47XHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzPzogUmVjb3JkT3BlcmF0aW9uLlJlY29yZFR3b1dheU9wZXJhdGlvbjxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlR3b1dheU9wZXJhdGlvblxyXG4gICAgPjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB0b0NsaWVudFN0YXRlID1cclxuICAgIChyZXF1ZXN0ZWRCeTogUmVxdWVzdGVkQnksIHBhcnRpY2lwYW50S2V5OiBzdHJpbmcsIGFjdGl2ZUJvYXJkS2V5OiBDb21wb3NpdGVLZXkgfCBudWxsKSA9PlxyXG4gICAgKHNvdXJjZTogU3RhdGUpOiBTdGF0ZSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gUmVxdWVzdGVkQnkuaXNBdXRob3JpemVkKHsgcmVxdWVzdGVkQnksIHVzZXJVaWQ6IHBhcnRpY2lwYW50S2V5IH0pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnNvdXJjZSxcclxuICAgICAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogUmVjb3JkT3BlcmF0aW9uLnRvQ2xpZW50U3RhdGU8XHJcbiAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGVcclxuICAgICAgICAgICAgPih7XHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJTdGF0ZTogc291cmNlLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgICAgICAgICBpc1ByaXZhdGU6IHN0YXRlID0+IHN0YXRlLmlzUHJpdmF0ZSAmJiAhaXNBdXRob3JpemVkLFxyXG4gICAgICAgICAgICAgICAgdG9DbGllbnRTdGF0ZTogKHsgc3RhdGUgfSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUudG9DbGllbnRTdGF0ZShyZXF1ZXN0ZWRCeSwgYWN0aXZlQm9hcmRLZXkpKHN0YXRlKSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG5leHBvcnQgY29uc3QgdG9Eb3duT3BlcmF0aW9uID0gKHNvdXJjZTogVHdvV2F5T3BlcmF0aW9uKTogRG93bk9wZXJhdGlvbiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnNvdXJjZSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOlxyXG4gICAgICAgICAgICBzb3VyY2UuaW1hZ2VQaWVjZVZhbHVlcyA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgOiBjaG9vc2VSZWNvcmQoc291cmNlLmltYWdlUGllY2VWYWx1ZXMsIG9wZXJhdGlvbiA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWFwUmVjb3JkT3BlcmF0aW9uRWxlbWVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBvcGVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwUmVwbGFjZTogeCA9PiB4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcE9wZXJhdGlvbjogSW1hZ2VQaWVjZVZhbHVlLnRvRG93bk9wZXJhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvVXBPcGVyYXRpb24gPSAoc291cmNlOiBUd29XYXlPcGVyYXRpb24pOiBVcE9wZXJhdGlvbiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnNvdXJjZSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOlxyXG4gICAgICAgICAgICBzb3VyY2UuaW1hZ2VQaWVjZVZhbHVlcyA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgOiBjaG9vc2VSZWNvcmQoc291cmNlLmltYWdlUGllY2VWYWx1ZXMsIG9wZXJhdGlvbiA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWFwUmVjb3JkT3BlcmF0aW9uRWxlbWVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBvcGVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwUmVwbGFjZTogeCA9PiB4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcE9wZXJhdGlvbjogSW1hZ2VQaWVjZVZhbHVlLnRvVXBPcGVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhcHBseTogQXBwbHk8U3RhdGUsIFVwT3BlcmF0aW9uIHwgVHdvV2F5T3BlcmF0aW9uPiA9ICh7IHN0YXRlLCBvcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcclxuICAgIGlmIChvcGVyYXRpb24ubmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcmVzdWx0Lm5hbWUgPSBvcGVyYXRpb24ubmFtZS5uZXdWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChvcGVyYXRpb24ucm9sZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcmVzdWx0LnJvbGUgPSBvcGVyYXRpb24ucm9sZS5uZXdWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLmFwcGx5PFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVXBPcGVyYXRpb24gfCBJbWFnZVBpZWNlVmFsdWUuVHdvV2F5T3BlcmF0aW9uLFxyXG4gICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICA+KHtcclxuICAgICAgICBwcmV2U3RhdGU6IHN0YXRlLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBpbm5lckFwcGx5OiAoeyBwcmV2U3RhdGUsIG9wZXJhdGlvbjogdXBPcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VQaWVjZVZhbHVlLmFwcGx5KHtcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBwcmV2U3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IHVwT3BlcmF0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBpZiAoaW1hZ2VQaWVjZVZhbHVlcy5pc0Vycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlUGllY2VWYWx1ZXM7XHJcbiAgICB9XHJcbiAgICByZXN1bHQuaW1hZ2VQaWVjZVZhbHVlcyA9IGltYWdlUGllY2VWYWx1ZXMudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIFJlc3VsdC5vayhyZXN1bHQpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFwcGx5QmFjazogQXBwbHk8U3RhdGUsIERvd25PcGVyYXRpb24+ID0gKHsgc3RhdGUsIG9wZXJhdGlvbiB9KSA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFN0YXRlID0geyAuLi5zdGF0ZSB9O1xyXG4gICAgaWYgKG9wZXJhdGlvbi5uYW1lICE9IG51bGwpIHtcclxuICAgICAgICByZXN1bHQubmFtZSA9IG9wZXJhdGlvbi5uYW1lLm9sZFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wZXJhdGlvbi5yb2xlICE9IG51bGwpIHtcclxuICAgICAgICByZXN1bHQucm9sZSA9IG9wZXJhdGlvbi5yb2xlLm9sZFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uYXBwbHlCYWNrPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuRG93bk9wZXJhdGlvbixcclxuICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgPih7XHJcbiAgICAgICAgbmV4dFN0YXRlOiBzdGF0ZS5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIG9wZXJhdGlvbjogb3BlcmF0aW9uLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgaW5uZXJBcHBseUJhY2s6ICh7IHN0YXRlLCBvcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VQaWVjZVZhbHVlLmFwcGx5QmFjayh7XHJcbiAgICAgICAgICAgICAgICBzdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0LmltYWdlUGllY2VWYWx1ZXMgPSBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiBSZXN1bHQub2socmVzdWx0KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb21wb3NlRG93bk9wZXJhdGlvbjogQ29tcG9zZTxEb3duT3BlcmF0aW9uPiA9ICh7IGZpcnN0LCBzZWNvbmQgfSkgPT4ge1xyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5jb21wb3NlRG93bk9wZXJhdGlvbjxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLkRvd25PcGVyYXRpb24sXHJcbiAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgID4oe1xyXG4gICAgICAgIGZpcnN0OiBmaXJzdC5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIHNlY29uZDogc2Vjb25kLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgaW5uZXJBcHBseUJhY2s6IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUuYXBwbHlCYWNrKHBhcmFtcyksXHJcbiAgICAgICAgaW5uZXJDb21wb3NlOiBwYXJhbXMgPT4gSW1hZ2VQaWVjZVZhbHVlLmNvbXBvc2VEb3duT3BlcmF0aW9uKHBhcmFtcyksXHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlUHJvcHM6IERvd25PcGVyYXRpb24gPSB7XHJcbiAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgbmFtZTogUmVwbGFjZU9wZXJhdGlvbi5jb21wb3NlRG93bk9wZXJhdGlvbihcclxuICAgICAgICAgICAgZmlyc3QubmFtZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHNlY29uZC5uYW1lID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICksXHJcbiAgICAgICAgcm9sZTogUmVwbGFjZU9wZXJhdGlvbi5jb21wb3NlRG93bk9wZXJhdGlvbihcclxuICAgICAgICAgICAgZmlyc3Qucm9sZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHNlY29uZC5yb2xlID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICksXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gUmVzdWx0Lm9rKHZhbHVlUHJvcHMpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlc3RvcmU6IFJlc3RvcmU8U3RhdGUsIERvd25PcGVyYXRpb24sIFR3b1dheU9wZXJhdGlvbj4gPSAoe1xyXG4gICAgbmV4dFN0YXRlLFxyXG4gICAgZG93bk9wZXJhdGlvbixcclxufSkgPT4ge1xyXG4gICAgaWYgKGRvd25PcGVyYXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBSZXN1bHQub2soeyBwcmV2U3RhdGU6IG5leHRTdGF0ZSwgdHdvV2F5T3BlcmF0aW9uOiB1bmRlZmluZWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5yZXN0b3JlPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuRG93bk9wZXJhdGlvbixcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVHdvV2F5T3BlcmF0aW9uLFxyXG4gICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICA+KHtcclxuICAgICAgICBuZXh0U3RhdGU6IG5leHRTdGF0ZS5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIGRvd25PcGVyYXRpb246IGRvd25PcGVyYXRpb24uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBpbm5lckRpZmY6IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUuZGlmZihwYXJhbXMpLFxyXG4gICAgICAgIGlubmVyUmVzdG9yZTogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5yZXN0b3JlKHBhcmFtcyksXHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmV2U3RhdGU6IFN0YXRlID0ge1xyXG4gICAgICAgIC4uLm5leHRTdGF0ZSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLnByZXZTdGF0ZSxcclxuICAgIH07XHJcbiAgICBjb25zdCB0d29XYXlPcGVyYXRpb246IFR3b1dheU9wZXJhdGlvbiA9IHtcclxuICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLnR3b1dheU9wZXJhdGlvbixcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGRvd25PcGVyYXRpb24ubmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcHJldlN0YXRlLm5hbWUgPSBkb3duT3BlcmF0aW9uLm5hbWUub2xkVmFsdWU7XHJcbiAgICAgICAgdHdvV2F5T3BlcmF0aW9uLm5hbWUgPSB7XHJcbiAgICAgICAgICAgIC4uLmRvd25PcGVyYXRpb24ubmFtZSxcclxuICAgICAgICAgICAgbmV3VmFsdWU6IG5leHRTdGF0ZS5uYW1lLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoZG93bk9wZXJhdGlvbi5yb2xlICE9IG51bGwpIHtcclxuICAgICAgICBwcmV2U3RhdGUucm9sZSA9IGRvd25PcGVyYXRpb24ucm9sZS5vbGRWYWx1ZSA/PyB1bmRlZmluZWQ7XHJcbiAgICAgICAgdHdvV2F5T3BlcmF0aW9uLnJvbGUgPSB7XHJcbiAgICAgICAgICAgIG9sZFZhbHVlOiBkb3duT3BlcmF0aW9uLnJvbGUub2xkVmFsdWUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBuZXdWYWx1ZTogbmV4dFN0YXRlLnJvbGUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUmVzdWx0Lm9rKHsgcHJldlN0YXRlLCB0d29XYXlPcGVyYXRpb24gfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZGlmZjogRGlmZjxTdGF0ZSwgVHdvV2F5T3BlcmF0aW9uPiA9ICh7IHByZXZTdGF0ZSwgbmV4dFN0YXRlIH0pID0+IHtcclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uZGlmZjxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlR3b1dheU9wZXJhdGlvblxyXG4gICAgPih7XHJcbiAgICAgICAgcHJldlN0YXRlOiBwcmV2U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBuZXh0U3RhdGU6IG5leHRTdGF0ZS5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIGlubmVyRGlmZjogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5kaWZmKHBhcmFtcyksXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHJlc3VsdDogVHdvV2F5T3BlcmF0aW9uID0ge1xyXG4gICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKHByZXZTdGF0ZS5uYW1lICE9PSBuZXh0U3RhdGUubmFtZSkge1xyXG4gICAgICAgIHJlc3VsdC5uYW1lID0geyBvbGRWYWx1ZTogcHJldlN0YXRlLm5hbWUsIG5ld1ZhbHVlOiBuZXh0U3RhdGUubmFtZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZTdGF0ZS5yb2xlICE9PSBuZXh0U3RhdGUucm9sZSkge1xyXG4gICAgICAgIHJlc3VsdC5yb2xlID0geyBvbGRWYWx1ZTogcHJldlN0YXRlLnJvbGUsIG5ld1ZhbHVlOiBuZXh0U3RhdGUucm9sZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzSWRSZWNvcmQocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlcnZlclRyYW5zZm9ybSA9XHJcbiAgICAoe1xyXG4gICAgICAgIHJlcXVlc3RlZEJ5LFxyXG4gICAgICAgIHBhcnRpY2lwYW50S2V5LFxyXG4gICAgICAgIGFjdGl2ZUJvYXJkU2Vjb25kS2V5LFxyXG4gICAgfToge1xyXG4gICAgICAgIHJlcXVlc3RlZEJ5OiBSZXF1ZXN0ZWRCeTtcclxuICAgICAgICBwYXJ0aWNpcGFudEtleTogc3RyaW5nO1xyXG4gICAgICAgIGFjdGl2ZUJvYXJkU2Vjb25kS2V5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgfSk6IFNlcnZlclRyYW5zZm9ybTxTdGF0ZSwgVHdvV2F5T3BlcmF0aW9uLCBVcE9wZXJhdGlvbj4gPT5cclxuICAgICh7IHByZXZTdGF0ZSwgY3VycmVudFN0YXRlLCBjbGllbnRPcGVyYXRpb24sIHNlcnZlck9wZXJhdGlvbiB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gUmVxdWVzdGVkQnkuaXNBdXRob3JpemVkKHsgcmVxdWVzdGVkQnksIHVzZXJVaWQ6IHBhcnRpY2lwYW50S2V5IH0pO1xyXG5cclxuICAgICAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLnNlcnZlclRyYW5zZm9ybTxcclxuICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5Ud29XYXlPcGVyYXRpb24sXHJcbiAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5VcE9wZXJhdGlvbixcclxuICAgICAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgICAgICA+KHtcclxuICAgICAgICAgICAgZmlyc3Q6IHNlcnZlck9wZXJhdGlvbj8uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICAgICAgc2Vjb25kOiBjbGllbnRPcGVyYXRpb24uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICAgICAgcHJldlN0YXRlOiBwcmV2U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICAgICAgbmV4dFN0YXRlOiBjdXJyZW50U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICAgICAgaW5uZXJUcmFuc2Zvcm06ICh7IGZpcnN0LCBzZWNvbmQsIHByZXZTdGF0ZSwgbmV4dFN0YXRlIH0pID0+XHJcbiAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuc2VydmVyVHJhbnNmb3JtKGlzQXV0aG9yaXplZCkoe1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGU6IG5leHRTdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJPcGVyYXRpb246IGZpcnN0LFxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudE9wZXJhdGlvbjogc2Vjb25kLFxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRvU2VydmVyU3RhdGU6IHN0YXRlID0+IHN0YXRlLFxyXG4gICAgICAgICAgICBjYW5jZWxsYXRpb25Qb2xpY3k6IHtcclxuICAgICAgICAgICAgICAgIGNhbmNlbENyZWF0ZTogKCkgPT4gIWlzQXV0aG9yaXplZCxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFVwZGF0ZTogc3RhdGUgPT4gIWlzQXV0aG9yaXplZCAmJiBzdGF0ZS5uZXh0U3RhdGUuaXNQcml2YXRlLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsUmVtb3ZlOiBzdGF0ZSA9PiAhaXNBdXRob3JpemVkICYmIHN0YXRlLm5leHRTdGF0ZS5pc1ByaXZhdGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHR3b1dheU9wZXJhdGlvbjogVHdvV2F5T3BlcmF0aW9uID0ge1xyXG4gICAgICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoaXNBdXRob3JpemVkKSB7XHJcbiAgICAgICAgICAgIHR3b1dheU9wZXJhdGlvbi5uYW1lID0gUmVwbGFjZU9wZXJhdGlvbi5zZXJ2ZXJUcmFuc2Zvcm0oe1xyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IHNlcnZlck9wZXJhdGlvbj8ubmFtZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IGNsaWVudE9wZXJhdGlvbi5uYW1lID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogcHJldlN0YXRlLm5hbWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3RlZEJ5LnR5cGUgPT09IGFkbWluKSB7XHJcbiAgICAgICAgICAgIHR3b1dheU9wZXJhdGlvbi5yb2xlID0gUmVwbGFjZU9wZXJhdGlvbi5zZXJ2ZXJUcmFuc2Zvcm0oe1xyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IHNlcnZlck9wZXJhdGlvbj8ucm9sZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IGNsaWVudE9wZXJhdGlvbi5yb2xlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogcHJldlN0YXRlLnJvbGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlzSWRSZWNvcmQodHdvV2F5T3BlcmF0aW9uKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0Lm9rKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gUmVzdWx0Lm9rKHR3b1dheU9wZXJhdGlvbik7XHJcbiAgICB9O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNsaWVudFRyYW5zZm9ybTogQ2xpZW50VHJhbnNmb3JtPFVwT3BlcmF0aW9uPiA9ICh7IGZpcnN0LCBzZWNvbmQgfSkgPT4ge1xyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5jbGllbnRUcmFuc2Zvcm08XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5VcE9wZXJhdGlvbixcclxuICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgPih7XHJcbiAgICAgICAgZmlyc3Q6IGZpcnN0LmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgc2Vjb25kOiBzZWNvbmQuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBpbm5lclRyYW5zZm9ybTogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5jbGllbnRUcmFuc2Zvcm0ocGFyYW1zKSxcclxuICAgICAgICBpbm5lckRpZmY6IHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBJbWFnZVBpZWNlVmFsdWUuZGlmZihwYXJhbXMpO1xyXG4gICAgICAgICAgICBpZiAoZGlmZiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlmZjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VQaWVjZVZhbHVlLnRvVXBPcGVyYXRpb24oZGlmZik7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5hbWUgPSBSZXBsYWNlT3BlcmF0aW9uLmNsaWVudFRyYW5zZm9ybSh7XHJcbiAgICAgICAgZmlyc3Q6IGZpcnN0Lm5hbWUsXHJcbiAgICAgICAgc2Vjb25kOiBzZWNvbmQubmFtZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJvbGUgPSBSZXBsYWNlT3BlcmF0aW9uLmNsaWVudFRyYW5zZm9ybSh7XHJcbiAgICAgICAgZmlyc3Q6IGZpcnN0LnJvbGUsXHJcbiAgICAgICAgc2Vjb25kOiBzZWNvbmQucm9sZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0UHJpbWU6IFVwT3BlcmF0aW9uID0ge1xyXG4gICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IGltYWdlUGllY2VWYWx1ZXMudmFsdWUuZmlyc3RQcmltZSxcclxuICAgICAgICBuYW1lOiBuYW1lLmZpcnN0UHJpbWUsXHJcbiAgICAgICAgcm9sZTogcm9sZS5maXJzdFByaW1lLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzZWNvbmRQcmltZTogVXBPcGVyYXRpb24gPSB7XHJcbiAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZS5zZWNvbmRQcmltZSxcclxuICAgICAgICBuYW1lOiBuYW1lLnNlY29uZFByaW1lLFxyXG4gICAgICAgIHJvbGU6IHJvbGUuc2Vjb25kUHJpbWUsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBSZXN1bHQub2soe1xyXG4gICAgICAgIGZpcnN0UHJpbWU6IGlzSWRSZWNvcmQoZmlyc3RQcmltZSkgPyB1bmRlZmluZWQgOiBmaXJzdFByaW1lLFxyXG4gICAgICAgIHNlY29uZFByaW1lOiBpc0lkUmVjb3JkKHNlY29uZFByaW1lKSA/IHVuZGVmaW5lZCA6IHNlY29uZFByaW1lLFxyXG4gICAgfSk7XHJcbn07XHJcbiJdfQ==

@@ -20,4 +20,3 @@ import * as t from 'io-ts';

role: maybe(participantRole),
// TODO: 互換性のため、maybeを付けている。互換性を壊しても良くなったときはmaybeを外す。
imagePieceValues: maybe(record(t.string, ImagePieceValue.state)),
imagePieceValues: record(t.string, ImagePieceValue.state),
});

@@ -35,3 +34,2 @@ export const downOperation = createOperation(1, {

export const toClientState = (requestedBy, participantKey, activeBoardKey) => (source) => {
var _a;
const isAuthorized = RequestedBy.isAuthorized({ requestedBy, userUid: participantKey });

@@ -41,3 +39,3 @@ return {

imagePieceValues: RecordOperation.toClientState({
serverState: (_a = source.imagePieceValues) !== null && _a !== void 0 ? _a : {},
serverState: source.imagePieceValues,
isPrivate: state => state.isPrivate && !isAuthorized,

@@ -73,3 +71,2 @@ toClientState: ({ state }) => ImagePieceValue.toClientState(requestedBy, activeBoardKey)(state),

export const apply = ({ state, operation }) => {
var _a, _b;
const result = { ...state };

@@ -83,4 +80,4 @@ if (operation.name != null) {

const imagePieceValues = RecordOperation.apply({
prevState: (_a = state.imagePieceValues) !== null && _a !== void 0 ? _a : {},
operation: (_b = operation.imagePieceValues) !== null && _b !== void 0 ? _b : {},
prevState: state.imagePieceValues,
operation: operation.imagePieceValues,
innerApply: ({ prevState, operation: upOperation }) => {

@@ -100,3 +97,2 @@ return ImagePieceValue.apply({

export const applyBack = ({ state, operation }) => {
var _a, _b;
const result = { ...state };

@@ -110,4 +106,4 @@ if (operation.name != null) {

const imagePieceValues = RecordOperation.applyBack({
nextState: (_a = state.imagePieceValues) !== null && _a !== void 0 ? _a : {},
operation: (_b = operation.imagePieceValues) !== null && _b !== void 0 ? _b : {},
nextState: state.imagePieceValues,
operation: operation.imagePieceValues,
innerApplyBack: ({ state, operation }) => {

@@ -146,3 +142,3 @@ return ImagePieceValue.applyBack({

export const restore = ({ nextState, downOperation, }) => {
var _a, _b, _c;
var _a, _b;
if (downOperation === undefined) {

@@ -152,3 +148,3 @@ return Result.ok({ prevState: nextState, twoWayOperation: undefined });

const imagePieceValues = RecordOperation.restore({
nextState: (_a = nextState.imagePieceValues) !== null && _a !== void 0 ? _a : {},
nextState: nextState.imagePieceValues,
downOperation: downOperation.imagePieceValues,

@@ -177,5 +173,5 @@ innerDiff: params => ImagePieceValue.diff(params),

if (downOperation.role != null) {
prevState.role = (_b = downOperation.role.oldValue) !== null && _b !== void 0 ? _b : undefined;
prevState.role = (_a = downOperation.role.oldValue) !== null && _a !== void 0 ? _a : undefined;
twoWayOperation.role = {
oldValue: (_c = downOperation.role.oldValue) !== null && _c !== void 0 ? _c : undefined,
oldValue: (_b = downOperation.role.oldValue) !== null && _b !== void 0 ? _b : undefined,
newValue: nextState.role,

@@ -187,6 +183,5 @@ };

export const diff = ({ prevState, nextState }) => {
var _a, _b;
const imagePieceValues = RecordOperation.diff({
prevState: (_a = prevState.imagePieceValues) !== null && _a !== void 0 ? _a : {},
nextState: (_b = nextState.imagePieceValues) !== null && _b !== void 0 ? _b : {},
prevState: prevState.imagePieceValues,
nextState: nextState.imagePieceValues,
innerDiff: params => ImagePieceValue.diff(params),

@@ -210,3 +205,3 @@ });

export const serverTransform = ({ requestedBy, participantKey, activeBoardSecondKey, }) => ({ prevState, currentState, clientOperation, serverOperation }) => {
var _a, _b, _c, _d, _e, _f;
var _a, _b, _c, _d;
const isAuthorized = RequestedBy.isAuthorized({ requestedBy, userUid: participantKey });

@@ -216,4 +211,4 @@ const imagePieceValues = RecordOperation.serverTransform({

second: clientOperation.imagePieceValues,
prevState: (_a = prevState.imagePieceValues) !== null && _a !== void 0 ? _a : {},
nextState: (_b = currentState.imagePieceValues) !== null && _b !== void 0 ? _b : {},
prevState: prevState.imagePieceValues,
nextState: currentState.imagePieceValues,
innerTransform: ({ first, second, prevState, nextState }) => ImagePieceValue.serverTransform(isAuthorized)({

@@ -241,4 +236,4 @@ prevState,

twoWayOperation.name = ReplaceOperation.serverTransform({
first: (_c = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.name) !== null && _c !== void 0 ? _c : undefined,
second: (_d = clientOperation.name) !== null && _d !== void 0 ? _d : undefined,
first: (_a = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.name) !== null && _a !== void 0 ? _a : undefined,
second: (_b = clientOperation.name) !== null && _b !== void 0 ? _b : undefined,
prevState: prevState.name,

@@ -249,4 +244,4 @@ });

twoWayOperation.role = ReplaceOperation.serverTransform({
first: (_e = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.role) !== null && _e !== void 0 ? _e : undefined,
second: (_f = clientOperation.role) !== null && _f !== void 0 ? _f : undefined,
first: (_c = serverOperation === null || serverOperation === void 0 ? void 0 : serverOperation.role) !== null && _c !== void 0 ? _c : undefined,
second: (_d = clientOperation.role) !== null && _d !== void 0 ? _d : undefined,
prevState: prevState.role,

@@ -301,2 +296,2 @@ });

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvb3Qvcm9vbS9wYXJ0aWNpcGFudC92MS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLEVBS0gsV0FBVyxFQUVYLEtBQUssR0FFUixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEtBQUssZUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsaUNBQWlDLEVBQ2pDLCtCQUErQixHQUNsQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFTLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRS9CLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxN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TUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJO0tBQ3RCLENBQUMsQ0FBQztJQUVILE1BQU0sVUFBVSxHQUFnQjtRQUM1QixRQUFRLEVBQUUsQ0FBQztRQUNYLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxVQUFVO1FBQ25ELElBQUksRUFBRSxJQUFJLENBQUMsVUFBVTtRQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7S0FDeEIsQ0FBQztJQUVGLE1BQU0sV0FBVyxHQUFnQjtRQUM3QixRQUFRLEVBQUUsQ0FBQztRQUNYLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXO1FBQ3BELElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztRQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7S0FDekIsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNiLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUMzRCxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVc7S0FDakUsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XHJcbmltcG9ydCB7XHJcbiAgICBBcHBseSxcclxuICAgIENsaWVudFRyYW5zZm9ybSxcclxuICAgIENvbXBvc2UsXHJcbiAgICBEaWZmLFxyXG4gICAgUmVxdWVzdGVkQnksXHJcbiAgICBSZXN0b3JlLFxyXG4gICAgYWRtaW4sXHJcbiAgICBTZXJ2ZXJUcmFuc2Zvcm0sXHJcbn0gZnJvbSAnLi4vLi4vdXRpbC90eXBlJztcclxuaW1wb3J0ICogYXMgUmVwbGFjZU9wZXJhdGlvbiBmcm9tICcuLi8uLi91dGlsL3JlcGxhY2VPcGVyYXRpb24nO1xyXG5pbXBvcnQgeyBjcmVhdGVPcGVyYXRpb24gfSBmcm9tICcuLi8uLi91dGlsL2NyZWF0ZU9wZXJhdGlvbic7XHJcbmltcG9ydCB7IGlzSWRSZWNvcmQsIHJlY29yZCB9IGZyb20gJy4uLy4uL3V0aWwvcmVjb3JkJztcclxuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSAnQGtpemFoYXNpL3Jlc3VsdCc7XHJcbmltcG9ydCB7IGNob29zZVJlY29yZCwgQ29tcG9zaXRlS2V5IH0gZnJvbSAnQGtpemFoYXNpL3V0aWwnO1xyXG5pbXBvcnQgKiBhcyBJbWFnZVBpZWNlVmFsdWUgZnJvbSAnLi9pbWFnZVBpZWNlVmFsdWUvdjEnO1xyXG5pbXBvcnQge1xyXG4gICAgbWFwUmVjb3JkT3BlcmF0aW9uRWxlbWVudCxcclxuICAgIHJlY29yZERvd25PcGVyYXRpb25FbGVtZW50RmFjdG9yeSxcclxuICAgIHJlY29yZFVwT3BlcmF0aW9uRWxlbWVudEZhY3RvcnksXHJcbn0gZnJvbSAnLi4vLi4vdXRpbC9yZWNvcmRPcGVyYXRpb25FbGVtZW50JztcclxuaW1wb3J0ICogYXMgUmVjb3JkT3BlcmF0aW9uIGZyb20gJy4uLy4uL3V0aWwvcmVjb3JkT3BlcmF0aW9uJztcclxuaW1wb3J0IHsgQXBwbHlFcnJvciwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yLCBQb3NpdGl2ZUludCB9IGZyb20gJ0BraXphaGFzaS9vdC1zdHJpbmcnO1xyXG5pbXBvcnQgeyBNYXliZSwgbWF5YmUgfSBmcm9tICcuLi8uLi91dGlsL21heWJlJztcclxuXHJcbmV4cG9ydCBjb25zdCBQbGF5ZXIgPSAnUGxheWVyJztcclxuZXhwb3J0IGNvbnN0IFNwZWN0YXRvciA9ICdTcGVjdGF0b3InO1xyXG5leHBvcnQgY29uc3QgTWFzdGVyID0gJ01hc3Rlcic7XHJcblxyXG5jb25zdCBwYXJ0aWNpcGFudFJvbGUgPSB0LnVuaW9uKFt0LmxpdGVyYWwoUGxheWVyKSwgdC5saXRlcmFsKFNwZWN0YXRvciksIHQubGl0ZXJhbChNYXN0ZXIpXSk7XHJcbmV4cG9ydCB0eXBlIFBhcnRpY2lwYW50Um9sZSA9IHQuVHlwZU9mPHR5cGVvZiBwYXJ0aWNpcGFudFJvbGU+O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0YXRlID0gdC50eXBlKHtcclxuICAgICR2ZXJzaW9uOiB0LmxpdGVyYWwoMSksXHJcblxyXG4gICAgbmFtZTogdC5zdHJpbmcsXHJcbiAgICByb2xlOiBtYXliZShwYXJ0aWNpcGFudFJvbGUpLFxyXG5cclxuICAgIC8vIFRPRE86IOS6kuaPm+aAp+OBruOBn+OCgeOAgW1heWJl44KS5LuY44GR44Gm44GE44KL44CC5LqS5o+b5oCn44KS5aOK44GX44Gm44KC6Imv44GP44Gq44Gj44Gf44Go44GN44GvbWF5YmXjgpLlpJbjgZnjgIJcclxuICAgIGltYWdlUGllY2VWYWx1ZXM6IG1heWJlKHJlY29yZCh0LnN0cmluZywgSW1hZ2VQaWVjZVZhbHVlLnN0YXRlKSksXHJcbn0pO1xyXG5cclxuZXhwb3J0IHR5cGUgU3RhdGUgPSB0LlR5cGVPZjx0eXBlb2Ygc3RhdGU+O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRvd25PcGVyYXRpb24gPSBjcmVhdGVPcGVyYXRpb24oMSwge1xyXG4gICAgbmFtZTogdC50eXBlKHsgb2xkVmFsdWU6IHQuc3RyaW5nIH0pLFxyXG4gICAgcm9sZTogdC50eXBlKHsgb2xkVmFsdWU6IG1heWJlKHBhcnRpY2lwYW50Um9sZSkgfSksXHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzOiByZWNvcmQoXHJcbiAgICAgICAgdC5zdHJpbmcsXHJcbiAgICAgICAgcmVjb3JkRG93bk9wZXJhdGlvbkVsZW1lbnRGYWN0b3J5KEltYWdlUGllY2VWYWx1ZS5zdGF0ZSwgSW1hZ2VQaWVjZVZhbHVlLmRvd25PcGVyYXRpb24pXHJcbiAgICApLFxyXG59KTtcclxuXHJcbmV4cG9ydCB0eXBlIERvd25PcGVyYXRpb24gPSB0LlR5cGVPZjx0eXBlb2YgZG93bk9wZXJhdGlvbj47XHJcblxyXG5leHBvcnQgY29uc3QgdXBPcGVyYXRpb24gPSBjcmVhdGVPcGVyYXRpb24oMSwge1xyXG4gICAgbmFtZTogdC50eXBlKHsgbmV3VmFsdWU6IHQuc3RyaW5nIH0pLFxyXG4gICAgcm9sZTogdC50eXBlKHsgbmV3VmFsdWU6IG1heWJlKHBhcnRpY2lwYW50Um9sZSkgfSksXHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzOiByZWNvcmQoXHJcbiAgICAgICAgdC5zdHJpbmcsXHJcbiAgICAgICAgcmVjb3JkVXBPcGVyYXRpb25FbGVtZW50RmFjdG9yeShJbWFnZVBpZWNlVmFsdWUuc3RhdGUsIEltYWdlUGllY2VWYWx1ZS51cE9wZXJhdGlvbilcclxuICAgICksXHJcbn0pO1xyXG5cclxuZXhwb3J0IHR5cGUgVXBPcGVyYXRpb24gPSB0LlR5cGVPZjx0eXBlb2YgdXBPcGVyYXRpb24+O1xyXG5cclxuZXhwb3J0IHR5cGUgVHdvV2F5T3BlcmF0aW9uID0ge1xyXG4gICAgJHZlcnNpb246IDE7XHJcblxyXG4gICAgbmFtZT86IFJlcGxhY2VPcGVyYXRpb24uUmVwbGFjZVZhbHVlVHdvV2F5T3BlcmF0aW9uPHN0cmluZz47XHJcbiAgICByb2xlPzogUmVwbGFjZU9wZXJhdGlvbi5SZXBsYWNlVmFsdWVUd29XYXlPcGVyYXRpb248TWF5YmU8UGFydGljaXBhbnRSb2xlPj47XHJcbiAgICBpbWFnZVBpZWNlVmFsdWVzPzogUmVjb3JkT3BlcmF0aW9uLlJlY29yZFR3b1dheU9wZXJhdGlvbjxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlR3b1dheU9wZXJhdGlvblxyXG4gICAgPjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB0b0NsaWVudFN0YXRlID1cclxuICAgIChyZXF1ZXN0ZWRCeTogUmVxdWVzdGVkQnksIHBhcnRpY2lwYW50S2V5OiBzdHJpbmcsIGFjdGl2ZUJvYXJkS2V5OiBDb21wb3NpdGVLZXkgfCBudWxsKSA9PlxyXG4gICAgKHNvdXJjZTogU3RhdGUpOiBTdGF0ZSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gUmVxdWVzdGVkQnkuaXNBdXRob3JpemVkKHsgcmVxdWVzdGVkQnksIHVzZXJVaWQ6IHBhcnRpY2lwYW50S2V5IH0pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnNvdXJjZSxcclxuICAgICAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogUmVjb3JkT3BlcmF0aW9uLnRvQ2xpZW50U3RhdGU8XHJcbiAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGVcclxuICAgICAgICAgICAgPih7XHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJTdGF0ZTogc291cmNlLmltYWdlUGllY2VWYWx1ZXMgPz8ge30sXHJcbiAgICAgICAgICAgICAgICBpc1ByaXZhdGU6IHN0YXRlID0+IHN0YXRlLmlzUHJpdmF0ZSAmJiAhaXNBdXRob3JpemVkLFxyXG4gICAgICAgICAgICAgICAgdG9DbGllbnRTdGF0ZTogKHsgc3RhdGUgfSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUudG9DbGllbnRTdGF0ZShyZXF1ZXN0ZWRCeSwgYWN0aXZlQm9hcmRLZXkpKHN0YXRlKSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG5leHBvcnQgY29uc3QgdG9Eb3duT3BlcmF0aW9uID0gKHNvdXJjZTogVHdvV2F5T3BlcmF0aW9uKTogRG93bk9wZXJhdGlvbiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnNvdXJjZSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOlxyXG4gICAgICAgICAgICBzb3VyY2UuaW1hZ2VQaWVjZVZhbHVlcyA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgOiBjaG9vc2VSZWNvcmQoc291cmNlLmltYWdlUGllY2VWYWx1ZXMsIG9wZXJhdGlvbiA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWFwUmVjb3JkT3BlcmF0aW9uRWxlbWVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBvcGVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwUmVwbGFjZTogeCA9PiB4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcE9wZXJhdGlvbjogSW1hZ2VQaWVjZVZhbHVlLnRvRG93bk9wZXJhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvVXBPcGVyYXRpb24gPSAoc291cmNlOiBUd29XYXlPcGVyYXRpb24pOiBVcE9wZXJhdGlvbiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnNvdXJjZSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOlxyXG4gICAgICAgICAgICBzb3VyY2UuaW1hZ2VQaWVjZVZhbHVlcyA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgOiBjaG9vc2VSZWNvcmQoc291cmNlLmltYWdlUGllY2VWYWx1ZXMsIG9wZXJhdGlvbiA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWFwUmVjb3JkT3BlcmF0aW9uRWxlbWVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBvcGVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwUmVwbGFjZTogeCA9PiB4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcE9wZXJhdGlvbjogSW1hZ2VQaWVjZVZhbHVlLnRvVXBPcGVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhcHBseTogQXBwbHk8U3RhdGUsIFVwT3BlcmF0aW9uIHwgVHdvV2F5T3BlcmF0aW9uPiA9ICh7IHN0YXRlLCBvcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcclxuICAgIGlmIChvcGVyYXRpb24ubmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcmVzdWx0Lm5hbWUgPSBvcGVyYXRpb24ubmFtZS5uZXdWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChvcGVyYXRpb24ucm9sZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcmVzdWx0LnJvbGUgPSBvcGVyYXRpb24ucm9sZS5uZXdWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLmFwcGx5PFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVXBPcGVyYXRpb24gfCBJbWFnZVBpZWNlVmFsdWUuVHdvV2F5T3BlcmF0aW9uLFxyXG4gICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICA+KHtcclxuICAgICAgICBwcmV2U3RhdGU6IHN0YXRlLmltYWdlUGllY2VWYWx1ZXMgPz8ge30sXHJcbiAgICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24uaW1hZ2VQaWVjZVZhbHVlcyA/PyB7fSxcclxuICAgICAgICBpbm5lckFwcGx5OiAoeyBwcmV2U3RhdGUsIG9wZXJhdGlvbjogdXBPcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VQaWVjZVZhbHVlLmFwcGx5KHtcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBwcmV2U3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IHVwT3BlcmF0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBpZiAoaW1hZ2VQaWVjZVZhbHVlcy5pc0Vycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlUGllY2VWYWx1ZXM7XHJcbiAgICB9XHJcbiAgICByZXN1bHQuaW1hZ2VQaWVjZVZhbHVlcyA9IGltYWdlUGllY2VWYWx1ZXMudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIFJlc3VsdC5vayhyZXN1bHQpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFwcGx5QmFjazogQXBwbHk8U3RhdGUsIERvd25PcGVyYXRpb24+ID0gKHsgc3RhdGUsIG9wZXJhdGlvbiB9KSA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFN0YXRlID0geyAuLi5zdGF0ZSB9O1xyXG4gICAgaWYgKG9wZXJhdGlvbi5uYW1lICE9IG51bGwpIHtcclxuICAgICAgICByZXN1bHQubmFtZSA9IG9wZXJhdGlvbi5uYW1lLm9sZFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wZXJhdGlvbi5yb2xlICE9IG51bGwpIHtcclxuICAgICAgICByZXN1bHQucm9sZSA9IG9wZXJhdGlvbi5yb2xlLm9sZFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uYXBwbHlCYWNrPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuRG93bk9wZXJhdGlvbixcclxuICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgPih7XHJcbiAgICAgICAgbmV4dFN0YXRlOiBzdGF0ZS5pbWFnZVBpZWNlVmFsdWVzID8/IHt9LFxyXG4gICAgICAgIG9wZXJhdGlvbjogb3BlcmF0aW9uLmltYWdlUGllY2VWYWx1ZXMgPz8ge30sXHJcbiAgICAgICAgaW5uZXJBcHBseUJhY2s6ICh7IHN0YXRlLCBvcGVyYXRpb24gfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VQaWVjZVZhbHVlLmFwcGx5QmFjayh7XHJcbiAgICAgICAgICAgICAgICBzdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0LmltYWdlUGllY2VWYWx1ZXMgPSBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiBSZXN1bHQub2socmVzdWx0KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb21wb3NlRG93bk9wZXJhdGlvbjogQ29tcG9zZTxEb3duT3BlcmF0aW9uPiA9ICh7IGZpcnN0LCBzZWNvbmQgfSkgPT4ge1xyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5jb21wb3NlRG93bk9wZXJhdGlvbjxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLkRvd25PcGVyYXRpb24sXHJcbiAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgID4oe1xyXG4gICAgICAgIGZpcnN0OiBmaXJzdC5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIHNlY29uZDogc2Vjb25kLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgaW5uZXJBcHBseUJhY2s6IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUuYXBwbHlCYWNrKHBhcmFtcyksXHJcbiAgICAgICAgaW5uZXJDb21wb3NlOiBwYXJhbXMgPT4gSW1hZ2VQaWVjZVZhbHVlLmNvbXBvc2VEb3duT3BlcmF0aW9uKHBhcmFtcyksXHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlUHJvcHM6IERvd25PcGVyYXRpb24gPSB7XHJcbiAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgbmFtZTogUmVwbGFjZU9wZXJhdGlvbi5jb21wb3NlRG93bk9wZXJhdGlvbihcclxuICAgICAgICAgICAgZmlyc3QubmFtZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHNlY29uZC5uYW1lID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICksXHJcbiAgICAgICAgcm9sZTogUmVwbGFjZU9wZXJhdGlvbi5jb21wb3NlRG93bk9wZXJhdGlvbihcclxuICAgICAgICAgICAgZmlyc3Qucm9sZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHNlY29uZC5yb2xlID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICksXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gUmVzdWx0Lm9rKHZhbHVlUHJvcHMpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlc3RvcmU6IFJlc3RvcmU8U3RhdGUsIERvd25PcGVyYXRpb24sIFR3b1dheU9wZXJhdGlvbj4gPSAoe1xyXG4gICAgbmV4dFN0YXRlLFxyXG4gICAgZG93bk9wZXJhdGlvbixcclxufSkgPT4ge1xyXG4gICAgaWYgKGRvd25PcGVyYXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBSZXN1bHQub2soeyBwcmV2U3RhdGU6IG5leHRTdGF0ZSwgdHdvV2F5T3BlcmF0aW9uOiB1bmRlZmluZWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5yZXN0b3JlPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuRG93bk9wZXJhdGlvbixcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVHdvV2F5T3BlcmF0aW9uLFxyXG4gICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICA+KHtcclxuICAgICAgICBuZXh0U3RhdGU6IG5leHRTdGF0ZS5pbWFnZVBpZWNlVmFsdWVzID8/IHt9LFxyXG4gICAgICAgIGRvd25PcGVyYXRpb246IGRvd25PcGVyYXRpb24uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBpbm5lckRpZmY6IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUuZGlmZihwYXJhbXMpLFxyXG4gICAgICAgIGlubmVyUmVzdG9yZTogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5yZXN0b3JlKHBhcmFtcyksXHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmV2U3RhdGU6IFN0YXRlID0ge1xyXG4gICAgICAgIC4uLm5leHRTdGF0ZSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLnByZXZTdGF0ZSxcclxuICAgIH07XHJcbiAgICBjb25zdCB0d29XYXlPcGVyYXRpb246IFR3b1dheU9wZXJhdGlvbiA9IHtcclxuICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLnR3b1dheU9wZXJhdGlvbixcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGRvd25PcGVyYXRpb24ubmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgcHJldlN0YXRlLm5hbWUgPSBkb3duT3BlcmF0aW9uLm5hbWUub2xkVmFsdWU7XHJcbiAgICAgICAgdHdvV2F5T3BlcmF0aW9uLm5hbWUgPSB7XHJcbiAgICAgICAgICAgIC4uLmRvd25PcGVyYXRpb24ubmFtZSxcclxuICAgICAgICAgICAgbmV3VmFsdWU6IG5leHRTdGF0ZS5uYW1lLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoZG93bk9wZXJhdGlvbi5yb2xlICE9IG51bGwpIHtcclxuICAgICAgICBwcmV2U3RhdGUucm9sZSA9IGRvd25PcGVyYXRpb24ucm9sZS5vbGRWYWx1ZSA/PyB1bmRlZmluZWQ7XHJcbiAgICAgICAgdHdvV2F5T3BlcmF0aW9uLnJvbGUgPSB7XHJcbiAgICAgICAgICAgIG9sZFZhbHVlOiBkb3duT3BlcmF0aW9uLnJvbGUub2xkVmFsdWUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBuZXdWYWx1ZTogbmV4dFN0YXRlLnJvbGUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUmVzdWx0Lm9rKHsgcHJldlN0YXRlLCB0d29XYXlPcGVyYXRpb24gfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZGlmZjogRGlmZjxTdGF0ZSwgVHdvV2F5T3BlcmF0aW9uPiA9ICh7IHByZXZTdGF0ZSwgbmV4dFN0YXRlIH0pID0+IHtcclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uZGlmZjxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlR3b1dheU9wZXJhdGlvblxyXG4gICAgPih7XHJcbiAgICAgICAgcHJldlN0YXRlOiBwcmV2U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyA/PyB7fSxcclxuICAgICAgICBuZXh0U3RhdGU6IG5leHRTdGF0ZS5pbWFnZVBpZWNlVmFsdWVzID8/IHt9LFxyXG4gICAgICAgIGlubmVyRGlmZjogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5kaWZmKHBhcmFtcyksXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHJlc3VsdDogVHdvV2F5T3BlcmF0aW9uID0ge1xyXG4gICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKHByZXZTdGF0ZS5uYW1lICE9PSBuZXh0U3RhdGUubmFtZSkge1xyXG4gICAgICAgIHJlc3VsdC5uYW1lID0geyBvbGRWYWx1ZTogcHJldlN0YXRlLm5hbWUsIG5ld1ZhbHVlOiBuZXh0U3RhdGUubmFtZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZTdGF0ZS5yb2xlICE9PSBuZXh0U3RhdGUucm9sZSkge1xyXG4gICAgICAgIHJlc3VsdC5yb2xlID0geyBvbGRWYWx1ZTogcHJldlN0YXRlLnJvbGUsIG5ld1ZhbHVlOiBuZXh0U3RhdGUucm9sZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzSWRSZWNvcmQocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlcnZlclRyYW5zZm9ybSA9XHJcbiAgICAoe1xyXG4gICAgICAgIHJlcXVlc3RlZEJ5LFxyXG4gICAgICAgIHBhcnRpY2lwYW50S2V5LFxyXG4gICAgICAgIGFjdGl2ZUJvYXJkU2Vjb25kS2V5LFxyXG4gICAgfToge1xyXG4gICAgICAgIHJlcXVlc3RlZEJ5OiBSZXF1ZXN0ZWRCeTtcclxuICAgICAgICBwYXJ0aWNpcGFudEtleTogc3RyaW5nO1xyXG4gICAgICAgIGFjdGl2ZUJvYXJkU2Vjb25kS2V5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgfSk6IFNlcnZlclRyYW5zZm9ybTxTdGF0ZSwgVHdvV2F5T3BlcmF0aW9uLCBVcE9wZXJhdGlvbj4gPT5cclxuICAgICh7IHByZXZTdGF0ZSwgY3VycmVudFN0YXRlLCBjbGllbnRPcGVyYXRpb24sIHNlcnZlck9wZXJhdGlvbiB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gUmVxdWVzdGVkQnkuaXNBdXRob3JpemVkKHsgcmVxdWVzdGVkQnksIHVzZXJVaWQ6IHBhcnRpY2lwYW50S2V5IH0pO1xyXG5cclxuICAgICAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLnNlcnZlclRyYW5zZm9ybTxcclxuICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5Ud29XYXlPcGVyYXRpb24sXHJcbiAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5VcE9wZXJhdGlvbixcclxuICAgICAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgICAgICA+KHtcclxuICAgICAgICAgICAgZmlyc3Q6IHNlcnZlck9wZXJhdGlvbj8uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICAgICAgc2Vjb25kOiBjbGllbnRPcGVyYXRpb24uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICAgICAgcHJldlN0YXRlOiBwcmV2U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyA/PyB7fSxcclxuICAgICAgICAgICAgbmV4dFN0YXRlOiBjdXJyZW50U3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyA/PyB7fSxcclxuICAgICAgICAgICAgaW5uZXJUcmFuc2Zvcm06ICh7IGZpcnN0LCBzZWNvbmQsIHByZXZTdGF0ZSwgbmV4dFN0YXRlIH0pID0+XHJcbiAgICAgICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuc2VydmVyVHJhbnNmb3JtKGlzQXV0aG9yaXplZCkoe1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGU6IG5leHRTdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJPcGVyYXRpb246IGZpcnN0LFxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudE9wZXJhdGlvbjogc2Vjb25kLFxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRvU2VydmVyU3RhdGU6IHN0YXRlID0+IHN0YXRlLFxyXG4gICAgICAgICAgICBjYW5jZWxsYXRpb25Qb2xpY3k6IHtcclxuICAgICAgICAgICAgICAgIGNhbmNlbENyZWF0ZTogKCkgPT4gIWlzQXV0aG9yaXplZCxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFVwZGF0ZTogc3RhdGUgPT4gIWlzQXV0aG9yaXplZCAmJiBzdGF0ZS5uZXh0U3RhdGUuaXNQcml2YXRlLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsUmVtb3ZlOiBzdGF0ZSA9PiAhaXNBdXRob3JpemVkICYmIHN0YXRlLm5leHRTdGF0ZS5pc1ByaXZhdGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHR3b1dheU9wZXJhdGlvbjogVHdvV2F5T3BlcmF0aW9uID0ge1xyXG4gICAgICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoaXNBdXRob3JpemVkKSB7XHJcbiAgICAgICAgICAgIHR3b1dheU9wZXJhdGlvbi5uYW1lID0gUmVwbGFjZU9wZXJhdGlvbi5zZXJ2ZXJUcmFuc2Zvcm0oe1xyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IHNlcnZlck9wZXJhdGlvbj8ubmFtZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IGNsaWVudE9wZXJhdGlvbi5uYW1lID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogcHJldlN0YXRlLm5hbWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3RlZEJ5LnR5cGUgPT09IGFkbWluKSB7XHJcbiAgICAgICAgICAgIHR3b1dheU9wZXJhdGlvbi5yb2xlID0gUmVwbGFjZU9wZXJhdGlvbi5zZXJ2ZXJUcmFuc2Zvcm0oe1xyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IHNlcnZlck9wZXJhdGlvbj8ucm9sZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IGNsaWVudE9wZXJhdGlvbi5yb2xlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogcHJldlN0YXRlLnJvbGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlzSWRSZWNvcmQodHdvV2F5T3BlcmF0aW9uKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0Lm9rKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gUmVzdWx0Lm9rKHR3b1dheU9wZXJhdGlvbik7XHJcbiAgICB9O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNsaWVudFRyYW5zZm9ybTogQ2xpZW50VHJhbnNmb3JtPFVwT3BlcmF0aW9uPiA9ICh7IGZpcnN0LCBzZWNvbmQgfSkgPT4ge1xyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5jbGllbnRUcmFuc2Zvcm08XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5VcE9wZXJhdGlvbixcclxuICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgPih7XHJcbiAgICAgICAgZmlyc3Q6IGZpcnN0LmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgc2Vjb25kOiBzZWNvbmQuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBpbm5lclRyYW5zZm9ybTogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5jbGllbnRUcmFuc2Zvcm0ocGFyYW1zKSxcclxuICAgICAgICBpbm5lckRpZmY6IHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBJbWFnZVBpZWNlVmFsdWUuZGlmZihwYXJhbXMpO1xyXG4gICAgICAgICAgICBpZiAoZGlmZiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlmZjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VQaWVjZVZhbHVlLnRvVXBPcGVyYXRpb24oZGlmZik7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5hbWUgPSBSZXBsYWNlT3BlcmF0aW9uLmNsaWVudFRyYW5zZm9ybSh7XHJcbiAgICAgICAgZmlyc3Q6IGZpcnN0Lm5hbWUsXHJcbiAgICAgICAgc2Vjb25kOiBzZWNvbmQubmFtZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJvbGUgPSBSZXBsYWNlT3BlcmF0aW9uLmNsaWVudFRyYW5zZm9ybSh7XHJcbiAgICAgICAgZmlyc3Q6IGZpcnN0LnJvbGUsXHJcbiAgICAgICAgc2Vjb25kOiBzZWNvbmQucm9sZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0UHJpbWU6IFVwT3BlcmF0aW9uID0ge1xyXG4gICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IGltYWdlUGllY2VWYWx1ZXMudmFsdWUuZmlyc3RQcmltZSxcclxuICAgICAgICBuYW1lOiBuYW1lLmZpcnN0UHJpbWUsXHJcbiAgICAgICAgcm9sZTogcm9sZS5maXJzdFByaW1lLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzZWNvbmRQcmltZTogVXBPcGVyYXRpb24gPSB7XHJcbiAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZS5zZWNvbmRQcmltZSxcclxuICAgICAgICBuYW1lOiBuYW1lLnNlY29uZFByaW1lLFxyXG4gICAgICAgIHJvbGU6IHJvbGUuc2Vjb25kUHJpbWUsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBSZXN1bHQub2soe1xyXG4gICAgICAgIGZpcnN0UHJpbWU6IGlzSWRSZWNvcmQoZmlyc3RQcmltZSkgPyB1bmRlZmluZWQgOiBmaXJzdFByaW1lLFxyXG4gICAgICAgIHNlY29uZFByaW1lOiBpc0lkUmVjb3JkKHNlY29uZFByaW1lKSA/IHVuZGVmaW5lZCA6IHNlY29uZFByaW1lLFxyXG4gICAgfSk7XHJcbn07XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvb3Qvcm9vbS9wYXJ0aWNpcGFudC92MS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLEVBS0gsV0FBVyxFQUVYLEtBQUssR0FFUixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEtBQUssZUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsaUNBQWlDLEVBQ2pDLCtCQUErQixHQUNsQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFTLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRS9CLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxN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eEIsQ0FBQztJQUVGLE1BQU0sV0FBVyxHQUFnQjtRQUM3QixRQUFRLEVBQUUsQ0FBQztRQUNYLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXO1FBQ3BELElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztRQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7S0FDekIsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNiLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUMzRCxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVc7S0FDakUsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XHJcbmltcG9ydCB7XHJcbiAgICBBcHBseSxcclxuICAgIENsaWVudFRyYW5zZm9ybSxcclxuICAgIENvbXBvc2UsXHJcbiAgICBEaWZmLFxyXG4gICAgUmVxdWVzdGVkQnksXHJcbiAgICBSZXN0b3JlLFxyXG4gICAgYWRtaW4sXHJcbiAgICBTZXJ2ZXJUcmFuc2Zvcm0sXHJcbn0gZnJvbSAnLi4vLi4vdXRpbC90eXBlJztcclxuaW1wb3J0ICogYXMgUmVwbGFjZU9wZXJhdGlvbiBmcm9tICcuLi8uLi91dGlsL3JlcGxhY2VPcGVyYXRpb24nO1xyXG5pbXBvcnQgeyBjcmVhdGVPcGVyYXRpb24gfSBmcm9tICcuLi8uLi91dGlsL2NyZWF0ZU9wZXJhdGlvbic7XHJcbmltcG9ydCB7IGlzSWRSZWNvcmQsIHJlY29yZCB9IGZyb20gJy4uLy4uL3V0aWwvcmVjb3JkJztcclxuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSAnQGtpemFoYXNpL3Jlc3VsdCc7XHJcbmltcG9ydCB7IGNob29zZVJlY29yZCwgQ29tcG9zaXRlS2V5IH0gZnJvbSAnQGtpemFoYXNpL3V0aWwnO1xyXG5pbXBvcnQgKiBhcyBJbWFnZVBpZWNlVmFsdWUgZnJvbSAnLi9pbWFnZVBpZWNlVmFsdWUvdjEnO1xyXG5pbXBvcnQge1xyXG4gICAgbWFwUmVjb3JkT3BlcmF0aW9uRWxlbWVudCxcclxuICAgIHJlY29yZERvd25PcGVyYXRpb25FbGVtZW50RmFjdG9yeSxcclxuICAgIHJlY29yZFVwT3BlcmF0aW9uRWxlbWVudEZhY3RvcnksXHJcbn0gZnJvbSAnLi4vLi4vdXRpbC9yZWNvcmRPcGVyYXRpb25FbGVtZW50JztcclxuaW1wb3J0ICogYXMgUmVjb3JkT3BlcmF0aW9uIGZyb20gJy4uLy4uL3V0aWwvcmVjb3JkT3BlcmF0aW9uJztcclxuaW1wb3J0IHsgQXBwbHlFcnJvciwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yLCBQb3NpdGl2ZUludCB9IGZyb20gJ0BraXphaGFzaS9vdC1zdHJpbmcnO1xyXG5pbXBvcnQgeyBNYXliZSwgbWF5YmUgfSBmcm9tICcuLi8uLi91dGlsL21heWJlJztcclxuXHJcbmV4cG9ydCBjb25zdCBQbGF5ZXIgPSAnUGxheWVyJztcclxuZXhwb3J0IGNvbnN0IFNwZWN0YXRvciA9ICdTcGVjdGF0b3InO1xyXG5leHBvcnQgY29uc3QgTWFzdGVyID0gJ01hc3Rlcic7XHJcblxyXG5jb25zdCBwYXJ0aWNpcGFudFJvbGUgPSB0LnVuaW9uKFt0LmxpdGVyYWwoUGxheWVyKSwgdC5saXRlcmFsKFNwZWN0YXRvciksIHQubGl0ZXJhbChNYXN0ZXIpXSk7XHJcbmV4cG9ydCB0eXBlIFBhcnRpY2lwYW50Um9sZSA9IHQuVHlwZU9mPHR5cGVvZiBwYXJ0aWNpcGFudFJvbGU+O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0YXRlID0gdC50eXBlKHtcclxuICAgICR2ZXJzaW9uOiB0LmxpdGVyYWwoMSksXHJcblxyXG4gICAgbmFtZTogdC5zdHJpbmcsXHJcbiAgICByb2xlOiBtYXliZShwYXJ0aWNpcGFudFJvbGUpLFxyXG5cclxuICAgIGltYWdlUGllY2VWYWx1ZXM6IHJlY29yZCh0LnN0cmluZywgSW1hZ2VQaWVjZVZhbHVlLnN0YXRlKSxcclxufSk7XHJcblxyXG5leHBvcnQgdHlwZSBTdGF0ZSA9IHQuVHlwZU9mPHR5cGVvZiBzdGF0ZT47XHJcblxyXG5leHBvcnQgY29uc3QgZG93bk9wZXJhdGlvbiA9IGNyZWF0ZU9wZXJhdGlvbigxLCB7XHJcbiAgICBuYW1lOiB0LnR5cGUoeyBvbGRWYWx1ZTogdC5zdHJpbmcgfSksXHJcbiAgICByb2xlOiB0LnR5cGUoeyBvbGRWYWx1ZTogbWF5YmUocGFydGljaXBhbnRSb2xlKSB9KSxcclxuICAgIGltYWdlUGllY2VWYWx1ZXM6IHJlY29yZChcclxuICAgICAgICB0LnN0cmluZyxcclxuICAgICAgICByZWNvcmREb3duT3BlcmF0aW9uRWxlbWVudEZhY3RvcnkoSW1hZ2VQaWVjZVZhbHVlLnN0YXRlLCBJbWFnZVBpZWNlVmFsdWUuZG93bk9wZXJhdGlvbilcclxuICAgICksXHJcbn0pO1xyXG5cclxuZXhwb3J0IHR5cGUgRG93bk9wZXJhdGlvbiA9IHQuVHlwZU9mPHR5cGVvZiBkb3duT3BlcmF0aW9uPjtcclxuXHJcbmV4cG9ydCBjb25zdCB1cE9wZXJhdGlvbiA9IGNyZWF0ZU9wZXJhdGlvbigxLCB7XHJcbiAgICBuYW1lOiB0LnR5cGUoeyBuZXdWYWx1ZTogdC5zdHJpbmcgfSksXHJcbiAgICByb2xlOiB0LnR5cGUoeyBuZXdWYWx1ZTogbWF5YmUocGFydGljaXBhbnRSb2xlKSB9KSxcclxuICAgIGltYWdlUGllY2VWYWx1ZXM6IHJlY29yZChcclxuICAgICAgICB0LnN0cmluZyxcclxuICAgICAgICByZWNvcmRVcE9wZXJhdGlvbkVsZW1lbnRGYWN0b3J5KEltYWdlUGllY2VWYWx1ZS5zdGF0ZSwgSW1hZ2VQaWVjZVZhbHVlLnVwT3BlcmF0aW9uKVxyXG4gICAgKSxcclxufSk7XHJcblxyXG5leHBvcnQgdHlwZSBVcE9wZXJhdGlvbiA9IHQuVHlwZU9mPHR5cGVvZiB1cE9wZXJhdGlvbj47XHJcblxyXG5leHBvcnQgdHlwZSBUd29XYXlPcGVyYXRpb24gPSB7XHJcbiAgICAkdmVyc2lvbjogMTtcclxuXHJcbiAgICBuYW1lPzogUmVwbGFjZU9wZXJhdGlvbi5SZXBsYWNlVmFsdWVUd29XYXlPcGVyYXRpb248c3RyaW5nPjtcclxuICAgIHJvbGU/OiBSZXBsYWNlT3BlcmF0aW9uLlJlcGxhY2VWYWx1ZVR3b1dheU9wZXJhdGlvbjxNYXliZTxQYXJ0aWNpcGFudFJvbGU+PjtcclxuICAgIGltYWdlUGllY2VWYWx1ZXM/OiBSZWNvcmRPcGVyYXRpb24uUmVjb3JkVHdvV2F5T3BlcmF0aW9uPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVHdvV2F5T3BlcmF0aW9uXHJcbiAgICA+O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvQ2xpZW50U3RhdGUgPVxyXG4gICAgKHJlcXVlc3RlZEJ5OiBSZXF1ZXN0ZWRCeSwgcGFydGljaXBhbnRLZXk6IHN0cmluZywgYWN0aXZlQm9hcmRLZXk6IENvbXBvc2l0ZUtleSB8IG51bGwpID0+XHJcbiAgICAoc291cmNlOiBTdGF0ZSk6IFN0YXRlID0+IHtcclxuICAgICAgICBjb25zdCBpc0F1dGhvcml6ZWQgPSBSZXF1ZXN0ZWRCeS5pc0F1dGhvcml6ZWQoeyByZXF1ZXN0ZWRCeSwgdXNlclVpZDogcGFydGljaXBhbnRLZXkgfSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uc291cmNlLFxyXG4gICAgICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBSZWNvcmRPcGVyYXRpb24udG9DbGllbnRTdGF0ZTxcclxuICAgICAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZVxyXG4gICAgICAgICAgICA+KHtcclxuICAgICAgICAgICAgICAgIHNlcnZlclN0YXRlOiBzb3VyY2UuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICAgICAgICAgIGlzUHJpdmF0ZTogc3RhdGUgPT4gc3RhdGUuaXNQcml2YXRlICYmICFpc0F1dGhvcml6ZWQsXHJcbiAgICAgICAgICAgICAgICB0b0NsaWVudFN0YXRlOiAoeyBzdGF0ZSB9KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS50b0NsaWVudFN0YXRlKHJlcXVlc3RlZEJ5LCBhY3RpdmVCb2FyZEtleSkoc3RhdGUpLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbmV4cG9ydCBjb25zdCB0b0Rvd25PcGVyYXRpb24gPSAoc291cmNlOiBUd29XYXlPcGVyYXRpb24pOiBEb3duT3BlcmF0aW9uID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc291cmNlLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6XHJcbiAgICAgICAgICAgIHNvdXJjZS5pbWFnZVBpZWNlVmFsdWVzID09IG51bGxcclxuICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICA6IGNob29zZVJlY29yZChzb3VyY2UuaW1hZ2VQaWVjZVZhbHVlcywgb3BlcmF0aW9uID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXBSZWNvcmRPcGVyYXRpb25FbGVtZW50KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IG9wZXJhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBSZXBsYWNlOiB4ID0+IHgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwT3BlcmF0aW9uOiBJbWFnZVBpZWNlVmFsdWUudG9Eb3duT3BlcmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdG9VcE9wZXJhdGlvbiA9IChzb3VyY2U6IFR3b1dheU9wZXJhdGlvbik6IFVwT3BlcmF0aW9uID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc291cmNlLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6XHJcbiAgICAgICAgICAgIHNvdXJjZS5pbWFnZVBpZWNlVmFsdWVzID09IG51bGxcclxuICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICA6IGNob29zZVJlY29yZChzb3VyY2UuaW1hZ2VQaWVjZVZhbHVlcywgb3BlcmF0aW9uID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXBSZWNvcmRPcGVyYXRpb25FbGVtZW50KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IG9wZXJhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBSZXBsYWNlOiB4ID0+IHgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwT3BlcmF0aW9uOiBJbWFnZVBpZWNlVmFsdWUudG9VcE9wZXJhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFwcGx5OiBBcHBseTxTdGF0ZSwgVXBPcGVyYXRpb24gfCBUd29XYXlPcGVyYXRpb24+ID0gKHsgc3RhdGUsIG9wZXJhdGlvbiB9KSA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFN0YXRlID0geyAuLi5zdGF0ZSB9O1xyXG4gICAgaWYgKG9wZXJhdGlvbi5uYW1lICE9IG51bGwpIHtcclxuICAgICAgICByZXN1bHQubmFtZSA9IG9wZXJhdGlvbi5uYW1lLm5ld1ZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wZXJhdGlvbi5yb2xlICE9IG51bGwpIHtcclxuICAgICAgICByZXN1bHQucm9sZSA9IG9wZXJhdGlvbi5yb2xlLm5ld1ZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uYXBwbHk8XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5VcE9wZXJhdGlvbiB8IEltYWdlUGllY2VWYWx1ZS5Ud29XYXlPcGVyYXRpb24sXHJcbiAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgID4oe1xyXG4gICAgICAgIHByZXZTdGF0ZTogc3RhdGUuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBvcGVyYXRpb246IG9wZXJhdGlvbi5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIGlubmVyQXBwbHk6ICh7IHByZXZTdGF0ZSwgb3BlcmF0aW9uOiB1cE9wZXJhdGlvbiB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBJbWFnZVBpZWNlVmFsdWUuYXBwbHkoe1xyXG4gICAgICAgICAgICAgICAgc3RhdGU6IHByZXZTdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogdXBPcGVyYXRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZVBpZWNlVmFsdWVzLmlzRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VQaWVjZVZhbHVlcztcclxuICAgIH1cclxuICAgIHJlc3VsdC5pbWFnZVBpZWNlVmFsdWVzID0gaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gUmVzdWx0Lm9rKHJlc3VsdCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXBwbHlCYWNrOiBBcHBseTxTdGF0ZSwgRG93bk9wZXJhdGlvbj4gPSAoeyBzdGF0ZSwgb3BlcmF0aW9uIH0pID0+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogU3RhdGUgPSB7IC4uLnN0YXRlIH07XHJcbiAgICBpZiAob3BlcmF0aW9uLm5hbWUgIT0gbnVsbCkge1xyXG4gICAgICAgIHJlc3VsdC5uYW1lID0gb3BlcmF0aW9uLm5hbWUub2xkVmFsdWU7XHJcbiAgICB9XHJcbiAgICBpZiAob3BlcmF0aW9uLnJvbGUgIT0gbnVsbCkge1xyXG4gICAgICAgIHJlc3VsdC5yb2xlID0gb3BlcmF0aW9uLnJvbGUub2xkVmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5hcHBseUJhY2s8XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5Eb3duT3BlcmF0aW9uLFxyXG4gICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICA+KHtcclxuICAgICAgICBuZXh0U3RhdGU6IHN0YXRlLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24uaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBpbm5lckFwcGx5QmFjazogKHsgc3RhdGUsIG9wZXJhdGlvbiB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBJbWFnZVBpZWNlVmFsdWUuYXBwbHlCYWNrKHtcclxuICAgICAgICAgICAgICAgIHN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBpZiAoaW1hZ2VQaWVjZVZhbHVlcy5pc0Vycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlUGllY2VWYWx1ZXM7XHJcbiAgICB9XHJcbiAgICByZXN1bHQuaW1hZ2VQaWVjZVZhbHVlcyA9IGltYWdlUGllY2VWYWx1ZXMudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIFJlc3VsdC5vayhyZXN1bHQpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNvbXBvc2VEb3duT3BlcmF0aW9uOiBDb21wb3NlPERvd25PcGVyYXRpb24+ID0gKHsgZmlyc3QsIHNlY29uZCB9KSA9PiB7XHJcbiAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLmNvbXBvc2VEb3duT3BlcmF0aW9uPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuRG93bk9wZXJhdGlvbixcclxuICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgPih7XHJcbiAgICAgICAgZmlyc3Q6IGZpcnN0LmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgc2Vjb25kOiBzZWNvbmQuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBpbm5lckFwcGx5QmFjazogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5hcHBseUJhY2socGFyYW1zKSxcclxuICAgICAgICBpbm5lckNvbXBvc2U6IHBhcmFtcyA9PiBJbWFnZVBpZWNlVmFsdWUuY29tcG9zZURvd25PcGVyYXRpb24ocGFyYW1zKSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVQcm9wczogRG93bk9wZXJhdGlvbiA9IHtcclxuICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICBuYW1lOiBSZXBsYWNlT3BlcmF0aW9uLmNvbXBvc2VEb3duT3BlcmF0aW9uKFxyXG4gICAgICAgICAgICBmaXJzdC5uYW1lID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgc2Vjb25kLm5hbWUgPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgKSxcclxuICAgICAgICByb2xlOiBSZXBsYWNlT3BlcmF0aW9uLmNvbXBvc2VEb3duT3BlcmF0aW9uKFxyXG4gICAgICAgICAgICBmaXJzdC5yb2xlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgc2Vjb25kLnJvbGUgPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgKSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBSZXN1bHQub2sodmFsdWVQcm9wcyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcmVzdG9yZTogUmVzdG9yZTxTdGF0ZSwgRG93bk9wZXJhdGlvbiwgVHdvV2F5T3BlcmF0aW9uPiA9ICh7XHJcbiAgICBuZXh0U3RhdGUsXHJcbiAgICBkb3duT3BlcmF0aW9uLFxyXG59KSA9PiB7XHJcbiAgICBpZiAoZG93bk9wZXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIFJlc3VsdC5vayh7IHByZXZTdGF0ZTogbmV4dFN0YXRlLCB0d29XYXlPcGVyYXRpb246IHVuZGVmaW5lZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLnJlc3RvcmU8XHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlN0YXRlLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5Eb3duT3BlcmF0aW9uLFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5Ud29XYXlPcGVyYXRpb24sXHJcbiAgICAgICAgc3RyaW5nIHwgQXBwbHlFcnJvcjxQb3NpdGl2ZUludD4gfCBDb21wb3NlQW5kVHJhbnNmb3JtRXJyb3JcclxuICAgID4oe1xyXG4gICAgICAgIG5leHRTdGF0ZTogbmV4dFN0YXRlLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgZG93bk9wZXJhdGlvbjogZG93bk9wZXJhdGlvbi5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIGlubmVyRGlmZjogcGFyYW1zID0+IEltYWdlUGllY2VWYWx1ZS5kaWZmKHBhcmFtcyksXHJcbiAgICAgICAgaW5uZXJSZXN0b3JlOiBwYXJhbXMgPT4gSW1hZ2VQaWVjZVZhbHVlLnJlc3RvcmUocGFyYW1zKSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlUGllY2VWYWx1ZXMuaXNFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByZXZTdGF0ZTogU3RhdGUgPSB7XHJcbiAgICAgICAgLi4ubmV4dFN0YXRlLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IGltYWdlUGllY2VWYWx1ZXMudmFsdWUucHJldlN0YXRlLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHR3b1dheU9wZXJhdGlvbjogVHdvV2F5T3BlcmF0aW9uID0ge1xyXG4gICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgIGltYWdlUGllY2VWYWx1ZXM6IGltYWdlUGllY2VWYWx1ZXMudmFsdWUudHdvV2F5T3BlcmF0aW9uLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZG93bk9wZXJhdGlvbi5uYW1lICE9IG51bGwpIHtcclxuICAgICAgICBwcmV2U3RhdGUubmFtZSA9IGRvd25PcGVyYXRpb24ubmFtZS5vbGRWYWx1ZTtcclxuICAgICAgICB0d29XYXlPcGVyYXRpb24ubmFtZSA9IHtcclxuICAgICAgICAgICAgLi4uZG93bk9wZXJhdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICBuZXdWYWx1ZTogbmV4dFN0YXRlLm5hbWUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChkb3duT3BlcmF0aW9uLnJvbGUgIT0gbnVsbCkge1xyXG4gICAgICAgIHByZXZTdGF0ZS5yb2xlID0gZG93bk9wZXJhdGlvbi5yb2xlLm9sZFZhbHVlID8/IHVuZGVmaW5lZDtcclxuICAgICAgICB0d29XYXlPcGVyYXRpb24ucm9sZSA9IHtcclxuICAgICAgICAgICAgb2xkVmFsdWU6IGRvd25PcGVyYXRpb24ucm9sZS5vbGRWYWx1ZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXh0U3RhdGUucm9sZSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBSZXN1bHQub2soeyBwcmV2U3RhdGUsIHR3b1dheU9wZXJhdGlvbiB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkaWZmOiBEaWZmPFN0YXRlLCBUd29XYXlPcGVyYXRpb24+ID0gKHsgcHJldlN0YXRlLCBuZXh0U3RhdGUgfSkgPT4ge1xyXG4gICAgY29uc3QgaW1hZ2VQaWVjZVZhbHVlcyA9IFJlY29yZE9wZXJhdGlvbi5kaWZmPFxyXG4gICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuVHdvV2F5T3BlcmF0aW9uXHJcbiAgICA+KHtcclxuICAgICAgICBwcmV2U3RhdGU6IHByZXZTdGF0ZS5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIG5leHRTdGF0ZTogbmV4dFN0YXRlLmltYWdlUGllY2VWYWx1ZXMsXHJcbiAgICAgICAgaW5uZXJEaWZmOiBwYXJhbXMgPT4gSW1hZ2VQaWVjZVZhbHVlLmRpZmYocGFyYW1zKSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgcmVzdWx0OiBUd29XYXlPcGVyYXRpb24gPSB7XHJcbiAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgIH07XHJcbiAgICBpZiAocHJldlN0YXRlLm5hbWUgIT09IG5leHRTdGF0ZS5uYW1lKSB7XHJcbiAgICAgICAgcmVzdWx0Lm5hbWUgPSB7IG9sZFZhbHVlOiBwcmV2U3RhdGUubmFtZSwgbmV3VmFsdWU6IG5leHRTdGF0ZS5uYW1lIH07XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlN0YXRlLnJvbGUgIT09IG5leHRTdGF0ZS5yb2xlKSB7XHJcbiAgICAgICAgcmVzdWx0LnJvbGUgPSB7IG9sZFZhbHVlOiBwcmV2U3RhdGUucm9sZSwgbmV3VmFsdWU6IG5leHRTdGF0ZS5yb2xlIH07XHJcbiAgICB9XHJcbiAgICBpZiAoaXNJZFJlY29yZChyZXN1bHQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc2VydmVyVHJhbnNmb3JtID1cclxuICAgICh7XHJcbiAgICAgICAgcmVxdWVzdGVkQnksXHJcbiAgICAgICAgcGFydGljaXBhbnRLZXksXHJcbiAgICAgICAgYWN0aXZlQm9hcmRTZWNvbmRLZXksXHJcbiAgICB9OiB7XHJcbiAgICAgICAgcmVxdWVzdGVkQnk6IFJlcXVlc3RlZEJ5O1xyXG4gICAgICAgIHBhcnRpY2lwYW50S2V5OiBzdHJpbmc7XHJcbiAgICAgICAgYWN0aXZlQm9hcmRTZWNvbmRLZXk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgICB9KTogU2VydmVyVHJhbnNmb3JtPFN0YXRlLCBUd29XYXlPcGVyYXRpb24sIFVwT3BlcmF0aW9uPiA9PlxyXG4gICAgKHsgcHJldlN0YXRlLCBjdXJyZW50U3RhdGUsIGNsaWVudE9wZXJhdGlvbiwgc2VydmVyT3BlcmF0aW9uIH0pID0+IHtcclxuICAgICAgICBjb25zdCBpc0F1dGhvcml6ZWQgPSBSZXF1ZXN0ZWRCeS5pc0F1dGhvcml6ZWQoeyByZXF1ZXN0ZWRCeSwgdXNlclVpZDogcGFydGljaXBhbnRLZXkgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGltYWdlUGllY2VWYWx1ZXMgPSBSZWNvcmRPcGVyYXRpb24uc2VydmVyVHJhbnNmb3JtPFxyXG4gICAgICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5TdGF0ZSxcclxuICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlR3b1dheU9wZXJhdGlvbixcclxuICAgICAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlVwT3BlcmF0aW9uLFxyXG4gICAgICAgICAgICBzdHJpbmcgfCBBcHBseUVycm9yPFBvc2l0aXZlSW50PiB8IENvbXBvc2VBbmRUcmFuc2Zvcm1FcnJvclxyXG4gICAgICAgID4oe1xyXG4gICAgICAgICAgICBmaXJzdDogc2VydmVyT3BlcmF0aW9uPy5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgICAgICBzZWNvbmQ6IGNsaWVudE9wZXJhdGlvbi5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgICAgICBwcmV2U3RhdGU6IHByZXZTdGF0ZS5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgICAgICBuZXh0U3RhdGU6IGN1cnJlbnRTdGF0ZS5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgICAgICBpbm5lclRyYW5zZm9ybTogKHsgZmlyc3QsIHNlY29uZCwgcHJldlN0YXRlLCBuZXh0U3RhdGUgfSkgPT5cclxuICAgICAgICAgICAgICAgIEltYWdlUGllY2VWYWx1ZS5zZXJ2ZXJUcmFuc2Zvcm0oaXNBdXRob3JpemVkKSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldlN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZTogbmV4dFN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlck9wZXJhdGlvbjogZmlyc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50T3BlcmF0aW9uOiBzZWNvbmQsXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdG9TZXJ2ZXJTdGF0ZTogc3RhdGUgPT4gc3RhdGUsXHJcbiAgICAgICAgICAgIGNhbmNlbGxhdGlvblBvbGljeToge1xyXG4gICAgICAgICAgICAgICAgY2FuY2VsQ3JlYXRlOiAoKSA9PiAhaXNBdXRob3JpemVkLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsVXBkYXRlOiBzdGF0ZSA9PiAhaXNBdXRob3JpemVkICYmIHN0YXRlLm5leHRTdGF0ZS5pc1ByaXZhdGUsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxSZW1vdmU6IHN0YXRlID0+ICFpc0F1dGhvcml6ZWQgJiYgc3RhdGUubmV4dFN0YXRlLmlzUHJpdmF0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaW1hZ2VQaWVjZVZhbHVlcy5pc0Vycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpbWFnZVBpZWNlVmFsdWVzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdHdvV2F5T3BlcmF0aW9uOiBUd29XYXlPcGVyYXRpb24gPSB7XHJcbiAgICAgICAgICAgICR2ZXJzaW9uOiAxLFxyXG4gICAgICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChpc0F1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgdHdvV2F5T3BlcmF0aW9uLm5hbWUgPSBSZXBsYWNlT3BlcmF0aW9uLnNlcnZlclRyYW5zZm9ybSh7XHJcbiAgICAgICAgICAgICAgICBmaXJzdDogc2VydmVyT3BlcmF0aW9uPy5uYW1lID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHNlY29uZDogY2xpZW50T3BlcmF0aW9uLm5hbWUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgcHJldlN0YXRlOiBwcmV2U3RhdGUubmFtZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVxdWVzdGVkQnkudHlwZSA9PT0gYWRtaW4pIHtcclxuICAgICAgICAgICAgdHdvV2F5T3BlcmF0aW9uLnJvbGUgPSBSZXBsYWNlT3BlcmF0aW9uLnNlcnZlclRyYW5zZm9ybSh7XHJcbiAgICAgICAgICAgICAgICBmaXJzdDogc2VydmVyT3BlcmF0aW9uPy5yb2xlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHNlY29uZDogY2xpZW50T3BlcmF0aW9uLnJvbGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgcHJldlN0YXRlOiBwcmV2U3RhdGUucm9sZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNJZFJlY29yZCh0d29XYXlPcGVyYXRpb24pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQub2sodW5kZWZpbmVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBSZXN1bHQub2sodHdvV2F5T3BlcmF0aW9uKTtcclxuICAgIH07XHJcblxyXG5leHBvcnQgY29uc3QgY2xpZW50VHJhbnNmb3JtOiBDbGllbnRUcmFuc2Zvcm08VXBPcGVyYXRpb24+ID0gKHsgZmlyc3QsIHNlY29uZCB9KSA9PiB7XHJcbiAgICBjb25zdCBpbWFnZVBpZWNlVmFsdWVzID0gUmVjb3JkT3BlcmF0aW9uLmNsaWVudFRyYW5zZm9ybTxcclxuICAgICAgICBJbWFnZVBpZWNlVmFsdWUuU3RhdGUsXHJcbiAgICAgICAgSW1hZ2VQaWVjZVZhbHVlLlVwT3BlcmF0aW9uLFxyXG4gICAgICAgIHN0cmluZyB8IEFwcGx5RXJyb3I8UG9zaXRpdmVJbnQ+IHwgQ29tcG9zZUFuZFRyYW5zZm9ybUVycm9yXHJcbiAgICA+KHtcclxuICAgICAgICBmaXJzdDogZmlyc3QuaW1hZ2VQaWVjZVZhbHVlcyxcclxuICAgICAgICBzZWNvbmQ6IHNlY29uZC5pbWFnZVBpZWNlVmFsdWVzLFxyXG4gICAgICAgIGlubmVyVHJhbnNmb3JtOiBwYXJhbXMgPT4gSW1hZ2VQaWVjZVZhbHVlLmNsaWVudFRyYW5zZm9ybShwYXJhbXMpLFxyXG4gICAgICAgIGlubmVyRGlmZjogcGFyYW1zID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZiA9IEltYWdlUGllY2VWYWx1ZS5kaWZmKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIGlmIChkaWZmID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkaWZmO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBJbWFnZVBpZWNlVmFsdWUudG9VcE9wZXJhdGlvbihkaWZmKTtcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBpZiAoaW1hZ2VQaWVjZVZhbHVlcy5pc0Vycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlUGllY2VWYWx1ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmFtZSA9IFJlcGxhY2VPcGVyYXRpb24uY2xpZW50VHJhbnNmb3JtKHtcclxuICAgICAgICBmaXJzdDogZmlyc3QubmFtZSxcclxuICAgICAgICBzZWNvbmQ6IHNlY29uZC5uYW1lLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgcm9sZSA9IFJlcGxhY2VPcGVyYXRpb24uY2xpZW50VHJhbnNmb3JtKHtcclxuICAgICAgICBmaXJzdDogZmlyc3Qucm9sZSxcclxuICAgICAgICBzZWNvbmQ6IHNlY29uZC5yb2xlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZmlyc3RQcmltZTogVXBPcGVyYXRpb24gPSB7XHJcbiAgICAgICAgJHZlcnNpb246IDEsXHJcbiAgICAgICAgaW1hZ2VQaWVjZVZhbHVlczogaW1hZ2VQaWVjZVZhbHVlcy52YWx1ZS5maXJzdFByaW1lLFxyXG4gICAgICAgIG5hbWU6IG5hbWUuZmlyc3RQcmltZSxcclxuICAgICAgICByb2xlOiByb2xlLmZpcnN0UHJpbWUsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNlY29uZFByaW1lOiBVcE9wZXJhdGlvbiA9IHtcclxuICAgICAgICAkdmVyc2lvbjogMSxcclxuICAgICAgICBpbWFnZVBpZWNlVmFsdWVzOiBpbWFnZVBpZWNlVmFsdWVzLnZhbHVlLnNlY29uZFByaW1lLFxyXG4gICAgICAgIG5hbWU6IG5hbWUuc2Vjb25kUHJpbWUsXHJcbiAgICAgICAgcm9sZTogcm9sZS5zZWNvbmRQcmltZSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIFJlc3VsdC5vayh7XHJcbiAgICAgICAgZmlyc3RQcmltZTogaXNJZFJlY29yZChmaXJzdFByaW1lKSA/IHVuZGVmaW5lZCA6IGZpcnN0UHJpbWUsXHJcbiAgICAgICAgc2Vjb25kUHJpbWU6IGlzSWRSZWNvcmQoc2Vjb25kUHJpbWUpID8gdW5kZWZpbmVkIDogc2Vjb25kUHJpbWUsXHJcbiAgICB9KTtcclxufTtcclxuIl19

@@ -30,3 +30,3 @@ import * as t from 'io-ts';

name: t.StringC;
chatPalette: t.UnionC<[t.StringC, t.NullC, t.UndefinedC]>;
chatPalette: t.StringC;
privateCommand: t.StringC;

@@ -33,0 +33,0 @@ privateVarToml: t.StringC;

@@ -17,3 +17,3 @@ import * as t from 'io-ts';

role: t.UnionC<[t.UnionC<[t.LiteralC<"Player">, t.LiteralC<"Spectator">, t.LiteralC<"Master">]>, t.NullC, t.UndefinedC]>;
imagePieceValues: t.UnionC<[t.RecordC<t.StringC, t.UnionC<[t.TypeC<{
imagePieceValues: t.RecordC<t.StringC, t.UnionC<[t.TypeC<{
$version: t.LiteralC<1>;

@@ -41,3 +41,3 @@ image: t.UnionC<[t.TypeC<{

}>, t.UndefinedC]>>, t.UndefinedC]>>;
}>, t.UndefinedC]>>, t.NullC, t.UndefinedC]>;
}>, t.UndefinedC]>>;
}>;

@@ -44,0 +44,0 @@ export declare type State = t.TypeOf<typeof state>;

{
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",

@@ -4,0 +4,0 @@ "main": "dist/cjs/index.js",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc